jqh 4 年之前
父節點
當前提交
031aaae9f5

+ 7 - 3
src/Controllers/AdminController.php

@@ -2,7 +2,7 @@
 
 namespace Dcat\Admin\Controllers;
 
-use Dcat\Admin\IFrameGrid;
+use Dcat\Admin\Grid;
 use Dcat\Admin\Layout\Content;
 use Illuminate\Routing\Controller;
 
@@ -56,8 +56,12 @@ class AdminController extends Controller
      */
     public function index(Content $content)
     {
-        if (request(IFrameGrid::QUERY_NAME)) {
-            return $content->body($this->iFrameGrid());
+        if (request(Grid::IFRAME_QUERY_NAME)) {
+            if (method_exists($this, 'iframe')) {
+                return $content->full()->body($this->iframe());
+            }
+
+            return $content->full()->body($this->iFrameGrid());
         }
 
         return $content

+ 38 - 40
src/Controllers/AuthController.php

@@ -159,57 +159,55 @@ class AuthController extends Controller
      */
     protected function settingForm()
     {
-        $form = new Form(new Administrator());
+        RETURN new Form(new Administrator(), function (Form $form) {
+            $form->action(admin_url('auth/setting'));
 
-        $form->action(admin_url('auth/setting'));
+            $form->disableCreatingCheck();
+            $form->disableEditingCheck();
+            $form->disableViewCheck();
 
-        $form->disableCreatingCheck();
-        $form->disableEditingCheck();
-        $form->disableViewCheck();
+            $form->tools(function (Form\Tools $tools) {
+                $tools->disableView();
+                $tools->disableDelete();
+            });
 
-        $form->tools(function (Form\Tools $tools) {
-            $tools->disableView();
-            $tools->disableDelete();
-        });
+            $form->display('username', trans('admin.username'));
+            $form->text('name', trans('admin.name'))->required();
+            $form->image('avatar', trans('admin.avatar'))->autoUpload();
 
-        $form->display('username', trans('admin.username'));
-        $form->text('name', trans('admin.name'))->required();
-        $form->image('avatar', trans('admin.avatar'))->autoUpload();
+            $form->password('old_password', trans('admin.old_password'));
 
-        $form->password('old_password', trans('admin.old_password'));
+            $form->password('password', trans('admin.password'))
+                ->minLength(5)
+                ->maxLength(20)
+                ->customFormat(function ($v) {
+                    if ($v == $this->password) {
+                        return;
+                    }
 
-        $form->password('password', trans('admin.password'))
-            ->minLength(5)
-            ->maxLength(20)
-            ->customFormat(function ($v) {
-                if ($v == $this->password) {
-                    return;
-                }
+                    return $v;
+                });
+            $form->password('password_confirmation', trans('admin.password_confirmation'))->same('password');
 
-                return $v;
-            });
-        $form->password('password_confirmation', trans('admin.password_confirmation'))->same('password');
+            $form->ignore(['password_confirmation', 'old_password']);
 
-        $form->ignore(['password_confirmation', 'old_password']);
-
-        $form->saving(function (Form $form) {
-            if ($form->password && $form->model()->password != $form->password) {
-                $form->password = bcrypt($form->password);
-            }
+            $form->saving(function (Form $form) {
+                if ($form->password && $form->model()->password != $form->password) {
+                    $form->password = bcrypt($form->password);
+                }
 
-            if (! $form->password) {
-                $form->deleteInput('password');
-            }
-        });
+                if (! $form->password) {
+                    $form->deleteInput('password');
+                }
+            });
 
-        $form->saved(function (Form $form) {
-            return $form->redirect(
-                admin_url('auth/setting'),
-                trans('admin.update_succeeded')
-            );
+            $form->saved(function (Form $form) {
+                return $form->redirect(
+                    admin_url('auth/setting'),
+                    trans('admin.update_succeeded')
+                );
+            });
         });
-
-        return $form;
     }
 
     /**

+ 7 - 7
src/Controllers/LogController.php

@@ -22,8 +22,8 @@ class LogController extends Controller
     protected function grid()
     {
         return new Grid(new OperationLog(), function (Grid $grid) {
-            $grid->id('ID')->sortable();
-            $grid->user(trans('admin.user'))
+            $grid->column('id')->sortable();
+            $grid->column('user', trans('admin.user'))
                 ->get('name')
                 ->link(function () {
                     if ($this->user) {
@@ -32,18 +32,18 @@ class LogController extends Controller
                 })
                 ->responsive();
 
-            $grid->method(trans('admin.method'))
+            $grid->column('method', trans('admin.method'))
                 ->responsive()
                 ->label(OperationLogModel::$methodColors)
                 ->filterByValue();
 
-            $grid->path(trans('admin.uri'))->responsive()->display(function ($v) {
+            $grid->column('path', trans('admin.uri'))->responsive()->display(function ($v) {
                 return "<code>$v</code>";
             })->filterByValue();
 
-            $grid->ip('IP')->filterByValue()->responsive();
+            $grid->column('ip', 'IP')->filterByValue()->responsive();
 
-            $grid->input->responsive()->display(function ($input) {
+            $grid->column('input')->responsive()->display(function ($input) {
                 $input = json_decode($input, true);
 
                 if (empty($input)) {
@@ -59,7 +59,7 @@ class LogController extends Controller
                 return '<pre class="dump">'.json_encode($input, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE).'</pre>';
             });
 
-            $grid->created_at(trans('admin.created_at'))->responsive();
+            $grid->column('created_at', trans('admin.created_at'))->responsive();
 
             $grid->model()->with('user')->orderBy('id', 'DESC');
 

+ 0 - 22
src/Controllers/PermissionController.php

@@ -4,8 +4,6 @@ namespace Dcat\Admin\Controllers;
 
 use Dcat\Admin\Admin;
 use Dcat\Admin\Form;
-use Dcat\Admin\Grid;
-use Dcat\Admin\IFrameGrid;
 use Dcat\Admin\Layout\Content;
 use Dcat\Admin\Models\Repositories\Permission;
 use Dcat\Admin\Tree;
@@ -20,32 +18,12 @@ class PermissionController extends AdminController
 
     public function index(Content $content)
     {
-        if (request(IFrameGrid::QUERY_NAME)) {
-            return $content->body($this->iFrameGrid());
-        }
-
         return $content
             ->title($this->title())
             ->description(trans('admin.list'))
             ->body($this->treeView());
     }
 
-    protected function iFrameGrid()
-    {
-        $grid = new IFrameGrid(new Permission());
-
-        $grid->id->sortable();
-        $grid->slug;
-        $grid->name;
-
-        $grid->filter(function (Grid\Filter $filter) {
-            $filter->like('slug');
-            $filter->like('name');
-        });
-
-        return $grid;
-    }
-
     protected function treeView()
     {
         $model = config('admin.database.permissions_model');

+ 31 - 40
src/Controllers/RoleController.php

@@ -5,7 +5,6 @@ namespace Dcat\Admin\Controllers;
 use Dcat\Admin\Auth\Permission;
 use Dcat\Admin\Form;
 use Dcat\Admin\Grid;
-use Dcat\Admin\IFrameGrid;
 use Dcat\Admin\Models\Repositories\Role;
 use Dcat\Admin\Models\Role as RoleModel;
 use Dcat\Admin\Show;
@@ -19,53 +18,45 @@ class RoleController extends AdminController
         return trans('admin.roles');
     }
 
-    /**
-     * Make a grid builder.
-     *
-     * @return Grid
-     */
     protected function grid()
     {
-        if ($mini = request(IFrameGrid::QUERY_NAME)) {
-            $grid = new IFrameGrid(new Role());
-        } else {
-            $grid = new Grid(new Role());
-        }
-
-        $grid->id('ID')->sortable();
-        $grid->slug->label('primary');
-        $grid->name;
-
-        if (! $mini) {
-            $grid->created_at;
-            $grid->updated_at->sortable();
-        }
-
-        $grid->disableBatchDelete();
-        $grid->disableEditButton();
-        $grid->showQuickEditButton();
-        $grid->disableFilterButton();
-        $grid->quickSearch(['id', 'name', 'slug']);
-        $grid->enableDialogCreate();
-
-        $grid->actions(function (Grid\Displayers\Actions $actions) {
-            $roleModel = config('admin.database.roles_model');
-            if ($roleModel::isAdministrator($actions->row->slug)) {
-                $actions->disableDelete();
-            }
+        return new Grid(new Role(), function (Grid $grid) {
+            $grid->column('id')->sortable();
+            $grid->column('slug')->label('primary');
+            $grid->column('name');
+
+            $grid->column('created_at');
+            $grid->column('updated_at')->sortable();
+
+            $grid->disableBatchDelete();
+            $grid->disableEditButton();
+            $grid->showQuickEditButton();
+            $grid->disableFilterButton();
+            $grid->quickSearch(['id', 'name', 'slug']);
+            $grid->enableDialogCreate();
+
+            $grid->actions(function (Grid\Displayers\Actions $actions) {
+                $roleModel = config('admin.database.roles_model');
+                if ($roleModel::isAdministrator($actions->row->slug)) {
+                    $actions->disableDelete();
+                }
+            });
         });
+    }
 
-        return $grid;
+    protected function iframe()
+    {
+        return $this->grid()->inIframe();
     }
 
     protected function detail($id)
     {
         return Show::make($id, new Role('permissions'), function (Show $show) {
-            $show->id;
-            $show->slug;
-            $show->name;
+            $show->field('id');
+            $show->field('slug');
+            $show->field('name');
 
-            $show->permissions->unescape()->as(function ($permission) {
+            $show->field('permissions')->unescape()->as(function ($permission) {
                 $permissionModel = config('admin.database.permissions_model');
                 $permissionModel = new $permissionModel();
                 $nodes = $permissionModel->allNodes();
@@ -80,8 +71,8 @@ class RoleController extends AdminController
                 return $tree->render();
             });
 
-            $show->created_at;
-            $show->updated_at;
+            $show->field('created_at');
+            $show->field('updated_at');
 
             if ($show->getKey() == RoleModel::ADMINISTRATOR_ID) {
                 $show->disableDeleteButton();

+ 24 - 24
src/Controllers/UserController.php

@@ -22,17 +22,17 @@ class UserController extends AdminController
     protected function grid()
     {
         return Grid::make(new Administrator('roles'), function (Grid $grid) {
-            $grid->id('ID')->sortable();
-            $grid->username;
-            $grid->name;
+            $grid->column('id')->sortable();
+            $grid->column('username');
+            $grid->column('name');
 
             if (config('admin.permission.enable')) {
-                $grid->roles->pluck('name')->label('primary', 3);
+                $grid->column('roles')->pluck('name')->label('primary', 3);
 
                 $permissionModel = config('admin.database.permissions_model');
                 $roleModel = config('admin.database.roles_model');
                 $nodes = (new $permissionModel())->allNodes();
-                $grid->permissions
+                $grid->column('permissions')
                     ->if(function () {
                         return ! empty($this->roles);
                     })
@@ -49,8 +49,8 @@ class UserController extends AdminController
                     ->emptyString();
             }
 
-            $grid->created_at;
-            $grid->updated_at->sortable();
+            $grid->column('created_at');
+            $grid->column('updated_at')->sortable();
 
             $grid->quickSearch(['id', 'name', 'username']);
 
@@ -67,31 +67,31 @@ class UserController extends AdminController
         });
     }
 
-    protected function iFrameGrid()
+    protected function iframe()
     {
-        $grid = new IFrameGrid(new Administrator());
+        return new Grid(new Administrator(), function (Grid $grid) {
+            $grid->inIframe();
 
-        $grid->quickSearch(['id', 'name', 'username']);
-
-        $grid->id->sortable();
-        $grid->username;
-        $grid->name;
-        $grid->created_at;
+            $grid->quickSearch(['id', 'name', 'username']);
 
-        return $grid;
+            $grid->column('id')->sortable();
+            $grid->column('username');
+            $grid->column('name');
+            $grid->column('created_at');
+        });
     }
 
     protected function detail($id)
     {
         return Show::make($id, new Administrator('roles'), function (Show $show) {
-            $show->id;
-            $show->username;
-            $show->name;
+            $show->field('id');
+            $show->field('username');
+            $show->field('name');
 
-            $show->avatar(__('admin.avatar'))->image();
+            $show->field('avatar', __('admin.avatar'))->image();
 
             if (config('admin.permission.enable')) {
-                $show->roles->as(function ($roles) {
+                $show->field('roles')->as(function ($roles) {
                     if (! $roles) {
                         return;
                     }
@@ -99,7 +99,7 @@ class UserController extends AdminController
                     return collect($roles)->pluck('name');
                 })->label();
 
-                $show->permissions->unescape()->as(function () {
+                $show->field('permissions')->unescape()->as(function () {
                     $roles = (array) $this->roles;
 
                     $permissionModel = config('admin.database.permissions_model');
@@ -128,8 +128,8 @@ class UserController extends AdminController
                 });
             }
 
-            $show->created_at;
-            $show->updated_at;
+            $show->field('created_at');
+            $show->field('updated_at');
         });
     }
 

+ 22 - 0
src/Grid.php

@@ -38,6 +38,8 @@ class Grid
     const CREATE_MODE_DEFAULT = 'default';
     const CREATE_MODE_DIALOG = 'dialog';
 
+    const IFRAME_QUERY_NAME = '_grid_iframe_';
+
     /**
      * The grid data model instance.
      *
@@ -799,12 +801,32 @@ HTML;
         return new static(...$params);
     }
 
+    /**
+     * @return $this
+     */
+    public function inIframe()
+    {
+        $this->setName('_dialog_');
+        $this->disableCreateButton();
+        $this->disableActions();
+        $this->disablePerPages();
+        $this->disableBatchActions();
+
+        $this->rowSelector()->click();
+
+        Admin::style('#app{padding: 1.4rem 1rem 1rem}');
+
+        return $this;
+    }
+
     /**
      * Enable responsive tables.
      *
      * @see https://github.com/nadangergeo/RWD-Table-Patterns
      *
      * @return Responsive
+     *
+     * @deprecated 即将在2.0版本中废弃
      */
     public function responsive()
     {

+ 4 - 3
src/IFrameGrid.php

@@ -4,9 +4,12 @@ namespace Dcat\Admin;
 
 use Dcat\Admin\Layout\Content;
 
+/**
+ * @deprecated 即将在2.0版本中废弃
+ */
 class IFrameGrid extends Grid
 {
-    const QUERY_NAME = '_resource_';
+    const QUERY_NAME = '_grid_iframe_';
 
     public function __construct($repository, $builder = null)
     {
@@ -17,8 +20,6 @@ class IFrameGrid extends Grid
         $this->disableActions();
         $this->disablePerPages();
         $this->disableBatchActions();
-        $this->disableFilterButton();
-        $this->toolsWithOutline();
 
         $this->rowSelector()->click();
 

+ 4 - 4
src/Scaffold/GridCreator.php

@@ -17,7 +17,7 @@ trait GridCreator
         $timestamps = $timestamps === null ? request('timestamps') : $timestamps;
 
         $rows = [
-            "\$grid->{$primaryKey}->sortable();",
+            "\$grid->column('{$primaryKey}')->sortable();",
         ];
 
         foreach ($fields as $field) {
@@ -29,12 +29,12 @@ trait GridCreator
                 continue;
             }
 
-            $rows[] = "            \$grid->{$field['name']};";
+            $rows[] = "            \$grid->column('{$field['name']}');";
         }
 
         if ($timestamps) {
-            $rows[] = '            $grid->created_at;';
-            $rows[] = '            $grid->updated_at->sortable();';
+            $rows[] = '            $grid->column(\'created_at\');';
+            $rows[] = '            $grid->column(\'updated_at\')->sortable();';
         }
 
         $rows[] = <<<EOF

+ 4 - 4
src/Scaffold/ShowCreator.php

@@ -19,7 +19,7 @@ trait ShowCreator
         $rows = [];
 
         if ($primaryKey) {
-            $rows[] = "            \$show->{$primaryKey};";
+            $rows[] = "            \$show->field('{$primaryKey}');";
         }
 
         foreach ($fields as $k => $field) {
@@ -27,7 +27,7 @@ trait ShowCreator
                 continue;
             }
 
-            $rows[] = "            \$show->{$field['name']};";
+            $rows[] = "            \$show->field('{$field['name']}');";
 
 //            if ($k === 1 && (count($fields) > 2 || $timestamps)) {
 //                $rows[] = '            $show->divider();';
@@ -35,8 +35,8 @@ trait ShowCreator
         }
 
         if ($timestamps) {
-            $rows[] = '            $show->created_at;';
-            $rows[] = '            $show->updated_at;';
+            $rows[] = '            $show->field(\'created_at\');';
+            $rows[] = '            $show->field(\'updated_at\');';
         }
 
         return trim(implode("\n", $rows));