PageManager.php in Bootstrap Layouts 8.5
File
src/Plugin/BootstrapLayouts/PageManager.php
View source
<?php
namespace Drupal\bootstrap_layouts\Plugin\BootstrapLayouts;
use Drupal\bootstrap_layouts\BootstrapLayout;
class PageManager extends BootstrapLayoutsHandlerBase {
public function loadInstances(array $entity_ids = NULL) {
$layouts = [];
$properties = [
'variant' => 'panels_variant',
];
if ($entity_ids) {
$properties['id'] = $entity_ids;
}
$entity_type_manager = $this->container
->get('entity_type.manager');
$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'];
$regions = [];
foreach ($info['blocks'] as $uuid => $block) {
$regions[$block['region']][$uuid] = $block;
}
$settings = isset($info['layout_settings']) ? $info['layout_settings'] : [];
$layouts[$entity_id] = new BootstrapLayout($id, $regions, $settings);
}
}
return $layouts;
}
public function saveInstances(array $layouts = []) {
$entity_type_manager = $this->container
->get('entity_type.manager');
$config_entities = $entity_type_manager
->getStorage('page_variant')
->loadByProperties([
'variant' => 'panels_variant',
'id' => array_keys($layouts),
]);
foreach ($layouts as $entity_id => $layout) {
$config_entity = $config_entities[$entity_id];
$info = $config_entity
->get('variant_settings');
$info['layout'] = $layout
->getId();
$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();
}
}
}
Classes
Name |
Description |
PageManager |
Handles Display Suite specific layout implementations. |