Version 1
[yaffs-website] / web / core / modules / views / src / Plugin / views / argument_default / ArgumentDefaultPluginBase.php
diff --git a/web/core/modules/views/src/Plugin/views/argument_default/ArgumentDefaultPluginBase.php b/web/core/modules/views/src/Plugin/views/argument_default/ArgumentDefaultPluginBase.php
new file mode 100644 (file)
index 0000000..6cea74d
--- /dev/null
@@ -0,0 +1,110 @@
+<?php
+
+namespace Drupal\views\Plugin\views\argument_default;
+
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\views\Plugin\views\argument\ArgumentPluginBase;
+use Drupal\views\Plugin\views\PluginBase;
+
+/**
+ * @defgroup views_argument_default_plugins Views argument default plugins
+ * @{
+ * Plugins for argument defaults in Views.
+ *
+ * Argument default plugins provide default values for contextual filters. This
+ * can be useful for blocks and other display types lacking a natural argument
+ * input. Examples are plugins to extract node and user IDs from the URL.
+ *
+ * Argument default plugins extend
+ * \Drupal\views\Plugin\views\argument_default\ArgumentDefaultPluginBase. They
+ * must be annotated with \Drupal\views\Annotation\ViewsArgumentDefault
+ * annotation, and they must be in namespace directory
+ * Plugin\views\argument_default.
+ *
+ * @ingroup views_plugins
+ * @see plugin_api
+ */
+
+/**
+ * The fixed argument default handler; also used as the base.
+ */
+abstract class ArgumentDefaultPluginBase extends PluginBase {
+
+  /**
+   * The argument handler instance associated with this plugin.
+   *
+   * @var \Drupal\views\Plugin\views\argument\ArgumentPluginBase
+   */
+  protected $argument;
+
+  /**
+   * Return the default argument.
+   *
+   * This needs to be overridden by every default argument handler to properly do what is needed.
+   */
+  public function getArgument() { }
+
+  /**
+   * Sets the parent argument this plugin is associated with.
+   *
+   * @param \Drupal\views\Plugin\views\argument\ArgumentPluginBase $argument
+   *   The parent argument to set.
+   */
+  public function setArgument(ArgumentPluginBase $argument) {
+    $this->argument = $argument;
+  }
+
+  /**
+   * Retrieve the options when this is a new access
+   * control plugin
+   */
+  protected function defineOptions() { return []; }
+
+  /**
+   * Provide the default form for setting options.
+   */
+  public function buildOptionsForm(&$form, FormStateInterface $form_state) { }
+
+  /**
+   * Provide the default form form for validating options
+   */
+  public function validateOptionsForm(&$form, FormStateInterface $form_state) { }
+
+  /**
+   * Provide the default form form for submitting options
+   */
+  public function submitOptionsForm(&$form, FormStateInterface $form_state, &$options = []) { }
+
+  /**
+   * Determine if the administrator has the privileges to use this
+   * plugin
+   */
+  public function access() { return TRUE; }
+
+  /**
+   * If we don't have access to the form but are showing it anyway, ensure that
+   * the form is safe and cannot be changed from user input.
+   *
+   * This is only called by child objects if specified in the buildOptionsForm(),
+   * so it will not always be used.
+   */
+  protected function checkAccess(&$form, $option_name) {
+    if (!$this->access()) {
+      $form[$option_name]['#disabled'] = TRUE;
+      $form[$option_name]['#value'] = $form[$this->option_name]['#default_value'];
+      $form[$option_name]['#description'] .= ' <strong>' . $this->t('Note: you do not have permission to modify this. If you change the default filter type, this setting will be lost and you will NOT be able to get it back.') . '</strong>';
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getCacheTags() {
+    return [];
+  }
+
+}
+
+/**
+ * @}
+ */