Fix: problem with web address in menu

This commit is contained in:
Regis Houssin 2009-04-03 14:43:33 +00:00
parent e489529f22
commit f5d1148ee9
2 changed files with 90 additions and 87 deletions

View File

@ -216,62 +216,62 @@ class Menubase
{ {
global $langs; global $langs;
$sql = "SELECT"; $sql = "SELECT";
$sql.= " t.rowid,"; $sql.= " t.rowid,";
$sql.= " t.menu_handler,"; $sql.= " t.menu_handler,";
$sql.= " t.module,"; $sql.= " t.module,";
$sql.= " t.type,"; $sql.= " t.type,";
$sql.= " t.mainmenu,"; $sql.= " t.mainmenu,";
$sql.= " t.fk_menu,"; $sql.= " t.fk_menu,";
$sql.= " t.position,"; $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.perms,"; $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";
$sql.= " WHERE t.rowid = ".$id; $sql.= " WHERE t.rowid = ".$id;
dol_syslog("Menubase::fetch sql=".$sql, LOG_DEBUG); dol_syslog("Menubase::fetch sql=".$sql, LOG_DEBUG);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
{
if ($this->db->num_rows($resql))
{ {
if ($this->db->num_rows($resql)) $obj = $this->db->fetch_object($resql);
{
$obj = $this->db->fetch_object($resql);
$this->id = $obj->rowid; $this->id = $obj->rowid;
$this->menu_handler = $obj->menu_handler; $this->menu_handler = $obj->menu_handler;
$this->module = $obj->module; $this->module = $obj->module;
$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->position = $obj->position; $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->perms = $obj->perms; $this->perms = $obj->perms;
$this->user = $obj->user; $this->user = $obj->user;
$this->tms = $obj->tms; $this->tms = $obj->tms;
}
$this->db->free($resql);
return 1;
}
else
{
$this->error="Error ".$this->db->lasterror();
dol_syslog("Menubase::fetch ".$this->error, LOG_ERR);
return -1;
} }
$this->db->free($resql);
return 1;
}
else
{
$this->error="Error ".$this->db->lasterror();
dol_syslog("Menubase::fetch ".$this->error, LOG_ERR);
return -1;
}
} }
@ -372,55 +372,58 @@ class Menubase
//$objm = $this->db->fetch_object($resql); //$objm = $this->db->fetch_object($resql);
$menu = $this->db->fetch_array($resql); $menu = $this->db->fetch_array($resql);
// Define $chaine // Define $chaine
$chaine=""; $chaine="";
$title = $langs->trans($menu['titre']); $title = $langs->trans($menu['titre']);
if ($title == $menu['titre'] && ! empty($menu['langs'])) if ($title == $menu['titre'] && ! empty($menu['langs']))
{ {
$title = $langs->trans($menu['titre']); $title = $langs->trans($menu['titre']);
$langs->load($menu['langs']); $langs->load($menu['langs']);
} }
if (eregi("/",$title)) if (eregi("/",$title))
{ {
$tab_titre = explode("/",$title); $tab_titre = explode("/",$title);
$chaine = $langs->trans($tab_titre[0])."/".$langs->trans($tab_titre[1]); $chaine = $langs->trans($tab_titre[0])."/".$langs->trans($tab_titre[1]);
} }
else else
{ {
$chaine = $langs->trans($title); $chaine = $langs->trans($title);
} }
// Define $right // Define $right
$perms = true; $perms = true;
if ($menu['perms']) if ($menu['perms'])
{ {
$perms = $this->verifCond($menu['perms']); $perms = $this->verifCond($menu['perms']);
//print "verifCond rowid=".$menu['rowid']." ".$menu['right'].":".$perms."<br>\n"; //print "verifCond rowid=".$menu['rowid']." ".$menu['right'].":".$perms."<br>\n";
} }
// Define $constraint // Define $constraint
$constraint = true; $constraint = true;
if ($menu['action']) if ($menu['action'])
{ {
$constraint = $this->verifCond($menu['action']); $constraint = $this->verifCond($menu['action']);
//print "verifCond rowid=".$menu['rowid']." ".$menu['action'].":".$constraint."<br>\n"; //print "verifCond rowid=".$menu['rowid']." ".$menu['action'].":".$constraint."<br>\n";
} }
if ($menu['rowid'] != $oldrowid && $oldrowid) $b++; // Break on new entry if ($menu['rowid'] != $oldrowid && $oldrowid) $b++; // Break on new entry
$oldrowid=$menu['rowid']; $oldrowid=$menu['rowid'];
$tabMenu[$b][0] = $menu['rowid']; $tabMenu[$b][0] = $menu['rowid'];
$tabMenu[$b][1] = $menu['fk_menu']; $tabMenu[$b][1] = $menu['fk_menu'];
$tabMenu[$b][2] = $menu['url']; $tabMenu[$b][2] = $menu['url'];
if (eregi('\?',$tabMenu[$b][2])) $tabMenu[$b][2].='&amp;idmenu='.$menu['rowid']; if (!valid_url($tabMenu[$b][2],1))
else $tabMenu[$b][2].='?idmenu='.$menu['rowid']; {
if (eregi('\?',$tabMenu[$b][2])) $tabMenu[$b][2].='&amp;idmenu='.$menu['rowid'];
else $tabMenu[$b][2].='?idmenu='.$menu['rowid'];
}
$tabMenu[$b][3] = $chaine; $tabMenu[$b][3] = $chaine;
$tabMenu[$b][5] = $menu['target']; $tabMenu[$b][5] = $menu['target'];
$tabMenu[$b][6] = $menu['leftmenu']; $tabMenu[$b][6] = $menu['leftmenu'];
if (! isset($tabMenu[$b][4])) $tabMenu[$b][4] = $perms; if (! isset($tabMenu[$b][4])) $tabMenu[$b][4] = $perms;
else $tabMenu[$b][4] = ($tabMenu[$b][4] && $perms); else $tabMenu[$b][4] = ($tabMenu[$b][4] && $perms);
if (! isset($tabMenu[$b][7])) $tabMenu[$b][7] = $constraint; if (! isset($tabMenu[$b][7])) $tabMenu[$b][7] = $constraint;
else $tabMenu[$b][7] = ($tabMenu[$b][7] && $constraint); else $tabMenu[$b][7] = ($tabMenu[$b][7] && $constraint);
$a++; $a++;
} }
@ -482,7 +485,7 @@ class Menubase
{ {
// print "x".$pere." ".$tab[$x][6]; // print "x".$pere." ".$tab[$x][6];
$this->newmenu->add_submenu(DOL_URL_ROOT . $tab[$x][2], $tab[$x][3], $rang -1, $tab[$x][4], $tab[$x][5]); $this->newmenu->add_submenu((!valid_url($tab[$x][2],1)) ? DOL_URL_ROOT . $tab[$x][2] : $tab[$x][2], $tab[$x][3], $rang -1, $tab[$x][4], $tab[$x][5]);
$this->recur($tab, $tab[$x][0], $rang +1); $this->recur($tab, $tab[$x][0], $rang +1);
} }
} }

View File

@ -880,9 +880,9 @@ class MenuLeft {
} }
// Affichage des menus personnalises // Affichage des menus personnalises
require_once(DOL_DOCUMENT_ROOT."/core/menubase.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/menubase.class.php");
$menuArbo = new Menubase($this->db,'eldy','left'); $menuArbo = new Menubase($this->db,'eldy','left');
$this->overwritemenufor = $menuArbo->listeMainmenu(); $this->overwritemenufor = $menuArbo->listeMainmenu();
// Add other mainmenu to the list of menu to overwrite pre.inc.php // Add other mainmenu to the list of menu to overwrite pre.inc.php
$overwritemenumore=array('home','companies','members','products','suppliers','commercial','accountancy','agenda','project','tools','ecm'); $overwritemenumore=array('home','companies','members','products','suppliers','commercial','accountancy','agenda','project','tools','ecm');