|
@@ -3,41 +3,52 @@
|
|
|
namespace App\Distributor\Controllers;
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+use App\Distributor\Actions\MenuShow;
|
|
|
use App\Distributor\Repositories\DistProduct;
|
|
|
use App\Distributor\Repositories\DistProductCategory;
|
|
|
use App\Distributor\Repositories\SiteMenu;
|
|
|
use App\Distributor\Repositories\SitePages;
|
|
|
use App\Distributor\Repositories\SitePagesTag;
|
|
|
+use App\Libraries\CommonHelper;
|
|
|
use Dcat\Admin\Form;
|
|
|
use Dcat\Admin\Grid;
|
|
|
-use Dcat\Admin\Show;
|
|
|
-use Dcat\Admin\Http\Controllers\AdminController;
|
|
|
use Dcat\Admin\Layout\Content;
|
|
|
use Dcat\Admin\Admin;
|
|
|
use Dcat\Admin\Tree;
|
|
|
use Dcat\Admin\Layout\Row;
|
|
|
+use Dcat\Admin\Widgets\Box;
|
|
|
use function Symfony\Component\String\u;
|
|
|
+use Dcat\Admin\Layout\Column;
|
|
|
|
|
|
-class SiteMenuController extends AdminController
|
|
|
+class SiteMenuController extends AdminDistController
|
|
|
{
|
|
|
+
|
|
|
/**
|
|
|
* page index
|
|
|
*/
|
|
|
public function index(Content $content)
|
|
|
{
|
|
|
+ $location = isset($_GET['location']) ? intval($_GET['location']) : 0;
|
|
|
+ $header = admin_trans( 'admin.top_menu');
|
|
|
+ if ($location == 1) {
|
|
|
+ $header = admin_trans( 'admin.footer_menu');
|
|
|
+ }
|
|
|
return $content
|
|
|
- ->header(admin_trans( 'admin.top_menu') )
|
|
|
+ ->header($header)
|
|
|
->description('')
|
|
|
- ->body($this->tree());
|
|
|
+ ->body($this->tree($location));
|
|
|
}
|
|
|
|
|
|
- private function tree()
|
|
|
+
|
|
|
+
|
|
|
+ private function tree($location)
|
|
|
{
|
|
|
- return function (Row $row) {
|
|
|
+ $thisObject = $this;
|
|
|
+ return function (Row $row) use ($location, $thisObject) {
|
|
|
$tree = new Tree(new SiteMenu);
|
|
|
-
|
|
|
+ //两层
|
|
|
+ $tree->maxDepth(2);
|
|
|
+ //标题显示
|
|
|
$tree->branch(function ($branch) {
|
|
|
$arr[] = $branch['title'];
|
|
|
if ($branch['uri']) {
|
|
@@ -45,64 +56,27 @@ class SiteMenuController extends AdminController
|
|
|
}
|
|
|
return implode(' - ', $arr);
|
|
|
});
|
|
|
-
|
|
|
+ //操作
|
|
|
+ $tree->actions(function (Tree\Actions $actions) {
|
|
|
+ $actions->prepend(new MenuShow());
|
|
|
+ });
|
|
|
//按钮
|
|
|
$tree->disableEditButton();
|
|
|
$tree->disableCreateButton();
|
|
|
$tree->showQuickCreateButton();
|
|
|
$tree->showQuickEditButton();
|
|
|
$row->column(6, $tree);
|
|
|
+ //增加JS,使新增与编辑带location
|
|
|
+ $paramsUrl = 'location='.$location;
|
|
|
+ CommonHelper::replaceAddEditerUrl('.tree-quick-create', '.tree-quick-edit', $paramsUrl);
|
|
|
+ //主页权限
|
|
|
+ $tree->query(function ($model) use ($location) {
|
|
|
+ return $model->where('dist_id', getDistributorId())->where('menu_location', $location);
|
|
|
+ });
|
|
|
};
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * Make a grid builder.
|
|
|
- *
|
|
|
- * @return Grid
|
|
|
- */
|
|
|
-// protected function grid()
|
|
|
-// {
|
|
|
-// return Grid::make(new SiteMenu(), function (Grid $grid) {
|
|
|
-// $grid->column('id')->sortable();
|
|
|
-// $grid->column('parent_id');
|
|
|
-// $grid->column('order');
|
|
|
-// $grid->column('title');
|
|
|
-// $grid->column('uri');
|
|
|
-// $grid->column('show');
|
|
|
-// $grid->column('menu_type');
|
|
|
-// $grid->column('menu_config');
|
|
|
-// $grid->column('created_at');
|
|
|
-// $grid->column('updated_at')->sortable();
|
|
|
-//
|
|
|
-// $grid->filter(function (Grid\Filter $filter) {
|
|
|
-// $filter->equal('id');
|
|
|
-//
|
|
|
-// });
|
|
|
-// });
|
|
|
-// }
|
|
|
|
|
|
- /**
|
|
|
- * Make a show builder.
|
|
|
- *
|
|
|
- * @param mixed $id
|
|
|
- *
|
|
|
- * @return Show
|
|
|
- */
|
|
|
-// protected function detail($id)
|
|
|
-// {
|
|
|
-// return Show::make($id, new SiteMenu(), function (Show $show) {
|
|
|
-// $show->field('id');
|
|
|
-// $show->field('parent_id');
|
|
|
-// $show->field('order');
|
|
|
-// $show->field('title');
|
|
|
-// $show->field('uri');
|
|
|
-// $show->field('show');
|
|
|
-// $show->field('menu_type');
|
|
|
-// $show->field('menu_config');
|
|
|
-// $show->field('created_at');
|
|
|
-// $show->field('updated_at');
|
|
|
-// });
|
|
|
-// }
|
|
|
|
|
|
/**
|
|
|
* Make a form builder.
|
|
@@ -111,13 +85,19 @@ class SiteMenuController extends AdminController
|
|
|
*/
|
|
|
protected function form()
|
|
|
{
|
|
|
+ $location = isset($_GET['location']) ? intval($_GET['location']) : 0;
|
|
|
$thisObject = $this;
|
|
|
- return Form::make(new SiteMenu(), function (Form $form) use ($thisObject) {
|
|
|
+ return Form::make(new SiteMenu(), function (Form $form) use ($thisObject,$location) {
|
|
|
$menuConfig = $form->model()->menu_config;
|
|
|
+ //父ID
|
|
|
$form->select('parent_id', admin_trans_label('parent_id'))
|
|
|
- ->options(SiteMenu::selectOptions())
|
|
|
- ->required();
|
|
|
+ ->options(SiteMenu::selectOptions(function ($query) use ($location) {
|
|
|
+ $query = $query->where('menu_location',$location)->where('dist_id', getDistributorId())->orderBy('order', 'asc');
|
|
|
+ return $query;
|
|
|
+ }))->required();
|
|
|
+ //标题
|
|
|
$form->text('title')->required();
|
|
|
+ //类型
|
|
|
$form->select('menu_type')->options(config('dictionary.menu_type'))->required()
|
|
|
->when(1, function (Form $form) use ($menuConfig,$thisObject) {
|
|
|
//选择产品
|
|
@@ -145,10 +125,14 @@ class SiteMenuController extends AdminController
|
|
|
//url
|
|
|
$form->url('url')->value($thisObject->getArrayValue('url',$menuConfig));
|
|
|
});
|
|
|
-
|
|
|
+ //显示
|
|
|
$form->switch('show')->default(1);
|
|
|
- $form->hidden('uri');
|
|
|
+ //隐藏字段
|
|
|
$form->textarea('menu_config')->hideInDialog();
|
|
|
+ $form->hidden('menu_location')->value($location);
|
|
|
+ $form->hidden('uri');
|
|
|
+ $form->hidden('dist_id'); // 隐藏dist_id字段,用于保存
|
|
|
+ //以下字段不保存
|
|
|
$form->ignore(['collections_type','product_category','pages_tag','product','posts','url']);
|
|
|
//保存事件
|
|
|
$form->submitted(function (Form $form) use ($thisObject) {
|
|
@@ -156,6 +140,10 @@ class SiteMenuController extends AdminController
|
|
|
$form->uri = $result['uri'];
|
|
|
$form->menu_config = $result['menuConfig'];
|
|
|
});
|
|
|
+ //保存前,强制写死dist_id
|
|
|
+ $form->saving(function (Form $form) {
|
|
|
+ $form->dist_id =getDistributorId();
|
|
|
+ });
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -205,4 +193,6 @@ class SiteMenuController extends AdminController
|
|
|
}
|
|
|
return "";
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|