Browse Source

Views: Added action links area handler and updated bulk loader, cv, db and organism default views to use it

Lacey Sanderson 11 years ago
parent
commit
7ad5364ed7

+ 24 - 21
tripal_bulk_loader/tripal_bulk_loader.views_default.inc

@@ -102,16 +102,16 @@ function tripal_bulk_loader_defaultview_admin_job_listing() {
       'empty_column' => 0,
     ),
   );
-  /* Header: Global: Text area */
-  $handler->display->display_options['header']['area']['id'] = 'area';
-  $handler->display->display_options['header']['area']['table'] = 'views';
-  $handler->display->display_options['header']['area']['field'] = 'area';
-  $handler->display->display_options['header']['area']['label'] = 'Add Job';
-  $handler->display->display_options['header']['area']['empty'] = TRUE;
-  $handler->display->display_options['header']['area']['content'] = '<ul class="action-links">
-    <li><a href="../../../../node/add/tripal-bulk-loader">Add Bulk Loading Job</a></li>
-    </ul>';
-  $handler->display->display_options['header']['area']['format'] = 'full_html';
+  /* Header: Global: Action Links */
+  $handler->display->display_options['header']['action_links_area']['id'] = 'action_links_area';
+  $handler->display->display_options['header']['action_links_area']['table'] = 'views';
+  $handler->display->display_options['header']['action_links_area']['field'] = 'action_links_area';
+  $handler->display->display_options['header']['action_links_area']['label'] = 'Action Links';
+  $handler->display->display_options['header']['action_links_area']['empty'] = TRUE;
+  $handler->display->display_options['header']['action_links_area']['link-1'] = array(
+    'label-1' => 'Add Bulk Loading Job',
+    'path-1' => 'node/add/tripal-bulk-loader',
+  );
   /* No results behavior: Global: Text area */
   $handler->display->display_options['empty']['area']['id'] = 'area';
   $handler->display->display_options['empty']['area']['table'] = 'views';
@@ -282,17 +282,20 @@ function tripal_bulk_loader_defaultview_admin_template_listing() {
   $handler->display->display_options['pager']['type'] = 'full';
   $handler->display->display_options['pager']['options']['items_per_page'] = '25';
   $handler->display->display_options['style_plugin'] = 'table';
-  /* Header: Global: Text area */
-  $handler->display->display_options['header']['area']['id'] = 'area';
-  $handler->display->display_options['header']['area']['table'] = 'views';
-  $handler->display->display_options['header']['area']['field'] = 'area';
-  $handler->display->display_options['header']['area']['label'] = 'Add Template';
-  $handler->display->display_options['header']['area']['empty'] = TRUE;
-  $handler->display->display_options['header']['area']['content'] = '<ul class="action-links">
-      <li><a href="template/create">Add Template</a></li>
-      <li><a href="templates/import">Import Template</a></li>
-      </ul>';
-  $handler->display->display_options['header']['area']['format'] = 'full_html';
+  /* Header: Global: Action Links */
+  $handler->display->display_options['header']['action_links_area']['id'] = 'action_links_area';
+  $handler->display->display_options['header']['action_links_area']['table'] = 'views';
+  $handler->display->display_options['header']['action_links_area']['field'] = 'action_links_area';
+  $handler->display->display_options['header']['action_links_area']['label'] = 'Action Links';
+  $handler->display->display_options['header']['action_links_area']['empty'] = TRUE;
+  $handler->display->display_options['header']['action_links_area']['link-1'] = array(
+    'label-1' => 'Add Template',
+    'path-1' => 'admin/tripal/loaders/bulk/template/create',
+  );
+  $handler->display->display_options['header']['action_links_area']['link-2'] = array(
+    'label-2' => 'Import Template',
+    'path-2' => 'admin/tripal/loaders/bulk/templates/import',
+  );
   /* Field: Tripal Bulk Loader Templates: Name */
   $handler->display->display_options['fields']['name']['id'] = 'name';
   $handler->display->display_options['fields']['name']['table'] = 'tripal_bulk_loader_template';

+ 24 - 21
tripal_cv/tripal_cv.views_default.inc

@@ -66,17 +66,20 @@ $handler->display->display_options['style_options']['info'] = array(
     'separator' => '',
   ),
 );
-/* Header: Global: Text area */
-$handler->display->display_options['header']['text']['id'] = 'text';
-$handler->display->display_options['header']['text']['table'] = 'views';
-$handler->display->display_options['header']['text']['field'] = 'area';
-$handler->display->display_options['header']['text']['label'] = 'Add Cv';
-$handler->display->display_options['header']['text']['empty'] = TRUE;
-$handler->display->display_options['header']['text']['content'] = '<ul class="action-links">
-          <li><a href="tripal_cv/cv/add">Add Vocabulary</a></li>
-          <li><a href="tripal_cv/obo_loader">Load Ontology</a></li>
-     </ul>';
-$handler->display->display_options['header']['text']['format'] = 'full_html';
+/* Header: Global: Action Links */
+  $handler->display->display_options['header']['action_links_area']['id'] = 'action_links_area';
+  $handler->display->display_options['header']['action_links_area']['table'] = 'views';
+  $handler->display->display_options['header']['action_links_area']['field'] = 'action_links_area';
+  $handler->display->display_options['header']['action_links_area']['label'] = 'Action Links';
+  $handler->display->display_options['header']['action_links_area']['empty'] = TRUE;
+  $handler->display->display_options['header']['action_links_area']['link-1'] = array(
+    'label-1' => 'Add Vocabulary',
+    'path-1' => 'admin/tripal/chado/tripal_cv/cv/add',
+  );
+  $handler->display->display_options['header']['action_links_area']['link-2'] = array(
+    'label-2' => 'Load Ontology',
+    'path-2' => 'admin/tripal/chado/tripal_cv/obo_loader',
+  );
 /* No results behavior: Global: Text area */
 $handler->display->display_options['empty']['text']['id'] = 'area';
 $handler->display->display_options['empty']['text']['table'] = 'views';
@@ -262,16 +265,16 @@ $handler->display->display_options['style_options']['info'] = array(
     'separator' => '',
   ),
 );
-/* Header: Global: Text area */
-$handler->display->display_options['header']['text']['id'] = 'text';
-$handler->display->display_options['header']['text']['table'] = 'views';
-$handler->display->display_options['header']['text']['field'] = 'area';
-$handler->display->display_options['header']['text']['label'] = 'Add cvterm';
-$handler->display->display_options['header']['text']['empty'] = TRUE;
-$handler->display->display_options['header']['text']['content'] = '<ul class="action-links">
-        <li><a href="cvterm/add">Add Term</a></li>
-   </ul>';
-$handler->display->display_options['header']['text']['format'] = 'full_html';
+/* Header: Global: Action Links */
+  $handler->display->display_options['header']['action_links_area']['id'] = 'action_links_area';
+  $handler->display->display_options['header']['action_links_area']['table'] = 'views';
+  $handler->display->display_options['header']['action_links_area']['field'] = 'action_links_area';
+  $handler->display->display_options['header']['action_links_area']['label'] = 'Action Links';
+  $handler->display->display_options['header']['action_links_area']['empty'] = TRUE;
+  $handler->display->display_options['header']['action_links_area']['link-1'] = array(
+    'label-1' => 'Add Term',
+    'path-1' => 'admin/tripal/chado/tripal_cv/cvterm/add',
+  );
 /* No results behavior: Global: Text area */
 $handler->display->display_options['empty']['text']['id'] = 'area';
 $handler->display->display_options['empty']['text']['table'] = 'views';

+ 10 - 9
tripal_db/tripal_db.views_default.inc

@@ -72,15 +72,16 @@ function tripal_db_defaultview_admin_db_listing() {
       'separator' => '',
     ),
   );
-  /* Header: Global: Text area */
-  $handler->display->display_options['header']['text']['id'] = 'text';
-  $handler->display->display_options['header']['text']['table'] = 'views';
-  $handler->display->display_options['header']['text']['field'] = 'area';
-  $handler->display->display_options['header']['text']['label'] = 'Add DB';
-  $handler->display->display_options['header']['text']['content'] = '<ul class="action-links">
-        <li><a href="tripal_db/add">Add Database</a></li>
-    </ul>';
-  $handler->display->display_options['header']['text']['format'] = 'full_html';
+  /* Header: Global: Action Links */
+  $handler->display->display_options['header']['action_links_area']['id'] = 'action_links_area';
+  $handler->display->display_options['header']['action_links_area']['table'] = 'views';
+  $handler->display->display_options['header']['action_links_area']['field'] = 'action_links_area';
+  $handler->display->display_options['header']['action_links_area']['label'] = 'Action Links';
+  $handler->display->display_options['header']['action_links_area']['empty'] = TRUE;
+  $handler->display->display_options['header']['action_links_area']['link-1'] = array(
+    'label-1' => 'Add Database',
+    'path-1' => 'admin/tripal/chado/tripal_db/add',
+  );
   /* No results behavior: Global: Text area */
   $handler->display->display_options['empty']['text']['id'] = 'area';
   $handler->display->display_options['empty']['text']['table'] = 'views';

+ 10 - 10
tripal_organism/tripal_organism.views_default.inc

@@ -67,16 +67,16 @@ function tripal_organism_admin_defaultview_organisms() {
       'separator' => '',
     ),
   );
-  /* Header: Global: Text area */
-  $handler->display->display_options['header']['area']['id'] = 'area';
-  $handler->display->display_options['header']['area']['table'] = 'views';
-  $handler->display->display_options['header']['area']['field'] = 'area';
-  $handler->display->display_options['header']['area']['label'] = 'Add Organism';
-  $handler->display->display_options['header']['area']['empty'] = TRUE;
-  $handler->display->display_options['header']['area']['content'] = '<ul class="action-links">
-          <li><a href="node/add/tripal_cv">Add Organism</a></li>
-     </ul>';
-  $handler->display->display_options['header']['area']['format'] = 'full_html';
+  /* Header: Global: Action Links */
+  $handler->display->display_options['header']['action_links_area']['id'] = 'action_links_area';
+  $handler->display->display_options['header']['action_links_area']['table'] = 'views';
+  $handler->display->display_options['header']['action_links_area']['field'] = 'action_links_area';
+  $handler->display->display_options['header']['action_links_area']['label'] = 'Action Links';
+  $handler->display->display_options['header']['action_links_area']['empty'] = TRUE;
+  $handler->display->display_options['header']['action_links_area']['link-1'] = array(
+    'label-1' => 'Add Organism',
+    'path-1' => 'node/add/tripal_organism',
+  );
   /* No results behavior: Global: Text area */
   $handler->display->display_options['empty']['text']['id'] = 'area';
   $handler->display->display_options['empty']['text']['table'] = 'views';

+ 14 - 1
tripal_views/tripal_views.views.inc

@@ -1,7 +1,7 @@
 <?php
 
 include('api/tripal_views.api.inc');
-
+include('views/handlers/tripal_views_handler_area_action_links.inc');
 
 /**
  * @file
@@ -71,6 +71,11 @@ function tripal_views_views_handlers() {
       ),
       */
 
+      // Custom area handler
+      'tripal_views_handler_area_action_links' => array(
+        'parent' => 'views_handler_area',
+      ),
+
       // Custom Tripal Filter Handlers
       'tripal_views_handler_filter_no_results' => array(
         'parent' => 'views_handler_filter'
@@ -156,6 +161,14 @@ function tripal_views_views_data() {
     ),
   );
 
+  $data['views']['action_links_area'] = array(
+    'title' => t('Action Links'),
+    'help' => t('Add action links to the view.'),
+    'area' => array(
+      'handler' => 'tripal_views_handler_area_action_links',
+    ),
+  );
+
   $tvi_query = db_query('SELECT * FROM {tripal_views}');
 
   // INTEGRATE THE LIGHTEST SETUP FOR EACH TABLE

+ 151 - 0
tripal_views/views/handlers/tripal_views_handler_area_action_links.inc

@@ -0,0 +1,151 @@
+<?php
+
+class tripal_views_handler_area_action_links extends views_handler_area {
+
+  function option_definition() {
+    $options = parent::option_definition();
+
+    $options['link-1']['label-1'] = array('default' => '');
+    $options['link-1']['path-1'] = array('default' => '');
+
+    $options['link-2']['label-2'] = array('default' => '');
+    $options['link-2']['path-2'] = array('default' => '');
+
+    $options['link-3']['label-3'] = array('default' => '');
+    $options['link-3']['path-3'] = array('default' => '');
+
+    $options['link-4']['label-4'] = array('default' => '');
+    $options['link-4']['path-4'] = array('default' => '');
+
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+
+    $form['label']['#default_value'] = 'Action Links';
+
+    $form['link-1'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Link #1')
+    );
+
+    $form['link-1']['label-1'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Label'),
+      '#description' => t('The text that will be displayed as the link'),
+      '#default_value' => $this->options['link-1']['label-1'],
+    );
+
+    $form['link-1']['path-1'] = array(
+      '#type' => 'textfield',
+      '#title' => t('URL'),
+      '#description' => t('The path that the link will link to'),
+      '#default_value' => $this->options['link-1']['path-1']
+    );
+
+    $form['link-2'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Link #2')
+    );
+
+    $form['link-2']['label-2'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Label'),
+      '#description' => t('The text that will be displayed as the link'),
+      '#default_value' => $this->options['link-2']['label-2'],
+    );
+
+    $form['link-2']['path-2'] = array(
+      '#type' => 'textfield',
+      '#title' => t('URL'),
+      '#description' => t('The path that the link will link to'),
+      '#default_value' => $this->options['link-2']['path-2']
+    );
+
+    $form['link-3'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Link #3')
+    );
+
+    $form['link-3']['label-3'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Label'),
+      '#description' => t('The text that will be displayed as the link'),
+      '#default_value' => $this->options['link-3']['label-3'],
+    );
+
+    $form['link-3']['path-3'] = array(
+      '#type' => 'textfield',
+      '#title' => t('URL'),
+      '#description' => t('The path that the link will link to'),
+      '#default_value' => $this->options['link-3']['path-3']
+    );
+
+    $form['link-4'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Link #4')
+    );
+
+    $form['link-4']['label-4'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Label'),
+      '#description' => t('The text that will be displayed as the link'),
+      '#default_value' => $this->options['link-4']['label-4'],
+    );
+
+    $form['link-4']['path-4'] = array(
+      '#type' => 'textfield',
+      '#title' => t('URL'),
+      '#description' => t('The path that the link will link to'),
+      '#default_value' => $this->options['link-4']['path-4']
+    );
+
+  }
+
+  function options_submit(&$form, &$form_state) {
+    parent::options_submit($form, $form_state);
+    ddl($form_state, 'form state in submit');
+    $this->options['link-1']['label-1'] = $form_state['values']['options']['link-1']['label-1'];
+    $this->options['link-1']['path-1'] = $form_state['values']['options']['link-1']['path-1'];
+
+    $this->options['link-2']['label-2'] = $form_state['values']['options']['link-2']['label-2'];
+    $this->options['link-2']['path-2'] = $form_state['values']['options']['link-2']['path-2'];
+
+    $this->options['link-3']['label-3'] = $form_state['values']['options']['link-3']['label-3'];
+    $this->options['link-3']['path-3'] = $form_state['values']['options']['link-3']['path-3'];
+
+    $this->options['link-4']['label-4'] = $form_state['values']['options']['link-4']['label-4'];
+    $this->options['link-4']['path-4'] = $form_state['values']['options']['link-4']['path-4'];
+  }
+
+  function render($empty = FALSE) {
+    if (!$empty || !empty($this->options['empty'])) {
+      $output = '<ul class="action-links">';
+
+      // First link
+      if (!empty($this->options['link-1']['label-1']) AND !empty($this->options['link-1']['path-1'])) {
+        $output .= '<li>' . l($this->options['link-1']['label-1'], $this->options['link-1']['path-1']) . '</li>';
+      }
+
+      // Second link
+      if (!empty($this->options['link-2']['label-2']) AND !empty($this->options['link-2']['path-2'])) {
+        $output .= '<li>' . l($this->options['link-2']['label-2'], $this->options['link-2']['path-2']) . '</li>';
+      }
+
+      // Third link
+      if (!empty($this->options['link-3']['label-3']) AND !empty($this->options['link-3']['path-3'])) {
+        $output .= '<li>' . l($this->options['link-3']['label-3'], $this->options['link-3']['path-3']) . '</li>';
+      }
+
+      // Fourth link
+      if (!empty($this->options['link-4']['label-4']) AND !empty($this->options['link-4']['path-4'])) {
+        $output .= '<li>' . l($this->options['link-4']['label-4'], $this->options['link-4']['path-4']) . '</li>';
+      }
+      $output .= '</ul>';
+      return $output;
+    }
+    return '';
+  }
+
+}