Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
CRAP | |
0.00% |
0 / 33 |
| BlockController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
42 | |
0.00% |
0 / 33 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| demo | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 25 |
|||
| getVisibleRegionNames | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\block\Controller\BlockController. | |
| */ | |
| namespace Drupal\block\Controller; | |
| use Drupal\Component\Utility\Html; | |
| use Drupal\Core\Controller\ControllerBase; | |
| use Drupal\Core\Extension\ThemeHandlerInterface; | |
| use Symfony\Component\DependencyInjection\ContainerInterface; | |
| use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | |
| /** | |
| * Controller routines for admin block routes. | |
| */ | |
| class BlockController extends ControllerBase { | |
| /** | |
| * The theme handler. | |
| * | |
| * @var \Drupal\Core\Extension\ThemeHandlerInterface | |
| */ | |
| protected $themeHandler; | |
| /** | |
| * Constructs a new BlockController instance. | |
| * | |
| * @param \Drupal\Core\Extension\ThemeHandlerInterface $theme_handler | |
| * The theme handler. | |
| */ | |
| public function __construct(ThemeHandlerInterface $theme_handler) { | |
| $this->themeHandler = $theme_handler; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function create(ContainerInterface $container) { | |
| return new static( | |
| $container->get('theme_handler') | |
| ); | |
| } | |
| /** | |
| * Returns a block theme demo page. | |
| * | |
| * @param string $theme | |
| * The name of the theme. | |
| * | |
| * @return array | |
| * A #type 'page' render array containing the block region demo. | |
| */ | |
| 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; | |
| } | |
| /** | |
| * Returns the human-readable list of regions keyed by machine name. | |
| * | |
| * @param string $theme | |
| * The name of the theme. | |
| * | |
| * @return array | |
| * An array of human-readable region names keyed by machine name. | |
| */ | |
| protected function getVisibleRegionNames($theme) { | |
| return system_region_list($theme, REGIONS_VISIBLE); | |
| } | |
| } |