function views_plugin_display::options_submit

Same name in other branches
  1. 7.x-3.x plugins/views_plugin_display.inc \views_plugin_display::options_submit()

Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data.

Overrides views_plugin::options_submit

3 calls to views_plugin_display::options_submit()
views_plugin_display_attachment::options_submit in plugins/views_plugin_display_attachment.inc
Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data.
views_plugin_display_block::options_submit in plugins/views_plugin_display_block.inc
Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data.
views_plugin_display_page::options_submit in plugins/views_plugin_display_page.inc
Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data.
3 methods override views_plugin_display::options_submit()
views_plugin_display_attachment::options_submit in plugins/views_plugin_display_attachment.inc
Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data.
views_plugin_display_block::options_submit in plugins/views_plugin_display_block.inc
Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data.
views_plugin_display_page::options_submit in plugins/views_plugin_display_page.inc
Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data.

File

plugins/views_plugin_display.inc, line 2053

Class

views_plugin_display
The default display plugin handler. Display plugins handle options and basic mechanisms for different output methods.

Code

function options_submit($form, &$form_state) {
    // Not sure I like this being here, but it seems (?) like a logical place.
    $cache_plugin = $this->get_plugin('cache');
    if ($cache_plugin) {
        $cache_plugin->cache_flush();
    }
    $section = $form_state['section'];
    switch ($section) {
        case 'display_id':
            if (isset($form_state['values']['display_id'])) {
                $this->display->new_id = $form_state['values']['display_id'];
            }
            break;
        case 'display_title':
            $this->display->display_title = $form_state['values']['display_title'];
            $this->set_option('display_description', $form_state['values']['display_description']);
            break;
        case 'access':
            $access = $this->get_option('access');
            if ($access['type'] != $form_state['values']['access']['type']) {
                $plugin = views_get_plugin('access', $form_state['values']['access']['type']);
                if ($plugin) {
                    $access = array(
                        'type' => $form_state['values']['access']['type'],
                    );
                    $this->set_option('access', $access);
                    if (!empty($plugin->definition['uses options'])) {
                        views_ui_add_form_to_stack('display', $this->view, $this->display->id, array(
                            'access_options',
                        ));
                    }
                }
            }
            break;
        case 'access_options':
            $plugin = views_get_plugin('access', $form_state['values'][$section]['type']);
            if ($plugin) {
                $plugin->options_submit($form['access_options'], $form_state);
                $this->set_option('access', $form_state['values'][$section]);
            }
            break;
        case 'cache':
            $cache = $this->get_option('cache');
            if ($cache['type'] != $form_state['values']['cache']['type']) {
                $plugin = views_get_plugin('cache', $form_state['values']['cache']['type']);
                if ($plugin) {
                    $cache = array(
                        'type' => $form_state['values']['cache']['type'],
                    );
                    $this->set_option('cache', $cache);
                    if (!empty($plugin->definition['uses options'])) {
                        views_ui_add_form_to_stack('display', $this->view, $this->display->id, array(
                            'cache_options',
                        ));
                    }
                }
            }
            break;
        case 'cache_options':
            $plugin = views_get_plugin('cache', $form_state['values'][$section]['type']);
            if ($plugin) {
                $plugin->options_submit($form['cache_options'], $form_state);
                $this->set_option('cache', $form_state['values'][$section]);
            }
            break;
        case 'query':
            $plugin = $this->get_plugin('query');
            if ($plugin) {
                $plugin->options_submit($form['query']['options'], $form_state);
                $this->set_option('query', $form_state['values'][$section]);
            }
            break;
        case 'link_display':
            $this->set_option('link_url', $form_state['values']['link_url']);
        case 'title':
        case 'css_class':
        case 'display_comment':
            $this->set_option($section, $form_state['values'][$section]);
            break;
        case 'enabled':
        case 'use_ajax':
        case 'hide_attachment_summary':
            $this->set_option($section, (bool) $form_state['values'][$section]);
            break;
        case 'use_more':
            $this->set_option($section, intval($form_state['values'][$section]));
            $this->set_option('use_more_always', !intval($form_state['values']['use_more_always']));
            $this->set_option('use_more_text', $form_state['values']['use_more_text']);
            break;
        case 'group_by':
            $this->set_option($section, $form_state['values'][$section]);
            break;
        case 'row_plugin':
            // This if prevents resetting options to default if they don't change
            // the plugin.
            if ($this->get_option($section) != $form_state['values'][$section]) {
                $plugin = views_get_plugin('row', $form_state['values'][$section]);
                if ($plugin) {
                    $this->set_option($section, $form_state['values'][$section]);
                    $this->set_option('row_options', array());
                    // send ajax form to options page if we use it.
                    if (!empty($plugin->definition['uses options'])) {
                        views_ui_add_form_to_stack('display', $this->view, $this->display->id, array(
                            'row_options',
                        ));
                    }
                }
            }
            break;
        case 'style_plugin':
            // This if prevents resetting options to default if they don't change
            // the plugin.
            if ($this->get_option($section) != $form_state['values'][$section]) {
                $plugin = views_get_plugin('style', $form_state['values'][$section]);
                if ($plugin) {
                    $this->set_option($section, $form_state['values'][$section]);
                    $this->set_option('style_options', array());
                    // send ajax form to options page if we use it.
                    if (!empty($plugin->definition['uses options'])) {
                        views_ui_add_form_to_stack('display', $this->view, $this->display->id, array(
                            'style_options',
                        ));
                    }
                }
            }
            break;
        case 'style_options':
            $style = TRUE;
        case 'row_options':
            // if row, $style will be empty.
            $plugin = $this->get_plugin(empty($style) ? 'row' : 'style');
            if ($plugin) {
                $plugin->options_submit($form[$section], $form_state);
            }
            $this->set_option($section, $form_state['values'][$section]);
            break;
        case 'exposed_block':
            $this->set_option($section, (bool) $form_state['values'][$section]);
            break;
        case 'exposed_form':
            $exposed_form = $this->get_option('exposed_form');
            if ($exposed_form['type'] != $form_state['values']['exposed_form']['type']) {
                $plugin = views_get_plugin('exposed_form', $form_state['values']['exposed_form']['type']);
                if ($plugin) {
                    $exposed_form = array(
                        'type' => $form_state['values']['exposed_form']['type'],
                        'options' => array(),
                    );
                    $this->set_option('exposed_form', $exposed_form);
                    if (!empty($plugin->definition['uses options'])) {
                        views_ui_add_form_to_stack('display', $this->view, $this->display->id, array(
                            'exposed_form_options',
                        ));
                    }
                }
            }
            break;
        case 'exposed_form_options':
            $plugin = $this->get_plugin('exposed_form');
            if ($plugin) {
                $exposed_form = $this->get_option('exposed_form');
                $plugin->options_submit($form['exposed_form_options'], $form_state);
                $exposed_form['options'] = $form_state['values'][$section];
                $this->set_option('exposed_form', $exposed_form);
            }
            break;
        case 'pager':
            $pager = $this->get_option('pager');
            if ($pager['type'] != $form_state['values']['pager']['type']) {
                $plugin = views_get_plugin('pager', $form_state['values']['pager']['type']);
                if ($plugin) {
                    // Because pagers have very similar options, let's allow pagers to
                    // try to carry the options over.
                    $plugin->init($this->view, $this->display, $pager['options']);
                    $pager = array(
                        'type' => $form_state['values']['pager']['type'],
                        'options' => $plugin->options,
                    );
                    $this->set_option('pager', $pager);
                    if (!empty($plugin->definition['uses options'])) {
                        views_ui_add_form_to_stack('display', $this->view, $this->display->id, array(
                            'pager_options',
                        ));
                    }
                }
            }
            break;
        case 'pager_options':
            $plugin = $this->get_plugin('pager');
            if ($plugin) {
                $pager = $this->get_option('pager');
                $plugin->options_submit($form['pager_options'], $form_state);
                $pager['options'] = $form_state['values'][$section];
                $this->set_option('pager', $pager);
            }
            break;
    }
    foreach ($this->extender as $extender) {
        $extender->options_submit($form, $form_state);
    }
}