protected function views_ef_fieldset_display_extender_plugin::options_form_arrange in Views Exposed Form Fieldset 7.2
1 call to views_ef_fieldset_display_extender_plugin::options_form_arrange()
- views_ef_fieldset_display_extender_plugin::options_form in views/
views_ef_fieldset_display_extender_plugin.inc - Provide a form to edit options for this plugin.
File
- views/
views_ef_fieldset_display_extender_plugin.inc, line 122 - Provides a display extender plugin for View 3.x.
Class
- views_ef_fieldset_display_extender_plugin
- @file Provides a display extender plugin for View 3.x.
Code
protected function options_form_arrange(&$form, &$form_state) {
$manager = $this
->get_manager();
$valid_items = $this->manager
->getItems();
// Pull items either from the form cache or the view.
$items = (array) $this
->get_option('items', TRUE);
foreach ($items as $key => $item) {
// Remove items that are no longer available.
if (!isset($valid_items[$item['id']])) {
unset($items[$key]);
continue;
}
// Add default keys.
$items[$key] += $valid_items[$item['id']];
}
// Filter items that haven't been added yet.
$backlog_items = array_diff_key($valid_items, $items);
// Create an option list of addable items.
$add_item_options = array();
foreach ($backlog_items as $item) {
$add_item_options[$item['id']] = $item['label'];
}
$tree = new ViewsEFFieldsetTree($items);
$item_list = $tree
->getFlattenedTree();
$weight_delta = count($item_list);
// Options for the (hidden) pid selects.
$parent_options = array();
foreach ($item_list as $item) {
if (!empty($item['is_group'])) {
$parent_options[$item['id']] = $item['id'];
}
}
/** @noinspection PhpUndefinedFieldInspection */
$display_title = $this->display->display->display_title;
$form['#title'] = check_plain($display_title) . ': ' . 'Arrange filter fieldsets';
$form['item_add'] = array(
'#type' => 'select',
'#options' => $add_item_options,
'#empty_value' => '',
'#empty_option' => t('- Add item -'),
'#name' => 'item_add',
);
$form['item_add_submit'] = array(
'#submit' => array(
array(
$this,
'arrange_submit',
),
),
'#value' => 'Add',
'#name' => 'item_add_submit',
'#action' => 'item_add',
);
// Automatically trigger a submit when an item is selected.
$form['item_add'] += array(
'#action' => 'item_add',
'#submit' => array(
array(
$this,
'arrange_submit',
),
),
'#executes_submit_callback' => TRUE,
'#ajax' => array(
'path' => views_ui_build_form_url($form_state),
),
);
// Hide the "Add" button by using a #states condition that will never be
// true.
$form['item_add_submit'] += array(
'#states' => array(
'visible' => array(
'select[name="item_add"]' => array(
'value' => FALSE,
),
),
),
);
$form['items'] = array(
'#type' => 'fieldset',
'#title' => 'Items',
'#theme' => 'views_ef_fieldset_reorder_form',
'#tree' => TRUE,
);
foreach ($item_list as $item) {
$item_form = array(
'#tree' => TRUE,
'#item' => $item,
);
$item_form['id'] = array(
'#type' => 'hidden',
'#default_value' => $item['id'],
);
$item_form['pid'] = array(
'#type' => 'select',
'#options' => $parent_options,
'#empty_value' => '',
'#default_value' => $item['pid'],
);
unset($item_form['pid']['#options'][$item['id']]);
$item_form['weight'] = array(
'#type' => 'weight',
'#title' => t('Weight'),
'#default_value' => $item['weight'],
'#delta' => $weight_delta,
'#title_display' => 'invisible',
);
$item_options = isset($item['options']) ? $item['options'] : array();
$item_form['options'] = $manager
->getOptionsForm($item['id'], $item_options);
$item_form['remove'] = array(
'#type' => 'submit',
'#value' => 'Remove',
'#submit' => array(
array(
$this,
'arrange_submit',
),
),
'#action' => 'item_remove',
// Required to reliably identify the clicked button.
'#name' => 'item_remove_' . $item['id'],
);
$form['items'][$item['id']] = $item_form;
}
}