Version 1
[yaffs-website] / web / core / modules / views / src / Plugin / views / area / Title.php
diff --git a/web/core/modules/views/src/Plugin/views/area/Title.php b/web/core/modules/views/src/Plugin/views/area/Title.php
new file mode 100644 (file)
index 0000000..d6139e0
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+
+namespace Drupal\views\Plugin\views\area;
+
+use Drupal\Core\Form\FormStateInterface;
+
+/**
+ * Views area title override handler.
+ *
+ * @ingroup views_area_handlers
+ *
+ * @ViewsArea("title")
+ */
+class Title extends AreaPluginBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function defineOptions() {
+    $options = parent::defineOptions();
+    $options['title'] = ['default' => ''];
+    return $options;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildOptionsForm(&$form, FormStateInterface $form_state) {
+    parent::buildOptionsForm($form, $form_state);
+
+    $form['title'] = [
+      '#type' => 'textfield',
+      '#title' => $this->t('Overridden title'),
+      '#default_value' => $this->options['title'],
+      '#description' => $this->t('Override the title of this view when it is empty. The available global tokens below can be used here.'),
+    ];
+
+    // Don't use the AreaPluginBase tokenForm method, we don't want row tokens.
+    $this->globalTokenForm($form, $form_state);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function preRender(array $results) {
+    parent::preRender($results);
+
+    // If a title is provided, process it.
+    if (!empty($this->options['title'])) {
+      $value = $this->globalTokenReplace($this->options['title']);
+      $this->view->setTitle($this->sanitizeValue($value, 'xss_admin'));
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function render($empty = FALSE) {
+    // Do nothing for this handler by returning an empty render array.
+    return [];
+  }
+
+}