<?php // $Id: menu.php,v 1.2 2002/11/08 10:24:51 magicx Exp $ $Name:  $
// ----------------------------------------------------------------------
// POST-NUKE Content Management System
// Copyright (C) 2001 by the Post-Nuke Development Team.
// http://www.postnuke.com/
// ----------------------------------------------------------------------
// Based on:
// PHP-NUKE Web Portal System - http://phpnuke.org/
// Thatware - http://thatware.org/
// ----------------------------------------------------------------------
// LICENSE
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License (GPL)
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// To read the license please visit http://www.gnu.org/copyleft/gpl.html
// ----------------------------------------------------------------------
// Original Author of file: Francisco Burzi
// Purpose of file:
// ----------------------------------------------------------------------
// ChangeLog
//  November 10th: Allow to place multiple links underneath an image
//                 (Commentented out for now, uncomment it after the
//                  feature-freeze is off).
// ----------------------------------------------------------------------

   class user_menu_object
   {
      var $title_file;
      var $title_text;
      var $help_file;
      var $help_text;
      var $detail_menu  = true;
      var $graphic_menu = true;
      var $nb_column    = 6;
      var $options      = array();

      function user_menu_object($url,$text)
      {
         $this->title_file = $url;
         $this->title_text = $text;
      }

      function set_help($url,$text)
      {
         if (!ereg('/',$url)) $url = 'manual/'.$url;
         $hlpfile = $url;
         $this->help_file = $url;
         $this->help_text = $text;
      }

      function set_detail($top)
      {
         $this->detail_menu = $top;
      }

      function set_graphic($top)
      {
         $this->graphic_menu = $top;
      }

      function add_option($url,$text,$image='')
      {
         $current = count($this->options);
         $this->options[$current]['url'] = $url;
         $this->options[$current]['text'] = $text;
         $this->options[$current]['image'] = $image;
      }

      function draw_option_cell($url,$text,$image='')
      {
         //modified by Chris van de Steeg to have multiple links under
         //an image
         echo  '<td align="center" valign=\"top\">';
         if ($url!='' && !is_array($url)) echo '<a href="'.$url.'">';
         if ($image==''){
            if (is_array($url)){
                for ($i=0;$i<count($url);$i++)
                    echo "<a href=\"".$url[$i]."\">".$text[$i]."</a><br/>";
            } else
                echo $text;
         } else
            echo '<img src="'.$image.'" border="0" alt="'.$text.'">';
         if ($url!='' && !is_array($url)) echo '</a>';
         echo  '<br><br></td>'."\n";
         //END modification
      }

      function draw_options_graphic()
      {
         $nb_total = count($this->options);
         $i = 0;
         while ($i<$nb_total)
         {
            $j = 0;
            $t = array();
            echo '<tr>'."\n";
            while (($j<$this->nb_column)and($i<$nb_total))
            {
               $this->draw_option_cell($this->options[$i]['url'],$this->options[$i]['text'],$this->options[$i]['image']);
               $t[] = $this->options[$i];
               $i++;
               $j++;
            }
            echo  '</tr>'."\n"
                 .'<tr>'."\n";
            for ($k=0;$k<count($t);$k++)
            {
               $this->draw_option_cell($t[$k]['url'],$t[$k]['text']);
            }
            echo  '</tr>'."\n";
         }
      }

      function draw_options()
      {
         $nb_total = count($this->options);
         $i = 0;
         while ($i<$nb_total)
         {
            echo '<tr>'."\n";
            $j = 0;
            while (($j<$this->nb_column)and($i<$nb_total))
            {
               $this->draw_option_cell($this->options[$i]['url'],$this->options[$i]['text']);
               $i++;
               $j++;
            }
            echo  '</tr>'."\n";
         }
      }

      function draw_menu()
      {
         OpenTable();
         //echo  '<center>'."\n";
         if ($this->title_file!='') echo '<a href="'.$this->title_file.'" class="pn-title">';
         echo '<font class="pn-title"><b>'.$this->title_text.'</b></font>';
         if ($this->title_file!='') echo '</a>';
         echo  "\n"
              .'<br><br>'."\n";
         if (($this->detail_menu) or ($GLOBALS['module']=='oldway'))
         {
            if (isset($this->help_file))
            {
               global $hlpfile;
               $hlpfile = $this->help_file;
               echo  '[ <a href="javascript:openwindow('.')" class="pn-normal">'.$this->help_text.'</a> ]'."\n"
                    .'<br><br>'."\n";
            }
         }
         if ($this->detail_menu)
         {
            echo  '<br><br>'."\n"
                 .'<table border="0" width="100%" cellspacing="1">'."\n";
            if ($this->graphic_menu)
               $this->draw_options_graphic();
            else
               $this->draw_options();
            echo  '</table>'."\n";
         }
         CloseTable();
      }
   }

   function user_menu_action($action,$parm1='',$parm2='',$parm3='')
   {
      static $menu    = array(),
             $current = -1;
//    echo $action.'/'.$parm1.'/'.$parm2.'/'.$parm3.'<br>';
      if ($action=='title')
      {
         if ($current>=0) menu_detail(false);
         $current++;
         $menu[$current] = new user_menu_object($parm1,$parm2);
      }
      elseif ($action=='help')
         $menu[$current]->set_help($parm1,$parm2);
      elseif ($action=='graphic')
         $menu[$current]->set_graphic($parm1);
      elseif ($action=='detail')
         $menu[$current]->set_detail($parm1);
      elseif ($action=='option')
         $menu[$current]->add_option($parm1,$parm2,$parm3);
      elseif ($action=='draw')
      {
         foreach ($menu as $i=>$m)
            $m->draw_menu();
         $menu = array();
         $current = -1;
      }
      else
         die('fatal / admin/tools/menu.php');
   }

   function user_menu_title($file,$text)              {user_menu_action('title',$file,$text);}
   function user_menu_help($file,$text)               {user_menu_action('help',$file,$text);}
   function user_menu_graphic($top)                   {user_menu_action('graphic',$top);}
   function user_menu_add_option($url,$text,$image)   {user_menu_action('option',$url,$text,$image);}
   function user_menu_detail($top)                    {user_menu_action('detail',$top);}
   function user_menu_draw()                          {user_menu_action('draw');}

?>