You are here

public function DisplayPluginBase::optionsSummary in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/views/src/Plugin/views/display/DisplayPluginBase.php \Drupal\views\Plugin\views\display\DisplayPluginBase::optionsSummary()

Provides the default summary for options in the views UI.

This output is returned as an array.

Overrides DisplayPluginInterface::optionsSummary

5 calls to DisplayPluginBase::optionsSummary()
Attachment::optionsSummary in core/modules/views/src/Plugin/views/display/Attachment.php
Provide the summary for attachment options in the views UI.
Block::optionsSummary in core/modules/views/src/Plugin/views/display/Block.php
Provide the summary for page options in the views UI.
DisplayTest::optionsSummary in core/modules/views/tests/modules/views_test_data/src/Plugin/views/display/DisplayTest.php
Provides the default summary for options in the views UI.
EntityReference::optionsSummary in core/modules/views/src/Plugin/views/display/EntityReference.php
Provides the default summary for options in the views UI.
PathPluginBase::optionsSummary in core/modules/views/src/Plugin/views/display/PathPluginBase.php
Provides the default summary for options in the views UI.
5 methods override DisplayPluginBase::optionsSummary()
Attachment::optionsSummary in core/modules/views/src/Plugin/views/display/Attachment.php
Provide the summary for attachment options in the views UI.
Block::optionsSummary in core/modules/views/src/Plugin/views/display/Block.php
Provide the summary for page options in the views UI.
DisplayTest::optionsSummary in core/modules/views/tests/modules/views_test_data/src/Plugin/views/display/DisplayTest.php
Provides the default summary for options in the views UI.
EntityReference::optionsSummary in core/modules/views/src/Plugin/views/display/EntityReference.php
Provides the default summary for options in the views UI.
PathPluginBase::optionsSummary in core/modules/views/src/Plugin/views/display/PathPluginBase.php
Provides the default summary for options in the views UI.

File

core/modules/views/src/Plugin/views/display/DisplayPluginBase.php, line 1060

Class

DisplayPluginBase
Base class for views display plugins.

Namespace

Drupal\views\Plugin\views\display

Code

public function optionsSummary(&$categories, &$options) {
  $categories = [
    'title' => [
      'title' => $this
        ->t('Title'),
      'column' => 'first',
    ],
    'format' => [
      'title' => $this
        ->t('Format'),
      'column' => 'first',
    ],
    'filters' => [
      'title' => $this
        ->t('Filters'),
      'column' => 'first',
    ],
    'fields' => [
      'title' => $this
        ->t('Fields'),
      'column' => 'first',
    ],
    'pager' => [
      'title' => $this
        ->t('Pager'),
      'column' => 'second',
    ],
    'language' => [
      'title' => $this
        ->t('Language'),
      'column' => 'second',
    ],
    'exposed' => [
      'title' => $this
        ->t('Exposed form'),
      'column' => 'third',
      'build' => [
        '#weight' => 1,
      ],
    ],
    'access' => [
      'title' => '',
      'column' => 'second',
      'build' => [
        '#weight' => -5,
      ],
    ],
    'other' => [
      'title' => $this
        ->t('Other'),
      'column' => 'third',
      'build' => [
        '#weight' => 2,
      ],
    ],
  ];
  if ($this->display['id'] != 'default') {
    $options['display_id'] = [
      'category' => 'other',
      'title' => $this
        ->t('Machine Name'),
      'value' => !empty($this->display['new_id']) ? $this->display['new_id'] : $this->display['id'],
      'desc' => $this
        ->t('Change the machine name of this display.'),
    ];
  }
  $display_comment = views_ui_truncate($this
    ->getOption('display_comment'), 80);
  $options['display_comment'] = [
    'category' => 'other',
    'title' => $this
      ->t('Administrative comment'),
    'value' => !empty($display_comment) ? $display_comment : $this
      ->t('None'),
    'desc' => $this
      ->t('Comment or document this display.'),
  ];
  $title = strip_tags($this
    ->getOption('title'));
  if (!$title) {
    $title = $this
      ->t('None');
  }
  $options['title'] = [
    'category' => 'title',
    'title' => $this
      ->t('Title'),
    'value' => views_ui_truncate($title, 32),
    'desc' => $this
      ->t('Change the title that this display will use.'),
  ];
  $style_plugin_instance = $this
    ->getPlugin('style');
  $style_summary = empty($style_plugin_instance->definition['title']) ? $this
    ->t('Missing style plugin') : $style_plugin_instance
    ->summaryTitle();
  $style_title = empty($style_plugin_instance->definition['title']) ? $this
    ->t('Missing style plugin') : $style_plugin_instance
    ->pluginTitle();
  $options['style'] = [
    'category' => 'format',
    'title' => $this
      ->t('Format'),
    'value' => $style_title,
    'setting' => $style_summary,
    'desc' => $this
      ->t('Change the way content is formatted.'),
  ];

  // This adds a 'Settings' link to the style_options setting if the style has
  // options.
  if ($style_plugin_instance
    ->usesOptions()) {
    $options['style']['links']['style_options'] = $this
      ->t('Change settings for this format');
  }
  if ($style_plugin_instance
    ->usesRowPlugin()) {
    $row_plugin_instance = $this
      ->getPlugin('row');
    $row_summary = empty($row_plugin_instance->definition['title']) ? $this
      ->t('Missing row plugin') : $row_plugin_instance
      ->summaryTitle();
    $row_title = empty($row_plugin_instance->definition['title']) ? $this
      ->t('Missing row plugin') : $row_plugin_instance
      ->pluginTitle();
    $options['row'] = [
      'category' => 'format',
      'title' => $this
        ->t('Show'),
      'value' => $row_title,
      'setting' => $row_summary,
      'desc' => $this
        ->t('Change the way each row in the view is styled.'),
    ];

    // This adds a 'Settings' link to the row_options setting if the row style
    // has options.
    if ($row_plugin_instance
      ->usesOptions()) {
      $options['row']['links']['row_options'] = $this
        ->t('Change settings for this style');
    }
  }
  if ($this
    ->usesAJAX()) {
    $options['use_ajax'] = [
      'category' => 'other',
      'title' => $this
        ->t('Use AJAX'),
      'value' => $this
        ->getOption('use_ajax') ? $this
        ->t('Yes') : $this
        ->t('No'),
      'desc' => $this
        ->t('Change whether or not this display will use AJAX.'),
    ];
  }
  if ($this
    ->usesAttachments()) {
    $options['hide_attachment_summary'] = [
      'category' => 'other',
      'title' => $this
        ->t('Hide attachments in summary'),
      'value' => $this
        ->getOption('hide_attachment_summary') ? $this
        ->t('Yes') : $this
        ->t('No'),
      'desc' => $this
        ->t('Change whether or not to display attachments when displaying a contextual filter summary.'),
    ];
  }
  if (!isset($this->definition['contextual links locations']) || !empty($this->definition['contextual links locations'])) {
    $options['show_admin_links'] = [
      'category' => 'other',
      'title' => $this
        ->t('Contextual links'),
      'value' => $this
        ->getOption('show_admin_links') ? $this
        ->t('Shown') : $this
        ->t('Hidden'),
      'desc' => $this
        ->t('Change whether or not to display contextual links for this view.'),
    ];
  }
  $pager_plugin = $this
    ->getPlugin('pager');
  if (!$pager_plugin) {

    // Default to the no pager plugin.
    $pager_plugin = Views::pluginManager('pager')
      ->createInstance('none');
  }
  $pager_str = $pager_plugin
    ->summaryTitle();
  $options['pager'] = [
    'category' => 'pager',
    'title' => $this
      ->t('Use pager'),
    'value' => $pager_plugin
      ->pluginTitle(),
    'setting' => $pager_str,
    'desc' => $this
      ->t("Change this display's pager setting."),
  ];

  // If pagers aren't allowed, change the text of the item.
  if (!$this
    ->usesPager()) {
    $options['pager']['title'] = $this
      ->t('Items to display');
  }
  if ($pager_plugin
    ->usesOptions()) {
    $options['pager']['links']['pager_options'] = $this
      ->t('Change settings for this pager type.');
  }
  if ($this
    ->usesMore()) {
    $options['use_more'] = [
      'category' => 'pager',
      'title' => $this
        ->t('More link'),
      'value' => $this
        ->getOption('use_more') ? $this
        ->t('Yes') : $this
        ->t('No'),
      'desc' => $this
        ->t('Specify whether this display will provide a "more" link.'),
    ];
  }
  $this->view
    ->initQuery();
  if ($this->view->query
    ->getAggregationInfo()) {
    $options['group_by'] = [
      'category' => 'other',
      'title' => $this
        ->t('Use aggregation'),
      'value' => $this
        ->getOption('group_by') ? $this
        ->t('Yes') : $this
        ->t('No'),
      'desc' => $this
        ->t('Allow grouping and aggregation (calculation) of fields.'),
    ];
  }
  $options['query'] = [
    'category' => 'other',
    'title' => $this
      ->t('Query settings'),
    'value' => $this
      ->t('Settings'),
    'desc' => $this
      ->t('Allow to set some advanced settings for the query plugin'),
  ];
  if (\Drupal::languageManager()
    ->isMultilingual() && $this
    ->isBaseTableTranslatable()) {
    $rendering_language_options = $this
      ->buildRenderingLanguageOptions();
    $options['rendering_language'] = [
      'category' => 'language',
      'title' => $this
        ->t('Rendering Language'),
      'value' => $rendering_language_options[$this
        ->getOption('rendering_language')],
      'desc' => $this
        ->t('All content that supports translations will be displayed in the selected language.'),
    ];
  }
  $access_plugin = $this
    ->getPlugin('access');
  if (!$access_plugin) {

    // Default to the no access control plugin.
    $access_plugin = Views::pluginManager('access')
      ->createInstance('none');
  }
  $access_str = $access_plugin
    ->summaryTitle();
  $options['access'] = [
    'category' => 'access',
    'title' => $this
      ->t('Access'),
    'value' => $access_plugin
      ->pluginTitle(),
    'setting' => $access_str,
    'desc' => $this
      ->t('Specify access control type for this display.'),
  ];
  if ($access_plugin
    ->usesOptions()) {
    $options['access']['links']['access_options'] = $this
      ->t('Change settings for this access type.');
  }
  $cache_plugin = $this
    ->getPlugin('cache');
  if (!$cache_plugin) {

    // Default to the no cache control plugin.
    $cache_plugin = Views::pluginManager('cache')
      ->createInstance('none');
  }
  $cache_str = $cache_plugin
    ->summaryTitle();
  $options['cache'] = [
    'category' => 'other',
    'title' => $this
      ->t('Caching'),
    'value' => $cache_plugin
      ->pluginTitle(),
    'setting' => $cache_str,
    'desc' => $this
      ->t('Specify caching type for this display.'),
  ];
  if ($cache_plugin
    ->usesOptions()) {
    $options['cache']['links']['cache_options'] = $this
      ->t('Change settings for this caching type.');
  }
  if ($access_plugin
    ->usesOptions()) {
    $options['access']['links']['access_options'] = $this
      ->t('Change settings for this access type.');
  }
  if ($this
    ->usesLinkDisplay()) {
    $link_display_option = $this
      ->getOption('link_display');
    $link_display = $this
      ->t('None');
    if ($link_display_option == 'custom_url') {
      $link_display = $this
        ->t('Custom URL');
    }
    elseif (!empty($link_display_option)) {
      $display_id = $this
        ->getLinkDisplay();
      $displays = $this->view->storage
        ->get('display');
      if (!empty($displays[$display_id])) {
        $link_display = $displays[$display_id]['display_title'];
      }
    }
    $options['link_display'] = [
      'category' => 'pager',
      'title' => $this
        ->t('Link display'),
      'value' => $link_display,
      'desc' => $this
        ->t('Specify which display or custom URL this display will link to.'),
    ];
  }
  if ($this
    ->usesExposedFormInBlock()) {
    $options['exposed_block'] = [
      'category' => 'exposed',
      'title' => $this
        ->t('Exposed form in block'),
      'value' => $this
        ->getOption('exposed_block') ? $this
        ->t('Yes') : $this
        ->t('No'),
      'desc' => $this
        ->t('Allow the exposed form to appear in a block instead of the view.'),
    ];
  }

  /** @var \Drupal\views\Plugin\views\exposed_form\ExposedFormPluginInterface $exposed_form_plugin */
  $exposed_form_plugin = $this
    ->getPlugin('exposed_form');
  if (!$exposed_form_plugin) {

    // Default to the no cache control plugin.
    $exposed_form_plugin = Views::pluginManager('exposed_form')
      ->createInstance('basic');
  }
  $exposed_form_str = $exposed_form_plugin
    ->summaryTitle();
  $options['exposed_form'] = [
    'category' => 'exposed',
    'title' => $this
      ->t('Exposed form style'),
    'value' => $exposed_form_plugin
      ->pluginTitle(),
    'setting' => $exposed_form_str,
    'desc' => $this
      ->t('Select the kind of exposed filter to use.'),
  ];
  if ($exposed_form_plugin
    ->usesOptions()) {
    $options['exposed_form']['links']['exposed_form_options'] = $this
      ->t('Exposed form settings for this exposed form style.');
  }
  $css_class = trim($this
    ->getOption('css_class'));
  if (!$css_class) {
    $css_class = $this
      ->t('None');
  }
  $options['css_class'] = [
    'category' => 'other',
    'title' => $this
      ->t('CSS class'),
    'value' => $css_class,
    'desc' => $this
      ->t('Change the CSS class name(s) that will be added to this display.'),
  ];
  foreach ($this->extenders as $extender) {
    $extender
      ->optionsSummary($categories, $options);
  }
}