Добавить или скрыть кнопку

Материал из ISPWiki

Перейти к: навигация, поиск

Добавить кнопку в интерфейс

Рассмотрим на примере задачу добавления в меню ISPmanager 4 кнопки на вкладке www домены, кликая по которой выполняется скрипт (заглушка). Кнопка должна быть доступна только с уровня Пользователь.

Создадим xml описание плагина, согласно правилам, описанным в статье.

touch /usr/local/ispmgr/etc/ispmgr_mod_addbutton.xml

Добавим в него следующее содержимое

<?xml version="1.0" encoding="UTF-8"?>

<mgrdata>

#Описание внешнего обработчика запросов.
<handler name="addbutton" type="cgi">
#Имя функции, которую выполняет внешний обработчик.
<func minlevel="5">myfunc</func>
</handler>

#Описание интерфейса диалогов, списков и всех прочих функциональных элементов интерфейса
#name - Задаёт имя функции, которую описывает данный элемент.
#type - Тип элемента интерфейса. Может принимать значения form (описывает форму ввода) и list (описывает список данных).
#key - Ключевое поле (используется для списков).
<metadata name="wwwdomain" type="list" key="name">
#toolbar - Панель инструментов.
<toolbar>
#toolbtn - Кнопка панели инструментов.
#func - Имя функции, которая будет вызвана при нажатии кнопки.
#type - Тип действия кнопки (new, back, edit, editlist, func, group, groupform, groupformnosel, list).
#img - Картинка кнопки.
#name - Имя кнопки. Должно иметь уникальное значение в пределах одного metadata. Необходимо для привязки к языкам.
#level - Уровень доступа.
<toolbtn func="myfunc" type="group" img="t-new" name="sync" level="5"/>
</toolbar>
</metadata>

#Описание языков и переводы.
<lang name="ru">
<messages name="wwwdomain">
<msg name="hint_sync">Всплывающая подсказка</msg>
<msg name="short_sync">Моя кнопка</msg>
</messages>
</lang>

</mgrdata>

Подробное описание XML файла

Создадим сам обработчик. Скрипты обработчики должны принимать и возвращать данные согласно определенных правил в зависимости от типа, указанного в описании.

touch /usr/local/ispmgr/addon/addbutton

Наш обработчик ничего не будет делать, поэтому ему достаточно вернуть просто XML.

#!/bin/sh
echo '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<doc/>\n'


Скрыть кнопку

Подобная статья с описанием.

Пусть пользователю будет недоступна кнопка Создать WWW домен. Для этого достаточно создать файл XML описания, согласно правилам, описанным в статье. Все названия и описания можно подглядеть в файле /usr/local/ispmgr/etc/ispmgr.xml

touch /usr/local/ispmgr/etc/ispmgr_mod_delbutton.xml

Добавим в него следующее содержимое

<?xml version="1.0" encoding="UTF-8"?>
<mgrdata>
  <metadata name="wwwdomain" type="list" key="name">
    <toolbar>
      <toolbtn name="new" level="7"/>
</toolbar>
</metadata>
</mgrdata>

Мы указали level=7, соответственно, кнопка будет видна только администратору. Если же мы хотим полностью скрыть кнопку ото всех, то нужно использовать такое XML описание:

<?xml version="1.0" encoding="UTF-8"?>
<mgrdata>
  <metadata name="wwwdomain" type="list" key="name">
    <toolbar>
      <toolbtn name="new" if="myhide"/>
</toolbar>
</metadata>
</mgrdata>

Здесь мы задаем условие, которое никогда не может выполнится. Поэтому кнопка никогда не появится.


Важно!

После того, как был добавлен плагин необходимо перегенерировать кэш панели

rm -rf /usr/local/ispmgr/var/.xmlcache
/usr/local/ispmgr/sbin/xmlcache ispmgr
killall ispmgr
Была ли эта информация полезной? Да | Нет
Личные инструменты