Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / chi-teck / drupal-code-generator / templates / d8 / plugin / block.twig
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/plugin/block.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/plugin/block.twig
new file mode 100644 (file)
index 0000000..be9280e
--- /dev/null
@@ -0,0 +1,116 @@
+<?php
+
+namespace Drupal\{{ machine_name }}\Plugin\Block;
+
+use Drupal\Core\Access\AccessResult;
+use Drupal\Core\Block\BlockBase;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\Core\Routing\RouteMatchInterface;
+use Drupal\Core\Session\AccountInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Provides a '{{ plugin_label }}' block.
+ *
+ * @Block(
+ *   id = "{{ plugin_id }}",
+ *   admin_label = @Translation("{{ plugin_label }}"),
+ *   category = @Translation("{{ category }}")
+ * )
+ */
+class {{ class }} extends BlockBase implements ContainerFactoryPluginInterface {
+
+  /**
+   * The route match.
+   *
+   * @var \Drupal\Core\Routing\RouteMatchInterface
+   */
+  protected $routeMatch;
+
+  /**
+   * Constructs a new {{ class }} instance.
+   *
+   * @param array $configuration
+   *   The plugin configuration, i.e. an array with configuration values keyed
+   *   by configuration option name. The special key 'context' may be used to
+   *   initialize the defined contexts by setting it to an array of context
+   *   values keyed by context names.
+   * @param string $plugin_id
+   *   The plugin_id for the plugin instance.
+   * @param mixed $plugin_definition
+   *   The plugin implementation definition.
+   * @param \Drupal\Core\Routing\RouteMatchInterface $route_match
+   *   The route match.
+   */
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, RouteMatchInterface $route_match) {
+    parent::__construct($configuration, $plugin_id, $plugin_definition);
+    $this->routeMatch = $route_match;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
+    return new static(
+      $configuration,
+      $plugin_id,
+      $plugin_definition,
+      $container->get('current_route_match')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function defaultConfiguration() {
+    return [
+      'content' => $this->t('Hello world!'),
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function blockForm($form, FormStateInterface $form_state) {
+    $form['content'] = [
+      '#type' => 'textarea',
+      '#title' => $this->t('Block content'),
+      '#default_value' => $this->configuration['content'],
+    ];
+    return $form;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function blockSubmit($form, FormStateInterface $form_state) {
+    $this->configuration['content'] = $form_state->getValue('content');
+  }
+
+  /**
+   * {@inheritdoc}
+   *
+   * @DCG Remove this method of you do not need any access restrictions.
+   */
+  protected function blockAccess(AccountInterface $account) {
+    $route_name = $this->routeMatch->getRouteName();
+    // Display the block only for anonymous users.
+    if ($account->isAnonymous() && $route_name != 'user.register') {
+      return AccessResult::allowed()
+        ->addCacheContexts(['route.name', 'user.roles:anonymous']);
+    }
+    return AccessResult::forbidden();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function build() {
+    $build['content'] = [
+      '#markup' => $this->configuration['content'],
+    ];
+    return $build;
+  }
+
+}