3
0
Fork 0
mirror of https://github.com/farmOS/farmOS.git synced 2024-02-23 11:37:38 +01:00

Issue #3186748: 2.x Navigation menu

This commit is contained in:
Michael Stenta 2020-12-05 16:12:51 -05:00
commit 228d2e6dbb
12 changed files with 157 additions and 1 deletions

View file

@ -17,6 +17,7 @@
],
"require": {
"cweagans/composer-patches": "^1.6",
"drupal/admin_toolbar": "^2.4",
"drupal/core": "~9.1.0",
"drupal/config_rewrite": "^1.3",
"drupal/csv_serialization": "^2.0@beta",

View file

@ -21,6 +21,5 @@ install:
- block
- dblog
- farm_settings
- toolbar
themes:
- claro

View file

@ -0,0 +1,17 @@
<?php
/**
* @file
* The farmOS Dashboard module.
*/
/**
* Implements hook_toolbar_alter().
*/
function farm_dashboard_toolbar_alter(&$items) {
// Rename home item to "Dashboard".
if (!empty($items['home'])) {
$items['home']['tab']['#title'] = t('Dashboard');
}
}

View file

@ -0,0 +1,9 @@
name: farmOS UI Menu
description: Provides farmOS toolbar menu overrides.
type: module
package: farmOS UI
core_version_requirement: ^9
dependencies:
- admin_toolbar:admin_toolbar
- admin_toolbar:admin_toolbar_links_access_filter
- drupal:toolbar

View file

@ -0,0 +1,17 @@
<?php
/**
* @file
* Install, update and uninstall functions for the farm_ui_menu module.
*/
/**
* Implements hook_install().
*/
function farm_ui_menu_install() {
// Delete system menus.
\Drupal::configFactory()->getEditable('system.menu.footer')->delete();
\Drupal::configFactory()->getEditable('system.menu.main')->delete();
\Drupal::configFactory()->getEditable('system.menu.tools')->delete();
}

View file

@ -0,0 +1,9 @@
farm.base:
title: farmOS
menu_name: admin
route_name: '<nolink>'
farm.records:
title: Records
parent: farm.base
route_name: '<front>'
weight: 0

View file

@ -0,0 +1,3 @@
farm_ui_menu:
default_permissions:
- access toolbar

View file

@ -0,0 +1,28 @@
<?php
/**
* @file
* The farmOS UI Menu module.
*/
use Drupal\farm_ui_menu\Render\Element\FarmAdminToolbar;
/**
* Implements hook_menu_links_discovered_alter().
*/
function farm_ui_menu_menu_links_discovered_alter(&$links) {
// Move the root system.admin menu link to the farm.base parent.
if (!empty($links['system.admin'])) {
$links['system.admin']['parent'] = 'farm.base';
}
}
/**
* Implements hook_toolbar_alter().
*/
function farm_ui_menu_toolbar_alter(&$items) {
// Override the toolbar tray prerender method to use farm.base root.
$items['administration']['tray']['toolbar_administration']['#pre_render'] = [[FarmAdminToolbar::class, 'preRenderTray']];
}

View file

@ -0,0 +1,51 @@
<?php
namespace Drupal\farm_ui_menu\Render\Element;
use Drupal\Core\Menu\MenuTreeParameters;
use Drupal\Core\Security\TrustedCallbackInterface;
/**
* Provides a preRenderTray() method for the toolbar that uses farm.base.
*
* @package Drupal\farm_ui_menu\Render\Element
*/
class FarmAdminToolbar implements TrustedCallbackInterface {
/**
* {@inheritdoc}
*/
public static function trustedCallbacks() {
return ['preRenderTray'];
}
/**
* Renders the farmOS toolbar's administration tray.
*
* This is a clone of AdminToolbar::preRenderTray() method, which sets the
* menu root to farm.base instead of system.admin.
*
* @param array $build
* A renderable array.
*
* @return array
* The updated renderable array.
*
* @see \Drupal\admin_toolbar\Render\Element\AdminToolbar::preRenderTray()
*/
public static function preRenderTray(array $build) {
$menu_tree = \Drupal::service('toolbar.menu_tree');
$parameters = new MenuTreeParameters();
$parameters->setRoot('farm.base')->excludeRoot()->setMaxDepth(4)->onlyEnabledLinks();
$tree = $menu_tree->load(NULL, $parameters);
$manipulators = [
['callable' => 'menu.default_tree_manipulators:checkAccess'],
['callable' => 'menu.default_tree_manipulators:generateIndexAndSort'],
['callable' => 'toolbar_tools_menu_navigation_links'],
];
$tree = $menu_tree->transform($tree, $manipulators);
$build['administration_menu'] = $menu_tree->build($tree);
return $build;
}
}

View file

@ -3,6 +3,7 @@ status: true
dependencies:
config:
- image.style.thumbnail
- system.menu.admin
enforced:
module:
- farm_ui_views
@ -798,6 +799,15 @@ display:
display_extenders: { }
path: assets
display_description: ''
menu:
type: normal
title: Assets
description: ''
expanded: true
parent: farm.records
weight: 0
context: '0'
menu_name: admin
cache_metadata:
max-age: 0
contexts:

View file

@ -1,6 +1,8 @@
langcode: en
status: true
dependencies:
config:
- system.menu.admin
enforced:
module:
- farm_ui_views
@ -1975,6 +1977,15 @@ display:
plugin_id: display_link
defaults:
footer: false
menu:
type: normal
title: Logs
description: ''
expanded: true
parent: farm.records
weight: 0
context: '0'
menu_name: admin
cache_metadata:
max-age: 0
contexts:

View file

@ -8,4 +8,5 @@ dependencies:
- date_popup:date_popup
- drupal:rest
- farm:asset
- farm:farm_ui_menu
- log:log