slider-arr arrow-right fb vk key
Created by potrace 1.13, written by Peter Selinger 2001-2015

Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
Created by potrace 1.13, written by Peter Selinger 2001-2015

cooperation Начать сотрудничество

Выберите файл
slider-arr arrow-right fb vk key
+7 (8452) 46-70-10 65-90-63
Меню

Часть 4. Подключение опций модуля

Любой серьезный модуль имеет пользовательские настройки. Например, для гостевой книги мы решили, что ее необходимо (или нет) модерировать, что мы можем разрешить или запретить HTML в сообщениях от пользователей, и что мы предоставим разработчикам возможность указывать тип сообщений (text или html). Для описания наших опций мы должны создать файл «/ix_guestbook/options.php»:

<?

 

global $MESS;

include(GetLangFileName($GLOBALS["DOCUMENT_ROOT"]."/bitrix/modules/ix_guestbook/lang/", "/options.php"));

 

$module_id = "ix_guestbook";

CModule::IncludeModule($module_id);

 

$MOD_RIGHT = $APPLICATION->GetGroupRight($module_id);

if($MOD_RIGHT>="R"):

 

$arAllOptions =

        Array(

                Array("ix_gb_moderate", GetMessage("IX_GB_MODERATE"), "Y", Array("checkbox", "Y")),

                Array("ix_gb_html", GetMessage("IX_GB_HTML"), "N", Array("checkbox", "N")),

                Array("ix_gb_html_default", GetMessage("IX_GB_DEFAULT_HTML"), "N", Array("checkbox", "N"))

                );

 

if($MOD_RIGHT>="W"):

 

        if ($REQUEST_METHOD=="GET" && strlen($RestoreDefaults)>0)

        {

                COption::RemoveOption($module_id);

                reset($arGROUPS);

                while(list(,$value)=each($arGROUPS))

                        $APPLICATION->DelGroupRight($module_id, array($value["ID"]));

        }

 

        if($REQUEST_METHOD=="POST" && strlen($Update)>0)

        {

                for($i=0; $i<count($arAllOptions); $i++)

                {

                        $name=$arAllOptions[$i][0];

                        $val=$$name;

                        if($arAllOptions[$i][3][0]=="checkbox" && $val!="Y")

                                $val="N";

                        COption::SetOptionString($module_id, $name, $val, $arAllOptions[$i][1]);

                }

        }

endif; //if($MOD_RIGHT>="W"):

?>

<form method="POST" action="<?echo $APPLICATION->GetCurPage()?>?mid=<?=htmlspecialchars($mid)?>&lang=<?echo LANG?>">

<table border="0" cellspacing="1" cellpadding="3" class="edittable">

        <?

        for($i=0; $i<count($arAllOptions); $i++):

                $Option = $arAllOptions[$i];

                $val = COption::GetOptionString($module_id, $Option[0], $Option[2]);

                $type = $Option[3];

        ?>

                <tr>

                        <td valign="top"><font class="tablefieldtext"><?echo $Option[1]?></font></td>

                        <td valign="top">

                                <font class="tablebodytext">

                                        <?if($type[0]=="checkbox"):?>

                                                <input type="checkbox" name="<?echo htmlspecialchars($Option[0])?>" value="Y"<?if($val=="Y")echo" checked";?>>

                                        <?elseif($type[0]=="text"):?>

                                                <input type="text" class="typeinput" size="<?echo $type[1]?>" maxlength="255" value="<?echo htmlspecialchars($val)?>" name="<?echo htmlspecialchars($Option[0])?>">

                                        <?elseif($type[0]=="textarea"):?>

                                                <textarea rows="<?echo $type[1]?>" class="typearea" cols="<?echo $type[2]?>" name="<?echo htmlspecialchars($Option[0])?>"><?echo htmlspecialchars($val)?></textarea>

                                        <?endif?>

                                        <?if($Option[0] == "spam_rating")echo "%"?>

                                </font>

                        </td>

                </tr>

        <?

        endfor;

        ?>

</table>

<?require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/admin/group_rights.php");?>

<br>

<script language="JavaScript">

function RestoreDefaults()

{

        if(confirm('<?echo AddSlashes(GetMessage("MAIN_HINT_RESTORE_DEFAULTS_WARNING"))?>'))

                window.location = "<?echo $APPLICATION->GetCurPage()?>?RestoreDefaults=Y&lang=<?echo LANG?>&mid=<?echo urlencode($mid)?>";

}

</script>

<div align="left">

        <input type="submit" class="button" name="Update" <?if ($MOD_RIGHT<"W") echo "disabled" ?> value="<?echo GetMessage("IX_GB_OPTIONS_SAVE")?>">&nbsp;<input type="reset" class="button" name="reset" value="<?echo GetMessage("IX_GB_OPTIONS_RESET")?>"><input type="hidden" name="Update" value="Y">&nbsp;<input type="button" <?if ($MOD_RIGHT<"W") echo "disabled" ?> class="button" title="<?echo GetMessage("MAIN_HINT_RESTORE_DEFAULTS")?>" OnClick="RestoreDefaults();" value="<?echo GetMessage("MAIN_RESTORE_DEFAULTS")?>">

</div>

</form>

<?endif;?>

Код выглядит сложным, но на самом деле он целиком заимствован из аналогичного файла настроек какого-то стандартного модуля, и нам пришлось изменить лишь его малую часть. Сначала обратим внимание на вызов файлов со строковыми константами (это придется делать постоянно). В нашем случае, вызывается файл «ix_guestbook/lang/ru/options.php» следующего содержания:

<?

$MESS ['IX_GB_MODERATE'] = "Модерировать гостевые:";

$MESS ['IX_GB_HTML'] = "Разрешить html в сообщениях";

$MESS ['IX_GB_DEFAULT_HTML'] = "Включить по умолчанию HTML в сообщениях";

$MESS ['IX_GB_OPTIONS_SAVE'] = "Сохранить";

?>

Далее следует код обращения к конкретному модулю ix_guestbook. И самое главное, что нам понадобится сделать – это описать собственный массив $arAllOptions. Разберем лишь одну строку:

Array("ix_gb_moderate", GetMessage("IX_GB_MODERATE"), "Y", Array("checkbox", "Y")),

Первый параметр массива – это название опции. Второй – текстовое описание опции, взятое из $MESS ['IX_GB_MODERATE']. Третий параметр – это значение опции по умолчанию. Последний параметр служит для описания типа визуального элемента формы, который позволит пользователю редактировать значение опции. В нашем случае, это checkbox со значением “Y” по умолчанию. Другими вариантами могли бы быть текстовые поля (Array("text", 2)), списки значений (selectbox, пример можно посмотреть в «\modules\main\options.php»), и т.д.

Описав свои собственные опции, вставим наше название для кнопки сохранения (см. GetMessage("IX_GB_OPTIONS_SAVE") выше) – и это окажется последним, что нам необходимо сделать для подключения собственных опций модуля. Результат будет выглядеть следующим образом:

Рис. 3. Опции модуля «Гостевые книги»

спасибо за просмотр!

© 2004 - 2017   ООО «Инфо-Эксперт». ИНН 6449058776.

Наш адрес: г. Саратов, ул. Астраханская, 88 оф. 20.

Тел.: (8452) 46-70-10

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

Cоглашение об использовании сайта.  Данный интернет-сайт носит исключительно информационный характер и ни при каких условиях не является публичной офертой, определяемой положениями Статьи 437 (2) Гражданского кодекса РФ.