diff --git a/htdocs/core/menubase.class.php b/htdocs/core/menubase.class.php
index c20c6fc91ac..a9abc8e35b3 100644
--- a/htdocs/core/menubase.class.php
+++ b/htdocs/core/menubase.class.php
@@ -48,7 +48,7 @@ class Menubase
var $titre;
var $langs;
var $level;
- var $leftmenu;
+ var $leftmenu; //newmenu = $newmenu;
$this->leftmenu = $leftmenu;
@@ -392,8 +394,8 @@ class Menubase
$perms = true;
if ($menu['perms'])
{
- //print "verifCond rowid=".$menu['rowid']." ".$menu['right']."
\n";
- $perms = $this->verifCond($menu['perms']);
+ $perms = $this->verifCond($menu['perms']);
+ //print "verifCond rowid=".$menu['rowid']." ".$menu['right'].":".$perms."
\n";
}
// Define $constraint
@@ -401,6 +403,7 @@ class Menubase
if ($menu['action'])
{
$constraint = $this->verifCond($menu['action']);
+ //print "verifCond rowid=".$menu['rowid']." ".$menu['action'].":".$constraint."
\n";
}
if ($menu['rowid'] != $oldrowid && $oldrowid) $b++; // Break on new entry
@@ -409,6 +412,8 @@ class Menubase
$tabMenu[$b][0] = $menu['rowid'];
$tabMenu[$b][1] = $menu['fk_menu'];
$tabMenu[$b][2] = $menu['url'];
+ if (eregi('\?',$tabMenu[$b][2])) $tabMenu[$b][2].='&idmenu='.$menu['rowid'];
+ else $tabMenu[$b][2].='?idmenu='.$menu['rowid'];
$tabMenu[$b][3] = $chaine;
$tabMenu[$b][5] = $menu['target'];
$tabMenu[$b][6] = $menu['leftmenu'];
@@ -454,7 +459,7 @@ class Menubase
*/
function recur($tab, $pere, $rang)
{
- global $leftmenu, $leftmenuConstraint; // To be exported in dol_eval function
+ global $leftmenu; // To be exported in dol_eval function
//print "xx".$pere;
$leftmenu = $this->leftmenu;
@@ -492,7 +497,7 @@ class Menubase
*/
function verifCond($strRights)
{
- global $user,$conf,$lang;
+ global $user,$conf,$lang,$leftmenu;
global $rights; // To export to dol_eval function
if ($strRights != "")
@@ -514,18 +519,28 @@ class Menubase
return $rights;
}
+ /**
+ * Return all values of mainmenu where leftmenu defined
+ * in pre.inc.php must be overwritten completely by dynamic menu.
+ *
+ * @return array
+ */
function listeMainmenu()
{
+ $overwritemenufor=array();
+
$sql = "SELECT DISTINCT m.mainmenu";
$sql.= " FROM " . MAIN_DB_PREFIX . "menu as m";
$sql.= " WHERE m.menu_handler in ('".$this->menu_handler."','all')";
+ $sql.= " AND m.leftmenu != '0'"; // leftmenu exists in database so pre.inc.php must be overwritten
+ //print $sql;
$res = $this->db->query($sql);
- if ($res) {
- $i = 0;
- while ($menu = $this->db->fetch_array($res)) {
- $overwritemenufor[$i] = $menu['mainmenu'];
- $i++;
+ if ($res)
+ {
+ while ($menu = $this->db->fetch_array($res))
+ {
+ if ($menu['mainmenu']) $overwritemenufor[] = $menu['mainmenu'];
}
}
else
@@ -578,9 +593,9 @@ class Menubase
// Define $chaine
$chaine="";
$title=$langs->trans($objm->titre);
- if ($title == $objm->titre && ! empty($menu['langs']))
+ if ($title == $objm->titre && ! empty($objm->langs))
{
- $langs->load($menu['langs']);
+ $langs->load($objm->langs);
$title=$langs->trans($objm->titre);
}
if (eregi("/",$title))
@@ -592,6 +607,7 @@ class Menubase
{
$chaine = $langs->trans($title);
}
+ //print "x".$objm->titre."-".$chaine;
// Define class
$class="";
@@ -653,7 +669,7 @@ function dol_eval($s)
// Only global variables can be changed by eval function and returned to caller
global $langs, $user, $conf;
global $rights;
- global $leftmenu, $leftmenuConstraint;
+ global $leftmenu;
// \todo
// Warning. We must add code to exclude test if it contains = (affectation) that is not == (compare)
diff --git a/htdocs/includes/menus/barre_left/auguria_backoffice.php b/htdocs/includes/menus/barre_left/auguria_backoffice.php
index 74bdf268fcd..0f97f14d266 100644
--- a/htdocs/includes/menus/barre_left/auguria_backoffice.php
+++ b/htdocs/includes/menus/barre_left/auguria_backoffice.php
@@ -40,7 +40,6 @@ class MenuLeft {
var $require_top=array("auguria_backoffice"); // Si doit etre en phase avec un gestionnaire de menu du haut particulier
var $newmenu;
- var $menuArbo;
var $overwritemenufor = array();
var $leftmenu;
@@ -53,14 +52,9 @@ class MenuLeft {
*/
function MenuLeft($db,&$menu_array)
{
- require_once(DOL_DOCUMENT_ROOT."/core/menubase.class.php");
-
$this->db=$db;
$this->menu_array=$menu_array;
$this->newmenu = new Menu();
-
- $this->menuArbo = new Menubase($this->db,'auguria','left');
- $this->overwritemenufor = $this->menuArbo->listeMainmenu();
}
@@ -112,7 +106,11 @@ class MenuLeft {
*/
if ($mainmenu)
{
- $this->newmenu = $this->menuArbo->menuLeftCharger($this->newmenu,$mainmenu,$this->leftmenu,0,'auguria');
+ require_once(DOL_DOCUMENT_ROOT."/core/menubase.class.php");
+
+ $menuArbo = new Menubase($this->db,'auguria','left');
+ $this->overwritemenufor = $menuArbo->listeMainmenu();
+ $this->newmenu = $menuArbo->menuLeftCharger($this->newmenu,$mainmenu,$this->leftmenu,0,'auguria');
/*
* Menu AUTRES (Pour les menus du haut qui ne serait pas gérés)
diff --git a/htdocs/includes/menus/barre_left/auguria_frontoffice.php b/htdocs/includes/menus/barre_left/auguria_frontoffice.php
index 03a28e1286f..29ba484cbbc 100644
--- a/htdocs/includes/menus/barre_left/auguria_frontoffice.php
+++ b/htdocs/includes/menus/barre_left/auguria_frontoffice.php
@@ -52,15 +52,10 @@ class MenuLeft {
*/
function MenuLeft($db,&$menu_array)
{
- require_once(DOL_DOCUMENT_ROOT."/core/menubase.class.php");
-
$this->db=$db;
$this->menu_array=$menu_array;
$this->newmenu = new Menu();
-
- $this->menuArbo = new Menubase($this->db,'auguria','left');
- $this->overwritemenufor = $this->menuArbo->listeMainmenu();
}
@@ -111,7 +106,11 @@ class MenuLeft {
*/
if ($mainmenu)
{
- $this->newmenu = $this->menuArbo->menuLeftCharger($this->newmenu,$mainmenu,$this->leftmenu,1,'auguria');
+ require_once(DOL_DOCUMENT_ROOT."/core/menubase.class.php");
+
+ $menuArbo = new Menubase($this->db,'auguria','left');
+ $this->overwritemenufor = $menuArbo->listeMainmenu();
+ $this->newmenu = $menuArbo->menuLeftCharger($this->newmenu,$mainmenu,$this->leftmenu,1,'auguria');
/*
* Menu AUTRES (Pour les menus du haut qui ne serait pas g�r�s)
diff --git a/htdocs/includes/menus/barre_left/eldy_backoffice.php b/htdocs/includes/menus/barre_left/eldy_backoffice.php
index 02f8ca41e49..3003d09fc5c 100644
--- a/htdocs/includes/menus/barre_left/eldy_backoffice.php
+++ b/htdocs/includes/menus/barre_left/eldy_backoffice.php
@@ -49,7 +49,7 @@ class MenuLeft {
*/
function MenuLeft($db,$menu_array)
{
- $this->db=$db;
+ $this->db=$db;
$this->menu_array=$menu_array;
}
@@ -100,7 +100,6 @@ class MenuLeft {
}
$newmenu = new Menu();
- $overwritemenufor=array('home','companies','members','products','suppliers','commercial','accountancy','agenda','project','tools','ecm');
/**
* On definit newmenu en fonction de mainmenu et leftmenu
@@ -865,18 +864,18 @@ class MenuLeft {
}
}
-
// Affichage des menus personnalises
require_once(DOL_DOCUMENT_ROOT."/core/menubase.class.php");
-
+
$menuArbo = new Menubase($this->db,'eldy','left');
- $newmenu = $menuArbo->menuLeftCharger($newmenu,$mainmenu,$leftmenu,0,'eldy');
+ $this->overwritemenufor=array('home','companies','members','products','suppliers','commercial','accountancy','agenda','project','tools','ecm');
+ $newmenu = $menuArbo->menuLeftCharger($newmenu,$mainmenu,$leftmenu,0,'eldy');
/*
* Menu AUTRES (Pour les menus du haut qui ne serait pas gérés)
*/
- if ($mainmenu && ! in_array($mainmenu,$overwritemenufor)) { $mainmenu=""; }
+ if ($mainmenu && ! in_array($mainmenu,$this->overwritemenufor)) { $mainmenu=""; }
}
diff --git a/htdocs/includes/menus/barre_left/eldy_frontoffice.php b/htdocs/includes/menus/barre_left/eldy_frontoffice.php
index b2249f5aff8..6fbf46a33b2 100644
--- a/htdocs/includes/menus/barre_left/eldy_frontoffice.php
+++ b/htdocs/includes/menus/barre_left/eldy_frontoffice.php
@@ -47,7 +47,7 @@ class MenuLeft {
*/
function MenuLeft($db,&$menu_array)
{
- $this->db=$db;
+ $this->db=$db;
$this->menu_array=$menu_array;
}
@@ -99,7 +99,6 @@ class MenuLeft {
$newmenu = new Menu();
- $overwritemenufor=array('home','companies','members','products','suppliers','commercial','accountancy','agenda','project','tools','ecm');
/**
* On definit newmenu en fonction de mainmenu et leftmenu
@@ -832,15 +831,16 @@ class MenuLeft {
}
// Affichage des menus personnalises
- require_once(DOL_DOCUMENT_ROOT."/core/menubase.class.php");
-
- $menuArbo = new Menubase($this->db,'eldy','left');
- $newmenu = $menuArbo->menuLeftCharger($newmenu,$mainmenu,$leftmenu,1,'eldy');
+ require_once(DOL_DOCUMENT_ROOT."/core/menubase.class.php");
+
+ $menuArbo = new Menubase($this->db,'eldy','left');
+ $this->overwritemenufor=array('home','companies','members','products','suppliers','commercial','accountancy','agenda','project','tools','ecm');
+ $newmenu = $menuArbo->menuLeftCharger($newmenu,$mainmenu,$leftmenu,1,'eldy');
/*
* Menu AUTRES (Pour les menus du haut qui ne serait pas gérés)
*/
- if ($mainmenu && ! in_array($mainmenu,$overwritemenufor)) { $mainmenu=""; }
+ if ($mainmenu && ! in_array($mainmenu,$this->overwritemenufor)) { $mainmenu=""; }
}
diff --git a/htdocs/includes/menus/barre_left/rodolphe.php b/htdocs/includes/menus/barre_left/rodolphe.php
index 63db9a30665..1cca1de5cec 100644
--- a/htdocs/includes/menus/barre_left/rodolphe.php
+++ b/htdocs/includes/menus/barre_left/rodolphe.php
@@ -47,7 +47,7 @@ class MenuLeft {
*/
function MenuLeft($db,&$menu_array)
{
- $this->db=$db;
+ $this->db=$db;
$this->menu_array=$menu_array;
}
@@ -57,43 +57,151 @@ class MenuLeft {
*/
function showmenu()
{
- global $user, $conf, $langs;
+ global $user, $conf, $langs, $dolibarr_main_db_name;
- $alt=0;
- for ($i = 0 ; $i < sizeof($this->menu_array) ; $i++)
- {
- $alt++;
- if ($this->menu_array[$i]['level']==0) {
- if (($alt%2==0))
- {
- print '