l10n_server-2.x-dev/l10n_server/src/Entity/ListBuilder/L10nServerTranslationListBuilder.php
l10n_server/src/Entity/ListBuilder/L10nServerTranslationListBuilder.php
<?php declare(strict_types=1); namespace Drupal\l10n_server\Entity\ListBuilder; use Drupal\Core\Datetime\DateFormatterInterface; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Entity\EntityListBuilder; use Drupal\Core\Entity\EntityStorageInterface; use Drupal\Core\Entity\EntityTypeInterface; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides a list controller for the translation entity type. */ class L10nServerTranslationListBuilder extends EntityListBuilder { /** * The date formatter service. * * @var \Drupal\Core\Datetime\DateFormatterInterface */ protected DateFormatterInterface $dateFormatter; /** * Constructs a new L10nServerTranslationListBuilder 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. */ public function __construct(EntityTypeInterface $entity_type, EntityStorageInterface $storage, DateFormatterInterface $date_formatter) { parent::__construct($entity_type, $storage); $this->dateFormatter = $date_formatter; } /** * {@inheritdoc} */ public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type): self { return new static( $entity_type, $container->get('entity_type.manager')->getStorage($entity_type->id()), $container->get('date.formatter') ); } /** * {@inheritdoc} */ public function render(): array { $build['table'] = parent::render(); $total = $this->getStorage() ->getQuery() ->accessCheck(TRUE) ->count() ->execute(); $build['summary']['#markup'] = $this->t('Total translations: @total', [ '@total' => $total, ]); return $build; } /** * {@inheritdoc} */ public function buildHeader(): array { $header['id'] = $this->t('ID'); $header['sid'] = $this->t('String ID'); $header['language'] = $this->t('Language'); $header['translation'] = $this->t('Translation'); $header['uid'] = $this->t('User ID'); $header['created'] = $this->t('Created'); $header['changed'] = $this->t('Changed'); $header['suggestion'] = $this->t('Is suggestion'); $header['status'] = $this->t('Status'); return $header + parent::buildHeader(); } /** * {@inheritdoc} */ public function buildRow(EntityInterface $entity): array { /** @var \Drupal\l10n_server\Entity\L10nServerTranslationInterface $entity */ $row['id'] = $entity->id(); $row['sid'] = $entity->getStringId(); $row['language'] = $entity->getLanguage(); $row['translation'] = $entity->getTranslationString(); $row['uid']['data'] = [ '#theme' => 'username', '#account' => $entity->getOwner(), ]; $row['created'] = $this->dateFormatter->format($entity->getCreated()); $row['changed'] = $this->dateFormatter->format($entity->getChanged()); $row['suggestion'] = $entity->isSuggestion(); $row['status'] = $entity->getStatus(); return $row + parent::buildRow($entity); } }