You are here

class PlaceBlockPageVariant in Drupal 8

Allows blocks to be placed directly within a region.

Plugin annotation


@PageDisplayVariant(
  id = "block_place_page",
  admin_label = @Translation("Page with blocks and place block buttons")
)

Hierarchy

Expanded class hierarchy of PlaceBlockPageVariant

Deprecated

in drupal:8.8.0 and is removed from drupal:9.0.0. See the change record for a list of alternatives.

See also

https://www.drupal.org/node/3081957

File

core/modules/block_place/src/Plugin/DisplayVariant/PlaceBlockPageVariant.php, line 27

Namespace

Drupal\block_place\Plugin\DisplayVariant
View source
class PlaceBlockPageVariant extends BlockPageVariant {

  /**
   * The theme manager.
   *
   * @var \Drupal\Core\Theme\ThemeManagerInterface
   */
  protected $themeManager;

  /**
   * The redirect destination.
   *
   * @var \Drupal\Core\Routing\RedirectDestinationInterface
   */
  protected $redirectDestination;

  /**
   * Constructs a new PlaceBlockPageVariant.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin ID for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin implementation definition.
   * @param \Drupal\block\BlockRepositoryInterface $block_repository
   *   The block repository.
   * @param \Drupal\Core\Entity\EntityViewBuilderInterface $block_view_builder
   *   The block view builder.
   * @param string[] $block_list_cache_tags
   *   The Block entity type list cache tags.
   * @param \Drupal\Core\Theme\ThemeManagerInterface $theme_manager
   *   The theme manager.
   * @param \Drupal\Core\Routing\RedirectDestinationInterface $redirect_destination
   *   The redirect destination.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, BlockRepositoryInterface $block_repository, EntityViewBuilderInterface $block_view_builder, array $block_list_cache_tags, ThemeManagerInterface $theme_manager, RedirectDestinationInterface $redirect_destination) {
    @trigger_error('The ' . __NAMESPACE__ . '\\PlaceBlockPageVariant is deprecated in drupal:8.8.0 and will be removed from drupal:9.0.0. See the change record for a list of alternatives. See https://www.drupal.org/node/3081957.', E_USER_DEPRECATED);
    parent::__construct($configuration, $plugin_id, $plugin_definition, $block_repository, $block_view_builder, $block_list_cache_tags);
    $this->themeManager = $theme_manager;
    $this->redirectDestination = $redirect_destination;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static($configuration, $plugin_id, $plugin_definition, $container
      ->get('block.repository'), $container
      ->get('entity_type.manager')
      ->getViewBuilder('block'), $container
      ->get('entity_type.manager')
      ->getDefinition('block')
      ->getListCacheTags(), $container
      ->get('theme.manager'), $container
      ->get('redirect.destination'));
  }

  /**
   * {@inheritdoc}
   */
  public function build() {
    $build = parent::build();
    $active_theme = $this->themeManager
      ->getActiveTheme();
    $theme_name = $active_theme
      ->getName();
    $destination = $this->redirectDestination
      ->get();
    $visible_regions = $this
      ->getVisibleRegionNames($theme_name);

    // Build an array of the region names in the right order.
    $build += array_fill_keys(array_keys($visible_regions), []);
    foreach ($visible_regions as $region => $region_name) {
      $query = [
        'region' => $region,
      ];
      if ($destination) {
        $query['destination'] = $destination;
      }
      $title = $this
        ->t('<span class="visually-hidden">Place block in the %region region</span>', [
        '%region' => $region_name,
      ]);
      $operations['block_description'] = [
        '#type' => 'inline_template',
        '#template' => '<div class="block-place-region">{{ link }}</div>',
        '#context' => [
          'link' => Link::createFromRoute($title, 'block.admin_library', [
            'theme' => $theme_name,
          ], [
            'query' => $query,
            'attributes' => [
              'title' => $title,
              'class' => [
                'use-ajax',
                'button',
                'button--small',
              ],
              'data-dialog-type' => 'modal',
              'data-dialog-options' => Json::encode([
                'width' => 700,
              ]),
            ],
          ]),
        ],
      ];
      $build[$region] = [
        'block_place_operations' => $operations,
      ] + $build[$region];
    }
    $build['#attached']['library'][] = 'block_place/drupal.block_place';
    return $build;
  }

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

}

Members

Namesort descending Modifiers Type Description Overrides
BlockPageVariant::$blockListCacheTags protected property The Block entity type list cache tags.
BlockPageVariant::$blockRepository protected property The block repository.
BlockPageVariant::$blockViewBuilder protected property The block view builder.
BlockPageVariant::$mainContent protected property The render array representing the main page content.
BlockPageVariant::$title protected property The page title: a string (plain title) or a render array (formatted title).
BlockPageVariant::setMainContent public function Sets the main content for the page being rendered. Overrides PageVariantInterface::setMainContent
BlockPageVariant::setTitle public function Sets the title for the page being rendered. Overrides PageVariantInterface::setTitle
CacheableDependencyTrait::$cacheContexts protected property Cache contexts.
CacheableDependencyTrait::$cacheMaxAge protected property Cache max-age.
CacheableDependencyTrait::$cacheTags protected property Cache tags.
CacheableDependencyTrait::getCacheContexts public function 3
CacheableDependencyTrait::getCacheMaxAge public function 3
CacheableDependencyTrait::getCacheTags public function 3
CacheableDependencyTrait::setCacheability protected function Sets cacheability; useful for value object constructors.
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
DependencyTrait::$dependencies protected property The object's dependencies.
DependencyTrait::addDependencies protected function Adds multiple dependencies.
DependencyTrait::addDependency protected function Adds a dependency.
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PlaceBlockPageVariant::$redirectDestination protected property The redirect destination.
PlaceBlockPageVariant::$themeManager protected property The theme manager.
PlaceBlockPageVariant::build public function Builds and returns the renderable array for the display variant. Overrides BlockPageVariant::build
PlaceBlockPageVariant::create public static function Creates an instance of the plugin. Overrides BlockPageVariant::create
PlaceBlockPageVariant::getVisibleRegionNames protected function Returns the human-readable list of regions keyed by machine name.
PlaceBlockPageVariant::__construct public function Constructs a new PlaceBlockPageVariant. Overrides BlockPageVariant::__construct
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
PluginDependencyTrait::calculatePluginDependencies protected function Calculates and adds dependencies of a specific plugin instance. 1
PluginDependencyTrait::getPluginDependencies protected function Calculates and returns dependencies of a specific plugin instance.
PluginDependencyTrait::moduleHandler protected function Wraps the module handler. 1
PluginDependencyTrait::themeHandler protected function Wraps the theme handler. 1
RefinableCacheableDependencyTrait::addCacheableDependency public function 1
RefinableCacheableDependencyTrait::addCacheContexts public function
RefinableCacheableDependencyTrait::addCacheTags public function
RefinableCacheableDependencyTrait::mergeCacheMaxAge public function
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
VariantBase::access public function Determines if this display variant is accessible. Overrides VariantInterface::access
VariantBase::adminLabel public function Returns the admin-facing display variant label. Overrides VariantInterface::adminLabel
VariantBase::buildConfigurationForm public function Form constructor. Overrides PluginFormInterface::buildConfigurationForm
VariantBase::calculateDependencies public function Calculates dependencies for the configured plugin. Overrides DependentPluginInterface::calculateDependencies
VariantBase::defaultConfiguration public function Gets default configuration for this plugin. Overrides ConfigurableInterface::defaultConfiguration
VariantBase::getConfiguration public function Gets this plugin's configuration. Overrides ConfigurableInterface::getConfiguration
VariantBase::getWeight public function Returns the weight of the display variant. Overrides VariantInterface::getWeight
VariantBase::id public function Returns the unique ID for the display variant. Overrides VariantInterface::id
VariantBase::label public function Returns the user-facing display variant label. Overrides VariantInterface::label
VariantBase::setConfiguration public function Sets the configuration for this plugin instance. Overrides ConfigurableInterface::setConfiguration
VariantBase::setWeight public function Sets the weight of the display variant. Overrides VariantInterface::setWeight
VariantBase::submitConfigurationForm public function Form submission handler. Overrides PluginFormInterface::submitConfigurationForm
VariantBase::validateConfigurationForm public function Form validation handler. Overrides PluginFormInterface::validateConfigurationForm