diff --git a/doctors/code.php b/doctors/code.php new file mode 100644 index 0000000..797e3c7 --- /dev/null +++ b/doctors/code.php @@ -0,0 +1,12 @@ +SetTitle('Врачи'); +?> + +232 +SetTitle("Врачи"); +?>IncludeComponent( + "custom:doctors.manager", + "", + Array( + + ) +);?>
\ No newline at end of file diff --git a/local/components/custom/doctors.manager/.description.php b/local/components/custom/doctors.manager/.description.php new file mode 100644 index 0000000..cfb0df3 --- /dev/null +++ b/local/components/custom/doctors.manager/.description.php @@ -0,0 +1,14 @@ + 'Менеджер докторов', + 'DESCRIPTION' => 'Комплексный компонент для управления докторами ', + 'ICON' => '/images/icon.gif', + 'CACHE_PATH' => 'Y', + 'PATH' => array( + 'ID' => 'custom', + 'NAME' => 'Кастомные компоненты' + ), + 'COMPLEX' => 'Y' +); \ No newline at end of file diff --git a/local/components/custom/doctors.manager/.parameters.php b/local/components/custom/doctors.manager/.parameters.php new file mode 100644 index 0000000..e69ddb3 --- /dev/null +++ b/local/components/custom/doctors.manager/.parameters.php @@ -0,0 +1,45 @@ + array( + + 'DETAIL_URL' => array( + 'PARENT' => 'URL_TEMPLATES', + 'NAME' => 'URL детальной страницы', + 'TYPE' => 'STRING', + 'DEFAULT' => 'index.php?ID=#ELEMENT_ID#' + ), + 'EDIT_URL' => array( + 'PARENT' => 'URL_TEMPLATES', + 'NAME' => 'URL редактирования', + 'TYPE' => 'STRING', + 'DEFAULT' => 'index.php?ID=#ELEMENT_ID#&action=edit' + ), + 'ADD_URL' => array( + 'PARENT' => 'URL_TEMPLATES', + 'NAME' => 'URL добавления', + 'TYPE' => 'STRING', + 'DEFAULT' => 'index.php?action=add' + ), + 'LIST_URL' => array( + 'PARENT' => 'URL_TEMPLATES', + 'NAME' => 'URL списка', + 'TYPE' => 'STRING', + 'DEFAULT' => 'index.php' + ), + 'ADD_PROC' => array( + 'PARENT' => 'URL_TEMPLATES', + 'NAME' => 'Добавление процедуры', + 'TYPE' => 'STRING', + 'DEFAULT' => 'index.php?action=proc_add' + ), + 'SET_TITLE' => array( + 'PARENT' => 'ADDITIONAL_SETTINGS', + 'NAME' => 'Устанавливать заголовок страницы', + 'TYPE' => 'CHECKBOX', + 'DEFAULT' => 'Y' + ), + ) +); +?> \ No newline at end of file diff --git a/local/components/custom/doctors.manager/class.php b/local/components/custom/doctors.manager/class.php new file mode 100644 index 0000000..e624c8e --- /dev/null +++ b/local/components/custom/doctors.manager/class.php @@ -0,0 +1,234 @@ +checkModules(); + $this->determineAction(); + $this->includeComponentTemplate($this->arResult['TEMPLATE_PAGE']); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + $this->arResult['ERRORS'] = $this->errors; + //$this->includeComponentTemplate('error'); + } + } + + private function checkModules() + { + if (!Loader::IncludeModule("iblock")) { + throw new Exception('Модуль инфоблоков не установлен'); + } + } + + private function determineAction() + { + $action = $this->request->get('action'); + $elementId = $this->request->get('ID'); + + switch ($action) { + case 'add': + $this->processAdd(); + $templatePage = 'add'; + break; + case 'add_proc': + $this->processAddProc(); + $templatePage = 'proc_add'; + break; + case 'edit': + $this->processEdit($elementId); + $templatePage = 'edit'; + break; + case 'detail': + $this->processDetail($elementId); + $templatePage = 'detail'; + break; + default: + $this->processList(); + $templatePage = 'list'; + break; + } + + $this->arResult['TEMPLATE_PAGE'] = $templatePage; + } + + private function processList() + { + + $doctors = DoctorsTable::query() + ->setSelect([ + 'NAME' => 'ELEMENT.NAME', + 'LAST_NAME', + 'MIDDLE_NAME', + 'ID' => 'ELEMENT.ID' + + ]) + ->fetchCollection(); + + $this->arResult['ITEMS'] = []; + + foreach ($doctors as $doctor) { + + $this->arResult['ITEMS'][] = [ + 'ID' => $doctor->getElement()->getId(), + 'NAME' => $doctor->getElement()->getName(), + 'MIDDLE_NAME' => $doctor->getMiddleName(), + 'LAST_NAME' => $doctor->getLastName(), + ]; + + } + + + if ($this->arParams['SET_TITLE'] === 'Y') { + $GLOBALS['APPLICATION']->SetTitle('Список врачей'); + } + } + + protected function getDoctorById(int $elementId) : array + { + $doctor = DoctorsTable::query() + ->setSelect([ + '*', + 'NAME' => 'ELEMENT.NAME', + 'PROC_IDS', + 'ID' => 'ELEMENT.ID' + ])->where("ID", $elementId) + ->fetch(); + + if (!$doctor) { + throw new Exception('Элемент не найден'); + } + + if($doctor['PROC_IDS']){ + $doctor["PROCS"] = ProcsTable::query() + ->setSelect(['NAME' => 'ELEMENT.NAME', 'ID' => 'ELEMENT.ID']) + ->where("ELEMENT.ID", 'in', $doctor['PROC_IDS']) + ->fetchAll(); + } + + return $doctor ?: []; + } + + protected function getAllProcedures() : array + { + $procs = ProcsTable::query() + ->setSelect(['NAME' => 'ELEMENT.NAME', 'ID' => 'ELEMENT.ID']) + ->fetchAll(); + + return $procs ?: []; + } + + + + private function processDetail($elementId) + { + if (!$elementId) { + throw new Exception('Не указан ID элемента'); + } + + $this->arResult = $this->getDoctorById($elementId); + + if ($this->arParams['SET_TITLE'] === 'Y') { + $GLOBALS['APPLICATION']->SetTitle($this->arResult['NAME']); + } + } + + private function processAdd() + { + + if ($this->request->isPost() && check_bitrix_sessid()) { + //$this->saveElement(); + + $fields['NAME'] = $this->request->getPost('NAME'); + $fields['MIDDLE_NAME'] = $this->request->getPost('MIDDLE_NAME'); + $fields['LAST_NAME'] = $this->request->getPost('LAST_NAME'); + $fields['PROC_IDS'] = $this->request->getPost('PROC_IDS'); + + if( DoctorsTable::add($fields)){ + header('Location: /doctors'); + exit(); + } else echo "Произошла ошибка"; + + } + + $this->arResult['ALL_PROCEDURES'] = $this->getAllProcedures(); + + if ($this->arParams['SET_TITLE'] === 'Y') { + $GLOBALS['APPLICATION']->SetTitle('Добавление доктора'); + } + } + + private function processAddProc() + { + + if ($this->request->isPost() && check_bitrix_sessid()) { + //$this->saveElement(); + + $fields['NAME'] = $this->request->getPost('NAME'); + + + if( ProcsTable::add($fields)){ + header('Location: /doctors'); + exit(); + } else echo "Произошла ошибка"; + + } + + if ($this->arParams['SET_TITLE'] === 'Y') { + $GLOBALS['APPLICATION']->SetTitle('Добавление процедуры'); + } + } + + private function processEdit($elementId) + { + if (!$elementId) { + throw new Exception('Не указан ID элемента'); + } + + $this->arResult = $this->getDoctorById($elementId); + + $this->arResult['ALL_PROCEDURES'] = $this->getAllProcedures(); + + + if ($this->request->isPost() && check_bitrix_sessid()) { + + //echo "
"; var_dump($this->request->getPostList()); echo "
"; die(); + + \CIBlockElement::SetPropertyValues($elementId, DoctorsTable::IBLOCK_ID, $this->request->getPost('PROC_IDS'), "PROC_IDS"); + + $fields['NAME'] = $this->request->getPost('NAME'); + $fields['MIDDLE_NAME'] = $this->request->getPost('MIDDLE_NAME'); + $fields['LAST_NAME'] = $this->request->getPost('LAST_NAME'); + + + if(DoctorsTable::update($elementId, $fields)){ + header('Location: /doctors'); + exit(); + } + + } + + if ($this->arParams['SET_TITLE'] === 'Y') { + $GLOBALS['APPLICATION']->SetTitle('Редактирование: ' . $this->arResult['NAME']); + } + } + + + +} \ No newline at end of file diff --git a/local/components/custom/doctors.manager/templates/.default/add.php b/local/components/custom/doctors.manager/templates/.default/add.php new file mode 100644 index 0000000..b473953 --- /dev/null +++ b/local/components/custom/doctors.manager/templates/.default/add.php @@ -0,0 +1,38 @@ + + +
+
+ ← Назад к списку +
+

Добавление врача

+
+ + + + + + + + + + +
+
diff --git a/local/components/custom/doctors.manager/templates/.default/detail.php b/local/components/custom/doctors.manager/templates/.default/detail.php new file mode 100644 index 0000000..c934810 --- /dev/null +++ b/local/components/custom/doctors.manager/templates/.default/detail.php @@ -0,0 +1,28 @@ + + +
+ +
+ ← Назад к списку + Редактировать +
+ +

+ + + + + + +
\ No newline at end of file diff --git a/local/components/custom/doctors.manager/templates/.default/edit.php b/local/components/custom/doctors.manager/templates/.default/edit.php new file mode 100644 index 0000000..a331c30 --- /dev/null +++ b/local/components/custom/doctors.manager/templates/.default/edit.php @@ -0,0 +1,41 @@ + + +
+
+ ← Назад к списку +
+

Данные врача

+
+ + + + + + + + + + + +
+
diff --git a/local/components/custom/doctors.manager/templates/.default/list.php b/local/components/custom/doctors.manager/templates/.default/list.php new file mode 100644 index 0000000..d956a50 --- /dev/null +++ b/local/components/custom/doctors.manager/templates/.default/list.php @@ -0,0 +1,35 @@ + + + +
+ +

+ Врачи +

+ +
+ Добавить врача + Добавить процедуру +
+ +
+ + + + + +
+ +
\ No newline at end of file diff --git a/local/components/custom/doctors.manager/templates/.default/proc_add.php b/local/components/custom/doctors.manager/templates/.default/proc_add.php new file mode 100644 index 0000000..f030703 --- /dev/null +++ b/local/components/custom/doctors.manager/templates/.default/proc_add.php @@ -0,0 +1,19 @@ + + +
+
+ ← Назад к списку +
+

Добавить процедуру

+
+ + + +
+
\ No newline at end of file diff --git a/local/components/custom/doctors.manager/templates/.default/style.css b/local/components/custom/doctors.manager/templates/.default/style.css new file mode 100644 index 0000000..20e23cd --- /dev/null +++ b/local/components/custom/doctors.manager/templates/.default/style.css @@ -0,0 +1,75 @@ +.doctors-list__title { + text-align: center; + margin-bottom: 40px; +} + +.doctors-list__actions { + display: flex; + gap: 20px; + margin-bottom: 20px; +} + + +.doctors-list__action { + padding: 4px 20px; + background: #dfe0e3; + border: 1px solid #c9ccd0; + border-radius: 5px; + color: #000; + text-transform: uppercase; + font-weight: 500; +} + +.doctors-list__items { + display: flex; + gap: 32px; + flex-wrap: wrap; + justify-content: center; +} + +.doctors-list__item { + flex: 0 0 200px; + display: flex; +} + +.doctors-list__item-wrap{ + display: flex; + flex-wrap: wrap; + align-items: center; + background: #ccc; + text-align: center; + padding: 20px; +} + +.doctor-detail__actions{ + display: flex; + gap: 20px; + margin-bottom: 20px; +} + +.doctor-detail__action { + padding: 4px 20px; + background: #dfe0e3; + border: 1px solid #c9ccd0; + border-radius: 5px; + color: #000; + text-transform: uppercase; + font-weight: 500; +} + +.doctor-edit-form__content { + display: flex; + flex-direction: column; + gap: 8px; + max-width: 500px; +} + +.doctor-edit-form__input-text { + height: 35px; + padding: 0 16px; +} + +.doctor-edit-form__submit { + height: 35px; + cursor: pointer; +} \ No newline at end of file diff --git a/local/php_interface/include/classes/Otus/Models/AbstractIblockPropertyValuesTable.php b/local/php_interface/include/classes/Otus/Models/AbstractIblockPropertyValuesTable.php new file mode 100644 index 0000000..d7c6e94 --- /dev/null +++ b/local/php_interface/include/classes/Otus/Models/AbstractIblockPropertyValuesTable.php @@ -0,0 +1,287 @@ +initCache(3600, md5($cacheDir), $cacheDir)) { + $map = $cache->getVars(); + + } else { + $cache->startDataCache(); + + $map['IBLOCK_ELEMENT_ID'] = new IntegerField('IBLOCK_ELEMENT_ID', ['primary' => true]); + $map['ELEMENT'] = new ReferenceField( + 'ELEMENT', + ElementTable::class, + ['=this.IBLOCK_ELEMENT_ID' => 'ref.ID'] + ); + + foreach (static::getProperties() as $property) { + if ($property['MULTIPLE'] === 'Y') { + $map[$property['CODE']] = new ExpressionField( + $property['CODE'], + sprintf('(select group_concat(`VALUE` SEPARATOR "\0") as VALUE from %s as m where m.IBLOCK_ELEMENT_ID = %s and m.IBLOCK_PROPERTY_ID = %d)', + static::getTableNameMulti(), + '%s', + $property['ID'] + ), + ['IBLOCK_ELEMENT_ID'], + ['fetch_data_modification' => [static::class, 'getMultipleFieldValueModifier']] + ); + + if ($property['USER_TYPE'] === 'EList') { + $map[$property['CODE'].'_ELEMENT_NAME'] = new ExpressionField( + $property['CODE'].'_ELEMENT_NAME', + sprintf('(select group_concat(e.NAME SEPARATOR "\0") as VALUE from %s as m join b_iblock_element as e on m.VALUE = e.ID where m.IBLOCK_ELEMENT_ID = %s and m.IBLOCK_PROPERTY_ID = %d)', + static::getTableNameMulti(), + '%s', + $property['ID'] + ), + ['IBLOCK_ELEMENT_ID'], + ['fetch_data_modification' => [static::class, 'getMultipleFieldValueModifier']] + ); + } + + $map[$property['CODE'].'|SINGLE'] = new ReferenceField( + $property['CODE'].'|SINGLE', + $multipleValuesTableClass, + [ + '=this.IBLOCK_ELEMENT_ID' => 'ref.IBLOCK_ELEMENT_ID', + '=ref.IBLOCK_PROPERTY_ID' => new SqlExpression('?i', $property['ID']) + ] + ); + + continue; + } + + if ($property['PROPERTY_TYPE'] == PropertyTable::TYPE_NUMBER) { + $map[$property['CODE']] = new IntegerField("PROPERTY_{$property['ID']}"); + } elseif ($property['USER_TYPE'] === 'Date') { + $map[$property['CODE']] = new DatetimeField("PROPERTY_{$property['ID']}"); + } else { + $map[$property['CODE']] = new StringField("PROPERTY_{$property['ID']}"); + } + + if ($property['PROPERTY_TYPE'] === 'E' && ($property['USER_TYPE'] === 'EList' || is_null($property['USER_TYPE']))) { + $map[$property['CODE'].'_ELEMENT'] = new ReferenceField( + $property['CODE'].'_ELEMENT', + ElementTable::class, + ["=this.{$property['CODE']}" => 'ref.ID'] + ); + } + } + + if (empty($map)) { + $cache->abortDataCache(); + } else { + $cache->endDataCache($map); + } + } + + return $map; + } + + /** + * @param array $data + * + * @return bool + */ + public static function add(array $data): bool + { + static::$iblockElement ?? static::$iblockElement = new CIBlockElement(); + $fields = [ + 'NAME' => $data['NAME'], + 'IBLOCK_ID' => static::IBLOCK_ID, + 'PROPERTY_VALUES' => $data, + ]; + + return static::$iblockElement->Add($fields); + } + + /** + * @param $primary + * + * @return DeleteResult + * @throws NotImplementedException + */ + public static function delete($primary): DeleteResult + { + #TODO Implement function + throw new NotImplementedException(); + } + + /** + * @return array + * @throws ArgumentException + * @throws SystemException + * @throws ObjectPropertyException + */ + public static function getProperties(): array + { + if (isset(static::$properties[static::IBLOCK_ID])) { + return static::$properties[static::IBLOCK_ID]; + } + + $dbResult = PropertyTable::query() + ->setSelect(['ID', 'CODE', 'PROPERTY_TYPE', 'MULTIPLE', 'NAME', 'USER_TYPE']) + ->where('IBLOCK_ID', static::IBLOCK_ID) + ->exec(); + while ($row = $dbResult->fetch()) { + static::$properties[static::IBLOCK_ID][$row['CODE']] = $row; + } + + return static::$properties[static::IBLOCK_ID] ?? []; + } + + /** + * @param string $code + * + * @return int + * @throws ArgumentException + * @throws ObjectPropertyException + * @throws SystemException + */ + public static function getPropertyId(string $code): int + { + return (int) static::getProperties()[$code]['ID']; + } + + /** + * @return array + */ + public static function getMultipleFieldValueModifier(): array + { + return [fn ($value) => array_filter(explode("\0", $value))]; + } + + /** + * @param int|null $iblockId + */ + public static function clearPropertyMapCache(?int $iblockId = null): void + { + $iblockId = $iblockId ?: static::IBLOCK_ID; + if (empty($iblockId)) { + return; + } + + Cache::clearCache(true, "iblock_property_map/$iblockId"); + } + + /** + * @param string $propertyCode + * @param string $byKey + * + * @return array + * @throws ArgumentException + * @throws ObjectPropertyException + * @throws SystemException + */ + public static function getEnumPropertyOptions(string $propertyCode, string $byKey = 'ID'): array + { + $dbResult = PropertyEnumerationTable::getList([ + 'select' => ['ID', 'VALUE', 'XML_ID', 'SORT'], + 'filter' => ['=PROPERTY.CODE' => $propertyCode, 'PROPERTY.IBLOCK_ID' => static::IBLOCK_ID], + ]); + while ($row = $dbResult->fetch()) { + $enumPropertyOptions[$row[$byKey]] = $row; + } + + return $enumPropertyOptions ?? []; + } + + /** + * @return string + */ + private static function getMultipleValuesTableClass(): string + { + $className = end(explode('\\', static::class)); + $namespace = str_replace('\\'.$className, '', static::class); + $className = str_replace('Table', 'MultipleTable', $className); + + return $namespace.'\\'.$className; + } + + /** + * @return void + */ + private static function initMultipleValuesTableClass(): void + { + $className = end(explode('\\', static::class)); + $namespace = str_replace('\\'.$className, '', static::class); + $className = str_replace('Table', 'MultipleTable', $className); + + if (class_exists($namespace.'\\'.$className)) { + return; + } + + $iblockId = static::IBLOCK_ID; + +// $php = << new ReferenceField( + 'PROCEDURES', + ProcsPropertyValuesTable::class, + ['=this.PROC_IDS' => 'ref.IBLOCK_ELEMENT_ID'] + ) + ]; + + + return array_merge(parent::getMap(), $map); + } + +} \ No newline at end of file diff --git a/local/php_interface/include/classes/Otus/Models/Lists/ProcsPropertyValuesTable.php b/local/php_interface/include/classes/Otus/Models/Lists/ProcsPropertyValuesTable.php new file mode 100644 index 0000000..f2f185e --- /dev/null +++ b/local/php_interface/include/classes/Otus/Models/Lists/ProcsPropertyValuesTable.php @@ -0,0 +1,10 @@ +getHelperManager(); + $iblockId = $helper->Iblock()->saveIblock(array ( + 'IBLOCK_TYPE_ID' => 'lists', + 'LID' => + array ( + 0 => 'co', + 1 => 's1', + ), + 'CODE' => 'doctors', + 'API_CODE' => 'doctors', + 'REST_ON' => 'N', + 'NAME' => 'Врачи', + 'ACTIVE' => 'Y', + 'SORT' => '500', + 'LIST_PAGE_URL' => '#SITE_DIR#/lists/index.php?ID=#IBLOCK_ID#', + 'DETAIL_PAGE_URL' => '#SITE_DIR#/lists/detail.php?ID=#ELEMENT_ID#', + 'SECTION_PAGE_URL' => '#SITE_DIR#/lists/list.php?SECTION_ID=#SECTION_ID#', + 'CANONICAL_PAGE_URL' => '', + 'PICTURE' => NULL, + 'DESCRIPTION' => '', + 'DESCRIPTION_TYPE' => 'text', + 'RSS_TTL' => '24', + 'RSS_ACTIVE' => 'Y', + 'RSS_FILE_ACTIVE' => 'N', + 'RSS_FILE_LIMIT' => NULL, + 'RSS_FILE_DAYS' => NULL, + 'RSS_YANDEX_ACTIVE' => 'N', + 'XML_ID' => NULL, + 'INDEX_ELEMENT' => 'Y', + 'INDEX_SECTION' => 'Y', + 'WORKFLOW' => 'N', + 'BIZPROC' => 'N', + 'SECTION_CHOOSER' => 'L', + 'LIST_MODE' => '', + 'RIGHTS_MODE' => 'S', + 'SECTION_PROPERTY' => 'N', + 'PROPERTY_INDEX' => 'N', + 'VERSION' => '2', + 'LAST_CONV_ELEMENT' => '0', + 'SOCNET_GROUP_ID' => NULL, + 'EDIT_FILE_BEFORE' => '', + 'EDIT_FILE_AFTER' => '', + 'SECTIONS_NAME' => 'Разделы', + 'SECTION_NAME' => 'Раздел', + 'ELEMENTS_NAME' => 'Элементы', + 'ELEMENT_NAME' => 'Элемент', + 'FULLTEXT_INDEX' => 'N', + 'EXTERNAL_ID' => NULL, + 'LANG_DIR' => '/extranet/', + 'IPROPERTY_TEMPLATES' => + array ( + ), + 'ELEMENT_ADD' => 'Добавить элемент', + 'ELEMENT_EDIT' => 'Изменить элемент', + 'ELEMENT_DELETE' => 'Удалить элемент', + 'SECTION_ADD' => 'Добавить раздел', + 'SECTION_EDIT' => 'Изменить раздел', + 'SECTION_DELETE' => 'Удалить раздел', +)); + $helper->Iblock()->saveIblockFields($iblockId, array ( + 'IBLOCK_SECTION' => + array ( + 'NAME' => 'Привязка к разделам', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => + array ( + 'KEEP_IBLOCK_SECTION_ID' => 'N', + ), + 'VISIBLE' => 'Y', + ), + 'ACTIVE' => + array ( + 'NAME' => 'Активность', + 'IS_REQUIRED' => 'Y', + 'DEFAULT_VALUE' => 'Y', + 'VISIBLE' => 'Y', + ), + 'ACTIVE_FROM' => + array ( + 'NAME' => 'Начало активности', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'ACTIVE_TO' => + array ( + 'NAME' => 'Окончание активности', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'SORT' => + array ( + 'NAME' => 'Сортировка', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => '500', + 'VISIBLE' => 'Y', + ), + 'NAME' => + array ( + 'NAME' => 'Название', + 'IS_REQUIRED' => 'Y', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'PREVIEW_PICTURE' => + array ( + 'NAME' => 'Картинка для анонса', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => + array ( + 'FROM_DETAIL' => 'N', + 'UPDATE_WITH_DETAIL' => 'N', + 'DELETE_WITH_DETAIL' => 'N', + 'SCALE' => 'N', + 'WIDTH' => '', + 'HEIGHT' => '', + 'IGNORE_ERRORS' => 'N', + 'METHOD' => 'resample', + 'COMPRESSION' => 95, + 'USE_WATERMARK_TEXT' => 'N', + 'WATERMARK_TEXT' => '', + 'WATERMARK_TEXT_FONT' => '', + 'WATERMARK_TEXT_COLOR' => '', + 'WATERMARK_TEXT_SIZE' => '', + 'WATERMARK_TEXT_POSITION' => 'tl', + 'USE_WATERMARK_FILE' => 'N', + 'WATERMARK_FILE' => '', + 'WATERMARK_FILE_ALPHA' => '', + 'WATERMARK_FILE_POSITION' => 'tl', + 'WATERMARK_FILE_ORDER' => '', + ), + 'VISIBLE' => 'Y', + ), + 'PREVIEW_TEXT_TYPE' => + array ( + 'NAME' => 'Тип описания для анонса', + 'IS_REQUIRED' => 'Y', + 'DEFAULT_VALUE' => 'text', + 'VISIBLE' => 'Y', + ), + 'PREVIEW_TEXT' => + array ( + 'NAME' => 'Описание для анонса', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'DETAIL_PICTURE' => + array ( + 'NAME' => 'Детальная картинка', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => + array ( + 'SCALE' => 'N', + 'WIDTH' => '', + 'HEIGHT' => '', + 'IGNORE_ERRORS' => 'N', + 'METHOD' => 'resample', + 'COMPRESSION' => 95, + 'USE_WATERMARK_TEXT' => 'N', + 'WATERMARK_TEXT' => '', + 'WATERMARK_TEXT_FONT' => '', + 'WATERMARK_TEXT_COLOR' => '', + 'WATERMARK_TEXT_SIZE' => '', + 'WATERMARK_TEXT_POSITION' => 'tl', + 'USE_WATERMARK_FILE' => 'N', + 'WATERMARK_FILE' => '', + 'WATERMARK_FILE_ALPHA' => '', + 'WATERMARK_FILE_POSITION' => 'tl', + 'WATERMARK_FILE_ORDER' => '', + ), + 'VISIBLE' => 'Y', + ), + 'DETAIL_TEXT_TYPE' => + array ( + 'NAME' => 'Тип детального описания', + 'IS_REQUIRED' => 'Y', + 'DEFAULT_VALUE' => 'text', + 'VISIBLE' => 'Y', + ), + 'DETAIL_TEXT' => + array ( + 'NAME' => 'Детальное описание', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'XML_ID' => + array ( + 'NAME' => 'Внешний код', + 'IS_REQUIRED' => 'Y', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'CODE' => + array ( + 'NAME' => 'Символьный код', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => + array ( + 'UNIQUE' => 'Y', + 'TRANSLITERATION' => 'Y', + 'TRANS_LEN' => 100, + 'TRANS_CASE' => 'L', + 'TRANS_SPACE' => '-', + 'TRANS_OTHER' => '-', + 'TRANS_EAT' => 'Y', + 'USE_GOOGLE' => 'N', + ), + 'VISIBLE' => 'Y', + ), + 'TAGS' => + array ( + 'NAME' => 'Теги', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'SECTION_NAME' => + array ( + 'NAME' => 'Название', + 'IS_REQUIRED' => 'Y', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'SECTION_PICTURE' => + array ( + 'NAME' => 'Картинка для анонса', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => + array ( + 'FROM_DETAIL' => 'N', + 'UPDATE_WITH_DETAIL' => 'N', + 'DELETE_WITH_DETAIL' => 'N', + 'SCALE' => 'N', + 'WIDTH' => '', + 'HEIGHT' => '', + 'IGNORE_ERRORS' => 'N', + 'METHOD' => 'resample', + 'COMPRESSION' => 95, + 'USE_WATERMARK_TEXT' => 'N', + 'WATERMARK_TEXT' => '', + 'WATERMARK_TEXT_FONT' => '', + 'WATERMARK_TEXT_COLOR' => '', + 'WATERMARK_TEXT_SIZE' => '', + 'WATERMARK_TEXT_POSITION' => 'tl', + 'USE_WATERMARK_FILE' => 'N', + 'WATERMARK_FILE' => '', + 'WATERMARK_FILE_ALPHA' => '', + 'WATERMARK_FILE_POSITION' => 'tl', + 'WATERMARK_FILE_ORDER' => '', + ), + 'VISIBLE' => 'Y', + ), + 'SECTION_DESCRIPTION_TYPE' => + array ( + 'NAME' => 'Тип описания', + 'IS_REQUIRED' => 'Y', + 'DEFAULT_VALUE' => 'text', + 'VISIBLE' => 'Y', + ), + 'SECTION_DESCRIPTION' => + array ( + 'NAME' => 'Описание', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'SECTION_DETAIL_PICTURE' => + array ( + 'NAME' => 'Детальная картинка', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => + array ( + 'SCALE' => 'N', + 'WIDTH' => '', + 'HEIGHT' => '', + 'IGNORE_ERRORS' => 'N', + 'METHOD' => 'resample', + 'COMPRESSION' => 95, + 'USE_WATERMARK_TEXT' => 'N', + 'WATERMARK_TEXT' => '', + 'WATERMARK_TEXT_FONT' => '', + 'WATERMARK_TEXT_COLOR' => '', + 'WATERMARK_TEXT_SIZE' => '', + 'WATERMARK_TEXT_POSITION' => 'tl', + 'USE_WATERMARK_FILE' => 'N', + 'WATERMARK_FILE' => '', + 'WATERMARK_FILE_ALPHA' => '', + 'WATERMARK_FILE_POSITION' => 'tl', + 'WATERMARK_FILE_ORDER' => '', + ), + 'VISIBLE' => 'Y', + ), + 'SECTION_XML_ID' => + array ( + 'NAME' => 'Внешний код', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'SECTION_CODE' => + array ( + 'NAME' => 'Символьный код', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => + array ( + 'UNIQUE' => 'N', + 'TRANSLITERATION' => 'N', + 'TRANS_LEN' => 100, + 'TRANS_CASE' => 'L', + 'TRANS_SPACE' => '-', + 'TRANS_OTHER' => '-', + 'TRANS_EAT' => 'Y', + 'USE_GOOGLE' => 'N', + ), + 'VISIBLE' => 'Y', + ), + 'LOG_SECTION_ADD' => + array ( + 'NAME' => 'LOG_SECTION_ADD', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => NULL, + 'VISIBLE' => 'Y', + ), + 'LOG_SECTION_EDIT' => + array ( + 'NAME' => 'LOG_SECTION_EDIT', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => NULL, + 'VISIBLE' => 'Y', + ), + 'LOG_SECTION_DELETE' => + array ( + 'NAME' => 'LOG_SECTION_DELETE', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => NULL, + 'VISIBLE' => 'Y', + ), + 'LOG_ELEMENT_ADD' => + array ( + 'NAME' => 'LOG_ELEMENT_ADD', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => NULL, + 'VISIBLE' => 'Y', + ), + 'LOG_ELEMENT_EDIT' => + array ( + 'NAME' => 'LOG_ELEMENT_EDIT', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => NULL, + 'VISIBLE' => 'Y', + ), + 'LOG_ELEMENT_DELETE' => + array ( + 'NAME' => 'LOG_ELEMENT_DELETE', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => NULL, + 'VISIBLE' => 'Y', + ), +)); + $helper->Iblock()->saveGroupPermissions($iblockId, array ( + 'administrators' => 'X', + 'everyone' => 'R', +)); + $helper->Iblock()->saveProperty($iblockId, array ( + 'NAME' => 'Отчество', + 'ACTIVE' => 'Y', + 'SORT' => '500', + 'CODE' => 'MIDDLE_NAME', + 'DEFAULT_VALUE' => '', + 'PROPERTY_TYPE' => 'S', + 'ROW_COUNT' => '1', + 'COL_COUNT' => '70', + 'LIST_TYPE' => 'L', + 'MULTIPLE' => 'N', + 'XML_ID' => NULL, + 'FILE_TYPE' => '', + 'MULTIPLE_CNT' => '5', + 'LINK_IBLOCK_ID' => '0', + 'WITH_DESCRIPTION' => 'N', + 'SEARCHABLE' => 'N', + 'FILTRABLE' => 'N', + 'IS_REQUIRED' => 'N', + 'VERSION' => '2', + 'USER_TYPE' => NULL, + 'USER_TYPE_SETTINGS' => 'a:0:{}', + 'HINT' => '', + 'FEATURES' => + array ( + 0 => + array ( + 'MODULE_ID' => 'iblock', + 'FEATURE_ID' => 'DETAIL_PAGE_SHOW', + 'IS_ENABLED' => 'N', + ), + 1 => + array ( + 'MODULE_ID' => 'iblock', + 'FEATURE_ID' => 'LIST_PAGE_SHOW', + 'IS_ENABLED' => 'N', + ), + ), +)); + $helper->Iblock()->saveProperty($iblockId, array ( + 'NAME' => 'Фамилия', + 'ACTIVE' => 'Y', + 'SORT' => '500', + 'CODE' => 'LAST_NAME', + 'DEFAULT_VALUE' => '', + 'PROPERTY_TYPE' => 'S', + 'ROW_COUNT' => '1', + 'COL_COUNT' => '70', + 'LIST_TYPE' => 'L', + 'MULTIPLE' => 'N', + 'XML_ID' => NULL, + 'FILE_TYPE' => '', + 'MULTIPLE_CNT' => '5', + 'LINK_IBLOCK_ID' => '0', + 'WITH_DESCRIPTION' => 'N', + 'SEARCHABLE' => 'N', + 'FILTRABLE' => 'N', + 'IS_REQUIRED' => 'N', + 'VERSION' => '2', + 'USER_TYPE' => NULL, + 'USER_TYPE_SETTINGS' => 'a:0:{}', + 'HINT' => '', + 'FEATURES' => + array ( + 0 => + array ( + 'MODULE_ID' => 'iblock', + 'FEATURE_ID' => 'DETAIL_PAGE_SHOW', + 'IS_ENABLED' => 'N', + ), + 1 => + array ( + 'MODULE_ID' => 'iblock', + 'FEATURE_ID' => 'LIST_PAGE_SHOW', + 'IS_ENABLED' => 'N', + ), + ), +)); + $helper->UserOptions()->saveElementForm($iblockId, array ( + 'Параметры|edit1' => + array ( + 'ID' => 'ID', + 'DATE_CREATE' => 'Создан', + 'TIMESTAMP_X' => 'Изменен', + 'ACTIVE' => 'Активность', + 'NAME' => 'Имя', + 'PROPERTY_MIDDLE_NAME' => 'Отчество', + 'PROPERTY_LAST_NAME' => 'Фамилия', + 'CODE' => 'Символьный код', + 'SORT' => 'Сортировка', + 'PROPERTY_PROC_IDS' => 'Процедуры', + ), +)); + $helper->UserOptions()->saveElementGrid($iblockId, array ( + 'views' => + array ( + 'default' => + array ( + 'columns' => + array ( + 0 => 'NAME', + 1 => 'PROPERTY_MIDDLE_NAME', + 2 => 'PROPERTY_LAST_NAME', + 3 => 'ACTIVE', + 4 => 'PROPERTY_PROC_IDS', + 5 => 'SORT', + 6 => 'TIMESTAMP_X', + 7 => 'ID', + ), + 'columns_sizes' => + array ( + 'expand' => 1, + 'columns' => + array ( + ), + ), + 'sticked_columns' => + array ( + ), + 'custom_names' => + array ( + ), + ), + ), + 'filters' => + array ( + ), + 'current_view' => 'default', +)); + + } +} diff --git a/local/php_interface/migrations/DoctorsPropProcedures20260105214201.php b/local/php_interface/migrations/DoctorsPropProcedures20260105214201.php new file mode 100644 index 0000000..5e88f39 --- /dev/null +++ b/local/php_interface/migrations/DoctorsPropProcedures20260105214201.php @@ -0,0 +1,63 @@ +getHelperManager(); + $iblockId = $helper->Iblock()->getIblockIdIfExists('doctors', 'lists'); + $helper->Iblock()->saveProperty($iblockId, array ( + 'NAME' => 'Процедуры', + 'ACTIVE' => 'Y', + 'SORT' => '500', + 'CODE' => 'PROC_IDS', + 'DEFAULT_VALUE' => '', + 'PROPERTY_TYPE' => 'E', + 'ROW_COUNT' => '1', + 'COL_COUNT' => '30', + 'LIST_TYPE' => 'L', + 'MULTIPLE' => 'Y', + 'XML_ID' => NULL, + 'FILE_TYPE' => '', + 'MULTIPLE_CNT' => '5', + 'LINK_IBLOCK_ID' => 'lists:procedures', + 'WITH_DESCRIPTION' => 'N', + 'SEARCHABLE' => 'N', + 'FILTRABLE' => 'N', + 'IS_REQUIRED' => 'N', + 'VERSION' => '2', + 'USER_TYPE' => NULL, + 'USER_TYPE_SETTINGS' => 'a:0:{}', + 'HINT' => '', + 'FEATURES' => + array ( + 0 => + array ( + 'MODULE_ID' => 'iblock', + 'FEATURE_ID' => 'DETAIL_PAGE_SHOW', + 'IS_ENABLED' => 'N', + ), + 1 => + array ( + 'MODULE_ID' => 'iblock', + 'FEATURE_ID' => 'LIST_PAGE_SHOW', + 'IS_ENABLED' => 'N', + ), + ), +)); + + } +} diff --git a/local/php_interface/migrations/Procedures20260105214116.php b/local/php_interface/migrations/Procedures20260105214116.php new file mode 100644 index 0000000..5148134 --- /dev/null +++ b/local/php_interface/migrations/Procedures20260105214116.php @@ -0,0 +1,429 @@ +getHelperManager(); + $iblockId = $helper->Iblock()->saveIblock(array ( + 'IBLOCK_TYPE_ID' => 'lists', + 'LID' => + array ( + 0 => 'co', + 1 => 's1', + ), + 'CODE' => 'procedures', + 'API_CODE' => 'procedures', + 'REST_ON' => 'N', + 'NAME' => 'Процедуры', + 'ACTIVE' => 'Y', + 'SORT' => '500', + 'LIST_PAGE_URL' => '#SITE_DIR#/lists/index.php?ID=#IBLOCK_ID#', + 'DETAIL_PAGE_URL' => '#SITE_DIR#/lists/detail.php?ID=#ELEMENT_ID#', + 'SECTION_PAGE_URL' => '#SITE_DIR#/lists/list.php?SECTION_ID=#SECTION_ID#', + 'CANONICAL_PAGE_URL' => '', + 'PICTURE' => NULL, + 'DESCRIPTION' => '', + 'DESCRIPTION_TYPE' => 'text', + 'RSS_TTL' => '24', + 'RSS_ACTIVE' => 'Y', + 'RSS_FILE_ACTIVE' => 'N', + 'RSS_FILE_LIMIT' => NULL, + 'RSS_FILE_DAYS' => NULL, + 'RSS_YANDEX_ACTIVE' => 'N', + 'XML_ID' => NULL, + 'INDEX_ELEMENT' => 'N', + 'INDEX_SECTION' => 'N', + 'WORKFLOW' => 'N', + 'BIZPROC' => 'N', + 'SECTION_CHOOSER' => 'L', + 'LIST_MODE' => '', + 'RIGHTS_MODE' => 'S', + 'SECTION_PROPERTY' => 'N', + 'PROPERTY_INDEX' => 'N', + 'VERSION' => '2', + 'LAST_CONV_ELEMENT' => '0', + 'SOCNET_GROUP_ID' => NULL, + 'EDIT_FILE_BEFORE' => '', + 'EDIT_FILE_AFTER' => '', + 'SECTIONS_NAME' => 'Разделы', + 'SECTION_NAME' => 'Раздел', + 'ELEMENTS_NAME' => 'Элементы', + 'ELEMENT_NAME' => 'Элемент', + 'FULLTEXT_INDEX' => 'N', + 'EXTERNAL_ID' => NULL, + 'LANG_DIR' => '/extranet/', + 'IPROPERTY_TEMPLATES' => + array ( + ), + 'ELEMENT_ADD' => 'Добавить элемент', + 'ELEMENT_EDIT' => 'Изменить элемент', + 'ELEMENT_DELETE' => 'Удалить элемент', + 'SECTION_ADD' => 'Добавить раздел', + 'SECTION_EDIT' => 'Изменить раздел', + 'SECTION_DELETE' => 'Удалить раздел', +)); + $helper->Iblock()->saveIblockFields($iblockId, array ( + 'IBLOCK_SECTION' => + array ( + 'NAME' => 'Привязка к разделам', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => + array ( + 'KEEP_IBLOCK_SECTION_ID' => 'N', + ), + 'VISIBLE' => 'Y', + ), + 'ACTIVE' => + array ( + 'NAME' => 'Активность', + 'IS_REQUIRED' => 'Y', + 'DEFAULT_VALUE' => 'Y', + 'VISIBLE' => 'Y', + ), + 'ACTIVE_FROM' => + array ( + 'NAME' => 'Начало активности', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'ACTIVE_TO' => + array ( + 'NAME' => 'Окончание активности', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'SORT' => + array ( + 'NAME' => 'Сортировка', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => '500', + 'VISIBLE' => 'Y', + ), + 'NAME' => + array ( + 'NAME' => 'Название', + 'IS_REQUIRED' => 'Y', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'PREVIEW_PICTURE' => + array ( + 'NAME' => 'Картинка для анонса', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => + array ( + 'FROM_DETAIL' => 'N', + 'UPDATE_WITH_DETAIL' => 'N', + 'DELETE_WITH_DETAIL' => 'N', + 'SCALE' => 'N', + 'WIDTH' => '', + 'HEIGHT' => '', + 'IGNORE_ERRORS' => 'N', + 'METHOD' => 'resample', + 'COMPRESSION' => 95, + 'USE_WATERMARK_TEXT' => 'N', + 'WATERMARK_TEXT' => '', + 'WATERMARK_TEXT_FONT' => '', + 'WATERMARK_TEXT_COLOR' => '', + 'WATERMARK_TEXT_SIZE' => '', + 'WATERMARK_TEXT_POSITION' => 'tl', + 'USE_WATERMARK_FILE' => 'N', + 'WATERMARK_FILE' => '', + 'WATERMARK_FILE_ALPHA' => '', + 'WATERMARK_FILE_POSITION' => 'tl', + 'WATERMARK_FILE_ORDER' => '', + ), + 'VISIBLE' => 'Y', + ), + 'PREVIEW_TEXT_TYPE' => + array ( + 'NAME' => 'Тип описания для анонса', + 'IS_REQUIRED' => 'Y', + 'DEFAULT_VALUE' => 'text', + 'VISIBLE' => 'Y', + ), + 'PREVIEW_TEXT' => + array ( + 'NAME' => 'Описание для анонса', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'DETAIL_PICTURE' => + array ( + 'NAME' => 'Детальная картинка', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => + array ( + 'SCALE' => 'N', + 'WIDTH' => '', + 'HEIGHT' => '', + 'IGNORE_ERRORS' => 'N', + 'METHOD' => 'resample', + 'COMPRESSION' => 95, + 'USE_WATERMARK_TEXT' => 'N', + 'WATERMARK_TEXT' => '', + 'WATERMARK_TEXT_FONT' => '', + 'WATERMARK_TEXT_COLOR' => '', + 'WATERMARK_TEXT_SIZE' => '', + 'WATERMARK_TEXT_POSITION' => 'tl', + 'USE_WATERMARK_FILE' => 'N', + 'WATERMARK_FILE' => '', + 'WATERMARK_FILE_ALPHA' => '', + 'WATERMARK_FILE_POSITION' => 'tl', + 'WATERMARK_FILE_ORDER' => '', + ), + 'VISIBLE' => 'Y', + ), + 'DETAIL_TEXT_TYPE' => + array ( + 'NAME' => 'Тип детального описания', + 'IS_REQUIRED' => 'Y', + 'DEFAULT_VALUE' => 'text', + 'VISIBLE' => 'Y', + ), + 'DETAIL_TEXT' => + array ( + 'NAME' => 'Детальное описание', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'XML_ID' => + array ( + 'NAME' => 'Внешний код', + 'IS_REQUIRED' => 'Y', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'CODE' => + array ( + 'NAME' => 'Символьный код', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => + array ( + 'UNIQUE' => 'Y', + 'TRANSLITERATION' => 'Y', + 'TRANS_LEN' => 100, + 'TRANS_CASE' => 'L', + 'TRANS_SPACE' => '-', + 'TRANS_OTHER' => '-', + 'TRANS_EAT' => 'Y', + 'USE_GOOGLE' => 'N', + ), + 'VISIBLE' => 'Y', + ), + 'TAGS' => + array ( + 'NAME' => 'Теги', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'SECTION_NAME' => + array ( + 'NAME' => 'Название', + 'IS_REQUIRED' => 'Y', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'SECTION_PICTURE' => + array ( + 'NAME' => 'Картинка для анонса', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => + array ( + 'FROM_DETAIL' => 'N', + 'UPDATE_WITH_DETAIL' => 'N', + 'DELETE_WITH_DETAIL' => 'N', + 'SCALE' => 'N', + 'WIDTH' => '', + 'HEIGHT' => '', + 'IGNORE_ERRORS' => 'N', + 'METHOD' => 'resample', + 'COMPRESSION' => 95, + 'USE_WATERMARK_TEXT' => 'N', + 'WATERMARK_TEXT' => '', + 'WATERMARK_TEXT_FONT' => '', + 'WATERMARK_TEXT_COLOR' => '', + 'WATERMARK_TEXT_SIZE' => '', + 'WATERMARK_TEXT_POSITION' => 'tl', + 'USE_WATERMARK_FILE' => 'N', + 'WATERMARK_FILE' => '', + 'WATERMARK_FILE_ALPHA' => '', + 'WATERMARK_FILE_POSITION' => 'tl', + 'WATERMARK_FILE_ORDER' => '', + ), + 'VISIBLE' => 'Y', + ), + 'SECTION_DESCRIPTION_TYPE' => + array ( + 'NAME' => 'Тип описания', + 'IS_REQUIRED' => 'Y', + 'DEFAULT_VALUE' => 'text', + 'VISIBLE' => 'Y', + ), + 'SECTION_DESCRIPTION' => + array ( + 'NAME' => 'Описание', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'SECTION_DETAIL_PICTURE' => + array ( + 'NAME' => 'Детальная картинка', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => + array ( + 'SCALE' => 'N', + 'WIDTH' => '', + 'HEIGHT' => '', + 'IGNORE_ERRORS' => 'N', + 'METHOD' => 'resample', + 'COMPRESSION' => 95, + 'USE_WATERMARK_TEXT' => 'N', + 'WATERMARK_TEXT' => '', + 'WATERMARK_TEXT_FONT' => '', + 'WATERMARK_TEXT_COLOR' => '', + 'WATERMARK_TEXT_SIZE' => '', + 'WATERMARK_TEXT_POSITION' => 'tl', + 'USE_WATERMARK_FILE' => 'N', + 'WATERMARK_FILE' => '', + 'WATERMARK_FILE_ALPHA' => '', + 'WATERMARK_FILE_POSITION' => 'tl', + 'WATERMARK_FILE_ORDER' => '', + ), + 'VISIBLE' => 'Y', + ), + 'SECTION_XML_ID' => + array ( + 'NAME' => 'Внешний код', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => '', + 'VISIBLE' => 'Y', + ), + 'SECTION_CODE' => + array ( + 'NAME' => 'Символьный код', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => + array ( + 'UNIQUE' => 'N', + 'TRANSLITERATION' => 'N', + 'TRANS_LEN' => 100, + 'TRANS_CASE' => 'L', + 'TRANS_SPACE' => '-', + 'TRANS_OTHER' => '-', + 'TRANS_EAT' => 'Y', + 'USE_GOOGLE' => 'N', + ), + 'VISIBLE' => 'Y', + ), + 'LOG_SECTION_ADD' => + array ( + 'NAME' => 'LOG_SECTION_ADD', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => NULL, + 'VISIBLE' => 'Y', + ), + 'LOG_SECTION_EDIT' => + array ( + 'NAME' => 'LOG_SECTION_EDIT', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => NULL, + 'VISIBLE' => 'Y', + ), + 'LOG_SECTION_DELETE' => + array ( + 'NAME' => 'LOG_SECTION_DELETE', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => NULL, + 'VISIBLE' => 'Y', + ), + 'LOG_ELEMENT_ADD' => + array ( + 'NAME' => 'LOG_ELEMENT_ADD', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => NULL, + 'VISIBLE' => 'Y', + ), + 'LOG_ELEMENT_EDIT' => + array ( + 'NAME' => 'LOG_ELEMENT_EDIT', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => NULL, + 'VISIBLE' => 'Y', + ), + 'LOG_ELEMENT_DELETE' => + array ( + 'NAME' => 'LOG_ELEMENT_DELETE', + 'IS_REQUIRED' => 'N', + 'DEFAULT_VALUE' => NULL, + 'VISIBLE' => 'Y', + ), +)); + $helper->Iblock()->saveGroupPermissions($iblockId, array ( + 'administrators' => 'X', + 'everyone' => 'R', +)); + $helper->UserOptions()->saveElementForm($iblockId, array ( + 'Параметры|edit1' => + array ( + 'ID' => 'ID', + 'DATE_CREATE' => 'Создан', + 'TIMESTAMP_X' => 'Изменен', + 'ACTIVE' => 'Активность', + 'NAME' => 'Название', + 'CODE' => 'Символьный код', + 'SORT' => 'Сортировка', + ), +)); + $helper->UserOptions()->saveElementGrid($iblockId, array ( + 'views' => + array ( + 'default' => + array ( + 'columns' => + array ( + 0 => '', + ), + 'columns_sizes' => + array ( + 'expand' => 1, + 'columns' => + array ( + ), + ), + 'sticked_columns' => + array ( + ), + 'custom_names' => + array ( + ), + ), + ), + 'filters' => + array ( + ), + 'current_view' => 'default', +)); + + } +}