Fix: Debuggage editeur de menu

This commit is contained in:
Laurent Destailleur 2008-01-12 16:14:14 +00:00
parent 4ff8d0a97c
commit 68bb7a3c14
13 changed files with 124 additions and 94 deletions

View File

@ -62,14 +62,31 @@ if (isset($_GET["action"]) && $_GET["action"] == 'update')
{ {
if (! $_POST['cancel']) if (! $_POST['cancel'])
{ {
$menu = new Menubase($db);
$sql = "UPDATE ".MAIN_DB_PREFIX."menu as m"; $result=$menu->fetch($_POST['menuId']);
$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']; if ($result > 0)
$sql.=" WHERE m.rowid = ".$_POST['menuId'];
$resql=$db->query($sql);
if ($resql > 0)
{ {
$mesg='<div class="ok">'.$langs->trans("RecordModifiedSuccessfully").'</div>'; $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="error">'.$menu->error.'</div>';
} }
$_GET["menuId"]=$_POST['menuId']; $_GET["menuId"]=$_POST['menuId'];
$_GET["action"]="edit"; $_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"; $sql = "SELECT max(m.rowid) as maxId FROM ".MAIN_DB_PREFIX."menu as m";
$result = $db->query($sql); $result = $db->query($sql);
$lastMenu = $db->fetch_object($result); $obj = $db->fetch_object($result);
$rowid = $lastMenu->maxId + 1; $rowid = $obj->maxId + 1;
// On prend le max de toutes celles qui auront le meme pere fk_menu // 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); $result = $db->query($sql);
$lastMenu = $db->fetch_object($result); $obj = $db->fetch_object($result);
if ($lastMenu) $order = $lastMenu->maxOrder + 1; if ($obj) $position = $obj->maxOrder + 1;
else else
{ {
dolibarr_print_error($db); dolibarr_print_error($db);
@ -161,8 +178,8 @@ if (isset($_GET["action"]) && $_GET["action"] == 'add')
if (! $error) 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 = "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['right']."','".$_POST['target']."',".$_POST['user'].",0)"; $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); dolibarr_syslog("edit: insert menu entry sql=".$sql);
$result=$db->query($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><input type="text" size="10" name="menuId" value="'.$parent_rowid.'"></td>';
print '<td>'.$langs->trans('DetailMenuIdParent').'</td></tr>'; print '<td>'.$langs->trans('DetailMenuIdParent').'</td></tr>';
//Handler // Handler
print '<tr><td><b>'.$langs->trans('MenuHandler').'</b></td>'; print '<tr><td><b>'.$langs->trans('MenuHandler').'</b></td>';
print '<td>'; print '<td>';
print $htmladmin->select_menu_families($menu_handler,'menu_handler',$dirleft); print $htmladmin->select_menu_families($menu_handler,'menu_handler',$dirleft);
print '</td>'; print '</td>';
print '<td>'.$langs->trans('DetailMenuHandler').'</td></tr>'; 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 // Type
print '<tr><td><b>'.$langs->trans('Type').'</b></td><td>'; print '<tr><td><b>'.$langs->trans('Type').'</b></td><td>';
print '<select name="type" class="flat">'; print '<select name="type" class="flat">';
@ -337,27 +363,26 @@ if (isset($_GET["action"]) && $_GET["action"] == 'create')
print '</select>'; print '</select>';
// print '<input type="text" size="50" name="type" value="'.$type.'">'; // print '<input type="text" size="50" name="type" value="'.$type.'">';
print '</td><td>'.$langs->trans('DetailType').'</td></tr>'; 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 //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>'; 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 //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>'; 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 //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>'; 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 //Target
print '<tr><td>'.$langs->trans('Target').'</td><td><select class="flat" name="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=""'.($menu->target==""?' selected="true"':'').'>'.$langs->trans('').'</option>';
print '<option value="_new"'.($menu->target=="_new"?' selected="true"':'').'>'.$langs->trans('_new').'</option>'; print '<option value="_new"'.($menu->target=="_new"?' selected="true"':'').'>'.$langs->trans('_new').'</option>';
print '</select></td></td><td>'.$langs->trans('DetailTarget').'</td></tr>'; print '</select></td></td><td>'.$langs->trans('DetailTarget').'</td></tr>';
//Right //Perms
print '<tr><td>'.$langs->trans('Rights').'</td><td><input type="text" size="60" name="right" value=""></td><td>'.$langs->trans('DetailRight').'</td></tr>'; print '<tr><td>'.$langs->trans('Rights').'</td><td><input type="text" size="60" name="perms" value=""></td><td>'.$langs->trans('DetailRight').'</td></tr>';
// Boutons // Boutons
print '<tr><td colspan="3" align="center"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'">'; 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 // Handler
print '<tr><td>'.$langs->trans('MenuHandler').'</td><td>'.$menu->menu_handler.'</td><td>'.$langs->trans('DetailMenuHandler').'</td></tr>'; 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 '<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="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="0"'.($menu->user==0?' selected="true"':'').'>'.$langs->trans('Interne').'</option>';
print '<option value="1"'.($menu->user==1?' selected="true"':'').'>'.$langs->trans('Externe').'</option>'; print '<option value="1"'.($menu->user==1?' selected="true"':'').'>'.$langs->trans('Externe').'</option>';
print '</select></td><td>'.$langs->trans('DetailUser').'</td></tr>'; 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 // Niveau
//print '<tr><td>'.$langs->trans('Level').'</td><td>'.$menu->level.'</td><td>'.$langs->trans('DetailLevel').'</td></tr>'; //print '<tr><td>'.$langs->trans('Level').'</td><td>'.$menu->level.'</td><td>'.$langs->trans('DetailLevel').'</td></tr>';
// Titre // 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>'; 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 // 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>'; 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 // 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>'; 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 '<option value="_new"'.($menu->target=="_new"?' selected="true"':'').'>'.$langs->trans('_new').'</option>';
print '</select></td></td><td>'.$langs->trans('DetailTarget').'</td></tr>'; print '</select></td></td><td>'.$langs->trans('DetailTarget').'</td></tr>';
// Right // Perms
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>'; 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 // Bouton
print '<tr><td colspan="3" align="center"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'">'; print '<tr><td colspan="3" align="center"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'">';

View File

@ -58,44 +58,44 @@ if ($_REQUEST["menu_handler"]) $menu_handler=$_REQUEST["menu_handler"];
if (isset($_GET["action"]) && $_GET["action"] == 'up') 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"]; $sql.= " WHERE m.rowid = ".$_GET["menuId"];
$result = $db->query($sql); $result = $db->query($sql);
$num = $db->num_rows(); $num = $db->num_rows($result);
$i = 0; $i = 0;
while($i < $num) while($i < $num)
{ {
$obj = $db->fetch_object($result); $obj = $db->fetch_object($result);
$precedent['rowid'] = $obj->rowid; $precedent['rowid'] = $obj->rowid;
$precedent['order'] = $obj->order; $precedent['order'] = $obj->position;
$i++; $i++;
} }
// Menu top // Menu top
$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.order = ".($precedent['order'] - 1)." AND m.type = 'top'"; $sql.= " WHERE m.position = ".($precedent['order'] - 1)." AND m.type = 'top'";
$sql.= " AND menu_handler='".$menu_handler_top."'"; $sql.= " AND menu_handler='".$menu_handler_top."'";
$result = $db->query($sql); $result = $db->query($sql);
$num = $db->num_rows(); $num = $db->num_rows($result);
$i = 0; $i = 0;
while($i < $num) while($i < $num)
{ {
$obj = $db->fetch_object($result); $obj = $db->fetch_object($result);
$suivant['rowid'] = $obj->rowid; $suivant['rowid'] = $obj->rowid;
$suivant['order'] = $obj->order; $suivant['order'] = $obj->position;
$i++; $i++;
} }
$sql = "UPDATE ".MAIN_DB_PREFIX."menu as m"; $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 $sql.= " WHERE m.rowid = ".$precedent['rowid'].""; // Monte celui select
$db->query($sql); $db->query($sql);
$sql = "UPDATE ".MAIN_DB_PREFIX."menu as m"; $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 $sql.= " WHERE m.rowid = ".$suivant['rowid'].""; // Descend celui du dessus
$db->query($sql); $db->query($sql);
} }
@ -103,39 +103,39 @@ if (isset($_GET["action"]) && $_GET["action"] == 'up')
if (isset($_GET["action"]) && $_GET["action"] == 'down') 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); $result = $db->query($sql);
$num = $db->num_rows(); $num = $db->num_rows($result);
$i = 0; $i = 0;
while($i < $num) while($i < $num)
{ {
$obj = $db->fetch_object($result); $obj = $db->fetch_object($result);
$precedent['rowid'] = $obj->rowid; $precedent['rowid'] = $obj->rowid;
$precedent['order'] = $obj->order; $precedent['order'] = $obj->position;
$i++; $i++;
} }
$sql = "SELECT m.rowid, m.order"; $sql = "SELECT m.rowid, m.position";
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m"; $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); $result = $db->query($sql);
$num = $db->num_rows(); $num = $db->num_rows($result);
$i = 0; $i = 0;
while($i < $num) while($i < $num)
{ {
$obj = $db->fetch_object($result); $obj = $db->fetch_object($result);
$suivant['rowid'] = $obj->rowid; $suivant['rowid'] = $obj->rowid;
$suivant['order'] = $obj->order; $suivant['order'] = $obj->position;
$i++; $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); $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); $db->query($sql);
} }
@ -277,7 +277,7 @@ if ($conf->use_javascript_ajax)
$sql = "SELECT m.rowid, m.fk_menu, m.titre, m.langs"; $sql = "SELECT m.rowid, m.fk_menu, m.titre, m.langs";
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m"; $sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
$sql.= " WHERE menu_handler='".$menu_handler."'"; $sql.= " WHERE menu_handler='".$menu_handler."'";
$sql.= " ORDER BY m.order, m.rowid"; $sql.= " ORDER BY m.position, m.rowid";
$res = $db->query($sql); $res = $db->query($sql);
if ($res) if ($res)

View File

@ -86,7 +86,7 @@ class MenuTop {
$menuArbo = new Menubase($this->db,'auguria','top'); $menuArbo = new Menubase($this->db,'auguria','top');
$tabMenu = $menuArbo->menutopCharger(0,$_SESSION['mainmenu']); $tabMenu = $menuArbo->menutopCharger(0,$_SESSION['mainmenu'], 'auguria');
print '<ul>'; print '<ul>';

View File

@ -86,7 +86,7 @@ class MenuTop {
$menuArbo = new Menubase($this->db,'auguria','top'); $menuArbo = new Menubase($this->db,'auguria','top');
$tabMenu = $menuArbo->menutopCharger(1,$_SESSION['mainmenu']); $tabMenu = $menuArbo->menutopCharger(1,$_SESSION['mainmenu'], 'auguria');
print '<ul>'; print '<ul>';

View File

@ -429,7 +429,7 @@ class MenuTop {
require_once(DOL_DOCUMENT_ROOT."/lib/menubase.class.php"); require_once(DOL_DOCUMENT_ROOT."/lib/menubase.class.php");
$menuArbo = new Menubase($this->db,'eldy','top'); $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++) for($i=0;$i<count($tabMenu);$i++)
{ {
if ($tabMenu[$i]['right'] == true) if ($tabMenu[$i]['right'] == true)

View File

@ -375,7 +375,7 @@ class MenuTop {
require_once(DOL_DOCUMENT_ROOT."/lib/menubase.class.php"); require_once(DOL_DOCUMENT_ROOT."/lib/menubase.class.php");
$menuArbo = new Menubase($this->db,'eldy','top'); $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++) for($i=0;$i<count($tabMenu);$i++)
{ {
if ($tabMenu[$i]['right'] == true) if ($tabMenu[$i]['right'] == true)

View File

@ -71,7 +71,7 @@ class MenuTop {
require_once(DOL_DOCUMENT_ROOT."/lib/menubase.class.php"); require_once(DOL_DOCUMENT_ROOT."/lib/menubase.class.php");
$menuArbo = new Menubase($this->db,'eldy','top'); $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++) for($i=0;$i<count($tabMenu);$i++)
{ {
if ($tabMenu[$i]['right'] == true) if ($tabMenu[$i]['right'] == true)

View File

@ -377,7 +377,7 @@ class MenuTop {
require_once(DOL_DOCUMENT_ROOT."/lib/menubase.class.php"); require_once(DOL_DOCUMENT_ROOT."/lib/menubase.class.php");
$menuArbo = new Menubase($this->db,'rodolphe','top'); $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++) for($i=0;$i<count($tabMenu);$i++)
{ {
if ($tabMenu[$i]['right'] == true) if ($tabMenu[$i]['right'] == true)

View File

@ -46,6 +46,7 @@ MenuSetup=Menus management setup
MenuLimits=Limits and accuracy MenuLimits=Limits and accuracy
MenuIdParent=Parent menu id MenuIdParent=Parent menu id
DetailMenuIdParent=Id of parent menu (0 for a top menu) DetailMenuIdParent=Id of parent menu (0 for a top menu)
DetailPosition=Sort number to define menu position
PersonalizedMenusNotSupported=Personalized menus not supported PersonalizedMenusNotSupported=Personalized menus not supported
AllMenus=All AllMenus=All
NotConfigured=Not configured NotConfigured=Not configured

View File

@ -45,6 +45,7 @@ UserSetup=Configuration gestion des utilisateurs
MenuSetup=Administration des menus par base de données MenuSetup=Administration des menus par base de données
MenuIdParent=Id du menu parent MenuIdParent=Id du menu parent
DetailMenuIdParent=Id du menu parent (0 pour un menu du haut) 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 MenuLimits=Limites et précision
PersonalizedMenusNotSupported=Menus personalisés non gérés PersonalizedMenusNotSupported=Menus personalisés non gérés
AllMenus=Tous AllMenus=Tous

View File

@ -42,14 +42,14 @@ class Menubase
var $type; var $type;
var $mainmenu; var $mainmenu;
var $fk_menu; var $fk_menu;
var $order; var $position;
var $url; var $url;
var $target; var $target;
var $titre; var $titre;
var $langs; var $langs;
var $level; var $level;
var $leftmenu; var $leftmenu;
var $right; var $perms;
var $user; var $user;
var $tms; var $tms;
@ -82,14 +82,14 @@ class Menubase
$this->type=trim($this->type); $this->type=trim($this->type);
$this->mainmenu=trim($this->mainmenu); $this->mainmenu=trim($this->mainmenu);
$this->fk_menu=trim($this->fk_menu); $this->fk_menu=trim($this->fk_menu);
$this->order=trim($this->order); $this->position=trim($this->position);
$this->url=trim($this->url); $this->url=trim($this->url);
$this->target=trim($this->target); $this->target=trim($this->target);
$this->titre=trim($this->titre); $this->titre=trim($this->titre);
$this->langs=trim($this->langs); $this->langs=trim($this->langs);
$this->level=trim($this->level); $this->level=trim($this->level);
$this->leftmenu=trim($this->leftmenu); $this->leftmenu=trim($this->leftmenu);
$this->right=trim($this->right); $this->perms=trim($this->perms);
$this->user=trim($this->user); $this->user=trim($this->user);
// Check parameters // Check parameters
@ -101,31 +101,29 @@ class Menubase
$sql.= "type,"; $sql.= "type,";
$sql.= "mainmenu,"; $sql.= "mainmenu,";
$sql.= "fk_menu,"; $sql.= "fk_menu,";
$sql.= "order,"; $sql.= "position,";
$sql.= "url,"; $sql.= "url,";
$sql.= "target,"; $sql.= "target,";
$sql.= "titre,"; $sql.= "titre,";
$sql.= "langs,"; $sql.= "langs,";
$sql.= "level,"; $sql.= "level,";
$sql.= "leftmenu,"; $sql.= "leftmenu,";
$sql.= "right,"; $sql.= "perms,";
$sql.= "user,"; $sql.= "user";
$sql.= "tms";
$sql.= ") VALUES ("; $sql.= ") VALUES (";
$sql.= " '".$this->menu_handler."',"; $sql.= " '".$this->menu_handler."',";
$sql.= " '".$this->type."',"; $sql.= " '".$this->type."',";
$sql.= " '".$this->mainmenu."',"; $sql.= " '".$this->mainmenu."',";
$sql.= " '".$this->fk_menu."',"; $sql.= " '".$this->fk_menu."',";
$sql.= " '".$this->order."',"; $sql.= " '".$this->position."',";
$sql.= " '".$this->url."',"; $sql.= " '".$this->url."',";
$sql.= " '".$this->target."',"; $sql.= " '".$this->target."',";
$sql.= " '".$this->titre."',"; $sql.= " '".$this->titre."',";
$sql.= " '".$this->langs."',"; $sql.= " '".$this->langs."',";
$sql.= " '".$this->level."',"; $sql.= " '".$this->level."',";
$sql.= " '".$this->leftmenu."',"; $sql.= " '".$this->leftmenu."',";
$sql.= " '".$this->right."',"; $sql.= " '".$this->perms."',";
$sql.= " '".$this->user."',"; $sql.= " '".$this->user."'";
$sql.= " ".$this->db->idate($this->tms)."";
$sql.= ")"; $sql.= ")";
dolibarr_syslog("Menu::create sql=".$sql, LOG_DEBUG); dolibarr_syslog("Menu::create sql=".$sql, LOG_DEBUG);
@ -167,14 +165,14 @@ class Menubase
$this->type=trim($this->type); $this->type=trim($this->type);
$this->mainmenu=trim($this->mainmenu); $this->mainmenu=trim($this->mainmenu);
$this->fk_menu=trim($this->fk_menu); $this->fk_menu=trim($this->fk_menu);
$this->order=trim($this->order); $this->position=trim($this->position);
$this->url=trim($this->url); $this->url=trim($this->url);
$this->target=trim($this->target); $this->target=trim($this->target);
$this->titre=trim($this->titre); $this->titre=trim($this->titre);
$this->langs=trim($this->langs); $this->langs=trim($this->langs);
$this->level=trim($this->level); $this->level=trim($this->level);
$this->leftmenu=trim($this->leftmenu); $this->leftmenu=trim($this->leftmenu);
$this->right=trim($this->right); $this->perms=trim($this->perms);
$this->user=trim($this->user); $this->user=trim($this->user);
// Check parameters // Check parameters
@ -186,16 +184,15 @@ class Menubase
$sql.= " type='".$this->type."',"; $sql.= " type='".$this->type."',";
$sql.= " mainmenu='".addslashes($this->mainmenu)."',"; $sql.= " mainmenu='".addslashes($this->mainmenu)."',";
$sql.= " fk_menu='".$this->fk_menu."',"; $sql.= " fk_menu='".$this->fk_menu."',";
$sql.= " order='".$this->order."',"; $sql.= " position='".$this->position."',";
$sql.= " url='".addslashes($this->url)."',"; $sql.= " url='".addslashes($this->url)."',";
$sql.= " target='".addslashes($this->target)."',"; $sql.= " target='".addslashes($this->target)."',";
$sql.= " titre='".addslashes($this->titre)."',"; $sql.= " titre='".addslashes($this->titre)."',";
$sql.= " langs='".addslashes($this->langs)."',"; $sql.= " langs='".addslashes($this->langs)."',";
$sql.= " level='".$this->level."',"; $sql.= " level='".$this->level."',";
$sql.= " leftmenu='".addslashes($this->leftmenu)."',"; $sql.= " leftmenu='".addslashes($this->leftmenu)."',";
$sql.= " right='".addslashes($this->right)."',"; $sql.= " perms='".addslashes($this->perms)."',";
$sql.= " user='".$this->user."',"; $sql.= " user='".$this->user."'";
$sql.= " tms=".$this->db->idate($this->tms)."";
$sql.= " WHERE rowid=".$this->id; $sql.= " WHERE rowid=".$this->id;
dolibarr_syslog("Menu::update sql=".$sql, LOG_DEBUG); dolibarr_syslog("Menu::update sql=".$sql, LOG_DEBUG);
@ -237,14 +234,14 @@ class Menubase
$sql.= " t.type,"; $sql.= " t.type,";
$sql.= " t.mainmenu,"; $sql.= " t.mainmenu,";
$sql.= " t.fk_menu,"; $sql.= " t.fk_menu,";
$sql.= " t.order,"; $sql.= " t.position,";
$sql.= " t.url,"; $sql.= " t.url,";
$sql.= " t.target,"; $sql.= " t.target,";
$sql.= " t.titre,"; $sql.= " t.titre,";
$sql.= " t.langs,"; $sql.= " t.langs,";
$sql.= " t.level,"; $sql.= " t.level,";
$sql.= " t.leftmenu,"; $sql.= " t.leftmenu,";
$sql.= " t.right,"; $sql.= " t.perms,";
$sql.= " t.user,"; $sql.= " t.user,";
$sql.= " ".$this->db->pdate('t.tms').""; $sql.= " ".$this->db->pdate('t.tms')."";
$sql.= " FROM ".MAIN_DB_PREFIX."menu as t"; $sql.= " FROM ".MAIN_DB_PREFIX."menu as t";
@ -264,14 +261,14 @@ class Menubase
$this->type = $obj->type; $this->type = $obj->type;
$this->mainmenu = $obj->mainmenu; $this->mainmenu = $obj->mainmenu;
$this->fk_menu = $obj->fk_menu; $this->fk_menu = $obj->fk_menu;
$this->order = $obj->order; $this->position = $obj->position;
$this->url = $obj->url; $this->url = $obj->url;
$this->target = $obj->target; $this->target = $obj->target;
$this->titre = $obj->titre; $this->titre = $obj->titre;
$this->langs = $obj->langs; $this->langs = $obj->langs;
$this->level = $obj->level; $this->level = $obj->level;
$this->leftmenu = $obj->leftmenu; $this->leftmenu = $obj->leftmenu;
$this->right = $obj->right; $this->perms = $obj->perms;
$this->user = $obj->user; $this->user = $obj->user;
$this->tms = $obj->tms; $this->tms = $obj->tms;
} }
@ -332,14 +329,14 @@ class Menubase
$this->type=''; $this->type='';
$this->mainmenu=''; $this->mainmenu='';
$this->fk_menu=''; $this->fk_menu='';
$this->order=''; $this->position='';
$this->url=''; $this->url='';
$this->target=''; $this->target='';
$this->titre=''; $this->titre='';
$this->langs=''; $this->langs='';
$this->level=''; $this->level='';
$this->leftmenu=''; $this->leftmenu='';
$this->right=''; $this->perms='';
$this->user=''; $this->user='';
$this->tms=''; $this->tms='';
} }
@ -363,12 +360,12 @@ class Menubase
$data[] = array ($menutop->rowid,-1,$this->mainmenu); $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.= " FROM " . MAIN_DB_PREFIX . "menu as m";
$sql.= " WHERE m.menu_handler= '".$this->menu_handler."'"; $sql.= " WHERE m.menu_handler= '".$this->menu_handler."'";
if($type_user == 0) $sql.= " AND m.user <> 1"; if($type_user == 0) $sql.= " AND m.user <> 1";
else $sql.= " AND m.user > 0"; 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); $res = $this->db->query($sql);
if ($res) if ($res)
@ -513,29 +510,29 @@ class Menubase
} }
function menutopCharger($type_user,$mainmenu) function menutopCharger($type_user, $mainmenu, $menu_handler)
{ {
global $langs, $user, $conf; 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.= " FROM ".MAIN_DB_PREFIX."menu as m";
$sql.= " WHERE m.type = 'top'"; $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"; if($type_user == 0) $sql.= " AND m.user <> 1";
else $sql.= " AND m.user > 0"; 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); $resql = $this->db->query($sql);
if ($result) if ($resql)
{ {
$numa = $this->db->num_rows(); $numa = $this->db->num_rows($resql);
$a = 0; $a = 0;
$b = 0; $b = 0;
while ($a < $numa) while ($a < $numa)
{ {
// Affichage entete menu // Affichage entete menu
$objm = $this->db->fetch_object($result); $objm = $this->db->fetch_object($resql);
if ($this->verifConstraint($objm->rowid)) if ($this->verifConstraint($objm->rowid))
{ {
@ -550,9 +547,9 @@ class Menubase
$right = true; $right = true;
if ($objm->right) if ($objm->perms)
{ {
$str = "if(!(".$objm->right.")) \$right = false;"; $str = "if(!(".$objm->perms.")) \$right = false;";
eval($str); eval($str);
} }

View File

@ -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_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 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; alter table llx_menu add column tms timestamp;

View File

@ -28,7 +28,7 @@ CREATE TABLE `llx_menu` (
mainmenu varchar(100) NOT NULL, -- Name family/module (home, companies, ...) mainmenu varchar(100) NOT NULL, -- Name family/module (home, companies, ...)
fk_menu int(11) NOT NULL, -- 0 or Id of mother menu line 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 url varchar(255) NOT NULL, -- Relative (or absolute) url to go
target varchar(100) NULL, -- Target of Url link 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. level tinyint(1), -- Used by auguria menu only. Do not use.
leftmenu varchar(100) NULL, -- Condition to show or hide 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 user integer NOT NULL default '0', -- 0 if menu for all users, 1 for external only, 2 for internal only
tms timestamp tms timestamp
) type=innodb; ) type=innodb;