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); | |
| } | |
| } |