| [ Index ] |
PHP Cross Reference of Drupal 6 (yi-drupal) |
[Summary view] [Print] [Text view]
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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Mon Jul 9 18:01:44 2012 | Cross-referenced by PHPXref 0.7 |