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 buildHeader() { // Enable language column and filter if multiple languages are added. $header = [ 'title' => $this->t('Title'), 'type' => [ 'data' => $this->t('Content type'), 'class' => [RESPONSIVE_PRIORITY_MEDIUM], ], 'author' => [ 'data' => $this->t('Author'), 'class' => [RESPONSIVE_PRIORITY_LOW], ], 'status' => $this->t('Status'), 'changed' => [ 'data' => $this->t('Updated'), 'class' => [RESPONSIVE_PRIORITY_LOW], ], ]; if (\Drupal::languageManager()->isMultilingual()) { $header['language_name'] = [ 'data' => $this->t('Language'), 'class' => [RESPONSIVE_PRIORITY_LOW], ]; } return $header + parent::buildHeader(); } /** * {@inheritdoc} */ public function buildRow(EntityInterface $entity) { /** @var \Drupal\node\NodeInterface $entity */ $mark = [ '#theme' => 'mark', '#mark_type' => node_mark($entity->id(), $entity->getChangedTime()), ]; $row['title']['data'] = [ '#type' => 'link', '#title' => $entity->label(), '#suffix' => ' ' . \Drupal::service('renderer')->render($mark), '#url' => $entity->toUrl(), ]; $row['type'] = node_get_type_label($entity); $row['author']['data'] = [ '#theme' => 'username', '#account' => $entity->getOwner(), ]; $row['status'] = $entity->isPublished() ? $this->t('published') : $this->t('not published'); $row['changed'] = $this->dateFormatter->format($entity->getChangedTime(), 'short'); $language_manager = \Drupal::languageManager(); if ($language_manager->isMultilingual()) { $row['language_name'] = $language_manager->getLanguageName($entity->language()->getId()); } $row['operations']['data'] = $this->buildOperations($entity); return $row + parent::buildRow($entity); } }