function _composed_field_build_vertical_tab_elements in Composed Field 7
Populates each widget form vertical tab with their form elements.
Parameters
Array $form: The widget settings form.
Array $widget_form_state_values: It is either the form saved values or the form submitted values.
Array $form_control_structure: The form element's structure.
1 call to _composed_field_build_vertical_tab_elements()
- _composed_field_build_form_controls_in_vertical_tabs in ./
composed_field.module - Builds the widget form vertical tabs.
File
- ./
composed_field.module, line 385 - Defines composed field type.
Code
function _composed_field_build_vertical_tab_elements(&$form, $widget_form_state_values, $form_control_structure) {
foreach ($form['#composed_field']['vertical_tab_settings'] as $setting_name => $setting_value) {
${$setting_name} = $setting_value;
}
$form_controls = _composed_field_form_controls_api();
// Create as many form elements in each tab as there are subfields.
for ($subfield = $subfield_start_from; $subfield <= $number_of_subfields; $subfield++) {
$form['composed_field'][$tab_name][$subfield] = array(
'#type' => 'fieldset',
);
foreach ($form_control_structure['widget_form'] as $form_element => $form_element_properties) {
$title = empty($form_element_properties['#title']) ? '' : $form_element_properties['#title'];
$form_element_properties['#title'] = $title . t('Subfield !subfield', array(
'!subfield' => $subfield,
));
$enable_this_attribute_element_is_not_available = TRUE;
$enable_this_attribute_element_value = FALSE;
// Inicial state of all form elements in the vertical tab.
$form_element_properties['#disabled'] = TRUE;
$form_element_properties['#default_value'] = $number_of_fields_not_set_message;
$number_of_subfields_has_value = FALSE;
if (isset($widget_form_state_values['number_of_subfields']) && $widget_form_state_values['number_of_subfields'] > 0) {
$form_element_properties['#default_value'] = '';
$number_of_subfields_has_value = TRUE;
$selected_value_for_type_attribute = $widget_form_state_values['composed_field']['type'][$subfield]['value'];
// 'enable_this_attribute' element.
if (in_array($selected_value_for_type_attribute, (array) $form_control_structure['supported_types'])) {
$enable_this_attribute_element_is_not_available = FALSE;
if (isset($widget_form_state_values['composed_field'][$tab_name][$subfield]['enable_this_attribute'])) {
$enable_this_attribute_element_value = $widget_form_state_values['composed_field'][$tab_name][$subfield]['enable_this_attribute'];
}
}
}
if ($enable_this_attribute_element_value) {
$form_element_properties['#disabled'] = FALSE;
$default_value = $widget_form_state_values['composed_field'][$tab_name][$subfield][$form_element];
$form_element_properties['#default_value'] = $default_value;
}
// Determine which tab are we in.
switch ($attribute_name) {
case '#type':
if ($number_of_subfields_has_value) {
// Make all elements in the #type attribute tab selectable.
$form_element_properties['#disabled'] = FALSE;
$form_element_properties['#default_value'] = $widget_form_state_values['composed_field'][$tab_name][$subfield][$form_element];
}
else {
// Set a message advising the user to enter a value into
// number_of_subfields.
$form_element_properties['#default_value'] = '';
$form_element_properties['#options'] = array(
'' => $number_of_fields_not_set_message,
);
}
break;
case '#default_value':
if (!empty($selected_value_for_type_attribute)) {
$form_element_properties = _composed_field_build_subfield_element($widget_form_state_values, $subfield, array(), $form_element);
}
break;
default:
$form['composed_field'][$tab_name][$subfield]['enable_this_attribute'] = array(
'#type' => 'checkbox',
'#title' => t('Enable !attribute attribute for Subfield !subfield.', array(
'!attribute' => $attribute_name,
'!subfield' => $subfield,
)),
'#disabled' => $enable_this_attribute_element_is_not_available,
'#default_value' => $enable_this_attribute_element_value,
'#ajax' => array(
'callback' => '_composed_field_vertical_tabs_ajax_callback',
),
);
}
$form['composed_field'][$tab_name][$subfield] += array(
'#prefix' => "<div id='composed_field_" . "{$tab_name}-{$subfield}" . "_ajax_wrapper'>",
'#suffix' => '</div>',
);
$form['composed_field'][$tab_name][$subfield][$form_element] = $form_element_properties;
}
}
}