protected function LayoutBuilderUX::buildAdministrativeSection in Layout Builder UX 8
Builds the render array for the layout section while editing.
Parameters
\Drupal\layout_builder\SectionStorageInterface $section_storage: The section storage.
int $delta: The delta of the section.
Return value
array The render array for a given section.
Overrides LayoutBuilder::buildAdministrativeSection
File
- src/
Element/ LayoutBuilderUX.php, line 18
Class
- LayoutBuilderUX
- Alters the Layout Builder UI element.
Namespace
Drupal\lb_ux\ElementCode
protected function buildAdministrativeSection(SectionStorageInterface $section_storage, $delta) {
$build = parent::buildAdministrativeSection($section_storage, $delta);
$section_label = $build['#attributes']['aria-label'];
$build['configure']['#title'] = $this
->t('<span class="visually-hidden">Configure @section</span>', [
'@section' => $section_label,
]);
$build['configure']['#url'] = Url::fromRoute('layout_builder.configure_section_form', $build['configure']['#url']
->getRouteParameters());
$build['remove']['#title'] = $this
->t('<span class="visually-hidden">Remove @section</span>', [
'@section' => $section_label,
]);
$build['actions'] = [
'#type' => 'container',
'#weight' => -100,
'#attributes' => [
'class' => [
'layout-builder__actions',
'layout-builder__actions__section',
],
],
'label' => [
'#type' => 'html_tag',
'#tag' => 'span',
'#attributes' => [
'class' => [
'layout-builder__section-label',
],
],
'content' => [
'#markup' => $section_label,
],
],
'configure' => $build['configure'],
'remove' => $build['remove'],
];
unset($build['configure'], $build['remove'], $build['section_label']);
foreach (Element::children($build['layout-builder__section']) as $region) {
foreach (Element::children($build['layout-builder__section'][$region]) as $uuid) {
if (in_array($uuid, [
'layout_builder_add_block',
'region_label',
])) {
continue 1;
}
$preview_fallback_string = $build['layout-builder__section'][$region][$uuid]['#attributes']['data-layout-content-preview-placeholder-label'];
$route_parameters = $build['layout-builder__section'][$region][$uuid]['#contextual_links']['layout_builder_block']['route_parameters'];
// Remove default contextual links.
unset($build['layout-builder__section'][$region][$uuid]['#contextual_links']['layout_builder_block']);
// Ensure the 'content' key is present, as set by
// \Drupal\layout_builder\EventSubscriber\BlockComponentRenderArray.
assert(isset($build['layout-builder__section'][$region][$uuid]['content']));
// Replace content with actions and previous content.
$build['layout-builder__section'][$region][$uuid]['content'] = [
'actions' => [
'#type' => 'container',
'#attributes' => [
'class' => [
'layout-builder__actions',
'layout-builder__actions__block',
],
'tabindex' => 0,
],
'label' => [
'#type' => 'html_tag',
'#tag' => 'span',
'#attributes' => [
'class' => [
'layout-builder__block-label',
],
],
'content' => [
'#markup' => $preview_fallback_string,
],
],
'move' => [
'#type' => 'link',
'#title' => $this
->t('<span class="visually-hidden">Move @block</span>', [
'@block' => $preview_fallback_string,
]),
'#url' => Url::fromRoute('layout_builder.move_block_form', $route_parameters),
'#attributes' => [
'class' => [
'use-ajax',
'layout-builder__link',
'layout-builder__link--move',
],
'data-dialog-type' => 'dialog',
'data-dialog-renderer' => 'off_canvas',
],
],
'configure' => [
'#type' => 'link',
'#title' => $this
->t('<span class="visually-hidden">Configure @block</span>', [
'@block' => $preview_fallback_string,
]),
'#url' => Url::fromRoute('layout_builder.update_block', $route_parameters),
'#attributes' => [
'class' => [
'use-ajax',
'layout-builder__link',
'layout-builder__link--configure',
],
'data-dialog-type' => 'dialog',
'data-dialog-renderer' => 'off_canvas',
],
],
'remove' => [
'#type' => 'link',
'#title' => $this
->t('<span class="visually-hidden">Remove @block</span>', [
'@block' => $preview_fallback_string,
]),
'#url' => Url::fromRoute('layout_builder.remove_block', $route_parameters),
'#attributes' => [
'class' => [
'use-ajax',
'layout-builder__link',
'layout-builder__link--remove',
],
'data-dialog-type' => 'dialog',
'data-dialog-renderer' => 'off_canvas',
],
],
],
'content' => $build['layout-builder__section'][$region][$uuid]['content'],
];
}
}
return $build;
}