32 array $visibleColumnsIds,
37 parent::__construct($visibleColumnsIds);
50 $result[] = $this->getUserAssembler();
55 $this->settings->getIblockId()
60 $this->settings->getUrlBuilder()
63 array_push($result, ... $this->getPropertiesAssemblers());
80 return new UserFieldAssembler($columnIds);
83 private function getPropertiesAssemblers(): array
87 $customColumnIds = [];
88 foreach ($this->columns as $column)
90 $editable = $column->getEditable();
91 if (isset($editable) && $editable->getType() === Types::CUSTOM)
93 $customColumnIds[] = $column->getId();
97 $result[] =
new StringFieldAssembler(
98 $this->settings->getIblockId(),
102 $result[] =
new NumberFieldAssembler(
103 $this->settings->getIblockId(),
107 $result[] =
new ListFieldAssembler(
108 $this->settings->getIblockId()
111 $result[] =
new ElementFieldAssembler(
112 $this->settings->getIblockId(),
116 $result[] =
new SectionFieldAssembler(
117 $this->settings->getIblockId(),
121 $result[] =
new UserTypePropertyFieldAssembler(
122 $this->settings->getIblockId(),
126 $result[] =
new FileFieldAssembler(
127 $this->settings->getIblockId()
130 $processedColumnsIds = [];
131 foreach ($result as $assembler)
136 array_push($processedColumnsIds, ...$assembler->getColumnIds());
139 $result[] =
new MultipleFieldAssembler(
140 $this->settings->getIblockId(),
149 $result = parent::prepareRows($rowsList);
151 foreach ($result as &$row)
158 $row = $this->disableElementFieldsEditableForSection($row);
163 $row[
'data'][
'~DETAIL_TEXT'] = (string)($row[
'data'][
'DETAIL_TEXT'] ??
'');
164 $row[
'data'][
'~PREVIEW_TEXT'] = (string)($row[
'data'][
'PREVIEW_TEXT'] ??
'');
172 private function disableElementFieldsEditableForSection(array $row): array
174 $editableColumns = array_fill_keys([
181 $row[
'editableColumns'] ??= [];
184 if (!isset($row[
'editableColumns'][$columnId]))
186 $row[
'editableColumns'][$columnId] = isset($editableColumns[$columnId]);
static isModuleInstalled($moduleName)