1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
elementprovider.php
См. документацию.
1<?php
2
3namespace Bitrix\Iblock\Grid\Column;
4
5use Bitrix\Main\Grid;
6use Bitrix\Main\Localization\Loc;
7use Bitrix\Iblock;
8use Bitrix\Main\Grid\Column\Editable\Config;
9
11{
17 public function prepareColumns(): array
18 {
19 $result = [];
20
21 if (!$this->isSkuSelectorEnabled())
22 {
23 $result['NAME'] = [
24 'type' => Grid\Column\Type::TEXT,
25 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_NAME'),
26 'necessary' => true,
27 'editable' => true,
28 'multiple' => false,
29 'sort' => 'NAME',
30 ];
31 $result['PREVIEW_PICTURE'] = [
32 'type' => Grid\Column\Type::FILE,
33 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_PREVIEW_PICTURE'),
34 'sort' => 'HAS_PREVIEW_PICTURE',
35 'necessary' => false,
36 'editable' => true,
37 'multiple' => false,
38 'prevent_default' => true, // TODO: what is this
39 ];
40 $result['DETAIL_PICTURE'] = [
41 'type' => Grid\Column\Type::FILE,
42 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_DETAIL_PICTURE'),
43 'sort' => 'HAS_DETAIL_PICTURE',
44 'necessary' => false,
45 'editable' => true,
46 'multiple' => false,
47 'prevent_default' => true, // TODO: what is this
48 ];
49 }
50
51 $result = array_merge(
52 $this->getCommonColumns(),
54 $this->getSpecificElementColumns(),
55 $result,
56 $this->getSectionFields(),
57 );
58
59 return $this->createColumns($result);
60 }
61
62 protected function getCommonColumns(): array
63 {
64 $result = [];
65
66 $result['ACTIVE'] = [
68 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_ACTIVE'),
69 'title' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_TITLE_ACTIVE'),
70 'necessary' => true,
71 'editable' => true,
72 'multiple' => false,
73 'sort' => 'ACTIVE',
74 'align' => 'center',
75 ];
76 $result['SORT'] = [
77 'type' => Grid\Column\Type::INT,
78 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_SORT'),
79 'title' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_TITLE_SORT'),
80 'necessary' => false,
81 'editable' => true,
82 'multiple' => false,
83 'sort' => 'SORT',
84 'align' => 'right',
85 ];
86 $result['CODE'] = [
87 'type' => Grid\Column\Type::TEXT,
88 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_CODE'),
89 'title' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_TITLE_CODE'),
90 'necessary' => false,
91 'editable' => true,
92 'multiple' => false,
93 'sort' => 'CODE',
94 ];
95 $result['XML_ID'] = [
96 'type' => Grid\Column\Type::TEXT,
97 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_XML_ID_MSGVER_1'),
98 'title' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_TITLE_XML_ID'),
99 'necessary' => false,
100 'editable' => true,
101 'multiple' => false,
102 'sort' => 'XML_ID',
103 ];
104 $result['TIMESTAMP_X'] = [
105 'type' => Grid\Column\Type::DATE,
106 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_TIMESTAMP_X'),
107 'title' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_TITLE_TIMESTAMP_X'),
108 'necessary' => false,
109 'editable' => false,
110 'multiple' => false,
111 'sort' => 'TIMESTAMP_X',
112 ];
113 $result['MODIFIED_BY'] = [
114 'type' => Grid\Column\Type::CUSTOM,
115 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_MODIFIED_BY'),
116 'title' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_TITLE_MODIFIED_BY'),
117 'necessary' => false,
118 'editable' => false,
119 'multiple' => false,
120 'sort' => 'MODIFIED_BY',
121 'safeMode' => true,
122 ];
123 $result['DATE_CREATE'] = [
124 'type' => Grid\Column\Type::DATE,
125 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_DATE_CREATE'),
126 'title' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_TITLE_DATE_CREATE'),
127 'necessary' => false,
128 'editable' => false,
129 'multiple' => false,
130 'sort' => 'DATE_CREATE', // TODO: check - created
131 ];
132 $result['CREATED_BY'] = [
133 'type' => Grid\Column\Type::CUSTOM,
134 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_CREATED_BY'),
135 'title' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_TITLE_CREATED_BY'),
136 'necessary' => false,
137 'editable' => false,
138 'multiple' => false,
139 'sort' => 'CREATED_BY',
140 'safeMode' => true,
141 ];
142 $select = [
143 'ID',
144 ];
145 if ($this->isSkuSelectorEnabled())
146 {
147 $select[] = 'NAME';
148 }
149 $result['ID'] = [
150 'type' => Grid\Column\Type::CUSTOM,
151 'name' => 'ID',
152 'necessary' => true,
153 'editable' => false,
154 'multiple' => false,
155 'select' => $select,
156 'sort' => 'ID',
157 ];
158 unset($select);
159
160 return $result;
161 }
162
163 protected function getElementFieldsColumns(): array
164 {
165 $result = [];
166 $result['ACTIVE_FROM'] = [
167 'type' => Grid\Column\Type::DATE,
168 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_ACTIVE_FROM'),
169 'necessary' => false,
170 'editable' => true,
171 'multiple' => false,
172 'sort' => 'ACTIVE_FROM',
173 ];
174 $result['ACTIVE_TO'] = [
175 'type' => Grid\Column\Type::DATE,
176 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_ACTIVE_TO'),
177 'necessary' => false,
178 'editable' => true,
179 'multiple' => false,
180 'sort' => 'ACTIVE_TO',
181 ];
182 $result['SHOW_COUNTER'] = [
183 'type' => Grid\Column\Type::INT,
184 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_SHOW_COUNTER'),
185 'necessary' => false,
186 'editable' => false,
187 'multiple' => false,
188 'sort' => 'SHOW_COUNTER',
189 'align' => 'right',
190 ];
191 $result['SHOW_COUNTER_START'] = [
192 'type' => Grid\Column\Type::DATE,
193 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_SHOW_COUNTER_START'),
194 'necessary' => false,
195 'editable' => false,
196 'multiple' => false,
197 'sort' => 'SHOW_COUNTER_START',
198 ];
199
200 $result['PREVIEW_TEXT'] = [
201 'type' => Grid\Column\Type::TEXT,
202 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_PREVIEW_TEXT'),
203 'necessary' => false,
204 'multiple' => false,
205 'select' => [
206 'PREVIEW_TEXT',
207 'PREVIEW_TEXT_TYPE',
208 ],
209 'editable' => new Config('PREVIEW_TEXT', Grid\Editor\Types::TEXTAREA),
210 ];
211
212 $result['DETAIL_TEXT'] = [
213 'type' => Grid\Column\Type::TEXT,
214 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_DETAIL_TEXT'),
215 'necessary' => false,
216 'multiple' => false,
217 'select' => [
218 'DETAIL_TEXT',
219 'DETAIL_TEXT_TYPE',
220 ],
221 'editable' => new Config('DETAIL_TEXT', Grid\Editor\Types::TEXTAREA),
222 ];
223
224 $result['TAGS'] = [
225 'type' => Grid\Column\Type::INPUT,
226 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_TAGS'),
227 'necessary' => false,
228 'editable' => true,
229 'multiple' => false,
230 'sort' => 'TAGS',
231 ];
232
233 return $result;
234 }
235
236 private function getSpecificElementColumns(): array
237 {
238 $result = [];
239
240 if ($this->isAllowedIblockSections())
241 {
242 $result['SECTIONS'] = [
243 'type' => Grid\Column\Type::CUSTOM,
244 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_SECTIONS'),
245 'necessary' => false,
246 'editable' => false,
247 'multiple' => false,
248 'safeMode' => true,
249 ];
250 }
251
252 return $result;
253 }
254
255 protected function getSectionFields(): array
256 {
257 if (!$this->isIblockCombinedMode())
258 {
259 return [];
260 }
261
262 $result = [];
263 $result['ELEMENT_CNT'] = [
264 'type' => Grid\Column\Type::CUSTOM,
265 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_ELEMENT_CNT'),
266 'necessary' => false,
267 'editable' => false,
268 'multiple' => false,
269 'sort' => 'ELEMENT_CNT',
270 'align' => 'right',
271 ];
272 if ($this->getIblockId() !== null)
273 {
274 $result['SECTION_CNT'] = [
275 'type' => Grid\Column\Type::CUSTOM,
276 'name' => Loc::getMessage('IBLOCK_ELEMENT_COLUMN_PROVIDER_FIELD_SECTION_CNT'),
277 'necessary' => false,
278 'editable' => false,
279 'multiple' => false,
280 'align' => 'right',
281 ];
282 }
283
284 return $result;
285 }
286
287 protected function isAllowedIblockSections(): bool
288 {
289 $settings = $this->getSettings();
290
291 return $settings->isAllowedIblockSections();
292 }
293
294 protected function getIblockListMode(): string
295 {
296 $settings = $this->getSettings();
297
298 return $settings->getListMode();
299 }
300
301 protected function isIblockSeparateMode(): bool
302 {
304 }
305
306 protected function isIblockCombinedMode(): bool
307 {
309 }
310}
const LIST_MODE_COMBINED
Определения iblocktable.php:95
const LIST_MODE_SEPARATE
Определения iblocktable.php:94
const CHECKBOX
Определения type.php:11
const DATE
Определения type.php:17
const FILE
Определения type.php:27
const CUSTOM
Определения type.php:21
const INPUT
Определения type.php:24
const TEXT
Определения type.php:10
const INT
Определения type.php:14
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
$select
Определения iblock_catalog_list.php:194
Определения types.php:3
$settings
Определения product_settings.php:43