1 layout.context.admin.inc | layout_context_add_form($form, &$form_state, Layout $layout = NULL, $context_id = NULL) |
Form callback; Displays form for adding new contexts to a layout.
Parameters
Layout $layout: The layout to which a context is being added.
int|null $context_id: The ID of the context being configured. If adding a new context, no value will be passed in.
Related topics
File
- core/
modules/ layout/ layout.context.admin.inc, line 37 - Administrative functions for custom layout contexts.
Code
function layout_context_add_form($form, &$form_state, Layout $layout = NULL, $context_id = NULL) {
form_load_include($form_state, 'inc', 'layout', 'layout.context.admin');
form_load_include($form_state, 'inc', 'layout', 'layout.admin');
$is_new_context = TRUE;
if (isset($context_id)) {
$is_new_context = FALSE;
}
// Ensure AJAX callbacks display the correct title by setting it here.
$form['#title'] = $is_new_context ? t('Add context') : t('Configure context');
$form_state['layout'] = $layout;
$form_state['context_id'] = $context_id;
$form['help'] = array(
'#type' => 'help',
'#markup' => 'Contexts provide additional information to blocks in the layout to display. For example, information from node 5, or the user "administrator" could be made available.',
);
$contexts = $layout->getContexts();
if (isset($contexts[$context_id])) {
$handler = $contexts[$context_id];
$form_state['handler'] = $handler;
}
else {
$handler = NULL;
}
$all_context_info = _layout_get_all_info('layout_context');
backdrop_sort($all_context_info, array('title'));
$form['context'] = array(
'#type' => 'select',
'#title' => t('Available contexts'),
'#options' => array(),
'#required' => TRUE,
'#parents' => array('context'),
'#ajax' => array(
'wrapper' => 'context_settings',
'callback' => 'layout_context_ajax_style',
),
);
foreach ($all_context_info as $key => $context_info) {
// @todo: add a "configurable" key to hook_context_info () instead?
if (!in_array($key, array('string', 'overrides_path', 'dashboard'))) {
$form['context']['#options'][$context_info['name']] = $context_info['title'];
$form['context']['#default_value'] = isset($handler->plugin) ? $handler->plugin : NULL;
}
}
$form['context_settings'] = array(
'#type' => 'container',
'#id' => 'context_settings',
'#parents' => array('context_settings'),
);
$form['context_settings']['content'] = layout_context_return_form($form['context_settings'], $form_state);
$form['actions'] = array(
'#type' => 'actions',
);
$form['load_context_nojs'] = array(
'#type' => 'submit',
'#value' => t('Load context'),
'#submit' => array(
'layout_context_add_load_context_nojs',
),
'#attributes' => array(
'class' => array('js-hide'),
),
);
$form['actions']['add'] = array(
'#type' => 'submit',
'#name' => 'context_add_button',
'#value' => $is_new_context ? t('Add context') : t('Save context'),
'#submit' => array(
'layout_context_add_form_submit',
),
'#validate' => array(
'layout_context_add_form_validate',
),
'#ajax' => array(
'callback' => 'layout_ajax_form_save_dialog',
),
);
$form['actions']['cancel'] = array(
'#type' => 'submit',
'#value' => t('Cancel'),
'#limit_validation_errors' => array(),
'#submit' => array('layout_context_add_form_cancel'),
'#ajax' => array(
'callback' => 'layout_ajax_context_cancel_dialog',
),
);
return $form;
}