Completed
Push — master ( 55ab89...0c5b4e )
by Song
06:39
created

Admin::tree()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Encore\Admin;
4
5
use Closure;
6
use Encore\Admin\Auth\Database\Menu;
7
use Encore\Admin\Layout\Content;
8
use Illuminate\Database\Eloquent\Model as EloquentModel;
9
use Illuminate\Support\Facades\Auth;
10
use Illuminate\Support\Facades\Config;
11
use InvalidArgumentException;
12
13
/**
14
 * Class Admin.
15
 */
16
class Admin
17
{
18
    /**
19
     * @var array
20
     */
21
    public static $script = [];
22
23
    /**
24
     * @param $model
25
     * @param Closure $callable
26
     *
27
     * @return Grid
28
     */
29
    public function grid($model, Closure $callable)
30
    {
31
        return new Grid($this->getModel($model), $callable);
32
    }
33
34
    /**
35
     * @param $model
36
     * @param Closure $callable
37
     *
38
     * @return Form
39
     */
40
    public function form($model, Closure $callable)
41
    {
42
        return new Form($this->getModel($model), $callable);
43
    }
44
45
    /**
46
     * Build a tree.
47
     *
48
     * @param $model
49
     *
50
     * @return Tree
51
     */
52
    public function tree($model)
53
    {
54
        return new Tree($this->getModel($model));
55
    }
56
57
    /**
58
     * @param Closure $callable
59
     *
60
     * @return Content
61
     */
62
    public function content(Closure $callable)
63
    {
64
        return new Content($callable);
65
    }
66
67
    /**
68
     * @param $model
69
     *
70
     * @return mixed
71
     */
72
    public function getModel($model)
73
    {
74
        if ($model instanceof EloquentModel) {
75
            return $model;
76
        }
77
78
        if (is_string($model) && class_exists($model)) {
79
            return $this->getModel(new $model());
80
        }
81
82
        throw new InvalidArgumentException("$model is not a valid model");
83
    }
84
85
    /**
86
     * Get namespace of controllers.
87
     *
88
     * @return string
89
     */
90
    public function controllerNamespace()
91
    {
92
        $directory = config('admin.directory');
93
94
        return 'App\\'.ucfirst(basename($directory)).'\\Controllers';
95
    }
96
97
    /**
98
     * @param string $script
99
     *
100
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View|void
101
     */
102
    public static function script($script = '')
103
    {
104
        if (!empty($script)) {
105
            self::$script = array_merge(self::$script, (array) $script);
106
107
            return;
108
        }
109
110
        return view('admin::partials.script', ['script' => array_unique(self::$script)]);
111
    }
112
113
    /**
114
     * Admin url.
115
     *
116
     * @param $url
117
     *
118
     * @return string
119
     */
120
    public static function url($url)
121
    {
122
        $prefix = (string) config('admin.prefix');
123
124
        return "/$prefix/".trim($url, '/');
125
    }
126
127
    /**
128
     * Left sider-bar menu.
129
     *
130
     * @return array
131
     */
132
    public function menu()
133
    {
134
        return Menu::toTree();
135
    }
136
137
    /**
138
     * Get admin title.
139
     *
140
     * @return Config
141
     */
142
    public function title()
143
    {
144
        return config('admin.title');
145
    }
146
147
    /**
148
     * @return mixed
149
     */
150
    public function user()
151
    {
152
        return Auth::guard('admin')->user();
153
    }
154
}
155