Chris@0: layoutManager = $layout_manager; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public static function create(ContainerInterface $container) { Chris@0: return new static( Chris@0: $container->get('plugin.manager.core.layout') Chris@0: ); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Choose a layout plugin to add as a section. Chris@0: * Chris@0: * @param \Drupal\layout_builder\SectionStorageInterface $section_storage Chris@0: * The section storage. Chris@0: * @param int $delta Chris@0: * The delta of the section to splice. Chris@0: * Chris@0: * @return array Chris@0: * The render array. Chris@0: */ Chris@0: public function build(SectionStorageInterface $section_storage, $delta) { Chris@0: $items = []; Chris@4: $definitions = $this->layoutManager->getFilteredDefinitions('layout_builder', [], ['section_storage' => $section_storage]); Chris@4: foreach ($definitions as $plugin_id => $definition) { Chris@0: $layout = $this->layoutManager->createInstance($plugin_id); Chris@0: $item = [ Chris@0: '#type' => 'link', Chris@0: '#title' => [ Chris@0: $definition->getIcon(60, 80, 1, 3), Chris@0: [ Chris@0: '#type' => 'container', Chris@0: '#children' => $definition->getLabel(), Chris@0: ], Chris@0: ], Chris@0: '#url' => Url::fromRoute( Chris@0: $layout instanceof PluginFormInterface ? 'layout_builder.configure_section' : 'layout_builder.add_section', Chris@0: [ Chris@0: 'section_storage_type' => $section_storage->getStorageType(), Chris@0: 'section_storage' => $section_storage->getStorageId(), Chris@0: 'delta' => $delta, Chris@0: 'plugin_id' => $plugin_id, Chris@0: ] Chris@0: ), Chris@0: ]; Chris@0: if ($this->isAjax()) { Chris@0: $item['#attributes']['class'][] = 'use-ajax'; Chris@0: $item['#attributes']['data-dialog-type'][] = 'dialog'; Chris@0: $item['#attributes']['data-dialog-renderer'][] = 'off_canvas'; Chris@0: } Chris@0: $items[] = $item; Chris@0: } Chris@0: $output['layouts'] = [ Chris@0: '#theme' => 'item_list', Chris@0: '#items' => $items, Chris@0: '#attributes' => [ Chris@0: 'class' => [ Chris@0: 'layout-selection', Chris@0: ], Chris@5: 'data-layout-builder-target-highlight-id' => $this->sectionAddHighlightId($delta), Chris@0: ], Chris@0: ]; Chris@0: Chris@0: return $output; Chris@0: } Chris@0: Chris@0: }