/** * Constructs menus overview page. */ public function menuOverviewPage() { $account = \Drupal::currentUser(); $menu_table = $this->entityTypeManager->getListBuilder('menu')->render(); if ($account->hasPermission('administer menu')) { return $menu_table; } $allowedMenusService = \Drupal::service('menu_admin_per_menu.allowed_menus'); $allowed_menus = $allowedMenusService->getPerMenuPermissions($account); foreach ($menu_table['table']['#rows'] as $menu_key => $menu_item) { if (!isset($allowed_menus["administer {$menu_key} menu items"])) { unset($menu_table['table']['#rows'][$menu_key]); } else { $menu_row =& $menu_table['table']['#rows'][$menu_key]; $menu_operations =& $menu_row['operations']['data']['#links']; $menu_operations['list']['title'] = t('List links'); $menu_operations['list']['url'] = Url::fromRoute('entity.menu.edit_form', array('menu' => $menu_key)); $menu_operations['add']['title'] = t('Add link'); $menu_operations['add']['url'] = Url::fromRoute('entity.menu.add_link_form', array('menu' => $menu_key)); } } return $menu_table; }