...
Данный файл конфигурации возвращает дерево пунктов меню для договора. Выглядит конфигурация, например, так:
Блок кода | ||
---|---|---|
| ||
menu {
// список пунктов верхнего уровня
children = [
// Новости
menu( page: "kernel/news", icon: "fa-newspaper-o", title: "menu.news" ),
// Уведомления + Рассылки
menu( page: "kernel/notificationsEx", subPage: "notifications", icon: "fa-envelope-o",
title: "menu.notifications", badge: "#{notificationBean.getUnreadCount()}", badgeUpdate: "#{notificationBean.populate()}",
show: isCustomer() ),
// Уведомления (отдельно от рассылок)
menu( page: "kernel/notifications", icon: "fa-envelope-o", title: "menu.notifications",
show: !isCustomer() ),
// Баланс
menu( page: "kernel/balance", icon: "fa-rub", title: "menu.balance" ),
// Лимит
menu( page: "kernel/limit", icon: "fa-umbrella", title: "menu.limit" ),
// Тарифные опции
menu( page: "kernel/tariffOptions", icon: "fa-cogs", title: "menu.tariffOptions", show: isCustomer() ),
// Договор
menu( icon: "fa-briefcase", title: "menu.contract" ) {
children = [
// Статус
menu( page: "kernel/status", title: "menu.status" ),
// Тарифы
menu( page: "kernel/tariffs", title: "menu.tariffs", show: isCustomer() ),
// Действия
menu( page: "kernel/additionalActions", title: "menu.additionalActions", show: isCustomer() ),
// Документы
menu( page: "kernel/documents", title: "menu.documents", show: isCustomer() ),
// Документы (включены в предыдущий пункт)
//menu( page: "plugins/documents/documents", title: "menu.documents" ),
// Бухгалтерия
menu( module: "bill", page: "modules/bill/bill", title: "menu.bill", show: isCustomer() ),
// Примечания
menu( page: "kernel/notes", title: "menu.notes", show: isCustomer() ),
// Смена пароля
menu( page: "kernel/password", title: "menu.password", show: isCustomer() )
]
},
// Интернет
menu( module:"inet", icon:"fa-globe", title:"menu.inet" ) {
children = [
// Сессии
menu( page: "modules/inet/sessions", title: "menu.inet.sessions" ),
// Трафик
menu( page: "modules/inet/traffics", title: "menu.inet.traffics" ),
// Смена пароля
menu( page: "modules/inet/password", title: "menu.inet.password", show: isCustomer() )
]
},
// ТВ
menu( module:"tv", page:"modules/tv/tv", icon:"fa-tv", title:"menu.tv" ),
// Поддержка
menu( page: "plugins/helpdesk/helpdesk", icon: "fa-wrench", title: "menu.helpdesk",
badge: "#{helpdeskBean.getUnreadTopicCount()}", badgeUpdate: "#{helpdeskBean.populateTopics()}",
show: isCustomer() )
]
} |
...
- module - модуль, если данный пункт относится к модулю, наследуется дочерними пунктами;
- moduleId - ID модуля (необязательно, если указан module, то подставляется автоматически), наследуется дочерними пунктами. Можно использовать, если одинаковые модули нужно показывать по разному;
- page - страница, без .xhtml;
- subPage - подстраница;
- icon - иконка;
- title - название пункта меню (ключ для Locale.properties);
- badge - счетчик, указывается JSF-вызов метода, который вернет число;
- badgeUpdate - JSF-вызов метода, который нужно произвести для обновления счетчика
- show - показывать пункт или нет (если не указан, то показывать)
- children - список дочерних пунктов меню
Список Используя параметр show, можно ограничивать использование пунктов меню для групп договоров:
Блок кода | ||
---|---|---|
| ||
menu( moduleId: 210, page: "modules/tv/tv", icon: "fa-tv", title: "menu.tv",
show: contractInGroup( contract, [1, 2, 3, 4, 20] ) ) |
При необходимости список дочерних пунктов меню можно определить как переменную и добавлять пункты в этот список, используя условия:
Блок кода | ||
---|---|---|
| ||
asd menu { // список пунктов верхнего уровня def firstLevel = []; children = firstLevel; // Новости firstLevel << menu( page: "kernel/news", icon: "fa-newspaper-o", title: "menu.news" ) // если авторизован по логину/паролю if( isCustomer() ) { // Уведомления + Рассылки firstLevel << menu( page: "kernel/notificationsEx", subPage: "notifications", icon: "fa-envelope-o", title: "menu.notifications", badge: "#{notificationBean.getUnreadCount()}", badgeUpdate: "#{notificationBean.populate()}" ) } else { // Уведомления firstLevel << menu( page: "kernel/notifications", subPage: "", icon: "fa-envelope-o", title: "menu.notifications" ) } // Баланс firstLevel << menu( page: "kernel/balance", icon: "fa-rub", title: "menu.balance" ) // если авторизован по логину/паролю if( isCustomer() ) { // Лимит firstLevel << menu( page: "kernel/limit", icon: "fa-umbrella", title: "menu.limit" ) // Тарифные опции firstLevel << menu( page: "kernel/tariffOptions", icon: "fa-cogs", title: "menu.tariffOptions" ) ... |