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