[ Index ]

PHP Cross Reference of Drupal 6 (gatewave)

title

Body

[close]

/sites/all/modules/vertical_tabs/ -> vertical_tabs.admin.inc (source)

   1  <?php
   2  // $Id: vertical_tabs.admin.inc,v 1.1.2.2 2010/02/03 19:06:46 davereid Exp $
   3  
   4  function vertical_tabs_settings_form() {
   5    $form['vertical_tabs_default'] = array(
   6      '#type' => 'checkbox',
   7      '#title' => t('Include new fieldsets in vertical tabs by default.'),
   8      '#default_value' => variable_get('vertical_tabs_default', 1),
   9    );
  10    $form['vertical_tabs_minimum'] = array(
  11      '#type' => 'select',
  12      '#title' => t('Minimum number of tabified fieldsets to show vertical tabs'),
  13      '#description' => t('Non-tabified fieldsets do not count towards this minimum.'),
  14      '#options' => array(1 => t('No minimum')) + drupal_map_assoc(range(2, 10)),
  15      '#default_value' => variable_get('vertical_tabs_minimum', 1),
  16    );
  17    $form['vertical_tabs_node_type_settings'] = array(
  18      '#type' => 'checkbox',
  19      '#title' => t('Expose vertical tabs selection on the edit content type forms.'),
  20      '#description' => t('This feature will not work when adding a new content type and may not detect some fieldsets.'),
  21      '#default_value' => variable_get('vertical_tabs_node_type_settings', 0),
  22    );
  23    return system_settings_form($form);
  24  }
  25  
  26  function vertical_tabs_add_node_type_options(&$form, $node_type) {
  27    module_load_include('inc', 'node', 'node.pages');
  28  
  29    // Build a psuedo-node for a sample node form.
  30    $node = (object) array(
  31      'type' => $node_type,
  32      'name' => '',
  33      'vid' => 0,
  34      'language' => '',
  35    );
  36  
  37    // Build a sample node form to find fieldsets.
  38    $node_form_state = array('values' => array());
  39    $node_form_id = $node_type .'_node_form';
  40    $args = array(
  41      $node_form_id,
  42      $node_form_state,
  43      $node
  44    );
  45    $node_form = call_user_func_array('drupal_retrieve_form', $args);
  46    $node_form['#post'] = $node_form_state['values'];
  47    drupal_prepare_form($node_form_id, $node_form, $node_form_state);
  48    uasort($node_form, 'element_sort');
  49  
  50    // Find all fieldsets.
  51    $elements = vertical_tabs_get_form_elements($node_form);
  52    $config = vertical_tabs_get_config($node_type . '_node_form');
  53  
  54    // Merge default values and correct non-key-matching values.
  55    // @todo Keep settings for non-accessible fieldsets set by more priviledged users?
  56    $defaults = is_array($config) ? $config : array();
  57    $options = array();
  58    foreach ($elements as $key => $element) {
  59      $options[$key] = $element['#title'];
  60      if (!isset($defaults[$key]) && !empty($element['#group'])) {
  61        $defaults[$key] = $key;
  62      }
  63    }
  64  
  65    $form['vertical_tabs_settings'] = array(
  66      '#type' => 'fieldset',
  67      '#title' => t('Vertical tabs'),
  68      '#collapsible' => TRUE,
  69      '#collapsed' => TRUE,
  70      '#description' => t('The selected fieldsets will be rendered as vertical tabs for this content type. The tabs are rendered in the same version as the original form\'s fieldsets.'),
  71      '#group' => 'additional_settings',
  72      '#tree' => TRUE,
  73    );
  74    $form['vertical_tabs_settings']['form_id'] = array(
  75      '#type' => 'value',
  76      '#value' => $node_form_id,
  77    );
  78    $form['vertical_tabs_settings']['fieldsets'] = array(
  79      '#type' => 'checkboxes',
  80      '#title' => t('Include the following elements in the vertical tabs'),
  81      '#options' => $options,
  82      '#default_value' => $defaults,
  83    );
  84  
  85    array_unshift($form['#submit'], 'vertical_tabs_node_type_form_submit');
  86  }
  87  
  88  function vertical_tabs_node_type_form_submit($form, &$form_state) {
  89    if (isset($form_state['values']['vertical_tabs_settings'])) {
  90      $settings = $form_state['values']['vertical_tabs_settings'];
  91      vertical_tabs_save_config($settings['form_id'], $settings['fieldsets']);
  92      unset($form_state['values']['vertical_tabs_settings']);
  93    }
  94  }


Generated: Thu Mar 24 11:18:33 2011 Cross-referenced by PHPXref 0.7