diff --git a/core/modules/book/book.module b/core/modules/book/book.module index 356f68b..7d395ee 100644 --- a/core/modules/book/book.module +++ b/core/modules/book/book.module @@ -237,7 +237,7 @@ function book_node_view(array &$build, EntityInterface $node, EntityViewDisplayI } $book_navigation = array( '#theme' => 'book_navigation', '#book_link' => $node->book); $build['book_navigation'] = array( - '#markup' => drupal_render($book_navigation), + '#markup' => \Drupal::service('renderer')->render($book_navigation), '#weight' => 100, '#attached' => [ 'library' => [ @@ -437,7 +437,7 @@ function template_preprocess_book_navigation(&$variables) { } if (!empty($build)) { - drupal_render($build); + \Drupal::service('renderer')->render($build); } $variables['has_links'] = FALSE; @@ -521,7 +521,7 @@ function theme_book_link(array $variables) { $sub_menu = ''; if ($element['#below']) { - $sub_menu = drupal_render($element['#below']); + $sub_menu = \Drupal::service('renderer')->render($element['#below']); } $element['#localized_options']['set_active_class'] = TRUE; /** @var \Drupal\Core\Url $url */ diff --git a/core/modules/book/book.services.yml b/core/modules/book/book.services.yml index 6d024f7..9a609df 100644 --- a/core/modules/book/book.services.yml +++ b/core/modules/book/book.services.yml @@ -9,10 +9,10 @@ services: arguments: ['@entity.manager', '@string_translation', '@config.factory', '@book.outline_storage', '@renderer'] book.outline: class: Drupal\book\BookOutline - arguments: ['@book.manager'] + arguments: ['@book.manager', '@renderer'] book.export: class: Drupal\book\BookExport - arguments: ['@entity.manager', '@book.manager'] + arguments: ['@entity.manager', '@book.manager', '@renderer'] book.outline_storage: class: Drupal\book\BookOutlineStorage arguments: ['@database'] diff --git a/core/modules/book/src/BookExport.php b/core/modules/book/src/BookExport.php index b71c7a0..14fe192 100644 --- a/core/modules/book/src/BookExport.php +++ b/core/modules/book/src/BookExport.php @@ -10,6 +10,7 @@ use Drupal\Core\Entity\EntityManagerInterface; use Drupal\node\Entity\Node; use Drupal\node\NodeInterface; +use Drupal\Core\Render\Renderer; /** * Provides methods for exporting book to different formats. @@ -40,17 +41,27 @@ class BookExport { protected $bookManager; /** + * Rendering service. + * + * @var \Drupal\Core\Render\Renderer + */ + protected $renderer; + + /** * Constructs a BookExport object. * * @param \Drupal\Core\Entity\EntityManagerInterface $entityManager * The entity manager. * @param \Drupal\book\BookManagerInterface $book_manager * The book manager. + * @param \Drupal\Core\Render\Renderer $renderer + * The renderer service. */ - public function __construct(EntityManagerInterface $entityManager, BookManagerInterface $book_manager) { + public function __construct(EntityManagerInterface $entityManager, BookManagerInterface $book_manager, Renderer $renderer) { $this->nodeStorage = $entityManager->getStorage('node'); $this->viewBuilder = $entityManager->getViewBuilder('node'); $this->bookManager = $book_manager; + $this->renderer = $renderer; } /** @@ -118,7 +129,7 @@ protected function exportTraverse(array $tree, $callable) { } } - return drupal_render($build); + return $this->renderer->render($build); } /** @@ -140,7 +151,7 @@ protected function bookNodeExport(NodeInterface $node, $children = '') { unset($build['#theme']); // @todo Rendering should happen in the template using render(). - $node->rendered = drupal_render($build); + $node->rendered = $this->renderer->render($build); return array( '#theme' => 'book_node_export_html', '#node' => $node, diff --git a/core/modules/book/src/BookManager.php b/core/modules/book/src/BookManager.php index 41daf56..bd6d159 100644 --- a/core/modules/book/src/BookManager.php +++ b/core/modules/book/src/BookManager.php @@ -544,7 +544,7 @@ public function bookTreeOutput(array $tree) { $build[$data['link']['nid']] = $element; } if ($build) { - // Make sure drupal_render() does not re-order the links. + // Make sure renderer does not re-order the links. $build['#sorted'] = TRUE; // Add the theme wrapper for outer markup. // Allow book-specific theme overrides. diff --git a/core/modules/book/src/BookManagerInterface.php b/core/modules/book/src/BookManagerInterface.php index db3d1dd..9a18b11 100644 --- a/core/modules/book/src/BookManagerInterface.php +++ b/core/modules/book/src/BookManagerInterface.php @@ -253,7 +253,7 @@ public function deleteFromBook($nid); * A data structure representing the tree as returned from buildBookOutlineData. * * @return array - * A structured array to be rendered by drupal_render(). + * A structured renderable array. * * @todo This was copied from menu_tree_output() but with some changes that * may be obsolete. Attempt to resolve the differences. diff --git a/core/modules/book/src/BookOutline.php b/core/modules/book/src/BookOutline.php index 484fd2c..84a3267 100644 --- a/core/modules/book/src/BookOutline.php +++ b/core/modules/book/src/BookOutline.php @@ -7,6 +7,8 @@ namespace Drupal\book; +use Drupal\Core\Render\Renderer; + /** * Provides handling to render the book outline. */ @@ -20,13 +22,23 @@ class BookOutline { protected $bookManager; /** + * Rendering service. + * + * @var \Drupal\Core\Render\Renderer + */ + protected $renderer; + + /** * Constructs a new BookOutline. * * @param \Drupal\book\BookManagerInterface $book_manager * The book manager. + * @param \Drupal\Core\Render\Renderer $renderer + * The renderer service. */ - public function __construct(BookManagerInterface $book_manager) { + public function __construct(BookManagerInterface $book_manager, Renderer $renderer) { $this->bookManager = $book_manager; + $this->renderer = $renderer; } /** @@ -127,7 +139,7 @@ public function childrenLinks(array $book_link) { if ($children) { $elements = $this->bookManager->bookTreeOutput($children); - return drupal_render($elements); + return $this->renderer->render($elements); } return ''; } diff --git a/core/modules/book/src/Controller/BookController.php b/core/modules/book/src/Controller/BookController.php index 2f89937..d015262 100644 --- a/core/modules/book/src/Controller/BookController.php +++ b/core/modules/book/src/Controller/BookController.php @@ -13,6 +13,7 @@ use Drupal\Core\Url; use Drupal\node\Entity\Node; use Drupal\node\NodeInterface; +use Drupal\Core\Render\Renderer; use Symfony\Component\DependencyInjection\Container; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Response; @@ -38,16 +39,26 @@ class BookController extends ControllerBase { protected $bookExport; /** + * Rendering service. + * + * @var \Drupal\Core\Render\Renderer + */ + protected $renderer; + + /** * Constructs a BookController object. * * @param \Drupal\book\BookManagerInterface $bookManager * The book manager. * @param \Drupal\book\BookExport $bookExport * The book export service. + * @param \Drupal\Core\Render\Renderer $renderer + * The renderer service. */ - public function __construct(BookManagerInterface $bookManager, BookExport $bookExport) { + public function __construct(BookManagerInterface $bookManager, BookExport $bookExport, Renderer $renderer) { $this->bookManager = $bookManager; $this->bookExport = $bookExport; + $this->renderer = $renderer; } /** @@ -56,7 +67,8 @@ public function __construct(BookManagerInterface $bookManager, BookExport $bookE public static function create(ContainerInterface $container) { return new static( $container->get('book.manager'), - $container->get('book.export') + $container->get('book.export'), + $container->get('renderer') ); } @@ -154,7 +166,7 @@ public function bookExport($type, NodeInterface $node) { } $exported_book = $this->bookExport->{$method}($node); - return new Response(drupal_render($exported_book)); + return new Response($this->renderer->render($exported_book)); } } diff --git a/core/modules/book/src/Form/BookAdminEditForm.php b/core/modules/book/src/Form/BookAdminEditForm.php index 9df174d..d7acbcf 100644 --- a/core/modules/book/src/Form/BookAdminEditForm.php +++ b/core/modules/book/src/Form/BookAdminEditForm.php @@ -16,6 +16,7 @@ use Drupal\Core\Render\Element; use Drupal\Core\Url; use Drupal\node\NodeInterface; +use Drupal\Core\Render\Renderer; use Symfony\Component\DependencyInjection\ContainerInterface; /** @@ -38,16 +39,26 @@ class BookAdminEditForm extends FormBase { protected $bookManager; /** + * Rendering service. + * + * @var \Drupal\Core\Render\Renderer + */ + protected $renderer; + + /** * Constructs a new BookAdminEditForm. * * @param \Drupal\Core\Entity\EntityStorageInterface $node_storage * The custom block storage. * @param \Drupal\book\BookManagerInterface $book_manager * The book manager. + * @param \Drupal\Core\Render\Renderer $renderer + * The renderer service. */ - public function __construct(EntityStorageInterface $node_storage, BookManagerInterface $book_manager) { + public function __construct(EntityStorageInterface $node_storage, BookManagerInterface $book_manager, Renderer $renderer) { $this->nodeStorage = $node_storage; $this->bookManager = $book_manager; + $this->renderer = $renderer; } /** @@ -57,7 +68,8 @@ public static function create(ContainerInterface $container) { $entity_manager = $container->get('entity.manager'); return new static( $entity_manager->getStorage('node'), - $container->get('book.manager') + $container->get('book.manager'), + $container->get('renderer') ); } @@ -225,7 +237,7 @@ protected function bookAdminTableTree(array $tree, array &$form) { } $form[$id]['title'] = [ - '#prefix' => !empty($indentation) ? drupal_render($indentation) : '', + '#prefix' => !empty($indentation) ? $this->renderer->render($indentation) : '', '#type' => 'textfield', '#default_value' => $data['link']['title'], '#maxlength' => 255,