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:
commit
228d2e6dbb
|
@ -17,6 +17,7 @@
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"cweagans/composer-patches": "^1.6",
|
"cweagans/composer-patches": "^1.6",
|
||||||
|
"drupal/admin_toolbar": "^2.4",
|
||||||
"drupal/core": "~9.1.0",
|
"drupal/core": "~9.1.0",
|
||||||
"drupal/config_rewrite": "^1.3",
|
"drupal/config_rewrite": "^1.3",
|
||||||
"drupal/csv_serialization": "^2.0@beta",
|
"drupal/csv_serialization": "^2.0@beta",
|
||||||
|
|
|
@ -21,6 +21,5 @@ install:
|
||||||
- block
|
- block
|
||||||
- dblog
|
- dblog
|
||||||
- farm_settings
|
- farm_settings
|
||||||
- toolbar
|
|
||||||
themes:
|
themes:
|
||||||
- claro
|
- claro
|
||||||
|
|
17
modules/core/dashboard/farm_dashboard.module
Normal file
17
modules/core/dashboard/farm_dashboard.module
Normal 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');
|
||||||
|
}
|
||||||
|
}
|
9
modules/ui/menu/farm_ui_menu.info.yml
Normal file
9
modules/ui/menu/farm_ui_menu.info.yml
Normal 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
|
17
modules/ui/menu/farm_ui_menu.install
Normal file
17
modules/ui/menu/farm_ui_menu.install
Normal 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();
|
||||||
|
}
|
9
modules/ui/menu/farm_ui_menu.links.menu.yml
Normal file
9
modules/ui/menu/farm_ui_menu.links.menu.yml
Normal 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
|
|
@ -0,0 +1,3 @@
|
||||||
|
farm_ui_menu:
|
||||||
|
default_permissions:
|
||||||
|
- access toolbar
|
28
modules/ui/menu/farm_ui_menu.module
Normal file
28
modules/ui/menu/farm_ui_menu.module
Normal 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']];
|
||||||
|
}
|
51
modules/ui/menu/src/Render/Element/FarmAdminToolbar.php
Normal file
51
modules/ui/menu/src/Render/Element/FarmAdminToolbar.php
Normal 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -3,6 +3,7 @@ status: true
|
||||||
dependencies:
|
dependencies:
|
||||||
config:
|
config:
|
||||||
- image.style.thumbnail
|
- image.style.thumbnail
|
||||||
|
- system.menu.admin
|
||||||
enforced:
|
enforced:
|
||||||
module:
|
module:
|
||||||
- farm_ui_views
|
- farm_ui_views
|
||||||
|
@ -798,6 +799,15 @@ display:
|
||||||
display_extenders: { }
|
display_extenders: { }
|
||||||
path: assets
|
path: assets
|
||||||
display_description: ''
|
display_description: ''
|
||||||
|
menu:
|
||||||
|
type: normal
|
||||||
|
title: Assets
|
||||||
|
description: ''
|
||||||
|
expanded: true
|
||||||
|
parent: farm.records
|
||||||
|
weight: 0
|
||||||
|
context: '0'
|
||||||
|
menu_name: admin
|
||||||
cache_metadata:
|
cache_metadata:
|
||||||
max-age: 0
|
max-age: 0
|
||||||
contexts:
|
contexts:
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
langcode: en
|
langcode: en
|
||||||
status: true
|
status: true
|
||||||
dependencies:
|
dependencies:
|
||||||
|
config:
|
||||||
|
- system.menu.admin
|
||||||
enforced:
|
enforced:
|
||||||
module:
|
module:
|
||||||
- farm_ui_views
|
- farm_ui_views
|
||||||
|
@ -1975,6 +1977,15 @@ display:
|
||||||
plugin_id: display_link
|
plugin_id: display_link
|
||||||
defaults:
|
defaults:
|
||||||
footer: false
|
footer: false
|
||||||
|
menu:
|
||||||
|
type: normal
|
||||||
|
title: Logs
|
||||||
|
description: ''
|
||||||
|
expanded: true
|
||||||
|
parent: farm.records
|
||||||
|
weight: 0
|
||||||
|
context: '0'
|
||||||
|
menu_name: admin
|
||||||
cache_metadata:
|
cache_metadata:
|
||||||
max-age: 0
|
max-age: 0
|
||||||
contexts:
|
contexts:
|
||||||
|
|
|
@ -8,4 +8,5 @@ dependencies:
|
||||||
- date_popup:date_popup
|
- date_popup:date_popup
|
||||||
- drupal:rest
|
- drupal:rest
|
||||||
- farm:asset
|
- farm:asset
|
||||||
|
- farm:farm_ui_menu
|
||||||
- log:log
|
- log:log
|
||||||
|
|
Loading…
Reference in a new issue