Экземпляр модуля может иметь два типа настроек: properties - это неизменяемые системные настройки и options - это настройки, значение которых может быть изменено вручную или из кода. Установка настроек properties и options определяется в файлах "_local/modules/declaration/properties.php" и "_local/modules/declaration/options.php" соответственно.
Properties Данные
настройки можно приравнять к константам экземпляра модуля, их значения
могут быть обновлены только при обновлении системы или переустановке
экземпляра модуля. Пример набора настроек модуля inst_sample
if($oDeclarator->isRegistered('inst_sample')){
$oMod = $oDeclarator->getModule('inst_sample');
$oMod->setProperty('taborder', $oDeclarator->getTabOrder('inst_sample'));
$oMod->setProperty('spec_blocks', array('spec_small_inst_sample'));
$oMod->setProperty('front_request_types', array('plain'));
$oMod->setProperty('user_defined_property', 'user_defined_value');
}
|
После установки экземпляра модуля, его настройки типа property становятся доступны из кода в любом модуле системы. Чтение настроек:
bool AMI::issetProperty($modId, $propertyName);
mixed AMI::getProperty($modId, $propertyName);
bool AMI::issetAndTrueProperty($modId, $propertyName);
|
options Эти настройки
модуля могут быть изменены вручную через диалог настройки модуля или
модуль "Настройка системы". Так же имеется возможность манипуляции с
данными настройками из кода модуля. При установке экземпляра модуля происходит добавление настроек со значениями по-умолчанию. Пример добавления настроек экземпляру с идентификатором inst_sample:
if($oDeclarator->isRegistered('inst_sample')){
$oMod = $oDeclarator->getModule('inst_sample');
$oMod->setOption('option_bool', false);
$oMod->setOption('option_uint', 0);
$oMod->setOption('option_sint', -5);
$oMod->setOption('option_float', 0.01);
$oMod->setOption('option_char', 'some string');
$oMod->setOption('option_text', "text containing\nline\nbreaks");
$oMod->setOption('option_email', 'mail.1@domain.com,mail.2@domain.com');
$oMod->setOption('option_enum', 'second');
$oMod->setOption('option_enum_multi1', array('first', 'third'));
$oMod->setOption('option_enum_multi2', array());
$oMod->setOption('option_date_period', '-1 month');
$oMod->setOption('option_date_period_positive', '1 hour');
$oMod->setOption('option_date_period_negative', '-1 minute');
}
|
Для того чтобы настройки появились в окне настроек
экземпляра модуля, необходимо задать правила отображения настроек. Это
делается в файле "_local/modules/declaration/rules.php"
if($oDeclarator->isRegistered('inst_sample')){
$oMod = $oDeclarator->getModule('inst_sample');
$oMod->addRule(
'spl_custom_options',
AMI_Module::RLT_SPLITTER
);
$oMod->addRule(
'option_bool',
AMI_Module::RLT_BOOL,
AMI_Module::RLC_NONE,
FALSE
);
$oMod->addRule(
'option_uint',
AMI_Module::RLT_UINT,
array('min' => 0, 'max' => 10),
0
);
$oMod->addRule(
'option_sint',
AMI_Module::RLT_SINT,
array('min' => -10, 'max' => 10),
-5
);
$oMod->addRule(
'option_float',
AMI_Module::RLT_FLOAT,
AMI_Module::RLC_NONE,
0.01
);
$oMod->addRule(
'option_char',
AMI_Module::RLT_STRING,
array('length_min' => 3, 'length_max'=> 255),
'some string'
);
$oMod->addRule(
'option_text',
AMI_Module::RLT_TEXT,
AMI_Module::RLC_NONE,
"text containing\nline\nbreaks"
);
$oMod->addRule(
'option_email',
AMI_Module::RLT_EMAIL,
AMI_Module::RLC_NONE,
'mail.1@domain.com,mail.2@domain.com'
);
$oMod->addRule(
'option_enum',
AMI_Module::RLT_ENUM,
array('first', 'second', 'third'),
'second'
);
$oMod->addRule(
'option_enum_multi1',
AMI_Module::RLT_ENUM_MULTI,
array('first', 'second', 'third'),
array('first', 'third')
);
$oMod->addRule(
'option_enum_multi2',
AMI_Module::RLT_ENUM_MULTI,
array('first', 'second', 'third', AMI_Module::RLC_EMPTY),
array()
);
$oMod->addRule(
'option_date_period',
AMI_Module::RLT_DATE_INTERVAL,
AMI_Module::RLC_NONE,
'-1 month'
);
$oMod->addRule(
'option_date_period_positive',
AMI_Module::RLT_DATE_INTERVAL_POS,
AMI_Module::RLC_NONE,
'1 hour'
);
$oMod->addRule(
'option_date_period_negative',
AMI_Module::RLT_DATE_INTERVAL_NEG,
AMI_Module::RLC_NONE,
'-1 minute'
);
$oMod->finalize();
}
|
Чтение и установка настроек:
bool AMI::issetOption($modId, $optionName);
mixed AMI::getOption($modId, $optionName);
bool AMI::issetAndTrueOption($modId, $optionName);
mixed AMI::setOption($modId, $optionName, $optionValue);
|
См. также генератор решений
|