Metainformationen zur Seite
Navigation Bar (Perl)
Bei Verwendung von Perl LoxBerry::Web::pagestart und LoxBerry::Web::lbheader bzw. PHP LBWeb::pagestart und LBWeb::lbheader kann oben, unterhalb der Titelzeile, eine Navigation Bar eingeblendet werden. Damit kann man beispielsweise innerhalb des Plugins über mehrere Einstellungsseiten navigieren. Es können auch Notification Bullets eingeblendet werden.
Es gibt dafür jeweils zwei Möglichkeiten. Beide Möglichkeiten arbeiten mit der globalen Variable %navbar bzw. $navbar.
Folgende Möglichkeiten gibt es dafür:
Perl (LoxBerry::Web)
Mittels Hash (%navbar)
In deinem Code muss die globale Variable %navbar erzeugt werden, und darin die Elemente abgelegt. Das muss vor dem Aufruf von pagestart bzw. lbheader passieren.
Hash definieren
our %navbar; $navbar{1}{Name} = "First Menu"; $navbar{1}{URL} = 'index.cgi'; $navbar{2}{Name} = "Second Menu"; $navbar{2}{URL} = 'second.cgi'; $navbar{2}{active} = 1; $navbar{3}{Name} = "External Website"; $navbar{3}{URL} = 'http://www.loxberry.de'; $navbar{3}{target} = '_blank';
Die Nummern bestimmen die Reihenfolge der Menüelemente. Diese müssen nicht fortlaufend sein (es geht also auch 10, 20, 30 ,40), die Elemente werden nach dieser Nummer sortiert.
Notification Bullets einblenden
Es können in der NavBar auch die Notification Bullets eingeblendet werden, wobei bei jeder Schaltfläche ein anderer Notification Name als Filter angewandt werden kann. Verwendet wird das beispielsweise im System-Widget Updates: Auf dem Tab LoxBerry Update werden die Notifications von neuen, verfügbaren Versionen angezeigt, auf dem Tab LoxBerry Update Verlauf die Notifications für neue, installierte Versionen.
Hier ein Beispiel-Code:
Hash definieren
our %navbar; $navbar{1}{Name} = "First Menu"; $navbar{1}{URL} = 'index.cgi'; $navbar{1}{Notify_Package} = $lbpplugindir; $navbar{1}{Notify_Name} = 'daemon'; $navbar{2}{Name} = "Second Menu"; $navbar{2}{URL} = 'second.cgi'; $navbar{2}{active} = 1; $navbar{1}{Notify_Package} = $lbpplugindir; $navbar{1}{Notify_Name} = 'cronjob'; $navbar{3}{Name} = "External Website"; $navbar{3}{URL} = 'http://www.loxberry.de'; $navbar{3}{target} = '_blank';
Wird der Notify_Name weggelassen, werden alle Notifications des Plugins als Nummer dargestellt.
Um unter der NavBar gleich die Notifications anzuzeigen, verwende im Script nach dem Header LoxBerry::Log::get_notifications_html.
Alle möglichen Parameter
Mittels String ($navbar)
In diesem Fall wird der String aus der globalen Variable $navbar direkt ins Template geschrieben. Um eine Navigation Bar auszugeben, wird dieser HTML-Code verwendet:
HTML-Code für Navbar Quelle erweitern
<div data-role="navbar"> <ul> <li><a href="#">First</a></li> <li><a href="#" class="ui-btn-active">Second</a></li> <li><a href="#">Third</a></li> </ul> </div>
Dies als String in die Variable our $navbar schreiben, so wird dies direkt ausgegeben.
Einmalige Verwendbarkeit
Sobald die Navigation Bar ins Template übernommen wurde, wird die Variable %navbar bzw. $navbar geleert.
Werden mehrere pages im Code generiert, muss diese Variable bei jedem Aufruf neu befüllt werden.
So wird von LoxBerry::Web sichergestellt, dass in einer mod_perl Umgebung keine befüllten globalen Variablen übrig bleiben, die dann fälschlicherweise auf einer anderen Seite dargestellt werden.