You are here

function views_plugin_display_page::options_validate in Views (for Drupal 7) 6.3

Same name and namespace in other branches
  1. 6.2 plugins/views_plugin_display_page.inc \views_plugin_display_page::options_validate()
  2. 7.3 plugins/views_plugin_display_page.inc \views_plugin_display_page::options_validate()

Validate the options form.

Overrides views_plugin_display::options_validate

File

plugins/views_plugin_display_page.inc, line 466
Contains the page display plugin.

Class

views_plugin_display_page
The plugin that handles a full page.

Code

function options_validate(&$form, &$form_state) {

  // It is very important to call the parent function here:
  parent::options_validate($form, $form_state);
  switch ($form_state['section']) {
    case 'path':
      if (strpos($form_state['values']['path'], '$arg') !== FALSE) {
        form_error($form['path'], t('"$arg" is no longer supported. Use % instead.'));
      }
      if (strpos($form_state['values']['path'], '%') === 0) {
        form_error($form['path'], t('"%" may not be used for the first segment of a path.'));
      }

      // automatically remove '/' from path.
      $form_state['values']['path'] = trim($form_state['values']['path'], '/');
      break;
    case 'menu':
      $path = $this
        ->get_option('path');
      if ($form_state['values']['menu']['type'] == 'normal' && strpos($path, '%') !== FALSE) {
        form_error($form['menu']['type'], t('Views cannot create normal menu items for paths with a % in them.'));
      }
      if ($form_state['values']['menu']['type'] == 'default tab' || $form_state['values']['menu']['type'] == 'tab') {
        $bits = explode('/', $path);
        $last = array_pop($bits);
        if ($last == '%') {
          form_error($form['menu']['type'], t('A display whose path ends with a % cannot be a tab.'));
        }
      }
      if ($form_state['values']['menu']['type'] != 'none' && empty($form_state['values']['menu']['title'])) {
        form_error($form['menu']['title'], t('Title is required for this menu type.'));
      }
      break;
  }
}