Version 1
[yaffs-website] / web / core / modules / taxonomy / src / Plugin / views / field / TermName.php
diff --git a/web/core/modules/taxonomy/src/Plugin/views/field/TermName.php b/web/core/modules/taxonomy/src/Plugin/views/field/TermName.php
new file mode 100644 (file)
index 0000000..0a777e9
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+
+namespace Drupal\taxonomy\Plugin\views\field;
+
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\views\Plugin\views\field\EntityField;
+use Drupal\views\ResultRow;
+
+/**
+ * Displays taxonomy term names and allows converting spaces to hyphens.
+ *
+ * @ingroup views_field_handlers
+ *
+ * @ViewsField("term_name")
+ */
+class TermName extends EntityField {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getItems(ResultRow $values) {
+    $items = parent::getItems($values);
+    if ($this->options['convert_spaces']) {
+      foreach ($items as &$item) {
+        // Replace spaces with hyphens.
+        $name = $item['raw']->get('value')->getValue();
+        // @todo Add link support https://www.drupal.org/node/2567745
+        $item['rendered']['#context']['value'] = str_replace(' ', '-', $name);
+      }
+    }
+    return $items;
+  }
+
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function defineOptions() {
+    $options = parent::defineOptions();
+    $options['convert_spaces'] = ['default' => FALSE];
+    return $options;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildOptionsForm(&$form, FormStateInterface $form_state) {
+    $form['convert_spaces'] = [
+      '#title' => $this->t('Convert spaces in term names to hyphens'),
+      '#type' => 'checkbox',
+      '#default_value' => !empty($this->options['convert_spaces']),
+    ];
+
+    parent::buildOptionsForm($form, $form_state);
+  }
+
+}