| 
      1
     | 
    
      <?php
 
     | 
  
  
    | 
      2
     | 
    
      
 
     | 
  
  
    | 
      3
     | 
    
      // $Id: legacy.php 915 2009-01-21 19:27:01Z Ruebenwurzel $
 
     | 
  
  
    | 
      4
     | 
    
      
 
     | 
  
  
    | 
      5
     | 
    
      /*
 
     | 
  
  
    | 
      6
     | 
    
          show_menu2: show_menu replacement for Website Baker 
 
     | 
  
  
    | 
      7
     | 
    
          Copyright (C) 2006-2009, Brodie Thiesfield
 
     | 
  
  
    | 
      8
     | 
    
      
 
     | 
  
  
    | 
      9
     | 
    
          This program is free software; you can redistribute it and/or
 
     | 
  
  
    | 
      10
     | 
    
          modify it under the terms of the GNU General Public License
 
     | 
  
  
    | 
      11
     | 
    
          as published by the Free Software Foundation; either version 2
 
     | 
  
  
    | 
      12
     | 
    
          of the License, or (at your option) any later version.
 
     | 
  
  
    | 
      13
     | 
    
      
 
     | 
  
  
    | 
      14
     | 
    
          This program is distributed in the hope that it will be useful,
 
     | 
  
  
    | 
      15
     | 
    
          but WITHOUT ANY WARRANTY; without even the implied warranty of
 
     | 
  
  
    | 
      16
     | 
    
          MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
     | 
  
  
    | 
      17
     | 
    
          GNU General Public License for more details.
 
     | 
  
  
    | 
      18
     | 
    
      
 
     | 
  
  
    | 
      19
     | 
    
          You should have received a copy of the GNU General Public License
 
     | 
  
  
    | 
      20
     | 
    
          along with this program; if not, write to the Free Software
 
     | 
  
  
    | 
      21
     | 
    
          Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  
 
     | 
  
  
    | 
      22
     | 
    
          02110-1301, USA.
 
     | 
  
  
    | 
      23
     | 
    
      */
 
     | 
  
  
    | 
      24
     | 
    
      
 
     | 
  
  
    | 
      25
     | 
    
      /*
 
     | 
  
  
    | 
      26
     | 
    
          This file provides backward compatibility between show_menu2 and the
 
     | 
  
  
    | 
      27
     | 
    
          old functions show_menu() and menu(). Note that it is highly recommended 
 
     | 
  
  
    | 
      28
     | 
    
          for you to update your templates to use show_menu2 directly.
 
     | 
  
  
    | 
      29
     | 
    
       */    
 
     | 
  
  
    | 
      30
     | 
    
      
 
     | 
  
  
    | 
      31
     | 
    
      /* ----------------------------------------------------------------------------
 
     | 
  
  
    | 
      32
     | 
    
         show_menu
 
     | 
  
  
    | 
      33
     | 
    
         
 
     | 
  
  
    | 
      34
     | 
    
       From: http://forum.websitebaker.org/index.php/topic,2251.msg13978.html#msg13978  
 
     | 
  
  
    | 
      35
     | 
    
       
 
     | 
  
  
    | 
      36
     | 
    
       * By calling it multiple times, you can have one menu just
 
     | 
  
  
    | 
      37
     | 
    
       * showing the root level, one for the sub-pages, and so on
 
     | 
  
  
    | 
      38
     | 
    
       * The order of the arguments has been changed compared
 
     | 
  
  
    | 
      39
     | 
    
       * to the page_menu() function, so read carefully the list
 
     | 
  
  
    | 
      40
     | 
    
       * of arguments!
 
     | 
  
  
    | 
      41
     | 
    
       * To just display the standard menu, use
 
     | 
  
  
    | 
      42
     | 
    
       * <?php show_menu(); ?> within your template's html code.
 
     | 
  
  
    | 
      43
     | 
    
       * You don't normally need anymore than the first four arguments.
 
     | 
  
  
    | 
      44
     | 
    
       * Usual calls would be (inside php code!)
 
     | 
  
  
    | 
      45
     | 
    
       * show_menu(1,0,-1,false); - displays the complete page tree
 
     | 
  
  
    | 
      46
     | 
    
       * show_menu(1,1,1); - show only first sub level
 
     | 
  
  
    | 
      47
     | 
    
       * show_menu(1,1,-1); -    show an expanding/collapsing menu tree starting at level 1
 
     | 
  
  
    | 
      48
     | 
    
       * Have fun experimenting!
 
     | 
  
  
    | 
      49
     | 
    
       *
 
     | 
  
  
    | 
      50
     | 
    
       * Full list of arguments:
 
     | 
  
  
    | 
      51
     | 
    
       * 1. $menu_number:   With activitated "multiple menu" feature
 
     | 
  
  
    | 
      52
     | 
    
       *                  you can choose which menu will be displayed
 
     | 
  
  
    | 
      53
     | 
    
       *                  default: 1
 
     | 
  
  
    | 
      54
     | 
    
       * 2. $start_level: The depth level of the root of the displayed
 
     | 
  
  
    | 
      55
     | 
    
       *               menu tree. Defaults to '0', which is the top level.
 
     | 
  
  
    | 
      56
     | 
    
       *                  '1' will show all pages starting from the first sub level.
 
     | 
  
  
    | 
      57
     | 
    
       * 3. $recurse:     Gives the maximum number of levels to be displayed. Default
 
     | 
  
  
    | 
      58
     | 
    
       *                  is '-1' which means 'all'.
 
     | 
  
  
    | 
      59
     | 
    
       * 4. $collapse:    Specifies, whether the menu tree shall be
 
     | 
  
  
    | 
      60
     | 
    
       *               expandable/collapsible (if set to 'true')
 
     | 
  
  
    | 
      61
     | 
    
       *               or complete (all pages being displayed) if set to 'false'
 
     | 
  
  
    | 
      62
     | 
    
       * 5. $item_template: Gives the possibility to specify the html code that is
 
     | 
  
  
    | 
      63
     | 
    
       *                  displayed before displaying sub-pages
 
     | 
  
  
    | 
      64
     | 
    
       * 6. $item_footer: The html code to appear after sub-pages were displayed.
 
     | 
  
  
    | 
      65
     | 
    
       * 7. $menu_header: The html code to appear before the entire menu code and each
 
     | 
  
  
    | 
      66
     | 
    
       *               sub tree.
 
     | 
  
  
    | 
      67
     | 
    
       * 8. $menu_footer: The html code to appear after the entire menu code and each
 
     | 
  
  
    | 
      68
     | 
    
       *               sub tree.
 
     | 
  
  
    | 
      69
     | 
    
       * 9. $default_class: The (CSS) class of every menu item except the currently viewed page
 
     | 
  
  
    | 
      70
     | 
    
       * 10. $current_class: The class of the currently viewed page
 
     | 
  
  
    | 
      71
     | 
    
       * 11. $parent:    (used internally) The page_id of the menu's root node, defaults is '0' (root level)
 
     | 
  
  
    | 
      72
     | 
    
       */
 
     | 
  
  
    | 
      73
     | 
    
       
 
     | 
  
  
    | 
      74
     | 
    
      class SM2_ShowMenuFormatter
 
     | 
  
  
    | 
      75
     | 
    
      {
     | 
  
  
    | 
      76
     | 
    
          var $output;
 
     | 
  
  
    | 
      77
     | 
    
          var $itemTemplate;
 
     | 
  
  
    | 
      78
     | 
    
          var $itemFooter;
 
     | 
  
  
    | 
      79
     | 
    
          var $menuHeader;
 
     | 
  
  
    | 
      80
     | 
    
          var $menuFooter;
 
     | 
  
  
    | 
      81
     | 
    
          var $defaultClass;
 
     | 
  
  
    | 
      82
     | 
    
          var $currentClass;
 
     | 
  
  
    | 
      83
     | 
    
          
 
     | 
  
  
    | 
      84
     | 
    
          function output($aString) {
     | 
  
  
    | 
      85
     | 
    
              if ($this->flags & SM2_BUFFER) {
     | 
  
  
    | 
      86
     | 
    
                  $this->output .= $aString;
 
     | 
  
  
    | 
      87
     | 
    
              }
 
     | 
  
  
    | 
      88
     | 
    
              else {
     | 
  
  
    | 
      89
     | 
    
                  echo $aString;
 
     | 
  
  
    | 
      90
     | 
    
              }
 
     | 
  
  
    | 
      91
     | 
    
          }
 
     | 
  
  
    | 
      92
     | 
    
          function initialize() { $this->output = ''; }
     | 
  
  
    | 
      93
     | 
    
          function startList($aPage, $aUrl) { 
     | 
  
  
    | 
      94
     | 
    
              echo $this->menuHeader;
 
     | 
  
  
    | 
      95
     | 
    
          }
 
     | 
  
  
    | 
      96
     | 
    
          function startItem($aPage, $aUrl, $aCurrSib, $aSibCount) { 
     | 
  
  
    | 
      97
     | 
    
              // determine the class string to use
 
     | 
  
  
    | 
      98
     | 
    
              $thisClass = $this->defaultClass;
 
     | 
  
  
    | 
      99
     | 
    
              if ($aPage['page_id'] == PAGE_ID) {
     | 
  
  
    | 
      100
     | 
    
                  $thisClass = $this->currentClass;
 
     | 
  
  
    | 
      101
     | 
    
              }
 
     | 
  
  
    | 
      102
     | 
    
              
 
     | 
  
  
    | 
      103
     | 
    
              // format and display this item
 
     | 
  
  
    | 
      104
     | 
    
              $item = str_replace( 
 
     | 
  
  
    | 
      105
     | 
    
                      array(
 
     | 
  
  
    | 
      106
     | 
    
                          '[a]','[/a]','[menu_title]','[page_title]','[url]',
 
     | 
  
  
    | 
      107
     | 
    
                          '[target]','[class]'
 
     | 
  
  
    | 
      108
     | 
    
                          ),
 
     | 
  
  
    | 
      109
     | 
    
                      array(
 
     | 
  
  
    | 
      110
     | 
    
                          "<a href='$aUrl' target='".$aPage['target']."'>", '</a>',
 
     | 
  
  
    | 
      111
     | 
    
                          $aPage['menu_title'], $aPage['page_title'], $aUrl, 
 
     | 
  
  
    | 
      112
     | 
    
                          $aPage['target'], $thisClass
 
     | 
  
  
    | 
      113
     | 
    
                          ),
 
     | 
  
  
    | 
      114
     | 
    
                      $this->itemTemplate);
 
     | 
  
  
    | 
      115
     | 
    
              echo $item;
 
     | 
  
  
    | 
      116
     | 
    
          }
 
     | 
  
  
    | 
      117
     | 
    
          function finishItem() { 
     | 
  
  
    | 
      118
     | 
    
              echo $this->itemFooter;
 
     | 
  
  
    | 
      119
     | 
    
          }
 
     | 
  
  
    | 
      120
     | 
    
          function finishList() { 
     | 
  
  
    | 
      121
     | 
    
              echo $this->menuFooter;
 
     | 
  
  
    | 
      122
     | 
    
          }
 
     | 
  
  
    | 
      123
     | 
    
          function finalize() { }
     | 
  
  
    | 
      124
     | 
    
          function getOutput() {
     | 
  
  
    | 
      125
     | 
    
              return $this->output;
 
     | 
  
  
    | 
      126
     | 
    
          }
 
     | 
  
  
    | 
      127
     | 
    
      }
 
     | 
  
  
    | 
      128
     | 
    
      
 
     | 
  
  
    | 
      129
     | 
    
      function show_menu(
 
     | 
  
  
    | 
      130
     | 
    
          $aMenu          = 1, 
 
     | 
  
  
    | 
      131
     | 
    
          $aStartLevel    = 0, 
 
     | 
  
  
    | 
      132
     | 
    
          $aRecurse       = -1, 
 
     | 
  
  
    | 
      133
     | 
    
          $aCollapse      = true,
 
     | 
  
  
    | 
      134
     | 
    
          $aItemTemplate  = '<li><span[class]>[a][menu_title][/a]</span>',
 
     | 
  
  
    | 
      135
     | 
    
          $aItemFooter    = '</li>',
 
     | 
  
  
    | 
      136
     | 
    
          $aMenuHeader    = '<ul>',
 
     | 
  
  
    | 
      137
     | 
    
          $aMenuFooter    = '</ul>',
 
     | 
  
  
    | 
      138
     | 
    
          $aDefaultClass  = ' class="menu_default"',
 
     | 
  
  
    | 
      139
     | 
    
          $aCurrentClass  = ' class="menu_current"',
 
     | 
  
  
    | 
      140
     | 
    
          $aParent        = 0
 
     | 
  
  
    | 
      141
     | 
    
          )
 
     | 
  
  
    | 
      142
     | 
    
      {
     | 
  
  
    | 
      143
     | 
    
          static $formatter;
 
     | 
  
  
    | 
      144
     | 
    
          if (!isset($formatter)) {
     | 
  
  
    | 
      145
     | 
    
              $formatter = new SM2_ShowMenuFormatter;
 
     | 
  
  
    | 
      146
     | 
    
          }
 
     | 
  
  
    | 
      147
     | 
    
          
 
     | 
  
  
    | 
      148
     | 
    
          $formatter->itemTemplate  = $aItemTemplate;
 
     | 
  
  
    | 
      149
     | 
    
          $formatter->itemFooter    = $aItemFooter;  
 
     | 
  
  
    | 
      150
     | 
    
          $formatter->menuHeader    = $aMenuHeader;  
 
     | 
  
  
    | 
      151
     | 
    
          $formatter->menuFooter    = $aMenuFooter;  
 
     | 
  
  
    | 
      152
     | 
    
          $formatter->defaultClass  = $aDefaultClass;
 
     | 
  
  
    | 
      153
     | 
    
          $formatter->currentClass  = $aCurrentClass;
 
     | 
  
  
    | 
      154
     | 
    
          
 
     | 
  
  
    | 
      155
     | 
    
          $start = SM2_ROOT + $aStartLevel;
 
     | 
  
  
    | 
      156
     | 
    
          if ($aParent != 0) {
     | 
  
  
    | 
      157
     | 
    
              $start = $aParent;
 
     | 
  
  
    | 
      158
     | 
    
          }
 
     | 
  
  
    | 
      159
     | 
    
      
 
     | 
  
  
    | 
      160
     | 
    
          $maxLevel = 0;
 
     | 
  
  
    | 
      161
     | 
    
          if ($aRecurse == 0) {
     | 
  
  
    | 
      162
     | 
    
              return;
 
     | 
  
  
    | 
      163
     | 
    
          }
 
     | 
  
  
    | 
      164
     | 
    
          if ($aRecurse < 0) {
     | 
  
  
    | 
      165
     | 
    
              $maxLevel = SM2_ALL;
 
     | 
  
  
    | 
      166
     | 
    
          }
 
     | 
  
  
    | 
      167
     | 
    
          else {
     | 
  
  
    | 
      168
     | 
    
              $maxLevel = SM2_START + $aRecurse - 1;
 
     | 
  
  
    | 
      169
     | 
    
          }
 
     | 
  
  
    | 
      170
     | 
    
          
 
     | 
  
  
    | 
      171
     | 
    
          $flags = $aCollapse ? SM2_TRIM : SM2_ALL;
 
     | 
  
  
    | 
      172
     | 
    
          
 
     | 
  
  
    | 
      173
     | 
    
          // special case for default case
 
     | 
  
  
    | 
      174
     | 
    
          if ($aStartLevel == 0 && $aRecurse == -1 && $aCollapse) {
     | 
  
  
    | 
      175
     | 
    
              $maxLevel = SM2_CURR + 1;
 
     | 
  
  
    | 
      176
     | 
    
          }
 
     | 
  
  
    | 
      177
     | 
    
      
 
     | 
  
  
    | 
      178
     | 
    
          show_menu2($aMenu, $start, $maxLevel, $flags, $formatter);
 
     | 
  
  
    | 
      179
     | 
    
      }
 
     | 
  
  
    | 
      180
     | 
    
      
 
     | 
  
  
    | 
      181
     | 
    
      function page_menu(
 
     | 
  
  
    | 
      182
     | 
    
          $aParent = 0, 
 
     | 
  
  
    | 
      183
     | 
    
          $menu_number = 1, 
 
     | 
  
  
    | 
      184
     | 
    
          $item_template = '<li[class]>[a][menu_title][/a]</li>', 
 
     | 
  
  
    | 
      185
     | 
    
          $menu_header = '<ul>', 
 
     | 
  
  
    | 
      186
     | 
    
          $menu_footer = '</ul>', 
 
     | 
  
  
    | 
      187
     | 
    
          $default_class = ' class="menu_default"', 
 
     | 
  
  
    | 
      188
     | 
    
          $current_class = ' class="menu_current"', 
 
     | 
  
  
    | 
      189
     | 
    
          $recurse = LEVEL    // page['level']
 
     | 
  
  
    | 
      190
     | 
    
          ) 
 
     | 
  
  
    | 
      191
     | 
    
      {
     | 
  
  
    | 
      192
     | 
    
          show_menu($menu_number, 0, $recurse+2, true, $item_template, '', 
 
     | 
  
  
    | 
      193
     | 
    
              $menu_header, $menu_footer, $default_class, $current_class, $aParent);
 
     | 
  
  
    | 
      194
     | 
    
      }
 
     | 
  
  
    | 
      195
     | 
    
      
 
     | 
  
  
    | 
      196
     | 
    
      ?>
 
     |