Stephen Ficklin 10 жил өмнө
parent
commit
3b984737d8

+ 12 - 0
tripal_analysis/tripal_analysis.module

@@ -81,6 +81,18 @@ function tripal_analysis_menu() {
     'weight' => 2
   );
 
+  $items['admin/tripal/chado/tripal_analysis/toc'] = array(
+    'title' => ' TOC',
+    'description' => 'Manage the table of contents for analysis nodes.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('tripal_core_content_type_toc_form', 'chado_analysis'),
+    'access arguments' => array('administer tripal analysis'),
+    'type' => MENU_LOCAL_TASK,
+    'file' =>  'includes/tripal_core.toc.inc',
+    'file path' => drupal_get_path('module', 'tripal_core'),
+    'weight' => 3
+  );
+  
   return $items;
 }
 

+ 7 - 6
tripal_contact/tripal_contact.module

@@ -89,16 +89,17 @@ function tripal_contact_menu() {
     'weight' => 0
   );
 
-  $items['admin/tripal/chado/tripal_contact/sync'] = array(
-    'title' => ' Sync',
-    'description' => 'Create pages on this site for libraries stored in Chado',
+  $items['admin/tripal/chado/tripal_contact/toc'] = array(
+    'title' => ' TOC',
+    'description' => 'Manage the table of contents for contact nodes.',
     'page callback' => 'drupal_get_form',
-    'page arguments' => array('chado_node_sync_form', 'tripal_contact', 'chado_contact'),
+    'page arguments' => array('tripal_core_content_type_toc_form', 'chado_contact'),
     'access arguments' => array('administer tripal contact'),
     'type' => MENU_LOCAL_TASK,
-    'weight' => 2
+    'file' =>  'includes/tripal_core.toc.inc',
+    'file path' => drupal_get_path('module', 'tripal_core'),
+    'weight' => 3
   );
-
   return $items;
 }
 

+ 6 - 2
tripal_core/api/tripal_core.chado_nodes.api.inc

@@ -149,8 +149,12 @@ function chado_node_get_base_table($content_type, $module = FALSE) {
 
   function modulename_menu() {
 
-    $module_name = 'tripal_example';        // the machine name of your module
-    $linking_table = 'chado_example';       // the base specified in hook_node_info
+    //  the machine name of your module
+    $module_name = 'tripal_example';
+
+    // the base specified in hook_node_info
+    $linking_table = 'chado_example';
+
     // This menu item will be a tab on the admin/tripal/chado/tripal_example page
     // that is not selected by default
     $items['admin/tripal/chado/tripal_example/sync'] = array(

+ 55 - 36
tripal_core/includes/tripal_core.toc.inc

@@ -5,6 +5,10 @@
  */
 function tripal_core_node_toc_form($form, &$form_state, $node) {
   
+  // Get info about this content type
+  $all_types = node_type_get_types();
+  $type_info = $all_types[$node->type];
+  
   $form["#tree"] = TRUE;
   
   $form["instructions"] = array(
@@ -13,15 +17,21 @@ function tripal_core_node_toc_form($form, &$form_state, $node) {
     '#collapsible' => TRUE,
     '#title' => 'Instructions',
   );
+  $admin_link = l(
+    $type_info->name . " TOC administrative page", 
+    "admin/tripal/chado/" . $type_info->module . "/toc",
+    array('attributes' => array('target' => '_blank'))
+  );
   $form["instructions"]["main"] = array(
-    '#markup' => '<p>' . t('Below is a list of the titles of
+    '#markup' => '<p>' . t("Below is a list of the titles of
       content panes that can appear on this page.  These titles appear in the 
       the following order in the Table of Contents (TOC). You may rename 
       the titles or drag and drop them to change the order.  <b>Any changes will
       only apply to this page</b>. If you would like to make changes apply to multiple
-      pages of the same tpye, please visit the TOC administrative page.') . '</p>' .
+      pages of the same tpye, please visit the $admin_link. ") . '</p>' .
       '<p>' . t('The list below shows all possible content panes that can appear.
-      However, those without content are hidden and do not appear in the TOC.' . '</p>'),
+      However, those without content are automatically hidden and do not 
+      appear in the TOC.' . '</p>'),
   );
   
   $form['node'] = array(
@@ -282,11 +292,19 @@ function tripal_core_node_view_build_toc(&$build) {
         continue;
       }
 
+
       // For backwards compatibility we will handle the content type fields
       // named 'field_resource_blocks', 'field_resource_titles', and 'field_resource_links'
       // these fields can be added on the Drupal content types page and were
-      // specifically recoginzed by Tripal v1.1.
-      if ($mode != "manage_type" and $key == "field_resource_links") {
+      // specifically recoginzed by Tripal v1.1.  If the mode type is "manage_type"
+      // then remove these content panes because they are node specific.
+      if ($mode == "manage_type" and (
+          $key == "field_resource_links" or
+          $key == "field_resource_titles" or
+          $key == "field_resource_blocks")) {
+        unset($build[$key]);
+      }
+      if ($key == "field_resource_links") {
         // links should just appear on the sidebar as is and not open up a panel
         foreach (element_children($build[$key]) as $index) {
           $element = $build[$key][$index];
@@ -305,12 +323,12 @@ function tripal_core_node_view_build_toc(&$build) {
         }
         continue;
       }
-      if ($mode != "manage_type" and $key == "field_resource_titles") {
+      if ($key == "field_resource_titles") {
         // ignore these, we will use them in the field_resource_blocks if
         // statement below
         continue;
       }
-      if ($mode != "manage_type" and $key == "field_resource_blocks") {
+      if ($key == "field_resource_blocks") {
         foreach (element_children($build[$key]) as $index) {
           // get the details and the title
           $weight = 0;
@@ -571,42 +589,19 @@ function tripal_core_content_type_toc_form($form, &$form_state, $content_type) {
   
   $form["#tree"] = TRUE;
 
-  $form["instructions"] = array(
-    '#type' => 'fieldset',
-    '#collapsed' => TRUE,
-    '#collapsible' => TRUE,
-    '#title' => 'Instructions',
-  );
-  $form["instructions"]["main"] = array(
-    '#markup' => '</p>' . t('Below is a list of the titles of
-      content panes that can appear on all %type_name pages.  These titles will appear in the
-      the following order in the Table of Contents (TOC) on the page. You may rename
-      the titles or drag and drop them to change the order.  <b>Any changes will
-      only apply to this page</b>. Content that appears only on a single page
-      cannot be ordered here, but must be ordered using the TOC tab on the page
-      itself.  If a page has customized TOC settings then those settings will take
-      precedent over these.', array('%type_name' => $type_info['name'])) . '</p>' . 
-      '<p>' . t('The list below shows all possible content 
-      panes that can appear. However, those without content are hidden and do not 
-      appear in the TOC.' . '</p>'),
-  );
-
-  $form['content_type'] = array(
-    '#type' => 'value',
-    '#value' => $content_type,
-  );
-
-  // Get a node of this type just so we can get all the possible content for it
+  // Get a single node of this type so we can get all the possible content for it
   $sql = "SELECT nid FROM {node} WHERE type = :type LIMIT 1 OFFSET 0";
   $nid = db_query($sql, array(':type' => $content_type))->fetchField();
   if (!$nid) {
     $form["not_available"] = array(
       '#markup' => t('Please sync at least one %type_name record. A node 
-          must exist for customizations to the Table of Contents (TOC) can 
-          be performed.', array('%type_name' => $type_info['name'])),
+          must exist before customizations to the Table of Contents (TOC) can 
+          be performed.', array('%type_name' => $type_info->name)),
     );
-    return $from;
+    return $form;
   } 
+  
+  // Load the node
   $node = node_load($nid);
 
   // Get the content array for this node, then pass it through the
@@ -620,6 +615,30 @@ function tripal_core_content_type_toc_form($form, &$form_state, $content_type) {
   $build = $node->content;
   $build["#node"] = $node;
   tripal_core_node_view_alter($build);
+  
+  $form["instructions"] = array(
+    '#type' => 'fieldset',
+    '#collapsed' => TRUE,
+    '#collapsible' => TRUE,
+    '#title' => 'Instructions',
+  );
+  $form["instructions"]["main"] = array(
+    '#markup' => '</p>' . t('Below is a list of the titles of
+      content panes that can appear on all %type_name pages.  You may rename
+      the titles or drag and drop them to change the order.  Content that appears
+      only on a single page can not be ordered here, but must be ordered using
+      the TOC tab on the page itself.  If a page has customized TOC settings
+      then those settings will take precedent over these.',
+        array('%type_name' => $type_info->name)) . '</p>' .
+    '<p>' . t('The list below shows all possible content
+      panes that can appear. However, those without content are automatically
+      hidden and do not appear in the TOC.' . '</p>'),
+  );
+  
+  $form['content_type'] = array(
+    '#type' => 'value',
+    '#value' => $content_type,
+  );
 
   // Iterate through the built items and add form elemetns for each one.
   foreach(element_children($build) as $key) {

+ 20 - 0
tripal_example/tripal_example.module

@@ -145,6 +145,26 @@ function tripal_example_menu() {
     'weight' => 2
   );
   
+  // EXPLANATION: If your module defines a new node type that uses the default
+  // table of contents (left-side bar of content panes on a page). Then a 
+  // 'TOC' link will automatically appear on the node page to allow for 
+  // customization of the TOC.  However those customizations are only node
+  // specific.  To provide a tab in the module's administrative pages add the
+  // following menu item. This menu will provide a form similar to the one
+  // found on the node that allows the user to set global TOC settings for the
+  // content type.
+  $items['admin/tripal/chado/tripal_example/toc'] = array(
+    'title' => ' TOC',
+    'description' => 'Manage the table of contents for example nodes.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('tripal_core_content_type_toc_form', 'chado_example'),
+    'access arguments' => array('administer tripal example'),
+    'type' => MENU_LOCAL_TASK,
+    'file' =>  'includes/tripal_core.toc.inc',
+    'file path' => drupal_get_path('module', 'tripal_core'),
+    'weight' => 3
+  );
+  
   return $items;
 }
 

+ 11 - 0
tripal_feature/tripal_feature.module

@@ -162,6 +162,17 @@ function tripal_feature_menu() {
     'type' => MENU_LOCAL_TASK,
     'weight' => 1
   );
+  $items['admin/tripal/chado/tripal_feature/toc'] = array(
+    'title' => ' TOC',
+    'description' => 'Manage the table of contents for feature nodes.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('tripal_core_content_type_toc_form', 'chado_feature'),
+    'access arguments' => array('administer tripal feature'),
+    'type' => MENU_LOCAL_TASK,
+    'file' =>  'includes/tripal_core.toc.inc',
+    'file path' => drupal_get_path('module', 'tripal_core'), 
+    'weight' => 3
+  );
   $items['admin/tripal/chado/tripal_feature/configuration'] = array(
     'title' => 'Settings',
     'description' => 'Configure the Tripal Feature module.',

+ 9 - 5
tripal_featuremap/tripal_featuremap.module

@@ -129,12 +129,16 @@ function tripal_featuremap_menu() {
     'weight' => 0
   );
 
-  // Synchronizing maps from Chado to Drupal
-  $items['chado_sync_featuremaps'] = array(
-    'title' => 'Sync Data',
-    'page callback' => 'tripal_featuremap_sync_featuremaps',
+  $items['admin/tripal/chado/tripal_featuremap/toc'] = array(
+    'title' => ' TOC',
+    'description' => 'Manage the table of contents for feature map nodes.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('tripal_core_content_type_toc_form', 'chado_featuremap'),
     'access arguments' => array('administer tripal featuremap'),
-    'type' => MENU_CALLBACK
+    'type' => MENU_LOCAL_TASK,
+    'file' =>  'includes/tripal_core.toc.inc',
+    'file path' => drupal_get_path('module', 'tripal_core'),
+    'weight' => 3
   );
 
   $items['admin/tripal/chado/tripal_featuremap/views/featuremaps/enable'] = array(

+ 12 - 0
tripal_library/tripal_library.module

@@ -101,6 +101,18 @@ function tripal_library_menu() {
     'type' => MENU_LOCAL_TASK,
     'weight' => 2
   );
+  
+  $items['admin/tripal/chado/tripal_library/toc'] = array(
+    'title' => ' TOC',
+    'description' => 'Manage the table of contents for library nodes.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('tripal_core_content_type_toc_form', 'chado_library'),
+    'access arguments' => array('administer tripal library'),
+    'type' => MENU_LOCAL_TASK,
+    'file' =>  'includes/tripal_core.toc.inc',
+    'file path' => drupal_get_path('module', 'tripal_core'),
+    'weight' => 3
+  );
 
   $items['admin/tripal/chado/tripal_library/views/libraries/enable'] = array(
     'title' => 'Enable Library Administrative View',

+ 12 - 0
tripal_organism/tripal_organism.module

@@ -68,6 +68,18 @@ function tripal_organism_menu() {
     'type' => MENU_LOCAL_TASK,
     'weight' => 2
   );
+  
+  $items['admin/tripal/chado/tripal_organism/toc'] = array(
+    'title' => ' TOC',
+    'description' => 'Manage the table of contents for organism nodes.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('tripal_core_content_type_toc_form', 'chado_organism'),
+    'access arguments' => array('administer tripal organism'),
+    'type' => MENU_LOCAL_TASK,
+    'file' =>  'includes/tripal_core.toc.inc',
+    'file path' => drupal_get_path('module', 'tripal_core'),
+    'weight' => 3
+  );
 
   $items['admin/tripal/chado/tripal_organism/views/organisms/enable'] = array(
     'title' => 'Enable Organism Administrative View',

+ 12 - 0
tripal_project/tripal_project.module

@@ -76,6 +76,18 @@ function tripal_project_menu() {
     'type' => MENU_LOCAL_TASK,
     'weight' => 0
   );
+  
+  $items['admin/tripal/chado/tripal_project/toc'] = array(
+    'title' => ' TOC',
+    'description' => 'Manage the table of contents for project nodes.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('tripal_core_content_type_toc_form', 'chado_project'),
+    'access arguments' => array('administer tripal project'),
+    'type' => MENU_LOCAL_TASK,
+    'file' =>  'includes/tripal_core.toc.inc',
+    'file path' => drupal_get_path('module', 'tripal_core'),
+    'weight' => 3
+  );
 
   $items['admin/tripal/chado/tripal_project/views/projects/enable'] = array(
     'title' => 'Enable Project Administrative View',

+ 12 - 0
tripal_pub/tripal_pub.module

@@ -112,6 +112,18 @@ function tripal_pub_menu() {
     'type' => MENU_LOCAL_TASK,
     'weight' => 2
   );
+  
+  $items['admin/tripal/chado/tripal_pub/toc'] = array(
+    'title' => ' TOC',
+    'description' => 'Manage the table of contents for pub nodes.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('tripal_core_content_type_toc_form', 'chado_pub'),
+    'access arguments' => array('administer tripal pub'),
+    'type' => MENU_LOCAL_TASK,
+    'file' =>  'includes/tripal_core.toc.inc',
+    'file path' => drupal_get_path('module', 'tripal_core'),
+    'weight' => 3
+  );
 
   $items['admin/tripal/chado/tripal_pub/citation'] = array(
     'title' => 'Citations',

+ 12 - 0
tripal_stock/tripal_stock.module

@@ -78,6 +78,18 @@ function tripal_stock_menu() {
     'type' => MENU_LOCAL_TASK,
     'weight' => 0
   );
+  
+  $items['admin/tripal/chado/tripal_stock/toc'] = array(
+    'title' => ' TOC',
+    'description' => 'Manage the table of contents for stock nodes.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('tripal_core_content_type_toc_form', 'chado_stock'),
+    'access arguments' => array('administer tripal stock'),
+    'type' => MENU_LOCAL_TASK,
+    'file' =>  'includes/tripal_core.toc.inc',
+    'file path' => drupal_get_path('module', 'tripal_core'),
+    'weight' => 3
+  );
 
   $items['admin/tripal/chado/tripal_stock/help'] = array(
     'title' => 'Help',