Project

General

Profile

« Previous | Next » 

Revision 2114

Added by darkviper almost 10 years ago

+ framework/UpgradeHelper additiona vars to method convInfoIni2InfoPhp()
! module/show_menu2/ the directoryname of this 'Snippet' has been changed to ShowMenu2.
- show_menu2: The Flag SM2::BUFFER has been removed
+ show_menu2: The Flag SM2::NOBUFFER was added

View differences:

branches/2.8.x/wb/modules/show_menu2/uninstall.php
1
<?php
2
/**
3
 *
4
 * @category        modules
5
 * @package         show_menu2
6
 * @author          Independend-Software-Team
7
 * @author          WebsiteBaker Project
8
 * @copyright       2004-2009, Ryan Djurovich
9
 * @copyright       2009-2011, Website Baker Org. e.V.
10
 * @link            http://www.websitebaker2.org/
11
 * @license         http://www.gnu.org/licenses/gpl.html
12
 * @platform        WebsiteBaker 2.8.x
13
 * @requirements    PHP 5.2.2 and higher
14
 * @version         $Id$
15
 * @filesource      $HeadURL$
16
 * @lastmodified    $Date$
17
 *
18
 */
19

  
20
// Must include code to stop this file being access directly
21
if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
22

  
23
?>
24 0

  
branches/2.8.x/wb/modules/show_menu2/install.php
1
<?php
2
/**
3
 *
4
 * @category        modules
5
 * @package         show_menu2
6
 * @author          Independend-Software-Team
7
 * @author          WebsiteBaker Project
8
 * @copyright       2004-2009, Ryan Djurovich
9
 * @copyright       2009-2011, Website Baker Org. e.V.
10
 * @link            http://www.websitebaker2.org/
11
 * @license         http://www.gnu.org/licenses/gpl.html
12
 * @platform        WebsiteBaker 2.8.x
13
 * @requirements    PHP 5.2.2 and higher
14
 * @version         $Id$
15
 * @filesource      $HeadURL$
16
 * @lastmodified    $Date$
17
 *
18
 */
19

  
20
// Must include code to stop this file being access directly
21
if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
22

  
23

  
24
?>
25 0

  
branches/2.8.x/wb/modules/show_menu2/legacy.php
1
<?php
2
/**
3
 *
4
 * @category        module
5
 * @package         show_menu2
6
 * @author          WebsiteBaker Project
7
 * @copyright       2004-2009, Ryan Djurovich
8
 * @copyright       2009-2011, Website Baker Org. e.V.
9
 * @link			http://www.websitebaker2.org/
10
 * @license         http://www.gnu.org/licenses/gpl.html
11
 * @platform        WebsiteBaker 2.7.0 | 2.8.x
12
 * @requirements    PHP 5.2.2 and higher
13
 * @version         $Id$
14
 * @filesource		$HeadURL$
15
 * @lastmodified    $Date$
16
 *
17
 */
18

  
19
/*
20
    This file provides backward compatibility between show_menu2 and the
21
    old functions show_menu() and menu(). Note that it is highly recommended 
22
    for you to update your templates to use show_menu2 directly.
23
 */    
24

  
25
/* ----------------------------------------------------------------------------
26
   show_menu
27
   
28
 From: http://forum.websitebaker.org/index.php/topic,2251.msg13978.html#msg13978  
29
 
30
 * By calling it multiple times, you can have one menu just
31
 * showing the root level, one for the sub-pages, and so on
32
 * The order of the arguments has been changed compared
33
 * to the page_menu() function, so read carefully the list
34
 * of arguments!
35
 * To just display the standard menu, use
36
 * <?php show_menu(); ?> within your template's html code.
37
 * You don't normally need anymore than the first four arguments.
38
 * Usual calls would be (inside php code!)
39
 * show_menu(1,0,-1,false); - displays the complete page tree
40
 * show_menu(1,1,1); - show only first sub level
41
 * show_menu(1,1,-1); -    show an expanding/collapsing menu tree starting at level 1
42
 * Have fun experimenting!
43
 *
44
 * Full list of arguments:
45
 * 1. $menu_number:   With activitated "multiple menu" feature
46
 *                  you can choose which menu will be displayed
47
 *                  default: 1
48
 * 2. $start_level: The depth level of the root of the displayed
49
 *               menu tree. Defaults to '0', which is the top level.
50
 *                  '1' will show all pages starting from the first sub level.
51
 * 3. $recurse:     Gives the maximum number of levels to be displayed. Default
52
 *                  is '-1' which means 'all'.
53
 * 4. $collapse:    Specifies, whether the menu tree shall be
54
 *               expandable/collapsible (if set to 'true')
55
 *               or complete (all pages being displayed) if set to 'false'
56
 * 5. $item_template: Gives the possibility to specify the html code that is
57
 *                  displayed before displaying sub-pages
58
 * 6. $item_footer: The html code to appear after sub-pages were displayed.
59
 * 7. $menu_header: The html code to appear before the entire menu code and each
60
 *               sub tree.
61
 * 8. $menu_footer: The html code to appear after the entire menu code and each
62
 *               sub tree.
63
 * 9. $default_class: The (CSS) class of every menu item except the currently viewed page
64
 * 10. $current_class: The class of the currently viewed page
65
 * 11. $parent:    (used internally) The page_id of the menu's root node, defaults is '0' (root level)
66
 */
67

  
68
// Must include code to stop this file being access directly
69
if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
70
 
71
class SM2_ShowMenuFormatter
72
{
73
    var $output;
74
    var $itemTemplate;
75
    var $itemFooter;
76
    var $menuHeader;
77
    var $menuFooter;
78
    var $defaultClass;
79
    var $currentClass;
80
    
81
    function output($aString) {
82
        if ($this->flags & SM2::BUFFER) {
83
            $this->output .= $aString;
84
        }
85
        else {
86
            echo $aString;
87
        }
88
    }
89
    function initialize() { $this->output = ''; }
90
    function startList($aPage, $aUrl) { 
91
        echo $this->menuHeader;
92
    }
93
    function startItem($aPage, $aUrl, $aCurrSib, $aSibCount) { 
94
        // determine the class string to use
95
        $thisClass = $this->defaultClass;
96
        if ($aPage['page_id'] == PAGE_ID) {
97
            $thisClass = $this->currentClass;
98
        }
99
        
100
        // format and display this item
101
        $item = str_replace( 
102
                array(
103
                    '[a]','[/a]','[menu_title]','[page_title]','[url]',
104
                    '[target]','[class]'
105
                    ),
106
                array(
107
                    "<a href='$aUrl' target='".$aPage['target']."'>", '</a>',
108
                    $aPage['menu_title'], $aPage['page_title'], $aUrl, 
109
                    $aPage['target'], $thisClass
110
                    ),
111
                $this->itemTemplate);
112
        echo $item;
113
    }
114
    function finishItem() { 
115
        echo $this->itemFooter;
116
    }
117
    function finishList() { 
118
        echo $this->menuFooter;
119
    }
120
    function finalize() { }
121
    function getOutput() {
122
        return $this->output;
123
    }
124
}
125

  
126
function show_menu(
127
    $aMenu          = 1, 
128
    $aStartLevel    = 0, 
129
    $aRecurse       = -1, 
130
    $aCollapse      = true,
131
    $aItemTemplate  = '<li><span[class]>[a][menu_title][/a]</span>',
132
    $aItemFooter    = '</li>',
133
    $aMenuHeader    = '<ul>',
134
    $aMenuFooter    = '</ul>',
135
    $aDefaultClass  = ' class="menu_default"',
136
    $aCurrentClass  = ' class="menu_current"',
137
    $aParent        = 0
138
    )
139
{
140
    static $formatter;
141
    if (!isset($formatter)) {
142
        $formatter = new SM2_ShowMenuFormatter;
143
    }
144
    
145
    $formatter->itemTemplate  = $aItemTemplate;
146
    $formatter->itemFooter    = $aItemFooter;  
147
    $formatter->menuHeader    = $aMenuHeader;  
148
    $formatter->menuFooter    = $aMenuFooter;  
149
    $formatter->defaultClass  = $aDefaultClass;
150
    $formatter->currentClass  = $aCurrentClass;
151
    
152
    $start = SM2::ROOT + $aStartLevel;
153
    if ($aParent != 0) {
154
        $start = $aParent;
155
    }
156

  
157
    $maxLevel = 0;
158
    if ($aRecurse == 0) {
159
        return;
160
    }
161
    if ($aRecurse < 0) {
162
        $maxLevel = SM2::ALL;
163
    }
164
    else {
165
        $maxLevel = SM2::START + $aRecurse - 1;
166
    }
167
    
168
    $flags = $aCollapse ? SM2::TRIM : SM2::ALL;
169
    
170
    // special case for default case
171
    if ($aStartLevel == 0 && $aRecurse == -1 && $aCollapse) {
172
        $maxLevel = SM2::CURR + 1;
173
    }
174

  
175
    show_menu2($aMenu, $start, $maxLevel, $flags, $formatter);
176
}
177

  
178
function page_menu(
179
    $aParent = 0, 
180
    $menu_number = 1, 
181
    $item_template = '<li[class]>[a][menu_title][/a]</li>', 
182
    $menu_header = '<ul>', 
183
    $menu_footer = '</ul>', 
184
    $default_class = ' class="menu_default"', 
185
    $current_class = ' class="menu_current"', 
186
    $recurse = LEVEL    // page['level']
187
    ) 
188
{
189
    show_menu($menu_number, 0, $recurse+2, true, $item_template, '', 
190
        $menu_header, $menu_footer, $default_class, $current_class, $aParent);
191
}
192

  
193
?>
194 0

  
branches/2.8.x/wb/modules/show_menu2/README.en.txt
1
show_menu2, version 4.9
2
=======================
3
A code snippet for the Website Baker CMS software. It provides a complete
4
replacement for the builtin menu functions. All menu data is retrieved using
5
a single database query, all types of menu styles (lists, breadcrums, sitemaps)
6
can be generated with extensive customisation of the resulting HTML.
7

  
8

  
9

  
10
INSTALLATION
11
============
12
1. Download the latest version from http://code.jellycan.com/show_menu2/
13
2. Log into your WebsiteBaker installation
14
3. Go to Addons -> Modules
15
4. If a previous version of show_menu2 is already installed, select it from
16
   the "Uninstall Module" list and choose the "Uninstall" button.
17
5. In the "Install Module" section, enter the path to the show_menu2 zip file
18
   that you downloaded in step 1, and choose the "Install" button.
19

  
20

  
21

  
22
USING SHOW_MENU2
23
================
24
You need to modify the PHP files of your template to call show_menu2 where you
25
wish to have the menu displayed. Remember when you replace calls to the old
26
menu functions to use the new parameters that show_menu2 requires.
27

  
28
Often times the default menu generated by show_menu2 is all that you need.
29
This menu shows the current page and children of the current page. It is
30
generated by just calling show_menu2 with no parameters. For example:
31

  
32
    show_menu2();
33

  
34
Note that the call to show_menu2 is PHP, so you usually need to wrap it in the
35
PHP code brackets so that it will execute. Like this:
36

  
37
    <?php show_menu2(); ?>
38

  
39
This default menu generates a complete list based menu with many classes that
40
allow easy CSS styling. For example, the current menu item will have the
41
"menu-current" class added to the <li> tag. Additionally, every menu item with
42
a sub-menu will have the "menu-expand" class added to the <li> tag. This allows
43
you to create CSS rules to style those menu items differently. For example:
44

  
45
    li.menu-expand  { font-weight: bold; }
46
    li.menu-current { background: red; }
47

  
48
See the "Output" section for details of exactly what classes are added to each
49
element. More elaborate and different menu structures are able to be created by
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:
52

  
53
    show_menu2(0, SM2_ROOT, SM2_START);
54

  
55
Alternatively, to show up to two levels of the child menus of the current page:
56

  
57
    show_menu2(0, SM2_CURR+1, SM2_CURR+2);
58

  
59
There are many more possible menus that can be generated by show_menu2. See the
60
demonstration website at http://code.jellycan.com/sm2test/ for more examples.
61

  
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/
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://www.websitebaker2.org/en/help/designer-guide/multilingual-websites.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
Q:  How do I use a different class/picture/color/widget for each entry in a menu?
105
A:  Use the [page_id] format string in the $aItemOpen string. Create a unique
106
    class or id for each menu item, then reference that item in your CSS or Javascript
107
    to do whatever you want.
108

  
109
    To add a unique class for each menu item (or similar):
110

  
111
        "<li><a href="[url]" target="[target]" class="[class] p[page_id]">[menu_title]</a>"
112

  
113
        ... creating menu items like ...
114

  
115
        <li><a href="/pages/foo/bar.php" target="_top" class="menu-top p45">Top Menu</a>
116

  
117
        Reference this in your CSS like:
118

  
119
        a.p45 { color: red; }
120

  
121
    To add a unique ID for each menu item (or similar):
122

  
123
        "<li><a id="p[page_id]" href="[url]" target="[target]" class="[class]">[menu_title]</a>"
124

  
125
        ... creating menu items like ...
126

  
127
        <li><a id="p45" href="/pages/foo/bar.php" target="_top" class="menu-top">Top Menu</a>
128

  
129
        Reference this in your CSS like:
130

  
131
        a#p45 { color: red; }
132

  
133
        Note that the ID can only be used if that menu is generated and displayed one time
134
        only on the page (because HTML ID's must be unique within a page).
135

  
136

  
137

  
138
FUNCTION
139
========
140

  
141
The complete call signature and default parameter value for show_menu2 is:
142

  
143
    show_menu2(
144
        $aMenu          = 0,
145
        $aStart         = SM2_ROOT,
146
        $aMaxLevel      = SM2_CURR+1,
147
        $aOptions       = SM2_TRIM,
148
        $aItemOpen      = '[li][a][menu_title]</a>',
149
        $aItemClose     = '</li>',
150
        $aMenuOpen      = '[ul]',
151
        $aMenuClose     = '</ul>',
152
        $aTopItemOpen   = false,
153
        $aTopMenuOpen   = false
154
        )
155

  
156
See the "Parameters" section for detailed descriptions of each parameter.
157
Ensure that you use each parameter correctly. Use the following rules:
158

  
159
    $aMenu will be 0 for most people.
160

  
161
    $aStart must be either a page ID or a value starting with "SM2_".
162

  
163
    $aMaxLevel must be only values that start with "SM2_".
164

  
165
    $aOptions must be only values that start with "SM2_" (unless you are
166
    in a very small minority of users).
167

  
168
    All other parameters are the HTML tag templates that will be
169
    output for menus and menu items.
170

  
171
Note that every parameter from $aItemOpen can be supplied as false to get
172
the default value.
173

  
174

  
175

  
176
HTML OUTPUT
177
===========
178
The menu is output differently depending on what parameters have been
179
supplied to the function, however in general the following classes are used
180
for each menu. Note that items will have multiple classes when relevant.
181

  
182
    CLASS           ATTACHED TO
183
    ------------    -------------------------------------------------------
184
    menu-top        First menu tag only
185
    menu-parent     Every parent menu item of the current page.
186
    menu-current    Only the menu item for the current page.
187
    menu-sibling    Every sibling of the current page.
188
    menu-child      Every sub-menu of the current page.
189
    menu-expand     Every menu item with children.
190
    menu-first      First item in any menu or sub-menu.
191
    menu-last       Last item in any menu or sub-menu.
192

  
193
    The following classes are added only if SM2_NUMCLASS flag has been used.
194

  
195
    menu-N          Every menu item. The N is replaced with the ABSOLUTE
196
                    menu depth of the item starting with 0. The root level
197
                    menu is always menu-0, the next level is menu-1, etc.
198
    menu-child-N    Every sub-menu of the current page, the N is replaced
199
                    with the relative depth of the submenu starting at 0.
200

  
201

  
202
<ul class="menu-top menu-0">
203
  <li class="menu-0 menu-first">  ... </li>
204
  <li class="menu-0 menu-expand menu-parent">  ...
205
  <ul class="menu-1">
206
    <li class="menu-1 menu-expand menu-first">  ...
207
    <ul class="menu-2">
208
      <li class="menu-2 menu-first">  ...
209
      <li class="menu-2 menu-last">  ...
210
    </ul>
211
    </li>
212
    <li class="menu-1 menu-expand menu-parent">  ...
213
    <ul class="menu-2">
214
      <li class="menu-2 menu-expand menu-current menu-first">  ...      ** CURRENT PAGE **
215
      <ul class="menu-3">
216
        <li class="menu-3 menu-child menu-child-0 menu-first">  ...
217
        <ul class="menu-4">
218
          <li class="menu-4 menu-child menu-child-1 menu-first">  ... </li>
219
          <li class="menu-4 menu-child menu-child-1 menu-last">  ... </li>
220
        </ul>
221
        </li>
222
        <li class="menu-3 menu-child menu-child-0 menu-last">  ... </li>
223
      </ul>
224
      </li>
225
      <li class="menu-2 menu-sibling menu-last">  ... </li>
226
    </ul>
227
    </li>
228
    <li class="menu-1">  ... </li>
229
    <li class="menu-1 menu-expand menu-last">  ...
230
    <ul class="menu-2">
231
      <li class="menu-2 menu-first menu-last">  ... </li>
232
    </ul>
233
    </li>
234
  </ul>
235
  </li>
236
  <li class="menu-0 menu-last">  ... </li>
237
</ul>
238

  
239

  
240

  
241
PARAMETERS
242
==========
243
$aMenu
244
    Menu number to use. This is useful when you are using multiple menus.
245
    Supplying a menu number of 0 will use the default menu for the current
246
    page. Supplying SM2_ALLMENU will return all menus in the system.
247

  
248
$aStart
249
    Specify where the menu generation should start from. This is most
250
    times the parent item of the menu to display. It must be one of the
251
    following values:
252
        SM2_ROOT+N  Start N levels down from the root. e.g.
253
                      SM2_ROOT      Starting at the root menu
254
                      SM2_ROOT+1    Start 1 level below the root
255
                      SM2_ROOT+2    Start 2 levels below the root
256
        SM2_CURR+N  Start N levels down from the current page level. e.g.
257
                      SM2_CURR      Starts at the current page level. All
258
                                    sibling menus to the current page.
259
                      SM2_CURR+1    Starts 1 level down from the current
260
                                    page with the children menus.
261
        page_id     Display using the specific page as the parent. All
262
                    child menus of that page will be displayed. The
263
                    page_id can be found by editing the page in WB admin
264
                    interface. The page_id is included in the URL like:
265
                        http://SITE/admin/pages/modify.php?page_id=35
266

  
267
$aMaxLevel
268
    Maximum menu level to display. Menus are displayed from the start
269
    level down to this level.
270
        SM2_ALL     No limit, all levels are displayed
271
        SM2_CURR+N  Always show to the current page + N levels.
272
                      SM2_CURR      Current (no children)
273
                      SM2_CURR+3    All parents + current + 3 children
274
        SM2_START+N Always show from the starting level + N levels. The
275
                    levels of menu will always be displayed regardless of
276
                    what level the current page is.
277
                      SM2_START     Single level of menus from starting level
278
                      SM2_START+1   Starting level and 1 level down
279
        SM2_MAX+N   Show at most N levels from the starting level. Levels
280
                    won't be shown if they are below the current level.
281
                      SM2_MAX       Starting level only (same as SM2_START)
282
                      SM2_MAX+1     Maximum of starting level and 1 level.
283

  
284
$aOptions
285
    Specify flags for different generation options for the menu. The flags
286
    may be combined together using bitwise OR (|). For example, to specify
287
    both TRIM and PRETTY you should use, (SM2_TRIM | SM2_PRETTY).
288

  
289
    GROUP 1
290
    -------
291
    Exactly one flag from this group must always be supplied. These flags
292
    affect how the siblings in the tree are removed from the output.
293

  
294
    SM2_ALL         Show all branches of the menu tree
295
                        A-1 -> B-1
296
                            -> B-2 -> C-1
297
                                   -> C-2 (CURRENT)
298
                                          -> D-1
299
                                          -> D-2
300
                                   -> C-3
301
                        A-2 -> B-3
302
                            -> B-4
303
    SM2_TRIM        Show all sibling menus of pages on the current path.
304
                    All sub-menus of elements that are not on the path
305
                    are removed.
306
                        A-1 -> B-1
307
                            -> B-2 -> C-1
308
                                   -> C-2 (CURRENT)
309
                                          -> D-1
310
                                          -> D-2
311
                                   -> C-3
312
                        A-2
313
    SM2_CRUMB       Show only the breadcrumb trail, i.e. the current
314
                    menu and all of it's ancestor menus.
315
                        A-1 -> B-2 -> C-2 (CURRENT)
316
    SM2_SIBLING     The same as SM2_TRIM however only sibling menus of
317
                    the current page are displayed. All other menus are
318
                    trimmed to show only the path.
319
                        A-1 -> B-2 -> C-1
320
                                   -> C-2 (CURRENT)
321
                                          -> D-1
322
                                          -> D-2
323
                                   -> C-3
324

  
325
    GROUP 2
326
    -------
327
    All of these flags are optional. Any number of them may be combined.
328

  
329
    SM2_NUMCLASS    Add the numbered menu classes to the menu. If this
330
                    flag is supplied, the "menu-N" and "menu-child-N"
331
                    classes will be added.
332

  
333
    SM2_ALLINFO     Load all fields from the page table of the database.
334
                    This will result in quite a lot of memory being used
335
                    and is not recommended, however it will make keywords,
336
                    descriptions, and other fields available. This data
337
                    is not loaded by default.
338
                    NOTE: This flag must be used on the *FIRST* call to
339
                    show_menu2 *for this menu ID*, or in combination with
340
                    SM2_NOCACHE otherwise it will have no effect.
341

  
342
    SM2_NOCACHE     Do not reuse or store the data read from the database
343
                    between calls to show_menu2.
344

  
345
    SM2_PRETTY      Pretty print the menu HTML with spacing and newlines
346
                    for debugging purposes.
347

  
348
    SM2_BUFFER      Do not output the menu HTML but instead buffer it
349
                    internally and return it as a string from show_menu2.
350

  
351
    SM2_CURRTREE    Exclude all other top level menus from being considered.
352
                    Only items in the current menu tree will be output.
353
                    This can be combined with any of the Group 1 flags as
354
                    necessary.
355

  
356
    SM2_ESCAPE      Call htmlspecialchars on the menu strings. This may be
357
                    required with older installations of WB. By escaping the
358
                    raw database strings, it permits menus to have HTML
359
                    formatting in them that would cause otherwise cause
360
                    pages to fail validation.
361

  
362
    SM2_SHOWHIDDEN  Hidden pages are usually hidden all of the time, including
363
                    when they are active (i.e. current page or a parent page).
364
                    Use private pages for time when you want pages to be
365
                    hidden except when active. However for compatibility with
366
                    release 4.8, supply this flag to enable hidden pages to
367
                    become visible when they are active.
368

  
369
    SM2_XHTML_STRICT	From all links, created by [a] or [ac], the 'target' -
370
					attribute will be removed to preserve the XHTML-Compatibility
371

  
372
	SM2_NO_TITLE	Supress the value of the 'title'-attributes on links which
373
					are created by [a] or [ac] formatted links.
374

  
375
    This parameter also has an extended mode where an associative array of
376
    options is supplied. See the EXTENDED OPTIONS section for details.
377
    Most users will NOT need to use this.
378

  
379
$aItemOpen
380
    Format string to use for creating each individual menu item entry.
381
    A different format string may be used for the very first entry by
382
    supplying a different format string for $aTopItemOpen. When set to
383
    false, it uses the default of '[li][a][menu_title]</a>' to maintain
384
    compatibility with show_menu(). Note however that CSS formatting is
385
    often easier if the classes are added to the <a> tag. Use the format
386
    string of '<li>[ac][menu_title]</a>' for this style of tag.
387

  
388
    This parameter may also be specified as an instance of a formatting
389
    class for the menu. See the section "Formatter" below for details of
390
    the API this class must expose. When a formatter is supplied, all
391
    arguments after $aItemOpen are ignored.
392

  
393
$aItemClose
394
    String used to close each item. Note that this is not a format
395
    string and no keywords will be replaced. When set to false, it uses
396
    the default of '</li>'.
397

  
398
$aMenuOpen
399
    Format string to use for opening a list of menu item entries. A
400
    different format string may be used for the very first menu by
401
    supplying a different format string for $aTopMenuOpen. When set to
402
    false, it uses the default of '[ul]'.
403

  
404
$aMenuClose
405
    String used to close each menu. Note that this is not a format
406
    string and no keywords will be replaced. When set to false, it uses
407
    the default of '</ul>'.
408

  
409
$aTopItemOpen
410
    Format string for the first item. When set to false, it uses the same
411
    format as $aItemOpen.
412

  
413
$aTopMenuOpen
414
    Format string for the first menu. When set to false, it uses the same
415
    format as $aMenuOpen.
416

  
417

  
418

  
419
EXTENDED OPTIONS
420
================
421
The $aOptions parameter is a dual mode parameter. For most users, only the
422
SM2_* flags will be sufficient. However, to access the extra options, it
423
must be supplied as an associative array. Note that the SM2_* flags are
424
still required and must be supplied as 'flags'.
425

  
426
    'flags'     **REQUIRED** These are the flags described in PARAMETERS
427
                above for the $aOptions parameter.
428

  
429
    'notrim'    Specify a number of levels relative to the menu level of
430
                $aStart that will always be displayed. This will cause the
431
                SM2_TRIM flag to be ignored for these levels.
432

  
433
To supply one of these options in addition to the flags, the option array
434
should be created and passed as the $aOptions parameter:
435

  
436
    $options = array('flags' => (SM2_TRIM|...), 'notrim' => 1);
437
    show_menu2(0, SM2_ROOT, SM2_CURR+1, $options);
438

  
439

  
440

  
441
FORMAT STRINGS
442
==============
443
The following tags may be included in the format strings for $aItemOpen and
444
$aMenuOpen and will be replaced with the appropriate text.
445

  
446
[a]             <a> tag (no class):         '<a href="[url]" target="[target]">'
447
[ac]            <a> tag including class:    '<a href="[url]" target="[target]" class="[class]">'
448
[li]            <li> tag including class:   '<li class="[class]">'
449
[ul]            <ul> tag including class:   '<ul class="[class]">'
450
[class]         List of classes for that page
451
[menu_title]    Menu title text (HTML entity escaped unless SM2_NOESCAPE flag is used)
452
[menu_icon_0]	URL poining to an image for display normal - status (from WB2.8.4)
453
[menu_icon_1]	URL poining to an image for display active/hover - status (from WB2.8.4)
454
[page_title]    Page title text (HTML entity escaped unless SM2_NOESCAPE flag is used)
455
[page_icon]		URL poining to an image relating to the current page (from WB2.8.4)
456
[tooltip]       Tooltip caption, normaly shown in title-attribute of links (ab WB2.8.4)
457
[url]           Page URL for the <a> tag
458
[target]        Page target for the <a> tag
459
[page_id]       Page ID of the current menu item
460
[parent]        Page ID of the parent menu item
461
[level]         Page level, the same number as is used for the "menu-N" CSS tag.
462
[sib]           Current menu sibling number
463
[sibCount]      Total number of siblings in this menu
464
[if]            Conditional test (see section CONDITIONAL FORMATTING)
465

  
466
The following tags are only available when the SM2_ALLINFO flag is used.
467

  
468
[description]   Page description
469
[keywords]      Page keywords
470

  
471

  
472

  
473
CONDITIONAL FORMATTING
474
======================
475
The conditional formatting directive takes one of the following forms:
476

  
477
    [if(A){B}]
478
    [if(A){B}else{C}]
479

  
480
    A   Conditional test. See below for more details.
481

  
482
    B   Expression emitted when the if-test is true. This may be any string
483
        that does NOT include the '}' character. It may include any of the
484
        format strings described in the section FORMAT STRINGS with the
485
        exception of the conditional test (because '}' is not permitted).
486

  
487
    C   Expression emitted when the if-test is false. This may be any string
488
        that does NOT include the '}' character. It may include any of the
489
        format strings described in the section FORMAT STRINGS with the
490
        exception of the conditional test (because '}' is not permitted).
491

  
492
The conditional test is a combination of one or more boolean tests.
493
If more than one test is supplied, it must be combined with other tests
494
using either || (boolean OR) or && (boolean AND).
495

  
496
A single test is made up of the left operand, operator and right operand.
497
e.g. X == Y where X is the left operand, == is the operator and Y is the
498
right operand.
499

  
500
    Left operand. It must be one of the following keywords:
501
        class       Test for existence of one of the classes. Only the
502
                    "==" and "!=" operators are permitted. In this case
503
                    these operators have the meaning of "includes"
504
                    instead of "equals".
505
        level       Test against the page level.
506
        sib         Test against the current page sibling number.
507
        sibCount    Test against the number of siblings in the menu.
508
        id          Test against the page id.
509
		target		Test against the target attribute
510

  
511
    Operator. It must be one of the following:
512
        <           Less Than
513
        <=          Less Than Equals
514
        ==          Equals
515
        !=          Not Equal
516
        >=          Greater Than Equals
517
        >           Greater Than
518

  
519
    Right operand. The type of this operand depends on the keyword used
520
    for the left operand:
521
        class       One of the "menu-*" class names as listed in the
522
                    section "OUTPUT".
523
        level       Test the page level against the following values:
524
                      <number>  absolute page level
525
                      root      the root page level
526
                      granny    the grand-parent page level
527
                      parent    the parent page level
528
                      current   the current page level
529
                      child     the child page level
530
        id          Test the page id against the following values:
531
                      <number>  absolute page id
532
                      parent    the parent page id
533
                      current   the current page id
534
        sib         A positive integer, or "sibCount" to test against
535
                    the count of siblings in this menu.
536
        sibCount    A positive integer.
537
		target		A string, containing a possible target
538

  
539
For example, valid tests are expression "exp" is emitted only when the menu item:
540

  
541
    [if(class==menu-expand){exp}]   has a sub-menu
542
    [if(class==menu-first){exp}]    is first item in a menu
543
    [if(class!=menu-first){exp}]    is NOT first item in a menu
544
    [if(class==menu-last){exp}]     is last item in a menu
545
    [if(level==0){exp}]             is at the root
546
    [if(level>0){exp}]              is not at the root
547
    [if(sib==2){exp}]               is the second item in a menu
548
    [if(sibCount>1){exp}]           is in a menu with more than 1 entry
549
    [if(sibCount!=2){exp}]          is in a menu which doesn't have exactly
550
    [if(level>parent){exp}]         is in a sibling menu or child of a sibling
551
    [if(id==parent){exp}]           is the parent of the current page
552
	[if(target==_self){exp}]		if value of target-attribute is '_self'
553

  
554
If an else-clause was added, then the expression for the else would be
555
emitted in all other cases. For example the expression "foo" is emitted
556
whenever the if-test is false, so therefore:
557

  
558
    [if(sib==2){exp}else{foo}]          is NOT the second item in a menu
559
    [if(sibCount>2){exp}else{foo}]      is NOT in a menu with more than 2 entries
560

  
561
For multiple tests, the expression "exp" is emitted only when the menu item:
562

  
563
    [if(sib == 1 || sib > 3){exp}]
564
        [is the first item] OR [is the 4th or larger item] in the menu
565

  
566
    [if(id == current && class == menu-expand){exp}
567
        [is the current item] AND [it has children]
568

  
569
Note that all tests are evaluated in the order listed because:
570
 * there is no short-circuit evaluation (all individual tests are always evaluated)
571
 * there is no grouping of tests (i.e. no support for parenthesis)
572
 * both || and && are considered the same level
573

  
574

  
575

  
576
FORMATTER
577
=========
578
Note: This is an advanced and rarely needed feature!
579

  
580
If you are capable of extensive PHP programming, it is possible to replace the
581
predefined menu formatter that show_menu2 is uses with a custom module. See the
582
include.php file of show_menu2 for an example of how the menu formatter must be
583
written. The API it must use is:
584

  
585
class SM2_Formatter
586
{
587
    // called once before any menu is processed to allow object initialization
588
    function initialize() { }
589

  
590
    // called to open the menu list
591
    function startList($aPage, $aUrl) { }
592

  
593
    // called to open the menu item
594
    function startItem($aPage, $aUrl, $aCurrSib, $aSibCount) { }
595

  
596
    // called to close the menu item
597
    function finishItem() { }
598

  
599
    // called to close the menu list
600
    function finishList() { }
601

  
602
    // called once after all menu has been processed to allow object finalization
603
    function finalize() { }
604

  
605
    // called once after finalize() if the SM2_NOOUTPUT flag is used
606
    function getOutput() { }
607
};
608 0

  
branches/2.8.x/wb/modules/show_menu2/upgrade.php
1
<?php
2
/**
3
 *
4
 * @category        modules
5
 * @package         show_menu2
6
 * @author          Independend-Software-Team
7
 * @author          WebsiteBaker Project
8
 * @copyright       2004-2009, Ryan Djurovich
9
 * @copyright       2009-2011, Website Baker Org. e.V.
10
 * @link            http://www.websitebaker2.org/
11
 * @license         http://www.gnu.org/licenses/gpl.html
12
 * @platform        WebsiteBaker 2.8.x
13
 * @requirements    PHP 5.2.2 and higher
14
 * @version         $Id$
15
 * @filesource      $HeadURL$
16
 * @lastmodified    $Date$
17
 *
18
 */
19

  
20
// Must include code to stop this file being access directly
21
if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
22

  
23
?>
24 0

  
branches/2.8.x/wb/modules/show_menu2/README.de.txt
1
show_menu2, version 4.9
2
=======================
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.
9

  
10
---
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.
14
---
15

  
16

  
17

  
18
INSTALLATION
19
============
20
1. Die aktuelle Version von http://code.jellycan.com/show_menu2/ herunterladen.
21
2. In das Admin-Backend der Website Baker Installation einlogen.
22
3. Erweiterungen -> Module aufrufen.
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.
27

  
28

  
29

  
30
BENUTZUNG VON SHOW_MENU2
31
========================
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.
36

  
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:
40

  
41
    show_menu2();
42

  
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):
46

  
47
    <?php show_menu2(); ?>
48

  
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.
55
Zum Beispiel:
56

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

  
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:
66

  
67
    show_menu2(0, SM2_ROOT, SM2_START);
68

  
69
Oder um beispielsweise bis zu zwei Unterebenen der aktuellen Seite anzuzeigen:
70

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

  
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/
76

  
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/
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

  
101
        <input type="hidden" name="referrer" value="[REFERRER_ID]" />
102

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

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

  
108

  
109
Q:  Mehrsprachig? Das klingt toll. Wie macht man das?
110
A:  http://www.websitebaker2.org/de/hilfe/designerhandbuch/mehrsprachige-webseiten.php
111

  
112

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

  
120

  
121
Q:  How do I use a different class/picture/color/widget for each entry in a menu?
122
A:  Use the [page_id] format string in the $aItemOpen string. Create a unique
123
    class or id for each menu item, then reference that item in your CSS or Javascript
124
    to do whatever you want.
125

  
126
    To add a unique class for each menu item (or similar):
127

  
128
        "<li><a href="[url]" target="[target]" class="[class] p[page_id]">[menu_title]</a>"
129

  
130
        ... creating menu items like ...
131

  
132
        <li><a href="/pages/foo/bar.php" target="_top" class="menu-top p45">Top Menu</a>
133

  
134
        Reference this in your CSS like:
135

  
136
        a.p45 { color: red; }
137

  
138
    To add a unique ID for each menu item (or similar):
139

  
140
        "<li><a id="p[page_id]" href="[url]" target="[target]" class="[class]">[menu_title]</a>"
141

  
142
        ... creating menu items like ...
143

  
144
        <li><a id="p45" href="/pages/foo/bar.php" target="_top" class="menu-top">Top Menu</a>
145

  
146
        Reference this in your CSS like:
147

  
148
        a#p45 { color: red; }
149

  
150
        Note that the ID can only be used if that menu is generated and displayed one time
151
        only on the page (because HTML ID's must be unique within a page).
152

  
153

  
154
FUNKTION
155
========
156

  
157
Der komplette Aufruf und die Vorgabe Parameterwerte für show_menu2 sind wie folgt:
158

  
159
    show_menu2(
160
        $aMenu          = 0,
161
        $aStart         = SM2_ROOT,
162
        $aMaxLevel      = SM2_CURR+1,
163
        $aOptions       = SM2_TRIM,
164
        $aItemOpen      = '[li][a][menu_title]</a>',
165
        $aItemClose     = '</li>',
166
        $aMenuOpen      = '[ul]',
167
        $aMenuClose     = '</ul>',
168
        $aTopItemOpen   = false,
169
        $aTopMenuOpen   = false
170
        )
171

  
172
Im Abschnitt "Parameter" findet sich eine detaillierte Beschreibung jedes
173
einzelnen Parameters.
174
Jeder Parameter muß absolut korrekt verwendet werden. Folgende Regeln können
175
dabei helfen:
176

  
177
    $aMenu = 0 ist in den meisten Anwendungsfällen der beste Wert.
178

  
179
    $aStart muß entweder eine page ID oder ein Wert der mit "SM2_" beginnt sein.
180

  
181
    $aMaxLevel kann nur Werte erhalten, die mit "SM2_" beginnen.
182

  
183
    $aOptions bis auf einige wenige Spezialfälle sind hier nur Werte die mit
184
    "SM2_" beginnen zulässig.
185

  
186
    Alle weiteren Parameter enthalten die (HTML)Tags die die Ausgabe des Menüs
187
    steuern.
188

  
189
    Ab $aItemOpen kann jedem Parameter der Wert false übergeben werden um den
190
    jeweiligen Vorgabewert zu erhalten.
191

  
192
    Dies kann beispielsweise verwendet werden um eine nummerierte Liste zu
193
    erzeugen, während für die einzelnen Menüpunkte trotzdem die Vorgabewerte
194
    Verwendung finden:
195

  
196
        show_menu2(0, SM2_ROOT, SM2_ALL, SM2_ALL, false, false, '<ol>', '</ol>');
197

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

  
200

  
201
HTML-AUSGABE
202
============
203
Die HTML-Ausgabe hängt wesentlich davon ab, welche Parameter an die Funktion übergeben werden.
204
Unabhängig davon werden nachfolgende Klassen grundsätzlich für jedes Menü verwendet, wobei
205
einzelne Menüpunkte, wenn es erforderlich ist, auch mehrere Klassen erhalten können.
206

  
207
    KLASSE          ZUORDNUNG
208
    ------------    -------------------------------------------------------
209
    menu-top        Nur der erste Menüpunkt.
210
    menu-parent     Jeder Hauptmenüpunkt.
211
    menu-current    Nur der Menüpunkt der aktuellen Seite.
212
    menu-sibling    Alle "Geschwister" der aktuellen Seite.
213
    menu-child      Jedes Untermenü der aktuellen Seite.
214
    menu-expand     Jedes Menü das Untermenüs hat.
215
    menu-first      Der erste Punkt eines jeden Menüs oder Untermenüs.
216
    menu-last       Der letzte Punkt eines jeden Menüs oder Untermenüs.
217

  
218
    Folgende Klassen werden nur hinzugefügt, wenn das SM2_NUMCLASS Flag gesetzt
219
    ist:
220

  
221
    menu-N          Jeder Menüpunkt, wobei das N für die ABSOLUTE Menütiefe,
222
                    beginnend bei 0, des jeweiligen Menüpunktes steht.
223
                    Die oberste Ebene ist also immer menu-0, die nächste
224
                    Ebene menu-1 usw.
225
    menu-child-N    Jedes Untermenü der aktuellen Seiten, wobei das N für die
226
                    RELATIVE Tiefe des Untermenüs, beginnend bei 0, steht.
227

  
228
Beispiel einer HTML-Ausgabe:
229

  
230
<ul class="menu-top menu-0">
231
  <li class="menu-0 menu-first">  ... </li>
232
  <li class="menu-0 menu-expand menu-parent">  ...
233
  <ul class="menu-1">
234
    <li class="menu-1 menu-expand menu-first">  ...
235
    <ul class="menu-2">
236
      <li class="menu-2 menu-first">  ...
237
      <li class="menu-2 menu-last">  ...
238
    </ul>
239
    </li>
240
    <li class="menu-1 menu-expand menu-parent">  ...
241
    <ul class="menu-2">
242
      <li class="menu-2 menu-expand menu-current menu-first">  ...      ** CURRENT PAGE **
243
      <ul class="menu-3">
244
        <li class="menu-3 menu-child menu-child-0 menu-first">  ...
245
        <ul class="menu-4">
246
          <li class="menu-4 menu-child menu-child-1 menu-first">  ... </li>
247
          <li class="menu-4 menu-child menu-child-1 menu-last">  ... </li>
248
        </ul>
249
        </li>
250
        <li class="menu-3 menu-child menu-child-0 menu-last">  ... </li>
251
      </ul>
252
      </li>
253
      <li class="menu-2 menu-sibling menu-last">  ... </li>
254
    </ul>
255
    </li>
256
    <li class="menu-1">  ... </li>
257
    <li class="menu-1 menu-expand menu-last">  ...
258
    <ul class="menu-2">
259
      <li class="menu-2 menu-first menu-last">  ... </li>
260
    </ul>
261
    </li>
262
  </ul>
263
  </li>
264
  <li class="menu-0 menu-last">  ... </li>
265
</ul>
266

  
267

  
268
PARAMETER
269
=========
270
$aMenu
271
    Nummer des Menüs. Diese ist nützlich um mehrere Menüs auf einer Seite zu
272
    verwenden.
273
    Menü Nummer 0 ist das Vorgabemenü der aktuellen Seite, SM2_ALLMENU gibt alle
274
    im System verwendeten Menüs zurück.
275

  
276
$aStart
277
    Gibt an, ab welcher Ebene die Erzeugung des Menüs beginnen soll. In den
278
    meisten Fällen wird dies die oberste Ebene des anzuzeigenden Menüs sein. Es
279
    kann einer der folgenden Werte verwendet werden:
280

  
281
        SM2_ROOT+N  Beginnt N Ebenen unterhalb der obersten Ebene, z.B.:
282
                    SM2_ROOT      Beginnt auf der obersten Ebene
283
                    SM2_ROOT+1    Beginnt eine Ebene unterhalb der obersten Ebene
284
                    SM2_ROOT+2    Beginnt zwei Ebenen unterhalb der obersten Ebene
285

  
286
        SM2_CURR+N  Beginnt N Ebenen unterhalb der aktuellen Ebene, z.B.:
287
                    SM2_CURR      Beginnt auf der aktuellen Ebene. Alle Geschwister
288
                                  der aktuellen Ebene
289
                    SM2_CURR+1    Beginnt eine Ebene unterhalb der aktuellen Ebene
290
                                  mit allen Unterebenen
291

  
292
        page_id     Verwendet die Seite mit der angegebenen page id als Elternelement.
293
                    Alle Untermenüs dieser Seite werden angezeigt.
294
                    (Die page id kann ermittelt werden, wenn man die Seite im
295
                    Admin-Backend editiert, sie steht dann in der Adresszeile des
296
                    Browsers: http://SITE/admin/pages/modify.php?page_id=35
297

  
298
$aMaxLevel
299
    Die maximale Anzahl der Ebenen die angezeigt werden. Die Anzeige
300
    beginnt ab der in $aStart festgelegten Ebene, bis hin zu der hier
301
    festgelegten Ebene.
302

  
303
        SM2_ALL      Keine Beschränkung, alle Ebenen werden angezeigt
304

  
305
        SM2_CURR+N   Zeigt immer die aktuelle Seite + N Ebenen.
306
                     SM2_CURR      Aktuelle Ebene (keine Unterebene)
307
                     SM2_CURR+3    Alle übergeordneten + aktuelle + 3 Unterebenen
308

  
309
        SM2_START+N  Beginnt immer auf der Startebene + N Ebenen.
310
                     Die Ebenen werden unabhängig davon angezeigt,egal
311
                     auf welcher Ebene sich die aktuelle Seite befindet.
312
                     SM2_START     Eine einzelne Ebene ab der Startebene.
313
                     SM2_START+1   Startebene + eine Ebene darunter.
314

  
315
        SM2_MAX+N    Zeigt höchstens N Ebenen ab der Startebene.
316
                     Ebenen unterhalb der aktuellen Ebene werden nicht angezeigt.
317
                     SM2_MAX       Nur die Startebene (gleiche Wirkung wie SM2_START)
318
                     SM2_MAX+1     Die Startebene und eine Ebene darunter.
319

  
320
$aOptions
321
    Spezielle Flags für verschiedene Menügenerierungs Optionen. Sie können mittels
322
    einer ODER Verknüpfung (|) miteinander kombiniert werden. Um beispielsweise
323
    sowohl TRIM als auch PRETTY zu definieren, verwendet man: (SM2_TRIM | SM2_PRETTY).
324

  
325
    GROUP 1
326
    -------
327
    Aus dieser Gruppe muss stets genau ein Flag angegeben werden. Diese Flags
328
    bestimmen auf welche Weise die Geschwisterelemente im Menübaum in der
329
    Ausgabe unterdrückt werden.
330

  
331
    SM2_ALL         Zeigt alle Zweige des Menübaums
332
                        A-1 -> B-1
333
                            -> B-2 -> C-1
334
                                   -> C-2 (CURRENT)
335
                                          -> D-1
336
                                          -> D-2
337
                                   -> C-3
338
                        A-2 -> B-3
339
                            -> B-4
340

  
341
    SM2_TRIM        Zeigt alle Geschwistermenüs der Seite im aktuellen Pfad.
342
                    Alle Untermenüs von Elemnten die sich nicht im Pfad befinden
343
                    werden entfernt.
344
                        A-1 -> B-1
345
                            -> B-2 -> C-1
346
                                   -> C-2 (CURRENT)
347
                                          -> D-1
348
                                          -> D-2
349
                                   -> C-3
350
                        A-2
351

  
352
    SM2_CRUMB       Zeigt den Breadcrumb Pfad des Menüs an, also den aktuellen
353
                    Menüpunkt sowie alle Menüpunkte die dorthin führen.
354
                        A-1 -> B-2 -> C-2 (CURRENT)
355

  
356
    SM2_SIBLING     Wie SM2_TRIM, es werden aber nur Geschwistermenüs der aktuellen
357
                    Seite angezeigt. Alle anderen Punkte werden unterdrückt.
358
                        A-1 -> B-2 -> C-1
359
                                   -> C-2 (CURRENT)
360
                                          -> D-1
361
                                          -> D-2
362
                                   -> C-3
363

  
364
    GROUP 2
365
    -------
366
    Diese Flags sind optional, sie können in beliebiger Anzahl kombiniert werden.
367

  
368
    SM2_NUMCLASS    Fügt die nummerierten Menüklassen "menu-N" und
369
                    "menu-child-N hinzu.
370

  
371
    SM2_ALLINFO     Lädt alle Felder aus der Seitentabelle der Datenbank.
372
                    Dies verursacht einen ziemlich hohen Speicherverbauch und sollte
373
                    deshalb nur mit Bedacht verwendet werden.
374
                    Dadurch werden z.B. die Keywords, die Seitenbeschreibung sowie
375
                    all die anderen Informationen verfügbar, die normalerweise nicht
376
                    geladen werden.
377
                    Bitte beachten: dieses Flag muss beim ERSTEN Aufruf von schow_menu2
378
                    für die jeweilige Menü ID verwendet werden, oder in Verbindung
379
                    mit SM2_NOCACHE, sonst zeigt es keine Wirkung.
380

  
381
    SM2_NOCACHE     Die aus der Datenbank gelesenen Daten werden bei erneutem Aufruf von
382
                    show_menu2 nicht wiederverwendet sondern erneut aus der Datenbank
383
                    gelesen.
384

  
385
    SM2_PRETTY      Bringt die HTML-Ausgabe des Menüs mittels Leerzeichen und
386
                    Zeilenumbrüchen in eine gut lesbare Form. Das ist besonders
387
                    nützlich beim Debuggen der Menüausgabe.
388

  
389
    SM2_BUFFER      Gibt den HTML-Code nicht direkt aus, sondern speichert ihn intern
390
                    zwischen und gibt ihn als kompletten String aus.
391

  
392
    SM2_CURRTREE    Schliesst alle anderen Toplevelmenüs von der Betrachtung aus.
393
                    Es werden nur Menüpunkte des aktuellen Menüzweiges dargestellt.
394
                    Dieses Flag kann bei Bedarf mit jedem Flag aus der Gruppe 1
395
                    kombiniert werden.
396

  
397
    SM2_ESCAPE      Wendet htmlspecialchars auf den Menüstring an.
398
                    Dies kann bei älteren Websitebaker Installationen erforderlich
399
                    sein um eine valide HTML Ausgabe zu erzeugen.
400

  
401
    SM2_SHOWHIDDEN  Hidden pages are usually hidden all of the time, including
402
                    when they are active (i.e. current page or a parent page).
403
                    Use private pages for time when you want pages to be
404
                    hidden except when active. However for compatibility with
405
                    release 4.8, supply this flag to enable hidden pages to
406
                    become visible when they are active.
407

  
408
    SM2_XHTML_STRICT	Stellt die XHTML-Kompatibilität der Links sicher indem
409
					in per [a] oder [ac] formatierten Links die Targetangabe
410
					entfernt und das Argument title="[page_titel]" eingefügt
411
					wird. Bei manuell zusammengestellten Links ist der Designer
412
					selbst für die XHTML-Konformität zuständig.
413

  
414
	SM2_NO_TITLE	Unterdrückt die Ausgabe des Inhaltes des Title-Attributes
415
					bei [a] oder [ac] formatierten links. Im XHTML-Strikt Modus
416
                    wird 'title' mit einen &nbsp; ausgegeben.
417

  
418
    Für diesen Parameter gibt es auch einen erweiterten Modus, bei dem die Optionen
419
    als assoziatives Array übergeben werden. Näheres dazu im Abschnitt ERWEITERTE
420
    OPTIONEN. Für die meisten Anwendungsfälle wird dies jedoch NICHT benötigt.
421

  
422
$aItemOpen
423
    Dies legt den Formatstring fest, mit dem jeder einzelne Menüeintrag begonnen
424
    wird. Für den allerersten Menüeintrag kann mittels $aTopItemOpen ein anderer
425
    Formatstring definiert werden.
426
    Wenn dieser Parameter auf false gesetzt wird, wird der Vorgabe Formatstring
427
    '[li][a][menu_title]</a>' verwendet um die Kompatibilität zur Website Baker
428
    Standardfunktion show_menu() zu gewährleisten.
429
    Da die Formatierung mittels CSS-Klassen oftmals einfacher ist, wenn sie auf den
430
    <a> tag angewendet werden, empfiehlt es sich hier folgenden Formatstring zu
431
    verwenden: '<li>[ac][menu_title]</a>'.
432

  
433
    Dieser Parameter kann auch als Instanz eine Formatierungklasse für das Menü
434
    verwendet werden. Die nähere Beschreibung dazu findet sich im Abschnitt FORMATTER.
435
    Wenn hier ein Formatter angegeben wird, werden alle Argumente
436
    nach $aItemOpen ignoriert.
437

  
438
$aItemClose
439
    Dieser String schließt jeden Menüpunkt ab.
440
    Bitte beachten: dies ist kein Formatstring und es werden keine Schlüsselworte
441
    ersetzt!
442
    Wenn dieser Parameter auf false gesetzt ist, wird die Vorgabe '</li>' verwendet.
443

  
444
$aMenuOpen
445
    Mit diesem Formatstring wird eine Liste von Menüeinträgen geöffnet. Für das erste
446
    Menü kann mittels $aTopMenuOpen ein davon abweichender Formatstring definiert
447
    werden.
448
    Wenn dieser Parameter auf false gesetzt ist wird der Vorgabewert '[ul]'
449
    verwendet.
450

  
451
$aMenuClose
452
    Dieser String schließt jedes Menü ab.
453
    Bitte beachten: dies ist kein Formatstring und es werden keine Schlüsselworte
454
    ersetzt!
455
    Wenn dieser Parameter auf false gesetzt ist, wird die Vorgabe '</ul>' verwendet.
456

  
457
$aTopItemOpen
458
    Der Formatstring für den allerersten Menüpunkt. Wenn dieser Parameter auf false
459
    gesetzt wird, wird der selbe Formatstring wie bei $aItemOpen verwendet.
460

  
461
$aTopMenuOpen
462
    Der Formatstring für das erste Menü. Wenn dieser Parameter auf false
463
    gesetzt wird, wird der selbe Formatstring wie bei $aMenuOpen verwendet.
464

  
465

  
466

  
467
ERWEITERTE OPTIONEN
468
===================
469
Der Parameter $aOptions kann auf zweierlei Arten verwendet werden. Zum einen, wie oben
470
im Abschnitt PARAMETER beschrieben, diese Art sollte für die allermeisten
471
Anwendungsfälle ausreichen. Um allerdings in speziellen Fällen die Sonderoptionen
472
ansprechen zu können, müssen die erforderlichen Werte als assoziatives Array
473
bereitgestellt werden.
474
Bitte beachten: Die SM2_* Flags sind auch hierbei erforderlich und müßen als 'flags'
475
übergeben werden.
476

  
477
    'flags'     **ZWINGEND ERFORDELICH** Dies sind die Flags die oben im Abschnitt
478
                PARAMETER unter $aOptions beschrieben wurden.
479

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

  
484
Um dieses Array zu verwenden, empfiehlt es sich es erst anzulegen und dann den
485
$aOptions parameter mit dem angelegten Array zu beliefern:
486

  
487
    $options = array('flags' => (SM2_TRIM|...), 'notrim' => 1);
488
    show_menu2(0, SM2_ROOT, SM2_CURR+1, $options);
489

  
490

  
491

  
492
FORMAT STRINGS
493
==============
494
Die folgenden Tags können in den Formatstrings für $aItemOpen und $aMenuOpen
495
verwendet werden und sollen durch den entsprechenden Text ersetzt werden.
496

  
497
[a]             <a> tag ohne Klasse:   '<a href="[url]" target="[target]">'
498
[ac]            <a> tag mit Klasse:    '<a href="[url]" target="[target]" class="[class]">'
499
[li]            <li> tag mit Klasse:   '<li class="[class]">'
500
[ul]            <ul> tag mit Klasse:   '<ul class="[class]">'
501
[class]         Liste der Klassen für diese Seite
502
[menu_title]    Text des Menütitel
503
                (HTML entity escaped ausser das SM2_NOESCAPE Flag ist gesetzt)
504
[menu_icon_0]	die URL zu einer Bilddatei mit normal - Darstellung (ab WB2.8.4)
505
[menu_icon_1]	die URL zu einer Bilddatei mit active/hover - Darstellung (ab WB2.8.4)
506
[page_title]    text des Seitentitel
507
                (HTML entity escaped ausser das SM2_NOESCAPE Flag ist gesetzt)
508
[page_icon]		die URL zu einer seitenbezogenen Bilddatei (ab WB2.8.4)
509
[tooltip]       Tooltip-Text, der normal im title-Attribut der Links ausgegeben wird (ab WB2.8.4)
510
[url]           die URL der Seiten für den <a> tag
511
[target]        das Seitenziel für den <a> tag
512
[page_id]       die Page ID des aktuellen Menüpunktes.
513
[parent]        die Page ID des übergeordneten Menüpunktes.
514
[level]         die Seitenebene,
515
                dies ist die gleiche Zahl die im "menu-N" CSS tag verwendet wird.
516
[sib]           Anzahl der Geschwister des aktuellen Menüpunktes.
517
[sibCount]      Anzahl aller Geschwister in diesem Menü.
518
[if]            Bedingung (Details hierzu im Abschnitt "Bedingte Formatierung')
519

  
520
Folgende tags sind NUR verfügbar, wenn das SM2_ALLINFO Flag gesetzt ist.
521

  
522
[description]   Seitenbeschreibung
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff