From 8dbb1c60eb962133fd0c8cad6edfc44c2bdf7403 Mon Sep 17 00:00:00 2001 From: Gennadiy Sevalnev Date: Thu, 29 Sep 2022 19:06:08 +0700 Subject: [PATCH] Add Alert option --- README.md | 26 +++++++++++++++++ src/Form.php | 9 +++++- src/Types/Alert.php | 69 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 src/Types/Alert.php diff --git a/README.md b/README.md index 816c6d6..3cd3513 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ 'Gelion\\BitrixOptions\\TypeInterface' => '/lib/TypeInterface.php', 'Gelion\\BitrixOptions\\TypeBase' => '/lib/TypeBase.php', 'Gelion\\BitrixOptions\\TypeForm' => '/lib/TypeForm.php', + 'Gelion\\BitrixOptions\\Types\\Alert' => '/lib/Types/Alert.php', 'Gelion\\BitrixOptions\\Types\\Checkbox' => '/lib/Types/Checkbox.php', 'Gelion\\BitrixOptions\\Types\\Colorpicker' => '/lib/Types/Colorpicker.php', 'Gelion\\BitrixOptions\\Types\\Conditions' => '/lib/Types/Conditions.php', @@ -226,6 +227,18 @@ $options = [ ], ``` +### Сообщения +Эта опция ничего не сохраняет в базу данных, но позволяет выводить информационные сообщения на странице настроек. Опция имеет свои собственные параметры о которых можно прочесть ниже. +```php +'PROP_ID' => [ + 'SORT' => 100, + 'TYPE' => 'ALERT', + 'FIELDS' => [ + 'TITLE' => 'Поле "Сообщения"', + ], +], +``` + ## Модификаторы опций Для опций категории "Формы" можно передать дополнительные параметры, влияющие на отображение формы на странице. Более подробно о принимаемых параметрах и их значениях можно узнать в [документации Bitrix](https://dev.1c-bitrix.ru/api_d7/bitrix/ui/forms/common.php) Дополнительно доступные параметры пропасаны в базовом классе. @@ -243,6 +256,19 @@ $options = [ ], ``` +Параметры по умолчанию для опции "Сообщения". О доступных параметрах значениях можно узнать в [документации Bitrix](https://dev.1c-bitrix.ru/api_d7/bitrix/ui/messages/alerts.php). +```php +'PROP_ID' => [ + 'FIELDS' => [], + 'PARAMS' => [ + 'DISPLAY' => false, + 'HEIGHT' => false, + 'COLOR' => 'default', + 'ICON' => false, + ], +], +``` + ## Дополнительные типы опций Чтобы создать свой тип опции нужно создать свой класс, унаследовавшись от класса `TypeBase` и с интерфейсом `TypeInterface`. Затем, где-нибудь перед вызовом генератора зарегистрировать сопоставление названий типов, и классов, которые должны быть инициализированы. diff --git a/src/Form.php b/src/Form.php index 793d0c7..6f26a44 100755 --- a/src/Form.php +++ b/src/Form.php @@ -8,6 +8,7 @@ use CAdminTabControl; use Gelion\BitrixOptions\Types; +UI\Extension::load('ui.alerts'); UI\Extension::load('ui.forms'); UI\Extension::load('ui.buttons'); UI\Extension::load('ui.hint'); @@ -24,6 +25,7 @@ class Form private $options = []; private static $types = [ + 'ALERT' => Types\Alert::class, 'CHECKBOX' => Types\Checkbox::class, 'COLORPICKER' => Types\Colorpicker::class, 'DROPDOWN' => Types\Dropdown::class, @@ -129,8 +131,13 @@ private function getTabsFormated(): array $note = ''; $properties[$tabId][$groupName]['TITLE'] = $group['TITLE']; - $properties[$tabId][$groupName]['OPTIONS'][] = '' . $property['FIELDS']['TITLE'] . $note . '' . $input . ''; $properties[$tabId][$groupName]['OPTIONS_SORT'][] = $property['SORT']; + + if ($property['TYPE'] !== 'ALERT') { + $properties[$tabId][$groupName]['OPTIONS'][] = '' . $property['FIELDS']['TITLE'] . $note . '' . $input . ''; + } else { + $properties[$tabId][$groupName]['OPTIONS'][] = '' . $input . ''; + } } } diff --git a/src/Types/Alert.php b/src/Types/Alert.php new file mode 100644 index 0000000..6b944d4 --- /dev/null +++ b/src/Types/Alert.php @@ -0,0 +1,69 @@ +getClass(); + + return << + {$this->fields['TITLE']} + + HTML; + } + + public function getClass(): string + { + $display = $this->params['DISPLAY'] ? "ui-alert-{$this->params['DISPLAY']}" : ''; + $height = $this->params['HEIGHT'] ? "ui-alert-{$this->params['HEIGHT']}" : ''; + $color = $this->params['COLOR'] ? "ui-alert-{$this->params['COLOR']}" : ''; + $icon = $this->params['ICON'] ? "ui-alert-icon-{$this->params['ICON']}" : ''; + + return <<params = [ + 'DISPLAY' => false, + 'HEIGHT' => false, + 'COLOR' => 'default', + 'ICON' => false, + ]; + } +}