New: Modif pour gerer insertion entree menu depuis module activ.

This commit is contained in:
Laurent Destailleur 2008-01-14 20:54:15 +00:00
parent 1778b88f35
commit 155a4e89b5
14 changed files with 152 additions and 81 deletions

View File

@ -97,15 +97,16 @@ class modMyModule extends DolibarrModules
// Permissions
$this->rights = array(); // Permission array used by this module
$r=0;
// Add here list of permission defined by an id, a label, a boolean and two constant strings.
// Example:
// $r++;
// $this->rights[$r][0] = 2000; // Permission id (must not be already used)
// $this->rights[$r][1] = 'Permision label'; // Permission label
// $this->rights[$r][3] = 1; // Permission by default for new user (0/1)
// $this->rights[$r][4] = 'level1'; // In php code, permission will be checked by test if ($user->rights->permkey->level1->level2)
// $this->rights[$r][5] = 'level2'; // In php code, permission will be checked by test if ($user->rights->permkey->level1->level2)
// $r++;
// Main menu entries
$this->menus = array(); // List of menus to add

View File

@ -27,7 +27,7 @@
\remarks Toutes les entr<EFBFBD>es de menu <EFBFBD> faire apparaitre dans la barre du haut
\remarks doivent <EFBFBD>tre affich<EFBFBD>es par <a class="tmenu" href="...?mainmenu=...">...</a>
\remarks On peut <EFBFBD>ventuellement ajouter l'attribut id="sel" dans la balise <a>
\remarks quand il s'agit de l'entr<EFBFBD>e du menu qui est s<EFBFBD>lectionn<EFBFBD>e.
\remarks quand il s'agit de l'entr<EFBFBD>e du menu qui est selectionnee.
*/
@ -72,17 +72,12 @@ class MenuTop {
}
$user->getrights("");
// On r<>cup<75>re mainmenu
if (isset($_GET["mainmenu"])) {
// On sauve en session le menu principal choisi
$mainmenu=$_GET["mainmenu"];
$_SESSION["mainmenu"]=$mainmenu;
$_SESSION["leftmenuopened"]="";
} else {
// On va le chercher en session si non d<>fini par le lien
$mainmenu=$_SESSION["mainmenu"];
}
// On sauve en session le menu principal choisi
if (isset($_GET["mainmenu"])) $_SESSION["mainmenu"]=$_GET["mainmenu"];
if (isset($_GET["idmenu"])) $_SESSION["idmenu"]=$_GET["idmenu"];
$_SESSION["leftmenuopened"]="";
$menuArbo = new Menubase($this->db,'auguria','top');
@ -94,8 +89,15 @@ class MenuTop {
{
if ($tabMenu[$i]['right'] == true)
{
print '<li><a '.$tabMenu[$i]['class'].' href="'.DOL_URL_ROOT.$tabMenu[$i]['url'].'"'.($this->atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].'</a></li>';
$url=DOL_URL_ROOT.$tabMenu[$i]['url'];
if (! eregi('\?',DOL_URL_ROOT.$tabMenu[$i]['url'])) $url.='?';
else $url.='&';
$url.='mainmenu='.$tabMenu[$i]['mainmenu'].'&leftmenu=';
$url.="&idmenu=".$tabMenu[$i]['rowid'];
// Define idsel
if (! empty($_GET["idmenu"]) && $tabMenu[$i]['rowid'] == $_GET["idmenu"]) $idsel='id="sel" ';
else $idsel='';
print '<li><a '.$tabMenu[$i]['class'].' '.$idsel.'href="'.$url.'"'.($this->atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].'</a></li>';
}
else
{

View File

@ -27,7 +27,7 @@
\remarks Toutes les entr<EFBFBD>es de menu <EFBFBD> faire apparaitre dans la barre du haut
\remarks doivent <EFBFBD>tre affich<EFBFBD>es par <a class="tmenu" href="...?mainmenu=...">...</a>
\remarks On peut <EFBFBD>ventuellement ajouter l'attribut id="sel" dans la balise <a>
\remarks quand il s'agit de l'entr<EFBFBD>e du menu qui est s<EFBFBD>lectionn<EFBFBD>e.
\remarks quand il s'agit de l'entr<EFBFBD>e du menu qui est selectionnee.
*/
@ -73,29 +73,32 @@ class MenuTop {
$user->getrights("");
// On r<>cup<75>re mainmenu
if (isset($_GET["mainmenu"])) {
// On sauve en session le menu principal choisi
$mainmenu=$_GET["mainmenu"];
$_SESSION["mainmenu"]=$mainmenu;
$_SESSION["leftmenuopened"]="";
} else {
// On va le chercher en session si non d<>fini par le lien
$mainmenu=$_SESSION["mainmenu"];
}
// On sauve en session le menu principal choisi
if (isset($_GET["mainmenu"])) $_SESSION["mainmenu"]=$_GET["mainmenu"];
if (isset($_GET["idmenu"])) $_SESSION["idmenu"]=$_GET["idmenu"];
$_SESSION["leftmenuopened"]="";
$menuArbo = new Menubase($this->db,'auguria','top');
$tabMenu = $menuArbo->menutopCharger(1,$_SESSION['mainmenu'], 'auguria');
print '<ul>';
for($i=0;$i<count($tabMenu);$i++)
{
if ($tabMenu[$i]['right'] == true)
{
print '<li><a '.$tabMenu[$i]['class'].' href="'.DOL_URL_ROOT.$tabMenu[$i]['url'].'"'.($this->atarget?" target=$tabMenu[$i]['atarget']":"").'>'.$tabMenu[$i]['titre'].'</a></li>';
// Define url
$url=DOL_URL_ROOT.$tabMenu[$i]['url'];
if (! eregi('\?',DOL_URL_ROOT.$tabMenu[$i]['url'])) $url.='?';
else $url.='&';
$url.='mainmenu='.$tabMenu[$i]['mainmenu'].'&leftmenu=';
$url.="&idmenu=".$tabMenu[$i]['rowid'];
// Define idsel
if (! empty($_GET["idmenu"]) && $tabMenu[$i]['rowid'] == $_GET["idmenu"]) $idsel='id="sel" ';
else $idsel='';
print '<li><a '.$tabMenu[$i]['class'].' '.$idsel.'href="'.$url.'"'.($this->atarget?" target=$tabMenu[$i]['atarget']":"").'>'.$tabMenu[$i]['titre'].'</a></li>';
}
else
{

View File

@ -71,17 +71,12 @@ class MenuTop {
$user->getrights("");
// On recupere mainmenu
if (isset($_GET["mainmenu"])) {
// On sauve en session le menu principal choisi
$mainmenu=$_GET["mainmenu"];
$_SESSION["mainmenu"]=$mainmenu;
$_SESSION["leftmenuopened"]="";
} else {
// On va le chercher en session si non defini par le lien
$mainmenu=$_SESSION["mainmenu"];
}
// On sauve en session le menu principal choisi
if (isset($_GET["mainmenu"])) $_SESSION["mainmenu"]=$_GET["mainmenu"];
if (isset($_GET["idmenu"])) $_SESSION["idmenu"]=$_GET["idmenu"];
$_SESSION["leftmenuopened"]="";
print '<table class="tmenu"><tr class="tmenu">';
// Home
@ -213,7 +208,7 @@ class MenuTop {
}
// Agenda
if ($conf->agenda->enabled)
/* if ($conf->agenda->enabled)
{
$langs->load("commercial");
$langs->load("agenda");
@ -233,7 +228,7 @@ class MenuTop {
else
print '<td class="tmenu"><font class="tmenudisabled">'.$langs->trans("Agenda").'</font></td>';
}
*/
// Projects
if ($conf->projet->enabled)
{
@ -434,7 +429,15 @@ class MenuTop {
{
if ($tabMenu[$i]['right'] == true)
{
print '<td class="tmenu"><a class="tmenu" href="'.DOL_URL_ROOT.$tabMenu[$i]['url'].'"'.($this->atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].'</a></td>';
$url=DOL_URL_ROOT.$tabMenu[$i]['url'];
if (! eregi('\?',DOL_URL_ROOT.$tabMenu[$i]['url'])) $url.='?';
else $url.='&';
$url.='mainmenu='.$tabMenu[$i]['mainmenu'].'&leftmenu=';
$url.="&idmenu=".$tabMenu[$i]['rowid'];
// Define idsel
if (! empty($_SESSION['idmenu']) && $tabMenu[$i]['rowid'] == $_SESSION['idmenu']) $idsel='id="sel" ';
else $idsel='';
print '<td class="tmenu"><a class="tmenu" '.$idsel.'href="'.$url.'"'.($this->atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].'</a></td>';
}
else
{

View File

@ -70,17 +70,12 @@ class MenuTop {
$user->getrights("");
// On r<>cup<75>re mainmenu
if (isset($_GET["mainmenu"])) {
// On sauve en session le menu principal choisi
$mainmenu=$_GET["mainmenu"];
$_SESSION["mainmenu"]=$mainmenu;
$_SESSION["leftmenuopened"]="";
} else {
// On va le chercher en session si non defini par le lien
$mainmenu=$_SESSION["mainmenu"];
}
// On sauve en session le menu principal choisi
if (isset($_GET["mainmenu"])) $_SESSION["mainmenu"]=$_GET["mainmenu"];
if (isset($_GET["idmenu"])) $_SESSION["idmenu"]=$_GET["idmenu"];
$_SESSION["leftmenuopened"]="";
print '<table class="tmenu"><tr class="tmenu">';
// Home
@ -380,7 +375,15 @@ class MenuTop {
{
if ($tabMenu[$i]['right'] == true)
{
print '<td class="tmenu"><a class="tmenu" href="'.DOL_URL_ROOT.$tabMenu[$i]['url'].'"'.($this->atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].'</a></td>';
$url=DOL_URL_ROOT.$tabMenu[$i]['url'];
if (! eregi('\?',DOL_URL_ROOT.$tabMenu[$i]['url'])) $url.='?';
else $url.='&';
$url.='mainmenu='.$tabMenu[$i]['mainmenu'].'&leftmenu=';
$url.="&idmenu=".$tabMenu[$i]['rowid'];
// Define idsel
if (! empty($_GET["idmenu"]) && $tabMenu[$i]['rowid'] == $_GET["idmenu"]) $idsel='id="sel" ';
else $idsel='';
print '<td class="tmenu"><a class="tmenu" '.$idsel.'href="'.$url.'"'.($this->atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].'</a></td>';
}
else
{

View File

@ -76,7 +76,15 @@ class MenuTop {
{
if ($tabMenu[$i]['right'] == true)
{
print '<td class="tmenu"><a class="tmenu" href="'.DOL_URL_ROOT.$tabMenu[$i]['url'].'"'.($this->atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].'</a></td>';
$url=DOL_URL_ROOT.$tabMenu[$i]['url'];
if (! eregi('\?',DOL_URL_ROOT.$tabMenu[$i]['url'])) $url.='?';
else $url.='&';
$url.='mainmenu='.$tabMenu[$i]['mainmenu'].'&leftmenu=';
$url.="&idmenu=".$tabMenu[$i]['rowid'];
// Define idsel
if (! empty($_GET["idmenu"]) && $tabMenu[$i]['rowid'] == $_GET["idmenu"]) $idsel='id="sel" ';
else $idsel='';
print '<td class="tmenu"><a class="tmenu" '.$idsel.'href="'.$url.'"'.($this->atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].'</a></td>';
}
else
{

View File

@ -66,18 +66,12 @@ class MenuTop {
$user->getrights("");
// On recupere mainmenu
if (isset($_GET["mainmenu"]))
{
// On sauve en session le menu principal choisi
$mainmenu=$_GET["mainmenu"];
$_SESSION["mainmenu"]=$mainmenu;
$_SESSION["leftmenuopened"]="";
} else {
// On va le chercher en session si non defini par le lien
$mainmenu=$_SESSION["mainmenu"];
}
// On sauve en session le menu principal choisi
if (isset($_GET["mainmenu"])) $_SESSION["mainmenu"]=$_GET["mainmenu"];
if (isset($_GET["idmenu"])) $_SESSION["idmenu"]=$_GET["idmenu"];
$_SESSION["leftmenuopened"]="";
print '<table class="tmenu"><tr class="tmenu">';
// Home
@ -382,7 +376,15 @@ class MenuTop {
{
if ($tabMenu[$i]['right'] == true)
{
print '<td class="tmenu"><a class="tmenu" href="'.DOL_URL_ROOT.$tabMenu[$i]['url'].'"'.($this->atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].'</a></td>';
$url=DOL_URL_ROOT.$tabMenu[$i]['url'];
if (! eregi('\?',DOL_URL_ROOT.$tabMenu[$i]['url'])) $url.='?';
else $url.='&';
$url.='mainmenu='.$tabMenu[$i]['mainmenu'].'&leftmenu=';
$url.="&idmenu=".$tabMenu[$i]['rowid'];
// Define idsel
if (! empty($_GET["idmenu"]) && $tabMenu[$i]['rowid'] == $_GET["idmenu"]) $idsel='id="sel" ';
else $idsel='';
print '<td class="tmenu"><a class="tmenu" '.$idsel.'href="'.$url.'"'.($this->atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].'</a></td>';
}
else
{

View File

@ -82,7 +82,7 @@ insert into `llx_menu` (`menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`,
insert into `llx_menu` (`menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position) values ('auguria', 'left', 602, 'companies', '', 600, '/contact/index.php?leftmenu=contacts', 'List', 1, 'companies', '$user->rights->societe->lire', '', 2, 1);
insert into `llx_menu` (`menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position) values ('auguria', 'left', 700, 'commercial', '', 5, '/comm/prospect/index.php?leftmenu=prospects', 'Prospects', 0, 'companies', '$user->rights->societe->lire', '', 0, 0);
insert into `llx_menu` (`menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position) values ('auguria', 'left', 701, 'commercial', '', 700, '/soc.php?leftmenu=prospects&action=create&type=c', 'MenuNewProspect', 1, 'companies', '$user->rights->societe->creer', '', 0, 0);
insert into `llx_menu` (`menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position) values ('auguria', 'left', 702, 'commercial', '', 700, '/contact/index.php?leftmenu=prospects&type=p', 'List', 1, 'companies', '$user->rights->societe->lire', '', 0, 1);
insert into `llx_menu` (`menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position) values ('auguria', 'left', 702, 'commercial', '', 700, '/comm/prospect/prospects.php?leftmenu=prospects', 'List', 1, 'companies', '$user->rights->societe->lire', '', 0, 1);
insert into `llx_menu` (`menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position) values ('auguria', 'left', 703, 'commercial', '$leftmenu=="prospects"', 702, '/comm/prospect/prospects.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1', 'LastProspectDoNotContact', 2, 'companies', '$user->rights->societe->lire', '', 0, 0);
insert into `llx_menu` (`menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position) values ('auguria', 'left', 704, 'commercial', '$leftmenu=="prospects"', 702, '/comm/prospect/prospects.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0', 'LastProspectNeverContacted', 2, 'companies', '$user->rights->societe->lire', '', 0, 1);
insert into `llx_menu` (`menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position) values ('auguria', 'left', 705, 'commercial', '$leftmenu=="prospects"', 702, '/comm/prospect/prospects.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1', 'LastProspectToContact', 2, 'companies', '$user->rights->societe->lire', '', 0, 2);

View File

@ -77,12 +77,12 @@ class DolibarrModules
// Insere la constante d'activation module
$err+=$this->_active();
// Insere les boites dans llx_boxes_def
$err+=$this->insert_boxes();
// Insere les constantes associees au module dans llx_const
$err+=$this->insert_const();
// Insere les boites dans llx_boxes_def
$err+=$this->insert_boxes();
// Insere les permissions associees au module actif dans llx_rights_def
$err+=$this->insert_permissions();
@ -157,11 +157,14 @@ class DolibarrModules
// Supprime la constante d'activation du module
$err+=$this->_unactive();
// Supprime les boites de la liste des boites disponibles
$err+=$this->delete_boxes();
// Supprime les droits de la liste des droits disponibles
$err+=$this->delete_permissions();
// Supprime les boites de la liste des boites disponibles
$err+=$this->delete_boxes();
// Supprime les menus apportes par le module
$err+=$this->delete_menus();
// Supprime les documents generables
$err+=$this->delete_docs();
@ -446,7 +449,7 @@ class DolibarrModules
{
$err=0;
// Cree les documents generables
// Supprime les documents generables
if (is_array($this->docs))
{
foreach ($this->docs as $key => $doc)
@ -658,11 +661,12 @@ class DolibarrModules
foreach ($this->menu as $key => $value)
{
$menu = new Menubase($db);
$menu = new Menubase($this->db);
$menu->menu_handler='all';
$menu->module=$this->rights_class;
$menu->fk_menu=$this->menu[$key]['fk_menu'];
$menu->type=$this->menu[$key]['type'];
$menu->mainmenu=$this->menu[$key]['mainmenu'];
$menu->titre=$this->menu[$key]['titre'];
$menu->leftmenu=$this->menu[$key]['leftmenu'];
$menu->url=$this->menu[$key]['url'];
@ -692,7 +696,10 @@ class DolibarrModules
$sql = "DELETE FROM ".MAIN_DB_PREFIX."menu";
$sql.= " WHERE module = '".addslashes($this->rights_class)."'";
if (!$this->db->query($sql))
dolibarr_syslog("DolibarrModules::delete_menus sql=".$sql);
$resql=$this->db->query($sql);
if (! $resql)
{
$err++;
}

View File

@ -95,40 +95,48 @@ class modAgenda extends DolibarrModules
// $this->rights[$r][3] 1=Permis par defaut, 0=Non permis par defaut
// $this->rights[$r][4] Niveau 1 pour nommer permission dans code
// $this->rights[$r][5] Niveau 2 pour nommer permission dans code
// $r++;
$r++;
$this->rights[$r][0] = 2401;
$this->rights[$r][1] = 'Lire les actions liees a son compte';
$this->rights[$r][2] = 'r';
$this->rights[$r][3] = 1;
$this->rights[$r][4] = 'myactions';
$this->rights[$r][5] = 'read';
$r++;
$this->rights[$r][0] = 2402;
$this->rights[$r][1] = 'Creer/modifier/supprimer les actions liees a son compte';
$this->rights[$r][2] = 'w';
$this->rights[$r][3] = 0;
$this->rights[$r][4] = 'myactions';
$this->rights[$r][5] = 'create';
$r++;
$this->rights[$r][0] = 2403;
$this->rights[$r][1] = 'Lire les actions des autres';
$this->rights[$r][2] = 'r';
$this->rights[$r][3] = 0;
$this->rights[$r][4] = 'allactions';
$this->rights[$r][5] = 'read';
$r++;
$this->rights[$r][0] = 2405;
$this->rights[$r][1] = 'Creer/modifier/supprimer les actions pour les autres';
$this->rights[$r][2] = 'w';
$this->rights[$r][3] = 0;
$this->rights[$r][4] = 'allactions';
$this->rights[$r][5] = 'create';
$r++;
// Exports
// Menus
//------
$r=0;
$this->menu[$r]=array('fk_menu'=>0,'type'=>'top','titre'=>'Agenda','mainmenu'=>'agenda','leftmenu'=>'agenda','url'=>'/comm/action/index.php','langs'=>'commercial','position'=>100,'perms'=>'$user->rights->agenda->myactions->read','target'=>'','user'=>0);
$r++;
// Exports
//--------
$r=0;

View File

@ -572,7 +572,9 @@ class Menubase
$chaine = $langs->trans($objm->titre);
}
$tabMenu[$b]['titre'] = $chaine;
$tabMenu[$b]['rowid'] = $objm->rowid;
$tabMenu[$b]['mainmenu'] = $objm->mainmenu;
$tabMenu[$b]['titre'] = $chaine;
$tabMenu[$b]['url'] = $objm->url;
$tabMenu[$b]['atarget'] = $this->atarget;
$tabMenu[$b]['class'] = $class;

View File

@ -399,6 +399,7 @@ if (! defined('MAIN_INFO_SOCIETE_PAYS'))
}
// On charge les fichiers lang principaux
// TODO Optimisation a faire ici
$langs->load("main");
$langs->load("dict");

View File

@ -36,3 +36,8 @@ 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 module varchar(64) after menu_handler;
alter table llx_menu add column tms timestamp;
-- Add a unique key
update llx_menu set url='/comm/prospect/prospects.php?leftmenu=prospects' where rowid=702 and url='/contact/index.php?leftmenu=prospects&type=p';
ALTER TABLE llx_menu ADD UNIQUE INDEX idx_menu_uk_menu (menu_handler, fk_menu, url);

View File

@ -0,0 +1,26 @@
-- ========================================================================
-- Copyright (C) 2007 Patrick Raguin <patrick.raguin@gmail.com>
-- Copyright (C) 2005-2008 Laurent Destailleur <eldy@users.sourceforge.net>
--
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--
-- $Id$
-- ========================================================================
ALTER TABLE llx_menu ADD INDEX idx_menu_menuhandler_type (menu_handler, type);
ALTER TABLE llx_menu ADD UNIQUE INDEX idx_menu_uk_menu (menu_handler, fk_menu, url);