You are here

function view_mode_page_form_alter in View Mode Page 7

Same name and namespace in other branches
  1. 8 view_mode_page.module \view_mode_page_form_alter()
  2. 8.2 view_mode_page.module \view_mode_page_form_alter()
  3. 7.2 view_mode_page.module \view_mode_page_form_alter()

Implements hook_page_alter().

Add the tab to additional settings.

File

./view_mode_page.module, line 26
View Mode Page module allows users to add a page for a specific view mode.

Code

function view_mode_page_form_alter(&$form, $form_state, $form_id) {
  $is_node_page = isset($form['#entity_type']) && $form['#entity_type'] == 'node';
  $is_display_overview = isset($form['#id']) && $form['#id'] == 'field-ui-display-overview-form';
  if (!$is_node_page || $is_node_page && !$is_display_overview) {
    return;
  }

  // Add additional settings vertical tab, if it does not currently exist.
  // This code was borrowed from display suite
  if (!isset($form['additional_settings'])) {
    $form['additional_settings'] = array(
      '#type' => 'vertical_tabs',
      '#theme_wrappers' => array(
        'vertical_tabs',
      ),
      '#prefix' => '<div>',
      '#suffix' => '</div>',
      '#tree' => TRUE,
    );
    $form['#attached']['js'][] = 'misc/form.js';
    $form['#attached']['js'][] = 'misc/collapse.js';
  }

  // Add tab to the additional_settings.
  $form['additional_settings']['view_mode_page_settings'] = array(
    '#type' => 'fieldset',
    '#title' => t('View mode pages'),
    '#collapsible' => TRUE,
    '#collapsed' => TRUE,
    '#weight' => 10,
  );
  $form['additional_settings']['view_mode_page_settings']['view_mode_page_url_pattern'] = array(
    '#type' => 'textfield',
    '#title' => t('URL Pattern'),
    '#description' => t('Provide a URL pattern for the page that will display view mode'),
  );
  $form['additional_settings']['view_mode_page_settings']['view_mode_page_show_title'] = array(
    '#type' => 'checkbox',
    '#title' => t('Show title on the view mode page'),
    '#description' => t('This option will show the title on the view mode page. By default, this will be the node title or the title provided below'),
  );
  $form['additional_settings']['view_mode_page_settings']['view_mode_page_title'] = array(
    '#type' => 'textfield',
    '#title' => t('Title'),
    '#maxlength' => 200,
    '#description' => 'Specify an alternate title for the view mode page. You may include tokens as they relate to the node (e.g., <code>[node:title]</code>). <strong>The show title option must be on for this to show up!</strong>',
  );

  // Get the value from the database and set it here.
  $definitions = view_mode_page_get_patterns($form['#bundle'], $form['#view_mode']);
  if (isset($definitions[0])) {
    $form['additional_settings']['view_mode_page_settings']['view_mode_page_url_pattern']['#default_value'] = $definitions[0]->url_pattern;
    $form['additional_settings']['view_mode_page_settings']['view_mode_page_show_title']['#default_value'] = $definitions[0]->show_title;
    $form['additional_settings']['view_mode_page_settings']['view_mode_page_title']['#default_value'] = $definitions[0]->title;
  }
  $form['#submit'][] = 'view_mode_page_form_submit';
}