Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / chi-teck / drupal-code-generator / templates / d8 / module / content-entity / src / ExampleListBuilder.php.twig
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/module/content-entity/src/ExampleListBuilder.php.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/module/content-entity/src/ExampleListBuilder.php.twig
new file mode 100644 (file)
index 0000000..0030494
--- /dev/null
@@ -0,0 +1,138 @@
+<?php
+
+namespace Drupal\{{ machine_name }};
+
+use Drupal\Core\Entity\EntityInterface;
+use Drupal\Core\Entity\EntityListBuilder;
+use Drupal\Core\Datetime\DateFormatterInterface;
+use Drupal\Core\Entity\EntityStorageInterface;
+use Drupal\Core\Entity\EntityTypeInterface;
+use Drupal\Core\Routing\RedirectDestinationInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Provides a list controller for the {{ entity_type_label|lower }} entity type.
+ */
+class {{ class_prefix }}ListBuilder extends EntityListBuilder {
+
+  /**
+   * The date formatter service.
+   *
+   * @var \Drupal\Core\Datetime\DateFormatterInterface
+   */
+  protected $dateFormatter;
+
+  /**
+   * The redirect destination service.
+   *
+   * @var \Drupal\Core\Routing\RedirectDestinationInterface
+   */
+  protected $redirectDestination;
+
+  /**
+   * Constructs a new {{ class_prefix }}ListBuilder object.
+   *
+   * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
+   *   The entity type definition.
+   * @param \Drupal\Core\Entity\EntityStorageInterface $storage
+   *   The entity storage class.
+   * @param \Drupal\Core\Datetime\DateFormatterInterface $date_formatter
+   *   The date formatter service.
+   * @param \Drupal\Core\Routing\RedirectDestinationInterface $redirect_destination
+   *   The redirect destination service.
+   */
+  public function __construct(EntityTypeInterface $entity_type, EntityStorageInterface $storage, DateFormatterInterface $date_formatter, RedirectDestinationInterface $redirect_destination) {
+    parent::__construct($entity_type, $storage);
+    $this->dateFormatter = $date_formatter;
+    $this->redirectDestination = $redirect_destination;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
+    return new static(
+      $entity_type,
+      $container->get('entity_type.manager')->getStorage($entity_type->id()),
+      $container->get('date.formatter'),
+      $container->get('redirect.destination')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function render() {
+    $build['table'] = parent::render();
+
+    $total = \Drupal::database()
+      ->query('SELECT COUNT(*) FROM {{ '{' }}{{ entity_type_id }}{{ '}' }}')
+      ->fetchField();
+
+    $build['summary']['#markup'] = $this->t('Total {{ entity_type_label|lower|plural }}: @total', ['@total' => $total]);
+    return $build;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildHeader() {
+    $header['id'] = $this->t('ID');
+{% if title_base_field %}
+    $header['title'] = $this->t('Title');
+{% endif %}
+{% if status_base_field %}
+    $header['status'] = $this->t('Status');
+{% endif %}
+{% if author_base_field %}
+    $header['uid'] = $this->t('Author');
+{% endif %}
+{% if created_base_field %}
+    $header['created'] = $this->t('Created');
+{% endif %}
+{% if changed_base_field %}
+    $header['changed'] = $this->t('Updated');
+{% endif %}
+    return $header + parent::buildHeader();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildRow(EntityInterface $entity) {
+    /* @var $entity \Drupal\{{ machine_name }}\Entity\{{ class_prefix }} */
+    $row['id'] = $entity->{{ title_base_field ? 'id' : 'link' }}();
+{% if title_base_field %}
+    $row['title'] = $entity->link();
+{% endif %}
+{% if status_base_field %}
+    $row['status'] = $entity->isEnabled() ? $this->t('Enabled') : $this->t('Disabled');
+{% endif %}
+{% if author_base_field %}
+    $row['uid']['data'] = [
+      '#theme' => 'username',
+      '#account' => $entity->getOwner(),
+    ];
+{% endif %}
+{% if created_base_field %}
+    $row['created'] = $this->dateFormatter->format($entity->getCreatedTime());
+{% endif %}
+{% if changed_base_field %}
+    $row['changed'] = $this->dateFormatter->format($entity->getChangedTime());
+{% endif %}
+    return $row + parent::buildRow($entity);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function getDefaultOperations(EntityInterface $entity) {
+    $operations = parent::getDefaultOperations($entity);
+    $destination = $this->redirectDestination->getAsArray();
+    foreach ($operations as $key => $operation) {
+      $operations[$key]['query'] = $destination;
+    }
+    return $operations;
+  }
+
+}