1.20.x layout.flexible.inc | layout_flexible_template_region_style_select($form, &$form_state, LayoutFlexibleTemplate $flexible_template, $original_row) |
Form to select the region widths for a flexible template.
Parameters
LayoutFlexibleTemplate $flexible_template: The loaded flexible template object.
string $original_row: The row above or below which a new row is being inserted.
Related topics
File
- modules/
layout/ layout.flexible.inc, line 249 - Provides configurable (flexible) layout templates.
Code
function layout_flexible_template_region_style_select($form, &$form_state, LayoutFlexibleTemplate $flexible_template, $original_row) {
$new_row = ($original_row == 'add');
form_load_include($form_state, 'inc', 'layout', 'layout.admin');
form_load_include($form_state, 'inc', 'layout', 'layout.flexible');
$form_state['flexible_template_name'] = $flexible_template->name;
$form_state['original_row'] = $original_row;
$row_styles = layout_flexible_row_styles();
$count_options = array();
foreach ($row_styles as $name => $row_style) {
$count_options[$row_style['region_count']] = $row_style['region_count'];
}
$row_style_in_use = 'region_12';
$default_region_count = 1;
if (!$new_row) {
if (isset($form_state['values']['region_style'])) {
$row_style_in_use = $form_state['values']['region_style'];
}
else {
$row_style_in_use = $flexible_template->rows[$original_row]['contains'];
}
$default_region_count = $row_styles[$row_style_in_use]['region_count'];
}
$form['region_count'] = array(
'#title' => t('Number of regions'),
'#type' => 'radios',
'#default_value' => $default_region_count,
'#parents' => array('region_count'),
'#options' => $count_options,
'#ajax' => array(
'callback' => 'layout_flexible_template_edit_region_style_ajax',
'wrapper' => 'row_settings',
'trigger_as' => array('name' => 'region_count_update'),
),
);
$form['region_count_update'] = array(
'#type' => 'submit',
'#value' => t('Update regions'),
'#attributes' => array('class' => array('js-hide')),
'#name' => 'region_count_update',
'#validate' => array(),
'#submit' => array('layout_flexible_template_edit_region_style_submit'),
'#ajax' => array(
'callback' => 'layout_flexible_template_edit_region_style_ajax',
'wrapper' => 'row_settings',
),
);
$form['row_settings'] = array(
'#type' => 'container',
'#id' => 'row_settings',
'#parents' => array('row_settings'),
);
$region_count = isset($form_state['values']['region_count']) ? $form_state['values']['region_count'] : $default_region_count;
$options = array();
$row_styles = layout_flexible_row_styles();
foreach ($row_styles as $name => $row_style) {
if ($row_style['region_count'] == $region_count) {
$options[$name] = theme('layout_flexible_template_style_option', array('row_style' => $row_style));
}
}
if (empty($options)) {
$options['region_12'] = '12:0';
}
$default_region_style = $row_style_in_use;
if (!isset($options[$row_style_in_use])) {
$default_region_style = key($options);
}
$form['row_settings']['region_style'] = array(
'#title' => t('Region widths'),
'#type' => 'radios',
'#default_value' => $default_region_style,
'#options' => $options,
);
$form['submit_region_style'] = array(
'#type' => 'submit',
'#value' => t('Choose region widths'),
'#attributes' => array(
'class' => array('js-hide'),
),
'#submit' => array(
'layout_flexible_template_region_count_load',
),
);
$submit_button_value = $new_row ? t('Continue') : t('Save region widths');
$form['actions'] = array('#type' => 'actions');
$form['actions']['submit'] = array(
'#type' => 'submit',
'#name' => 'submit',
'#value' => $submit_button_value,
'#attributes' => array('class' => array('layout-title-button')),
'#submit' => array(
'layout_flexible_template_region_style_select_submit',
),
'#ajax' => array(
'callback' => 'layout_ajax_form_open_dialog',
),
);
if (isset($flexible_template->rows[$original_row]['in_progress'])) {
$cancel_submit_callback = 'layout_flexible_template_region_style_select_cancel';
$cancel_ajax_callback = 'layout_ajax_form_open_dialog';
}
else {
$cancel_submit_callback = 'layout_flexible_template_cancel';
$cancel_ajax_callback = 'layout_flexible_template_cancel_ajax';
}
$form['actions']['cancel'] = array(
'#type' => 'submit',
'#value' => t('Cancel'),
'#validate' => array(),
'#submit' => array(
$cancel_submit_callback,
),
'#ajax' => array(
'callback' => $cancel_ajax_callback,
),
);
return $form;
}