version %s', self::VERSION); } /** * @param $model * @param Closure $callable * * @return \Encore\Admin\Grid * * @deprecated since v1.6.1 */ public function grid($model, Closure $callable) { return new Grid($this->getModel($model), $callable); } /** * @param $model * @param Closure $callable * * @return \Encore\Admin\Form * * @deprecated since v1.6.1 */ public function form($model, Closure $callable) { return new Form($this->getModel($model), $callable); } /** * Build a tree. * * @param $model * * @return \Encore\Admin\Tree */ public function tree($model, Closure $callable = null) { return new Tree($this->getModel($model), $callable); } /** * Build show page. * * @param $model * @param mixed $callable * * @return Show * * @deprecated since v1.6.1 */ public function show($model, $callable = null) { return new Show($this->getModel($model), $callable); } /** * @param Closure $callable * * @return \Encore\Admin\Layout\Content * * @deprecated since v1.6.1 */ public function content(Closure $callable = null) { return new Content($callable); } /** * @param $model * * @return mixed */ public function getModel($model) { if ($model instanceof Model) { return $model; } if (is_string($model) && class_exists($model)) { return $this->getModel(new $model()); } throw new InvalidArgumentException("$model is not a valid model"); } /** * Left sider-bar menu. * * @return array */ public function menu() { $menuModel = config('admin.database.menu_model'); return (new $menuModel())->toTree(); } /** * Set admin title. * * @return void */ public static function setTitle($title) { self::$metaTitle = $title; } /** * Get admin title. * * @return Config */ public function title() { return self::$metaTitle ? self::$metaTitle : config('admin.title'); } /** * Get current login user. * * @return mixed */ public function user() { return Auth::guard('admin')->user(); } /** * Set navbar. * * @param Closure|null $builder * * @return Navbar */ public function navbar(Closure $builder = null) { if (is_null($builder)) { return $this->getNavbar(); } call_user_func($builder, $this->getNavbar()); } /** * Get navbar object. * * @return \Encore\Admin\Widgets\Navbar */ public function getNavbar() { if (is_null($this->navbar)) { $this->navbar = new Navbar(); } return $this->navbar; } /** * Register the auth routes. * * @return void */ public function registerAuthRoutes() { $attributes = [ 'prefix' => config('admin.route.prefix'), 'middleware' => config('admin.route.middleware'), ]; app('router')->group($attributes, function ($router) { /* @var \Illuminate\Routing\Router $router */ $router->namespace('Encore\Admin\Controllers')->group(function ($router) { /* @var \Illuminate\Routing\Router $router */ $router->resource('auth/users', 'UserController'); $router->resource('auth/roles', 'RoleController'); $router->resource('auth/permissions', 'PermissionController'); $router->resource('auth/menu', 'MenuController', ['except' => ['create']]); $router->resource('auth/logs', 'LogController', ['only' => ['index', 'destroy', 'show']]); }); $authController = config('admin.auth.controller', AuthController::class); /* @var \Illuminate\Routing\Router $router */ $router->get('auth/login', $authController.'@getLogin'); $router->post('auth/login', $authController.'@postLogin'); $router->get('auth/logout', $authController.'@getLogout'); $router->get('auth/setting', $authController.'@getSetting'); $router->put('auth/setting', $authController.'@putSetting'); }); } /** * Extend a extension. * * @param string $name * @param string $class * * @return void */ public static function extend($name, $class) { static::$extensions[$name] = $class; } /** * @param callable $callback */ public static function booting(callable $callback) { static::$booting[] = $callback; } /** * @param callable $callback */ public static function booted(callable $callback) { static::$booted[] = $callback; } /* * Disable Pjax for current Request * * @return void */ public function disablePjax() { if (request()->pjax()) { request()->headers->set('X-PJAX', false); } } }