12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <?php
- namespace Drupal\Core\Render;
- /**
- * Default bare HTML page renderer.
- */
- class BareHtmlPageRenderer implements BareHtmlPageRendererInterface {
- /**
- * The renderer service.
- *
- * @var \Drupal\Core\Render\Renderer
- */
- protected $renderer;
- /**
- * The HTML response attachments processor service.
- *
- * @var \Drupal\Core\Render\AttachmentsResponseProcessorInterface
- */
- protected $htmlResponseAttachmentsProcessor;
- /**
- * Constructs a new BareHtmlPageRenderer.
- *
- * @param \Drupal\Core\Render\RendererInterface $renderer
- * The renderer service.
- * @param \Drupal\Core\Render\AttachmentsResponseProcessorInterface $html_response_attachments_processor
- * The HTML response attachments processor service.
- */
- public function __construct(RendererInterface $renderer, AttachmentsResponseProcessorInterface $html_response_attachments_processor) {
- $this->renderer = $renderer;
- $this->htmlResponseAttachmentsProcessor = $html_response_attachments_processor;
- }
- /**
- * {@inheritdoc}
- */
- public function renderBarePage(array $content, $title, $page_theme_property, array $page_additions = []) {
- $attributes = [
- 'class' => [
- str_replace('_', '-', $page_theme_property),
- ],
- ];
- $html = [
- '#type' => 'html',
- '#attributes' => $attributes,
- 'page' => [
- '#type' => 'page',
- '#theme' => $page_theme_property,
- '#title' => $title,
- 'content' => $content,
- ] + $page_additions,
- ];
- // For backwards compatibility.
- // @todo In Drupal 9, add a $show_messages function parameter.
- if (!isset($page_additions['#show_messages']) || $page_additions['#show_messages'] === TRUE) {
- $html['page']['highlighted'] = ['#type' => 'status_messages'];
- }
- // Add the bare minimum of attachments from the system module and the
- // current maintenance theme.
- system_page_attachments($html['page']);
- $this->renderer->renderRoot($html);
- $response = new HtmlResponse();
- $response->setContent($html);
- // Process attachments, because this does not go via the regular render
- // pipeline, but will be sent directly.
- $response = $this->htmlResponseAttachmentsProcessor->processAttachments($response);
- return $response;
- }
- }
|