3namespace Bitrix\Iblock\Integration\UI\Grid\Property;
5use Bitrix\Iblock\Helpers\Admin\Property;
6use Bitrix\Iblock\Integration\UI\Grid\General\BaseProvider;
7use Bitrix\Main\Grid\Column\Type;
8use Bitrix\Main\Grid\Panel;
9use Bitrix\Main\Localization\Loc;
10use Bitrix\Main\Text\HtmlFilter;
11use Bitrix\Main\Type\Collection;
17 private int $iblockId;
26 $this->iblockId = $iblockId;
27 $this->linksBuilder = $linksBuilder;
35 return "iblock_property_{$this->iblockId}";
48 foreach ($columns as $item)
50 if ($item[
'id'] === $fieldId)
52 return (
string)$item[
'name'];
67 'name' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_ID'),
73 'name' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_NAME'),
80 'name' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_CODE'),
85 'id' =>
'PROPERTY_TYPE',
86 'name' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_PROPERTY_TYPE'),
87 'sort' =>
'PROPERTY_TYPE',
94 'name' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_SORT'),
102 'name' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_ACTIVE'),
104 'type' =>
'checkbox',
109 'id' =>
'IS_REQUIRED',
110 'name' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_IS_REQUIRED'),
111 'sort' =>
'IS_REQUIRED',
112 'type' =>
'checkbox',
118 'name' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_MULTIPLE'),
119 'sort' =>
'MULTIPLE',
120 'type' =>
'checkbox',
125 'id' =>
'SEARCHABLE',
126 'name' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_SEARCHABLE'),
127 'sort' =>
'SEARCHABLE',
128 'type' =>
'checkbox',
134 'name' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_FILTRABLE'),
135 'sort' =>
'FILTRABLE',
136 'type' =>
'checkbox',
141 'name' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_XML_ID'),
146 'id' =>
'WITH_DESCRIPTION',
147 'name' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_WITH_DESCRIPTION'),
148 'sort' =>
'WITH_DESCRIPTION',
149 'type' =>
'checkbox',
154 'name' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_HINT'),
164 $id = (int)$row[
'ID'];
168 'TEXT' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_ACTION_OPEN'),
169 'HREF' => $this->linksBuilder->getActionOpenLink($id),
170 'ONCLICK' => $this->linksBuilder->getActionOpenClick($id),
178 'TEXT' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_ACTION_DELETE'),
179 'HREF' => $this->linksBuilder->getActionDeleteLink($id),
180 'ONCLICK' => $this->linksBuilder->getActionDeleteClick($id),
192 private function getPropertyTypeItems():
array
194 $result = Property::getBaseTypeList(
true);
196 $userTypes = CIBlockProperty::GetUserType();
197 Collection::sortByColumn($userTypes, [
198 'DESCRIPTION' => SORT_STRING,
201 foreach ($userTypes as
$type => $item)
203 $key =
"{$item['PROPERTY_TYPE']}:{$type}";
215 $result = parent::getRowColumns($row);
218 if (isset(
$result[
'PROPERTY_TYPE']))
220 $type = $row[
'PROPERTY_TYPE'] ??
null;
223 $userType = $row[
'USER_TYPE'] ??
null;
226 $type .=
':' . $userType;
229 $typeNames = $this->getPropertyTypeItems();
249 $type = $field[
'type'] ?? Type::TEXT;
253 if (isset($rawRow[$id]))
255 $rawRow[$id] = HtmlFilter::encode($rawRow[$id]);
259 if (isset($rawRow[$id]))
261 $rawRow[$id] = (int)$rawRow[$id];
267 return parent::prepareRow($rawRow);
293 $onchange->addAction([
296 'CONFIRM_APPLY_BUTTON' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_CONFIRM_APPLY_REMOVE_BUTTON_TEXT'),
297 'CONFIRM_MESSAGE' => Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_CONFIRM_MESSAGE_REMOVE'),
300 'JS' =>
'Grid.removeSelected()',
308 ->setOnchange($onchange)
309 ->setText(Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_ACTION_DELETE'))
310 ->setTitle(Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_ACTION_DELETE_TITLE'))
313 return $removeButton->toArray();
324 $snippet->getSaveEditButton(),
325 $snippet->getCancelEditButton(),
332 'JS' =>
'Grid.editSelected()',
351 $editButton->setText(Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_ACTION_EDIT'));
353 $editButton->setTitle(Loc::getMessage(
'IBLOCK_UI_GRID_PROPERTY_PROVIDER_ACTION_EDIT_TITLE'));
355 return $editButton->toArray();
prepareRow(array $rawRow)
getRowActions(array $row, bool $isEditable)
getFieldName(string $fieldId)
getRowColumns(array $row)
__construct(int $iblockId, LinksBuilder $linksBuilder)
const REMOVE_BUTTON_CLASS
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if(empty($signedUserToken)) $key