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.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 = array( 'title' => $this->t('Title'), 'type' => array( 'data' => $this->t('Content type'), 'class' => array(RESPONSIVE_PRIORITY_MEDIUM), ), 'author' => array( 'data' => $this->t('Author'), 'class' => array(RESPONSIVE_PRIORITY_LOW), ), 'status' => $this->t('Status'), 'changed' => array( 'data' => $this->t('Updated'), 'class' => array(RESPONSIVE_PRIORITY_LOW), ), ); if (\Drupal::languageManager()->isMultilingual()) { $header['language_name'] = array( 'data' => $this->t('Language'), 'class' => array(RESPONSIVE_PRIORITY_LOW), ); } return $header + parent::buildHeader(); } /** * {@inheritdoc} */ public function buildRow(EntityInterface $entity) { /** @var \Drupal\node\NodeInterface $entity */ $mark = array( '#theme' => 'mark', '#mark_type' => node_mark($entity->id(), $entity->getChangedTime()), ); $langcode = $entity->language()->getId(); $uri = $entity->urlInfo(); $options = $uri->getOptions(); $options += ($langcode != LanguageInterface::LANGCODE_NOT_SPECIFIED && isset($languages[$langcode]) ? array('language' => $languages[$langcode]) : array()); $uri->setOptions($options); $row['title']['data'] = array( '#type' => 'link', '#title' => $entity->label(), '#suffix' => ' ' . drupal_render($mark), '#url' => $uri, ); $row['type'] = SafeMarkup::checkPlain(node_get_type_label($entity)); $row['author']['data'] = array( '#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($langcode); } $row['operations']['data'] = $this->buildOperations($entity); 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; } }