Экземпляр модуля может иметь два типа настроек: 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 );
|
См. также генератор решений
|