BlockController::demo

public BlockController::demo($theme)

Returns a block theme demo page.

Parameters

string $theme: The name of the theme.

Return value

array A #type 'page' render array containing the block region demo.

File

core/modules/block/src/Controller/BlockController.php, line 51

Class

BlockController
Controller routines for admin block routes.

Namespace

Drupal\block\Controller

Code

public function demo($theme) {
  if (!$this->themeHandler->hasUi($theme)) {
    throw new NotFoundHttpException();
  }

  $page = [
    '#title' => Html::escape($this->themeHandler->getName($theme)),
    '#type' => 'page',
    '#attached' => array(
      'drupalSettings' => [
        // The block demonstration page is not marked as an administrative
        // page by \Drupal::service('router.admin_context')->isAdminRoute()
        // function in order to use the frontend theme. Since JavaScript
        // relies on a proper separation of admin pages, it needs to know this
        // is an actual administrative page.
        'path' => ['currentPathIsAdmin' => TRUE],
      ],
      'library' => array(
        'block/drupal.block.admin',
      ),
    ),
  ];

  // Show descriptions in each visible page region, nothing else.
  $visible_regions = $this->getVisibleRegionNames($theme);
  foreach (array_keys($visible_regions) as $region) {
    $page[$region]['block_description'] = array(
      '#type' => 'inline_template',
      '#template' => '<div class="block-region demo-block">{{ region_name }}</div>',
      '#context' => array('region_name' => $visible_regions[$region]),
    );
  }

  return $page;
}
doc_Drupal
2016-10-29 08:47:21
Comments
Leave a Comment

Please login to continue.