danse_moderation_notifications-1.0.x-dev/src/Controller/DanseModerationNotificationsListBuilder.php

src/Controller/DanseModerationNotificationsListBuilder.php
<?php

namespace Drupal\danse_moderation_notifications\Controller;

use Drupal\Core\Config\Entity\ConfigEntityListBuilder;
use Drupal\Core\Entity\EntityInterface;

/**
 * Provides a listing of danse_moderation_notifications entities.
 *
 * List Controllers provide a list of entities in a tabular form. The base
 * class provides most of the rendering logic for us. The key functions
 * we need to override are buildHeader() and buildRow(). These control what
 * columns are displayed in the table, and how each row is displayed
 * respectively.
 *
 * Drupal locates the list controller by looking for the "list" entry under
 * "controllers" in our entity type's annotation. We define the path on which
 * the list may be accessed in our module's *.routing.yml file. The key entry
 * to look for is "_entity_list". In *.routing.yml, "_entity_list" specifies
 * an entity type ID. When a user navigates to the URL for that router item,
 * Drupal loads the annotation for that entity type. It looks for the "list"
 * entry under "controllers" for the class to load.
 *
 * @package Drupal\danse_moderation_notifications\Controller
 *
 * @ingroup danse_moderation_notifications
 */
class DanseModerationNotificationsListBuilder extends ConfigEntityListBuilder {

  /**
   * Builds the header row for the entity listing.
   *
   * @return array
   *   A render array structure of header strings.
   *
   * @see Drupal\Core\Entity\EntityListController::render()
   */
  public function buildHeader() {
    $header['label'] = $this->t('Label');
    $header['workflow'] = $this->t('Workflow');
    $header['status'] = $this->t('Status');
    $header['transition'] = $this->t('Transitions');
    $header['roles'] = $this->t('Email Roles');
    $header['author'] = $this->t('Original Author');
    $header['revision_author'] = $this->t('Revision Author');
    $header['emails'] = $this->t('Adhoc Emails');
    return $header + parent::buildHeader();
  }

  /**
   * Builds a row for an entity in the entity listing.
   *
   * @param \Drupal\Core\Entity\EntityInterface $entity
   *   The entity for which to build the row.
   *
   * @return array
   *   A render array of the table row for displaying the entity.
   *
   * @see Drupal\Core\Entity\EntityListController::render()
   */
  public function buildRow(EntityInterface $entity) {

    // Load the workflow @todo change to dependency injection.
    /** @var \Drupal\workflows\WorkflowInterface $workflow */
    $workflow = \Drupal::entityTypeManager()->getStorage('workflow')->load($entity->workflow);

    // Load the transitions in this workflow.
    $workflow_transitions = $workflow->getTypePlugin()->getTransitions();

    $row = [];

    // Array of transitions used in each row.
    $transition_strings = [];

    // Loop through the saved transitions.
    if ($entity->transitions) {
      $transitions = array_keys(array_filter($entity->transitions));
    }
    foreach ($transitions as $transition) {
      if (!empty($workflow_transitions[$transition])) {
        $transition_strings[] = $workflow_transitions[$transition]->label();
      }
    }

    $row['label'] = $entity->label();
    $row['workflow'] = $workflow->label();
    $row['status'] = $entity->status() ? $this->t('Enabled') : $this->t('Disabled');
    $row['transition'] = implode(', ', $transition_strings);

    $roles = [];
    if ($entity->roles) {
      $roles = array_keys(array_filter($entity->roles));
    }

    $row['roles'] = implode(', ', $roles);
    $row['author'] = $entity->author ? $this->t('Yes') : $this->t('No');
    $row['revision_author'] = $entity->revision_author ? $this->t('Yes') : $this->t('No');
    $row['emails'] = $entity->emails;
    return $row + parent::buildRow($entity);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc