Completed
Push — master ( 95f4c8...504059 )
by Alexandr
01:49
created

FBElement::setInTableAdminEditable()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 0
1
<?php
2
3
namespace Larrock\Core\Helpers\FormBuilder;
4
5
class FBElement
6
{
7
    /** @var string  */
8
    public $name;
9
10
    /** @var string  */
11
    public $title;
12
13
    /**  @var string */
14
    public $cssClassGroup = 'uk-width-1-1';
15
16
    /** @var string  */
17
    public $cssClass = 'uk-width-1-1';
18
19
    /** @var string */
20
    public $default;
21
22
    /** @var array  */
23
    public $tab = ['main' => 'Заголовок, описание'];
24
25
    /** @var string */
26
    public $valid;
27
28
    /** @var null|bool */
29
    public $inTableAdmin;
30
31
    /** @var null|bool */
32
    public $inTableAdminEditable;
33
34
    /** @var string */
35
    public $help;
36
37
    /** @var null|bool */
38
    public $fillable;
39
40
    /** @var null|bool */
41
    public $filtered;
42
43
    /** @var null|bool */
44
    public $sorted;
45
46
    /** @var string  Место где используется (в каталоге место вывода) */
47
    public $template;
48
49
    /** @var string */
50
    public $templateAdmin;
51
52
53
    /**
54
     * FBElement constructor.
55
     * @param string $name  Название поля для компонента (например: в БД)
56
     * @param string $title Имя поля для вывода
57
     */
58
    public function __construct(string $name, string $title)
59
    {
60
        $this->name = $name;
61
        $this->title = $title;
62
    }
63
64
    /**
65
     * Можно передать в качестве параметра имя поля, тогда оно будет браться из БД
66
     * @param $default
67
     * @return $this
68
     */
69
    public function setDefaultValue($default)
70
    {
71
        $this->default = $default;
72
        return $this;
73
    }
74
75
    /**
76
     * Выводить поле в таблице контента в админке
77
     * @return $this
78
     */
79
    public function setInTableAdmin()
80
    {
81
        $this->inTableAdmin = TRUE;
82
        return $this;
83
    }
84
85
    /**
86
     * Выводить поле на редактирование в таблице контента в админке
87
     * @return $this
88
     */
89
    public function setInTableAdminEditable()
90
    {
91
        $this->inTableAdminEditable = TRUE;
92
        return $this;
93
    }
94
95
    /**
96
     * Добавление правил валидации
97
     * @param string    $valid
98
     * @return $this
99
     */
100
    public function setValid(string $valid)
101
    {
102
        if($this->valid){
103
            $this->valid .= '|'. $valid;
104
        }else{
105
            $this->valid = $valid;
106
        }
107
        return $this;
108
    }
109
110
    /**
111
     * Алиас к setValid. Устанавливает обязательность для заполнения
112
     * @return FBElement
113
     */
114
    public function isRequired()
115
    {
116
        return $this->setValid('required');
117
    }
118
119
    /**
120
     * Установка класса для группы поля в редактировании материала
121
     * @param string    $class
122
     * @return $this
123
     */
124
    public function setCssClassGroup(string $class)
125
    {
126
        $this->cssClassGroup = $this->cssClass .' '. $class;
127
        return $this;
128
    }
129
130
    /**
131
     * Установка класса для группы поля в редактировании материала
132
     * @param string    $class
133
     * @return $this
134
     */
135
    public function setCssClass(string $class)
136
    {
137
        $this->cssClass = $this->cssClass .' '. $class;
138
        return $this;
139
    }
140
141
    /**
142
     * Указание имени и заголовка для таба, где показывать поле на странице редактирования материала
143
     * @param string    $tab_name
144
     * @param string    $tab_title
145
     * @return $this
146
     */
147
    public function setTab(string $tab_name, string $tab_title)
148
    {
149
        $this->tab = [$tab_name => $tab_title];
150
        return $this;
151
    }
152
153
    /**
154
     * Вывод текста описания для поля в интерфейсе
155
     * @param string $text
156
     * @return $this
157
     */
158
    public function setHelp(string $text)
159
    {
160
        $this->help = $text;
161
        return $this;
162
    }
163
164
    /**
165
     * Поле может использоваться в фильтрах
166
     * @return $this
167
     */
168
    public function setFiltered()
169
    {
170
        $this->filtered = TRUE;
171
        return $this;
172
    }
173
174
    /**
175
     * Поле может использоваться в сортировках
176
     * @return $this
177
     */
178
    public function setSorted()
179
    {
180
        $this->sorted = TRUE;
181
        return $this;
182
    }
183
184
    /**
185
     * Указание шаблона для вывода поля (в каталоге место для вывода)
186
     * @param $template
187
     * @return $this
188
     */
189
    public function setTemplate($template)
190
    {
191
        $this->template = $template;
192
        return $this;
193
    }
194
195
    public function setTemplateAdmin($template)
196
    {
197
        $this->templateAdmin = $template;
198
        return $this;
199
    }
200
201
    /**
202
     * Добавить поле в fillable модели компонента (добавлять значения поля в БД компонента)
203
     * @return $this
204
     */
205
    public function setFillable()
206
    {
207
        $this->fillable = TRUE;
208
        return $this;
209
    }
210
}