diff --git a/packages/Webkul/Admin/src/Config/menu.php b/packages/Webkul/Admin/src/Config/menu.php index 199928c38..d5451bc17 100644 --- a/packages/Webkul/Admin/src/Config/menu.php +++ b/packages/Webkul/Admin/src/Config/menu.php @@ -95,30 +95,10 @@ return [ ], [ 'key' => 'configuration', 'name' => 'Configure', - 'route' => 'admin.account.edit', + 'route' => 'admin.configuration.index', 'sort' => 5, 'icon-class' => 'configuration-icon', ], [ - 'key' => 'configuration.account', - 'name' => 'My Account', - 'route' => 'admin.account.edit', - 'sort' => 1, - 'icon-class' => '', - ], - [ - 'key' => 'configuration.sales', - 'name' => 'Sales', - 'route' => 'admin.configuration.sales.shipping_methods', - 'sort' => 1, - 'icon-class' => '', - ], [ - 'key' => 'configuration.sales.shipping_method', - 'name' => 'Shipping Methods', - 'route' => 'admin.configuration.sales.shipping_methods', - 'sort' => 1, - 'icon-class' => '', - ], - [ 'key' => 'settings', 'name' => 'Settings', 'route' => 'admin.locales.index', diff --git a/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php b/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php index 90d648033..28d291850 100644 --- a/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php @@ -51,6 +51,9 @@ class ConfigurationController extends Controller */ public function index() { + // if(!request()->route('slug')) + // return redirect()->route('admin.configuration.index', ['slug' => 'marketplace']); + return view($this->_config['view']); } diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php index e63ff7e73..4db6666b8 100644 --- a/packages/Webkul/Admin/src/Http/routes.php +++ b/packages/Webkul/Admin/src/Http/routes.php @@ -69,6 +69,10 @@ Route::group(['middleware' => ['web']], function () { ])->name('admin.customer.review.index'); + Route::get('configuration/{slug?}/{slug2?}', 'Webkul\Admin\Http\Controllers\ConfigurationController@index')->defaults('_config', [ + 'view' => 'admin::configuration.index' + ])->name('admin.configuration.index'); + //Shipping Methods Routes Route::get('configuration/sales/shipping-methods', 'Webkul\Admin\Http\Controllers\ConfigurationController@index')->defaults('_config', [ 'view' => 'admin::configuration.sales.shipping-method' diff --git a/packages/Webkul/Admin/src/ProductFormAccordian.php b/packages/Webkul/Admin/src/ProductFormAccordian.php index 16169dea8..c116db403 100644 --- a/packages/Webkul/Admin/src/ProductFormAccordian.php +++ b/packages/Webkul/Admin/src/ProductFormAccordian.php @@ -16,7 +16,7 @@ class ProductFormAccordian { public static function create($callback) { $accordian = new ProductFormAccordian(); $callback($accordian); - $accordian->items = $accordian->sortItems($accordian->items); + $accordian->items = core()->sortItems($accordian->items); return $accordian; } @@ -38,21 +38,4 @@ class ProductFormAccordian { 'sort' => $sort ]); } - - /** - * Method to sort through the acl items and put them in order - * - * @return void - */ - public function sortItems($items) { - usort($items, function($a, $b) { - if ($a['sort'] == $b['sort']) { - return 0; - } - - return ($a['sort'] < $b['sort']) ? -1 : 1; - }); - - return $items; - } } \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php b/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php index ad7c9eb53..1388d4fac 100644 --- a/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php +++ b/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php @@ -67,24 +67,17 @@ class AdminServiceProvider extends ServiceProvider view()->composer(['admin::layouts.nav-left', 'admin::layouts.nav-aside', 'admin::layouts.tabs'], function ($view) { $menu = current(Event::fire('admin.menu.create')); - $keys = explode('.', $menu->currentKey); + $menu->items = core()->sortItems($menu->items); - $subMenus = $tabs = []; - if (count($keys) > 1) { - $subMenus = [ - 'items' => $menu->sortItems(array_get($menu->items, current($keys) . '.children')), - ]; + $view->with('menu', $menu); + }); - if (count($keys) > 2) { - $tabs = [ - 'items' => $menu->sortItems(array_get($menu->items, implode('.children.', array_slice($keys, 0, 2)) . '.children')), - ]; - } - } + view()->composer(['admin::layouts.nav-aside', 'admin::layouts.tabs', 'admin::configuration.index'], function ($view) { + $tree = current(Event::fire('admin.config.create')); - $menu->items = $menu->sortItems($menu->items); + $tree->items = core()->sortItems($tree->items); - $view->with('menu', $menu)->with('subMenus', $subMenus)->with('tabs', $tabs); + $view->with('config', $tree); }); } diff --git a/packages/Webkul/Admin/src/Providers/EventServiceProvider.php b/packages/Webkul/Admin/src/Providers/EventServiceProvider.php index 28c141c19..83cd881d0 100644 --- a/packages/Webkul/Admin/src/Providers/EventServiceProvider.php +++ b/packages/Webkul/Admin/src/Providers/EventServiceProvider.php @@ -6,6 +6,7 @@ use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\View; use Webkul\Ui\Menu; +use Webkul\Core\Tree; use Webkul\Admin\ProductFormAccordian; class EventServiceProvider extends ServiceProvider @@ -19,6 +20,8 @@ class EventServiceProvider extends ServiceProvider { $this->createAdminMenu(); + $this->createAdminConfig(); + $this->buildACL(); $this->registerACL(); @@ -42,7 +45,7 @@ class EventServiceProvider extends ServiceProvider public function createAdminMenu() { Event::listen('admin.menu.create', function () { - return Menu::create(function ($menu) { + return Tree::create(function ($menu) { Event::fire('admin.menu.build', $menu); }); }); @@ -50,12 +53,32 @@ class EventServiceProvider extends ServiceProvider Event::listen('admin.menu.build', function ($menu) { foreach(config('menu.admin') as $item) { if (bouncer()->hasPermission($item['key'])) { - $menu->add($item['key'], $item['name'], $item['route'], $item['sort'], $item['icon-class']); + $menu->add($item, 'menu'); } } }); } + /** + * This method fires an event for config creation, any package can add their config item by listening to the admin.config.build event + * + * @return void + */ + public function createAdminConfig() + { + Event::listen('admin.config.create', function () { + return Tree::create(function ($tree) { + Event::fire('admin.config.build', $tree); + }); + }); + + Event::listen('admin.config.build', function ($config) { + foreach(config('core') as $item) { + $config->add($item); + } + }); + } + /** * Build route based ACL * @@ -65,7 +88,7 @@ class EventServiceProvider extends ServiceProvider { Event::listen('admin.acl.build', function ($acl) { foreach(config('acl') as $item) { - $acl->add($item['key'], $item['name'], $item['route'], $item['sort']); + $acl->add($item); } }); } diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index 45492adfc..19a77ab37 100644 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -308,6 +308,9 @@ return [ ], 'configuration' => [ + 'title' => 'Configuration', + 'save-btn-title' => 'Save', + 'tax-categories' => [ 'title' => 'Tax Categories', 'add-title' => 'Add Tax Category', diff --git a/packages/Webkul/Admin/src/Resources/views/account/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/account/edit.blade.php index b206b60e7..6f0bff662 100644 --- a/packages/Webkul/Admin/src/Resources/views/account/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/account/edit.blade.php @@ -1,11 +1,11 @@ -@extends('admin::layouts.content') +@extends('admin::layouts.master') @section('page_title') {{ __('admin::app.account.title') }} @stop -@section('content') -