diff --git a/htdocs/admin/menus/edit.php b/htdocs/admin/menus/edit.php index bb2c5dfba7aed804f37226bd416b2e73336958fe..b892d23cb8fb609cd258768e722df0aa31cb0b9c 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) + { + $menu->titre=$_POST['titre']; + $menu->leftmenu=$_POST['leftmenu']; + $menu->url=$_POST['url']; + $menu->langs=$_POST['langs']; + $menu->position=$_POST['position']; + $menu->perms=$_POST['perms']; + $menu->target=$_POST['target']; + $menu->user=$_POST['user']; + $result=$menu->update($user); + if ($result > 0) + { + $mesg='<div class="ok">'.$langs->trans("RecordModifiedSuccessfully").'</div>'; + } + else + { + $mesg='<div class="error">'.$menu->error.'</div>'; + } + } + else { - $mesg='<div class="ok">'.$langs->trans("RecordModifiedSuccessfully").'</div>'; + $mesg='<div class="error">'.$menu->error.'</div>'; } $_GET["menuId"]=$_POST['menuId']; $_GET["action"]="edit"; @@ -138,14 +155,14 @@ if (isset($_GET["action"]) && $_GET["action"] == 'add') { $sql = "SELECT max(m.rowid) as maxId FROM ".MAIN_DB_PREFIX."menu as m"; $result = $db->query($sql); - $lastMenu = $db->fetch_object($result); - $rowid = $lastMenu->maxId + 1; + $obj = $db->fetch_object($result); + $rowid = $obj->maxId + 1; // On prend le max de toutes celles qui auront le meme pere fk_menu - $sql = "SELECT max(m.order) as maxOrder FROM ".MAIN_DB_PREFIX."menu as m WHERE m.fk_menu = ".$_POST['menuId']; + $sql = "SELECT max(m.position) as maxOrder FROM ".MAIN_DB_PREFIX."menu as m WHERE m.fk_menu = ".$_POST['menuId']; $result = $db->query($sql); - $lastMenu = $db->fetch_object($result); - if ($lastMenu) $order = $lastMenu->maxOrder + 1; + $obj = $db->fetch_object($result); + if ($obj) $position = $obj->maxOrder + 1; else { dolibarr_print_error($db); @@ -161,8 +178,8 @@ if (isset($_GET["action"]) && $_GET["action"] == 'add') if (! $error) { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."menu(rowid,menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, `right`, target, user, `order`)"; - $sql.=" VALUES(".$rowid.",'".$_POST['menu_handler']."','".$_POST['type']."','".$_POST['mainmenu']."','".$_POST['leftmenu']."',".$_POST['menuId'].",'".$_POST['url']."','".$_POST['titre']."','".$_POST['level']."','".$_POST['langs']."','".$_POST['right']."','".$_POST['target']."',".$_POST['user'].",0)"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."menu(rowid,menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms`, target, user, position)"; + $sql.=" VALUES(".$rowid.",'".$_POST['menu_handler']."','".$_POST['type']."','".$_POST['mainmenu']."','".$_POST['leftmenu']."',".$_POST['menuId'].",'".$_POST['url']."','".$_POST['titre']."','".$_POST['level']."','".$_POST['langs']."','".$_POST['perms']."','".$_POST['target']."',".$_POST['user'].", ".$position.")"; dolibarr_syslog("edit: insert menu entry sql=".$sql); $result=$db->query($sql); @@ -321,13 +338,22 @@ if (isset($_GET["action"]) && $_GET["action"] == 'create') print '<td><input type="text" size="10" name="menuId" value="'.$parent_rowid.'"></td>'; print '<td>'.$langs->trans('DetailMenuIdParent').'</td></tr>'; - //Handler + // Handler print '<tr><td><b>'.$langs->trans('MenuHandler').'</b></td>'; print '<td>'; print $htmladmin->select_menu_families($menu_handler,'menu_handler',$dirleft); print '</td>'; print '<td>'.$langs->trans('DetailMenuHandler').'</td></tr>'; + //User + print '<tr><td nowrap="nowrap"><b>'.$langs->trans('MenuForUsers').'</b></td>'; + print '<td><select class="flat" name="user">'; + print '<option value="2" selected>'.$langs->trans("AllMenus").'</option>'; + print '<option value="0">'.$langs->trans('Interne').'</option>'; + print '<option value="1">'.$langs->trans('Externe').'</option>'; + print '</select></td>'; + print '<td>'.$langs->trans('DetailUser').'</td></tr>'; + // Type print '<tr><td><b>'.$langs->trans('Type').'</b></td><td>'; print '<select name="type" class="flat">'; @@ -337,27 +363,26 @@ if (isset($_GET["action"]) && $_GET["action"] == 'create') print '</select>'; // print '<input type="text" size="50" name="type" value="'.$type.'">'; print '</td><td>'.$langs->trans('DetailType').'</td></tr>'; - //User - print '<tr><td nowrap="nowrap"><b>'.$langs->trans('MenuForUsers').'</b></td>'; - print '<td><select class="flat" name="user">'; - print '<option value="2" selected>'.$langs->trans("AllMenus").'</option>'; - print '<option value="0">'.$langs->trans('Interne').'</option>'; - print '<option value="1">'.$langs->trans('Externe').'</option>'; - print '</select></td>'; - print '<td>'.$langs->trans('DetailUser').'</td></tr>'; + //Titre print '<tr><td><b>'.$langs->trans('Title').'</b></td><td><input type="text" size="30" name="titre" value=""></td><td>'.$langs->trans('DetailTitre').'</td></tr>'; + //Langs print '<tr><td>'.$langs->trans('LangFile').'</td><td><input type="text" size="30" name="langs" value="'.$parent_langs.'"></td><td>'.$langs->trans('DetailLangs').'</td></tr>'; + + //Position + print '<tr><td>'.$langs->trans('Position').'</td><td><input type="text" size="5" name="position" value="'.$parent_langs.'"></td><td>'.$langs->trans('DetailPosition').'</td></tr>'; + //URL print '<tr><td><b>'.$langs->trans('URL').'</b></td><td><input type="text" size="60" name="url" value=""></td><td>'.$langs->trans('DetailUrl').'</td></tr>'; + //Target print '<tr><td>'.$langs->trans('Target').'</td><td><select class="flat" name="target">'; print '<option value=""'.($menu->target==""?' selected="true"':'').'>'.$langs->trans('').'</option>'; print '<option value="_new"'.($menu->target=="_new"?' selected="true"':'').'>'.$langs->trans('_new').'</option>'; print '</select></td></td><td>'.$langs->trans('DetailTarget').'</td></tr>'; - //Right - print '<tr><td>'.$langs->trans('Rights').'</td><td><input type="text" size="60" name="right" value=""></td><td>'.$langs->trans('DetailRight').'</td></tr>'; + //Perms + print '<tr><td>'.$langs->trans('Rights').'</td><td><input type="text" size="60" name="perms" value=""></td><td>'.$langs->trans('DetailRight').'</td></tr>'; // Boutons print '<tr><td colspan="3" align="center"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'">'; @@ -395,24 +420,28 @@ elseif (isset($_GET["action"]) && $_GET["action"] == 'edit') // Handler print '<tr><td>'.$langs->trans('MenuHandler').'</td><td>'.$menu->menu_handler.'</td><td>'.$langs->trans('DetailMenuHandler').'</td></tr>'; - // user + // Type + print '<tr><td>'.$langs->trans('Type').'</td><td>'.$menu->type.'</td><td>'.$langs->trans('DetailType').'</td></tr>'; + + // User print '<tr><td nowrap="nowrap">'.$langs->trans('MenuForUsers').'</td><td><select class="flat" name="user">'; print '<option value="2"'.($menu->user==2?' selected="true"':'').'>'.$langs->trans("All").'</option>'; print '<option value="0"'.($menu->user==0?' selected="true"':'').'>'.$langs->trans('Interne').'</option>'; print '<option value="1"'.($menu->user==1?' selected="true"':'').'>'.$langs->trans('Externe').'</option>'; print '</select></td><td>'.$langs->trans('DetailUser').'</td></tr>'; - // Type - print '<tr><td>'.$langs->trans('Type').'</td><td>'.$menu->type.'</td><td>'.$langs->trans('DetailType').'</td></tr>'; - // Niveau //print '<tr><td>'.$langs->trans('Level').'</td><td>'.$menu->level.'</td><td>'.$langs->trans('DetailLevel').'</td></tr>'; // Titre print '<tr><td>'.$langs->trans('Title').'</td><td><input type="text" size="30" name="titre" value="'.$menu->titre.'"></td><td>'.$langs->trans('DetailTitre').'</td></tr>'; + // Langs print '<tr><td>'.$langs->trans('LangFile').'</td><td><input type="text" size="30" name="langs" value="'.$menu->langs.'"></td><td>'.$langs->trans('DetailLangs').'</td></tr>'; + // Position + print '<tr><td>'.$langs->trans('Position').'</td><td><input type="text" size="5" name="position" value="'.$menu->position.'"></td><td>'.$langs->trans('DetailPosition').'</td></tr>'; + // Url print '<tr><td>'.$langs->trans('URL').'</td><td><input type="text" size="60" name="url" value="'.$menu->url.'"></td><td>'.$langs->trans('DetailUrl').'</td></tr>'; @@ -422,8 +451,8 @@ elseif (isset($_GET["action"]) && $_GET["action"] == 'edit') print '<option value="_new"'.($menu->target=="_new"?' selected="true"':'').'>'.$langs->trans('_new').'</option>'; print '</select></td></td><td>'.$langs->trans('DetailTarget').'</td></tr>'; - // Right - print '<tr><td>'.$langs->trans('Rights').'</td><td><input type="text" size="60" name="right" value="'.$menu->right.'"></td><td>'.$langs->trans('DetailRight').'</td></tr>'; + // Perms + print '<tr><td>'.$langs->trans('Rights').'</td><td><input type="text" size="60" name="perms" value="'.$menu->perms.'"></td><td>'.$langs->trans('DetailRight').'</td></tr>'; // Bouton print '<tr><td colspan="3" align="center"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'">'; diff --git a/htdocs/admin/menus/index.php b/htdocs/admin/menus/index.php index ae2d2a54de6fa71bbd0b35b651bcbfc61f464469..068e00389a61e5a5cc7252c9958f8aec42e26b9d 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 0e331139e743a558872d3875d93454cf8b7406d7..914c21dea1a85ece298f27f137d05814a6da270c 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 '<ul>'; diff --git a/htdocs/includes/menus/barre_top/auguria_frontoffice.php b/htdocs/includes/menus/barre_top/auguria_frontoffice.php index e59d986566ea042d943688d72a96416cf92d7794..3ca9800195d85ea3dd9e3fc0a16d7c75c80d1787 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 '<ul>'; diff --git a/htdocs/includes/menus/barre_top/eldy_backoffice.php b/htdocs/includes/menus/barre_top/eldy_backoffice.php index 98acb0fdf4ed4624e70304acaba23509414bab5d..f1ecc0ff83e8da505715d697fd3c3feebc494c1e 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;$i<count($tabMenu);$i++) { if ($tabMenu[$i]['right'] == true) diff --git a/htdocs/includes/menus/barre_top/eldy_frontoffice.php b/htdocs/includes/menus/barre_top/eldy_frontoffice.php index 3c34204bc1f683ec355eb93952a0dfff3ae5c17c..2bdbe33517f2c0e189e8e5262b839b7154438f85 100644 --- a/htdocs/includes/menus/barre_top/eldy_frontoffice.php +++ b/htdocs/includes/menus/barre_top/eldy_frontoffice.php @@ -375,7 +375,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(1,$_SESSION['mainmenu'],'eldy'); for($i=0;$i<count($tabMenu);$i++) { if ($tabMenu[$i]['right'] == true) diff --git a/htdocs/includes/menus/barre_top/empty.php b/htdocs/includes/menus/barre_top/empty.php index ef0d19ed5fbe7ee384a299790a05bbdb7d2132cf..46998114a5f0ec874bfdd68b9b4d97bbc2246b67 100644 --- a/htdocs/includes/menus/barre_top/empty.php +++ b/htdocs/includes/menus/barre_top/empty.php @@ -71,7 +71,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'],''); for($i=0;$i<count($tabMenu);$i++) { if ($tabMenu[$i]['right'] == true) diff --git a/htdocs/includes/menus/barre_top/rodolphe.php b/htdocs/includes/menus/barre_top/rodolphe.php index 169fa20eec19d7b290b3e024dee80637ba953bd9..0c90634d1fd318a478333a463697b6e6cad25a88 100644 --- a/htdocs/includes/menus/barre_top/rodolphe.php +++ b/htdocs/includes/menus/barre_top/rodolphe.php @@ -377,7 +377,7 @@ class MenuTop { require_once(DOL_DOCUMENT_ROOT."/lib/menubase.class.php"); $menuArbo = new Menubase($this->db,'rodolphe','top'); - $tabMenu = $menuArbo->menutopCharger(0,$_SESSION['mainmenu']); + $tabMenu = $menuArbo->menutopCharger(1,$_SESSION['mainmenu'],'rodolphe'); for($i=0;$i<count($tabMenu);$i++) { if ($tabMenu[$i]['right'] == true) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index b87887650e3e3cb81b1adb219157e1ed7529e45d..7f4d241cb78e45f20dfff401affb13125480f02a 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -46,6 +46,7 @@ MenuSetup=Menus management setup MenuLimits=Limits and accuracy MenuIdParent=Parent menu id DetailMenuIdParent=Id of parent menu (0 for a top menu) +DetailPosition=Sort number to define menu position PersonalizedMenusNotSupported=Personalized menus not supported AllMenus=All NotConfigured=Not configured diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 43dd9dbf78cc6d5df11f3d8431007b9e30215ccf..aee11af84fb2970288bfaae89189882796caf87c 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -45,6 +45,7 @@ UserSetup=Configuration gestion des utilisateurs MenuSetup=Administration des menus par base de donn�es MenuIdParent=Id du menu parent DetailMenuIdParent=Id du menu parent (0 pour un menu du haut) +DetailPosition=Num�ro d'ordre d�terminant la position du menu MenuLimits=Limites et pr�cision PersonalizedMenusNotSupported=Menus personalis�s non g�r�s AllMenus=Tous diff --git a/htdocs/lib/menubase.class.php b/htdocs/lib/menubase.class.php index 2f817b470b7d40dcdee527db6811617b16f7944d..4b3b4155184a8b27961c98688610484966d8d687 100644 --- a/htdocs/lib/menubase.class.php +++ b/htdocs/lib/menubase.class.php @@ -42,14 +42,14 @@ class Menubase var $type; var $mainmenu; var $fk_menu; - var $order; + var $position; var $url; var $target; var $titre; var $langs; var $level; var $leftmenu; - var $right; + var $perms; var $user; var $tms; @@ -82,14 +82,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 @@ -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 8b59448eceaaf87f36b75205d44fc965618c3272..ec09455b676fbcf7382acdafefa286aa427f8e04 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 2b7c0a67ac6633405a76ffd3c81679f6371a668b..d7bdea13b8bf3a7a57c729c2fede2e94d6181bcb 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;