From 3d48bf43455b43b1ebe0d08435d5af0cb0f07ace Mon Sep 17 00:00:00 2001 From: denisdulici Date: Sat, 30 Nov 2019 01:35:28 +0300 Subject: [PATCH] moved menus to listeners --- app/Events/Menu/AdminCreating.php | 22 ----- app/Events/Menu/PortalCreating.php | 22 ----- app/Http/Middleware/AdminMenu.php | 118 +---------------------- app/Http/Middleware/PortalMenu.php | 19 +--- app/Listeners/Menu/AddAdminItems.php | 131 ++++++++++++++++++++++++++ app/Listeners/Menu/AddPortalItems.php | 28 ++++++ app/Providers/Event.php | 6 ++ 7 files changed, 169 insertions(+), 177 deletions(-) delete mode 100644 app/Events/Menu/AdminCreating.php delete mode 100644 app/Events/Menu/PortalCreating.php create mode 100644 app/Listeners/Menu/AddAdminItems.php create mode 100644 app/Listeners/Menu/AddPortalItems.php diff --git a/app/Events/Menu/AdminCreating.php b/app/Events/Menu/AdminCreating.php deleted file mode 100644 index 1d247898e..000000000 --- a/app/Events/Menu/AdminCreating.php +++ /dev/null @@ -1,22 +0,0 @@ -menu = $menu; - } -} diff --git a/app/Events/Menu/PortalCreating.php b/app/Events/Menu/PortalCreating.php deleted file mode 100644 index bdea90535..000000000 --- a/app/Events/Menu/PortalCreating.php +++ /dev/null @@ -1,22 +0,0 @@ -menu = $menu; - } -} diff --git a/app/Http/Middleware/AdminMenu.php b/app/Http/Middleware/AdminMenu.php index 9f9930f69..a627a9dc9 100644 --- a/app/Http/Middleware/AdminMenu.php +++ b/app/Http/Middleware/AdminMenu.php @@ -2,7 +2,7 @@ namespace App\Http\Middleware; -use App\Models\Common\Dashboard; +use App\Events\Menu\AdminCreated; use Closure; class AdminMenu @@ -21,124 +21,10 @@ class AdminMenu return $next($request); } - // Setup the admin menu menu()->create('admin', function ($menu) { - event(new \App\Events\Menu\AdminCreating($menu)); - $menu->style('argon'); - $user = user(); - $attr = ['icon' => '']; - - // Dashboard - $dashboards = Dashboard::getByUser($user->id); - - if ($dashboards->count() > 1) { - $menu->dropdown(trim(trans_choice('general.dashboards', 2)), function ($sub) use ($user, $attr, $dashboards) { - foreach ($dashboards as $key => $dashboard) { - $path = (session('dashboard_id') == $dashboard->id) ? '/' : '/?dashboard_id=' . $dashboard->id; - - $sub->url($path, $dashboard->name, $key, $attr); - } - }, 1, [ - 'url' => '/', - 'title' => trans_choice('general.incomes', 2), - 'icon' => 'fa fa-tachometer-alt', - ]); - } else { - $menu->add([ - 'url' => '/', - 'title' => trans_choice('general.dashboards', 1), - 'icon' => 'fa fa-tachometer-alt', - 'order' => 1, - ]); - } - - // Items - if ($user->can('read-common-items')) { - $menu->route('items.index', trans_choice('general.items', 2), [], 2, ['icon' => 'fa fa-cube']); - } - - // Incomes - if ($user->can(['read-incomes-invoices', 'read-incomes-revenues', 'read-incomes-customers'])) { - $menu->dropdown(trim(trans_choice('general.incomes', 2)), function ($sub) use ($user, $attr) { - if ($user->can('read-incomes-invoices')) { - $sub->route('invoices.index', trans_choice('general.invoices', 2), [], 1, $attr); - } - - if ($user->can('read-incomes-revenues')) { - $sub->route('revenues.index', trans_choice('general.revenues', 2), [], 2, $attr); - } - - if ($user->can('read-incomes-customers')) { - $sub->route('customers.index', trans_choice('general.customers', 2), [], 3, $attr); - } - }, 3, [ - 'title' => trans_choice('general.incomes', 2), - 'icon' => 'fa fa-money-bill', - ]); - } - - // Expenses - if ($user->can(['read-expenses-bills', 'read-expenses-payments', 'read-expenses-vendors'])) { - $menu->dropdown(trim(trans_choice('general.expenses', 2)), function ($sub) use ($user, $attr) { - if ($user->can('read-expenses-bills')) { - $sub->route('bills.index', trans_choice('general.bills', 2), [], 1, $attr); - } - - if ($user->can('read-expenses-payments')) { - $sub->route('payments.index', trans_choice('general.payments', 2), [], 2, $attr); - } - - if ($user->can('read-expenses-vendors')) { - $sub->route('vendors.index', trans_choice('general.vendors', 2), [], 3, $attr); - } - }, 4, [ - 'title' => trans_choice('general.expenses', 2), - 'icon' => 'fa fa-shopping-cart', - ]); - } - - // Banking - if ($user->can(['read-banking-accounts', 'read-banking-transfers', 'read-banking-transactions', 'read-banking-reconciliations'])) { - $menu->dropdown(trim(trans('general.banking')), function ($sub) use ($user, $attr) { - if ($user->can('read-banking-accounts')) { - $sub->route('accounts.index', trans_choice('general.accounts', 2), [], 1, $attr); - } - - if ($user->can('read-banking-transfers')) { - $sub->route('transfers.index', trans_choice('general.transfers', 2), [], 2, $attr); - } - - if ($user->can('read-banking-transactions')) { - $sub->route('transactions.index', trans_choice('general.transactions', 2), [], 3, $attr); - } - - if ($user->can('read-banking-reconciliations')) { - $sub->route('reconciliations.index', trans_choice('general.reconciliations', 2), [], 4, $attr); - } - }, 5, [ - 'title' => trans('general.banking'), - 'icon' => 'fa fa-briefcase', - ]); - } - - // Reports - if ($user->can('read-common-reports')) { - $menu->route('reports.index', trans_choice('general.reports', 2), [], 6, ['icon' => 'fa fa-chart-pie']); - } - - // Settings - if ($user->can('read-settings-settings')) { - $menu->route('settings.index', trans_choice('general.settings', 2), [], 7, ['icon' => 'fa fa-cog']); - } - - // Apps - if ($user->can('read-modules-home')) { - $menu->route('apps.home.index', trans_choice('general.modules', 2), [], 8, ['icon' => 'fa fa-rocket']); - } - - event(new \App\Events\Menu\AdminCreated($menu)); + event(new AdminCreated($menu)); }); return $next($request); diff --git a/app/Http/Middleware/PortalMenu.php b/app/Http/Middleware/PortalMenu.php index 86d6283c5..483889726 100644 --- a/app/Http/Middleware/PortalMenu.php +++ b/app/Http/Middleware/PortalMenu.php @@ -2,6 +2,7 @@ namespace App\Http\Middleware; +use App\Events\Menu\PortalCreated; use Closure; class PortalMenu @@ -21,25 +22,9 @@ class PortalMenu } menu()->create('portal', function ($menu) { - event(new \App\Events\Menu\PortalCreating($menu)); - $menu->style('argon'); - $user = user(); - - // Dashboard - $menu->route('portal.dashboard', trans_choice('general.dashboards', 1), [], 1, ['icon' => 'fa fa-tachometer-alt']); - - // Invoices - $menu->route('portal.invoices.index', trans_choice('general.invoices', 2), [], 2, ['icon' => 'fa fa-money-bill']); - - // Payments - $menu->route('portal.payments.index', trans_choice('general.payments', 2), [], 3, ['icon' => 'fa fa-shopping-cart']); - - // Transactions - $menu->route('portal.transactions.index', trans_choice('general.transactions', 2), [], 4, ['icon' => 'fa fa-briefcase']); - - event(new \App\Events\Menu\PortalCreated($menu)); + event(new PortalCreated($menu)); }); return $next($request); diff --git a/app/Listeners/Menu/AddAdminItems.php b/app/Listeners/Menu/AddAdminItems.php new file mode 100644 index 000000000..9b125c66c --- /dev/null +++ b/app/Listeners/Menu/AddAdminItems.php @@ -0,0 +1,131 @@ +menu; + + $user = user(); + $attr = ['icon' => '']; + + // Dashboard + $dashboards = Dashboard::getByUser($user->id); + + if ($dashboards->count() > 1) { + $menu->dropdown(trim(trans_choice('general.dashboards', 2)), function ($sub) use ($user, $attr, $dashboards) { + foreach ($dashboards as $key => $dashboard) { + $path = (session('dashboard_id') == $dashboard->id) ? '/' : '/?dashboard_id=' . $dashboard->id; + + $sub->url($path, $dashboard->name, $key, $attr); + } + }, 1, [ + 'url' => '/', + 'title' => trans_choice('general.incomes', 2), + 'icon' => 'fa fa-tachometer-alt', + ]); + } else { + $menu->add([ + 'url' => '/', + 'title' => trans_choice('general.dashboards', 1), + 'icon' => 'fa fa-tachometer-alt', + 'order' => 1, + ]); + } + + // Items + if ($user->can('read-common-items')) { + $menu->route('items.index', trans_choice('general.items', 2), [], 2, ['icon' => 'fa fa-cube']); + } + + // Incomes + if ($user->can(['read-incomes-invoices', 'read-incomes-revenues', 'read-incomes-customers'])) { + $menu->dropdown(trim(trans_choice('general.incomes', 2)), function ($sub) use ($user, $attr) { + if ($user->can('read-incomes-invoices')) { + $sub->route('invoices.index', trans_choice('general.invoices', 2), [], 1, $attr); + } + + if ($user->can('read-incomes-revenues')) { + $sub->route('revenues.index', trans_choice('general.revenues', 2), [], 2, $attr); + } + + if ($user->can('read-incomes-customers')) { + $sub->route('customers.index', trans_choice('general.customers', 2), [], 3, $attr); + } + }, 3, [ + 'title' => trans_choice('general.incomes', 2), + 'icon' => 'fa fa-money-bill', + ]); + } + + // Expenses + if ($user->can(['read-expenses-bills', 'read-expenses-payments', 'read-expenses-vendors'])) { + $menu->dropdown(trim(trans_choice('general.expenses', 2)), function ($sub) use ($user, $attr) { + if ($user->can('read-expenses-bills')) { + $sub->route('bills.index', trans_choice('general.bills', 2), [], 1, $attr); + } + + if ($user->can('read-expenses-payments')) { + $sub->route('payments.index', trans_choice('general.payments', 2), [], 2, $attr); + } + + if ($user->can('read-expenses-vendors')) { + $sub->route('vendors.index', trans_choice('general.vendors', 2), [], 3, $attr); + } + }, 4, [ + 'title' => trans_choice('general.expenses', 2), + 'icon' => 'fa fa-shopping-cart', + ]); + } + + // Banking + if ($user->can(['read-banking-accounts', 'read-banking-transfers', 'read-banking-transactions', 'read-banking-reconciliations'])) { + $menu->dropdown(trim(trans('general.banking')), function ($sub) use ($user, $attr) { + if ($user->can('read-banking-accounts')) { + $sub->route('accounts.index', trans_choice('general.accounts', 2), [], 1, $attr); + } + + if ($user->can('read-banking-transfers')) { + $sub->route('transfers.index', trans_choice('general.transfers', 2), [], 2, $attr); + } + + if ($user->can('read-banking-transactions')) { + $sub->route('transactions.index', trans_choice('general.transactions', 2), [], 3, $attr); + } + + if ($user->can('read-banking-reconciliations')) { + $sub->route('reconciliations.index', trans_choice('general.reconciliations', 2), [], 4, $attr); + } + }, 5, [ + 'title' => trans('general.banking'), + 'icon' => 'fa fa-briefcase', + ]); + } + + // Reports + if ($user->can('read-common-reports')) { + $menu->route('reports.index', trans_choice('general.reports', 2), [], 6, ['icon' => 'fa fa-chart-pie']); + } + + // Settings + if ($user->can('read-settings-settings')) { + $menu->route('settings.index', trans_choice('general.settings', 2), [], 7, ['icon' => 'fa fa-cog']); + } + + // Apps + if ($user->can('read-modules-home')) { + $menu->route('apps.home.index', trans_choice('general.modules', 2), [], 8, ['icon' => 'fa fa-rocket']); + } + } +} diff --git a/app/Listeners/Menu/AddPortalItems.php b/app/Listeners/Menu/AddPortalItems.php new file mode 100644 index 000000000..caad2a3ad --- /dev/null +++ b/app/Listeners/Menu/AddPortalItems.php @@ -0,0 +1,28 @@ +menu; + + // Dashboard + $menu->route('portal.dashboard', trans_choice('general.dashboards', 1), [], 1, ['icon' => 'fa fa-tachometer-alt']); + + // Invoices + $menu->route('portal.invoices.index', trans_choice('general.invoices', 2), [], 2, ['icon' => 'fa fa-money-bill']); + + // Payments + $menu->route('portal.payments.index', trans_choice('general.payments', 2), [], 3, ['icon' => 'fa fa-shopping-cart']); + } +} diff --git a/app/Providers/Event.php b/app/Providers/Event.php index e35acdfb6..f1dfa41b2 100644 --- a/app/Providers/Event.php +++ b/app/Providers/Event.php @@ -67,6 +67,12 @@ class Event extends Provider 'App\Events\Income\InvoiceRecurring' => [ 'App\Listeners\Income\SendInvoiceRecurringNotification', ], + 'App\Events\Menu\AdminCreated' => [ + 'App\Listeners\Menu\AddAdminItems', + ], + 'App\Events\Menu\PortalCreated' => [ + 'App\Listeners\Menu\AddPortalItems', + ], ]; /**