Menu
Obyčejné menu na stránce, nebo v online aplikaci nemusí vyžadovat nic jiného, než jej nakódovat v HTML - pokud se jedná o statický element.
Ale co když není tak úplně statický? Co když se mění například na základě toho k čemu má aktuálně přihlášený uživatel přístup? Nebo na základě dalších faktorů ... Vezměme si jako příklad opět ukázkovou aplikaci a její administrační rozhraní. V něm vidíte nahoře klasické menu. A právě toto menu je dynamické. V první řadě jeho podobu určuje to jaké aplikační moduly jsou nainstalovány a aktivovány. Pokud vypnete aplikační modul pro správu článků, tak příslušná položka z menu prostě zmizí - a vice versa. Nebo pokud aktuálně přihlášený administrátor nemá do této části administrace přístup, pak se mu položka nezobrazí.
A právě na řešení takovýchto dynamických menu, kde se očekává určitá flexibilita, možnost definic a napojení na systém autentizace a autorizace je určena tato část platformy Jet.
Samozřejmě nejde pouze o menu v administraci. Tento systém lze využít obecně - dle vašich potřeb, dle vaší fantazie. Administrace je pouze dobrý příklad použití - ne dogma. Systém je, jak si ukážeme, univerzální.
V souvislosti s menu se budeme setkávat s následujícími termíny:
- Sada menu / menu set
Jak název napovídá jde o definici a seskupení více menu. Například právě oněch meníček v horní liště v administraci v rámci ukázkové aplikace. Tedy to co z uživatelského hlediska tvoří celou nabídku možností. - Menu
Menu je prvkem sady menu a jedná se o jedno konkrétní menu. Opět si to ukažme na administraci ukázkové aplikace. V horní liště je vidět menu "Obsah", dále menu "Systém" a menu "Logy a statistiky". Každá položka je samostatné menu patřící do jedné sady. - Položka menu
Zde asi není co dodat :-)
Sada menu / menu set
Sada menu je reprezentována třídou Jet\Navigation_MenuSet.
Technicky a prakticky vzato je sada menu soubor v adresáři ~/application/menus/, ovšem adresář lze změnit pomocí systémové konfigurace.
Stejně jako ostatní definiční a konfigurační soubory v rámci Jet jde o soubor s příponou .php. Název souboru odpovídá název sady menu. Tedy v ukázkové aplikaci najdete soubor ~/application/menus/admin.php což odpovídá sadě menu nazvané 'admin'.
Pochopitelně sad menu může existovat libovolný počet a mohou být určeny naprosto pro cokoliv, kde je podobný přístup tvorby menu vhodný.
Obsah tohoto souboru (respektive těchto souborů) pak představuje definici jednotlivých menu.
Menu
Menu je reprezentováno třídou Jet\Navigation_Menu.
Jak již bylo uvedeno, tak definice menu samotného se nachází v definičním souboru sady menu.
Dá se tedy říct, že sada menu a definice jednotlivých menu tvoří základ do kterého jsou mohou být dynamicky vkládány položky (jak si ukážeme), ale také menu může rovnou v rámci své definice položky obsahovat.
Menu již má kromě svého identifikátoru další parametry jako je jeho textový popisek, ikona a pořadí (index).
Položka menu
Položka menu je reprezentováno třídou Jet\Navigation_Menu_Item.
Položka samozřejmě musí patřit do nějakého menu. Krom toho má svůj identifikátor, popisek, ikonu, informace o tom zda má mít před nebo za sebou separátor (grafický prvek), ale neposlední řadě ma položka informace o tom kam směřuje.
Položka může směřovat buď na prvně danou URL, nebo na stránku v rámci MVC. To znamená nejen to že URL se generuje automaticky, ale také to, že systém automaticky kontroluje oprávnění, protože položka menu může být svázána s konkretní stránkou a oprávnění přístupu na stránku je možno ověřovat.
Jak menu vytvořit
Jednoduše - naklikejte si ho. Potřebujete novou sadu? Naklikejte si jí. Potřebujete nové menu - to samé, stejně jako staticky definované položky menu. Na to vše máte v rámci Jet Studia nástroj.
A pozor! To se týká i dynamických položek menu vázaných na moduly. Stejně jako může modul definovat MVC stránku, tam může definovat položku menu. Díky tomu se například odkaz na administraci článků zobrazí pouze tehdy pokud je daný modul aktivní.
A jak to udělat? Opět si to prostě naklikejte v Jet Studiu:
Jak menu použít
Použití menu je jednoduché - je potřeba jej prostě zobrazit. I pro menu platí, že Jet poskytuje pouze model menu, nikoliv zobrazení samotné. V ukázkové aplikaci najdete dvě view, které menu zobrazují a kde se můžete inspirovat (a udělat něco sofistikovanějšího :-) ):
- ~/application/Modules/UI/Admin/views/main_menu.phtml
Zobrazuje horní menu administrace. - ~/application/Modules/UI/Admin/views/default.phtml
Zobrazuje menu na úvodní stránce administrace.