Passed
Push — master ( b44114...bdd733 )
by Yaro
08:29
created

AbstractField::make()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 2

Importance

Changes 2
Bugs 1 Features 0
Metric Value
cc 2
eloc 7
c 2
b 1
f 0
nc 2
nop 2
dl 0
loc 12
rs 10
ccs 8
cts 8
cp 1
crap 2
1
<?php
2
3
namespace Yaro\Jarboe\Table\Fields;
4
5
use Illuminate\Http\Request;
6
use Yaro\Jarboe\Table\CRUD;
7
use Yaro\Jarboe\Table\Fields\Interfaces\FieldPropsInterface;
8
use Yaro\Jarboe\Table\Fields\Traits\Column;
9
use Yaro\Jarboe\Table\Fields\Traits\DefaultTrait;
10
use Yaro\Jarboe\Table\Fields\Traits\Errors;
11
use Yaro\Jarboe\Table\Fields\Traits\Filter;
12
use Yaro\Jarboe\Table\Fields\Traits\Hidden;
13
use Yaro\Jarboe\Table\Fields\Traits\Model;
14
use Yaro\Jarboe\Table\Fields\Traits\Name;
15
use Yaro\Jarboe\Table\Fields\Traits\OldAndAttribute;
16
use Yaro\Jarboe\Table\Fields\Traits\Readonly;
17
use Yaro\Jarboe\Table\Fields\Traits\Tab;
18
use Yaro\Jarboe\Table\Fields\Traits\Title;
19
use Yaro\Jarboe\Table\Fields\Traits\Width;
20
21
abstract class AbstractField implements FieldPropsInterface
22
{
23
    use Hidden;
24
    use Width;
25
    use Column;
26
    use Tab;
27
    use Readonly;
0 ignored issues
show
Bug introduced by
A parse error occurred: Syntax error, unexpected T_READONLY, expecting T_STRING or T_NAME_QUALIFIED or T_NAME_FULLY_QUALIFIED or T_NAME_RELATIVE on line 27 at column 8
Loading history...
28
    use DefaultTrait;
29
    use Title;
30
    use Name;
31
    use OldAndAttribute;
32
    use Model;
33
    use Filter;
34
    use Errors;
35
36
    const DEFAULT_TAB_IDENT = '[extra]';
37
38
    private $crud;
39
    public static $repeaterAdapterClass;
40
41 1004
    public static function make($name = '', $title = '')
42
    {
43 1004
        $field = new static;
44
45 1004
        if (!$title) {
46 953
            $title = preg_replace('~_~', ' ', ucfirst($name));
47
        }
48 1004
        $field->title($title);
49 1004
        $field->name($name);
50 1004
        $field->tab(self::DEFAULT_TAB_IDENT);
51
52 1004
        return $field;
53
    }
54
55 20
    public function value(Request $request)
56
    {
57 20
        $value = $request->get($this->name());
58 20
        if (!$value && $this->isNullable()) {
59 4
            return null;
60
        }
61
62 20
        return $value;
63
    }
64
65 14
    public function shouldSkip(Request $request)
66
    {
67 14
        return false;
68
    }
69
70 1
    public function afterStore($model, Request $request)
71
    {
72
        // dummy
73 1
    }
74
75 2
    public function afterUpdate($model, Request $request)
76
    {
77
        // dummy
78 2
    }
79
80 1
    public function beforeUpdate($model)
81
    {
82
        // dummy
83 1
    }
84
85 12
    public function isInline()
86
    {
87 12
        return false;
88
    }
89
90 19
    public function isRelationField()
91
    {
92 19
        return false;
93
    }
94
95 16
    public function isMultiple()
96
    {
97 16
        return false;
98
    }
99
100 17
    public function isEncode()
101
    {
102 17
        return false;
103
    }
104
105 74
    public function isMarkupRow()
106
    {
107 74
        return false;
108
    }
109
110 4
    public function isOrderable()
111
    {
112 4
        return false;
113
    }
114
115 17
    public function isAjax()
116
    {
117 17
        return false;
118
    }
119
120 3
    public function isNullable()
121
    {
122 3
        return false;
123
    }
124
125 13
    public function hasTooltip()
126
    {
127 13
        return false;
128
    }
129
130 14
    public function hasClipboardButton()
131
    {
132 14
        return false;
133
    }
134
135 69
    public function isTranslatable()
136
    {
137 69
        return false;
138
    }
139
140 16
    public function isMaskable()
141
    {
142 16
        return false;
143
    }
144
145 8
    public function getPlaceholder()
146
    {
147 8
        return null;
148
    }
149
150 15
    public function hasMaxlength(): bool
151
    {
152 15
        return false;
153
    }
154
155 1
    public function getHistoryView($value)
156
    {
157 1
        return view('jarboe::crud.fields.abstract.history', [
158 1
            'value' => $value,
159
        ]);
160
    }
161
162
    abstract public function getListView($model);
163
164
    abstract public function getEditFormView($model);
165
166
    abstract public function getCreateFormView();
167
168
    // TODO: interface type-hinting
169 58
    public function prepare(CRUD $crud)
170
    {
171 58
        $this->crud = $crud;
172
173 58
        if ($this->filter()) {
174
            $this->filter()->value(
175
                $this->filter()->getValue($crud->tableIdentifier())
176
            );
177
        }
178
179 58
        $this->setModel($crud->getModel());
180
181 58
        if (method_exists($this, 'setRelationSearchUrl')) {
182
            $this->setRelationSearchUrl($crud->relationSearchUrl());
183
        }
184 58
        if (method_exists($this, 'setInlineUrl')) {
185 58
            $this->setInlineUrl($crud->inlineUrl());
186
        }
187 58
        if ($this->isTranslatable()) {
188
            $this->locales($crud->getLocales());
189
            $this->setCurrentLocale($crud->getCurrentLocale());
190
        }
191 58
    }
192
193
    protected function crud(): CRUD
194
    {
195
        return $this->crud;
196
    }
197
198 82
    public function belongsToArray(): bool
199
    {
200 82
        return false;
201
    }
202
203
    public function getAncestorName(): string
204
    {
205
        throw new \RuntimeException('Not available: must be inherited from BelongsToArray trait.');
206
    }
207
208
    public function getDescendantName(): string
209
    {
210
        throw new \RuntimeException('Not available: must be inherited from BelongsToArray trait.');
211
    }
212
213
    public function getDotPatternName(): string
214
    {
215
        throw new \RuntimeException('Not available: must be inherited from BelongsToArray trait.');
216
    }
217
}
218