phpgroupware-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpgroupware-cvs] folders/inc class.treemenu.inc.php,1.1,1.2


From: Philipp Kamps <address@hidden>
Subject: [Phpgroupware-cvs] folders/inc class.treemenu.inc.php,1.1,1.2
Date: Mon, 17 Nov 2003 17:31:01 +0000

Update of /cvsroot/phpgroupware/folders/inc
In directory subversions:/tmp/cvs-serv20936/inc

Modified Files:
        class.treemenu.inc.php 
Log Message:
method 'scanTableForMenu' simplified. The method 'newTreeMenu' overwritten to 
enable customized image in folder view

Index: class.treemenu.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/folders/inc/class.treemenu.inc.php,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** class.treemenu.inc.php      7 Nov 2003 17:01:58 -0000       1.1
--- class.treemenu.inc.php      17 Nov 2003 17:30:59 -0000      1.2
***************
*** 1,17 ****
  <?php
  // PHP Layers Menu 3.1.0 (C) 2001-2003 Marco Pratesi (marco at telug dot it)
  
!       
/**************************************************************************\
!       * phpGroupWare - Folders                                                
   *
!       * http://www.phpgroupware.org                                           
   *
!       * Written by Philipp Kamps <address@hidden>               *
!       * --------------------------------------------                          
   *
!       *  This program is free software; you can redistribute it and/or modify 
it *
!       *  under the terms of the GNU General Public License as published by 
the   *
!       *  Free Software Foundation; either version 2 of the License, or (at 
your  *
!       *  option) any later version.                                           
   *
!       
\**************************************************************************/
! 
! 
  
  class phpGWTreeMenu extends TreeMenu
--- 1,14 ----
  <?php
+ // original project
  // PHP Layers Menu 3.1.0 (C) 2001-2003 Marco Pratesi (marco at telug dot it)
  
! /**
!  * folders module
!  * @author Philipp Kamps <address@hidden>
!  * @copyright Copyright (C) 2003 Free Software Foundation http://www.fsf.org/
!  * @license http://www.fsf.org/licenses/gpl.html GNU General Public License
!  * @package folders
!  * @version $Id
!  */
  
  class phpGWTreeMenu extends TreeMenu
***************
*** 35,40 ****
                $menu_name = '', // non consistent default...
                $language = '',
!               $db,
!               $mailFolders
                ) {
                $this->_maxLevel[$menu_name] = 0;
--- 32,36 ----
                $menu_name = '', // non consistent default...
                $language = '',
!               $content
                ) {
                $this->_maxLevel[$menu_name] = 0;
***************
*** 43,83 ****
                $this->_firstItem[$menu_name] = $this->_nodesCount + 1;
  
!               $sql = (
!               'SELECT ' .
!                       'cat_id AS id, ' .
!                       'cat_parent AS parent_id, ' .
!                       'cat_name AS text, ' .
!                       'cat_name AS href, ' .
!                       'cat_name AS title, ' .
!                       //'cat_id AS icon, ' .
!                       'cat_appname AS target ' .
!                       //$this->tableFields["expanded"] . " AS expanded
!               'FROM phpgw_categories ' .
!               'WHERE ( cat_owner=\'6\' or cat_access = \'public\') '
!               );
! 
!               //echo $sql;
!               $db->query($sql,__LINE__,__FILE__);
! 
!               $this->_tmpArray = array();
!               while ($db->next_record())
!               {
!                       if ($db->f('target') == 'phpgw')
!                       {
!                               $module = '';
!                       }
!                       else
!                       {
!                               $module = $db->f('target');
!                       }
!                       $this->_tmpArray[$db->f('id')]['parent_id'] = 
$db->f('parent_id');
!                       $this->_tmpArray[$db->f('id')]['text']      = 
$db->f('text');
!                       $this->_tmpArray[$db->f('id')]['href']      = 
$GLOBALS['phpgw']->link('/'.$module.'/index.php', array( 'fcat_id' => 
$db->f('id') ) );
!                       $this->_tmpArray[$db->f('id')]['title']     = 
$db->f('title');
!                       $this->_tmpArray[$db->f('id')]['icon']      = 
$module.'.png';
!                       $this->_tmpArray[$db->f('id')]['target']    = '_parent';
!                       $this->_tmpArray[$db->f('id')]['expanded']  = 
$db->f('expanded');
!               }
! 
                for($i=0; $i < count($mailFolders); $i++)
                {
--- 39,43 ----
                $this->_firstItem[$menu_name] = $this->_nodesCount + 1;
  
! /*
                for($i=0; $i < count($mailFolders); $i++)
                {
***************
*** 91,94 ****
--- 51,57 ----
                }
  
+ */
+               $this->_tmpArray = $content;
+ 
                $this->_depthFirstSearch($this->_tmpArray, $menu_name, '0', 1);
  
***************
*** 98,101 ****
--- 61,278 ----
                $this->_postParse($menu_name);
        }
+       
+ /**
+ * Method to prepare a new Tree Menu.
+ *
+ * This method processes items of a menu to prepare and return
+ * the corresponding Tree Menu code.
+ *
+ * @access public
+ * @param string $menu_name the name of the menu whose items have to be 
processed
+ * @return string
+ */
+       function newTreeMenu(
+                            $menu_name = ""    // non consistent default...
+                           ) {
+       if (!isset($this->_firstItem[$menu_name]) || 
!isset($this->_lastItem[$menu_name])) {
+               $this->error("newTreeMenu: the first/last item of the menu 
'$menu_name' is not defined; please check if you have parsed its menu data.");
+               return 0;
+       }
+ 
+       $this->_treeMenu[$menu_name] = "";
+ 
+       $img_space              = 
'folders/phplayersmenu/images/tree_space.'.$this->treeMenuImagesType;
+       $alt_space              = '  ';
+       $img_vertline           = 
'folders/phplayersmenu/images/tree_vertline.'.$this->treeMenuImagesType;
+       $alt_vertline           = '| ';
+       $img_expand             = 
'folders/phplayersmenu/images/tree_expand.'.$this->treeMenuImagesType;
+       $alt_expand             = '+-';
+       $img_expand_first       = 
'folders/phplayersmenu/images/tree_expand_first.'.$this->treeMenuImagesType;
+       $alt_expand_first       = '+-';
+       $img_expand_corner      = 
'folders/phplayersmenu/images/tree_expand_corner.'.$this->treeMenuImagesType;
+       $alt_expand_corner      = '+-';
+       $img_collapse           = 
'folders/phplayersmenu/images/tree_collapse.'.$this->treeMenuImagesType;
+       $alt_collapse           = '--';
+       $img_collapse_first     = 
'folders/phplayersmenu/images/tree_collapse_first.'.$this->treeMenuImagesType;
+       $alt_collapse_first     = '--';
+       $img_collapse_corner    = 
'folders/phplayersmenu/images/tree_collapse_corner.'.$this->treeMenuImagesType;
+       $alt_collapse_corner    = '--';
+       $img_split              = 'folders/phplayersmenu/images/tree_split.' . 
$this->treeMenuImagesType;
+       $alt_split              = '|-';
+       $img_split_first        = 
'folders/phplayersmenu/images/tree_split_first.' . $this->treeMenuImagesType;
+       $alt_split_first        = '|-';
+       $img_corner             = 
'folders/phplayersmenu/images/tree_corner.'.$this->treeMenuImagesType;
+       $alt_corner             = '`-';
+       $img_folder_closed      = 
'folders/phplayersmenu/images/tree_folder_closed.' . $this->treeMenuImagesType;
+       $alt_folder_closed      = '->';
+       $img_folder_open        = 
'folders/phplayersmenu/images/tree_folder_open.' . $this->treeMenuImagesType;
+       $alt_folder_open        = '->';
+       $img_leaf               = 'folders/phplayersmenu/images/tree_leaf.' . 
$this->treeMenuImagesType;
+       $alt_leaf               = '->';
+ 
+       for ($i=0; $i<=$this->_maxLevel[$menu_name]; $i++) {
+               $levels[$i] = 0;
+       }
+ 
+       // Find last nodes of subtrees
+       $last_level = $this->_maxLevel[$menu_name];
+       for ($i=$this->_lastItem[$menu_name]; 
$i>=$this->_firstItem[$menu_name]; $i--) {
+               if ($this->tree[$i]["level"] < $last_level) {
+                       for ($j=$this->tree[$i]["level"]+1; 
$j<=$this->_maxLevel[$menu_name]; $j++) {
+                               $levels[$j] = 0;
+                       }
+               }
+               if ($levels[$this->tree[$i]["level"]] == 0) {
+                       $levels[$this->tree[$i]["level"]] = 1;
+                       $this->tree[$i]["last_item"] = 1;
+               } else {
+                       $this->tree[$i]["last_item"] = 0;
+               }
+               $last_level = $this->tree[$i]["level"];
+       }
+ 
+       $toggle = "";
+       $toggle_function_name = "toggle" . $menu_name;
+ 
+       for ($cnt=$this->_firstItem[$menu_name]; 
$cnt<=$this->_lastItem[$menu_name]; $cnt++) {
+               $this->_treeMenu[$menu_name] .= "<div id=\"jt" . $cnt . "\" 
class=\"treemenudiv\">\n";
+ 
+               // vertical lines from higher levels
+               for ($i=0; $i<$this->tree[$cnt]["level"]-1; $i++) {
+                       if ($levels[$i] == 1) {
+                               $img = $img_vertline;
+                               $alt = $alt_vertline;
+                       } else {
+                               $img = $img_space;
+                               $alt = $alt_space;
+                       }
+                       $this->_treeMenu[$menu_name] .= "<img align=\"top\" 
border=\"0\" class=\"imgs\" src=\"" . $img . "\" alt=\"" . $alt . "\" />";
+               }
+ 
+               $not_a_leaf = $cnt<$this->_lastItem[$menu_name] && 
$this->tree[$cnt+1]["level"]>$this->tree[$cnt]["level"];
+ 
+               if ($this->tree[$cnt]["last_item"] == 1) {
+               // corner at end of subtree or t-split
+                       if ($not_a_leaf) {
+                               $this->_treeMenu[$menu_name] .= "<a 
onmousedown=\"". $toggle_function_name . "('" . $cnt . "')\"><img align=\"top\" 
border=\"0\" class=\"imgs\" id=\"jt" . $cnt . "node\" src=\"" . 
$img_collapse_corner . "\" alt=\"" . $alt_collapse_corner . "\" /></a>";
+                       } else {
+                               $this->_treeMenu[$menu_name] .= "<img 
align=\"top\" border=\"0\" class=\"imgs\" src=\"" . $img_corner . "\" alt=\"" . 
$alt_corner . "\" />";
+                       }
+                       $levels[$this->tree[$cnt]["level"]-1] = 0;
+               } else {
+                       if ($not_a_leaf) {
+                               if ($cnt == $this->_firstItem[$menu_name]) {
+                                       $img = $img_collapse_first;
+                                       $alt = $alt_collapse_first;
+                               } else {
+                                       $img = $img_collapse;
+                                       $alt = $alt_collapse;
+                               }
+                               $this->_treeMenu[$menu_name] .= "<a 
onmousedown=\"". $toggle_function_name . "('" . $cnt . "');\"><img 
align=\"top\" border=\"0\" class=\"imgs\" id=\"jt" . $cnt . "node\" src=\"" . 
$img . "\" alt=\"" . $alt . "\" /></a>";
+                       } else {
+                               if ($cnt == $this->_firstItem[$menu_name]) {
+                                       $img = $img_split_first;
+                                       $alt = $alt_split_first;
+                               } else {
+                                       $img = $img_split;
+                                       $alt = $alt_split;
+                               }
+                               $this->_treeMenu[$menu_name] .= "<a 
onmousedown=\"". $toggle_function_name . "('" . $cnt . "');\"><img 
align=\"top\" border=\"0\" class=\"imgs\" id=\"jt" . $cnt . "node\" src=\"" . 
$img . "\" alt=\"" . $alt . "\" /></a>";
+                       }
+                       $levels[$this->tree[$cnt]["level"]-1] = 1;
+               }
+ 
+               if ($this->tree[$cnt]["parsed_href"] == "" || 
$this->tree[$cnt]["parsed_href"] == "#") {
+                       $a_href_open_img = "";
+                       $a_href_close_img = "";
+                       $a_href_open = "<a class=\"phplmnormal\">";
+                       $a_href_close = "</a>";
+               } else {
+                       $a_href_open_img = "<a href=\"" . 
$this->tree[$cnt]["parsed_href"] . "\"" . $this->tree[$cnt]["parsed_title"] . 
$this->tree[$cnt]["parsed_target"] . ">";
+                       $a_href_close_img = "</a>";
+                       $a_href_open = "<a href=\"" . 
$this->tree[$cnt]["parsed_href"] . "\"" . $this->tree[$cnt]["parsed_title"] . 
$this->tree[$cnt]["parsed_target"] . " class=\"phplm\">";
+                       $a_href_close = "</a>";
+               }
+ 
+               if ($not_a_leaf) {
+                       $this->_treeMenu[$menu_name] .= $a_href_open_img . 
"<img align=\"top\" border=\"0\" class=\"imgs\" id=\"jt" . $cnt . "folder\" 
src=\"" . $img_folder_open . "\" alt=\"" . $alt_folder_open . "\" />" . 
$a_href_close_img;
+               } else {
+                       if ($this->tree[$cnt]["parsed_icon"] != "") {
+                               $this->_treeMenu[$menu_name] .= 
$a_href_open_img . "<img align=\"top\" border=\"0\" src=\"" . $this->imgwww . 
$this->tree[$cnt]["parsed_icon"] . "\" width=\"" . 
$this->tree[$cnt]["iconwidth"] . "\" height=\"" . 
$this->tree[$cnt]["iconheight"] . "\" alt=\"" . $alt_leaf . "\" />" . 
$a_href_close_img;
+                       } else {
+                               $this->_treeMenu[$menu_name] .= 
$a_href_open_img . "<img align=\"top\" border=\"0\" class=\"imgs\" src=\"" . 
$img_leaf . "\" alt=\"" . $alt_leaf . "\" />" . $a_href_close_img;
+                       }
+               }
+               $this->_treeMenu[$menu_name] .= "&nbsp;" . $a_href_open . 
$this->tree[$cnt]["text"] . $a_href_close . "\n";
+               $this->_treeMenu[$menu_name] .= "</div>\n";
+ 
+               if ($cnt<$this->_lastItem[$menu_name] && 
$this->tree[$cnt]["level"]<$this->tree[$cnt+1]["level"]) {
+                       $this->_treeMenu[$menu_name] .= "<div id=\"jt" . $cnt . 
"son\" class=\"treemenudiv\">\n";
+                       if ($this->tree[$cnt]["expanded"] != 1) {
+                               $toggle .= "if (expand[" . $cnt . "] != 1) " . 
$toggle_function_name . "('" . $cnt . "');\n";
+                       } else {
+                               $toggle .= "if (collapse[" . $cnt . "] == 1) " 
. $toggle_function_name . "('" . $cnt . "');\n";
+                       }
+               }
+ 
+               if ($cnt>$this->_firstItem[$menu_name] && 
$this->tree[$cnt]["level"]>$this->tree[$cnt+1]["level"]) {
+                       for ($i=max(1, $this->tree[$cnt+1]["level"]); 
$i<$this->tree[$cnt]["level"]; $i++) {
+                               $this->_treeMenu[$menu_name] .= "</div>\n";
+                       }
+               }
+       }
+ 
+ /*
+       $this->_treeMenu[$menu_name] =
+       "<div class=\"phplmnormal\">\n" .
+       $this->_treeMenu[$menu_name] .
+       "</div>\n";
+ */
+       // Some (old) browsers do not support the "white-space: nowrap;" CSS 
property...
+       $this->_treeMenu[$menu_name] =
+       "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n" .
+       "<tr>\n" .
+       "<td class=\"phplmnormal\" nowrap=\"nowrap\">\n" .
+       $this->_treeMenu[$menu_name] .
+       "</td>\n" .
+       "</tr>\n" .
+       "</table>\n";
+ 
+       $t = new Template_PHPLIB();
+       $t->setFile("tplfile", $this->libjsdir . "layerstreemenu.ijs");
+       $t->setVar(array(
+               "toggle_function_name"  => $toggle_function_name,
+               "img_expand"            => $img_expand,
+               "img_expand_first"      => $img_expand_first,
+               "img_collapse"          => $img_collapse,
+               "img_collapse_first"    => $img_collapse_first,
+               "img_collapse_corner"   => $img_collapse_corner,
+               "img_folder_open"       => $img_folder_open,
+               "img_expand_corner"     => $img_expand_corner,
+               "img_folder_closed"     => $img_folder_closed
+       ));
+       $toggle_function = $t->parse("out", "tplfile");
+       $toggle_function =
+       "<script language=\"JavaScript\" type=\"text/javascript\">\n" .
+       "<!--\n" .
+       $toggle_function .
+       "// -->\n" .
+       "</script>\n";
+ 
+       $toggle =
+       "<script language=\"JavaScript\" type=\"text/javascript\">\n" .
+       "<!--\n" .
+       "if ((DOM && !Opera56 && !Konqueror22) || IE4) {\n" .
+       $toggle .
+       "}\n" .
+       "if (NS4) alert('Only the accessibility is provided to Netscape 4 on 
the JavaScript Tree Menu.\\nWe *strongly* suggest you to upgrade your 
browser.');\n" .
+       "// -->\n" .
+       "</script>\n";
+ 
+       $this->_treeMenu[$menu_name] = $toggle_function . "\n" . 
$this->_treeMenu[$menu_name] . "\n" . $toggle;
+ 
+       return $this->_treeMenu[$menu_name];
+ }     
+       
  }
  





reply via email to

[Prev in Thread] Current Thread [Next in Thread]