LayoutBuilderDisplayVariant.php in Page Manager 8.4
File
src/Plugin/DisplayVariant/LayoutBuilderDisplayVariant.php
View source
<?php
namespace Drupal\page_manager\Plugin\DisplayVariant;
use Drupal\Core\Display\ContextAwareVariantInterface;
use Drupal\Core\Display\VariantBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\ctools\Plugin\PluginWizardInterface;
use Drupal\layout_builder\LayoutEntityHelperTrait;
use Drupal\layout_builder\SectionStorage\SectionStorageTrait;
use Drupal\page_manager\Form\LayoutBuilderForm;
class LayoutBuilderDisplayVariant extends VariantBase implements PluginWizardInterface, ContextAwareVariantInterface {
use SectionStorageTrait;
use LayoutEntityHelperTrait;
protected $contexts = [];
public function build() {
$build = [];
$contexts = $this
->getContexts();
foreach ($this
->getSections() as $delta => $section) {
$build[$delta] = $section
->toRenderArray($contexts);
}
return $build;
}
public function defaultConfiguration() {
return parent::defaultConfiguration() + [
'sections' => [],
];
}
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
return $form;
}
public function getWizardOperations($cached_values) {
$operations = [];
$operations['layout_builder'] = [
'title' => $this
->t('Layout'),
'form' => LayoutBuilderForm::class,
];
return $operations;
}
protected function setSections(array $sections) {
$this->configuration['sections'] = array_values($sections);
}
public function getSections() {
if (!isset($this->configuration['sections'])) {
$this->configuration['sections'] = [];
}
return $this->configuration['sections'];
}
public function getLayout() {
if (!isset($this->layout)) {
$this->layout = $this->layoutManager
->createInstance($this->configuration['layout'], $this->configuration['layout_settings']);
}
return $this->layout;
}
public function getContexts() {
return $this->contexts;
}
public function setContexts(array $contexts) {
$this->contexts = $contexts;
return $this;
}
}