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'])
{
$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='<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["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").'">';

View File

@ -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)

View File

@ -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>';

View File

@ -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>';

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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);
}

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 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;

View File

@ -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;