jqh 6 年 前
コミット
e1cb26417f

+ 8 - 6
resources/views/partials/navbar-user-panel.blade.php

@@ -1,19 +1,20 @@
+@if($user)
 <li class="dropdown user user-menu">
     <!-- Menu Toggle Button -->
     <a href="#" class="dropdown-toggle" data-toggle="dropdown">
         <!-- The user image in the navbar-->
-        <img src="{{ Dcat\Admin\Admin::user()->getAvatar() }}" class="user-image" alt="User Image">
+        <img src="{{ $user->getAvatar() }}" class="user-image" alt="User Image">
         <!-- hidden-xs hides the username on small devices so only the image appears. -->
-        <span class="hidden-xs">{{ Dcat\Admin\Admin::user()->name }}</span>
+        <span class="hidden-xs">{{ $user->name }}</span>
     </a>
     <ul class="dropdown-menu">
         <!-- The user image in the menu -->
         <li class="user-header">
-            <img src="{{ Dcat\Admin\Admin::user()->getAvatar() }}" class="img-circle" alt="User Image">
+            <img src="{{ $user->getAvatar() }}" class="img-circle" alt="User Image">
 
             <p>
-                {{ Dcat\Admin\Admin::user()->name }}
-                <small>Member since admin {{ Dcat\Admin\Admin::user()->created_at }}</small>
+                {{ $user->name }}
+                <small>Member since admin {{ $user->created_at }}</small>
             </p>
         </li>
         <li class="user-footer">
@@ -25,4 +26,5 @@
             </div>
         </li>
     </ul>
-</li>
+</li>
+@endif

+ 5 - 3
resources/views/partials/sidebar-user-panel.blade.php

@@ -1,11 +1,13 @@
+@if($user)
 <!-- Sidebar user panel (optional) -->
 <div class="user-panel">
     <div class="pull-left image">
-        <img style="max-height:45px" src="{{ Dcat\Admin\Admin::user()->getAvatar() }}" class="img-circle">
+        <img style="max-height:45px" src="{{ $user->getAvatar() }}" class="img-circle">
     </div>
     <div class="pull-left info">
-        <p>{{ Dcat\Admin\Admin::user()->name }}</p>
+        <p>{{ $user->name }}</p>
         <!-- Status -->
         <a href="#"><i class="fa fa-circle text-success"></i> {{ trans('admin.online') }}</a>
     </div>
-</div>
+</div>
+@endif

+ 6 - 2
src/AdminServiceProvider.php

@@ -181,11 +181,15 @@ class AdminServiceProvider extends ServiceProvider
     {
         Content::composing(function () {
             if (! admin_has_default_section(\AdminSection::NAVBAR_USER_PANEL)) {
-                admin_inject_default_section(\AdminSection::NAVBAR_USER_PANEL, view('admin::partials.navbar-user-panel'));
+                admin_inject_default_section(\AdminSection::NAVBAR_USER_PANEL, function () {
+                    return view('admin::partials.navbar-user-panel', ['user' => Admin::user()]);
+                });
             }
 
             if (! admin_has_default_section(\AdminSection::LEFT_SIDEBAR_USER_PANEL)) {
-                admin_inject_default_section(\AdminSection::LEFT_SIDEBAR_USER_PANEL, view('admin::partials.sidebar-user-panel'));
+                admin_inject_default_section(\AdminSection::LEFT_SIDEBAR_USER_PANEL, function () {
+                    return view('admin::partials.sidebar-user-panel', ['user' => Admin::user()]);
+                });
             }
 
             // Register menu

+ 1 - 1
src/Console/stubs/HomeController.stub

@@ -14,7 +14,7 @@ class HomeController extends Controller
     public function index(Content $content)
     {
         return $content
-            ->header('Dashboard')
+            ->title('Dashboard')
             ->description('Description...')
             ->row(Dashboard::title())
             ->row(function (Row $row) {

+ 3 - 3
src/Controllers/AuthController.php

@@ -101,7 +101,7 @@ class AuthController extends Controller
         );
 
         return $content
-            ->header(trans('admin.user_setting'))
+            ->title(trans('admin.user_setting'))
             ->body($form->edit(Admin::user()->getKey()));
     }
 
@@ -153,6 +153,8 @@ class AuthController extends Controller
     {
         $form = new Form(new Administrator());
 
+        $form->action(admin_url('auth/setting'));
+
         $form->disableCreatingCheck();
         $form->disableEditingCheck();
         $form->disableViewCheck();
@@ -180,8 +182,6 @@ class AuthController extends Controller
             });
         $form->password('password_confirmation', trans('admin.password_confirmation'))->same('password');
 
-        $form->setAction(admin_url('auth/setting'));
-
         $form->ignore(['password_confirmation', 'old_password']);
 
         $form->saving(function (Form $form) {

+ 1 - 1
src/Controllers/ExtensionController.php

@@ -29,7 +29,7 @@ class ExtensionController extends Controller
         $this->define();
 
         return $content
-            ->header(admin_trans_label('Extensions'))
+            ->title(admin_trans_label('Extensions'))
             ->description(trans('admin.list'))
             ->body($this->grid());
     }

+ 1 - 1
src/Controllers/IconController.php

@@ -25,7 +25,7 @@ class IconController extends Controller
             width: 40px;
         }');
 
-        return $content->header('Icons')->description(' ')->body(function (Row $row) {
+        return $content->title('Icons')->description(' ')->body(function (Row $row) {
             $tab = Tab::make()->padding('20px')->custom();
 
             $tab->add('Themify', view('admin::helpers.themify'));

+ 1 - 1
src/Controllers/LogController.php

@@ -21,7 +21,7 @@ class LogController extends Controller
     public function index(Content $content)
     {
         return $content
-            ->header(trans('admin.operation_log'))
+            ->title(trans('admin.operation_log'))
             ->description(trans('admin.list'))
             ->body($this->grid());
     }

+ 2 - 2
src/Controllers/MenuController.php

@@ -25,7 +25,7 @@ class MenuController extends Controller
     public function index(Content $content)
     {
         return $content
-            ->header(trans('admin.menu'))
+            ->title(trans('admin.menu'))
             ->description(trans('admin.list'))
             ->row(function (Row $row) {
                 $row->column(7, $this->treeView()->render());
@@ -98,7 +98,7 @@ class MenuController extends Controller
     public function edit($id, Content $content)
     {
         return $content
-            ->header(trans('admin.menu'))
+            ->title(trans('admin.menu'))
             ->description(trans('admin.edit'))
             ->row($this->form()->edit($id));
     }

+ 10 - 7
src/Controllers/PermissionController.php

@@ -32,7 +32,7 @@ class PermissionController extends Controller
         }
 
         return $content
-            ->header(trans('admin.permissions'))
+            ->title(trans('admin.permissions'))
             ->description(trans('admin.list'))
             ->body(function (Row $row) {
                 if (request('_layout')) {
@@ -54,7 +54,7 @@ class PermissionController extends Controller
     public function show($id, Content $content)
     {
         return $content
-            ->header(trans('admin.permissions'))
+            ->title(trans('admin.permissions'))
             ->description(trans('admin.detail'))
             ->body($this->detail($id));
     }
@@ -70,7 +70,7 @@ class PermissionController extends Controller
     public function edit($id, Content $content)
     {
         return $content
-            ->header(trans('admin.permissions'))
+            ->title(trans('admin.permissions'))
             ->description(trans('admin.edit'))
             ->body($this->form()->edit($id));
     }
@@ -85,7 +85,7 @@ class PermissionController extends Controller
     public function create(Content $content)
     {
         return $content
-            ->header(trans('admin.permissions'))
+            ->title(trans('admin.permissions'))
             ->description(trans('admin.create'))
             ->body($this->form());
     }
@@ -176,8 +176,6 @@ class PermissionController extends Controller
     {
         $grid = new Grid(new Permission());
 
-        $grid->disableCreateButton();
-
         $grid->id('ID')->bold()->sortable();
         $grid->slug->label('primary');
         $grid->name;
@@ -215,6 +213,11 @@ class PermissionController extends Controller
         $grid->created_at;
         $grid->updated_at->sortable();
 
+        $grid->disableCreateButton();
+        $grid->showQuickCreateButton();
+        $grid->disableEditButton();
+        $grid->showQuickEditButton();
+
         $grid->tools(function (Grid\Tools $tools) {
             $tools->batch(function (Grid\Tools\BatchActions $actions) {
                 $actions->disableDelete();
@@ -245,7 +248,7 @@ class PermissionController extends Controller
     {
         $show = new Show(new Permission());
 
-        $show->setKey($id);
+        $show->key($id);
 
         $show->id;
         $show->slug;

+ 12 - 12
src/Controllers/RoleController.php

@@ -30,7 +30,7 @@ class RoleController extends Controller
     public function index(Content $content)
     {
         return $content
-            ->header(trans('admin.roles'))
+            ->title(trans('admin.roles'))
             ->description(trans('admin.list'))
             ->body($this->grid());
     }
@@ -46,7 +46,7 @@ class RoleController extends Controller
     public function show($id, Content $content)
     {
         return $content
-            ->header(trans('admin.roles'))
+            ->title(trans('admin.roles'))
             ->description(trans('admin.detail'))
             ->body($this->detail($id));
     }
@@ -62,7 +62,7 @@ class RoleController extends Controller
     public function edit($id, Content $content)
     {
         return $content
-            ->header(trans('admin.roles'))
+            ->title(trans('admin.roles'))
             ->description(trans('admin.edit'))
             ->body($this->form()->edit($id));
     }
@@ -77,7 +77,7 @@ class RoleController extends Controller
     public function create(Content $content)
     {
         return $content
-            ->header(trans('admin.roles'))
+            ->title(trans('admin.roles'))
             ->description(trans('admin.create'))
             ->body($this->form());
     }
@@ -95,14 +95,6 @@ class RoleController extends Controller
             $grid = new Grid(new Role());
         }
 
-        $grid->disableBatchDelete();
-        $grid->disableCreateButton();
-        $grid->showQuickCreateButton();
-        $grid->disableEditButton();
-        $grid->showQuickEditButton();
-        $grid->disableFilterButton();
-        $grid->quickSearch(['id', 'name', 'slug']);
-
         $grid->id('ID')->bold()->sortable();
         $grid->slug->label('primary');
         $grid->name;
@@ -112,6 +104,14 @@ class RoleController extends Controller
             $grid->updated_at->sortable();
         }
 
+        $grid->disableBatchDelete();
+        $grid->disableCreateButton();
+        $grid->showQuickCreateButton();
+        $grid->disableEditButton();
+        $grid->showQuickEditButton();
+        $grid->disableFilterButton();
+        $grid->quickSearch(['id', 'name', 'slug']);
+
         $grid->actions(function (Grid\Displayers\Actions $actions) {
             $roleModel = config('admin.database.roles_model');
             if ($roleModel::isAdministrator($actions->row->slug)) {

+ 1 - 1
src/Controllers/RouteController.php

@@ -16,7 +16,7 @@ class RouteController extends Controller
     {
         $content = new Content();
 
-        $content->header(trans('admin.routes'))->description(trans('admin.list'));
+        $content->title(trans('admin.routes'))->description(trans('admin.list'));
 
         $content->body(function (Row $row) {
             $colors = [

+ 1 - 1
src/Controllers/ScaffoldController.php

@@ -77,7 +77,7 @@ class ScaffoldController extends Controller
         })->toArray();
 
         return $content
-            ->header(ucfirst(trans('admin.scaffold.header')))
+            ->title(ucfirst(trans('admin.scaffold.header')))
             ->description(' ')
             ->body(view('admin::helpers.scaffold', compact('dbTypes', 'action', 'tables', 'dataTypeMap')));
     }

+ 4 - 4
src/Controllers/UserController.php

@@ -33,7 +33,7 @@ class UserController extends Controller
         }
 
         return $content
-            ->header(trans('admin.administrator'))
+            ->title(trans('admin.administrator'))
             ->description(trans('admin.list'))
             ->body($this->grid());
     }
@@ -49,7 +49,7 @@ class UserController extends Controller
     public function show($id, Content $content)
     {
         return $content
-            ->header(trans('admin.administrator'))
+            ->title(trans('admin.administrator'))
             ->description(trans('admin.detail'))
             ->body($this->detail($id));
     }
@@ -64,7 +64,7 @@ class UserController extends Controller
     public function edit($id, Content $content)
     {
         return $content
-            ->header(trans('admin.administrator'))
+            ->title(trans('admin.administrator'))
             ->description(trans('admin.edit'))
             ->body($this->form()->edit($id));
     }
@@ -77,7 +77,7 @@ class UserController extends Controller
     public function create(Content $content)
     {
         return $content
-            ->header(trans('admin.administrator'))
+            ->title(trans('admin.administrator'))
             ->description(trans('admin.create'))
             ->body($this->form());
     }

+ 9 - 34
src/Form/Tools.php

@@ -19,7 +19,7 @@ class Tools implements Renderable
      *
      * @var array
      */
-    protected $tools = ['delete', 'view', 'list'];
+    protected $tools = ['delete' => true, 'view' => true, 'list' => true];
 
     /**
      * Tools should be appends to default tools.
@@ -35,21 +35,6 @@ class Tools implements Renderable
      */
     protected $prepends;
 
-    /**
-     * @var bool
-     */
-    protected $showList = true;
-
-    /**
-     * @var bool
-     */
-    protected $showDelete = true;
-
-    /**
-     * @var bool
-     */
-    protected $showView = true;
-
     /**
      * Create a new Tools instance.
      *
@@ -113,7 +98,7 @@ class Tools implements Renderable
      */
     public function disableList(bool $disable = true)
     {
-        $this->showList = ! $disable;
+        $this->tools['list'] = ! $disable;
 
         return $this;
     }
@@ -125,7 +110,7 @@ class Tools implements Renderable
      */
     public function disableDelete(bool $disable = true)
     {
-        $this->showDelete = ! $disable;
+        $this->tools['delete'] = ! $disable;
 
         return $this;
     }
@@ -137,7 +122,7 @@ class Tools implements Renderable
      */
     public function disableView(bool $disable = true)
     {
-        $this->showView = ! $disable;
+        $this->tools['view'] = ! $disable;
 
         return $this;
     }
@@ -193,10 +178,6 @@ class Tools implements Renderable
      */
     protected function renderList()
     {
-        if (! $this->showList) {
-            return;
-        }
-
         $text = trans('admin.list');
 
         return <<<EOT
@@ -213,10 +194,6 @@ EOT;
      */
     protected function renderView()
     {
-        if (! $this->showView) {
-            return;
-        }
-
         $view = trans('admin.view');
 
         return <<<HTML
@@ -235,10 +212,6 @@ HTML;
      */
     protected function renderDelete()
     {
-        if (! $this->showDelete) {
-            return;
-        }
-
         $delete = trans('admin.delete');
 
         return <<<HTML
@@ -280,10 +253,12 @@ HTML;
     {
         $output = $this->renderCustomTools($this->prepends);
 
-        foreach ($this->tools as $tool) {
-            $renderMethod = 'render'.ucfirst($tool);
+        foreach ($this->tools as $tool => $enable) {
+            if ($enable) {
+                $renderMethod = 'render' . ucfirst($tool);
 
-            $output .= $this->$renderMethod();
+                $output .= $this->$renderMethod();
+            }
         }
 
         return $output.$this->renderCustomTools($this->appends);

+ 20 - 13
src/Grid/Displayers/Actions.php

@@ -31,7 +31,7 @@ class Actions extends AbstractDisplayer
     protected $actions = [
         'view'      => true,
         'edit'      => true,
-        'quickEdit' => true,
+        'quickEdit' => false,
         'delete'    => true,
     ];
 
@@ -183,34 +183,41 @@ class Actions extends AbstractDisplayer
     }
 
     /**
-     * {@inheritdoc}
+     * @param array $callbacks
+     *
+     * @return void
      */
-    public function display(array $callbacks = [])
+    protected function call(array $callbacks = [])
     {
-        $this->resetDefaultActions();
-
         foreach ($callbacks as $callback) {
             if ($callback instanceof \Closure) {
                 $callback->call($this->row, $this);
             }
         }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function display(array $callbacks = [])
+    {
+        $this->resetDefaultActions();
 
-        $map = [Helper::class, 'render'];
+        $this->call($callbacks);
 
-        $prepends = array_map($map, $this->prepends);
-        $appends = array_map($map, $this->appends);
-        $actions = &$prepends;
+        $toString = [Helper::class, 'render'];
+
+        $prepends = array_map($toString, $this->prepends);
+        $appends = array_map($toString, $this->appends);
 
         foreach ($this->actions as $action => $enable) {
             if ($enable) {
                 $method = 'render'.ucfirst($action);
-                array_push($actions, $this->{$method}());
+                array_push($prepends, $this->{$method}());
             }
         }
 
-        $actions = array_merge($actions, $appends);
-
-        return implode('', $actions);
+        return implode('', array_merge($prepends, $appends));
     }
 
     /**

+ 2 - 9
src/Grid/Displayers/DropdownActions.php

@@ -7,10 +7,8 @@ use Dcat\Admin\Grid\Actions\Delete;
 use Dcat\Admin\Grid\Actions\Edit;
 use Dcat\Admin\Grid\Actions\QuickEdit;
 use Dcat\Admin\Grid\Actions\Show;
-use Dcat\Admin\Grid\RowAction;
 use Dcat\Admin\Support\Helper;
 use Dcat\Admin\Widgets\Color;
-use Illuminate\Contracts\Support\Renderable;
 
 class DropdownActions extends Actions
 {
@@ -131,23 +129,18 @@ JS;
         }
     }
 
-
     /**
      * @param \Closure[] $callback
      *
      * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
-    public function display($callbacks = [])
+    public function display(array $callbacks = [])
     {
         $this->resetDefaultActions();
 
         $this->addScript();
 
-        foreach ($callbacks as $callback) {
-            if ($callback instanceof \Closure) {
-                $callback->call($this->row, $this);
-            }
-        }
+        $this->call($callbacks);
 
         $this->prependDefaultActions();
 

+ 2 - 0
src/Layout/Content.php

@@ -69,6 +69,8 @@ class Content implements Renderable
     }
 
     /**
+     * @deprecated
+     *
      * @param string $header
      *
      * @return $this

+ 1 - 1
src/Layout/Menu.php

@@ -176,7 +176,7 @@ class Menu
 
         $user = Admin::user();
 
-        if ($user->visible($roles)) {
+        if (! $user || $user->visible($roles)) {
             return true;
         }
 

+ 1 - 0
src/Show/Tools.php

@@ -197,6 +197,7 @@ class Tools implements Renderable
     public function showQuickEdit(?string $width = null, ?string $height = null)
     {
         $this->showQuickEdit = true;
+        $this->showEdit = false;
 
         $width && ($this->dialogFormDimensions[0] = $width);
         $height && ($this->dialogFormDimensions[1] = $height);

+ 6 - 6
src/Support/Helper.php

@@ -27,7 +27,7 @@ class Helper
             Artisan::call('config:cache');
         }
 
-        \config(['admin-extensions' => $config]);
+        config(['admin-extensions' => $config]);
 
         return $result;
     }
@@ -40,7 +40,7 @@ class Helper
      *
      * @return array
      */
-    public static function array($value, bool $filter = true)
+    public static function array($value, bool $filter = true): array
     {
         if (! $value) {
             return [];
@@ -71,9 +71,9 @@ class Helper
      * @param array  $params
      * @param object $newThis
      *
-     * @return mixed|string
+     * @return string
      */
-    public static function render($value, $params = [], $newThis = null)
+    public static function render($value, $params = [], $newThis = null): string
     {
         if (is_string($value)) {
             return $value;
@@ -86,11 +86,11 @@ class Helper
         }
 
         if ($value instanceof Renderable) {
-            return $value->render();
+            return (string) $value->render();
         }
 
         if ($value instanceof Htmlable) {
-            return $value->toHtml();
+            return (string) $value->toHtml();
         }
 
         return (string) $value;