| '.$langs->trans("Agenda").' | '; } - +*/ // Projects if ($conf->projet->enabled) { @@ -434,7 +429,15 @@ class MenuTop { { if ($tabMenu[$i]['right'] == true) { - print 'atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].' | '; + $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 'atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].' | '; } else { diff --git a/htdocs/includes/menus/barre_top/eldy_frontoffice.php b/htdocs/includes/menus/barre_top/eldy_frontoffice.php index 2bdbe33517f..991e7821bf8 100644 --- a/htdocs/includes/menus/barre_top/eldy_frontoffice.php +++ b/htdocs/includes/menus/barre_top/eldy_frontoffice.php @@ -70,17 +70,12 @@ class MenuTop { $user->getrights(""); - // On r�cup�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 '
| atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].' | '; + $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 'atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].' | '; } else { diff --git a/htdocs/includes/menus/barre_top/empty.php b/htdocs/includes/menus/barre_top/empty.php index 46998114a5f..5baf70d3b5b 100644 --- a/htdocs/includes/menus/barre_top/empty.php +++ b/htdocs/includes/menus/barre_top/empty.php @@ -76,7 +76,15 @@ class MenuTop { { if ($tabMenu[$i]['right'] == true) { - print 'atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].' | '; + $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 'atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].' | '; } else { diff --git a/htdocs/includes/menus/barre_top/rodolphe.php b/htdocs/includes/menus/barre_top/rodolphe.php index 0c90634d1fd..d2a372ea232 100644 --- a/htdocs/includes/menus/barre_top/rodolphe.php +++ b/htdocs/includes/menus/barre_top/rodolphe.php @@ -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 '
| atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].' | '; + $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 'atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].' | '; } else { diff --git a/htdocs/includes/menus/init_menu_auguria.sql b/htdocs/includes/menus/init_menu_auguria.sql index 157354af829..35f24b5f724 100644 --- a/htdocs/includes/menus/init_menu_auguria.sql +++ b/htdocs/includes/menus/init_menu_auguria.sql @@ -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); diff --git a/htdocs/includes/modules/DolibarrModules.class.php b/htdocs/includes/modules/DolibarrModules.class.php index 1f67808a64f..fce32831602 100644 --- a/htdocs/includes/modules/DolibarrModules.class.php +++ b/htdocs/includes/modules/DolibarrModules.class.php @@ -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++; } diff --git a/htdocs/includes/modules/modAgenda.class.php b/htdocs/includes/modules/modAgenda.class.php index 1f134f7db17..9d3f25a4da4 100644 --- a/htdocs/includes/modules/modAgenda.class.php +++ b/htdocs/includes/modules/modAgenda.class.php @@ -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; diff --git a/htdocs/lib/menubase.class.php b/htdocs/lib/menubase.class.php index 1749b578b71..1d34c35f2e3 100644 --- a/htdocs/lib/menubase.class.php +++ b/htdocs/lib/menubase.class.php @@ -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; diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 79b18269e00..57718b85ac2 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -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"); diff --git a/mysql/migration/2.2.0-2.4.0.sql b/mysql/migration/2.2.0-2.4.0.sql index 447b173f6e8..45b18c80d29 100644 --- a/mysql/migration/2.2.0-2.4.0.sql +++ b/mysql/migration/2.2.0-2.4.0.sql @@ -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); + diff --git a/mysql/tables/llx_menu.key.sql b/mysql/tables/llx_menu.key.sql new file mode 100644 index 00000000000..a5603bfe347 --- /dev/null +++ b/mysql/tables/llx_menu.key.sql @@ -0,0 +1,26 @@ +-- ======================================================================== +-- Copyright (C) 2007 Patrick Raguin