function mefibs_display_extender_plugin_blocks::options_submit in MEFIBS - More exposed forms in blocks 7
Handle any special handling on the form submission.
Overrides views_plugin_display_extender::options_submit
File
- ./
mefibs_display_extender_plugin_blocks.inc, line 389 - Provides an MEFIBS exposed form plugin for View 3.x.
Class
- mefibs_display_extender_plugin_blocks
- Display Extender Plugin class.
Code
function options_submit(&$form, &$form_state) {
if ($form_state['section'] == 'mefibs') {
$values = $form_state['values'];
$blocks = $form['options']['mefibs']['#blocks'];
if (isset($form_state['view']->form_cache['blocks'])) {
$blocks = $form_state['view']->form_cache['blocks'];
}
foreach ($blocks as $id => $block) {
if ($block['machine_name'] == 'default') {
unset($blocks[$id]);
}
}
// If the #group property is set on the clicked button, that means we are
// modifying a block, not actually updating the settings.
$button = $form_state['triggering_element'];
if (isset($button['#group'])) {
$action = array_pop($button['#parents']);
array_pop($button['#parents']);
$id = array_pop($button['#parents']);
// Store the action arguments to have them accessible in
// options_form().
$form_state['storage']['action'] = $action;
$form_state['storage']['id'] = $id;
switch ($action) {
case 'add':
// New block to be added.
$blocks[] = array(
'name' => $values['mefibs']['add_block']['name'],
'machine_name' => $values['mefibs']['add_block']['machine_name'],
'submit_button' => t('Submit'),
'reset_button' => FALSE,
'reset_button_label' => t('Reset'),
'autosubmit' => FALSE,
'autosubmit_hide' => FALSE,
);
// This is the only working way I have found to clear the input
// values.
$form_state['input']['mefibs']['add_block']['name'] = '';
$form_state['input']['mefibs']['add_block']['machine_name'] = '';
break;
case 'remove':
// Block to be removed.
unset($blocks[$id]);
break;
case 'edit':
// Block to be edited.
break;
case 'save':
// Block to be saved.
$blocks[$id] = array(
'name' => $form_state['input']['mefibs']['blocks'][$id]['name'],
'machine_name' => $form_state['input']['mefibs']['blocks'][$id]['machine_name'],
'submit_button' => $form_state['input']['mefibs']['blocks'][$id]['submit_button'],
'reset_button' => $form_state['input']['mefibs']['blocks'][$id]['reset_button'],
'reset_button_label' => $form_state['input']['mefibs']['blocks'][$id]['reset_button_label'],
'autosubmit' => $form_state['input']['mefibs']['blocks'][$id]['autosubmit'],
'autosubmit_hide' => $form_state['input']['mefibs']['blocks'][$id]['autosubmit_hide'],
);
break;
}
$form_state['rerender'] = TRUE;
$form_state['rebuild'] = TRUE;
$form_state['view']->form_cache = array(
'key' => 'display',
'blocks' => array_values($blocks),
);
}
else {
// Save settings.
if (isset($values['mefibs']['extras'])) {
$extras = $values['mefibs']['extras'];
}
else {
$extras = array(
'sort' => -1,
'items_per_page' => -1,
);
}
$settings = array(
'blocks' => array_values($blocks),
'extras' => array(
'sort' => $extras['sort'] != -1 ? $blocks[$extras['sort']]['machine_name'] : -1,
'items_per_page' => $extras['items_per_page'] != -1 ? $blocks[$extras['items_per_page']]['machine_name'] : -1,
),
);
$mefibs = $this->display
->get_option('mefibs');
if ($mefibs) {
$settings = $settings + $mefibs;
}
// Remove filter associations for deleted blocks.
$block_ids = array(
'default',
);
foreach ($blocks as $block) {
$block_ids[] = $block['machine_name'];
}
mefibs_remove_block_association_recursive($settings[$this->view->current_display], $block_ids);
// Finally, update the mefibs settings for this display.
$this->display
->set_option('mefibs', $settings);
views_ui_cache_set($this->view);
}
}
}