Ein universelles Menü für Webanwendungen
ulrich
2017-12-30 39d4721d5a781fbaa76470dcb55be075c6521cf2
commit | author | age
b7c57a 1 # app-menu
U 2
3 Ein universelles Menü für Webanwendungen.
4
5 ## Beschreibung
6
39d472 7 Das app-menu ist eine Liste von Auswahlpunkten für eine Webanwendung. Der Benutzer kann aus ihnen auswählen um Funktionen auszuführen oder ein weiteres Menü aufzurufen. Eine große Anzahl von Funktionsaufrufen kann auf hierarchisch verschachtelte Menüs verteilt werden.
U 8
9 Menüinhalte werden aus einer Beschreibung in der JavaScript Object Notation (JSON) geformt, die während
10
11 Die Gestaltung des Menüs wird über ein Cascading Stylesheet (CSS) bestimmt.
12
13 Die Auswahlpunkte des Menüs sind entweder Funktionen, die bei der Auswahl des Punkts ausgeführt werden oder Verweise auf ein weiteres Menü. Verweise auf ein anderes Menü können entweder zu einem über- oder einem untergeordneten Menü weisen.
b7c57a 14
U 15 ## Anwendung
16
17 Das app-menu wird wie folgt in eigene Webanwendungen eingebaut.
18
19 1. Einbinden der Abhängigkeiten (jQuery und Mustache)
20 2. Einbinden der Stylesheets
21 3. Weitere Schritte
22
23 Weiterer Text
24
25
26
27
28 ## Einbinden von jQuery und Mustache
29
30
31
32 ```
33 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
34 <script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/2.3.0/mustache.min.js"></script>
35 ```
36 Das obige Beispiel bindet jQuery und Mustache aus dem Content Delivery Network [cdnjs](https://cdnjs.com/) ein. Stattdessen können die beiden JavaScript-Komponenten auch lokal ausgeliefert werden.
37
38 ## Einbinden des Stylesheets
39
40
41
42 ```
43 <link rel="stylesheet" type="text/css" href="applib/app-menu/nav-toggle.css">
44 <link rel="stylesheet" type="text/css" href="applib/app-menu/app-menu.css">
45 ```
46
47
48 #### Einbinden des Skripts
49 ```
50 <script src="applib/app-menu/app-menu.js"></script>
51 ```
52
39d472 53 #### Aufruf des Menüs
b7c57a 54 ```
U 55 app_menu_init("menu/", "hauptmenue.json", "applib/app-menu/app-menu.tpl", ".west");
56 ```
57
58 Parameter 1: Name des Unterverzeichnisses mit Menübeschreibungen
59 Parameter 2: Name der Menübeschreibung, die zuerst angezeigt werden soll
60 Parameter 3: Unterverzeichnis und Name der Menüvorlage für Mustache
61 Parameter 4: Name des Selektors, der das Menü aufnehmen soll
62
63 ### Menüvorlage
64
65 Im Verzeichnis `applib/app-menu` befindet sich eine Vorlage für ein dynamisches Menü, das ein- und ausgeblendet werden kann und seine Inhalte von Beschreibungen in JSON erhält. Menüs werden dynamisch aus JSON-Strukturen erstellt, die ein Menü beschreiben. In dieser Form sind die Menübeschreibungen gut mit einem Serverdienst zu ersetzen. Eine Beschreibung sieht wie folgt aus
66
67 ```
68 {
69   "menue": {
70     "menuetitel": "Hauptmenü",
71     "wurzel": true,
72     "vorgaenger": {
73       "vtitel": "",
74       "vverweis": ""
75     },
76     "inhalt":  [
77       {
78         "titel": "H Menüeintrag 1",
79         "umenue": false,
80         "funktion": "app_menu_test"
81       },
82       {
83         "titel": "H Menüeintrag 2",
84         "umenue": true,
85         "verweis": "untermenue-1.json"
86       },
87       {
88         "titel": "H Menüeintrag 3",
89         "umenue": false,
90         "funktion": "app_menu_test_2"
91       }
92     ]
93   }
94 }
95 ```
96
97 Der Schalter `wurzel` legt fest, ob noch ein übergeordnetes Menü dargestellt wird. Wenn ja (`wurzel=false`) wird in `vorgaenger.vverweis` der Name der Menübeschreibung und in `vorgaenger.vtitel` der Name, unter dem der Eintrag im Menü erscheinen soll angegeben. Ebenso legt der Schalter `umenue` fest, ob ein Untermenue dargestellt wird. Dann muss in `verweis` der Name der Menübeschreibung angegeben sein.
98
99 Im Element `funktion` eines Menüeintrages wird ein Funktionsname notiert. Die so benannte Funktion wird aufgerufen, wenn das Menü gewählt wird. Eine solche Funktion darf keine Parameter erwarten.