Общее описание
XML главного меню содержит:
- список ссылок на модули панели;
- адрес стартовой страницы;
- адрес стартовой формы;
- общую информацию — информация о паролях, ссылка на копирайт, общие сообщения локализации.
В текущих темах главное меню — это рабочая страница панели, состоящая из логотипа, меню, копирайта, верхней панели и рабочего фрейма, в который загружаются модули.
Главное меню в orion:
Главное меню состоит из групп элементов. Эти группы можно сворачивать при клике по названию группы или по клику кнопки "Свернуть всё".
Меню имеет три состояния: полное, избранное и популярное. Переключение между ними осуществляется кнопками.
В XML с главным меню передаётся функция стартовой страницы и может передаваться функция формы, которую нужно открыть.
Описание XML
XML COREmanager:
<doc lang="ru" func="desktop" binary="/core" host="https://127.0.01:1500" stylesheet="desktop" theme="/manimg/orion/" css="main.css" logo="logo.png" logolink="" favicon="favicon.ico" localdir="default/">
<mainmenu level="30" name="Administrator" startpage="dashboard">
<node name="srvset" bigsprite="yes" sprite="yes">
<node name="product" action="product" type="list" popular="yes"/>
<node name="plugin" action="plugin" type="list" popular="yes"/>
</node>
<node name="sysstat" bigsprite="yes" sprite="yes">
<node name="sysinfo" action="sysinfo" type="list" popular="yes"/>
<node name="longtask" action="longtask" type="list" popular="yes"/>
<node name="request" action="request" type="list" popular="yes"/>
<node name="session" action="session" type="list" popular="yes"/>
<node name="journal" action="journal" type="list" popular="yes"/>
<node name="authlog" action="authlog" type="list" favorite="yes" popular="yes"/>
<node name="errorjournal" action="errorjournal" type="list" popular="yes"/>
<node name="problems" action="problems" type="list" popular="yes"/>
</node>
<node name="set" bigsprite="yes" sprite="yes">
<node name="srvparam" action="srvparam" type="form" popular="yes"/>
<node name="brand" action="brand" type="form" popular="yes"/>
<node name="usermenu" action="usermenu" type="list" popular="yes"/>
<node name="usrparam" action="usrparam" type="form" popular="yes"/>
</node>
<node name="mgrhelp" bigsprite="yes" sprite="yes">
<node name="changelog" action="changelog" type="list" popular="yes"/>
<node name="community" function="http://forum.ispsystem.com/ru/index.php"/>
<node name="handbook" function="http://ru.5.ispdoc.com/index.php/core-handbook-30"/>
</node>
</mainmenu>
<user name="root" level="30" hostname="127.0.0.1:1500" lang="ru" dashboard="yes"/>
<path level="30">root</path>
<mgr version="5.8.1-08.08.13_10:51_IRKT">core</mgr>
<version mgr="core">
<core type="alpha">5.8.1-08.08.13_10:51_IRKT</core>
</version>
<messages name="desktop" checked="yes">...</messages>
<pwgenlen>8</pwgenlen>
<pwgencharacters>
1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
</pwgencharacters>
<pwstrength>1</pwstrength>
<copyright href="http://ispsystem.com/">ISPsystem © 1997-2013</copyright>
<tparams>
<out>devel</out>
</tparams>
</doc>
Главное меню
Элемент mainmenu
Элемент mainmenu содержит список групп с элементами меню.
Атрибуты mainmenu
@startpage содержит имя функции стартовой страницы (списка).
@startform содержит имя функции стартовой формы.
Элемент node(группа)
Элемент node содержит список элементов меню этой группы.
Атрибуты node(группа)
@name имя группы, задаёт иконку группы (имя + '.png') и локальное сообщение
@sprite показывает, что иконка находится в спрайте
@bigsprite показывает, что большая иконка около заголовка модуля находится в спрайте
Элемент node
Содержит в себе информацию о функции модуля.
Атрибуты элемента node
@name задаёт локальное сообщение
@action задаёт имя функции, которую нужно вызвать
@function задаёт ссылку, которую нужно открыть в новом окне
@type задаёт тип функции: list или form
@popular показывает, что элемент находится в популярном меню
@favorite показывает, что элемент находится в избранном меню
Локализация
Элементы node берутся из локализованных сообщений по значению атрибута @name с префиксом menu_. Подробные сообщения элементов управления меню: локализованные сообщения с именами hint_mautohide, hint_mbarall, hint_mbarfavorite, hint_mbarhide, hint_mbarpopular, hint_mbarshow, hint_mfixmenu
Элемент modernmenu
Содержит список пунктов меню, которые могут быть как в группе, так и без группы. Используется для отображения меню в новом стиле. Включается нажатием на иконку рядом с иконками "Избранное" и "Популярное". Необязательный элемент.
Элемент node (группа)
Содержит в себе список пунктов меню. Поведение аналогично группам в mainmenu, за исключением того, что у группы с @type="noname" не отображается название группы, и каждый пункт меню лежит на первом уровне и имеет свою иконку.
Атрибуты элемента node (группа)
- @name : имя группы. Задаёт иконку группы и локальное сообщение (для @type="noname" не используется)
-
@type : может иметь только значение noname. Атрибут показывает, что:
- пункты меню в этой группе имееют свои иконки и находятся на первом уровне;
- группа не имеет своего заголовка и возможности сворачиваться, отображается с отступом от других групп.
Элемент node(пункт меню)
Аналогичен пунктам меню из mainmenu, за исключением того, что атрибуту @name присваивается не только локализованное имя, но и индивидуальная иконка пункта.
<mainmenu>
...
<modernmenu>
<node name="noname_file" type="noname">
<node name="revisium_antivirus_func" action="revisium_antivirus_func" type="external"/>
<node name="backup2.superlist" action="backup2.superlist" type="list"/>
<node name="file" noapi="yes" action="file" type="list" favorite="yes"/>
</node>
<node name="noname_user" type="noname">
<node name="user" action="user" type="list" favorite="yes" pin="yes"/>
<node name="ftp.user" action="ftp.user" type="list" popular="yes"/>
</node>
<node name="noname_plugin" type="noname">
<node name="plugin" action="plugin" type="form"/>
</node>
<node name="set">
<node name="websettings" action="websettings" type="form" popular="yes"/>
<node name="srvparam" action="srvparam" type="form"/>
<node name="feature" action="feature" type="list" favorite="yes"/>
<node name="phpversions" action="phpversions" type="list" pin="yes"/>
<node name="ipaddrlist" action="ipaddrlist" type="list"/>
<node name="aps.catalog" action="aps.catalog" type="list"/>
<node name="dns.blacklist" action="dns.blacklist" type="list"/>
<node name="emailnotify" action="emailnotify" type="form" popular="yes"/>
<node name="panelsettings" action="panelsettings" type="form" popular="yes"/>
</node>
</modernmenu>
Пример отображения в интерфейсе dragon
Пояснения:
1 — пункт меню из группы с @type="noname"
2 — обычная группа modernmenu
Верхняя панель
Верхняя панель содержит:
- информацию об альфа-версии панели и COREmanager;
- имя хоста;
- информацию об авторизованном пользователе и уровне вложенности авторизации;
- ссылки на настройки панели, страницы помощи и завершение сеанса.
Пример из orion:
Элемент topmenu
Элемент отвечает за отображение меню в виде выпадающего списка в правом вверхнем углу перед элементом, отображающим имя хоста.
Пример XML:
<topmenu name="project">
<node name="ninja" img="p-ninjaon" action="usrparam" key="1" sprite="yes" active="yes"/>
<node name="root" img="p-root" action="usrparam" key="2"/>
</topmenu>
Пример отображения:
Атрибуты элемента name
@name имя, используется для локализации
Элемент node
Описывает пункт меню.
Атрибуты элемента node
@name имя пункта меню, используется для локализации
@img имя картинки, которую надо отобразить
@image путь до картинки, если её нет в теме
@action имя функции, которую нужно вызвать при выборе пункта меню
@key ключ, который нужно передать в виде параметра elid при выборе пункта меню
@sprite картинка, находится в спрайте
@active активный пункт меню
Локализация
подпись topmenu — локализованное сообщение по значению атрибута @name
подробное сообщение topmenu –- локализованное сообщение по значению атрибута @name с префиксом hint_
сообщения пунктов меню topmenu — локализованные сообщения по значению атрибута @name
Элемент usermenu
Позволяет вставить дополнительные ссылки в меню пользователя. Ссылки будут вставлены вместо ссылки "Выйти".
XML:
<usermenu>
<node name="login" action="logon" img="sb-logout"/>
<node name="register" action="register" img="sb-logout"/>
</usermenu>
Пример из orion:
Элемент usermenu
Содержит список ссылок
Элемент node
Описывает ссылку
Атрибуты элемента node
@name имя элемента для локализации
@action имя функции, которую нужно вызвать. Если задать @type, то будет открыт модуль. По умолчанию, переход по ссылке MGRURL?func=@action
@img имя картинки для отображения слева
@type задаёт тип модуля, который будет открыт
Элемент path
Содержит в себе информацию о текущем авторизованном пользователе и уровне вложенности авторизации (пользователь может войти под учётной записью другого пользователя с меньшими правами, а под ним — авторизоваться с учётной записью уровнем ниже).
Атрибут @level содержит уровень пользователя. Каждому уровню пользователя соответствует своя иконка (lv-[@level]). Сам элемент содержит в себе логин пользователя. Элементы path расположены в порядке вложенности уровня пользователя.
Если элементов path больше одного, то все, кроме первого логина пользователя, должны быть в виде ссылки для перехода под этого пользователя. При клике по ссылке нужно вызвать функцию chlevel с параметром lp равным разности общего количества элементов path и номером текущего (то есть на сколько уровней назад надо вернуться). Например, на изображении выше для перехода обратно под root MGR_URL?func=chlevel&lp=1.
Элемент user
Содержит информацию о пользователе. Атрибут @hostname содержит имя хоста.
Элемент version
Содержит информацию о версии продукта и версии COREmanager. Имеет дочерние элементы по названию панели (например: core, ipmgr, dnsmgr). Элементы содержат атрибут @type: если он равен alpha, то надо отображать информацию о версии. Имя продукта берётся из имени элемента, а версия — из его содержания.
Ссылка "Помощь"
При клике по ссылке "Помощь" нужно в новом окне вызвать функцию help с параметром topic, содержащим имя функции активного модуля. Например, MGR_URL?func=help&topic=usrparam. Далее панель управления произведёт редирект на нужную страницу документации. Ссылка на документацию может быть внешняя, тогда у элемента form будет атрибут @helpurl cо ссылкой, которую надо открыть в новом окне. Если в ссылке присутствует макрос _LANG_, то надо заменить на текущий язык.
Выход
Для завершения сеанса, нужно вызвать функцию logon.
Локализация
Сообщения верхней панели — локализованные сообщения с именами cpset, help2, logout.
Подробные сообщения верхней панели — локализованные сообщения с именами msg_cpset, msg_help, msg_logout.
Подробные сообщения для элементов смены уровня пользователя — локализованное сообщение с именем msg_chlevel.
Копирайт
Элемент copyright
Содержит информацию о копирайте: атрибут @href содержит ссылку, а содержимое — текстовое отображение ссылки. Расположено внизу главного меню.
Элемент pdf
Показывает, что панель поддерживает экспорт отчетов в pdf.
Логотип
Путь до логотипа содержится в атрибуте @logo корневого элемента doc. Если атрибут @logolink не пуст, то при клике по логотипу надо перейти по этой ссылке из атрибута (ссылка настроивается в брендинге).
Оповещения
Это блок с иконками в верхнем левом углу.
Пример из orion:
Для получения данных о блоке нужно вызвать функцию notify. Ответ от панели управления будет содержать XML вида:
<doc stylesheet="notify" ...\>
<messages name="notify">
<msg name="hint_basket">Моя корзина</msg>
<msg name="hint_messages">Мои сообщения</msg>
<msg name="hint_warning">Warning</msg>
</messages>
<notify>
<item name="basket" action="longtask" img="p-newmsg" type="list">
<msg>50</msg>
</item>
<item name="messages" action="journal" img="m-service" type="list">
<msg>91</msg>
</item>
<item name="warning" action="problems" img="p-error" type="list">
<msg>75</msg>
</item>
</notify>
<timeout>30</timeout>
<tparams>
<out>devel</out>
<func>notify</func>
</tparams>
</doc>
К этой XML применяется шаблон notify.xsl.
Элемент notify
Содержит список элементов оповещения. Подробнее см. в статье Нотификация.