fi1a/usersettings

Модуль 1С-Битрикс "Пользовательские настройки". Предоставляет страницу с пользовательскими настройками сайта.

Installs: 15

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

Type:bitrix-d7-module

2.1.2 2023-03-15 07:42 UTC

This package is auto-updated.

Last update: 2024-05-15 10:24:53 UTC


README

Latest Version Software License PHP Version Total Downloads Support mail

Позволяет создать административную страницу с пользовательскими настройками. Предоставляет удобное API для создания вкладок и полей, что дает возможность использовать этот модуль совместно с модулями миграций. События дают возможность вносить изменения в устанавливаемое значение настройки или выполнить какие-либо действия при добавлении/удалении/обновлении вкладок или полей.

Описание модуля

Данный модуль решает задачи добавления настроек для вашего проекта. Например: включение/отключение, даты для реализации активности какого-либо функционала, тексты. Типы полей в настройках ограничены типами пользовательских полей, т.е. вы легко можете добавить свой тип поля для настроек.

Преимущества модуля

  1. Расположение ссылки в меню со страницей пользовательских настроек можно расположить в любом основном разделе. Также возможна настройка названия страницы и название ссылки пользовательских настроек;
  2. В настройках модуля можно добавить вкладки и в них поля;
  3. Для вкладок и полей предусмотрена сортировка, что позволяет настроить расположение их на странице пользовательских настроек;
  4. В качестве полей модуля выступают пользовательские поля, что позволяет добавить в настройки любой из доступных типов пользовательских полей (строка, дата и т.д.);
  5. Поддерживаются множественные значения для настроек;
  6. Предусмотрены гибкие настройки прав доступа для просмотра/редактирования пользовательских настроек и просмотра/редактирования полей, вкладок;
  7. Для вкладок есть возможность указать название и заголовок, для полей - название и подсказку;
  8. Используя API легко можно добавить вкладку или поле, это позволяет писать миграции;
  9. Система событий дает возможность вносить изменения при установке значения настройки или выполнить какие-либо действия при добавлении/удалении/обновлении вкладок или полей.

Список поддерживаемых типов полей

Из коробки вам будут доступны следующие типы полей:

  • Адрес;
  • Бронирование ресурсов;
  • Видео;
  • Да/Нет;
  • Дата;
  • Дата со временем;
  • Деньги;
  • Опрос;
  • Письмо (email);
  • Привязка к разделам инф. блоков;
  • Привязка к элементам highload-блоков;
  • Привязка к элементам инф. блоков;
  • Содержимое ссылки;
  • Список;
  • Ссылка;
  • Строка;
  • Файл;
  • Целое число;
  • Число;
  • Шаблон.

список актуален на момент релиза модуля для «1С-Битрикс: Управление сайтом» редакции "Бизнес"

Изображения модуля

Добавление новой вкладки:

Добавление новой вкладки

Добавление поля для пользовательских настроек:

Добавление поля для пользовательских настроек

Редактирование пользовательских настроек

Редактирование пользовательских настроек

Внешний вид пользовательских настроек

Внешний вид пользовательских настроек

Установка модуля из Маркетплейса 1С-Битрикс

Модуль можно установить из Маркетплейса 1С-Битрикс "Пользовательские настройки"

Перед установкой модуля следует установить модуль "Обертка над composer для установки зависимостей" если он еще не установлен. Модуль необходим для установки зависимостей через composer.

После чего модуль устанавливается и удаляется как любой модуль из маркетплейса.

Установка модуля через composer

В вашем composer.json проекта необходимо указать:

  • в блоке require указать инсталятор "fi1a/installers": "^2.0;
  • в блоке require указать модуль "fi1a/usersettings": "^2.0";
  • указать путь до 1С-Битрикс (bitrix-dir) для копирования модулей при установке fi1a/installers.

Пример файла composer.json проекта:

{
  "name": "fi1a/project",
  "type": "project",
  "license": "MIT",
  "authors": [
    {
      "name": "Fi1a",
      "email": "fi1a@icloud.com"
    }
  ],
  "require": {
    "fi1a/installers": "^2.0",
    "fi1a/usersettings": "^2.0"
  },
  "extra": {
    "bitrix-dir": "../bitrix"
  }
}

Затем выполняем установку пакетов командой composer install.

Если у вас не подключен composer autoload.php, его необходимо подключить в файле local/php_interface/init.php

require_once __DIR__ . '/../vendor/autoload.php';

Если модуль не установили через composer, его необходимо установить из админки 1С-Битрикс (Marketplace > Установленные решения > модуль "Пользовательские настройки (fi1a.usersettings)").

После установки проверьте права на чтение файлов и папок модуля.

Поддержка миграций

Начиная с версии 1.2.0 появилась поддержка миграций модуля "Миграции для разработчиков" (sprint.migration)

Добавлен хелпер \Fi1a\UserSettings\SprintMigration\Helpers\UserSettingsHelper и билдер \Fi1a\UserSettings\SprintMigration\Builders\UserSettingsBuilder

Использование хелпера:

public function up()
{
    $helper = $this->getHelperManager();

    $helper->UserSettings()->saveTab("TAB", array (
        'ACTIVE' => '1',
        'CODE' => 'TAB',
        'SORT' => '500',
        'LOCALIZATION' => [
            'ru' => [
                'L_NAME' => 'Вкладка',
                'L_TITLE' => 'Вкладка',
            ],
            'en' => [
                'L_NAME' => 'Tab',
                'L_TITLE' => 'Tab',
            ],
        ],
    ));
}

Создание миграции доступно в разделе "Инструменты" под пунктом "Пользовательские настройки" на странице управления миграциями модуля "Миграции для разработчиков" (sprint.migration).

Билдер модуля миграций

Работа со значениями полей

Класс \Fi1a\UserSettings\Option предназначен для работы со значениями полей. Класс реализует паттерн Singleton и для получения экземпляра класса следует использовать метод getInstance().

use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\Option;

Loader::includeModule('fi1a.usersettings');

$option = Option::getInstance();

Получить значение поля

Для получения значения поля по символьному коду необходимо воспользоваться методом get(string $key, $default = null).

Аргумент Описание
string $key Символьный код поля
$default Значение, которое вернется при отсутсвии значения в БД
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\Option;

Loader::includeModule('fi1a.usersettings');

// Вернется значение поля UF_CAPTCHA_SECRET, если значение не задано вернется false
Option::getInstance()->get('UF_CAPTCHA_SECRET', false);

Метод getAll(): array предназначен для получения значений по всем пользовательским полям.

use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\Option;

Loader::includeModule('fi1a.usersettings');

// Вернутся значения по всем пользовательским полям
Option::getInstance()->getAll();

Установить значение поля

Для установки значения поля используется метод set(string $key, $value): \Bitrix\Main\Result. В этом методе реализована валидация значения поля. Метод возвращает экземпляр класса \Bitrix\Main\Result и проверить наличие ошибки при установке значения можно методом isSuccess().

Аргумент Описание
string $key Символьный код поля
$value Новое значение поля
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\Option;

Loader::includeModule('fi1a.usersettings');

$option = Option::getInstance();

$result = $option->set('UF_CAPTCHA_SECRET', 'foo');
if (!$result->isSuccess()) {
    // В случае ошибки
    echo implode('<br>', $result->getErrorMessages());

    return;
}

// Вернется значение "foo" установленное методом "set"
$option->get('UF_CAPTCHA_SECRET');

Сбросить кеш значений

При изменении структуры или установки значения кеш автоматически очищается. Метод clearCache(): bool пригодится для принудительной очистки кеша при изменениях не через API модуля.

use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\Option;

Loader::includeModule('fi1a.usersettings');

Option::getInstance()->clearCache();

Выборка, добавление, обновление, удаление вкладок

Работа с вкладками реализуется тремя классами:

  • \Fi1a\UserSettings\TabMapper — маппер вкладок пользовательских настроек;
  • \Fi1a\UserSettings\Tab — класс вкладки в пользовательских настройках;
  • \Fi1a\UserSettings\TabCollection — коллекция экземпляров классов вкладок пользовательских настроек.

Подробнее на них остановимся ниже.

Добавление вкладки

Класс вкладки \Fi1a\UserSettings\Tab является наследником класса \ArrayObject. Для начала нужно получить экземпляр класса вкладки используя фабричный метод create(array $input = []): TabInterface передав в него все необходимые парамеры. Данный метод является статичным. После того как мы получили экземпляр класса \Fi1a\UserSettings\Tab вызовем метод add(): AddResult, который вернет результат в виде объкта класса \Bitrix\Main\ORM\Data\AddResult. Успешность выполнения операции можно проверить методом isSuccess($internalCall = false) класса \Bitrix\Main\ORM\Data\AddResult.

use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\Tab;

Loader::includeModule('fi1a.usersettings');

$tab = Tab::create([
    'ACTIVE' => 1,
    'CODE' => 'FORM_OPTIONS',
    'SORT' => 500,
    'LOCALIZATION' => [
        'ru' => [
            'L_NAME' => 'Настройки формы',
            'L_TITLE' => 'Важные настройки формы',
        ],
    ],
]);

$addResult = $tab->add();
if (!$addResult->isSuccess()) {
    echo implode('<br>', $addResult->getErrorMessages());
}

Описание полей:

  • ACTIVE — активность вкладки. Определяет будет ли выведена вкладка на странице пользовательских настроек;
  • CODE — символьный код вкладки;
  • SORT — сортировка вкладки. Определяет в какой последовательности будут выведены вкладки на странице пользовательских настроек;
  • LOCALIZATION — массив с языковыми сообщениями. Ключем является символьный код языка.
    • L_NAME — название вкладки;
    • L_TITLE — заголовок вкладки.

Выборка вкладок

Основным метод для выборки вкладок является метод getList(array $parameters = []): TabCollectionInterface класса \Fi1a\UserSettings\TabMapper. Данный метод принимает в качестве аргумента массив аналогичный синтаксису ORM D7. Метод возвращает коллекцию классов вкладок \Fi1a\UserSettings\TabCollection. При пустом результате выборки класс коллекции вернется с нулевым количеством элементов.

Аргумент Описание
array $parameters Параметры getList
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\TabMapper;

Loader::includeModule('fi1a.usersettings');

$tabCollection = TabMapper::getList([
    'filter' => [
        'ACTIVE' => 1,
    ],
    'order' => [
        'SORT' => 'ASC',
    ],
]);

foreach ($tabCollection as $tab) {
    // Do something
}
unset($tab);

Предыдущий пример можно заменить с использованием метода getActive(array $parameters = []): TabCollectionInterface. Данный метод выполняет выборку всех активных вкладок с возможностью дополнительной фильтрации или сортировки путем передачи аргумента $parameters аналогичного ORM D7.

Аргумент Описание
array $parameters Параметры getList
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\TabMapper;

Loader::includeModule('fi1a.usersettings');

$tabCollection = TabMapper::getActive([
    'order' => [
        'SORT' => 'ASC',
    ],
]);

foreach ($tabCollection as $tab) {
    // Do something
}
unset($tab);

Метод getById(int $id) осуществляет поиск вкладки по идентификатору. В отличие от методов getList(array $parameters = []): TabCollectionInterface и getActive(array $parameters = []): TabCollectionInterface возвращает не коллекцию вкладок, а экземпляр класса вкладки \Fi1a\UserSettings\Tab. Если вкладку не удалось найти по идентификатору, метод вернет значение false.

Аргумент Описание
int $id Идентификатор вкладки
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\TabMapper;

Loader::includeModule('fi1a.usersettings');

$tab = TabMapper::getById(1);

if (false !== $tab) {
    echo $tab['ID'];
}

Обновление вкладки

Для обновления вкладки следует использовать метод update(): UpdateResult класса \Fi1a\UserSettings\Tab, который вернет результат в виде объкта класса \Bitrix\Main\ORM\Data\UpdateResult. Успешность выполнения операции можно проверить методом isSuccess($internalCall = false) класса \Bitrix\Main\ORM\Data\UpdateResult.

use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\TabMapper;

Loader::includeModule('fi1a.usersettings');

$tab = TabMapper::getById(3);

if (false !== $tab) {
    $tab['ACTIVE'] = 0;

    $updateResult = $tab->update();

    if (!$updateResult->isSuccess()) {
        echo implode('<br>', $updateResult->getErrorMessages());
    }
}

Сохранение вкладки

Метод save() осуществляет добавление или обновление вкладки в зависимости от наличия значения ID (первичного ключа).

Обновление с использованием метода save()

use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\TabMapper;

Loader::includeModule('fi1a.usersettings');

$tab = TabMapper::getById(3);

if (false !== $tab) {
    // Вызов метода обновит вкладку
    $tab['ACTIVE'] = 1;

    $updateResult = $tab->save();

    if (!$updateResult->isSuccess()) {
        echo implode('<br>', $updateResult->getErrorMessages());
    }
}

Добавление с использованием метода save()

use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\TabMapper;

Loader::includeModule('fi1a.usersettings');

$tab = TabMapper::getById(3);

if (false !== $tab) {
    // Вызов метода добавит вкладку
    unset($tab['ID']);
    $tab['CODE'] = 'NEW_TAB_CODE';

    $addResult = $tab->save();

    if (!$addResult->isSuccess()) {
        echo implode('<br>', $addResult->getErrorMessages());
    }
}

Удаление вкладки

Для удаления вкладки следует использовать метод delete(): DeleteResult класса \Fi1a\UserSettings\Tab, который вернет результат в виде объкта класса \Bitrix\Main\ORM\Data\DeleteResult. Успешность выполнения операции можно проверить методом isSuccess($internalCall = false) класса \Bitrix\Main\ORM\Data\DeleteResult.

use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\TabMapper;

Loader::includeModule('fi1a.usersettings');

$tab = TabMapper::getById(3);

$deleteResult = $tab->delete();

if (!$deleteResult->isSuccess()) {
    echo implode('<br>', $deleteResult->getErrorMessages());
}

Выборка, добавление, обновление, удаление полей

Работа с полями реализуется тремя классами:

  • \Fi1a\UserSettings\FieldMapper — маппер полей пользовательских настроек;
  • \Fi1a\UserSettings\Field — класс поля пользовательских настройках;
  • \Fi1a\UserSettings\FieldCollection — коллекция экземпляров классов полей пользовательских настроек.

Подробнее на них остановимся ниже.

Добавление поля

Класс поля \Fi1a\UserSettings\Field является наследником класса \ArrayObject. Для начала нужно получить экземпляр класса поля, используя фабричный метод create(array $input = []): FieldInterface, передав в него все необходимые парамеры. Данный метод является статичным. После того как мы получили экземпляр класса \Fi1a\UserSettings\Field вызовем метод add(): AddResult, который вернет результат в виде объкта класса \Bitrix\Main\ORM\Data\AddResult. Успешность выполнения операции можно проверить методом isSuccess($internalCall = false) класса \Bitrix\Main\ORM\Data\AddResult.

Ниже приведен пример добавления поля с типом строка.

use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\Field;

Loader::includeModule('fi1a.usersettings');

$field = Field::create([
    'ACTIVE' => '1',
    'TAB_ID' => '1',
    'UF' => [
        'FIELD_NAME' => 'UF_RECAPTCHA_SECRET',
        'USER_TYPE_ID' => 'string',
        'XML_ID' => '',
        'SORT' => '500',
        'MULTIPLE' => 'N',
        'MANDATORY' => 'N',
        'SETTINGS' => [
            'SIZE' => 60,
            'ROWS' => 1,
            'REGEXP' => '',
            'MIN_LENGTH' => 0,
            'MAX_LENGTH' => 0,
            'DEFAULT_VALUE' => '',
        ],
        'EDIT_FORM_LABEL' => ['en' => '', 'ru' => 'Приватный ключ reСaptcha v3',],
        'HELP_MESSAGE' => ['en' => '', 'ru' => 'Используется для reСaptcha v3',],
    ],
]);

$addResult = $field->add();

if (!$addResult->isSuccess()) {
    echo implode('<br>', $addResult->getErrorMessages());
}

Описание полей:

  • ACTIVE — активность поля. Определяет будет ли выведено поле на странице пользовательских настроек;
  • TAB_ID — идентификатор вкладки, которой принадлежит поле;
  • UF — массив с настройками пользовательского поля.

Выборка полей

Основным методом для выборки полей является getList(array $parameters = []): FieldCollectionInterface класса \Fi1a\UserSettings\FieldMapper. Данный метод принимает в качестве аргумента массив аналогичный синтаксису ORM D7. Метод возвращает коллекцию классов полей \Fi1a\UserSettings\FieldCollection. При пустом результате выборки класс коллекции вернется с нулевым количеством элементов.

Аргумент Описание
array $parameters Параметры getList
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;

Loader::includeModule('fi1a.usersettings');

$fieldCollection = FieldMapper::getList([
    'filter' => [
        'ACTIVE' => 1,
    ],
    'order' => [
        'ID' => 'DESC',
    ],
]);

foreach ($fieldCollection as $field) {
    // Do something
}
unset($field);

Предыдущий пример можно заменить с использованием метода getActive(array $parameters = []): FieldCollectionInterface. Данный метод выполняет выборку всех активных полей с возможностью дополнительной фильтрации или сортировки путем передачи аргумента $parameters аналогичного ORM D7.

Аргумент Описание
array $parameters Параметры getList
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;

Loader::includeModule('fi1a.usersettings');

$fieldCollection = FieldMapper::getActive([
    'order' => [
        'ID' => 'DESC',
    ],
]);

foreach ($fieldCollection as $field) {
    // Do something
}
unset($field);

Метод getById(int $id) осуществляет поиск поля по идентификатору (не по идентификатору пользовательского поля). В отличие от методов getList(array $parameters = []): FieldCollectionInterface и getActive(array $parameters = []): IFieldCollection возвращает не коллекцию полей, а экземпляр класса поля \Fi1a\UserSettings\Field. Если поле не удалось найти по идентификатору, метод вернет значение false.

Аргумент Описание
int $id Идентификатор поля
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;

Loader::includeModule('fi1a.usersettings');

$field = FieldMapper::getById(2);

if (false !== $field) {
    echo $field['ID'];
}

Для выбора всех полей вкладки можно использовать метод getByTabId(int $tabId). Метод вернет коллекцию полей принадлежащих вкладки с идентификатором int $tabId.

Аргумент Описание
int $tabId Идентификатор вкладки поля
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;

Loader::includeModule('fi1a.usersettings');

$fieldCollection = FieldMapper::getByTabId(1);

foreach ($fieldCollection as $field) {
    // Do something
}
unset($field);

Для выбора поля по символьному коду можно использовать метод getByCode(string $code). Метод вернет поле с символьным кодом string $code или false, если поле с символьным кодом не найдено.

Аргумент Описание
string $code Символьный код поля
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;

Loader::includeModule('fi1a.usersettings');

$field = FieldMapper::getByCode('UF_FUS_FIELD');

if (false !== $field) {
    echo $field['ID'];
}

Обновление поля

Для обновления поля следует использовать метод update(): UpdateResult класса \Fi1a\UserSettings\Field, который вернет результат в виде объекта класса \Bitrix\Main\ORM\Data\UpdateResult. Успешность выполнения операции можно проверить методом isSuccess($internalCall = false) класса \Bitrix\Main\ORM\Data\UpdateResult.

use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;

Loader::includeModule('fi1a.usersettings');

$field = FieldMapper::getById(3);

if (false !== $field) {
    $field['ACTIVE'] = 0;

    $updateResult = $field->update();

    if (!$updateResult->isSuccess()) {
        echo implode('<br>', $updateResult->getErrorMessages());
    }
}

Сохранение поля

Метод save() осуществляет добавление или обновление поля в зависимости от наличия значения ID (первичного ключа).

Обновление с использованием метода save()

use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;

Loader::includeModule('fi1a.usersettings');

$field = FieldMapper::getById(3);

if (false !== $field) {
    // Вызов метода обновит поле
    $field['ACTIVE'] = 1;

    $updateResult = $field->save();

    if (!$updateResult->isSuccess()) {
        echo implode('<br>', $updateResult->getErrorMessages());
    }
}

Добавление с использованием метода save()

use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;

Loader::includeModule('fi1a.usersettings');

$field = FieldMapper::getById(3);

if (false !== $field) {
    // Вызов метода добавит поле
    unset($field['ID']);
    unset($field['UF_ID']);
    unset($field['UF']['ID']);
    $field['UF']['FIELD_NAME'] = 'UF_NEW_FIELD';

    $addResult = $field->save();

    if (!$addResult->isSuccess()) {
        echo implode('<br>', $addResult->getErrorMessages());
    }
}

Удаление поля

Для удаления поля следует использовать метод delete(): DeleteResult класса \Fi1a\UserSettings\Field, который вернет результат в виде объкта класса \Bitrix\Main\ORM\Data\DeleteResult>. Успешность выполнения операции можно проверить методом isSuccess($internalCall = false) класса \Bitrix\Main\ORM\Data\DeleteResult.

use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;

Loader::includeModule('fi1a.usersettings');

$field = FieldMapper::getById(3);

$deleteResult = $field->delete();

if (!$deleteResult->isSuccess()) {
    echo implode('<br>', $deleteResult->getErrorMessages());
}

Значения поля типа "список"

Получить значения поля типа "список" можно с помощью класса-хелпера Fi1a\UserSettings\Helpers\Enums метода get передав в качестве аргумента объект поля Fi1a\UserSettings\FieldInterface типа "список".

use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;
use \Fi1a\UserSettings\Helpers\Enums;

Loader::includeModule('fi1a.usersettings');

$field = FieldMapper::getById(3);
$enums = Enums::get($field);

События модуля

В модуле предусмотрены события, которые позволяют модифицировать данные или расширить функционал модуля. Пример использования событий:

use \Bitrix\Main\Event;
use \Bitrix\Main\Loader;
use \Bitrix\Main\EventManager;
use \Bitrix\Main\EventResult;
use \Fi1a\UserSettings\Option;

Loader::includeModule('fi1a.usersettings');

EventManager::getInstance()->addEventHandler(
    'fi1a.usersettings',
    'OnOptionGet',
    function (Event $event) {
        return new EventResult(
            EventResult::SUCCESS,
            [
                'default' => 'new default value',
            ]
        );
    }
);

// Если поле имеет значение null или false, вместо 'foo' вернется значение 'new default value'
Option::getInstance()->get('UF_RECAPCHA_SECRET', 'foo');

События связанные со значениями полей

  • OnOptionGet — вызывается ДО возврата значения поля методом get(string $key, $default = null) класса \Fi1a\UserSettings\Option;
  • OnBeforeOptionSet — вызывается ДО установки значения поля методом set(string $key, $value): Result класса \Fi1a\UserSettings\Option;
  • OnAfterOptionSet — вызывается ПОСЛЕ установки значения поля методом set(string $key, $value): Result класса \Fi1a\UserSettings\Option.

События связанные с вкладками

  • OnBeforeTabAdd — вызывается ДО добавления новой вкладки методом add(): AddResult класса \Fi1a\UserSettings\Tab;
  • OnAfterTabAdd — вызывается ПОСЛЕ добавления новой вкладки методом add(): AddResult класса \Fi1a\UserSettings\Tab;
  • OnBeforeTabUpdate — вызывается ДО обновления вкладки методом update(): UpdateResult класса \Fi1a\UserSettings\Tab;
  • OnAfterTabUpdate — вызывается ПОСЛЕ обновления вкладки методом update(): UpdateResult класса \Fi1a\UserSettings\Tab;
  • OnBeforeTabDelete — вызывается ДО удаления вкладки методом delete(): DeleteResult класса \Fi1a\UserSettings\Tab;
  • OnAfterTabDelete — вызывается ПОСЛЕ удаления вкладки методом delete(): DeleteResult класса \Fi1a\UserSettings\Tab.

События связанные с полями

  • OnBeforeFieldAdd — вызывается ДО добавления нового поля методом add(): AddResult класса \Fi1a\UserSettings\Field;
  • OnAfterFieldAdd — вызывается ПОСЛЕ добавления нового поля методом add(): AddResult класса \Fi1a\UserSettings\Field;
  • OnBeforeFieldUpdate — вызывается ДО обновления поля методом update(): UpdateResult класса \Fi1a\UserSettings\Field;
  • OnAfterFieldUpdate — вызывается ПОСЛЕ обновления поля методом update(): UpdateResult класса \Fi1a\UserSettings\Field;
  • OnBeforeFieldDelete — вызывается ДО удаления поля методом delete(): DeleteResult класса \Fi1a\UserSettings\Field;
  • OnAfterFieldDelete — вызывается ПОСЛЕ удаления поля методом delete(): DeleteResult класса \Fi1a\UserSettings\Field.