From e352e4a56f65885a7d3ed589090079b15b63f3e2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 31 Mar 2013 19:54:56 +0200 Subject: [PATCH] New: Work on new menu management. --- htdocs/core/class/menubase.class.php | 13 ++++++--- htdocs/core/getmenu_jmobile.php | 2 +- htdocs/core/menus/standard/auguria_menu.php | 32 ++++++++++++++------- htdocs/core/menus/standard/eldy_menu.php | 24 +++++++++------- 4 files changed, 46 insertions(+), 25 deletions(-) diff --git a/htdocs/core/class/menubase.class.php b/htdocs/core/class/menubase.class.php index 7ae947ee518..5ebccdeb1bd 100644 --- a/htdocs/core/class/menubase.class.php +++ b/htdocs/core/class/menubase.class.php @@ -512,6 +512,7 @@ class Menubase if ($type_user == 0) $sql.= " AND m.usertype IN (0,2)"; if ($type_user == 1) $sql.= " AND m.usertype IN (1,2)"; $sql.= " ORDER BY m.position, m.rowid"; + //print $sql; //$tmp1=dol_microtime_float(); //print '>>> 1 0
'; @@ -533,17 +534,21 @@ class Menubase $perms = true; if ($menu['perms']) { - $perms = verifCond($menu['perms']); - //print "verifCond rowid=".$menu['rowid']." ".$menu['perms'].":".$perms."
\n"; + $tmpcond=$menu['perms']; + if ($leftmenu == 'all') $tmpcond=preg_replace('/\$leftmenu\s*==\s*["\'a-zA-Z]+/','1==1',$tmpcond); // Force part of condition to true + $perms = verifCond($tmpcond); + //print "verifCond rowid=".$menu['rowid']." ".$tmpcond.":".$perms."
\n"; } // Define $enabled $enabled = true; if ($menu['enabled']) { - $enabled = verifCond($menu['enabled']); + $tmpcond=$menu['enabled']; + if ($leftmenu == 'all') $tmpcond=preg_replace('/\$leftmenu\s*==\s*["\'a-zA-Z]+/','1==1',$tmpcond); // Force part of condition to true + $enabled = verifCond($tmpcond); if ($conf->use_javascript_ajax && ! empty($conf->global->MAIN_MENU_USE_JQUERY_ACCORDION) && preg_match('/^\$leftmenu/',$menu['enabled'])) $enabled=1; - //print "verifCond rowid=".$menu['rowid']." ".$menu['enabled'].":".$enabled."
\n"; + //print "verifCond rowid=".$menu['rowid']." ".$tmpcond.":".$enabled."
\n"; } // Define $title diff --git a/htdocs/core/getmenu_jmobile.php b/htdocs/core/getmenu_jmobile.php index 4075bbc77b6..78c46c60fbb 100644 --- a/htdocs/core/getmenu_jmobile.php +++ b/htdocs/core/getmenu_jmobile.php @@ -88,7 +88,7 @@ if (! class_exists('MenuManager')) } } $menumanager = new MenuManager($db, empty($user->societe_id)?0:1); -$menumanager->loadMenu(); +$menumanager->loadMenu('all','all'); $menumanager->showmenu('jmobile'); diff --git a/htdocs/core/menus/standard/auguria_menu.php b/htdocs/core/menus/standard/auguria_menu.php index e33d08403ac..343edaf5201 100644 --- a/htdocs/core/menus/standard/auguria_menu.php +++ b/htdocs/core/menus/standard/auguria_menu.php @@ -51,13 +51,15 @@ class MenuManager $this->db=$db; } - + /** * Load this->tabMenu * + * @param string $forcemainmenu To force mainmenu to load + * @param string $forceleftmenu To force leftmenu to load * @return void */ - function loadMenu() + function loadMenu($forcemainmenu='',$forceleftmenu='') { global $conf, $user, $langs; @@ -78,6 +80,7 @@ class MenuManager // On va le chercher en session si non defini par le lien $mainmenu=isset($_SESSION["mainmenu"])?$_SESSION["mainmenu"]:''; } + if (! empty($forcemainmenu)) $mainmenu=$forcemainmenu; if (isset($_GET["leftmenu"])) { @@ -98,6 +101,7 @@ class MenuManager // On va le chercher en session si non defini par le lien $leftmenu=isset($_SESSION["leftmenu"])?$_SESSION["leftmenu"]:''; } + if (! empty($forceleftmenu)) $leftmenu=$forceleftmenu; require_once DOL_DOCUMENT_ROOT.'/core/class/menubase.class.php'; $tabMenu=array(); @@ -167,16 +171,16 @@ class MenuManager } $res='ErrorBadParameterForMode'; - + require_once DOL_DOCUMENT_ROOT.'/core/class/menu.class.php'; $this->menu=new Menu(); - + if ($mode == 'top') $res=print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu); if ($mode == 'left') $res=print_left_auguria_menu($this->db,$this->menu_array,$this->menu_array_after,$this->tabMenu,$this->menu); if ($mode == 'jmobile') { $res=print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1); - + foreach($this->menu->liste as $key => $val) // $val['url','titre','level','enabled'=0|1|2,'target','mainmenu','leftmenu' { print ''; @@ -219,9 +231,9 @@ class MenuManager print ''."\n"; } } - + unset($this->menu); - + return $res; } } diff --git a/htdocs/core/menus/standard/eldy_menu.php b/htdocs/core/menus/standard/eldy_menu.php index 8b381ed7038..18d64839fdc 100644 --- a/htdocs/core/menus/standard/eldy_menu.php +++ b/htdocs/core/menus/standard/eldy_menu.php @@ -49,14 +49,16 @@ class MenuManager $this->type_user=$type_user; $this->db=$db; } - - + + /** * Load this->tabMenu - * + * + * @param string $forcemainmenu To force mainmenu to load + * @param string $forceleftmenu To force leftmenu to load * @return void */ - function loadMenu() + function loadMenu($forcemainmenu='',$forceleftmenu='') { // On sauve en session le menu principal choisi if (isset($_GET["mainmenu"])) $_SESSION["mainmenu"]=$_GET["mainmenu"]; @@ -75,6 +77,7 @@ class MenuManager // On va le chercher en session si non defini par le lien $mainmenu=isset($_SESSION["mainmenu"])?$_SESSION["mainmenu"]:''; } + if (! empty($forcemainmenu)) $mainmenu=$forcemainmenu; if (isset($_GET["leftmenu"])) { @@ -95,6 +98,7 @@ class MenuManager // On va le chercher en session si non defini par le lien $leftmenu=isset($_SESSION["leftmenu"])?$_SESSION["leftmenu"]:''; } + if (! empty($forceleftmenu)) $leftmenu=$forceleftmenu; require_once DOL_DOCUMENT_ROOT.'/core/class/menubase.class.php'; $tabMenu=array(); @@ -123,13 +127,13 @@ class MenuManager } $res='ErrorBadParameterForMode'; - + require_once DOL_DOCUMENT_ROOT.'/core/class/menu.class.php'; $this->menu=new Menu(); - + if ($mode == 'top') $res=print_eldy_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu); if ($mode == 'left') $res=print_left_eldy_menu($this->db,$this->menu_array,$this->menu_array_after,$this->tabMenu,$this->menu); - if ($mode == 'jmobile') + if ($mode == 'jmobile') { $res=print_eldy_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1); @@ -166,18 +170,18 @@ class MenuManager } //var_dump($submenu); print ''; - } + } if ($val['enabled'] == 2) { print ''.$val['titre'].''; - } + } print ''; print ''."\n"; } } unset($this->menu); - + //print 'xx'.$mode; return $res; }