Menü-System #
Die internen Webseiten verwenden ein dynamisches Menü-System, das Navigationspunkte per JavaScript erzeugt. Die Funktionen sind in forms.js enthalten und arbeiten auf der globalen Variable currentMenu.
Grundprinzip #
Bevor Menüpunkte hinzugefügt werden, muss currentMenu auf das Container-Element gesetzt werden:
currentMenu = g("mnuNav");
Danach werden Kategorien und Menüpunkte per Funktionsaufruf erzeugt:
addMenu("BERICHTE", "Berichte");
addMenu("MODULE", "Programm-Module");
addMenuURLItem("BERICHTE", "Artikelliste",
"eulanda://./DOC/Eulanda.Artikel/0?print&Reportname=cnsoft.Artikel.Liste");
addMenuFormItem("MODULE", "Kassensystem", "cnsoft.POS.CashDesk.Standard");
Steuerungsvariablen #
| Variable | Typ | Beschreibung |
|---|---|---|
currentMenu | HTMLElement | Container-Element für die Menüpunkte (typisch: mnuNav, mnuClientLeft, mnuClientRight) |
currentDOC | string | Aktueller Dokumenttyp — wird von addMenuAllReportItem verwendet |
currentId | number | Aktuelle Datensatz-ID — wird von addMenuCurrentBand verwendet |
menuItemsUpperCase | boolean | Wenn true, werden Menüpunkt-Texte in Großbuchstaben gesetzt |
Kategorien #
addMenu(Category, Caption) #
Legt eine Menü-Kategorie an oder gibt eine vorhandene zurück. Jede Kategorie wird als eigenes <div> mit einer <h4>-Überschrift erzeugt.
addMenu("STATISTIK", "Statistik");
addMenu("BERICHTE", "Berichte");
Bei leerem Category wird direkt in currentMenu eingefügt. Wird eine Kategorie erneut mit addMenu aufgerufen und hat bereits einen Caption, wird dieser aktualisiert.
Menüpunkt-Typen #
addMenuURLItem(Category, Caption, Url) #
Fügt einen Link-Menüpunkt hinzu. Caption wird automatisch durch patchMsgUI übersetzt.
addMenuURLItem("BERICHTE", "Umsatzliste",
"eulanda://./DOC/Eulanda.Artikel/0?print&Reportname=cnsoft.Artikel.Umsatz");
addMenuFormItem(Category, Caption, FormName) #
Fügt einen Menüpunkt für ein EULANDA-Formular hinzu. Die Funktion prüft vorher die Zugriffsberechtigung über ellib.UserAccess("lookoutitem", FormName). Wenn der Benutzer keinen Zugriff hat, wird der Menüpunkt nicht erzeugt.
Falls der Formulartyp in der Registry als WEBPAGE hinterlegt ist, wird direkt dessen URL aufgerufen statt /FORM/.
addMenuFormItem("MODULE", "Kassensystem", "cnsoft.POS.CashDesk.Standard");
addMenuReportItem(Category, Name, id, target) #
Fügt einen einzelnen Berichts-Menüpunkt hinzu. Prüft die Zugriffsberechtigung über ellib.UserAccess("report", Name). Der Menüpunkt-Text ist der Berichtstitel aus der Report-Definition.
addMenuReportItem("BERICHTE", "cnsoft.Artikel.Stat.JahresumsatzAlsBalkengrafik");
addMenuAllReportItem(Category, id) #
Fügt automatisch alle Berichte des aktuellen Dokumenttyps (currentDOC) als Menüpunkte hinzu, jeweils mit einem zusätzlichen „(Vorschau)"-Link.
currentDOC = "Eulanda.Auftrag";
addMenuAllReportItem("BERICHTE", currentId);
addMenuExternURLItem(Category, Caption, Url) #
Öffnet eine externe URL über weblib.callURL() im Systembrowser (nicht im eingebetteten IE).
addMenuExternURLItem("LINKS", "Online-Hilfe", "https://doc.eulanda.eu");
addMenuBand(Category, Caption, BandName, params) #
Rendert ein Infopanel-Band und fügt das HTML-Ergebnis als Menüpunkt ein. params ist ein optionaler Parameter-String.
addMenuBand("INFO", "Firmendaten", "cnsoft.Firma.Stammdaten");
addMenuCurrentBand(Category, Caption, BandName) #
Wie addMenuBand, verwendet aber automatisch currentId als ID-Parameter.
addMenuHTML(Category, Caption, HTML) #
Fügt beliebiges HTML als Menüpunkt ein. Wird intern auch von addMenuBand verwendet.
addMenuAdminItem(ActionName) #
Fügt einen Admin-Aktionspunkt hinzu. Kategorie und Caption kommen aus weblib.getAdminCommand(). Nach dem Klick wird execAction() mit dem Action-Objekt aufgerufen.
addMenuScriptItem(Category, Caption, Script) #
Fügt einen Menüpunkt hinzu, der ein JavaScript-Fragment ausführt. Innerhalb des Scripts steht die Variable Title mit dem übersetzten Caption zur Verfügung.
Layout-Steuerung #
| Funktion | Beschreibung |
|---|---|
lastMenuItemInline() | Setzt das zuletzt hinzugefügte Element auf display: inline (für nebeneinander stehende Links) |
clearMenu() | Leert das aktuelle Menü |
clearAusgabe() | Leert die Ausgabebereiche mnuClientLeft und mnuClientRight |
clearWarning() | Blendet den Info-/Warnungs-Block aus |
Action-Objekte #
execAction(action) #
Führt ein Action-Objekt aus und zeigt das HTML-Ergebnis im Ausgabebereich an. Das übergebene Objekt muss folgende Schnittstelle implementieren:
| Eigenschaft/Methode | Beschreibung |
|---|---|
action.Caption | Titel der Aktion (wird als Seitentitel angezeigt) |
action.RunningCaption | Text während der Ausführung |
action.execute() | Führt die Aktion aus |
action.HTMLResult | HTML-Ergebnis nach Ausführung |
Die Funktion ruft zuerst clearAusgabe() auf, zeigt den RunningCaption an, führt execute() aus und ersetzt dann den Inhalt durch HTMLResult.
Zugriffskontrolle #
Die Funktionen addMenuFormItem und addMenuReportItem prüfen automatisch die Benutzerrechte. Wenn der angemeldete Benutzer keinen Zugriff auf das Formular oder den Bericht hat, wird der Menüpunkt stillschweigend nicht erzeugt. Dadurch sehen Benutzer nur die Funktionen, die für sie freigeschaltet sind.