class PageManager in Bootstrap Layouts 8.4
Same name and namespace in other branches
- 8.5 src/Plugin/BootstrapLayouts/PageManager.php \Drupal\bootstrap_layouts\Plugin\BootstrapLayouts\PageManager
Handles Display Suite specific layout implementations.
Plugin annotation
@BootstrapLayoutsHandler("page_manager");
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\bootstrap_layouts\Plugin\BootstrapLayouts\BootstrapLayoutsHandlerBase implements BootstrapLayoutsHandlerInterface uses \Symfony\Component\DependencyInjection\ContainerAwareTrait
- class \Drupal\bootstrap_layouts\Plugin\BootstrapLayouts\PageManager
- class \Drupal\bootstrap_layouts\Plugin\BootstrapLayouts\BootstrapLayoutsHandlerBase implements BootstrapLayoutsHandlerInterface uses \Symfony\Component\DependencyInjection\ContainerAwareTrait
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of PageManager
File
- src/
Plugin/ BootstrapLayouts/ PageManager.php, line 12
Namespace
Drupal\bootstrap_layouts\Plugin\BootstrapLayoutsView source
class PageManager extends BootstrapLayoutsHandlerBase {
/**
* {@inheritdoc}
*/
public function loadInstances(array $entity_ids = NULL) {
$layouts = [];
$properties = [
'variant' => 'panels_variant',
];
if ($entity_ids) {
$properties['id'] = $entity_ids;
}
/** @var \Drupal\Core\Entity\EntityTypeManager $entity_type_manager */
$entity_type_manager = $this->container
->get('entity_type.manager');
/** @var \Drupal\Core\Config\Entity\ConfigEntityInterface[] $config_entities */
$config_entities = $entity_type_manager
->getStorage('page_variant')
->loadByProperties($properties);
foreach ($config_entities as $entity_id => $config_entity) {
if (($info = $config_entity
->get('variant_settings')) && isset($info['layout']) && isset($info['blocks'])) {
$id = $info['layout'];
// BootstrapLayout requires an associative array of "items" assigned to
// a particular region, keyed by that region. Unfortunately, Page
// Manager stores this value inside each block array; extract it.
$regions = [];
foreach ($info['blocks'] as $uuid => $block) {
$regions[$block['region']][$uuid] = $block;
}
// Retrieve any layout settings.
$settings = isset($info['layout_settings']) ? $info['layout_settings'] : [];
// Create a new BootstrapLayout instance.
$layouts[$entity_id] = new BootstrapLayout($id, $regions, $settings);
}
}
return $layouts;
}
/**
* {@inheritdoc}
*/
public function saveInstances(array $layouts = []) {
/** @var \Drupal\Core\Entity\EntityTypeManager $entity_type_manager */
$entity_type_manager = $this->container
->get('entity_type.manager');
/** @var \Drupal\Core\Config\Entity\ConfigEntityInterface[] $config_entities */
$config_entities = $entity_type_manager
->getStorage('page_variant')
->loadByProperties([
'variant' => 'panels_variant',
'id' => array_keys($layouts),
]);
/** @var \Drupal\bootstrap_layouts\BootstrapLayout[] $layouts */
foreach ($layouts as $entity_id => $layout) {
$config_entity = $config_entities[$entity_id];
$info = $config_entity
->get('variant_settings');
$info['layout'] = $layout
->getId();
// The region is stored inside the block array. To effectively change
// a region for a block, the variant's blocks must be iterated over and
// changed manually based on the associative region key provided by the
// BootstrapLayout instance.
$info['blocks'] = [];
foreach ($layout
->getRegions() as $region => $blocks) {
foreach ($blocks as $uuid => $block) {
$block['region'] = $region;
$info['blocks'][$uuid] = $block;
}
}
$info['layout_settings'] = $layout
->getSettings();
$config_entity
->set('variant_settings', $info)
->save();
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
BootstrapLayoutsHandlerBase:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
|
BootstrapLayoutsHandlerBase:: |
public | function |
Retrieves the human readable label for the plugin. Overrides BootstrapLayoutsHandlerInterface:: |
|
BootstrapLayoutsHandlerBase:: |
public | function |
Loads a specific layout instance. Overrides BootstrapLayoutsHandlerInterface:: |
|
BootstrapLayoutsHandlerBase:: |
public | function |
Saves a specific layout instance. Overrides BootstrapLayoutsHandlerInterface:: |
|
BootstrapLayoutsHandlerBase:: |
public | function |
Constructs a \Drupal\Component\Plugin\PluginBase object. Overrides PluginBase:: |
|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PageManager:: |
public | function |
Loads layout instances. Overrides BootstrapLayoutsHandlerInterface:: |
|
PageManager:: |
public | function |
Saves layout instances. Overrides BootstrapLayoutsHandlerInterface:: |
|
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |