tripal_ds.ds.inc 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. <?php
  2. /**
  3. * Implements hook_ds_layout_settings_info().
  4. */
  5. function _ds_layout_settings_info($bundle_name, $instances) {
  6. $region_right = array();
  7. $region_left = array();
  8. $region_top = array();
  9. $region_bottom = array();
  10. $prop_fields = array();
  11. $data_sequence_fields = array();
  12. $all_other_fields = array();
  13. $fields_with_regions = array();
  14. $i = 0;
  15. foreach ($instances as $key => $instance){
  16. $instance_name = $instance['field_name'];
  17. if($instance_name=="rdfs__type"){
  18. array_push($region_top, $instance_name);
  19. $fields_with_regions[$instance_name]= 'top';
  20. } else {
  21. $instance_base_table = $instance['settings']['base_table'];
  22. $instance_base_chado = $instance['settings']['chado_table'];
  23. $prop_table = strpos($instance_base_chado, 'prop');
  24. $data_sequence = strpos($instance_name, 'data__sequence');
  25. if ($instance_base_chado && $instance_base_table){
  26. if ($instance_base_chado == $instance_base_table){
  27. if ($prop_table !== FALSE){
  28. //Properties section instances
  29. array_push($prop_fields, $instance_name);
  30. $fields_with_regions[$instance_name]= 'right';
  31. } elseif ($data_sequence !== FALSE) {
  32. //data sequence section instances
  33. array_push($data_sequence_fields, $instance_name);
  34. $fields_with_regions[$instance_name] = 'right';
  35. }else {
  36. //overview section instances
  37. array_push($region_top, $instance_name);
  38. $fields_with_regions[$instance_name] = 'top';
  39. }
  40. } elseif ($instance_base_chado != $instance_base_table){
  41. if ($prop_table !== FALSE){
  42. //Properties section instances
  43. array_push($prop_fields, $instance_name);
  44. $fields_with_regions[$instance_name]= 'right';
  45. } elseif ($data_sequence !== FALSE){
  46. //data sequence section instances
  47. array_push($data_sequence_fields, $instance_name);
  48. $fields_with_regions[$instance_name]= 'right';
  49. } else {
  50. //Linker section instances
  51. array_push($region_right, $instance_name);
  52. $fields_with_regions[$instance_name]= 'right';
  53. }
  54. }
  55. }
  56. }
  57. $i++;
  58. }
  59. //add the field sets to the region arrays
  60. if(!empty($region_top)){
  61. tripal_ds_overview_field_group_info($bundle_name, $region_top);
  62. array_unshift($region_top, 'group_overview', 'group_overview_table');
  63. $fields_with_regions['group_overview']= 'top';
  64. $fields_with_regions['group_overview_table']= 'top';
  65. }
  66. if (!empty($prop_fields)){
  67. tripal_ds_prop_field_group_info($bundle_name, $prop_fields);
  68. array_unshift($prop_fields, 'group_prop', 'group_prop_table');
  69. $region_right = array_merge($prop_fields, $region_right);
  70. $fields_with_regions['group_prop']= 'right';
  71. $fields_with_regions['group_prop_table']= 'right';
  72. }
  73. if (!empty($data_sequence_fields)){
  74. tripal_ds_data_sequence_field_group_info($bundle_name, $data_sequence_fields);
  75. array_unshift($data_sequence_fields, 'group_sequence', 'group_sequence_table');
  76. $region_right = array_merge($data_sequence_fields, $region_right);
  77. $fields_with_regions['group_sequence']= 'right';
  78. $fields_with_regions['group_sequence_table']= 'right';
  79. }
  80. //build the ds layout
  81. $record = new stdClass;
  82. $record->id ='TripalEntity|' . $bundle_name . '|default';
  83. $record->entity_type = 'TripalEntity';
  84. $record->bundle = $bundle_name;
  85. $record->view_mode = 'default';
  86. $record->layout = 'tripal_ds_feature';
  87. $settings = array(
  88. 'regions' => array(
  89. 'top' =>
  90. $region_top,
  91. 'left' =>
  92. $region_left,
  93. 'right' =>
  94. $region_right,
  95. 'bottom' =>
  96. $region_bottom,
  97. ),
  98. 'fields' =>
  99. $fields_with_regions,
  100. 'classes' => array(),
  101. 'wrappers' => array(
  102. 'top' => 'div',
  103. 'left' => 'div',
  104. 'right' => 'div',
  105. 'bottom' => 'div',
  106. ),
  107. 'layout_wrapper' => 'div',
  108. 'layout_attributes' => '',
  109. 'layout_attributes_merge' => 1,
  110. 'layout_link_attribute' => '',
  111. 'layout_link_custom' => '',
  112. 'layout_disable_css' => 0,
  113. );
  114. $record->settings = $settings;
  115. watchdog('debug', '<pre>_ds_layout_settings_info $record: '. print_r($record, TRUE) .'</pre>');
  116. drupal_write_record('ds_layout_settings', $record);
  117. }
  118. /*
  119. function tripal_ds_content_type_fields($bundle_name){
  120. dpm(debug_backtrace());
  121. $base_fields = array();
  122. $all_fields = array();
  123. $custom_fields = array();
  124. $fields = db_select('field_config_instance', 'i')
  125. ->fields('i', array('field_name'))
  126. ->condition('bundle', $bundle_name)
  127. ->execute()
  128. ->fetchAll();
  129. //break apart each field to grab the base table identifiers
  130. foreach ($fields as $fields => $field) {
  131. $field_parts = explode('__', $field->field_name, 2);
  132. if(count($field_parts) > 1) {
  133. $base_field = $field_parts[0];
  134. $nonbase_field = $field_parts[1];
  135. } else {
  136. $base_field = $field_parts[0];
  137. }
  138. array_push($base_fields, $base_field);
  139. array_push($all_fields, $field->field_name);
  140. }
  141. //create the left base table fields based on the previous foreach loop
  142. if ($base_fields) {
  143. $base_fields = array_unique($base_fields);
  144. foreach($base_fields as $base_fields => $basefield){
  145. $custom_field = tripal_ds_ds_custom_fields_info($basefield);
  146. array_push($custom_fields, $custom_field);
  147. }
  148. }
  149. $all_fields = array(
  150. array($base_fields),
  151. array($all_fields),
  152. array($custom_fields),
  153. );
  154. return $all_fields;
  155. }
  156. */
  157. /*
  158. * Implements hook_ds_custom_fields_info().
  159. function tripal_ds_ds_custom_fields_info($field) {
  160. $export = array();
  161. $ds_field = new stdClass;
  162. $ds_field->api_version = 1;
  163. $ds_field->field = $field;
  164. $ds_field->label = $field;
  165. $ds_field->field_type = 6;
  166. $ds_field->entities = array(
  167. 'TripalEntity' => 'TripalEntity',
  168. );
  169. $ds_field->ui_limit = '';
  170. $ds_field->properties = array(
  171. 'block' => 'node|recent',
  172. 'block_render' => '2',
  173. );
  174. $export[$field] = $ds_field;
  175. return $export;
  176. }
  177. */