Removed event from menu, acl, config creation
This commit is contained in:
parent
0bdd9e1a2a
commit
2decdeb194
|
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
[
|
||||
'key' => 'inventories',
|
||||
'name' => 'Inventories',
|
||||
'view' => 'admin::catalog.products.accordians.inventories',
|
||||
'sort' => 1
|
||||
], [
|
||||
'key' => 'images',
|
||||
'name' => 'Images',
|
||||
'view' => 'admin::catalog.products.accordians.images',
|
||||
'sort' => 2
|
||||
], [
|
||||
'key' => 'categories',
|
||||
'name' => 'Categories',
|
||||
'view' => 'admin::catalog.products.accordians.categories',
|
||||
'sort' => 3
|
||||
], [
|
||||
'key' => 'variations',
|
||||
'name' => 'Variations',
|
||||
'view' => 'admin::catalog.products.accordians.variations',
|
||||
'sort' => 4
|
||||
]
|
||||
];
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Admin;
|
||||
|
||||
class ProductFormAccordian {
|
||||
|
||||
public $items = [];
|
||||
|
||||
/**
|
||||
* Shortcut method for create a Product Form Accordian with a callback.
|
||||
* This will allow you to do things like fire an event on creation.
|
||||
*
|
||||
* @param callable $callback Callback to use after the accordian creation
|
||||
* @return object
|
||||
*/
|
||||
public static function create($callback) {
|
||||
$accordian = new ProductFormAccordian();
|
||||
$callback($accordian);
|
||||
$accordian->items = core()->sortItems($accordian->items);
|
||||
|
||||
return $accordian;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a accordian item to the item stack
|
||||
*
|
||||
* @param string $key Dot seperated heirarchy
|
||||
* @param string $name Text for the anchor
|
||||
* @param string $view Blade file for accordian
|
||||
* @param integer $sort Sorting index for the items
|
||||
*/
|
||||
public function add($key, $name, $view, $sort = 0)
|
||||
{
|
||||
array_push($this->items, [
|
||||
'key' => $key,
|
||||
'name' => $name,
|
||||
'view' => $view,
|
||||
'sort' => $sort
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -3,15 +3,17 @@
|
|||
namespace Webkul\Admin\Providers;
|
||||
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\Blade;
|
||||
use Webkul\Admin\Providers\EventServiceProvider;
|
||||
use Illuminate\Contracts\Debug\ExceptionHandler;
|
||||
use Webkul\Admin\Exceptions\Handler;
|
||||
use Illuminate\Foundation\AliasLoader;
|
||||
use Webkul\Admin\Facades\Configuration as ConfigurationFacade;
|
||||
use Webkul\Admin\Configuration;
|
||||
use Webkul\Core\Tree;
|
||||
|
||||
/**
|
||||
* Admin service provider
|
||||
*
|
||||
* @author Jitendra Singh <jitendra@webkul.com>
|
||||
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
|
||||
*/
|
||||
class AdminServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
|
|
@ -59,26 +61,54 @@ class AdminServiceProvider extends ServiceProvider
|
|||
protected function composeView()
|
||||
{
|
||||
view()->composer(['admin::catalog.products.create', 'admin::catalog.products.edit'], function ($view) {
|
||||
$accordians = current(Event::fire('admin.catalog.products.accordian.create'));
|
||||
$accordian = Tree::create();
|
||||
|
||||
$view->with('form_accordians', $accordians);
|
||||
foreach(config('product_form_accordians') as $item) {
|
||||
$accordian->add($item);
|
||||
}
|
||||
|
||||
$accordian->items = core()->sortItems($accordian->items);
|
||||
|
||||
$view->with('form_accordians', $accordian);
|
||||
});
|
||||
|
||||
view()->composer(['admin::layouts.nav-left', 'admin::layouts.nav-aside', 'admin::layouts.tabs'], function ($view) {
|
||||
$menu = current(Event::fire('admin.menu.create'));
|
||||
$tree = Tree::create();
|
||||
|
||||
$menu->items = core()->sortItems($menu->items);
|
||||
foreach(config('menu.admin') as $item) {
|
||||
if (bouncer()->hasPermission($item['key'])) {
|
||||
$tree->add($item, 'menu');
|
||||
}
|
||||
}
|
||||
|
||||
$view->with('menu', $menu);
|
||||
$tree->items = core()->sortItems($tree->items);
|
||||
|
||||
$view->with('menu', $tree);
|
||||
});
|
||||
|
||||
view()->composer(['admin::layouts.nav-aside', 'admin::layouts.tabs', 'admin::configuration.index'], function ($view) {
|
||||
$tree = current(Event::fire('admin.config.create'));
|
||||
$tree = Tree::create();
|
||||
|
||||
foreach(config('core') as $item) {
|
||||
$tree->add($item);
|
||||
}
|
||||
|
||||
$tree->items = core()->sortItems($tree->items);
|
||||
|
||||
$view->with('config', $tree);
|
||||
});
|
||||
|
||||
view()->composer(['admin::users.roles.create', 'admin::users.roles.edit'], function ($view) {
|
||||
$tree = Tree::create();
|
||||
|
||||
foreach(config('acl') as $item) {
|
||||
$tree->add($item);
|
||||
}
|
||||
|
||||
$tree->items = core()->sortItems($tree->items);
|
||||
|
||||
$view->with('acl', $tree);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -95,5 +125,9 @@ class AdminServiceProvider extends ServiceProvider
|
|||
$this->mergeConfigFrom(
|
||||
dirname(__DIR__) . '/Config/acl.php', 'acl'
|
||||
);
|
||||
|
||||
$this->mergeConfigFrom(
|
||||
dirname(__DIR__) . '/Config/product_form_accordians.php', 'product_form_accordians'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -4,10 +4,6 @@ namespace Webkul\Admin\Providers;
|
|||
|
||||
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
|
||||
{
|
||||
|
|
@ -18,16 +14,6 @@ class EventServiceProvider extends ServiceProvider
|
|||
*/
|
||||
public function boot()
|
||||
{
|
||||
$this->createAdminMenu();
|
||||
|
||||
$this->createAdminConfig();
|
||||
|
||||
$this->buildACL();
|
||||
|
||||
$this->registerACL();
|
||||
|
||||
$this->createProductFormAccordian();
|
||||
|
||||
Event::listen('checkout.order.save.after', 'Webkul\Admin\Listeners\Order@sendNewOrderMail');
|
||||
|
||||
Event::listen('checkout.invoice.save.after', 'Webkul\Admin\Listeners\Order@sendNewInvoiceMail');
|
||||
|
|
@ -36,98 +22,4 @@ class EventServiceProvider extends ServiceProvider
|
|||
|
||||
Event::listen('checkout.order.save.after', 'Webkul\Admin\Listeners\Order@updateProductInventory');
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 Tree::create(function ($menu) {
|
||||
Event::fire('admin.menu.build', $menu);
|
||||
});
|
||||
});
|
||||
|
||||
Event::listen('admin.menu.build', function ($menu) {
|
||||
foreach(config('menu.admin') as $item) {
|
||||
if (bouncer()->hasPermission($item['key'])) {
|
||||
$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
|
||||
*
|
||||
* @return voidbuildACL
|
||||
*/
|
||||
public function buildACL()
|
||||
{
|
||||
Event::listen('admin.acl.build', function ($acl) {
|
||||
foreach(config('acl') as $item) {
|
||||
$acl->add($item);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 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'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 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('inventories', 'Inventories', 'admin::catalog.products.accordians.inventories', 1);
|
||||
|
||||
$accordian->add('images', 'Images', 'admin::catalog.products.accordians.images', 2);
|
||||
|
||||
$accordian->add('categories', 'Categories', 'admin::catalog.products.accordians.categories', 3);
|
||||
|
||||
$accordian->add('variations', 'Variations', 'admin::catalog.products.accordians.variations', 4);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
$validations = implode('|', array_filter($validations));
|
||||
|
||||
$name = $field['title'];
|
||||
$name = $field['name'];
|
||||
?>
|
||||
<div class="control-group {{ $field['type'] }}" :class="[errors.has('{{ $name }}') ? 'has-error' : '']">
|
||||
<label for="{{ $name }}" {{ !isset($field['validation']) || strpos('required', $field['validation']) < 0 ? '' : 'class=required' }}>
|
||||
|
|
|
|||
|
|
@ -4,14 +4,40 @@ namespace Webkul\Core;
|
|||
|
||||
use Illuminate\Support\Facades\Request;
|
||||
|
||||
/**
|
||||
* Tree class
|
||||
*
|
||||
* @author Jitendra Singh <jitendra@webkul.com>
|
||||
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
|
||||
*/
|
||||
class Tree {
|
||||
|
||||
/**
|
||||
* Contains tree item
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $items = [];
|
||||
|
||||
/**
|
||||
* Contains current item route
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $current;
|
||||
|
||||
/**
|
||||
* Contains current item key
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $currentKey;
|
||||
|
||||
/**
|
||||
* Create a new instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->current = Request::url();
|
||||
}
|
||||
|
|
@ -23,9 +49,12 @@ class Tree {
|
|||
* @param callable $callback Callback to use after the Config creation
|
||||
* @return object
|
||||
*/
|
||||
public static function create($callback) {
|
||||
public static function create($callback = null) {
|
||||
$tree = new Tree();
|
||||
$callback($tree);
|
||||
|
||||
if($callback) {
|
||||
$callback($tree);
|
||||
}
|
||||
|
||||
return $tree;
|
||||
}
|
||||
|
|
@ -48,6 +77,7 @@ class Tree {
|
|||
}
|
||||
|
||||
$children = str_replace('.', '.children.', $item['key']);
|
||||
|
||||
core()->array_set($this->items, $children, $item);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,12 @@ use Illuminate\Support\ServiceProvider;
|
|||
use Webkul\Product\Helpers\ProductImage;
|
||||
use View;
|
||||
|
||||
/**
|
||||
* Composer service provider
|
||||
*
|
||||
* @author Jitendra Singh <jitendra@webkul.com>
|
||||
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
|
||||
*/
|
||||
class ComposerServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -3,15 +3,19 @@
|
|||
namespace Webkul\Shop\Providers;
|
||||
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Routing\Router;
|
||||
use Illuminate\Support\Facades\Blade;
|
||||
use Webkul\Shop\Http\Middleware\Locale;
|
||||
use Webkul\Shop\Http\Middleware\Theme;
|
||||
use Webkul\Shop\Http\Middleware\Currency;
|
||||
use Webkul\Shop\Providers\ComposerServiceProvider;
|
||||
use Webkul\Core\Tree;
|
||||
|
||||
/**
|
||||
* Shop service provider
|
||||
*
|
||||
* @author Jitendra Singh <jitendra@webkul.com>
|
||||
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
|
||||
*/
|
||||
class ShopServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
|
|
@ -38,8 +42,6 @@ class ShopServiceProvider extends ServiceProvider
|
|||
$this->app->register(ComposerServiceProvider::class);
|
||||
|
||||
$this->composeView();
|
||||
|
||||
$this->createCustomerMenu();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -66,29 +68,15 @@ class ShopServiceProvider extends ServiceProvider
|
|||
protected function composeView()
|
||||
{
|
||||
view()->composer('shop::customers.account.partials.sidemenu', function ($view) {
|
||||
$menu = current(Event::fire('customer.menu.create'));
|
||||
$tree = Tree::create();
|
||||
|
||||
$view->with('menu', $menu);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* This method fires an event for menu creation, any package can add their menu item by listening to the customer.menu.build event
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function createCustomerMenu()
|
||||
{
|
||||
Event::listen('customer.menu.create', function () {
|
||||
return Tree::create(function ($tree) {
|
||||
Event::fire('customer.menu.build', $tree);
|
||||
});
|
||||
});
|
||||
|
||||
Event::listen('customer.menu.build', function ($tree) {
|
||||
foreach(config('menu.customer') as $item) {
|
||||
$tree->add($item, 'menu');
|
||||
}
|
||||
|
||||
$tree->items = core()->sortItems($tree->items);
|
||||
|
||||
$view->with('menu', $tree);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,11 +5,9 @@ namespace Webkul\User\Providers;
|
|||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\Foundation\AliasLoader;
|
||||
use Illuminate\Routing\Router;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Webkul\User\Bouncer;
|
||||
use Webkul\User\Facades\Bouncer as BouncerFacade;
|
||||
use Webkul\User\Http\Middleware\Bouncer as BouncerMiddleware;
|
||||
use Webkul\Core\Tree;
|
||||
|
||||
class UserServiceProvider extends ServiceProvider
|
||||
{
|
||||
|
|
@ -25,22 +23,6 @@ class UserServiceProvider extends ServiceProvider
|
|||
$router->aliasMiddleware('admin', BouncerMiddleware::class);
|
||||
|
||||
$this->loadMigrationsFrom(__DIR__ . '/../Database/Migrations');
|
||||
|
||||
$this->createACL();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method fires an event for acl creation, any package can add their acl item by listening to the admin.acl.build event
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function createACL()
|
||||
{
|
||||
Event::listen('admin.acl.create', function () {
|
||||
return Tree::create(function ($acl) {
|
||||
Event::fire('admin.acl.build', $acl);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue