first upload all files
This commit is contained in:
70
Modules/Menu/Http/Controllers/Admin/MenuController.php
Normal file
70
Modules/Menu/Http/Controllers/Admin/MenuController.php
Normal file
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Menu\Http\Controllers\Admin;
|
||||
|
||||
use Modules\Menu\Entities\Menu;
|
||||
use Modules\Admin\Traits\HasCrudActions;
|
||||
use Modules\Menu\Http\Requests\SaveMenuRequest;
|
||||
|
||||
class MenuController
|
||||
{
|
||||
use HasCrudActions;
|
||||
|
||||
/**
|
||||
* Model for the resource.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $model = Menu::class;
|
||||
|
||||
/**
|
||||
* Label of the resource.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $label = 'menu::menus.menu';
|
||||
|
||||
/**
|
||||
* View path of the resource.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $viewPath = 'menu::admin.menus';
|
||||
|
||||
/**
|
||||
* Form requests for the resource.
|
||||
*
|
||||
* @var array|string
|
||||
*/
|
||||
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
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
$menu = Menu::withoutGlobalScope('active')->findOrFail($id);
|
||||
|
||||
$menuItems = $menu->menuItems()
|
||||
->withoutGlobalScope('active')
|
||||
->withoutGlobalScope('not_root')
|
||||
->get()
|
||||
->nest();
|
||||
|
||||
return view('menu::admin.menus.edit', compact('menu', 'menuItems'));
|
||||
}
|
||||
}
|
||||
117
Modules/Menu/Http/Controllers/Admin/MenuItemController.php
Normal file
117
Modules/Menu/Http/Controllers/Admin/MenuItemController.php
Normal file
@@ -0,0 +1,117 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Menu\Http\Controllers\Admin;
|
||||
|
||||
use Modules\Menu\Entities\Menu;
|
||||
use Modules\Menu\Entities\MenuItem;
|
||||
use Modules\Admin\Ui\Facades\TabManager;
|
||||
use Modules\Menu\Http\Requests\SaveMenuItemRequest;
|
||||
|
||||
class MenuItemController
|
||||
{
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @param int $menuId
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create($menuId)
|
||||
{
|
||||
$menuItem = new MenuItem;
|
||||
$tabs = TabManager::get('menu_items');
|
||||
|
||||
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
|
||||
*/
|
||||
public function edit($menuId, $id)
|
||||
{
|
||||
$menuItem = MenuItem::withoutGlobalScope('active')->findOrFail($id);
|
||||
$tabs = TabManager::get('menu_items');
|
||||
|
||||
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
|
||||
*/
|
||||
public function update($menuId, $id, SaveMenuItemRequest $request)
|
||||
{
|
||||
MenuItem::withoutGlobalScope('active')
|
||||
->findOrFail($id)
|
||||
->update(
|
||||
$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')]));
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param int $id
|
||||
* @return void
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
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)
|
||||
{
|
||||
if (is_null($attributes['parent_id'])) {
|
||||
$attributes['parent_id'] = $this->parentId($menuId);
|
||||
}
|
||||
|
||||
return array_merge($attributes, ['menu_id' => $menuId]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get parent id for the given menu id.
|
||||
*
|
||||
* @param string string
|
||||
* @return int
|
||||
*/
|
||||
private function parentId($menuId)
|
||||
{
|
||||
return MenuItem::withoutGlobalScope('not_root')
|
||||
->where('menu_id', $menuId)
|
||||
->value('id');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Menu\Http\Controllers\Admin;
|
||||
|
||||
use Modules\Menu\Services\MenuItemOrdener;
|
||||
|
||||
class MenuItemOrderController
|
||||
{
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Modules\Menu\Services\MenuItemOrdener $ordener
|
||||
* @return void
|
||||
*/
|
||||
public function update(MenuItemOrdener $ordener)
|
||||
{
|
||||
$ordener->order(request()->json()->all());
|
||||
}
|
||||
}
|
||||
35
Modules/Menu/Http/Requests/SaveMenuItemRequest.php
Normal file
35
Modules/Menu/Http/Requests/SaveMenuItemRequest.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Menu\Http\Requests;
|
||||
|
||||
use Illuminate\Validation\Rule;
|
||||
use Modules\Core\Http\Requests\Request;
|
||||
|
||||
class SaveMenuItemRequest extends Request
|
||||
{
|
||||
/**
|
||||
* Available attributes.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $availableAttributes = 'menu::attributes';
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'name' => 'required',
|
||||
'type' => ['required', Rule::in('category', 'page', 'url')],
|
||||
'category_id' => 'required_if:type,category',
|
||||
'page_id' => 'required_if:type,page',
|
||||
'url' => 'required_if:type,url',
|
||||
'target' => ['required', Rule::in('_self', '_blank')],
|
||||
'is_fluid' => 'required|boolean',
|
||||
'is_active' => 'required|boolean',
|
||||
];
|
||||
}
|
||||
}
|
||||
27
Modules/Menu/Http/Requests/SaveMenuRequest.php
Normal file
27
Modules/Menu/Http/Requests/SaveMenuRequest.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Menu\Http\Requests;
|
||||
|
||||
use Modules\Core\Http\Requests\Request;
|
||||
|
||||
class SaveMenuRequest extends Request
|
||||
{
|
||||
/**
|
||||
* Available attributes.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $availableAttributes = 'menu::attributes';
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'name' => 'required',
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user