X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fnode%2Fsrc%2FNodeViewBuilder.php;h=43efecb4a4da4911bb1048e032c0161dce21266f;hb=1c1cb0980bfa6caf0c24cce671b6bb541dc87583;hp=f96302bef3b459ea63426e885294b021713d579c;hpb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;p=yaffs-website diff --git a/web/core/modules/node/src/NodeViewBuilder.php b/web/core/modules/node/src/NodeViewBuilder.php index f96302bef..43efecb4a 100644 --- a/web/core/modules/node/src/NodeViewBuilder.php +++ b/web/core/modules/node/src/NodeViewBuilder.php @@ -2,10 +2,8 @@ namespace Drupal\node; -use Drupal\Core\Entity\Display\EntityViewDisplayInterface; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Entity\EntityViewBuilder; -use Drupal\node\Entity\Node; /** * View builder handler for nodes. @@ -29,12 +27,15 @@ class NodeViewBuilder extends EntityViewBuilder { if ($display->getComponent('links')) { $build[$id]['links'] = [ - '#lazy_builder' => [get_called_class() . '::renderLinks', [ - $entity->id(), - $view_mode, - $entity->language()->getId(), - !empty($entity->in_preview), - ]], + '#lazy_builder' => [ + get_called_class() . '::renderLinks', [ + $entity->id(), + $view_mode, + $entity->language()->getId(), + !empty($entity->in_preview), + $entity->isDefaultRevision() ? NULL : $entity->getLoadedRevisionId(), + ], + ], ]; } @@ -45,7 +46,7 @@ class NodeViewBuilder extends EntityViewBuilder { '#title' => t('Language'), '#markup' => $entity->language()->getName(), '#prefix' => '
', - '#suffix' => '
' + '#suffix' => '', ]; } } @@ -76,11 +77,14 @@ class NodeViewBuilder extends EntityViewBuilder { * The language in which the node entity is being viewed. * @param bool $is_in_preview * Whether the node is currently being previewed. + * @param $revision_id + * (optional) The identifier of the node revision to be loaded. If none + * is provided, the default revision will be loaded. * * @return array * A renderable array representing the node links. */ - public static function renderLinks($node_entity_id, $view_mode, $langcode, $is_in_preview) { + public static function renderLinks($node_entity_id, $view_mode, $langcode, $is_in_preview, $revision_id = NULL) { $links = [ '#theme' => 'links__node', '#pre_render' => ['drupal_pre_render_links'], @@ -88,7 +92,10 @@ class NodeViewBuilder extends EntityViewBuilder { ]; if (!$is_in_preview) { - $entity = Node::load($node_entity_id)->getTranslation($langcode); + $storage = \Drupal::entityTypeManager()->getStorage('node'); + /** @var \Drupal\node\NodeInterface $revision */ + $revision = !isset($revision_id) ? $storage->load($node_entity_id) : $storage->loadRevision($revision_id); + $entity = $revision->getTranslation($langcode); $links['node'] = static::buildLinks($entity, $view_mode); // Allow other modules to alter the node links. @@ -139,29 +146,4 @@ class NodeViewBuilder extends EntityViewBuilder { ]; } - /** - * {@inheritdoc} - */ - protected function alterBuild(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display, $view_mode) { - /** @var \Drupal\node\NodeInterface $entity */ - parent::alterBuild($build, $entity, $display, $view_mode); - if ($entity->id()) { - if ($entity->isDefaultRevision()) { - $build['#contextual_links']['node'] = [ - 'route_parameters' => ['node' => $entity->id()], - 'metadata' => ['changed' => $entity->getChangedTime()], - ]; - } - else { - $build['#contextual_links']['node_revision'] = [ - 'route_parameters' => [ - 'node' => $entity->id(), - 'node_revision' => $entity->getRevisionId(), - ], - 'metadata' => ['changed' => $entity->getChangedTime()], - ]; - } - } - } - }