Project

General

Profile

« Previous | Next » 

Revision 859

Added by Matthias about 16 years ago

updated show_menu2 to version 4.7

View differences:

trunk/CHANGELOG
10 10
# = Bugfix
11 11
! = Update/Change
12 12

  
13
------------------------------------- 2.7.1 -------------------------------------
14
18-Sep-2008 Thomas Hornik
15
+ Added captcha-reload
16
16-Sep-2008 Thomas Hornik
17
# search: fixed windows-related regex issue
13
------------------------------------- 2.7.1 -------------------------------------
18 14
19-Aug-2008 Matthias Gallas
15
!	updated show_menu2 to version 4.7
16
18-Sep-2008 Thomas Hornik
17
+	Added captcha-reload
18
16-Sep-2008 Thomas Hornik
19
#	search: fixed windows-related regex issue
20
19-Aug-2008 Matthias Gallas
19 21
!	updated to latest FCKEditor version 2.6.3
20 22
02-Aug-2008 Thomas Hornik
21
# fixed sorting order of search-results
23
#	fixed sorting order of search-results
22 24
25-Jul-2008 Thomas Hornik
23
# fixed an issues related to search, changed one SQL inner join (to use USING instead of WHERE)
24
! added $database = new Database(); in front of output-filter
25
#	fixed an issues related to search, changed one SQL inner join (to use USING instead of WHERE)
26
!	added $database = new Database(); in front of output-filter
25 27
05-Jul-2008 Thomas Hornik
26
# fixed MODI_DATE/PUBLISHED_DATE issue in news-module. Added PUBLISHED_TIME, removed PUBL_DATE,PUBL_TIME. Thanks to forum-member timorotha
28
#	fixed MODI_DATE/PUBLISHED_DATE issue in news-module. Added PUBLISHED_TIME, removed PUBL_DATE,PUBL_TIME. Thanks to forum-member timorotha
27 29
02-Jul-2008 Christian Sommer
28 30
!	updated to latest FCKEditor version 2.6.2
29 31
01-Jul-2008 Thomas Hornik
trunk/wb/modules/show_menu2/info.php
1 1
<?php
2

  
3
// $Id$
4

  
5 2
/*
6 3
    show_menu2: show_menu replacement for Website Baker 
7 4
    Copyright (C) 2006-2008, Brodie Thiesfield
......
39 36
$module_directory = 'show_menu2';
40 37
$module_name = 'show_menu2';
41 38
$module_function = 'snippet';
42
$module_version = '4.6';
39
$module_version = '4.7';
43 40
$module_platform = '2.6.x | 2.7.x';
44 41
$module_author = 'Brodie Thiesfield';
45 42
$module_license = 'GNU General Public License';
trunk/wb/modules/show_menu2/README.de.txt
1
show_menu2, version 4.6
1
show_menu2, version 4.7
2 2
=======================
3
Ist ein Code-Snippet für das CMS Website Baker. Es stellt einen kompletten Ersatz für die eingebaute Menüfuntionalität zur Verfügung. Alle für die Erzeugung des Menüs erforderlichen Daten werden durch eine einzige Datenbankabfrage erzeugt. Durch umfangreiche Anpassungsmöglichkeiten des erzeugten HTML-Code können alle möglichen Menüarten (Listen, Breadcrumbs, Sitemaps, usw.) erzeugt werden.
3
Ist ein Code-Snippet für das CMS Website Baker. Es stellt einen kompletten 
4
Ersatz für die eingebaute Menüfuntionalität zur Verfügung. Alle, für die 
5
Erzeugung des Menüs erforderlichen Daten, werden durch eine einzige 
6
Datenbankabfrage erzeugt. Durch umfangreiche Anpassungsmöglichkeiten des 
7
erzeugten HTML-Code können alle möglichen Menüarten (Listen, Breadcrumbs, 
8
Sitemaps, usw.) erzeugt werden.
4 9

  
5 10
---
6
Deutsche Übersetzung von BerndJM. Dies ist eine weitgehend direkte Übersetzung des englischen Originals. Bei Übersetzungs- oder Interpretationsfehlern, bitte eine Email an bjm@wwnw.de.
11
Deutsche Übersetzung von BerndJM. Dies ist eine weitgehend direkte Übersetzung 
12
des englischen Originals. Bei Übersetzungs- oder Interpretationsfehlern, bitte 
13
eine Email an bjm@wwnw.de.
7 14
---
8 15

  
16

  
17

  
9 18
INSTALLATION
10 19
============
11 20
1. Die aktuelle Version von http://code.jellycan.com/show_menu2/ herunterladen.
12 21
2. In das Admin-Backend der Website Baker Installation einlogen.
13 22
3. Erweiterungen -> Module aufrufen.
14
4. Wenn bereits eine frühere Version von show_menu2 installiert ist, diese über "Modul deinstallieren" auswählen und deinstallieren.
15
5. Im Abschnitt "Modul installieren" das im Schritt 1 heruntergeladene zip-File auswählen und installieren.
23
4. Wenn bereits eine frühere Version von show_menu2 installiert ist, diese über
24
   "Modul deinstallieren" auswählen und deinstallieren.
25
5. Im Abschnitt "Modul installieren" das im Schritt 1 heruntergeladene zip-File
26
   auswählen und installieren.
16 27

  
17 28
   
29
   
18 30
BENUTZUNG VON SHOW_MENU2
19 31
========================
20
Um show_menu2 zu benutzen muss das verwendete Template an den Stellen modifiziert werden, an denen das Menü erscheinen soll. Bitte beachten: Wenn alte Menüaufrufe ersetzt werden, müssen unbedingt auch die entsprechenden neuen Parameter verwendet werden die show_menu2 benötigt.
32
Um show_menu2 zu benutzen muss das verwendete Template an den Stellen 
33
modifiziert werden, an denen das Menü erscheinen soll. Bitte beachten: Wenn alte 
34
Menüaufrufe ersetzt werden, müssen unbedingt auch die entsprechenden neuen 
35
Parameter verwendet werden die show_menu2 benötigt.
21 36

  
22
In den meisten Fällen genügt bereits der Standardaufruf ohne weitere Parameter von show_menu2. In diesem Fall werden die Vorgabewerte verwendet, dies erzeugt ein Menü das die aktuelle Seite und die Unterseiten der aktuellen Seite anzeigt:
37
In den meisten Fällen genügt bereits der Standardaufruf ohne weitere Parameter 
38
von show_menu2. In diesem Fall werden die Vorgabewerte verwendet, dies erzeugt 
39
ein Menü das die aktuelle Seite und die Unterseiten der aktuellen Seite anzeigt:
23 40
    
24
	show_menu2();
41
    show_menu2();
25 42
    
26
Bitte beachten: der Aufruf von show_menu2 ist PHP und muss normalerweise in PHP-Codezeichen eingeschlossen werden (ausser der Aufruf erfolgt bereits innerhalb von PHP Code):
43
Bitte beachten: der Aufruf von show_menu2 ist PHP und muss normalerweise in PHP-
44
Codezeichen eingeschlossen werden (ausser der Aufruf erfolgt bereits innerhalb 
45
von PHP Code):
27 46

  
28 47
    <?php show_menu2(); ?>
29 48

  
30
Dieses Vorgabe Menü erzeugt bereits ein komplettes Menü auf Listenbasis mit etlichen Klassen, die eine leichte Formatierung mittels CSS ermöglichen. Es wird z.B. die Klasse "menu-current" zu dem <li> Tag des aktuellen Menüpunktes hinzugefügt, zusätzlich erhält jeder Menüpunkt der Unterpunkte enthält die Klasse "menu-expand". Dies erlaubt es sehr differenzierte CSS Regeln für die einzelnen Menüpunkte aufzustellen.
49
Dieses Vorgabe Menü erzeugt bereits ein komplettes Menü auf Listenbasis mit 
50
etlichen Klassen, die eine leichte Formatierung mittels CSS ermöglichen. Es wird 
51
z.B. die Klasse "menu-current" zu dem <li> tag des aktuellen Menüpunktes 
52
hinzugefügt. Zusätzlich erhält jeder Menüpunkt der Unterpunkte enthält die 
53
Klasse "menu-expand". Das erlaubt es sehr differenzierte CSS Regeln für die 
54
einzelnen Menüpunkte aufzustellen.
31 55
Zum Beispiel:
32 56

  
33 57
    li.menu-expand  { font-weight: bold; }
34 58
    li.menu-current { background: red; }
35 59

  
36
Im Abschnitt "HTML-Ausgabe" findet sich eine detaillierte Beschreibung welche Klassen welchem Element zugeordnet werden. Durch die Verwendung von verschiedenen Parametern bei dem show_menu2 Funktionsaufruf lassen sich auch recht umfangreiche und unterschiedliche Menüstrukturen erzeugen. Um beispielsweise nur Menüpunkte aus der obersten Ebene der Menüstruktur darzustellen, könnte man folgenden Aufruf verwenden:
60
Im Abschnitt "HTML-Ausgabe" findet sich eine detaillierte Beschreibung welche 
61
Klassen welchem Element zugeordnet werden. Durch die Verwendung von 
62
verschiedenen Parametern bei dem show_menu2 Funktionsaufruf lassen sich auch 
63
recht umfangreiche und unterschiedliche Menüstrukturen erzeugen. Um 
64
beispielsweise nur Menüpunkte aus der obersten Ebene der Menüstruktur 
65
darzustellen, könnte man folgenden Aufruf verwenden:
37 66

  
38 67
    show_menu2(0, SM2_ROOT, SM2_START);
39 68
    
......
41 70

  
42 71
    show_menu2(0, SM2_CURR+1, SM2_CURR+2);
43 72

  
44
Es gibt jede Menge Möglichkeiten, um die unterschiedlichten Menüstrukturen zu erzeugen, zahlreiche Beispiele dazu findet man auf der Demo-Website: http://code.jellycan.com/sm2test/
73
Es gibt jede Menge Möglichkeiten, um die unterschiedlichsten Menüstrukturen zu 
74
erzeugen. Zahlreiche Beispiele dazu findet man auf der Demo-Website: http://
75
code.jellycan.com/sm2test/
45 76

  
46 77

  
78

  
79
HÄUFIGE FRAGEN
80
==============
81

  
82
Q:  Ich bin kein Programmierer. Gibt es keine einfachere Dokumentation? 
83
A:  Nein, denn dies hier ist bereits die einfache Dokumentation.
84

  
85

  
86
Q:  Wie kann ich ein sogenanntes Drop-Down Menü erstellen?
87
A:  Dies hat nichts mit show_menu2 zu tun. Um ein Drop-Down Menü zu erzeugen muß
88
    lediglich der CSS-Code des jeweiligen Templates angepaßt werden. Die nötigen 
89
    Anpassungen findet man z.B. im "allcss2" Template aus dem WB Addon     
90
    Repository -> http://addons.websitebaker.org/pages/templates.php
91

  
92

  
93
Q:  Warum verschwindet das Menü nachdem ich in einer mehrsprachigen WB-Site die 
94
    Suchfunktion benutzt habe?
95
A:  Im verwendeten Template fehlen die notwendigen Zeilen:
96

  
97
    1.  Im WB Admin Backend: Optionen -> Erweiterte Optionen anzeigen ->        
98
        Suchoptionen -> Kopfzeile - hier direkt nach dem öffnenden <form> tag 
99
        folgende Zeile einfügen:
100
       
+        <input type="hidden" name="referrer" value="[REFERRER_ID]" />
101

  
102
    2.  In der index.php des verwendeten Templates folgende Zeile unmittelbar   
103
        nach dem öffnenden <form> tag der Suche einfügen:
104

  
105
        <input type="hidden" name="referrer" value="<?php echo defined('REFERRER_ID')?REFERRER_ID:PAGE_ID;?>" />
106

  
107

  
108
Q:  Mehrsprachig? Das klingt toll. Wie macht man das?
109
A:  http://help.websitebaker.org/pages/de/advanced-doku/designer-guide/mehrsprachige-webseiten.php
110

  
111

  
112
Q:  Jedesmal wenn eine Seite aufgerufen wird, erzeugt SM2 folgende Warnmeldung:
113
    "show_menu2 error: $aOptions is invalid. No flags from group 1 supplied!"
114
A:  Der Funktion wurden die falschen Werte oder eine falsche Anzahl an 
115
    Werten übergeben.
116
    Siehe den Abschnitt PARAMETER für die korrekten Flag Werte die dem 
117
    $aOptions Parameter zu übergeben sind.    
118

  
119

  
120
    
47 121
FUNKTION
48 122
========
123

  
49 124
Der komplette Aufruf und die Vorgabe Parameterwerte für show_menu2 sind wie folgt:
50 125

  
51 126
    show_menu2(
52 128
        $aMenu          = 0,
53 129
        $aStart         = SM2_ROOT,
54 130
        $aMaxLevel      = SM2_CURR+1,
55
        $aFlags         = SM2_TRIM,
131
        $aOptions       = SM2_TRIM,
56 132
        $aItemOpen      = '[li][a][menu_title]</a>',
57 133
        $aItemClose     = '</li>',
58 134
        $aMenuOpen      = '[ul]',
......
61 137
        $aTopMenuOpen   = false
62 138
        )
63 139

  
64
Im Abschnitt "Parameter" findet sich eine detaillierte Beschreibung jedes einzelnen Parameters.
65
Ab $aItemOpen kann jedem Parameter der Wert false übergeben werden um den jeweiligen Vorgabewert zu erhalten.
66
Dies kann beispielsweise verwendet werden um eine nummerierte Liste zu erzeugen, während für die einzelnen Menüpunkte trotzdem die Vorgabewerte Verwendung finden:
140
Im Abschnitt "Parameter" findet sich eine detaillierte Beschreibung jedes 
141
einzelnen Parameters.
142
Jeder Parameter muß absolut korrekt verwendet werden. Folgende Regeln können 
143
dabei helfen:
67 144

  
68
show_menu2(0, SM2_ROOT, SM2_ALL, SM2_ALL, false, false, '<ol>', '</ol>');
145
    $aMenu = 0 ist in den meisten Anwendungsfällen der beste Wert.
146
    
147
    $aStart muß entweder eine page ID oder ein Wert der mit "SM2_" beginnt sein.
148
    
149
    $aMaxLevel kann nur Werte erhalten, die mit "SM2_" beginnen.
150
    
151
    $aOptions bis auf einige wenige Spezialfälle sind hier nur Werte die mit 
152
    "SM2_" beginnen zulässig.
153
    
154
    Alle weiteren Parameter enthalten die (HTML)Tags die die Ausgabe des Menüs 
155
    steuern.
156
    
157
    Ab $aItemOpen kann jedem Parameter der Wert false übergeben werden um den 
158
    jeweiligen Vorgabewert zu erhalten.
69 159

  
70
Bitte beachten: bis einschliessich $aFlags müssen alle Parameter explizit übergeben werden!
160
    Dies kann beispielsweise verwendet werden um eine nummerierte Liste zu 
161
    erzeugen, während für die einzelnen Menüpunkte trotzdem die Vorgabewerte 
162
    Verwendung finden:
71 163

  
164
        show_menu2(0, SM2_ROOT, SM2_ALL, SM2_ALL, false, false, '<ol>', '</ol>');
72 165

  
166
Bitte beachten: bis einschliesslich $aOptions müssen alle Parameter explizit übergeben werden!
167

  
168

  
73 169
HTML-AUSGABE
74 170
============
75
Die HTML-Ausgabe hängt wesentlich davon ab, welche Parameter an die Funktion übergeben werden. Unabhängig davon werden nachfolgende Klassen grundsätzlich für jedes Menü verwendet, wobei einzelne Menüpunkte, wenn erforderlich, auch mehrere Klassen erhalten können.
171
Die HTML-Ausgabe hängt wesentlich davon ab, welche Parameter an die Funktion übergeben werden. 
172
Unabhängig davon werden nachfolgende Klassen grundsätzlich für jedes Menü verwendet, wobei 
173
einzelne Menüpunkte, wenn es erforderlich ist, auch mehrere Klassen erhalten können.
76 174

  
77
    KLAssE          ZUORDNUNG
175
    KLASSE          ZUORDNUNG
78 176
    ------------    -------------------------------------------------------
79
    menu-top        Nur der erste Menüpunkt
177
    menu-top        Nur der erste Menüpunkt.
80 178
    menu-parent     Jeder Hauptmenüpunkt.
81 179
    menu-current    Nur der Menüpunkt der aktuellen Seite.
82 180
    menu-sibling    Alle "Geschwister" der aktuellen Seite.
......
85 183
    menu-first      Der erste Punkt eines jeden Menüs oder Untermenüs.
86 184
    menu-last       Der letzte Punkt eines jeden Menüs oder Untermenüs.
87 185

  
88
    Folgende Klassen werden nur hinzugefügt, wenn das SM2_NUMCLAss flag gesetzt ist:
186
    Folgende Klassen werden nur hinzugefügt, wenn das SM2_NUMCLASS Flag gesetzt 
187
    ist:
89 188

  
90 189
    menu-N          Jeder Menüpunkt, wobei das N für die ABSOLUTE Menütiefe, 
91
		    beginnend bei 0, des jeweiligen Menüpunktes steht.
190
                    beginnend bei 0, des jeweiligen Menüpunktes steht.
92 191
                    Die oberste Ebene ist also immer menu-0, die nächste
93 192
                    Ebene menu-1 usw.
94 193
    menu-child-N    Jedes Untermenü der aktuellen Seiten, wobei das N für die
......
137 236
PARAMETER
138 237
=========
139 238
$aMenu      
140
    Nummer des Menüs. Dies ist nützlich um mehrere Menüs auf einer Seite zu verwenden.
239
    Nummer des Menüs. Diese ist nützlich um mehrere Menüs auf einer Seite zu    
240
    verwenden.
141 241
    Menü Nummer 0 ist das Vorgabemenü der aktuellen Seite, SM2_ALLMENU gibt alle
142 242
    im System verwendeten Menüs zurück.
143 243

  
144 244
$aStart  
145
    Gibt an, ab welcher Ebene die Erzeugung des Menüs beginnen soll. In den meisten

146
    Fällen wird dies die oberste Ebene des anzuzeigenden Menüs sein. Es kann einer

147
    der folgenden Werte verwendet werden:
245
    Gibt an, ab welcher Ebene die Erzeugung des Menüs beginnen soll. In den     
246
    meisten Fällen wird dies die oberste Ebene des anzuzeigenden Menüs sein. Es 
247
    kann einer der folgenden Werte verwendet werden:
148 248

  
149 249
        SM2_ROOT+N  Beginnt N Ebenen unterhalb der obersten Ebene, z.B.:
150
                      SM2_ROOT      Beginnt auf der obersten Ebene
151
                      SM2_ROOT+1    Beginnt eine Ebene unterhalbe der obersten Ebene
152
                      SM2_ROOT+2    Beginnt zwei Ebenen unterhalbe der obersten Ebene
250
                    SM2_ROOT      Beginnt auf der obersten Ebene
251
                    SM2_ROOT+1    Beginnt eine Ebene unterhalb der obersten Ebene
252
                    SM2_ROOT+2    Beginnt zwei Ebenen unterhalb der obersten Ebene
153 253

  
154 254
        SM2_CURR+N  Beginnt N Ebenen unterhalb der aktuellen Ebene, z.B.:
155
                      SM2_CURR      Beginnt auf der aktuellen Ebene. Alle Geschwister
156
                                    der aktuellen Ebene
157
                      SM2_CURR+1    Beginnt eine Ebene unterhalb der aktuellen Ebene
158
                                    mit allen Unterebenen
255
                    SM2_CURR      Beginnt auf der aktuellen Ebene. Alle Geschwister
256
                                  der aktuellen Ebene
257
                    SM2_CURR+1    Beginnt eine Ebene unterhalb der aktuellen Ebene
258
                                  mit allen Unterebenen
159 259

  
160 260
        page_id     Verwendet die Seite mit der angegebenen page id als Elternelement.
161
                    Alle Untermenüs dieser Seite werden angezeigt. (Die page id kann

162
                    ermittelt werden, wenn man die Seite im Admin-Backend editiert,

163
		    sie steht dann in der Adresszeile des Browsers:

164
		    http://SITE/admin/pages/modify.php?page_id=35
261
                    Alle Untermenüs dieser Seite werden angezeigt. 
262
                    (Die page id kann ermittelt werden, wenn man die Seite im 
263
                    Admin-Backend editiert, sie steht dann in der Adresszeile des      
264
                    Browsers: http://SITE/admin/pages/modify.php?page_id=35
165 265

  
166 266
$aMaxLevel   
167
    Die maximale Anzahl der Ebenen die angezeigt werden, die Anzeige
168
    beginnt ab der in $aStart festgelegten Ebene bis hin zu der hier 
267
    Die maximale Anzahl der Ebenen die angezeigt werden. Die Anzeige
268
    beginnt ab der in $aStart festgelegten Ebene, bis hin zu der hier 
169 269
    festgelegten Ebene.
170 270
        
171
	SM2_ALL      Keine Beschränkung, alle Ebenen werden angezeigt
271
        SM2_ALL      Keine Beschränkung, alle Ebenen werden angezeigt
172 272

  
173 273
        SM2_CURR+N   Zeigt immer die aktuelle Seite + N Ebenen. 
174
                        SM2_CURR      Aktuelle Ebene (keine Unterebene)
175
                        SM2_CURR+3    Alle übergeordneten + aktuelle + 3 Unterebenen
274
                     SM2_CURR      Aktuelle Ebene (keine Unterebene)
275
                     SM2_CURR+3    Alle übergeordneten + aktuelle + 3 Unterebenen
176 276

  
177 277
        SM2_START+N  Beginnt immer auf der Startebene + N Ebenen.
178
                     Die Ebenen werden unabhängig davon angezeigt 
278
                     Die Ebenen werden unabhängig davon angezeigt,egal 
179 279
                     auf welcher Ebene sich die aktuelle Seite befindet.
180
		        SM2_START     Eine einzelne Ebene ab der Startebene
181
                        SM2_START+1   Startebene + eine Ebene darunter
280
                     SM2_START     Eine einzelne Ebene ab der Startebene.
281
                     SM2_START+1   Startebene + eine Ebene darunter.
182 282

  
183 283
        SM2_MAX+N    Zeigt höchstens N Ebenen ab der Startebene.
184 284
                     Ebenen unterhalb der aktuellen Ebene werden nicht angezeigt.
185
			SM2_MAX       Starting level only (same as SM2_START)
186
                        SM2_MAX+1     Maximum of starting level and 1 level.
285
                     SM2_MAX       Nur die Startebene (gleiche Wirkung wie SM2_START)
286
                     SM2_MAX+1     Die Startebene und eine Ebene darunter.
187 287

  
188
$aFlags   
288
$aOptions   
189 289
    Spezielle Flags für verschiedene Menügenerierungs Optionen. Sie können mittels
190 290
    einer ODER Verknüpfung (|) miteinander kombiniert werden. Um beispielsweise
191
    sowohl TRIM als auch PRETTY zu definieren, verwendet man: SM2_TRIM|SM2_PRETTY.
291
    sowohl TRIM als auch PRETTY zu definieren, verwendet man: (SM2_TRIM | SM2_PRETTY).
192 292

  
193 293
    GROUP 1
194 294
    -------
......
233 333
    -------
234 334
    Diese Flags sind optional, sie können in beliebiger Anzahl kombiniert werden.
235 335

  
236
    SM2_NUMCLAss    Fügt die nummerierten Menüklassen "menu-N" und 
336
    SM2_NUMCLASS    Fügt die nummerierten Menüklassen "menu-N" und 
237 337
                    "menu-child-N hinzu.
238 338
        
239 339
    SM2_ALLINFO     Lädt alle Felder aus der Seitentabelle der Datenbank.
......
247 347
                    mit SM2_NOCACHE, sonst zeigt es keine Wirkung.
248 348
    
249 349
    SM2_NOCACHE     Die aus der Datenbank gelesenen Daten werden bei erneutem Aufruf von
250
                    show_menu2 nicht wiederverwendet sondern erneut aus der Datenbank gelesen.
350
                    show_menu2 nicht wiederverwendet sondern erneut aus der Datenbank 
351
                    gelesen.
251 352
    
252 353
    SM2_PRETTY      Bringt die HTML-Ausgabe des Menüs mittels Leerzeichen und
253
                    Zeilenumbrüchen in eine gut lesbare Form. Dies ist besonders nützlich

254
                    beim Debuggen der Menüausgabe.
354
                    Zeilenumbrüchen in eine gut lesbare Form. Das ist besonders 
355
                    nützlich beim Debuggen der Menüausgabe.
255 356
    
256 357
    SM2_BUFFER      Gibt den HTML-Code nicht direkt aus, sondern speichert ihn intern
257
                    zwischen und gibt ihn al kompletten String aus.
358
                    zwischen und gibt ihn als kompletten String aus.
258 359
    
259 360
    SM2_CURRTREE    Schliesst alle anderen Toplevelmenüs von der Betrachtung aus.
260 361
                    Es werden nur Menüpunkte des aktuellen Menüzweiges dargestellt.
261
                    Dieses Flag kann bei Bedarf mit jedem flag aus der Gruppe 1
362
                    Dieses Flag kann bei Bedarf mit jedem Flag aus der Gruppe 1
262 363
                    kombiniert werden.
263 364
    
264 365
    SM2_ESCAPE      Wendet htmlspecialchars auf den Menüstring an.
......
266 367
                    sein um eine valide HTML Ausgabe zu erzeugen.
267 368
                        
268 369
    SM2_NOESCAPE    Dies ist das Standarverhalten und existiert nur aus Gründen der 
269
                    Abwärtskompatibiltät.                   
370
                    Abwärtskompatibilität.                   
270 371

  
372
    Für diesen Parameter gibt es auch einen erweiterten Modus, bei dem die Optionen
373
    als assoziatives Array übergeben werden. Näheres dazu im Abschnitt ERWEITERTE
374
    OPTIONEN. Für die meisten Anwendungsfälle wird dies jedoch NICHT benötigt.
375
    
271 376
$aItemOpen
272 377
    Dies legt den Formatstring fest, mit dem jeder einzelne Menüeintrag begonnen
273 378
    wird. Für den allerersten Menüeintrag kann mittels $aTopItemOpen ein anderer
274 379
    Formatstring definiert werden.
275 380
    Wenn dieser Parameter auf false gesetzt wird, wird der Vorgabe Formatstring
276
    '[li][a][menu_title]</a>' verwendet um die Kompatibiltät zur Website Baker
277
    Standardfunktion show_menu() zu gewährleiten.
381
    '[li][a][menu_title]</a>' verwendet um die Kompatibilität zur Website Baker
382
    Standardfunktion show_menu() zu gewährleisten.
278 383
    Da die Formatierung mittels CSS-Klassen oftmals einfacher ist, wenn sie auf den 
279
    <a> Tag angewendet werden, empfiehlt es sich hier folgenden Formatstring zu
384
    <a> tag angewendet werden, empfiehlt es sich hier folgenden Formatstring zu
280 385
    verwenden: '<li>[ac][menu_title]</a>'.
281 386
    
282 387
    Dieser Parameter kann auch als Instanz eine Formatierungklasse für das Menü
283
    verwendet werden. Im Abschnitt "Formatter" findet sich dazu eine detailierte 

284
    Beschreibung. Wenn hier ein Formatter angegeben wird, werden alle Argumente
285
    nach $aItenOpen ignoriert.
388
    verwendet werden. Die nähere Beschreibung dazu findet sich im Abschnitt FORMATTER. 
389
    Wenn hier ein Formatter angegeben wird, werden alle Argumente
390
    nach $aItemOpen ignoriert.
286 391

  
287 392
$aItemClose
288
    Dieser String schliesst jeden Menüpunkt ab. 
393
    Dieser String schließt jeden Menüpunkt ab. 
289 394
    Bitte beachten: dies ist kein Formatstring und es werden keine Schlüsselworte
290 395
    ersetzt!
291 396
    Wenn dieser Parameter auf false gesetzt ist, wird die Vorgabe '</li>' verwendet.
......
298 403
    verwendet.
299 404
    
300 405
$aMenuClose
301
    Dieser String schliesst jedes Menü ab. 
406
    Dieser String schließt jedes Menü ab. 
302 407
    Bitte beachten: dies ist kein Formatstring und es werden keine Schlüsselworte
303 408
    ersetzt!
304 409
    Wenn dieser Parameter auf false gesetzt ist, wird die Vorgabe '</ul>' verwendet.
......
311 416
    Der Formatstring für das erste Menü. Wenn dieser Parameter auf false
312 417
    gesetzt wird, wird der selbe Formatstring wie bei $aMenuOpen verwendet.
313 418

  
419
    
314 420

  
421
ERWEITERTE OPTIONEN
422
===================
423
Der Parameter $aOptions kann auf zweierlei Arten verwendet werden. Zum einen, wie oben 
424
im Abschnitt PARAMETER beschrieben, diese Art sollte für die allermeisten 
425
Anwendungsfälle ausreichen. Um allerdings in speziellen Fällen die Sonderoptionen 
426
ansprechen zu können, müssen die erforderlichen Werte als assoziatives Array 
427
bereitgestellt werden.
428
Bitte beachten: Die SM2_* Flags sind auch hierbei erforderlich und müßen als 'flags' 
429
übergeben werden.
430

  
431
    'flags'     **ZWINGEND ERFORDELICH** Dies sind die Flags die oben im Abschnitt 
432
                PARAMETER unter $aOptions beschrieben wurden.
433

  
434
    'notrim'    Hiermit wird eine Anzahl von Ebenen festegelegt, die relativ bezogen 
435
                auf die in $aStart festgelegte Menüebene, immer angezeigt werden. Dies 
436
                bewirkt, daß für diese Ebenen das SM2_TRIM Flag ignoriert wird.
437

  
438
Um dieses Array zu verwenden, empfiehlt es sich es erst anzulegen und dann den 
439
$aOptions parameter mit dem angelegten Array zu beliefern:
440

  
441
    $options = array('flags' => (SM2_TRIM|...), 'notrim' => 1);
442
    show_menu2(0, SM2_ROOT, SM2_CURR+1, $options);
443
    
444
    
445
    
315 446
FORMAT STRINGS
316 447
==============
317 448
Die folgenden Tags können in den Formatstrings für $aItemOpen und $aMenuOpen
318
verwendet werden und werden durch den entsprechenden Text ersetzt.
449
verwendet werden und sollen durch den entsprechenden Text ersetzt werden.
319 450

  
320 451
[a]             <a> tag ohne Klasse:   '<a href="[url]" target="[target]">'
321 452
[ac]            <a> tag mit Klasse:    '<a href="[url]" target="[target]" class="[class]">'
322 453
[li]            <li> tag mit Klasse:   '<li class="[class]">'
323 454
[ul]            <ul> tag mit Klasse:   '<ul class="[class]">'
324 455
[class]         Liste der Klassen für diese Seite
325
[menu_title]    Text des Menütitel (HTML entity escaped ausser das SM2_NOESCAPE Flag ist gesetzt)
326
[page_title]    text des Seitentitel (HTML entity escaped ausser das SM2_NOESCAPE Flag ist gesetzt)
456
[menu_title]    Text des Menütitel 
457
                (HTML entity escaped ausser das SM2_NOESCAPE Flag ist gesetzt)
458
[page_title]    text des Seitentitel 
459
                (HTML entity escaped ausser das SM2_NOESCAPE Flag ist gesetzt)
327 460
[url]           die URL der Seiten für den <a> tag
328 461
[target]        das Seitenziel für den <a> tag
329
[page_id]       die Page ID des aktuellen Menüpunktes
330
[parent]        die Page ID des übergeorneten Menüpunktes
331
[level]         die Seitenebene, dies ist die gleiche Zahl die im "menu-N" CSS tag verwendet wird.
332
[sib]           Anzahl der Geschwister des aktuellen Menüpunktes
333
[sibCount]      Anzahl aller Geschwister in diesem Menü
462
[page_id]       die Page ID des aktuellen Menüpunktes.
463
[parent]        die Page ID des übergeordneten Menüpunktes.
464
[level]         die Seitenebene, 
465
                dies ist die gleiche Zahl die im "menu-N" CSS tag verwendet wird.
466
[sib]           Anzahl der Geschwister des aktuellen Menüpunktes.
467
[sibCount]      Anzahl aller Geschwister in diesem Menü.
334 468
[if]            Bedingung (Details hierzu im Abschnitt "Bedingte Formatierung')
335 469

  
336
Folgende tags sind nur verfügbar, wenn das SM2_ALLINFO flag gesetzt ist.
470
Folgende tags sind NUR verfügbar, wenn das SM2_ALLINFO Flag gesetzt ist.
337 471

  
338 472
[description]   Seitenbeschreibung
339 473
[keywords]      Schlüsselworte der Seite
340 474

  
341 475

  
476

  
342 477
BEDINGTE FORMATIERUNG
343 478
=====================
344 479
Die Anweisung für eine bedingte Formatierung kann eine der folgenden Formen haben:
......
355 490
        Zeichen '}' nicht erlaubt ist).
356 491
    
357 492
    C   Der Ausdruck der verwendet wird, wenn die Bedingung nicht erfüllt ist.
358
        Dies kann ein beliebiger String sein, der jedoch nicht das zeichen '}'
493
        Dies kann ein beliebiger String sein, der jedoch nicht das Zeichen '}'
359 494
        enthalten darf. Er kann jeden beliebigen Formatstring aus dem Abschnitt
360 495
        'Format Strings' enthalten, jedoch keinen weiteren Bedingungstest (da das 
361 496
        Zeichen '}' nicht erlaubt ist).
362 497

  
363 498
Die Bedingung ist eine Kombination von einem oder mehreren boolschen Vergleichen.
364 499
Wenn mehr als ein Vergleich erforderlich ist, so muss dieser mit den anderen Vergleichen
365
mittels || (boolsches oder - OR) oder && (boolsches und - AND) vernüpft werden.    
500
mittels || (boolsches oder - OR) oder && (boolsches und - AND) verknüpft werden.    
366 501

  
367
Ein einzelner Vergleich besteht aus dem linken Operanden, dem Operator und dem rechten Operanden.
502
Ein einzelner Vergleich besteht aus dem linken Operanden, dem Operator und dem rechten 
503
Operanden.
368 504
z.B. X == Y  - hierbei ist X der linke Operand, == der Operator und Y der rechte Operand.
369 505
    
370 506
    Linker Operand. Muss eines der folgende Schlüsselworte sein:
......
383 519
        ==          Gleich
384 520
        !=          Nicht gleich
385 521
        >=          Grössr oder gleich als
386
        >           grösser als
522
        >           Grösser als
387 523
    
388 524
    Rechter Operand. Die Art dieses Operanden hängt von dem, für den linken Operanden
389 525
                     verwendeten Schlüsselwort ab.
390 526
        class       einer der "menu-*" Klassennamen wie sie im Abschnitt "Ausgabe"
391 527
                    spezifiziert sind.
392 528
        level       Überprüfung der Seitenebene gegen folgende Werte:
393
                      <number>  die absolute Seitenebene
394
                      root      die oberste Seitenebene
395
                      granny    die Seitenebene über der übergeordneten Seitenebene
396
                      parent    die übergeordnete Seitenebene
397
                      current   die aktuelle Seitenebene
398
                      child     die untergeornete Seitenebene
529
                        <number>  die absolute Seitenebene
530
                        root      die oberste Seitenebene
531
                        granny    die Seitenebene über der übergeordneten Seitenebene
532
                        parent    die übergeordnete Seitenebene
533
                        current   die aktuelle Seitenebene
534
                        child     die untergeornete Seitenebene
399 535
        id          Überprüfung der page id gegen folgende Werte:
400
                      <number>  die absolute page id
401
                      parent    die übergeordnete page id
402
                      current   die aktuelle page id
536
                        <number>  die absolute page id
537
                        parent    die übergeordnete page id
538
                        current   die aktuelle page id
403 539
        sib         Eine positive Integerzahl, oder "sibCount" um die Anzahl der
404 540
                    Geschwister in diesem Menü zu überprüfen
405 541
        sibCount    Eine positive Integerzahl
......
415 551
    [if(sib==2){exp}]               ist der zweite Eintrag in einem Menü
416 552
    [if(sibCount>1){exp}]           ist in einem Menü mit mehr als einem Eintrag
417 553
    [if(sibCount!=2){exp}]          ist in einem Menü, das nicht genau 2 Einträge hat
418
    [if(level>parent){exp}]         ist ine eine Geschwistermenü oder dem Untermenü eines Geschwistermenüs
554
    [if(level>parent){exp}]         ist in einem Geschwistermenü oder dem Untermenü eines      
555
                                    Geschwistermenüs
419 556
    [if(id==parent){exp}]           ist der übergeordnete Punkt der aktuellen id
420 557

  
421
Wenn eine sonst-Klausel (else) hinzugefügt wird, so wird diese in allen anderen Fällen ausgeführt.
558
Wenn eine sonst-Klausel (else) hinzugefügt wird, so wird diese in allen anderen Fällen 
559
ausgeführt.
422 560
Zum Beispiel wird "foo" immer dann ausgeführt, wenn die if Überprüfung falsch ergibt, also:
423 561

  
424 562
    [if(sib==2){exp}else{foo}]      ist NICHT der zweite Eintrag im Menü
......
426 564

  
427 565
Bei mehrfach Vergleichen wird der Ausdruck "exp" nur ausgeführt, wenn:
428 566

  
429
    [if(sib == 1 || sib > 3){exp}]  ist der erste Eintrag ODER ist der vierte oder höhere Eintrag im Menü    
567
    [if(sib == 1 || sib > 3){exp}]  ist der erste Eintrag ODER ist der vierte oder höhere   
568
    Eintrag im Menü    
430 569
               
431
    [if(id == current && class == menu-expand){exp}  ist der aktuelle Eintrag UND hat Untermenüs
570
    [if(id == current && class == menu-expand){exp}  ist der aktuelle Eintrag UND hat 
571
    Untermenüs
432 572
        
433 573
Bitte beachten:
434 574
Alle Überprüfungen werden in der Reihenfolge ausgeführt, in der sie notiert sind, denn:
......
436 576
* Überprüfungen werden nicht gruppiert (eine Klammerung von Überprüfungen wird nicht unterstützt)
437 577
* sowohl || als auch && haben die gleiche Wertigkeit
438 578

  
579

  
580

  
439 581
FORMATTER
440 582
=========
441 583
Achtung: dies ist ein fortgeschrittenes und äusserst selten benötigtes Feature!
......
443 585
Mit umfangreichen Kenntnissen in der PHP Programmierung ist es möglich den vordefinierten
444 586
Formatierer von show_menu2 mit einem eigenen zu ersetzen.
445 587
In der include.php von show_menu2 sieht man wie der Formatierer geschreiben werden muss.
446
Die API die verwendet werden muss sieht wie folgt aus:
588
Die API, die verwendet werden muss, sieht wie folgt aus:
447 589

  
448
(Anmerkung des Übersetzers: Kommentare nicht übersetzt, wer sich so weit vorwagt, sollte
590
(Anmerkung des Übersetzers: Kommentare sind nicht übersetzt, wer sich so weit vorwagt, sollte
449 591
damit keine Probleme haben ;-)
450 592

  
451 593
class SM2_Formatter
......
471 613
    // called once after finalize() if the SM2_NOOUTPUT flag is used
472 614
    function getOutput() { }
473 615
};
474

  
475

  
476

  
trunk/wb/modules/show_menu2/languages/index.php
1 1
<?php
2 2

  
3
// $Id$
4

  
5 3
/*
6 4
    show_menu2: show_menu replacement for Website Baker 
7 5
    Copyright (C) 2006-2008, Brodie Thiesfield
trunk/wb/modules/show_menu2/languages/DE.php
1 1
<?php
2 2

  
3
// $Id$
4

  
5 3
/*
6 4
    show_menu2: show_menu replacement for Website Baker 
7 5
    Copyright (C) 2006-2008, Brodie Thiesfield
trunk/wb/modules/show_menu2/include.php
1 1
<?php
2

  
3
// $Id$
4

  
5 2
/*
6 3
    show_menu2: show_menu replacement for Website Baker 
7 4
    Copyright (C) 2006-2008, Brodie Thiesfield
......
22 19
    02110-1301, USA.
23 20

  
24 21
    ***********************************************
25
    ** Version 4.6: see README for documentation **
22
    ** Version 4.7: see README for documentation **
26 23
    ***********************************************
27 24
*/
28 25

  
......
406 403
    $aMenu          = 0,
407 404
    $aStart         = SM2_ROOT,
408 405
    $aMaxLevel      = -1999, // SM2_CURR+1
409
    $aFlags         = SM2_TRIM,
406
    $aOptions       = SM2_TRIM,
410 407
    $aItemOpen      = false,
411 408
    $aItemClose     = false,
412 409
    $aMenuOpen      = false,
......
417 414
{
418 415
    global $wb;
419 416

  
417
    // extract the flags and set $aOptions to an array
418
    $flags = 0;
419
    if (is_int($aOptions)) {
420
        $flags = $aOptions;
421
        $aOptions = array();
422
    }
423
    else if (isset($aOptions['flags'])) {
424
        $flags = $aOptions['flags'];
425
    }
426
    else {
427
        $flags = SM2_TRIM;
428
        $aOptions = array();
429
        error_log('show_menu2 error: $aOptions is invalid. No flags supplied!');
430
    }
431
    
420 432
    // ensure we have our group 1 flag, we don't check for the "exactly 1" part, but 
421 433
    // we do ensure that they provide at least one.
422
    if (0 == ($aFlags & _SM2_GROUP_1)) {
423
        error_log("show_menu2 error: no flags from group 1 supplied! Exactly one flag is required!");
424
        $aFlags |= SM2_TRIM; // default to TRIM
434
    if (0 == ($flags & _SM2_GROUP_1)) {
435
        error_log('show_menu2 error: $aOptions is invalid. No flags from group 1 supplied!');
436
        $flags |= SM2_TRIM; // default to TRIM
425 437
    }
426 438
    
427 439
    // search page results don't have any of the page data loaded by WB, so we load it 
......
469 481
    // multiple calls to show_menu2 in a single page with only a single call to 
470 482
    // the database. If this variable exists, then we have already retrieved all
471 483
    // of the information and processed it, so we don't need to do it again.
472
    if (($aFlags & SM2_NOCACHE) != 0
484
    if (($flags & SM2_NOCACHE) != 0
473 485
        || !array_key_exists('show_menu2_data', $GLOBALS) 
474 486
        || !array_key_exists($aMenu, $GLOBALS['show_menu2_data'])) 
475 487
    {
......
497 509
        if (version_compare(WB_VERSION, '2.7', '>=')) { // WB 2.7+
498 510
            $fields .= ',viewing_users';
499 511
        }
500
        if ($aFlags & SM2_ALLINFO) {
512
        if ($flags & SM2_ALLINFO) {
501 513
            $fields = '*';
502 514
        }
503 515
        
......
640 652
                $sm2formatter = new SM2_Formatter;
641 653
            }
642 654
            $formatter = $sm2formatter;
643
            $formatter->set($aFlags, $aItemOpen, $aItemClose, 
655
            $formatter->set($flags, $aItemOpen, $aItemClose, 
644 656
                $aMenuOpen, $aMenuClose, $aTopItemOpen, $aTopMenuOpen);
645 657
        }
646 658
        
659
        // adjust the level until we show everything and ignore the SM2_TRIM flag.
660
        // Usually this will be less than the start level to disable it.
661
        $showAllLevel = $aStartLevel - 1;
662
        if (isset($aOptions['notrim'])) {
663
            $showAllLevel = $aStartLevel + $aOptions['notrim'];
664
        }
665
        
647 666
        // display the menu
648 667
        $formatter->initialize();
649 668
        sm2_recurse(
650 669
            $GLOBALS['show_menu2_data'][$aMenu],
651 670
            $aStart,    // parent id to start displaying sub-menus
652
            $aStartLevel, $aMaxLevel, $aFlags, 
671
            $aStartLevel, $showAllLevel, $aMaxLevel, $flags, 
653 672
            $formatter);
654 673
        $formatter->finalize();
655 674
        
656 675
        // if we are returning something, get the data
657
        if (($aFlags & SM2_BUFFER) != 0) {
676
        if (($flags & SM2_BUFFER) != 0) {
658 677
            $retval = $formatter->getOutput();
659 678
        }
660 679
    }
661 680

  
662 681
    // clear the data if we aren't caching it
663
    if (($aFlags & SM2_NOCACHE) != 0) {
682
    if (($flags & SM2_NOCACHE) != 0) {
664 683
        unset($GLOBALS['show_menu2_data'][$aMenu]);
665 684
    }
666 685
    
......
681 700

  
682 701
function sm2_recurse(
683 702
    &$rgParent, $aStart, 
684
    $aStartLevel, $aMaxLevel, $aFlags, 
703
    $aStartLevel, $aShowAllLevel, $aMaxLevel, $aFlags, 
685 704
    &$aFormatter
686 705
    )
687 706
{
......
725 744
        }
726 745
        else if ($aFlags & SM2_TRIM) {
727 746
            // parents and siblings of parents
728
            if (!array_key_exists('sm2_on_curr_path', $page)    // not set if false, so existence = true
747
            if ($pageLevel > $aShowAllLevel  // permit all levels to be shown
748
                && !array_key_exists('sm2_on_curr_path', $page)    // not set if false, so existence = true
729 749
                && !array_key_exists('sm2_path_sibling', $page)) {  // not set if false, so existence = true
730 750
                continue;
731 751
            }
......
765 785
            && array_key_exists('sm2_has_child', $page)) {  // not set if false, so existence = true
766 786
            sm2_recurse(
767 787
                $rgParent, $nextParent, // parent id to start displaying sub-menus
768
                $aStartLevel, $aMaxLevel, $aFlags, 
788
                $aStartLevel, $aShowAllLevel, $aMaxLevel, $aFlags, 
769 789
                $aFormatter);
770 790
        }
771 791
        
trunk/wb/modules/show_menu2/legacy.php
1 1
<?php
2

  
3
// $Id$
4

  
5 2
/*
6 3
    show_menu2: show_menu replacement for Website Baker 
7 4
    Copyright (C) 2006-2008, Brodie Thiesfield
trunk/wb/modules/show_menu2/README.en.txt
1
show_menu2, version 4.6
1
show_menu2, version 4.7
2 2
=======================
3 3
A code snippet for the Website Baker CMS software. It provides a complete 
4 4
replacement for the builtin menu functions. All menu data is retrieved using 
......
6 6
can be generated with extensive customisation of the resulting HTML.
7 7

  
8 8

  
9

  
9 10
INSTALLATION
10 11
============
11 12
1. Download the latest version from http://code.jellycan.com/show_menu2/
......
17 18
   that you downloaded in step 1, and choose the "Install" button.
18 19
   
19 20
   
21
   
20 22
USING SHOW_MENU2
21 23
================
22 24
You need to modify the PHP files of your template to call show_menu2 where you 
......
45 47

  
46 48
See the "Output" section for details of exactly what classes are added to each 
47 49
element. More elaborate and different menu structures are able to be created by 
48
supplying parameters to the show_menu2 function call. For example, to show only 
49
menu items from the top level of the menu you use:
50
supplying different parameters to the show_menu2 function call. For example, 
51
to show only menu items from the top level of the menu you use:
50 52

  
51 53
    show_menu2(0, SM2_ROOT, SM2_START);
52 54
    
......
58 60
demonstration website at http://code.jellycan.com/sm2test/ for more examples. 
59 61

  
60 62

  
63

  
64
COMMON QUESTIONS
65
================
66

  
67
Q:  I'm not a programmer. Do you have simpler documentation? 
68
A:  Nup. This is it. Go hard. Gambarre.
69

  
70

  
71
Q:  How do I create a drop-down menu?
72
A:  This is unrelated to show_menu2. You need to change the template CSS code 
73
    to display the menu as a drop-down. Try the "allcss2" template from the WB
74
    addon repository. http://addons.websitebaker.org/pages/templates.php
75

  
76

  
77
Q:  Why does the menu disappear after I do a search on my multilingual WB site?
78
A:  You're missing some required lines in your template.
79

  
80
    1.  Log into WB administration, and go to Settings -> Show advanced settings 
81
        -> Search Settings -> Header Code and add the following input field 
82
        after the <form> open tag: 
83

  
84
        <input type="hidden" name="referrer" value="[REFERRER_ID]" />
85

  
86

  
87
    2.  In the index.php of your template, add the following input field 
88
        immediately following the search <form> open tag.
89

  
90
        <input type="hidden" name="referrer" value="<?php echo defined('REFERRER_ID')?REFERRER_ID:PAGE_ID;?>" />
91

  
92

  
93
Q:  Multilingual? That sounds cool. How do I do that?
94
A:  http://help.websitebaker.org/pages/en/advanced-docu.php
95

  
96

  
97
Q:  SM2 is generating a warning every time the page is accessed:
98
    "show_menu2 error: $aOptions is invalid. No flags from group 1 supplied!"
99
A:  You are passing the wrong values to the function. Have a closer look at the 
100
    parameters that you are passing. See the PARAMETERS section below for the 
101
    correct flag values to pass for the $aOptions parameter.
102

  
103

  
104

  
61 105
FUNCTION
62 106
========
63 107

  
......
67 111
        $aMenu          = 0,
68 112
        $aStart         = SM2_ROOT,
69 113
        $aMaxLevel      = SM2_CURR+1,
70
        $aFlags         = SM2_TRIM,
114
        $aOptions       = SM2_TRIM,
71 115
        $aItemOpen      = '[li][a][menu_title]</a>',
72 116
        $aItemClose     = '</li>',
73 117
        $aMenuOpen      = '[ul]',
......
77 121
        )
78 122

  
79 123
See the "Parameters" section for detailed descriptions of each parameter.
80
Note that every parameter from $aItemOpen onwards can be supplied as false
81
in order to get the default value, this allows (for example) a numbered list
82
to be used while still using the the default menu parameters for the items.
83
Note that all parameters up to $aFlags need to be explicitly supplied.
84
For example:
124
Ensure that you use each parameter correctly. Use the following rules:
85 125

  
86
show_menu2(0, SM2_ROOT, SM2_ALL, SM2_ALL, false, false, '<ol>', '</ol>');
126
    $aMenu will be 0 for most people.
127
    
128
    $aStart must be either a page ID or a value starting with "SM2_".
129
    
130
    $aMaxLevel must be only values that start with "SM2_".
131
    
132
    $aOptions must be only values that start with "SM2_" (unless you are 
133
    in a very small minority of users).
134
    
135
    All other parameters are the HTML tag templates that will be 
136
    output for menus and menu items.
137
    
138
Note that every parameter from $aItemOpen can be supplied as false to get 
139
the default value.
87 140

  
88 141

  
142

  
89 143
OUTPUT
90 144
======
91 145
The menu is output differently depending on what parameters have been 
......
194 248
                      SM2_MAX       Starting level only (same as SM2_START)
195 249
                      SM2_MAX+1     Maximum of starting level and 1 level.
196 250

  
197
$aFlags   
251
$aOptions  
198 252
    Specify flags for different generation options for the menu. The flags
199 253
    may be combined together using bitwise OR (|). For example, to specify
200
    both TRIM and PRETTY you should use, SM2_TRIM|SM2_PRETTY.
254
    both TRIM and PRETTY you should use, (SM2_TRIM | SM2_PRETTY).
201 255

  
202 256
    GROUP 1
203 257
    -------
......
267 321
                    pages to fail validation. 
268 322
    SM2_NOESCAPE    Default behaviour. Exists only for backwards compatibility.                    
269 323

  
324
    This parameter also has an extended mode where an associative array of 
325
    options is supplied. See the EXTENDED OPTIONS section for details. 
326
    Most users will NOT need to use this.
270 327

  
271 328
$aItemOpen
272 329
    Format string to use for creating each individual menu item entry.
......
305 362
$aTopMenuOpen 
306 363
    Format string for the first menu. When set to false, it uses the same 
307 364
    format as $aMenuOpen.
308
        
309 365

  
310 366

  
367

  
368
EXTENDED OPTIONS
369
================
370
The $aOptions parameter is a dual mode parameter. For most users, only the
371
SM2_* flags will be sufficient. However, to access the extra options, it 
372
must be supplied as an associative array. Note that the SM2_* flags are
373
still required and must be supplied as 'flags'.
374

  
375
    'flags'     **REQUIRED** These are the flags described in PARAMETERS
376
                above for the $aOptions parameter. 
377

  
378
    'notrim'    Specify a number of levels relative to the menu level of 
379
                $aStart that will always be displayed. This will cause the
380
                SM2_TRIM flag to be ignored for these levels.
381
                        
382
To supply one of these options in addition to the flags, the option array 
383
should be created and passed as the $aOptions parameter:
384

  
385
    $options = array('flags' => (SM2_TRIM|...), 'notrim' => 1);
386
    show_menu2(0, SM2_ROOT, SM2_CURR+1, $options);
387
    
388
    
389
    
311 390
FORMAT STRINGS
312 391
==============
313 392
The following tags may be included in the format strings for $aItemOpen and 
......
335 414
[keywords]      Page keywords
336 415

  
337 416

  
417

  
338 418
CONDITIONAL FORMATTING
339 419
======================
340 420
The conditional formatting directive takes one of the following forms:
......
467 547
    // called once after finalize() if the SM2_NOOUTPUT flag is used
468 548
    function getOutput() { }
469 549
};
470

  
471

  
472

  

Also available in: Unified diff