Бесплатный модуль "Настройки проекта"

Бесплатный модуль "Настройки проекта"
26 октября 2012
Описание
Практически любой проект требует хранения и использования внешних ассоциативных параметров, таковыми могут являться идентификаторы инфоблоков, групп пользователей и множество других по усмотрению разработчика. Появление “магических” цифр в коде является нежелательной практикой и очень затрудняет поддержку такого проекта. В большинстве случаев параметры определяются в виде констант или, что еще хуже, глобальных переменных в подключаемом файле init.php. Такое решение не является наглядным и увеличивает эффект “черного ящика”, что в свою очередь повышает зависимость заказчика от разработчика при дальнейшем развитии проекта.
Решение “Настройки проекта” позволяет устанавливать различные параметры через привычный web-интерфейс и легко получать их значения через api использования модуля, что является несомненным плюсом удобства использования и “прозрачности” проекта.

Разработчиком определяется список используемых полей и их значений. Для удобного использования и редактирования значений поля необходимо установить ряд атрибутов для него. Таковыми являются:
  • имя - название в общем списке настроек
  • символьный код - строка идентифицирующие поле, используется в коде при получении значения
  • сортировка - порядок отображения в общем списке
  • признак (флаг) множественности - указывает что значением поля будет являться список (массив) или скалярное величина
  • тип - принадлежность поля к определенной формализации
  • значение по умолчанию - хранимое значение поля, является больше подсказкой при редактировании действующего значения
для поля типа “список” необходимо определить множество вариантов, которые определяются при настройке атрибутов.

Настройка метаданных поля:
 
На данный момент поддерживаются следующие типы полей:
  • число
  • строка
  • флаг (да/нет)
  • список
  • инфоблок - вариантами значений становится список активных информационных блоков
  • группа пользователей
  • пользователь
  • пользовательский (“кастомный”)
Использование.
После установки модуля появится страница административной части по адресу “Настройки” - “Настройки проекта” (в самом низу меню). Где необходимо определить список полей и их значений.
Получение значения поля определяется следующим методом:
WS_PSettings::getFieldValue($name, $default = null);
где $name - символьный код поля определенный в настроках, $defult - значение которое вернет метод, если поля с таким кодом не существует.

Пример:
<?php /* == == = == = == = = = */ // Подключение модуля (один раз) CModule::includeModule(‘ws.projectsettings’); // Получение списка инфоблоков товаров интернет-магазина $iblockProducts = WS_PSettings::getFieldValue(‘iblockProducts’, array()); // Получение идентифиатора группы менеджеров $managersGroup = WS_PSettings::getFieldValue(‘managerGroup’); /* == == = == = == = = = */
В процессе разработки могут понадобиться использование “списочных” типов непредусмотренных при разработке модуля (все требуемые варианты предусмотреть невозможно и в свою очередь накладно как по времени разработки так и по количеству обращений к базе данных). Установка при этом списочных значений вручную теряет свою актуальность, так же необходимо для нескольких полей с одинаковыми вариантами применять одинаковые настройки списка фактически их копируя. Для этого случая предусмотрено событие “'OnBuildTypes'”, в обработчиках которого можно добавлять собственные вычисляемые варианты списочных полей. Результатом выполнения обработчика должен являться ассоциативный массив следующей структуры:
<?php array(    //Название типа, будет отображено в списке выбора типов    ‘name’ => ‘Список валют’, //Варианты значений списка, где ключами являются сами значения выбора, а       //значениями массива - названия отображаемые в списке вобра при вводе значения    ‘variants’ => array(          ‘RUB’ => ‘Рубль’,       ‘USD’ => ‘Доллар’,       ‘EUR’ => ‘Евро’    ) );
Пример использования:
Обработчик должен быть подключен до исполнения контентной части административной страницы, желательно определить его в файле init.php.
Определение обработчика (init.php):

<?php /** =================== Добавление обработчика присоединения типа ==================== **/ function addSettingsCustomCurrencyType() {     $rsCur = CCurrency::GetList(      $by = 'name',      $order = 'asc'     );     $variants = array();     while($aCurrency = $rsCur->fetch()) {         $variants[$aCurrency['CURRENCY']] = $aCurrency['FULL_NAME'];     }     return array(     'name' => 'Список валют',     'variants' => $variants     ); } AddEventHandler('ws.projectsettings', 'OnBuildTypes', 'addSettingsCustomCurrencyType'); /** ========================================================== **/

Теперь при редактировании настроек появится определенный пользовательский тип.
 
Где определены “кастомные” варианты выбора.


Получение значения в коде для такого поля не чем не отличается от остальных (по символьному коду).

На данный момент существует два вида прав доступа к настройкам, это запрет и полный доступ. В дальнейшем планируется дополнительное разграничение прав, такие как изменение (редактирование значений полей без доступа к настройкам) и чтение (без возможности изменений).

Вам нужна консультация?

Можете связаться с нами удобным удобным способом