You are here

protected function LayoutBuilder::buildAddSectionLink in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/layout_builder/src/Element/LayoutBuilder.php \Drupal\layout_builder\Element\LayoutBuilder::buildAddSectionLink()
  2. 10 core/modules/layout_builder/src/Element/LayoutBuilder.php \Drupal\layout_builder\Element\LayoutBuilder::buildAddSectionLink()

Builds a link to add a new section at a given delta.

Parameters

\Drupal\layout_builder\SectionStorageInterface $section_storage: The section storage.

int $delta: The delta of the section to splice.

Return value

array A render array for a link.

1 call to LayoutBuilder::buildAddSectionLink()
LayoutBuilder::layout in core/modules/layout_builder/src/Element/LayoutBuilder.php
Renders the Layout UI.

File

core/modules/layout_builder/src/Element/LayoutBuilder.php, line 174

Class

LayoutBuilder
Defines a render element for building the Layout Builder UI.

Namespace

Drupal\layout_builder\Element

Code

protected function buildAddSectionLink(SectionStorageInterface $section_storage, $delta) {
  $storage_type = $section_storage
    ->getStorageType();
  $storage_id = $section_storage
    ->getStorageId();

  // If the delta and the count are the same, it is either the end of the
  // layout or an empty layout.
  if ($delta === count($section_storage)) {
    if ($delta === 0) {
      $title = $this
        ->t('Add section');
    }
    else {
      $title = $this
        ->t('Add section <span class="visually-hidden">at end of layout</span>');
    }
  }
  else {
    if ($delta === 0) {
      $title = $this
        ->t('Add section <span class="visually-hidden">at start of layout</span>');
    }
    else {
      $title = $this
        ->t('Add section <span class="visually-hidden">between @first and @second</span>', [
        '@first' => $delta,
        '@second' => $delta + 1,
      ]);
    }
  }
  return [
    'link' => [
      '#type' => 'link',
      '#title' => $title,
      '#url' => Url::fromRoute('layout_builder.choose_section', [
        'section_storage_type' => $storage_type,
        'section_storage' => $storage_id,
        'delta' => $delta,
      ], [
        'attributes' => [
          'class' => [
            'use-ajax',
            'layout-builder__link',
            'layout-builder__link--add',
          ],
          'data-dialog-type' => 'dialog',
          'data-dialog-renderer' => 'off_canvas',
        ],
      ]),
    ],
    '#type' => 'container',
    '#attributes' => [
      'class' => [
        'layout-builder__add-section',
      ],
      'data-layout-builder-highlight-id' => $this
        ->sectionAddHighlightId($delta),
    ],
  ];
}