101 lines
3.7 KiB
PHP
101 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use Dcat\Admin\Admin;
|
|
use Dcat\Admin\Http\Actions\Menu\Show;
|
|
use Dcat\Admin\Http\Controllers\MenuController as BaseController;
|
|
use Dcat\Admin\Layout\Column;
|
|
use Dcat\Admin\Layout\Content;
|
|
use Dcat\Admin\Layout\Row;
|
|
use Dcat\Admin\Tree;
|
|
use Dcat\Admin\Widgets\Box;
|
|
use Dcat\Admin\Widgets\Form as WidgetForm;
|
|
|
|
class MenuController extends BaseController
|
|
{
|
|
public function index(Content $content)
|
|
{
|
|
return $content
|
|
->title($this->title())
|
|
->description(trans('admin.list'))
|
|
->body(function (Row $row) {
|
|
$row->column(7, $this->treeView()->render());
|
|
if (Admin::user()->can('dcat.admin.menus.create')) {
|
|
$row->column(5, function (Column $column) {
|
|
$form = new WidgetForm();
|
|
$form->action(admin_url('auth/menu'));
|
|
|
|
$menuModel = config('admin.database.menu_model');
|
|
$permissionModel = config('admin.database.permissions_model');
|
|
$roleModel = config('admin.database.roles_model');
|
|
|
|
$form->select('parent_id', trans('admin.parent_id'))->options($menuModel::selectOptions());
|
|
$form->text('title', trans('admin.title'))->required();
|
|
$form->icon('icon', trans('admin.icon'))->help($this->iconHelp());
|
|
$form->text('uri', trans('admin.uri'));
|
|
|
|
if ($menuModel::withRole()) {
|
|
$form->multipleSelect('roles', trans('admin.roles'))->options($roleModel::all()->pluck('name', 'id'));
|
|
}
|
|
if ($menuModel::withPermission()) {
|
|
$form->tree('permissions', trans('admin.permission'))
|
|
->expand(false)
|
|
->treeState(false)
|
|
->nodes((new $permissionModel())->allNodes());
|
|
}
|
|
|
|
$form->width(9, 2);
|
|
|
|
$column->append(Box::make(trans('admin.new'), $form));
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* @return \Dcat\Admin\Tree
|
|
*/
|
|
protected function treeView()
|
|
{
|
|
$menuModel = config('admin.database.menu_model');
|
|
|
|
return new Tree(new $menuModel(), function (Tree $tree) {
|
|
$tree->disableCreateButton();
|
|
$tree->disableQuickCreateButton();
|
|
$tree->disableEditButton();
|
|
$tree->maxDepth(3);
|
|
if (Admin::user()->cannot('dcat.admin.menus.edit')) {
|
|
$tree->disableSaveButton();
|
|
}
|
|
|
|
$tree->actions(function (Tree\Actions $actions) {
|
|
if ($actions->getRow()->extension) {
|
|
$actions->disableDelete();
|
|
} else {
|
|
$actions->disableDelete(Admin::user()->cannot('dcat.admin.menus.destroy'));
|
|
}
|
|
$actions->disableEdit(Admin::user()->cannot('dcat.admin.menus.edit'));
|
|
|
|
$actions->prepend(new Show());
|
|
});
|
|
|
|
$tree->branch(function ($branch) {
|
|
$payload = "<i class='fa {$branch['icon']}'></i> <strong>{$branch['title']}</strong>";
|
|
|
|
if (! isset($branch['children'])) {
|
|
if (url()->isValidUrl($branch['uri'])) {
|
|
$uri = $branch['uri'];
|
|
} else {
|
|
$uri = admin_base_path($branch['uri']);
|
|
}
|
|
|
|
$payload .= " <a href=\"$uri\" class=\"dd-nodrag\">$uri</a>";
|
|
}
|
|
|
|
return $payload;
|
|
});
|
|
});
|
|
}
|
|
}
|