edit_ui-8.x-1.x-dev/modules/edit_ui_block/src/Plugin/DisplayVariant/EditUiBlockPageVariant.php

modules/edit_ui_block/src/Plugin/DisplayVariant/EditUiBlockPageVariant.php
<?php

declare(strict_types = 1);

namespace Drupal\edit_ui_block\Plugin\DisplayVariant;

use Drupal\block\Plugin\DisplayVariant\BlockPageVariant;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * A page display variant that adds decorations for edit_ui_block interface.
 *
 * @PageDisplayVariant(
 *   id = "edit_ui_block_page",
 *   admin_label = @Translation("Page with all regions and blocks")
 * )
 */
class EditUiBlockPageVariant extends BlockPageVariant {

  /**
   * The config factory.
   *
   * @var \Drupal\Core\Config\ConfigFactoryInterface
   */
  protected $configFactory;

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    $instance = parent::create($container, $configuration, $plugin_id, $plugin_definition);
    $instance->configFactory = $container->get('config.factory');
    return $instance;
  }

  /**
   * {@inheritdoc}
   */
  public function build() {
    $build = parent::build();
    $theme = $this->configFactory->get('system.theme')->get('default');
    $visible_regions = system_region_list($theme, REGIONS_VISIBLE);

    foreach (array_keys($visible_regions) as $region) {
      if (empty($build[$region])) {
        $build[$region] = [];
      }

      // Add edit_ui_block region block at the beginning of each visible
      // regions.
      $edit_ui_block_region_block = [
        '#type' => 'container',
        '#attributes' => [
          'class' => [
            'edit-ui__region-block',
            'js-edit-ui__region-block',
          ],
        ],
        'label' => [
          '#type' => 'html_tag',
          '#tag' => 'span',
          '#value' => $visible_regions[$region],
          '#attributes' => [
            'class' => [
              'edit-ui__region-label',
            ],
          ],
        ],
      ];
      array_unshift($build[$region], $edit_ui_block_region_block);

      // Add edit_ui_block filling block at the end of each visible regions.
      $edit_ui_block_filling_block = [
        '#type' => 'html_tag',
        '#tag' => 'div',
        '#attributes' => [
          'class' => [
            'edit-ui__region-placeholder',
          ],
        ],
      ];
      array_push($build[$region], $edit_ui_block_filling_block);
    }

    return $build;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc