function panels_ajax_tab_settings in Panels Ajax Tabs 7
Panels AJAX tabs settings form.
1 string reference to 'panels_ajax_tab_settings'
- panels_ajax_tab_menu in ./
panels_ajax_tab.module - Implements hook_menu().
File
- ./
panels_ajax_tab.admin.inc, line 73 - Administration page callbacks for the Panels AJAX tabs module.
Code
function panels_ajax_tab_settings($form, $form_state, $panels_ajax_tab) {
// Get the access/visibility rules.
ctools_include('plugins');
ctools_include('context');
$contexts = _panels_ajax_tab_get_contexts($panels_ajax_tab['context']);
$access_plugins = ctools_get_relevant_access_plugins($contexts);
$access_options = array(
'none' => 'Choose visibility rule',
);
foreach ($access_plugins as $id => $access_plugin) {
$access_options[$id] = $access_plugin['title'];
}
asort($access_options);
$mini_panels = $panels_ajax_tab['mini_panels'];
$container_id = $panels_ajax_tab['container_id'];
// Get the visibility rule, if available.
$default_visibility_rules = _panels_ajax_tab_get_container_visibility_settings($container_id);
$form['container_id'] = array(
'#type' => 'hidden',
'#value' => $container_id,
);
foreach ($mini_panels as $name => $mini_panel) {
$title = !empty($mini_panel['tab_title']) ? $mini_panel['tab_title'] : $name;
$form[$name] = array(
'#type' => 'fieldset',
'#title' => t('Visibility settings for @title', array(
'@title' => $title,
)),
'#tree' => TRUE,
);
$form[$name]['visibility_rule'] = array(
'#type' => 'select',
'#title' => t('Visibility/Access Rule'),
'#options' => $access_options,
'#ajax' => array(
'wrapper' => 'visibility-settings-wrapper-' . $name,
'callback' => 'ajax_example_dynamic_sections_select_callback_new',
'callback' => 'panels_ajax_tab_visibility_select_callback',
'mini-name' => $name,
),
'#default_value' => !empty($default_visibility_rules) ? $default_visibility_rules[$name]['visibility_rule'] : 'none',
);
// This fieldset just serves as a container for the part of the form
// that gets rebuilt.
$form[$name]['visibility_settings'] = array(
'#type' => 'fieldset',
// These provide the wrapper referred to in #ajax['wrapper'] above.
'#prefix' => '<div id="visibility-settings-wrapper-' . $name . '">',
'#suffix' => '</div>',
'#tree' => TRUE,
);
$form_state_values = !empty($form_state['values']) ? $form_state['values'] : array();
// Decide the visibility rule.
$visibility_rule = '';
$conf = array();
if (!empty($form_state_values)) {
$visibility_rule = $form_state_values[$name]['visibility_rule'];
$conf = $form_state_values[$name]['visibility_settings'];
}
elseif (!empty($default_visibility_rules)) {
$visibility_rule = $default_visibility_rules[$name]['visibility_rule'];
$conf = !empty($default_visibility_rules[$name]['visibility_settings']) ? $default_visibility_rules[$name]['visibility_settings'] : array();
}
if (!empty($visibility_rule) && $visibility_rule != 'none') {
$form[$name]['visibility_settings']['#title'] = t('Settings');
$plugin = ctools_get_access_plugin($visibility_rule);
if ($function = ctools_plugin_get_function($plugin, 'settings form')) {
$test_form = array();
$test_form['settings'] = array(
'#tree' => TRUE,
);
$form_state['plugin'] = $plugin;
$test_form = $function($test_form, $form_state, $conf);
if (!empty($test_form['settings'])) {
$form[$name]['visibility_settings'] += $test_form['settings'];
}
}
$form[$name]['visibility_settings']['not'] = array(
'#type' => 'checkbox',
'#title' => t('Reverse (NOT)'),
'#default_value' => !empty($conf['not']),
);
}
}
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Save',
);
return $form;
}