| 1 field_group.groups.inc | field_group_pre_render_tab(array &$element, $group, array &$form) |
Implements field_group_pre_render_<format-type>. Format type: Vertical tab.
Parameters
array $element: The field group form element.
object $group: The Field group object prepared for pre_render.
array $form: The root element or form.
File
- core/
modules/ field_group/ field_group.groups.inc, line 289 - Defines some field group types.
Code
function field_group_pre_render_tab(array &$element, $group, array &$form) {
$view_mode = isset($form['#view_mode']) ? $form['#view_mode'] : 'form';
$form['#attached']['js'][] = array(
'data' => array('field_group' => array('tabs' => $view_mode)),
'type' => 'setting',
);
$add = array(
'#type' => 'fieldset',
'#id' => 'edit-' . $group->group_name,
'#title' => check_plain(t($group->label)),
'#collapsible' => $group->collapsible,
'#collapsed' => $group->collapsed,
'#attributes' => array('class' => explode(" ", $group->classes)),
'#description' => $group->description,
);
// Front-end and back-end on configuration will lead
// to vertical tabs nested in a separate vertical group.
if ($view_mode != 'form') {
$add['#group'] = empty($group->parent_name) ? 'additional_settings' : $group->parent_name;
$add['#parents'] = array($add['#group']);
$element += $add;
}
// Form field groups which are nested into a vertical tab group
// are handled a little different.
elseif (!empty($group->parent_name)) {
$add['#group'] = $group->parent_name;
$element += $add;
}
// Forms "can" have additional settings. We'll try to locate it first, if not
// exists, field_group will create a parallel additional settings entry.
else {
// Create the field group element.
$add['#parents'] = array('additional_settings');
$add['#group'] = 'additional_settings';
$add['#weight'] = -30 + $group->weight;
// Hardcoded to bring our extra additional vtabs on top.
// Check if the additional_settings exist for this type of form.
if (isset($form['additional_settings']['group']['#groups']['additional_settings'])) {
// Merge field groups with the core additional settings.
$form['additional_settings']['group']['#groups']['additional_settings'][$group->group_name] = $add;
$form['additional_settings']['group']['#groups'][$group->group_name] = array('#group_exists' => TRUE);
// Nest the fields inside the appropriate structure.
foreach (element_children($element) as $fieldname) {
$form['additional_settings']['group']['#groups']['additional_settings'][$group->group_name][$fieldname] = &$element[$fieldname];
unset($element[$fieldname]);
}
}
// Assumption the wrapper is in the root. This could be done by field_group
// itself in previous loop of tabs in same wrapper or even some other
// contrib / custom module.
else {
if (!isset($form['additional_settings']['#type'])) {
$form['additional_settings'] = array(
'#type' => 'vertical_tabs',
'#weight' => $group->weight,
'#theme_wrappers' => array('vertical_tabs'),
'#prefix' => '<div class="field-group-' . $group->format_type . '-wrapper">',
'#suffix' => '</div>',
);
$form['#attached']['library'][] = array('system', 'backdrop.collapse');
}
$form['additional_settings'][$group->group_name] = $add;
// Nest the fields inside the appropriate structure.
foreach (element_children($element) as $fieldname) {
$form['additional_settings'][$group->group_name][$fieldname] = &$element[$fieldname];
unset($element[$fieldname]);
}
}
}
}