mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-04-15 17:24:10 +00:00
Every main_menu entry moves from numeric group (1/2/3) to string-based group + group_label + priority. Groups now carry their own i18n label and child entries are sorted by an explicit priority field instead of config-array order, so module-contributed menu items can slot into any existing group at any position.
BootstrapController merges module-registered menu items into main_menu (previously they lived in a separate module_menu response key) and introduces a user_menu response key for items modules want to place in the avatar dropdown. The global store follows suit: moduleMenu becomes userMenu, menuGroups is a computed that sorts by priority, and hasActiveModules drops out.
New admin Appearance setting page with a single toggle for whether sidebar group labels render — so instances that prefer a compact sidebar can hide the Documents/Administration/Modules headings without losing the grouping itself. CompanyLayout watches route meta and re-bootstraps when the admin-mode flag flips so the sidebar repaints with the right menu on navigation across the admin boundary.
Test suites updated: module menu merging is asserted against main_menu (name: 'module-{slug}') rather than the old module_menu response; HelloWorldIntegrationTest verifies the schema translation path; CompanyModulesIndexTest covers the display_name attachment.
31 lines
811 B
PHP
31 lines
811 B
PHP
<?php
|
|
|
|
namespace App\Traits;
|
|
|
|
trait GeneratesMenuTrait
|
|
{
|
|
public function generateMenu($key, $user)
|
|
{
|
|
$new_items = [];
|
|
|
|
$menu = \Menu::get($key);
|
|
$items = $menu ? $menu->items->toArray() : [];
|
|
|
|
foreach ($items as $data) {
|
|
if ($user->checkAccess($data)) {
|
|
$new_items[] = [
|
|
'title' => $data->title,
|
|
'link' => $data->link->path['url'],
|
|
'icon' => $data->data['icon'],
|
|
'name' => $data->data['name'],
|
|
'group' => $data->data['group'],
|
|
'group_label' => $data->data['group_label'] ?? '',
|
|
'priority' => $data->data['priority'] ?? 100,
|
|
];
|
|
}
|
|
}
|
|
|
|
return $new_items;
|
|
}
|
|
}
|