2018-07-05 07:58:26 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace Webkul\Admin\Providers;
|
|
|
|
|
|
|
|
|
|
use Illuminate\Support\ServiceProvider;
|
|
|
|
|
use Illuminate\Support\Facades\Event;
|
|
|
|
|
use Illuminate\Support\Facades\View;
|
|
|
|
|
use Webkul\Ui\Menu;
|
2018-08-01 06:11:33 +00:00
|
|
|
use Webkul\Admin\ProductFormAccordian;
|
2018-07-05 07:58:26 +00:00
|
|
|
|
|
|
|
|
class EventServiceProvider extends ServiceProvider
|
|
|
|
|
{
|
|
|
|
|
/**
|
2018-07-11 05:41:27 +00:00
|
|
|
* Bootstrap services.
|
2018-07-05 07:58:26 +00:00
|
|
|
*
|
|
|
|
|
* @return void
|
|
|
|
|
*/
|
2018-07-11 05:41:27 +00:00
|
|
|
public function boot()
|
2018-07-05 07:58:26 +00:00
|
|
|
{
|
|
|
|
|
$this->createAdminMenu();
|
|
|
|
|
|
|
|
|
|
$this->buildACL();
|
|
|
|
|
|
|
|
|
|
$this->registerACL();
|
2018-08-01 06:11:33 +00:00
|
|
|
|
|
|
|
|
$this->createProductFormAccordian();
|
2018-07-05 07:58:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* This method fires an event for menu creation, any package can add their menu item by listening to the admin.menu.build event
|
|
|
|
|
*
|
|
|
|
|
* @return void
|
|
|
|
|
*/
|
|
|
|
|
public function createAdminMenu()
|
|
|
|
|
{
|
|
|
|
|
Event::listen('admin.menu.create', function() {
|
|
|
|
|
return Menu::create(function($menu) {
|
|
|
|
|
Event::fire('admin.menu.build', $menu);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
Event::listen('admin.menu.build', function($menu) {
|
|
|
|
|
$menu->add('dashboard', 'Dashboard', 'admin.dashboard.index', 1, 'dashboard-icon');
|
|
|
|
|
|
2018-07-27 06:22:12 +00:00
|
|
|
$menu->add('catalog', 'Catalog', 'admin.catalog.products.index', 3, 'catalog-icon');
|
|
|
|
|
|
|
|
|
|
$menu->add('catalog.products', 'Products', 'admin.catalog.products.index', 1);
|
2018-07-24 11:11:32 +00:00
|
|
|
|
|
|
|
|
$menu->add('catalog.categories', 'Categories', 'admin.catalog.categories.index', 2);
|
2018-07-11 05:41:27 +00:00
|
|
|
|
|
|
|
|
$menu->add('catalog.attributes', 'Attributes', 'admin.catalog.attributes.index', 3);
|
|
|
|
|
|
2018-07-17 13:28:34 +00:00
|
|
|
$menu->add('catalog.families', 'Families', 'admin.catalog.families.index', 4);
|
|
|
|
|
|
2018-07-05 07:58:26 +00:00
|
|
|
$menu->add('configuration', 'Configure', 'admin.account.edit', 6, 'configuration-icon');
|
|
|
|
|
|
|
|
|
|
$menu->add('configuration.account', 'My Account', 'admin.account.edit', 1);
|
|
|
|
|
|
2018-07-24 11:11:32 +00:00
|
|
|
$menu->add('settings', 'Settings', 'admin.countries.index', 6, 'settings-icon');
|
|
|
|
|
|
|
|
|
|
$menu->add('settings.countries', 'Countries', 'admin.countries.index', 1, '');
|
|
|
|
|
|
|
|
|
|
$menu->add('settings.locales', 'Locales', 'admin.locales.index', 2, '');
|
|
|
|
|
|
|
|
|
|
$menu->add('settings.currencies', 'Currencies', 'admin.currencies.index', 3, '');
|
2018-07-05 07:58:26 +00:00
|
|
|
|
2018-07-24 11:11:32 +00:00
|
|
|
$menu->add('settings.exchange_rates', 'Exchange Rates', 'admin.exchange_rates.index', 4, '');
|
|
|
|
|
|
|
|
|
|
$menu->add('settings.inventory_sources', 'Inventory Sources', 'admin.inventory_sources.index', 5, '');
|
|
|
|
|
|
|
|
|
|
$menu->add('settings.channels', 'Channels', 'admin.channels.index', 5, '');
|
|
|
|
|
|
|
|
|
|
$menu->add('settings.users', 'Users', 'admin.users.index', 7, '');
|
2018-07-05 07:58:26 +00:00
|
|
|
|
|
|
|
|
$menu->add('settings.users.users', 'Users', 'admin.users.index', 1, '');
|
|
|
|
|
|
|
|
|
|
$menu->add('settings.users.roles', 'Roles', 'admin.roles.index', 2, '');
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Build route based ACL
|
|
|
|
|
*
|
|
|
|
|
* @return voidbuildACL
|
|
|
|
|
*/
|
|
|
|
|
public function buildACL()
|
|
|
|
|
{
|
|
|
|
|
Event::listen('admin.acl.build', function($acl) {
|
|
|
|
|
$acl->add('dashboard', 'Dashboard', 'admin.dashboard.index', 1);
|
|
|
|
|
|
|
|
|
|
$acl->add('configuration', 'Configure', 'admin.account.edit', 5);
|
|
|
|
|
|
|
|
|
|
$acl->add('settings', 'Settings', 'admin.users.index', 6);
|
|
|
|
|
|
2018-07-11 05:41:27 +00:00
|
|
|
$acl->add('settings.users', 'Users', 'admin.users.index', 1);
|
2018-07-05 07:58:26 +00:00
|
|
|
|
2018-07-11 05:41:27 +00:00
|
|
|
$acl->add('settings.users.users', 'Users', 'admin.users.index', 1);
|
2018-07-05 07:58:26 +00:00
|
|
|
|
2018-07-11 05:41:27 +00:00
|
|
|
$acl->add('settings.users.roles', 'Roles', 'admin.roles.index', 2);
|
2018-07-05 07:58:26 +00:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Registers acl to entire application
|
|
|
|
|
*
|
|
|
|
|
* @return void
|
|
|
|
|
*/
|
|
|
|
|
public function registerACL()
|
|
|
|
|
{
|
|
|
|
|
$this->app->singleton('acl', function() {
|
|
|
|
|
return current(Event::fire('admin.acl.create'));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
View::share('acl', app('acl'));
|
|
|
|
|
}
|
2018-08-01 06:11:33 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* This method fires an event for accordian creation, any package can add their accordian item by listening to the admin.catalog.products.accordian.build event
|
|
|
|
|
*
|
|
|
|
|
* @return void
|
|
|
|
|
*/
|
|
|
|
|
public function createProductFormAccordian()
|
|
|
|
|
{
|
|
|
|
|
Event::listen('admin.catalog.products.accordian.create', function() {
|
|
|
|
|
return ProductFormAccordian::create(function($accordian) {
|
|
|
|
|
Event::fire('admin.catalog.products.accordian.build', $accordian);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
Event::listen('admin.catalog.products.accordian.build', function($accordian) {
|
|
|
|
|
$accordian->add('categories', 'Categories', 'admin::catalog.products.accordians.categories', 1);
|
|
|
|
|
});
|
|
|
|
|
}
|
2018-07-05 07:58:26 +00:00
|
|
|
}
|