diff --git a/core/modules/node/lib/Drupal/node/Controller/NodeController.php b/core/modules/node/lib/Drupal/node/Controller/NodeController.php index fdc41e6..d1ea5da 100644 --- a/core/modules/node/lib/Drupal/node/Controller/NodeController.php +++ b/core/modules/node/lib/Drupal/node/Controller/NodeController.php @@ -32,13 +32,6 @@ public function add(EntityInterface $node_type) { } /** - * @todo Remove node_page_view(). - */ - public function viewPage(NodeInterface $node) { - return node_page_view($node); - } - - /** * @todo Remove node_show(). */ public function revisionShow($node_revision) { diff --git a/core/modules/node/lib/Drupal/node/Controller/NodeView.php b/core/modules/node/lib/Drupal/node/Controller/NodeView.php new file mode 100644 index 0000000..33181d8 --- /dev/null +++ b/core/modules/node/lib/Drupal/node/Controller/NodeView.php @@ -0,0 +1,35 @@ +label()); + } + +} diff --git a/core/modules/node/node.module b/core/modules/node/node.module index e1d2b63..cf31cc4 100644 --- a/core/modules/node/node.module +++ b/core/modules/node/node.module @@ -1477,10 +1477,6 @@ function node_page_view(EntityInterface $node) { $build = node_show($node); - // If there is a menu link to this node, the link becomes the last part - // of the active trail, and the link name becomes the page title. - // Thus, we must explicitly set the page title to be the node title. - $build['#title'] = String::checkPlain($node->label()); return $build; } diff --git a/core/modules/node/node.routing.yml b/core/modules/node/node.routing.yml index 9ba2823..2f8c8ab 100644 --- a/core/modules/node/node.routing.yml +++ b/core/modules/node/node.routing.yml @@ -31,7 +31,8 @@ node.add: node.view: path: '/node/{node}' defaults: - _content: '\Drupal\node\Controller\NodeController::viewPage' + _content: '\Drupal\node\Controller\NodeView::page' + _title_callback: '\Drupal\node\Controller\NodeView::pageTitle' requirements: _entity_access: 'node.view' diff --git a/core/modules/system/lib/Drupal/system/PathBasedBreadcrumbBuilder.php b/core/modules/system/lib/Drupal/system/PathBasedBreadcrumbBuilder.php index 8c7206e..aa18392 100644 --- a/core/modules/system/lib/Drupal/system/PathBasedBreadcrumbBuilder.php +++ b/core/modules/system/lib/Drupal/system/PathBasedBreadcrumbBuilder.php @@ -9,6 +9,7 @@ use Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface; use Drupal\Core\Config\ConfigFactory; +use Drupal\Core\Controller\TitleResolverInterface; use Drupal\Core\Entity\EntityManager; use Drupal\Core\Routing\RequestHelper; use Drupal\Core\StringTranslation\TranslationInterface; @@ -84,6 +85,14 @@ class PathBasedBreadcrumbBuilder implements BreadcrumbBuilderInterface { protected $config; /** + * The title resolver. + * + * @var \Drupal\Core\Controller\TitleResolverInterface + */ + protected $titleResolver; + + + /** * Constructs the PathBasedBreadcrumbBuilder. * * @param \Symfony\Component\HttpFoundation\Request $request @@ -102,8 +111,10 @@ class PathBasedBreadcrumbBuilder implements BreadcrumbBuilderInterface { * The config factory service. * @param \Drupal\Core\Utility\LinkGeneratorInterface $link_generator * The link generator. + * @param \Drupal\Core\Controller\TitleResolverInterface $title_resolver + * The title resolver service. */ - public function __construct(Request $request, EntityManager $entity_manager, AccessManager $access_manager, TranslationInterface $translation, RequestMatcherInterface $router, InboundPathProcessorInterface $path_processor, ConfigFactory $config_factory, LinkGeneratorInterface $link_generator) { + public function __construct(Request $request, EntityManager $entity_manager, AccessManager $access_manager, TranslationInterface $translation, RequestMatcherInterface $router, InboundPathProcessorInterface $path_processor, ConfigFactory $config_factory, LinkGeneratorInterface $link_generator, TitleResolverInterface $title_resolver) { $this->request = $request; $this->accessManager = $access_manager; $this->translation = $translation; @@ -112,6 +123,7 @@ public function __construct(Request $request, EntityManager $entity_manager, Acc $this->pathProcessor = $path_processor; $this->config = $config_factory->get('system.site'); $this->linkGenerator = $link_generator; + $this->titleResolver = $title_resolver; } /** @@ -141,12 +153,8 @@ public function build(array $attributes) { // passing in the request which already has the upcast attributes. $parameters = array(); $access = $this->accessManager->checkNamedRoute($route_name, $parameters, $route_request); - $title = $route_request->attributes->get('_title'); - if ($title) { - $title = $this->t($title); - } - else { - $title = ''; + if ($access) { + $title = $this->titleResolver->getTitle($route_request, $route_request->attributes->get(RouteObjectInterface::ROUTE_OBJECT)); } } // @todo - remove this once all of core is converted to the new router. diff --git a/core/modules/system/system.services.yml b/core/modules/system/system.services.yml index 731c7aa..ae137da 100644 --- a/core/modules/system/system.services.yml +++ b/core/modules/system/system.services.yml @@ -12,7 +12,7 @@ services: - {name: breadcrumb_builder, priority: 500} system.breadcrumb.default: class: Drupal\system\PathBasedBreadcrumbBuilder - arguments: ['@request', '@entity.manager', '@access_manager', '@string_translation', '@router', '@path_processor_manager', '@config.factory', '@link_generator'] + arguments: ['@request', '@entity.manager', '@access_manager', '@string_translation', '@router', '@path_processor_manager', '@config.factory', '@link_generator', '@title_resolver'] tags: - { name: breadcrumb_builder, priority: 0 } path_processor.files: