Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Render/BareHtmlPageRenderer.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/Render/BareHtmlPageRenderer.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,76 @@ +<?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; + } + +}