Merge pull request #960 from denisdulici/master
Moved menus to listeners
This commit is contained in:
		| @@ -1,22 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace App\Events\Menu; |  | ||||||
|  |  | ||||||
| use Illuminate\Queue\SerializesModels; |  | ||||||
|  |  | ||||||
| class AdminCreating |  | ||||||
| { |  | ||||||
|     use SerializesModels; |  | ||||||
|  |  | ||||||
|     public $menu; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Create a new event instance. |  | ||||||
|      * |  | ||||||
|      * @param $menu |  | ||||||
|      */ |  | ||||||
|     public function __construct($menu) |  | ||||||
|     { |  | ||||||
|         $this->menu = $menu; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @@ -1,22 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace App\Events\Menu; |  | ||||||
|  |  | ||||||
| use Illuminate\Queue\SerializesModels; |  | ||||||
|  |  | ||||||
| class PortalCreating |  | ||||||
| { |  | ||||||
|     use SerializesModels; |  | ||||||
|  |  | ||||||
|     public $menu; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Create a new event instance. |  | ||||||
|      * |  | ||||||
|      * @param $menu |  | ||||||
|      */ |  | ||||||
|     public function __construct($menu) |  | ||||||
|     { |  | ||||||
|         $this->menu = $menu; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @@ -2,7 +2,7 @@ | |||||||
|  |  | ||||||
| namespace App\Http\Middleware; | namespace App\Http\Middleware; | ||||||
|  |  | ||||||
| use App\Models\Common\Dashboard; | use App\Events\Menu\AdminCreated; | ||||||
| use Closure; | use Closure; | ||||||
|  |  | ||||||
| class AdminMenu | class AdminMenu | ||||||
| @@ -21,124 +21,10 @@ class AdminMenu | |||||||
|             return $next($request); |             return $next($request); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         // Setup the admin menu |  | ||||||
|         menu()->create('admin', function ($menu) { |         menu()->create('admin', function ($menu) { | ||||||
|             event(new \App\Events\Menu\AdminCreating($menu)); |  | ||||||
|  |  | ||||||
|             $menu->style('argon'); |             $menu->style('argon'); | ||||||
|  |  | ||||||
|             $user = user(); |             event(new AdminCreated($menu)); | ||||||
|             $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)); |  | ||||||
|         }); |         }); | ||||||
|  |  | ||||||
|         return $next($request); |         return $next($request); | ||||||
|   | |||||||
| @@ -2,6 +2,7 @@ | |||||||
|  |  | ||||||
| namespace App\Http\Middleware; | namespace App\Http\Middleware; | ||||||
|  |  | ||||||
|  | use App\Events\Menu\PortalCreated; | ||||||
| use Closure; | use Closure; | ||||||
|  |  | ||||||
| class PortalMenu | class PortalMenu | ||||||
| @@ -21,25 +22,9 @@ class PortalMenu | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         menu()->create('portal', function ($menu) { |         menu()->create('portal', function ($menu) { | ||||||
|             event(new \App\Events\Menu\PortalCreating($menu)); |  | ||||||
|  |  | ||||||
|             $menu->style('argon'); |             $menu->style('argon'); | ||||||
|  |  | ||||||
|             $user = user(); |             event(new PortalCreated($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']); |  | ||||||
|  |  | ||||||
|             // Transactions |  | ||||||
|             $menu->route('portal.transactions.index', trans_choice('general.transactions', 2), [], 4, ['icon' => 'fa fa-briefcase']); |  | ||||||
|  |  | ||||||
|             event(new \App\Events\Menu\PortalCreated($menu)); |  | ||||||
|         }); |         }); | ||||||
|  |  | ||||||
|         return $next($request); |         return $next($request); | ||||||
|   | |||||||
							
								
								
									
										131
									
								
								app/Listeners/Menu/AddAdminItems.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										131
									
								
								app/Listeners/Menu/AddAdminItems.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,131 @@ | |||||||
|  | <?php | ||||||
|  |  | ||||||
|  | namespace App\Listeners\Menu; | ||||||
|  |  | ||||||
|  | use App\Events\Menu\AdminCreated as Event; | ||||||
|  | use App\Models\Common\Dashboard; | ||||||
|  |  | ||||||
|  | class AddAdminItems | ||||||
|  | { | ||||||
|  |     /** | ||||||
|  |      * Handle the event. | ||||||
|  |      * | ||||||
|  |      * @param  $event | ||||||
|  |      * @return void | ||||||
|  |      */ | ||||||
|  |     public function handle(Event $event) | ||||||
|  |     { | ||||||
|  |         $menu = $event->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']); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										28
									
								
								app/Listeners/Menu/AddPortalItems.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								app/Listeners/Menu/AddPortalItems.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | |||||||
|  | <?php | ||||||
|  |  | ||||||
|  | namespace App\Listeners\Menu; | ||||||
|  |  | ||||||
|  | use App\Events\Menu\PortalCreated as Event; | ||||||
|  |  | ||||||
|  | class AddPortalItems | ||||||
|  | { | ||||||
|  |     /** | ||||||
|  |      * Handle the event. | ||||||
|  |      * | ||||||
|  |      * @param  $event | ||||||
|  |      * @return void | ||||||
|  |      */ | ||||||
|  |     public function handle(Event $event) | ||||||
|  |     { | ||||||
|  |         $menu = $event->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']); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -67,6 +67,12 @@ class Event extends Provider | |||||||
|         'App\Events\Income\InvoiceRecurring' => [ |         'App\Events\Income\InvoiceRecurring' => [ | ||||||
|             'App\Listeners\Income\SendInvoiceRecurringNotification', |             'App\Listeners\Income\SendInvoiceRecurringNotification', | ||||||
|         ], |         ], | ||||||
|  |         'App\Events\Menu\AdminCreated' => [ | ||||||
|  |             'App\Listeners\Menu\AddAdminItems', | ||||||
|  |         ], | ||||||
|  |         'App\Events\Menu\PortalCreated' => [ | ||||||
|  |             'App\Listeners\Menu\AddPortalItems', | ||||||
|  |         ], | ||||||
|     ]; |     ]; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user