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": {
|
||||
"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",
|
||||
|
|
|
@ -21,6 +21,5 @@ install:
|
|||
- block
|
||||
- dblog
|
||||
- farm_settings
|
||||
- toolbar
|
||||
themes:
|
||||
- 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:
|
||||
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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -8,4 +8,5 @@ dependencies:
|
|||
- date_popup:date_popup
|
||||
- drupal:rest
|
||||
- farm:asset
|
||||
- farm:farm_ui_menu
|
||||
- log:log
|
||||
|
|
Loading…
Reference in a new issue