Чтобы внутри административной зоны можно было использовать стилизованные под системные, свои собственные элементы управления, например, кнопку «подтвердить», в начале файла admin.php, наряду с другими включениями, следует также прописать следующие строки, обозначенные жирным шрифтом:
$NETCAT_FOLDER = join(strstr(__FILE__, "/") ? "/" : "\\", array_slice(preg_split("/[\/\\\]+/", __FILE__), 0, -4)).( strstr(__FILE__, "/") ? "/" : "\\" );
include_once ($NETCAT_FOLDER."vars.inc.php");
require ($MODULE_FOLDER."example/admin.inc.php");
require ($ADMIN_FOLDER."function.inc.php");
require ($ADMIN_FOLDER."modules/ui.php");
$UI_CONFIG = new ui_config_module('example');
if (is_file($MODULE_FOLDER."example/".MAIN_LANG.".lang.php")) {
require_once ($MODULE_FOLDER."example/".MAIN_LANG.".lang.php");
} else {
require_once ($MODULE_FOLDER."example/en.lang.php");
}
$perm->ExitIfNotAccess(NC_PERM_MODULE, 0, 0, 0, 1);
$MODULE_VARS = $nc_core->modules->get_module_vars();
Обратите внимание, что в названии класса присутствует ключевое слово модуля «example», его нужно заменить на своё.
Если нужно выделить управляющую кнопку, в код формы стоит вместо стандартной кнопки подтверждения, следует прописать управляющую команду:
$UI_CONFIG->actionButtons[] = array(
"id" => "submit",
"caption" => "подтвердить",
"action" => "mainView.submitIframeForm('mainForm')"
);
При необходимости, в этом же массиве можно указать параметр выравнивания элемента:
$UI_CONFIG->actionButtons[] = array(
"id" => "submit",
"caption" => "подтвердить",
"action" => "mainView.submitIframeForm('mainForm')",
"align" => "left"
);
Соответственно, у формы нужно прописать идентификатор:
<form method='post' id='mainForm' action='admin.php'>
...
$UI_CONFIG->actionButtons[] = array(
"id" => "submit",
"caption" => "подтвердить",
"action" => "mainView.submitIframeForm('mainForm')"
);
...
</form>
В таком случае, кнопка «подтвердить» будет расположена на нижней панельке системы управления.
Следует заметить, значение переменной $UI_CONFIG должно быть объявлено глобально:
global $UI_CONFIG;
Для организации закладок, в интерфейсе управления модулем, следует модифицировать файлы ui_config.php и url_routes.js
Допустим нужно расширить стандартный модуль «Календарь», установив в его интерфейсе управления несколько вкладок для разных задач. Первая вкладка будет выводить администратора на стандартные настройки календаря, а вторая будет писать приветствие. Для организации такой возможности следует изменить содержимое файлов ui_config.php и url_routes.js, пример приведён ниже.
Содержимое файла ui_config.php, задаёт нужные вкладки:
<?php
class ui_config_module_calendar extends ui_config_module {
// $toolbar_action = 'main' - определяет действие по-умолчанию
function ui_config_module_calendar($active_tab = 'admin', $toolbar_action = 'main') {
global $db, $MODULE_FOLDER;
$this->ui_config_module('calendar', $active_tab);
if ($active_tab == 'admin') {
$this->toolbar[] = array('id' => "main",
'caption' => 'Main',
'location' => "module.calendar.main",
'group' => "grp1");
$this->toolbar[] = array('id' => "test",
'caption' => 'Test',
'location' => "module.calendar.test",
'group' => "grp1");
$this->locationHash = "module.calendar.$toolbar_action";
$this->activeToolbarButtons[] = $toolbar_action;
}
}
}
?>
Содержимое файла url_routes.js, задаёт переходы по вкладкам:
urlDispatcher.addRoutes( {
'module.calendar.main': NETCAT_PATH + 'modules/calendar/admin.php',
'module.calendar.test': NETCAT_PATH + 'modules/calendar/test.php',
1: '' // dummy entry
} );
Теперь в каталоге модуля нужно создать файл test.php, который содержит незамысловатый код:
<?php
echo "Hello world!!!";
?>
Теперь интерфейс управления модулем «Календарь», располагает двумя вкладками. При нажатии на вторую вкладку появится сообщение «Hello world!!!»
Комментарии 7
$UI_CONFIG = new ui_config_module_calendar('admin', 'main');
Ни слова в документации