function vertical_tabs_add_node_type_options in Vertical Tabs 6
1 call to vertical_tabs_add_node_type_options()
- vertical_tabs_form_node_type_form_alter in ./
vertical_tabs.module - Implements hook_form_FORM_ID_alter().
File
- ./
vertical_tabs.admin.inc, line 25
Code
function vertical_tabs_add_node_type_options(&$form, $node_type) {
module_load_include('inc', 'node', 'node.pages');
// Build a psuedo-node for a sample node form.
$node = (object) array(
'type' => $node_type,
'name' => '',
'vid' => 0,
'language' => '',
);
// Build a sample node form to find fieldsets.
$node_form_state = array(
'values' => array(),
);
$node_form_id = $node_type . '_node_form';
$node_form = drupal_retrieve_form($node_form_id, $node_form_state, $node);
$node_form['#post'] = $node_form_state['values'];
drupal_prepare_form($node_form_id, $node_form, $node_form_state);
uasort($node_form, 'element_sort');
// Find all fieldsets.
$elements = vertical_tabs_get_form_elements($node_form);
$config = vertical_tabs_get_config($node_type . '_node_form');
// Merge default values and correct non-key-matching values.
// @todo Keep settings for non-accessible fieldsets set by more priviledged users?
$defaults = is_array($config) ? $config : array();
$options = array();
foreach ($elements as $key => $element) {
$options[$key] = $element['#title'];
if (!isset($defaults[$key]) && !empty($element['#group'])) {
$defaults[$key] = $key;
}
}
$form['vertical_tabs_settings'] = array(
'#type' => 'fieldset',
'#title' => t('Vertical tabs'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#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.'),
'#group' => 'additional_settings',
'#tree' => TRUE,
);
$form['vertical_tabs_settings']['form_id'] = array(
'#type' => 'value',
'#value' => $node_form_id,
);
$form['vertical_tabs_settings']['fieldsets'] = array(
'#type' => 'checkboxes',
'#title' => t('Include the following elements in the vertical tabs'),
'#options' => $options,
'#default_value' => $defaults,
);
array_unshift($form['#submit'], 'vertical_tabs_node_type_form_submit');
}