function skinr_context_ui_form_skinr_ui_form_alter in Skinr 8.2
Same name and namespace in other branches
- 7.2 skinr_context/skinr_context_ui.module \skinr_context_ui_form_skinr_ui_form_alter()
Implements hook_form_alter().
File
- skinr_context/
skinr_context_ui.module, line 220 - Administrative interface for Skinr Context. Without this module, you cannot edit your skins with context.
Code
function skinr_context_ui_form_skinr_ui_form_alter(&$form, $form_state, $form_id) {
$group = skinr_context_group_load($form_state['build_info']['args'][0]['gid']);
$form['skinr']['gid'] = array(
'#type' => 'hidden',
'#value' => $group->gid,
);
$form['skinr_group'] = array(
'#tree' => TRUE,
'#type' => 'container',
// Move group settings to top.
'#weight' => -1,
);
$form['skinr_group']['title'] = array(
'#type' => 'textfield',
'#title' => t('Group title'),
'#required' => TRUE,
'#default_value' => $group->title,
'#description' => t('Descriptive title for this skin settings group.'),
);
$machine_name_prefix = $group->module . ':' . $group->element . ':';
$form['skinr_group']['gid'] = array(
'#type' => 'machine_name',
'#title' => t('Group name'),
'#default_value' => strpos($group->gid, $machine_name_prefix) === 0 ? substr($group->gid, strlen($machine_name_prefix)) : $group->gid,
// '#maxlength' => MENU_MAX_MENU_NAME_LENGTH_UI,
'#description' => t('A unique name to identify this group. It must only contain lowercase letters, numbers, hyphens and underscores.'),
'#field_prefix' => $machine_name_prefix,
'#machine_name' => array(
'exists' => 'skinr_context_ui_group_name_exists',
'source' => array(
'skinr_group',
'title',
),
'replace_pattern' => '[^a-z0-9-_]+',
),
// A group's machine name cannot be changed.
'#disabled' => TRUE,
);
$form['skinr_group']['description'] = array(
'#type' => 'textfield',
'#title' => t('Description'),
'#default_value' => $group->description,
'#description' => t('A description for this group.'),
);
// Context form elements.
$context = skinr_context_group_to_context($group);
// Condition mode
$form['condition_mode'] = array(
'#type' => 'checkbox',
'#default_value' => isset($context->condition_mode) ? $context->condition_mode : FALSE,
'#title' => t('Require all conditions'),
'#description' => t('If checked, all conditions must be met for this context to be active. Otherwise, the first condition that is met will activate this context.'),
);
// Condition plugin forms
$form['conditions'] = array(
'#theme' => 'context_ui_plugins',
'#title' => t('Conditions'),
'#description' => t('Trigger the activation of this context'),
'#tree' => TRUE,
'selector' => array(
'#type' => 'select',
'#options' => array(
0 => '<' . t('Add a condition') . '>',
),
'#default_value' => 0,
),
'state' => array(
'#attributes' => array(
'class' => array(
'context-plugins-state',
),
),
'#type' => 'hidden',
),
'plugins' => array(
'#tree' => TRUE,
),
);
$conditions = array_keys(context_conditions());
sort($conditions);
foreach ($conditions as $condition) {
if ($plugin = context_get_plugin('condition', $condition)) {
$form['conditions']['plugins'][$condition] = array(
'#tree' => TRUE,
'#plugin' => $plugin,
'#context_enabled' => isset($context->conditions[$condition]),
// This flag is used at the theme layer.
'values' => $plugin
->condition_form($context),
'options' => $plugin
->options_form($context),
);
$form['conditions']['selector']['#options'][$condition] = $plugin->title;
}
}
// Only add submit handler once.
if (isset($form['#submit']) && in_array('skinr_ui_form_submit', $form['#submit'])) {
foreach ($form['#submit'] as $key => $submit_handler) {
if ($submit_handler == 'skinr_ui_form_submit') {
$form['#submit'][$key] = 'skinr_context_ui_form_submit';
}
}
}
}