A.4. menu.xml
Файлы данного типа используются в блоках Web Client и Desktop Client, реализующих универсальный пользовательский интерфейс, для описания структуры главного меню приложения.
Схема XML доступна по адресу http://schemas.haulmont.com/cuba/6.1/menu.xsd.
Набор файлов menu.xml, включая определенные в базовых проектах, задается в свойстве приложения cuba.menuConfig.
Рассмотрим структуру файла.
menu-config - корневой элемент
Элементы menu-config, образующие древовидную структуру:
-
menu- раскрывающееся меню, содержащее пункты и другие раскрывающиеся менюАтрибуты menu:
-
id- идентификатор элемента, использующийся для формирования локализованного названия (см. ниже) -
insertBefore,insertAfter- идентификатор элемента или пункта меню, перед которым или после которого нужно вставить данный элемент. Используется в прикладном проекте для вставки элемента в нужное место меню, определенного в аналогичных файлах базовых проектов. Разумеется, использование одного из этих атрибутов для конкретного элемента исключает возможность использования второго атрибута для данного элемента.Атрибуты
insertBefore,insertAfterв Studio поддерживаются только для элементовmenuверхнего уровня. Поэтому если вы задали эти атрибуты вручную для других элементов, не открывайте дизайнер меню Studio, иначе они будут удалены.Элементы menu:
-
menu -
item- пункт меню, см. далее -
separator- разделитель
-
-
item- пункт менюАтрибуты
item:-
id- идентификатор элемента, использующийся для формирования локализованного названия (см. ниже), и для связи с элементом файлаscreens.xml, в котором зарегистрированы экраны UI. При выборе пункта меню в главном окне приложения будет открыт соответствующий экран. -
shortcut- горячая клавиша для вызова данного пункта меню. Возможные модификаторы -ALT,CTRL,SHIFT- отделяются символом “-”. Например:shortcut="ALT-C" shortcut="ALT-CTRL-C" shortcut="ALT-CTRL-SHIFT-C"Горячие клавиши можно также задавать в свойствах приложения и использовать в
menu.xmlследующим образом:shortcut="${sales.menu.customer}" -
openType- тип открытия экрана, возможные значения соответствуют перечислениюWindowManager.OpenType:NEW_TAB,THIS_TAB,DIALOG,NEW_WINDOW.По умолчанию -
NEW_TAB.Значение
NEW_WINDOWподдерживается только в Desktop Client, в Web Client оно эквивалентноNEW_TAB. -
insertBefore,insertAfter- идентификатор элемента или пункта меню, перед которым или после которого нужно вставить данный элемент.Атрибуты
insertBefore,insertAfterдля элементаitemне поддерживаются в Studio. Поэтому если вы задали эти атрибуты вручную, не открывайте дизайнер меню Studio, иначе они будут удалены. -
resizable- актуально для типа открытия экранаDIALOG- задает окну возможность изменения размера. Возможные значения:true,false.По умолчанию главное меню не влияет на возможность изменения размера диалоговых окон.
Элементы
item: -
param- задает параметр экрана, передаваемый в мэп методаinit()контроллера. Параметры, заданные вmenu.xml, переопределяют одноименные параметры, заданные в screens.xml.Атрибуты
param:-
name- имя параметра -
value- значение параметра. Строковое значение может преобразовываться в некоторый объект по следующим правилам:-
Если строка представляет собой идентификатор сущности, записанный по правилам класса
EntityLoadInfo, то загружается указанный экземпляр сущности. -
Если строка имеет вид
${some_name}, то значением параметра будет свойство приложенияsome_name. -
Строки
trueиfalseпреобразуются в соответствующие значения типаBoolean. -
Если ничего из вышеперечисленного не подходит, значением параметра становится сама строка.
-
-
-
permissions- элемент, позволяющий задать набор разрешений текущего пользователя, при которых данный пункт меню доступен. Данный механизм имеет смысл использовать только если необходимо привязать доступность пункта к специфическим разрешениям, или не к одному, а к нескольким разрешениям сразу. В большинстве случаев достаточно стандартной возможности подсистемы безопасности управлять доступностью пунктов меню по идентификаторам экранов.Данный элемент должен содержать вложенные элементы
permission, каждый из которых описывает одно требуемое разрешение. Пункт меню доступен только при наличии всех требуемых разрешений.Атрибуты
permission:-
type- тип требуемого разрешения, задаваемый значением перечисленияPermissionType:SCREEN,ENTITY_OP,ENTITY_ATTR,SPECIFIC,UI. -
target- объект, на который проверяется наличие разрешения. Зависит от типа разрешения:-
SCREEN- идентификатор экрана, напримерsales$Customer.lookup. -
ENTITY_OP- строка вида{entity_name}:{op}, где{op}-read,create,update,delete. Например:sales$Customer:create. -
ENTITY_ATTR- строка вида{entity_name}:{attribute}, напримерsales$Customer:name. -
SPECIFIC- идентификатор специфического разрешения, напримерsales.runInvoicing. -
UI- путь к визуальному компоненту экрана.
-
-
-
Пример файла меню:
<menu-config xmlns="http://schemas.haulmont.com/cuba/menu.xsd">
<menu id="sales" insertBefore="administration">
<item id="sales$Customer.lookup"/>
<separator/>
<item id="sales$Order.lookup"/>
</menu>
</menu-config>
Локализованное название элемента меню формируется следующим образом: к идентификатору элемента добавляется префикс menu-config с точкой на конце, и полученная строка используется как ключ в главном пакете сообщений. Например:
menu-config.sales=Sales
menu-config.sales$Customer.lookup=Customers