Skip to content

Instantly share code, notes, and snippets.

@may-cat
Last active May 18, 2016 22:09
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save may-cat/82cfdc5ad2c69e39958f to your computer and use it in GitHub Desktop.
Save may-cat/82cfdc5ad2c69e39958f to your computer and use it in GitHub Desktop.
Full D7 / options - second variant (1C-Bitrix)
<?
/***
* Данный пример демонстрирует один из способов написания файла options для модулей Битрикса.
*
* Приведённый пример расчитан на модуль с однотипными свойствами, число которых чётко фиксировано.
* Список свойств вынесен в отдельную переменную $arOptions, таким образом добавление нового свойства - вопрос 1 минуты
*/
use Bitrix\Main\Localization\Loc;
$arOptions = array(
'MYNAME'=>array(
'TYPE'=>'String',
'DEFAULT'=>'James Bond',
'DESCRIPTION'=>"Введите имя"
),
'NUMBER'=>array(
'TYPE'=>'String',
'DEFAULT'=>'007',
'DESCRIPTION'=>"Ваш кодовый номер"
),
);
$ADMIN_MODULE_NAME = 'maycat.somemodule';
//
if (!$USER->IsAdmin()) {
return;
}
Loc::loadMessages($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/options.php");
Loc::loadMessages(__FILE__);
$tabControl = new CAdminTabControl("tabControl", array(
array(
"DIV" => "edit1",
"TAB" => GetMessage("MAIN_TAB_SET"),
"TITLE" => GetMessage("MAIN_TAB_TITLE_SET")
),
));
// Обработка пост-запроса //
if ((!empty($save) || !empty($restore)) && $REQUEST_METHOD == "POST" && check_bitrix_sessid()) {
if (!empty($restore)) {
// Восстанавливаем дефолтные значения //
foreach ($arOptions as $code=>$v)
{
$method = "SetOption{$v['TYPE']}";
\COption::$method($ADMIN_MODULE_NAME, $code, $v['DEFAULT']);
}
CAdminMessage::ShowMessage(array("MESSAGE" => "Восстановлены значения по умолчанию", "TYPE" => "OK"));
} else {
$ok = true;
foreach ($arOptions as $code=>$v)
$ok = $ok && $_REQUEST[$code];
if ($ok)
{
foreach ($arOptions as $code=>$v)
{
$method = "SetOption{$v['TYPE']}";
\COption::$method($ADMIN_MODULE_NAME, $code, $_REQUEST[$code],$v['DESCRIPTION']);
}
CAdminMessage::ShowMessage(array("MESSAGE" => "Значения сохранены", "TYPE" => "OK"));
} else {
CAdminMessage::ShowMessage("Запрещённое значение");
}
}
}
$tabControl->Begin();
?>
<form method="post" action="<?= $APPLICATION->GetCurPage() ?>?mid=<?= urlencode($mid) ?>&amp;lang=<?= LANGUAGE_ID ?>">
<? $tabControl->BeginNextTab(); ?>
<? foreach ($arOptions as $code=>$v): ?>
<tr>
<td width="40%">
<label for="WSDL"><?=$v['DESCRIPTION']?></label>
</td>
<td width="60%">
<input type="text" size="50" maxlength="200" name="<?=$code?>" id="<?=$code?>"
value="<?= htmlspecialcharsbx(
COption::GetOptionString($ADMIN_MODULE_NAME, $code)
) ?>">
</td>
</tr>
<? endforeach ?>
<? $tabControl->Buttons(); ?>
<input type="submit" name="save" value="<?= GetMessage("MAIN_SAVE") ?>"
title="<?= GetMessage("MAIN_OPT_SAVE_TITLE") ?>" class="adm-btn-save">
<input type="submit" name="restore" title="<?= GetMessage("MAIN_HINT_RESTORE_DEFAULTS") ?>"
OnClick="return confirm('<?= AddSlashes(GetMessage("MAIN_HINT_RESTORE_DEFAULTS_WARNING")) ?>')"
value="<?= GetMessage("MAIN_RESTORE_DEFAULTS") ?>">
<?= bitrix_sessid_post(); ?>
<? $tabControl->End(); ?>
</form>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment