diff --git a/htdocs/admin/menus/edit.php b/htdocs/admin/menus/edit.php
index bb2c5dfba7a..b892d23cb8f 100644
--- a/htdocs/admin/menus/edit.php
+++ b/htdocs/admin/menus/edit.php
@@ -62,14 +62,31 @@ if (isset($_GET["action"]) && $_GET["action"] == 'update')
{
if (! $_POST['cancel'])
{
-
- $sql = "UPDATE ".MAIN_DB_PREFIX."menu as m";
- $sql.=" SET m.titre = '".$_POST['titre']."', m.leftmenu = '".$_POST['leftmenu']."', m.url = '".$_POST['url']."', m.langs = '".$_POST['langs']."', m.right = '".$_POST['right']."',m.target = '".$_POST['target']."', m.user = ".$_POST['user'];
- $sql.=" WHERE m.rowid = ".$_POST['menuId'];
- $resql=$db->query($sql);
- if ($resql > 0)
+ $menu = new Menubase($db);
+ $result=$menu->fetch($_POST['menuId']);
+ if ($result > 0)
{
- $mesg='
';
diff --git a/htdocs/admin/menus/index.php b/htdocs/admin/menus/index.php
index ae2d2a54de6..068e00389a6 100644
--- a/htdocs/admin/menus/index.php
+++ b/htdocs/admin/menus/index.php
@@ -58,44 +58,44 @@ if ($_REQUEST["menu_handler"]) $menu_handler=$_REQUEST["menu_handler"];
if (isset($_GET["action"]) && $_GET["action"] == 'up')
{
- $sql = "SELECT m.rowid, m.order FROM ".MAIN_DB_PREFIX."menu as m";
+ $sql = "SELECT m.rowid, m.position FROM ".MAIN_DB_PREFIX."menu as m";
$sql.= " WHERE m.rowid = ".$_GET["menuId"];
$result = $db->query($sql);
- $num = $db->num_rows();
+ $num = $db->num_rows($result);
$i = 0;
while($i < $num)
{
$obj = $db->fetch_object($result);
$precedent['rowid'] = $obj->rowid;
- $precedent['order'] = $obj->order;
+ $precedent['order'] = $obj->position;
$i++;
}
// Menu top
- $sql = "SELECT m.rowid, m.order FROM ".MAIN_DB_PREFIX."menu as m";
- $sql.= " WHERE m.order = ".($precedent['order'] - 1)." AND m.type = 'top'";
+ $sql = "SELECT m.rowid, m.position FROM ".MAIN_DB_PREFIX."menu as m";
+ $sql.= " WHERE m.position = ".($precedent['order'] - 1)." AND m.type = 'top'";
$sql.= " AND menu_handler='".$menu_handler_top."'";
$result = $db->query($sql);
- $num = $db->num_rows();
+ $num = $db->num_rows($result);
$i = 0;
while($i < $num)
{
$obj = $db->fetch_object($result);
$suivant['rowid'] = $obj->rowid;
- $suivant['order'] = $obj->order;
+ $suivant['order'] = $obj->position;
$i++;
}
$sql = "UPDATE ".MAIN_DB_PREFIX."menu as m";
- $sql.= " SET m.order = ".$suivant['order'];
+ $sql.= " SET m.position = ".$suivant['order'];
$sql.= " WHERE m.rowid = ".$precedent['rowid'].""; // Monte celui select
$db->query($sql);
$sql = "UPDATE ".MAIN_DB_PREFIX."menu as m";
- $sql.= " SET m.order = ".$precedent['order'];
+ $sql.= " SET m.position = ".$precedent['order'];
$sql.= " WHERE m.rowid = ".$suivant['rowid'].""; // Descend celui du dessus
$db->query($sql);
}
@@ -103,39 +103,39 @@ if (isset($_GET["action"]) && $_GET["action"] == 'up')
if (isset($_GET["action"]) && $_GET["action"] == 'down')
{
- $sql = "SELECT m.rowid, m.order FROM ".MAIN_DB_PREFIX."menu as m WHERE m.rowid = ".$_GET["menuId"];
+ $sql = "SELECT m.rowid, m.position FROM ".MAIN_DB_PREFIX."menu as m WHERE m.rowid = ".$_GET["menuId"];
$result = $db->query($sql);
- $num = $db->num_rows();
+ $num = $db->num_rows($result);
$i = 0;
while($i < $num)
{
$obj = $db->fetch_object($result);
$precedent['rowid'] = $obj->rowid;
- $precedent['order'] = $obj->order;
+ $precedent['order'] = $obj->position;
$i++;
}
- $sql = "SELECT m.rowid, m.order";
+ $sql = "SELECT m.rowid, m.position";
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
- $sql.= " WHERE m.order = ".($precedent['order'] + 1)." AND type='top'";
+ $sql.= " WHERE m.position = ".($precedent['order'] + 1)." AND type='top'";
$result = $db->query($sql);
- $num = $db->num_rows();
+ $num = $db->num_rows($result);
$i = 0;
while($i < $num)
{
$obj = $db->fetch_object($result);
$suivant['rowid'] = $obj->rowid;
- $suivant['order'] = $obj->order;
+ $suivant['order'] = $obj->position;
$i++;
}
- $sql = "UPDATE ".MAIN_DB_PREFIX."menu as m SET m.order = ".$suivant['order']." WHERE m.rowid = ".$precedent['rowid'].""; // Monte celui select
+ $sql = "UPDATE ".MAIN_DB_PREFIX."menu as m SET m.position = ".$suivant['order']." WHERE m.rowid = ".$precedent['rowid'].""; // Monte celui select
$db->query($sql);
- $sql = "UPDATE ".MAIN_DB_PREFIX."menu as m SET m.order = ".$precedent['order']." WHERE m.rowid = ".$suivant['rowid'].""; // Descend celui du dessus
+ $sql = "UPDATE ".MAIN_DB_PREFIX."menu as m SET m.position = ".$precedent['order']." WHERE m.rowid = ".$suivant['rowid'].""; // Descend celui du dessus
$db->query($sql);
}
@@ -277,7 +277,7 @@ if ($conf->use_javascript_ajax)
$sql = "SELECT m.rowid, m.fk_menu, m.titre, m.langs";
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
$sql.= " WHERE menu_handler='".$menu_handler."'";
- $sql.= " ORDER BY m.order, m.rowid";
+ $sql.= " ORDER BY m.position, m.rowid";
$res = $db->query($sql);
if ($res)
diff --git a/htdocs/includes/menus/barre_top/auguria_backoffice.php b/htdocs/includes/menus/barre_top/auguria_backoffice.php
index 0e331139e74..914c21dea1a 100644
--- a/htdocs/includes/menus/barre_top/auguria_backoffice.php
+++ b/htdocs/includes/menus/barre_top/auguria_backoffice.php
@@ -86,7 +86,7 @@ class MenuTop {
$menuArbo = new Menubase($this->db,'auguria','top');
- $tabMenu = $menuArbo->menutopCharger(0,$_SESSION['mainmenu']);
+ $tabMenu = $menuArbo->menutopCharger(0,$_SESSION['mainmenu'], 'auguria');
print '';
diff --git a/htdocs/includes/menus/barre_top/auguria_frontoffice.php b/htdocs/includes/menus/barre_top/auguria_frontoffice.php
index e59d986566e..3ca9800195d 100644
--- a/htdocs/includes/menus/barre_top/auguria_frontoffice.php
+++ b/htdocs/includes/menus/barre_top/auguria_frontoffice.php
@@ -86,7 +86,7 @@ class MenuTop {
$menuArbo = new Menubase($this->db,'auguria','top');
- $tabMenu = $menuArbo->menutopCharger(1,$_SESSION['mainmenu']);
+ $tabMenu = $menuArbo->menutopCharger(1,$_SESSION['mainmenu'], 'auguria');
print '';
diff --git a/htdocs/includes/menus/barre_top/eldy_backoffice.php b/htdocs/includes/menus/barre_top/eldy_backoffice.php
index 98acb0fdf4e..f1ecc0ff83e 100644
--- a/htdocs/includes/menus/barre_top/eldy_backoffice.php
+++ b/htdocs/includes/menus/barre_top/eldy_backoffice.php
@@ -429,7 +429,7 @@ class MenuTop {
require_once(DOL_DOCUMENT_ROOT."/lib/menubase.class.php");
$menuArbo = new Menubase($this->db,'eldy','top');
- $tabMenu = $menuArbo->menutopCharger(0,$_SESSION['mainmenu']);
+ $tabMenu = $menuArbo->menutopCharger(0,$_SESSION['mainmenu'],'eldy');
for($i=0;$idb,'eldy','top');
- $tabMenu = $menuArbo->menutopCharger(0,$_SESSION['mainmenu']);
+ $tabMenu = $menuArbo->menutopCharger(1,$_SESSION['mainmenu'],'eldy');
for($i=0;$idb,'eldy','top');
- $tabMenu = $menuArbo->menutopCharger(0,$_SESSION['mainmenu']);
+ $tabMenu = $menuArbo->menutopCharger(0,$_SESSION['mainmenu'],'');
for($i=0;$idb,'rodolphe','top');
- $tabMenu = $menuArbo->menutopCharger(0,$_SESSION['mainmenu']);
+ $tabMenu = $menuArbo->menutopCharger(1,$_SESSION['mainmenu'],'rodolphe');
for($i=0;$itype=trim($this->type);
$this->mainmenu=trim($this->mainmenu);
$this->fk_menu=trim($this->fk_menu);
- $this->order=trim($this->order);
+ $this->position=trim($this->position);
$this->url=trim($this->url);
$this->target=trim($this->target);
$this->titre=trim($this->titre);
$this->langs=trim($this->langs);
$this->level=trim($this->level);
$this->leftmenu=trim($this->leftmenu);
- $this->right=trim($this->right);
+ $this->perms=trim($this->perms);
$this->user=trim($this->user);
// Check parameters
@@ -101,31 +101,29 @@ class Menubase
$sql.= "type,";
$sql.= "mainmenu,";
$sql.= "fk_menu,";
- $sql.= "order,";
+ $sql.= "position,";
$sql.= "url,";
$sql.= "target,";
$sql.= "titre,";
$sql.= "langs,";
$sql.= "level,";
$sql.= "leftmenu,";
- $sql.= "right,";
- $sql.= "user,";
- $sql.= "tms";
+ $sql.= "perms,";
+ $sql.= "user";
$sql.= ") VALUES (";
$sql.= " '".$this->menu_handler."',";
$sql.= " '".$this->type."',";
$sql.= " '".$this->mainmenu."',";
$sql.= " '".$this->fk_menu."',";
- $sql.= " '".$this->order."',";
+ $sql.= " '".$this->position."',";
$sql.= " '".$this->url."',";
$sql.= " '".$this->target."',";
$sql.= " '".$this->titre."',";
$sql.= " '".$this->langs."',";
$sql.= " '".$this->level."',";
$sql.= " '".$this->leftmenu."',";
- $sql.= " '".$this->right."',";
- $sql.= " '".$this->user."',";
- $sql.= " ".$this->db->idate($this->tms)."";
+ $sql.= " '".$this->perms."',";
+ $sql.= " '".$this->user."'";
$sql.= ")";
dolibarr_syslog("Menu::create sql=".$sql, LOG_DEBUG);
@@ -167,14 +165,14 @@ class Menubase
$this->type=trim($this->type);
$this->mainmenu=trim($this->mainmenu);
$this->fk_menu=trim($this->fk_menu);
- $this->order=trim($this->order);
+ $this->position=trim($this->position);
$this->url=trim($this->url);
$this->target=trim($this->target);
$this->titre=trim($this->titre);
$this->langs=trim($this->langs);
$this->level=trim($this->level);
$this->leftmenu=trim($this->leftmenu);
- $this->right=trim($this->right);
+ $this->perms=trim($this->perms);
$this->user=trim($this->user);
// Check parameters
@@ -186,16 +184,15 @@ class Menubase
$sql.= " type='".$this->type."',";
$sql.= " mainmenu='".addslashes($this->mainmenu)."',";
$sql.= " fk_menu='".$this->fk_menu."',";
- $sql.= " order='".$this->order."',";
+ $sql.= " position='".$this->position."',";
$sql.= " url='".addslashes($this->url)."',";
$sql.= " target='".addslashes($this->target)."',";
$sql.= " titre='".addslashes($this->titre)."',";
$sql.= " langs='".addslashes($this->langs)."',";
$sql.= " level='".$this->level."',";
$sql.= " leftmenu='".addslashes($this->leftmenu)."',";
- $sql.= " right='".addslashes($this->right)."',";
- $sql.= " user='".$this->user."',";
- $sql.= " tms=".$this->db->idate($this->tms)."";
+ $sql.= " perms='".addslashes($this->perms)."',";
+ $sql.= " user='".$this->user."'";
$sql.= " WHERE rowid=".$this->id;
dolibarr_syslog("Menu::update sql=".$sql, LOG_DEBUG);
@@ -237,14 +234,14 @@ class Menubase
$sql.= " t.type,";
$sql.= " t.mainmenu,";
$sql.= " t.fk_menu,";
- $sql.= " t.order,";
+ $sql.= " t.position,";
$sql.= " t.url,";
$sql.= " t.target,";
$sql.= " t.titre,";
$sql.= " t.langs,";
$sql.= " t.level,";
$sql.= " t.leftmenu,";
- $sql.= " t.right,";
+ $sql.= " t.perms,";
$sql.= " t.user,";
$sql.= " ".$this->db->pdate('t.tms')."";
$sql.= " FROM ".MAIN_DB_PREFIX."menu as t";
@@ -264,14 +261,14 @@ class Menubase
$this->type = $obj->type;
$this->mainmenu = $obj->mainmenu;
$this->fk_menu = $obj->fk_menu;
- $this->order = $obj->order;
+ $this->position = $obj->position;
$this->url = $obj->url;
$this->target = $obj->target;
$this->titre = $obj->titre;
$this->langs = $obj->langs;
$this->level = $obj->level;
$this->leftmenu = $obj->leftmenu;
- $this->right = $obj->right;
+ $this->perms = $obj->perms;
$this->user = $obj->user;
$this->tms = $obj->tms;
}
@@ -332,14 +329,14 @@ class Menubase
$this->type='';
$this->mainmenu='';
$this->fk_menu='';
- $this->order='';
+ $this->position='';
$this->url='';
$this->target='';
$this->titre='';
$this->langs='';
$this->level='';
$this->leftmenu='';
- $this->right='';
+ $this->perms='';
$this->user='';
$this->tms='';
}
@@ -363,12 +360,12 @@ class Menubase
$data[] = array ($menutop->rowid,-1,$this->mainmenu);
- $sql = "SELECT m.rowid, m.fk_menu, m.url, m.titre, m.langs, m.right, m.target, m.mainmenu, m.leftmenu";
+ $sql = "SELECT m.rowid, m.fk_menu, m.url, m.titre, m.langs, m.perms, m.target, m.mainmenu, m.leftmenu";
$sql.= " FROM " . MAIN_DB_PREFIX . "menu as m";
$sql.= " WHERE m.menu_handler= '".$this->menu_handler."'";
if($type_user == 0) $sql.= " AND m.user <> 1";
else $sql.= " AND m.user > 0";
- $sql.= " ORDER BY m.order, m.rowid";
+ $sql.= " ORDER BY m.position, m.rowid";
$res = $this->db->query($sql);
if ($res)
@@ -513,29 +510,29 @@ class Menubase
}
- function menutopCharger($type_user,$mainmenu)
+ function menutopCharger($type_user, $mainmenu, $menu_handler)
{
global $langs, $user, $conf;
- $sql = "SELECT m.rowid, m.mainmenu, m.titre, m.url, m.langs, m.right";
+ $sql = "SELECT m.rowid, m.mainmenu, m.titre, m.url, m.langs, m.perms";
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
$sql.= " WHERE m.type = 'top'";
- $sql.= " AND m.menu_handler= '".$this->menu_handler."'";
+ $sql.= " AND m.menu_handler in('".$menu_handler."','all')";
if($type_user == 0) $sql.= " AND m.user <> 1";
else $sql.= " AND m.user > 0";
- $sql.= " ORDER BY m.order";
+ $sql.= " ORDER BY m.menu_handler DESC, m.position";
- $result = $this->db->query($sql);
- if ($result)
+ $resql = $this->db->query($sql);
+ if ($resql)
{
- $numa = $this->db->num_rows();
+ $numa = $this->db->num_rows($resql);
$a = 0;
$b = 0;
while ($a < $numa)
{
// Affichage entete menu
- $objm = $this->db->fetch_object($result);
+ $objm = $this->db->fetch_object($resql);
if ($this->verifConstraint($objm->rowid))
{
@@ -550,9 +547,9 @@ class Menubase
$right = true;
- if ($objm->right)
+ if ($objm->perms)
{
- $str = "if(!(".$objm->right.")) \$right = false;";
+ $str = "if(!(".$objm->perms.")) \$right = false;";
eval($str);
}
diff --git a/mysql/migration/2.2.0-2.4.0.sql b/mysql/migration/2.2.0-2.4.0.sql
index 8b59448ecea..ec09455b676 100644
--- a/mysql/migration/2.2.0-2.4.0.sql
+++ b/mysql/migration/2.2.0-2.4.0.sql
@@ -32,4 +32,6 @@ alter table llx_menu modify rowid integer AUTO_INCREMENT NOT NULL PRIMARY KEY;
ALTER TABLE llx_menu_const ADD CONSTRAINT fk_menu_const_fk_menu FOREIGN KEY (fk_menu) REFERENCES llx_menu (rowid);
alter table llx_menu modify user integer NOT NULL default '0';
+alter table llx_menu change `order` position integer NOT NULL;
+alter table llx_menu change `right` perms varchar(255);
alter table llx_menu add column tms timestamp;
diff --git a/mysql/tables/llx_menu.sql b/mysql/tables/llx_menu.sql
index 2b7c0a67ac6..d7bdea13b8b 100644
--- a/mysql/tables/llx_menu.sql
+++ b/mysql/tables/llx_menu.sql
@@ -28,7 +28,7 @@ CREATE TABLE `llx_menu` (
mainmenu varchar(100) NOT NULL, -- Name family/module (home, companies, ...)
fk_menu int(11) NOT NULL, -- 0 or Id of mother menu line
- order tinyint(4) NOT NULL, -- Order of entry
+ position integer NOT NULL, -- Sort order of entry
url varchar(255) NOT NULL, -- Relative (or absolute) url to go
target varchar(100) NULL, -- Target of Url link
@@ -39,7 +39,7 @@ CREATE TABLE `llx_menu` (
level tinyint(1), -- Used by auguria menu only. Do not use.
leftmenu varchar(100) NULL, -- Condition to show or hide
- right varchar(255), -- Condition to show enabled or disabled
+ perms varchar(255), -- Condition to show enabled or disabled
user integer NOT NULL default '0', -- 0 if menu for all users, 1 for external only, 2 for internal only
tms timestamp
) type=innodb;
|