protected function MenuItemExtrasViewModesSettingsForm::buildOverviewTreeForm in Menu Item Extras 8.2
Recursive helper function for buildOverviewForm().
Parameters
\Drupal\Core\Menu\MenuLinkTreeElement[] $tree: The tree retrieved by \Drupal\Core\Menu\MenuLinkTreeInterface::load().
int $delta: The default number of menu items used in the menu weight selector is 50.
Return value
array The overview tree form.
1 call to MenuItemExtrasViewModesSettingsForm::buildOverviewTreeForm()
- MenuItemExtrasViewModesSettingsForm::buildOverviewForm in src/
MenuItemExtrasViewModesSettingsForm.php - Form constructor to edit an entire menu tree at once.
File
- src/
MenuItemExtrasViewModesSettingsForm.php, line 229
Class
- MenuItemExtrasViewModesSettingsForm
- Base form for menu view modes settings edit forms.
Namespace
Drupal\menu_item_extrasCode
protected function buildOverviewTreeForm(array $tree, $delta) {
$form =& $this->overviewTreeForm;
$tree_access_cacheability = new CacheableMetadata();
foreach ($tree as $element) {
$tree_access_cacheability = $tree_access_cacheability
->merge(CacheableMetadata::createFromObject($element->access));
// Only render accessible links.
if (!$element->access
->isAllowed()) {
continue;
}
/** @var \Drupal\Core\Menu\MenuLinkInterface $link */
$link = $element->link;
$metadata = $link
->getMetaData();
if ($link && !empty($metadata['entity_id'])) {
$entity_id = $metadata['entity_id'];
$form[$entity_id]['#item'] = $element;
$form[$entity_id]['#attributes'] = $link
->isEnabled() ? [
'class' => [
'menu-enabled',
],
] : [
'class' => [
'menu-disabled',
],
];
$form[$entity_id]['title'] = Link::fromTextAndUrl($link
->getTitle(), $link
->getUrlObject())
->toRenderable();
$form[$entity_id]['entity_id'] = [
'#type' => 'hidden',
'#value' => $entity_id,
];
$form[$entity_id]['parent'] = [
'#type' => 'hidden',
'#default_value' => $link
->getParent(),
];
$options = $this->entityDisplayRepository
->getViewModeOptionsByBundle('menu_link_content', $this->entity
->id());
if (empty($options)) {
$options['default'] = $this
->t('Default');
}
$form[$entity_id]['view_mode'] = [
'#type' => 'select',
'#options' => $options,
'#default_value' => $this->menuLinkTreeHandler
->getMenuLinkItemViewMode($link),
];
}
if ($element->subtree) {
$this
->buildOverviewTreeForm($element->subtree, $delta);
}
}
$tree_access_cacheability
->merge(CacheableMetadata::createFromRenderArray($form))
->applyTo($form);
return $form;
}