¨4.0.1¨
This commit is contained in:
@@ -23,6 +23,7 @@ class MenuItemTabs extends Tabs
|
||||
->add($this->image());
|
||||
}
|
||||
|
||||
|
||||
private function general()
|
||||
{
|
||||
return tap(new Tab('general', trans('menu::menu_items.tabs.general')), function (Tab $tab) {
|
||||
@@ -36,18 +37,21 @@ class MenuItemTabs extends Tabs
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private function categories()
|
||||
{
|
||||
return Category::where('parent_id', null)->get()->sortBy('name')->pluck('name', 'id')
|
||||
->prepend(trans('menu::menu_items.form.select_category'), '');
|
||||
}
|
||||
|
||||
|
||||
private function pages()
|
||||
{
|
||||
return Page::all()->sortBy('name')->pluck('name', 'id')
|
||||
->prepend(trans('menu::menu_items.form.select_page'), '');
|
||||
}
|
||||
|
||||
|
||||
private function parentMenuItems()
|
||||
{
|
||||
$parentMenuItems = ['' => trans('menu::menu_items.form.select_parent')];
|
||||
@@ -55,10 +59,11 @@ class MenuItemTabs extends Tabs
|
||||
return $parentMenuItems += MenuItem::parents(request('menuId'), request('id'));
|
||||
}
|
||||
|
||||
|
||||
private function image()
|
||||
{
|
||||
return tap(new Tab('image', trans('menu::menu_items.tabs.image')), function (Tab $tab) {
|
||||
if (! auth()->user()->hasAccess('admin.media.index')) {
|
||||
if (!auth()->user()->hasAccess('admin.media.index')) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ class CreateMenusTable extends Migration
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
|
||||
@@ -24,6 +24,7 @@ class CreateMenuTranslationsTable extends Migration
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
|
||||
@@ -35,6 +35,7 @@ class CreateMenuitemsTable extends Migration
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
|
||||
@@ -24,6 +24,7 @@ class CreateMenuitemTranslationTable extends Migration
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
|
||||
@@ -18,6 +18,7 @@ class AddIconColumnToMenuItemsTable extends Migration
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace Modules\Menu\Entities;
|
||||
|
||||
use Modules\Admin\Ui\AdminTable;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Modules\Support\Eloquent\Model;
|
||||
use Modules\Support\Eloquent\Translatable;
|
||||
|
||||
@@ -40,15 +41,6 @@ class Menu extends Model
|
||||
*/
|
||||
protected $translatedAttributes = ['name'];
|
||||
|
||||
/**
|
||||
* Perform any actions required after the model boots.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected static function booted()
|
||||
{
|
||||
static::addActiveGlobalScope();
|
||||
}
|
||||
|
||||
public static function for($menuId)
|
||||
{
|
||||
@@ -60,15 +52,28 @@ class Menu extends Model
|
||||
->nest();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Perform any actions required after the model boots.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected static function booted()
|
||||
{
|
||||
static::addActiveGlobalScope();
|
||||
}
|
||||
|
||||
|
||||
public function menuItems()
|
||||
{
|
||||
return $this->hasMany(MenuItem::class)->orderByRaw('-position DESC');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get table data for the resource
|
||||
*
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function table()
|
||||
{
|
||||
|
||||
@@ -66,6 +66,43 @@ class MenuItem extends Model
|
||||
*/
|
||||
protected $translatedAttributes = ['name'];
|
||||
|
||||
|
||||
/**
|
||||
* Get the root menu item for the given menu id.
|
||||
*
|
||||
* @param int $menuId
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public static function root($menuId)
|
||||
{
|
||||
return static::withoutGlobalScope('not_root')
|
||||
->where('menu_id', $menuId)
|
||||
->firstOrFail();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the parents of the given menuId.
|
||||
*
|
||||
* @param int $menuId
|
||||
* @param int $menuItemId
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function parents($menuId, $menuItemId)
|
||||
{
|
||||
return static::withoutGlobalScope('active')
|
||||
->where('id', '!=', $menuItemId)
|
||||
->where('menu_id', $menuId)
|
||||
->get()
|
||||
->noCleaning()
|
||||
->nest()
|
||||
->setIndent('¦–– ')
|
||||
->listsFlattened('name');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Perform any actions required after the model boots.
|
||||
*
|
||||
@@ -80,30 +117,36 @@ class MenuItem extends Model
|
||||
static::addActiveGlobalScope();
|
||||
}
|
||||
|
||||
|
||||
public function menu()
|
||||
{
|
||||
return $this->belongsTo(Menu::class);
|
||||
}
|
||||
|
||||
|
||||
public function children()
|
||||
{
|
||||
return $this->hasMany(MenuItem::class, 'parent_id');
|
||||
}
|
||||
|
||||
|
||||
public function category()
|
||||
{
|
||||
return $this->belongsTo(Category::class);
|
||||
}
|
||||
|
||||
|
||||
public function page()
|
||||
{
|
||||
return $this->belongsTo(Page::class);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the menu item's page id.
|
||||
*
|
||||
* @param int $pageId
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setPageIdAttribute($pageId)
|
||||
@@ -111,10 +154,12 @@ class MenuItem extends Model
|
||||
$this->attributes['page_id'] = $pageId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the menu item's parent id.
|
||||
*
|
||||
* @param int $parentId
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setParentIdAttribute($parentId)
|
||||
@@ -122,16 +167,18 @@ class MenuItem extends Model
|
||||
$this->attributes['parent_id'] = $parentId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the menu item's background image.
|
||||
*
|
||||
* @return \Modules\Media\Entities\File
|
||||
* @return File
|
||||
*/
|
||||
public function getBackgroundImageAttribute()
|
||||
{
|
||||
return $this->files->where('pivot.zone', 'background_image')->first() ?: new File;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Determine if the menu item has any children.
|
||||
*
|
||||
@@ -142,25 +189,6 @@ class MenuItem extends Model
|
||||
return $this->items->isNotEmpty();
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the menu item type is category.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isCategoryType()
|
||||
{
|
||||
return $this->type === 'category';
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the menu item type is page.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isPageType()
|
||||
{
|
||||
return $this->type === 'page';
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the menu item type is url.
|
||||
@@ -172,6 +200,7 @@ class MenuItem extends Model
|
||||
return $this->type === 'url';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the public url for the menu item.
|
||||
*
|
||||
@@ -198,35 +227,25 @@ class MenuItem extends Model
|
||||
return localized_url(locale(), $this->getAttributeFromArray('url'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the root menu item for the given menu id.
|
||||
*
|
||||
* @param int $menuId
|
||||
* @return $this
|
||||
*/
|
||||
public static function root($menuId)
|
||||
{
|
||||
return static::withoutGlobalScope('not_root')
|
||||
->where('menu_id', $menuId)
|
||||
->firstOrFail();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the parents of the given menuId.
|
||||
* Determine if the menu item type is category.
|
||||
*
|
||||
* @param int $menuId
|
||||
* @param int $menuItemId
|
||||
* @return array
|
||||
* @return bool
|
||||
*/
|
||||
public static function parents($menuId, $menuItemId)
|
||||
public function isCategoryType()
|
||||
{
|
||||
return static::withoutGlobalScope('active')
|
||||
->where('id', '!=', $menuItemId)
|
||||
->where('menu_id', $menuId)
|
||||
->get()
|
||||
->noCleaning()
|
||||
->nest()
|
||||
->setIndent('¦–– ')
|
||||
->listsFlattened('name');
|
||||
return $this->type === 'category';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Determine if the menu item type is page.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isPageType()
|
||||
{
|
||||
return $this->type === 'page';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,8 @@ class CreateRootMenuItem
|
||||
/**
|
||||
* Handle the event.
|
||||
*
|
||||
* @param \Modules\Menu\Entities\Menu $menu
|
||||
* @param Menu $menu
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle(Menu $menu)
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace Modules\Menu\Http\Controllers\Admin;
|
||||
|
||||
use Illuminate\Http\Response;
|
||||
use Modules\Menu\Entities\Menu;
|
||||
use Modules\Admin\Traits\HasCrudActions;
|
||||
use Modules\Menu\Http\Requests\SaveMenuRequest;
|
||||
@@ -38,22 +39,13 @@ class MenuController
|
||||
*/
|
||||
protected $validation = SaveMenuRequest::class;
|
||||
|
||||
/**
|
||||
* Redirect to url after saving a resource.
|
||||
*
|
||||
* @param \Modules\Menu\Entities\Menu $menu
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
protected function redirectTo($menu)
|
||||
{
|
||||
return redirect()->route('admin.menus.edit', $menu);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
@@ -67,4 +59,17 @@ class MenuController
|
||||
|
||||
return view('menu::admin.menus.edit', compact('menu', 'menuItems'));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Redirect to url after saving a resource.
|
||||
*
|
||||
* @param Menu $menu
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
protected function redirectTo($menu)
|
||||
{
|
||||
return redirect()->route('admin.menus.edit', $menu);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,18 +2,39 @@
|
||||
|
||||
namespace Modules\Menu\Http\Controllers\Admin;
|
||||
|
||||
use Modules\Menu\Entities\Menu;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Modules\Menu\Entities\MenuItem;
|
||||
use Modules\Admin\Ui\Facades\TabManager;
|
||||
use Modules\Menu\Http\Requests\SaveMenuItemRequest;
|
||||
|
||||
class MenuItemController
|
||||
{
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param int $menuId
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function store($menuId, SaveMenuItemRequest $request)
|
||||
{
|
||||
$menuItem = MenuItem::create(
|
||||
$this->prepare($menuId, $request->all())
|
||||
);
|
||||
|
||||
return redirect()->route('admin.menus.edit', $menuId)
|
||||
->withSuccess(trans('admin::messages.resource_created', ['resource' => trans('menu::menu_items.menu_item')]));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @param int $menuId
|
||||
* @return \Illuminate\Http\Response
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function create($menuId)
|
||||
{
|
||||
@@ -23,29 +44,14 @@ class MenuItemController
|
||||
return view('menu::admin.menu_items.create', compact('menuId', 'menuItem', 'tabs'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param int $menuId
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store($menuId, SaveMenuItemRequest $request)
|
||||
{
|
||||
$menuItem = MenuItem::create(
|
||||
$this->prepare($menuId, $request->all())
|
||||
);
|
||||
|
||||
return redirect()->route('admin.menus.edit', $menuId)
|
||||
->withSuccess(trans('admin::messages.resource_saved', ['resource' => trans('menu::menu_items.menu_item')]));
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param int $menuId
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function edit($menuId, $id)
|
||||
{
|
||||
@@ -55,13 +61,15 @@ class MenuItemController
|
||||
return view('menu::admin.menu_items.edit', compact('menuId', 'menuItem', 'tabs'));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param int $menuId
|
||||
* @param int $id
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function update($menuId, $id, SaveMenuItemRequest $request)
|
||||
{
|
||||
@@ -72,13 +80,15 @@ class MenuItemController
|
||||
);
|
||||
|
||||
return redirect()->route('admin.menus.edit', $menuId)
|
||||
->withSuccess(trans('admin::messages.resource_saved', ['resource' => trans('menu::menu_items.menu_item')]));
|
||||
->withSuccess(trans('admin::messages.resource_updated', ['resource' => trans('menu::menu_items.menu_item')]));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param int $id
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function destroy($id)
|
||||
@@ -86,11 +96,13 @@ class MenuItemController
|
||||
MenuItem::withoutGlobalScope('active')->findOrFail($id)->delete();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Prepare menu item attributes for saving.
|
||||
*
|
||||
* @param int $menuId
|
||||
* @param array $attributes
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private function prepare($menuId, array $attributes)
|
||||
@@ -102,10 +114,12 @@ class MenuItemController
|
||||
return array_merge($attributes, ['menu_id' => $menuId]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get parent id for the given menu id.
|
||||
*
|
||||
* @param string string
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
private function parentId($menuId)
|
||||
|
||||
@@ -9,7 +9,8 @@ class MenuItemOrderController
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Modules\Menu\Services\MenuItemOrdener $ordener
|
||||
* @param MenuItemOrdener $ordener
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function update(MenuItemOrdener $ordener)
|
||||
|
||||
@@ -14,6 +14,7 @@ class SaveMenuItemRequest extends Request
|
||||
*/
|
||||
protected $availableAttributes = 'menu::attributes';
|
||||
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
|
||||
@@ -13,6 +13,7 @@ class SaveMenuRequest extends Request
|
||||
*/
|
||||
protected $availableAttributes = 'menu::attributes';
|
||||
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
|
||||
@@ -9,11 +9,13 @@ class MegaMenu
|
||||
{
|
||||
private $menuId;
|
||||
|
||||
|
||||
public function __construct($menuId)
|
||||
{
|
||||
$this->menuId = $menuId;
|
||||
}
|
||||
|
||||
|
||||
public function menus()
|
||||
{
|
||||
return Cache::tags(['mega_menu', 'menu_items', 'pages', 'categories'])
|
||||
@@ -24,6 +26,7 @@ class MegaMenu
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private function getMenus()
|
||||
{
|
||||
return MenuModel::for($this->menuId)->where('menu_id', $this->menuId);
|
||||
|
||||
@@ -9,59 +9,70 @@ class Menu
|
||||
private $menu;
|
||||
private $subMenus;
|
||||
|
||||
|
||||
public function __construct($menu)
|
||||
{
|
||||
$this->menu = $menu;
|
||||
}
|
||||
|
||||
|
||||
public function isFluid()
|
||||
{
|
||||
return $this->menu->is_fluid;
|
||||
}
|
||||
|
||||
|
||||
public function url()
|
||||
{
|
||||
return $this->menu->url();
|
||||
}
|
||||
|
||||
|
||||
public function hasIcon()
|
||||
{
|
||||
return ! is_null($this->icon());
|
||||
return !is_null($this->icon());
|
||||
}
|
||||
|
||||
|
||||
public function icon()
|
||||
{
|
||||
return $this->menu->icon;
|
||||
}
|
||||
|
||||
|
||||
public function hasBackgroundImage()
|
||||
{
|
||||
return ! is_null($this->backgroundImage());
|
||||
return !is_null($this->backgroundImage());
|
||||
}
|
||||
|
||||
|
||||
public function backgroundImage()
|
||||
{
|
||||
return $this->menu->background_image->path;
|
||||
}
|
||||
|
||||
|
||||
public function target()
|
||||
{
|
||||
return $this->menu->target;
|
||||
}
|
||||
|
||||
|
||||
public function name()
|
||||
{
|
||||
return $this->menu->name;
|
||||
}
|
||||
|
||||
|
||||
public function hasSubMenus()
|
||||
{
|
||||
return $this->subMenus()->isNotEmpty();
|
||||
}
|
||||
|
||||
|
||||
public function subMenus()
|
||||
{
|
||||
if (! is_null($this->subMenus)) {
|
||||
if (!is_null($this->subMenus)) {
|
||||
return $this->subMenus;
|
||||
}
|
||||
|
||||
@@ -70,6 +81,7 @@ class Menu
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private function getSubMenus()
|
||||
{
|
||||
if ($this->menu->isCategoryType()) {
|
||||
@@ -79,6 +91,7 @@ class Menu
|
||||
return $this->menu->items ?? collect();
|
||||
}
|
||||
|
||||
|
||||
private function getCategorySubMenus()
|
||||
{
|
||||
return Category::tree()
|
||||
|
||||
@@ -9,16 +9,19 @@ class SubMenu
|
||||
private $subMenu;
|
||||
private $subMenuItems;
|
||||
|
||||
|
||||
public function __construct($subMenu)
|
||||
{
|
||||
$this->subMenu = $subMenu;
|
||||
}
|
||||
|
||||
|
||||
public function url()
|
||||
{
|
||||
return $this->subMenu->url();
|
||||
}
|
||||
|
||||
|
||||
public function target()
|
||||
{
|
||||
if ($this->subMenu instanceof Category) {
|
||||
@@ -28,19 +31,22 @@ class SubMenu
|
||||
return $this->subMenu->target;
|
||||
}
|
||||
|
||||
|
||||
public function name()
|
||||
{
|
||||
return $this->subMenu->name;
|
||||
}
|
||||
|
||||
|
||||
public function hasItems()
|
||||
{
|
||||
return $this->items()->isNotEmpty();
|
||||
}
|
||||
|
||||
|
||||
public function items()
|
||||
{
|
||||
if (! is_null($this->subMenuItems)) {
|
||||
if (!is_null($this->subMenuItems)) {
|
||||
return $this->subMenuItems;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,14 +3,11 @@
|
||||
namespace Modules\Menu\Providers;
|
||||
|
||||
use Modules\Menu\Admin\MenuItemTabs;
|
||||
use Modules\Support\Traits\AddsAsset;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Modules\Admin\Ui\Facades\TabManager;
|
||||
|
||||
class MenuServiceProvider extends ServiceProvider
|
||||
{
|
||||
use AddsAsset;
|
||||
|
||||
/**
|
||||
* Bootstrap any application services.
|
||||
*
|
||||
@@ -19,8 +16,5 @@ class MenuServiceProvider extends ServiceProvider
|
||||
public function boot()
|
||||
{
|
||||
TabManager::register('menu_items', MenuItemTabs::class);
|
||||
|
||||
$this->addAdminAssets('admin.menus.(create|edit)', ['admin.menu.css', 'admin.menu.js']);
|
||||
$this->addAdminAssets('admin.menus.items.(create|edit)', ['admin.media.css', 'admin.media.js', 'admin.menu.js']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
|
||||
.dd-handle-root,
|
||||
.dd-handle {
|
||||
font-family: "Roboto", sans-serif;
|
||||
font-family: "Inter", sans-serif;
|
||||
font-weight: 400;
|
||||
font-size: 15px;
|
||||
display: block;
|
||||
@@ -135,7 +135,7 @@
|
||||
|
||||
.dd-item-root > button:before,
|
||||
.dd-item > button:before {
|
||||
content: '+';
|
||||
content: "+";
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
@@ -147,7 +147,7 @@
|
||||
|
||||
.dd-item-root > button[data-action="collapse"]:before,
|
||||
.dd-item > button[data-action="collapse"]:before {
|
||||
content: '-';
|
||||
content: "-";
|
||||
font-size: 20px;
|
||||
line-height: 9px;
|
||||
}
|
||||
@@ -167,9 +167,42 @@
|
||||
border: 1px dashed #bbb;
|
||||
min-height: 100px;
|
||||
background-color: #e5e5e5;
|
||||
background-image: -webkit-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff), -webkit-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff);
|
||||
background-image: -moz-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff), -moz-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff);
|
||||
background-image: linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff), linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff);
|
||||
background-image: -webkit-linear-gradient(
|
||||
45deg,
|
||||
#ffffff 25%,
|
||||
transparent 25%,
|
||||
transparent 75%,
|
||||
#ffffff 75%,
|
||||
#ffffff
|
||||
),
|
||||
-webkit-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent
|
||||
75%, #ffffff 75%, #ffffff);
|
||||
background-image: -moz-linear-gradient(
|
||||
45deg,
|
||||
#ffffff 25%,
|
||||
transparent 25%,
|
||||
transparent 75%,
|
||||
#ffffff 75%,
|
||||
#ffffff
|
||||
),
|
||||
-moz-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent
|
||||
75%, #ffffff 75%, #ffffff);
|
||||
background-image: linear-gradient(
|
||||
45deg,
|
||||
#ffffff 25%,
|
||||
transparent 25%,
|
||||
transparent 75%,
|
||||
#ffffff 75%,
|
||||
#ffffff
|
||||
),
|
||||
linear-gradient(
|
||||
45deg,
|
||||
#ffffff 25%,
|
||||
transparent 25%,
|
||||
transparent 75%,
|
||||
#ffffff 75%,
|
||||
#ffffff
|
||||
);
|
||||
background-size: 60px 60px;
|
||||
background-position: 0 0, 30px 30px;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ return [
|
||||
'name' => 'Name',
|
||||
],
|
||||
'form' => [
|
||||
'please_save_the_menu_first' => 'Please save the menu first to add menu items.',
|
||||
'please_save_the_menu_first' => 'Please save the menu first to add menu items',
|
||||
'enable_the_menu' => 'Enable the menu',
|
||||
],
|
||||
];
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'menu_item_deleted' => 'Menu item has been deleted.',
|
||||
'menu_items_order_updated' => 'Menu items order has been updated.',
|
||||
'menu_item_deleted' => 'Menu item has been deleted',
|
||||
'menu_items_order_updated' => 'Menu items order has been updated',
|
||||
];
|
||||
|
||||
@@ -17,3 +17,12 @@
|
||||
@endsection
|
||||
|
||||
@include('menu::admin.menu_items.partials.shortcuts')
|
||||
|
||||
@push('globals')
|
||||
@vite([
|
||||
'Modules/Menu/Resources/assets/admin/sass/main.scss',
|
||||
'Modules/Menu/Resources/assets/admin/js/main.js',
|
||||
'Modules/Media/Resources/assets/admin/sass/main.scss',
|
||||
'Modules/Media/Resources/assets/admin/js/main.js'
|
||||
])
|
||||
@endpush
|
||||
@@ -18,3 +18,12 @@
|
||||
@endsection
|
||||
|
||||
@include('menu::admin.menu_items.partials.shortcuts')
|
||||
|
||||
@push('globals')
|
||||
@vite([
|
||||
'Modules/Menu/Resources/assets/admin/sass/main.scss',
|
||||
'Modules/Menu/Resources/assets/admin/js/main.js',
|
||||
'Modules/Media/Resources/assets/admin/sass/main.scss',
|
||||
'Modules/Media/Resources/assets/admin/js/main.js'
|
||||
])
|
||||
@endpush
|
||||
@@ -6,7 +6,7 @@
|
||||
@endpush
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
<script type="module">
|
||||
keypressAction([
|
||||
{ key: 'b', route: "{{ route('admin.menus.edit', $menuId) }}" },
|
||||
]);
|
||||
|
||||
@@ -17,11 +17,16 @@
|
||||
</form>
|
||||
@endsection
|
||||
|
||||
@include('menu::admin.menus.partials.shortcuts')
|
||||
|
||||
@push('globals')
|
||||
<script>
|
||||
FleetCart.langs['menu::messages.menu_item_deleted'] = '{{ trans('menu::messages.menu_item_deleted') }}';
|
||||
FleetCart.langs['menu::messages.menu_items_order_updated'] = '{{ trans('menu::messages.menu_items_order_updated') }}';
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
@include('menu::admin.menus.partials.shortcuts')
|
||||
@vite([
|
||||
'Modules/Menu/Resources/assets/admin/sass/main.scss',
|
||||
'Modules/Menu/Resources/assets/admin/js/main.js'
|
||||
])
|
||||
@endpush
|
||||
@@ -31,7 +31,7 @@
|
||||
@endpush
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
<script type="module">
|
||||
keypressAction([
|
||||
{ key: 'c', route: "{{ route('admin.menus.create') }}" },
|
||||
]);
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
@endpush
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
<script type="module">
|
||||
keypressAction([
|
||||
@isset($menu)
|
||||
{ key: 'c', route: "{{ route('admin.menus.items.create', $menu) }}" },
|
||||
|
||||
@@ -8,6 +8,12 @@ Route::get('menus', [
|
||||
'middleware' => 'can:admin.menus.index',
|
||||
]);
|
||||
|
||||
Route::get('menus/index/table', [
|
||||
'as' => 'admin.menus.table',
|
||||
'uses' => 'MenuController@table',
|
||||
'middleware' => 'can:admin.menus.index',
|
||||
]);
|
||||
|
||||
Route::get('menus/create', [
|
||||
'as' => 'admin.menus.create',
|
||||
'uses' => 'MenuController@create',
|
||||
|
||||
@@ -10,6 +10,7 @@ class MenuItemOrdener
|
||||
* Order the menu items.
|
||||
*
|
||||
* @param array $rootItem
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function order(array $rootItem)
|
||||
@@ -17,11 +18,13 @@ class MenuItemOrdener
|
||||
$this->orderChildren($rootItem['id'], $rootItem['children']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Order child menu items recursively.
|
||||
*
|
||||
* @param int $parentId
|
||||
* @param array $childItems
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function orderChildren($parentId, array $childItems)
|
||||
|
||||
Reference in New Issue
Block a user