Qual: Make module system more simple.
Change to prepare adding left menu entries by modules
This commit is contained in:
parent
97385865e6
commit
c6ac86430b
@ -65,27 +65,6 @@ if (isset($_GET["action"]) && ($_GET["action"] == 'up'))
|
||||
$current=array();
|
||||
$previous=array();
|
||||
|
||||
// Redefine order
|
||||
/*$sql = "SELECT m.rowid, m.position";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
|
||||
$sql.= " WHERE m.menu_handler='".$menu_handler."'";
|
||||
$sql.= " AND m.entity = ".$conf->entity;
|
||||
$sql.= " ORDER BY m.position, m.rowid";
|
||||
dol_syslog("admin/menus/index.php ".$sql);
|
||||
$resql = $db->query($sql);
|
||||
$num = $db->num_rows($resql);
|
||||
$i = 0;
|
||||
while($i < $num)
|
||||
{
|
||||
$obj = $db->fetch_object($resql);
|
||||
$sqlupdate ="UPDATE ".MAIN_DB_PREFIX."menu as m SET position=".($i+1);
|
||||
$sqlupdate.=" WHERE m.menu_handler='".$menu_handler."'";
|
||||
$sqlupdate.=" AND m.entity = ".$conf->entity;
|
||||
$sqlupdate.=" AND rowid=".$obj->rowid;
|
||||
$resql2 = $db->query($sqlupdate);
|
||||
$i++;
|
||||
}*/
|
||||
|
||||
// Get current position
|
||||
$sql = "SELECT m.rowid, m.position, m.type, m.fk_menu";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
|
||||
@ -223,8 +202,9 @@ if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes')
|
||||
|
||||
$html=new Form($db);
|
||||
$htmladmin=new FormAdmin($db);
|
||||
$arrayofjs=array('/admin/menus/menu.js.php?lang='.$langs->defaultlang);
|
||||
|
||||
llxHeader();
|
||||
llxHeader('',$langs->trans("Menus"),'','',0,0,$arrayofjs);
|
||||
|
||||
|
||||
print_fiche_titre($langs->trans("Menus"),'','setup');
|
||||
@ -292,8 +272,6 @@ $rangLast = 0;
|
||||
$idLast = -1;
|
||||
if ($conf->use_javascript_ajax)
|
||||
{
|
||||
tree_addjs();
|
||||
|
||||
/*-------------------- MAIN -----------------------
|
||||
tableau des elements de l'arbre:
|
||||
c'est un tableau a 2 dimensions.
|
||||
@ -315,6 +293,7 @@ if ($conf->use_javascript_ajax)
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
|
||||
$sql.= " WHERE menu_handler = '".$menu_handler."'";
|
||||
$sql.= " AND entity = ".$conf->entity;
|
||||
$sql.= " AND fk_menu >= 0";
|
||||
$sql.= " ORDER BY m.position, m.rowid"; // Order is position then rowid (because we need a sort criteria when position is same)
|
||||
$res = $db->query($sql);
|
||||
|
||||
|
||||
@ -72,9 +72,9 @@ class Menubase
|
||||
|
||||
|
||||
/**
|
||||
* \brief Create menu entry into database
|
||||
* \param user User that create
|
||||
* \return int <0 si ko, >0 si ok
|
||||
* Create menu entry into database
|
||||
* @param user User that create
|
||||
* @return int <0 if KO, Id of record if OK
|
||||
*/
|
||||
function create($user)
|
||||
{
|
||||
@ -85,14 +85,15 @@ class Menubase
|
||||
$this->module=trim($this->module);
|
||||
$this->type=trim($this->type);
|
||||
$this->mainmenu=trim($this->mainmenu);
|
||||
$this->leftmenu=trim($this->leftmenu);
|
||||
$this->fk_menu=trim($this->fk_menu);
|
||||
$this->fk_mainmenu=trim($this->fk_mainmenu);
|
||||
$this->fk_leftmenu=trim($this->fk_leftmenu);
|
||||
$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->perms=trim($this->perms);
|
||||
$this->enabled=trim($this->enabled);
|
||||
$this->user=trim($this->user);
|
||||
@ -115,14 +116,15 @@ class Menubase
|
||||
$sql.= "module,";
|
||||
$sql.= "type,";
|
||||
$sql.= "mainmenu,";
|
||||
$sql.= "leftmenu,";
|
||||
$sql.= "fk_menu,";
|
||||
$sql.= "fk_mainmenu,";
|
||||
$sql.= "fk_leftmenu,";
|
||||
$sql.= "position,";
|
||||
$sql.= "url,";
|
||||
$sql.= "target,";
|
||||
$sql.= "titre,";
|
||||
$sql.= "langs,";
|
||||
$sql.= "level,";
|
||||
$sql.= "leftmenu,";
|
||||
$sql.= "perms,";
|
||||
$sql.= "enabled,";
|
||||
$sql.= "usertype";
|
||||
@ -132,14 +134,15 @@ class Menubase
|
||||
$sql.= " '".$this->module."',";
|
||||
$sql.= " '".$this->type."',";
|
||||
$sql.= " '".$this->mainmenu."',";
|
||||
$sql.= " '".$this->leftmenu."',";
|
||||
$sql.= " '".$this->fk_menu."',";
|
||||
$sql.= " ".($this->fk_mainmenu?"'".$this->fk_mainmenu."'":"null").",";
|
||||
$sql.= " ".($this->fk_leftmenu?"'".$this->fk_leftmenu."'":"null").",";
|
||||
$sql.= " '".$this->position."',";
|
||||
$sql.= " '".$this->url."',";
|
||||
$sql.= " '".$this->target."',";
|
||||
$sql.= " '".$this->titre."',";
|
||||
$sql.= " '".$this->langs."',";
|
||||
$sql.= " '".$this->level."',";
|
||||
$sql.= " '".$this->leftmenu."',";
|
||||
$sql.= " '".$this->perms."',";
|
||||
$sql.= " '".$this->enabled."',";
|
||||
$sql.= " '".$this->user."'";
|
||||
@ -162,11 +165,11 @@ class Menubase
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* \brief Update database
|
||||
* \param user User that modify
|
||||
* \param notrigger 0=no, 1=yes (no update trigger)
|
||||
* \return int <0 if KO, >0 if OK
|
||||
/**
|
||||
* Update menu entry into database
|
||||
* @param user User that modify
|
||||
* @param notrigger 0=no, 1=yes (no update trigger)
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function update($user=0, $notrigger=0)
|
||||
{
|
||||
@ -178,14 +181,15 @@ class Menubase
|
||||
$this->module=trim($this->module);
|
||||
$this->type=trim($this->type);
|
||||
$this->mainmenu=trim($this->mainmenu);
|
||||
$this->leftmenu=trim($this->leftmenu);
|
||||
$this->fk_menu=trim($this->fk_menu);
|
||||
$this->fk_mainmenu=trim($this->fk_mainmenu);
|
||||
$this->fk_leftmenu=trim($this->fk_leftmenu);
|
||||
$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->perms=trim($this->perms);
|
||||
$this->enabled=trim($this->enabled);
|
||||
$this->user=trim($this->user);
|
||||
@ -199,14 +203,15 @@ class Menubase
|
||||
$sql.= " module='".$this->db->escape($this->module)."',";
|
||||
$sql.= " type='".$this->type."',";
|
||||
$sql.= " mainmenu='".$this->db->escape($this->mainmenu)."',";
|
||||
$sql.= " leftmenu='".$this->db->escape($this->leftmenu)."',";
|
||||
$sql.= " fk_menu='".$this->fk_menu."',";
|
||||
$sql.= " fk_mainmenu=".($this->fk_mainmenu?"'".$this->fk_mainmenu."'":"null").",";
|
||||
$sql.= " fk_leftmenu=".($this->fk_leftmenu?"'".$this->fk_leftmenu."'":"null").",";
|
||||
$sql.= " position='".$this->position."',";
|
||||
$sql.= " url='".$this->db->escape($this->url)."',";
|
||||
$sql.= " target='".$this->db->escape($this->target)."',";
|
||||
$sql.= " titre='".$this->db->escape($this->titre)."',";
|
||||
$sql.= " langs='".$this->db->escape($this->langs)."',";
|
||||
$sql.= " level='".$this->level."',";
|
||||
$sql.= " leftmenu='".$this->db->escape($this->leftmenu)."',";
|
||||
$sql.= " perms='".$this->db->escape($this->perms)."',";
|
||||
$sql.= " enabled='".$this->db->escape($this->enabled)."',";
|
||||
$sql.= " usertype='".$this->user."'";
|
||||
@ -242,14 +247,13 @@ class Menubase
|
||||
$sql.= " t.module,";
|
||||
$sql.= " t.type,";
|
||||
$sql.= " t.mainmenu,";
|
||||
$sql.= " t.leftmenu,";
|
||||
$sql.= " t.fk_menu,";
|
||||
$sql.= " t.position,";
|
||||
$sql.= " t.url,";
|
||||
$sql.= " t.target,";
|
||||
$sql.= " t.titre,";
|
||||
$sql.= " t.langs,";
|
||||
$sql.= " t.level,";
|
||||
$sql.= " t.leftmenu,";
|
||||
$sql.= " t.perms,";
|
||||
$sql.= " t.enabled,";
|
||||
$sql.= " t.usertype as user,";
|
||||
@ -272,14 +276,13 @@ class Menubase
|
||||
$this->module = $obj->module;
|
||||
$this->type = $obj->type;
|
||||
$this->mainmenu = $obj->mainmenu;
|
||||
$this->leftmenu = $obj->leftmenu;
|
||||
$this->fk_menu = $obj->fk_menu;
|
||||
$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->perms = $obj->perms;
|
||||
$this->enabled = str_replace("\"","'",$obj->enabled);
|
||||
$this->user = $obj->user;
|
||||
@ -324,8 +327,8 @@ class Menubase
|
||||
|
||||
|
||||
/**
|
||||
* \brief Initialise object with example values
|
||||
* \remarks id must be 0 if object instance is a specimen.
|
||||
* Initialise object with example values
|
||||
* Id must be 0 if object instance is a specimen.
|
||||
*/
|
||||
function initAsSpecimen()
|
||||
{
|
||||
@ -391,41 +394,6 @@ class Menubase
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return all values of mainmenu where leftmenu defined
|
||||
* in pre.inc.php must be overwritten completely by dynamic menu.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function listeMainmenu()
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$overwritemenufor=array();
|
||||
|
||||
$sql = "SELECT DISTINCT m.mainmenu";
|
||||
$sql.= " FROM " . MAIN_DB_PREFIX . "menu as m";
|
||||
$sql.= " WHERE m.menu_handler in ('".$this->menu_handler."','all')";
|
||||
$sql.= " AND m.entity = ".$conf->entity;
|
||||
$sql.= " AND m.leftmenu != '0'"; // leftmenu exists in database so pre.inc.php must be overwritten
|
||||
|
||||
//print $sql;
|
||||
$res = $this->db->query($sql);
|
||||
if ($res)
|
||||
{
|
||||
while ($menu = $this->db->fetch_array($res))
|
||||
{
|
||||
if ($menu['mainmenu']) $overwritemenufor[] = $menu['mainmenu'];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dol_print_error($this->db);
|
||||
}
|
||||
|
||||
return $overwritemenufor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load tabMenu array
|
||||
* @param type_user 0=Internal,1=External,2=All
|
||||
|
||||
@ -1036,8 +1036,8 @@ class DolibarrModules
|
||||
|
||||
|
||||
/**
|
||||
* \brief Insert menus entries into llx_menu*
|
||||
* \return int Nb of errors (0 if OK)
|
||||
* Insert menus entries found into $this->menu into llx_menu*
|
||||
* @return int Nb of errors (0 if OK)
|
||||
*/
|
||||
function insert_menus()
|
||||
{
|
||||
@ -1063,15 +1063,27 @@ class DolibarrModules
|
||||
else
|
||||
{
|
||||
//print 'xxx'.$this->menu[$key]['fk_menu'];exit;
|
||||
$numparent=$this->menu[$key]['fk_menu'];
|
||||
$numparent=str_replace('r=','',$numparent);
|
||||
if (isset($this->menu[$numparent]['rowid']))
|
||||
$foundparent=0;
|
||||
$fk_parent=$this->menu[$key]['fk_menu'];
|
||||
if (preg_match('/r=/',$fk_parent))
|
||||
{
|
||||
$menu->fk_menu=$this->menu[$numparent]['rowid'];
|
||||
$fk_parent=str_replace('r=','',$fk_parent);
|
||||
if (isset($this->menu[$fk_parent]['rowid']))
|
||||
{
|
||||
$menu->fk_menu=$this->menu[$fk_parent]['rowid'];
|
||||
$foundparent=1;
|
||||
}
|
||||
}
|
||||
else
|
||||
elseif (preg_match('/mainmenu=(.*),leftmenu=(.*)/',$fk_parent,$reg))
|
||||
{
|
||||
$this->error="BadDefinitionOfMenuArrayInModuleDescriptor";
|
||||
$menu->fk_menu=-1;
|
||||
$menu->fk_mainmenu=$reg[1];
|
||||
$menu->fk_leftmenu=$reg[2];
|
||||
$foundparent=1;
|
||||
}
|
||||
if (! $foundparent)
|
||||
{
|
||||
$this->error="ErrorBadDefinitionOfMenuArrayInModuleDescriptor (bad value for key fk_menu)";
|
||||
dol_syslog("DolibarrModules::insert_menus ".$this->error." ".$this->menu[$key]['fk_menu'], LOG_ERR);
|
||||
$err++;
|
||||
}
|
||||
|
||||
@ -43,7 +43,12 @@ ALTER TABLE llx_societe ADD COLUMN fk_currency integer DEFAULT 0 AFTER fk_forme_
|
||||
|
||||
ALTER TABLE llx_societe_remise MODIFY remise_client double(6,3) DEFAULT 0 NOT NULL;
|
||||
|
||||
create table llx_c_availability
|
||||
ALTER TABLE llx_menu ADD COLUMN fk_mainmenu varchar(16) after fk_menu;
|
||||
ALTER TABLE llx_menu ADD COLUMN fk_leftmenu varchar(16) after fk_menu;
|
||||
ALTER TABLE llx_menu MODIFY leftmenu varchar(100) NULL;
|
||||
|
||||
|
||||
CREATE TABLE llx_c_availability
|
||||
(
|
||||
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||
code varchar(30) NOT NULL,
|
||||
@ -55,7 +60,9 @@ create table llx_c_availability
|
||||
ALTER TABLE llx_propal ADD COLUMN fk_availability integer DEFAULT 0 AFTER fk_adresse_livraison;
|
||||
ALTER TABLE llx_propal CHANGE COLUMN delivery fk_availability integer DEFAULT 0;
|
||||
ALTER TABLE llx_availability CHANGE COLUMN libelle label varchar(60) NOT NULL;
|
||||
INSERT INTO llx_c_availability (rowid,code,label,active) VALUES (1, 'DSP', 'Disponible', 1);
|
||||
INSERT INTO llx_c_availability (rowid,code,label,active) VALUES (2, 'USM', 'Une semaine', 1);
|
||||
INSERT INTO llx_c_availability (rowid,code,label,active) VALUES (3, 'DSM', 'Deux semaines', 1);
|
||||
INSERT INTO llx_c_availability (rowid,code,label,active) VALUES (4, 'TSM', 'Trois semaines', 1);
|
||||
|
||||
INSERT INTO llx_c_availability (rowid,code,label,active) VALUES (1, 'AV_NOW', 'Immediate', 1);
|
||||
INSERT INTO llx_c_availability (rowid,code,label,active) VALUES (2, 'AV_1W', 'One week', 1);
|
||||
INSERT INTO llx_c_availability (rowid,code,label,active) VALUES (3, 'AV_2W', 'Two weeks', 1);
|
||||
INSERT INTO llx_c_availability (rowid,code,label,active) VALUES (4, 'AV_3W', 'Three weeks', 1);
|
||||
|
||||
|
||||
@ -29,14 +29,16 @@ CREATE TABLE llx_menu
|
||||
module varchar(64), -- Module name if record is added by a module
|
||||
type varchar(4) NOT NULL, -- Menu top or left
|
||||
mainmenu varchar(100) NOT NULL, -- Name family/module (home, companies, ...)
|
||||
fk_menu integer NOT NULL, -- 0 or Id of mother menu line
|
||||
leftmenu varchar(100) NULL, -- Name family/module for left menu (setup, info, ...)
|
||||
fk_menu integer NOT NULL, -- 0 or Id of mother menu line, or -1 if we use fk_mainmenu and fk_leftmenu
|
||||
fk_mainmenu varchar(16), --
|
||||
fk_leftmenu varchar(16), --
|
||||
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
|
||||
titre varchar(255) NOT NULL, -- Key for menu translation
|
||||
langs varchar(100), -- Lang file to load for translation
|
||||
level smallint, -- Used by auguria menu only. Do not use.
|
||||
leftmenu varchar(1) NULL default '1', -- Say if left menu defined in pre.inc.php and used by top menu must be overwritten by dynamic databse menu (1=yes by default)
|
||||
level smallint, -- Deprecated. Not used.
|
||||
perms varchar(255), -- Condition to show enabled or disabled
|
||||
enabled varchar(255) NULL default '1', -- Condition to show or hide
|
||||
usertype integer NOT NULL default '0', -- 0 if menu for all users, 1 for external only, 2 for internal only
|
||||
|
||||
@ -139,20 +139,12 @@ function tree_showpad(&$fulltree,$key,$selected=0)
|
||||
|
||||
|
||||
|
||||
// ------------------------------- Used by enu editor -----------------
|
||||
// ------------------------------- Used by menu editor -----------------
|
||||
|
||||
/**
|
||||
* \brief Ad javascript tree functions
|
||||
*/
|
||||
function tree_addjs()
|
||||
{
|
||||
global $langs;
|
||||
print '<script src="'.DOL_URL_ROOT.'/admin/menus/menu.js.php?lang='.$langs->defaultlang.'" type="text/javascript"></script>';
|
||||
}
|
||||
|
||||
|
||||
/* cette fonction gere le decallage des elements
|
||||
suivant leur position dans l'arborescence
|
||||
* Show an element with correct offset
|
||||
* @param $tab Array of all elements
|
||||
* @param $rang Level of offset
|
||||
*/
|
||||
function tree_showline($tab,$rang)
|
||||
{
|
||||
@ -220,10 +212,11 @@ function tree_showline($tab,$rang)
|
||||
}
|
||||
|
||||
|
||||
/*fonction r<EFBFBD>cursive d'affichage de l'arbre
|
||||
$tab :tableau des <EFBFBD>l<EFBFBD>ments
|
||||
$pere :index de l'<EFBFBD>l<EFBFBD>ment courant
|
||||
$rang :d<EFBFBD>callage de l'<EFBFBD>l<EFBFBD>ment
|
||||
/**
|
||||
* Recursive function to output menu tree
|
||||
* @param $tab Array of elements
|
||||
* @param $pere Id of parent
|
||||
* @param $rang Level of element
|
||||
*/
|
||||
function tree_recur($tab,$pere,$rang)
|
||||
{
|
||||
@ -232,17 +225,16 @@ function tree_recur($tab,$pere,$rang)
|
||||
if ($rang > 10) return; // Protection contre boucle infinie
|
||||
|
||||
//ballayage du tableau
|
||||
for ($x=0;$x<count($tab);$x++)
|
||||
$sizeoftab=count($tab);
|
||||
for ($x=0; $x < $sizeoftab; $x++)
|
||||
{
|
||||
//si un <20>l<EFBFBD>ment a pour p<>re : $pere
|
||||
// If an element has $pere for parent
|
||||
if ($tab[$x][1]==$pere)
|
||||
{
|
||||
//on l'affiche avec le d<>callage courrant
|
||||
// We shot it with an offset
|
||||
tree_showline($tab[$x],$rang);
|
||||
|
||||
/*et on recherche ses fils
|
||||
en rappelant la fonction recur()
|
||||
(+ incr<EFBFBD>mentation du d<EFBFBD>callage)*/
|
||||
// And now we search all its sons of lower level
|
||||
tree_recur($tab,$tab[$x][0],$rang+1);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user