Чтобы внутри административной зоны можно было использовать стилизованные под системные, свои собственные элементы управления, например, кнопку «подтвердить», в начале файла 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');
Ни слова в документации