diff --git a/.gitattributes b/.gitattributes
index 3a766168fbefc0e342d14f9b3c6782c182bd6c23..4afee3361ed2cf83dca7b6cf484a355649d620bd 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -2335,6 +2335,7 @@ library/Class/Sitotheque.php -text
 library/Class/SitothequeCategorie.php -text
 library/Class/StatsNotices.php -text
 library/Class/SuggestionAchat.php -text
+library/Class/Systeme/MenuHorizontal.php -text
 library/Class/Systeme/ModulesAbstract.php -text
 library/Class/Systeme/ModulesAccueil.php -text
 library/Class/Systeme/ModulesAccueil/BibliothequeNumerique.php -text
diff --git a/application/modules/admin/controllers/MenusController.php b/application/modules/admin/controllers/MenusController.php
index 6a40f83fe7b4aed7182e6ed8c4d4864bd6242603..aa838c386736c31f947247e900eff03ae06ea9ba 100644
--- a/application/modules/admin/controllers/MenusController.php
+++ b/application/modules/admin/controllers/MenusController.php
@@ -255,44 +255,14 @@ class Admin_MenusController extends Admin_AccueilController {
 		$this->view->preferences=$_POST;
 	}
 
-//------------------------------------------------------------------------------------------------------
-// Compactage des proprietes si on vient la de config admin des menus
-//------------------------------------------------------------------------------------------------------
-	private function compactProperties($enreg) {
-		$properties = [];
-		foreach($enreg as $clef => $valeur)
-			$properties []= $clef."=".$valeur;
-
-		return implode('|', $properties);
-	}
 	
 //------------------------------------------------------------------------------------------------------
 // Décompactage des proprietes si on vient la de config admin des menus
 //------------------------------------------------------------------------------------------------------
-	private function extractProperties() {
-		$properties = $this->decodePreferences($this->_getParam("preferences"));
-		$default_values = (new Class_Systeme_ModulesMenu())->getValeursParDefaut($this->type_menu);
-		return array_merge($default_values, $properties);
-	}
-
-	/**
-	 * Décode les préférences encodées dans l'url sous la forme:
-	 * titre=Calendrier|rss_avis=0|display_next_event=1|nb_events=5
-	 */
-	public function decodePreferences($line) {
-		$preferences = [];
-		if (!$props = explode("|",$line))
-			return $preferences;
-
-		foreach($props as $prop) {
-			$pos=strpos($prop,"=");
-			$clef=substr($prop,0,$pos);
-			$valeur=substr($prop,($pos+1));
-			$preferences[$clef]=$valeur;
-		}
-		return $preferences;
+	protected function extractProperties() {
+		$module = (new Class_Systeme_ModulesMenu())->getFonction($this->type_menu);
+		return $module->extractPreferences($this->_getParam("preferences"));
 	}
-
 	
 //------------------------------------------------------------------------------------------------------
 // Validation et retour config admin des menus
@@ -308,8 +278,10 @@ class Admin_MenusController extends Admin_AccueilController {
 		$this->view->picto = isset($enreg["picto"]) ? $enreg['picto'] : 'vide.gif';
 		unset($enreg["picto"]);
 
-		$this->view->id_module=$this->id_module;
-		$this->view->properties=$this->compactProperties($enreg);
+		$this->view->id_module = $this->id_module;
+
+		$module = (new Class_Systeme_ModulesMenu())->getFonction($this->type_menu);
+		$this->view->properties = $module->compactPreferences($enreg);
 
 		// Execute le script de retour
 		$this->getHelper('ViewRenderer')->renderScript('menus/_retour.phtml');
diff --git a/library/Class/Profil.php b/library/Class/Profil.php
index b4c2f6a5cb91a01213d0ffdc28c1bc4e8de1ddf2..7364b512bb340dbee5c1baa3d34e8953f4447df9 100644
--- a/library/Class/Profil.php
+++ b/library/Class/Profil.php
@@ -1116,7 +1116,16 @@ class Class_Profil extends Storm_Model_Abstract {
 	 * @return array
 	 */
 	public function getCfgMenuHorizontal() {
-		return $this->getMenu('H')['menus'];
+		return $this->getMenuHorizontal()->asCfgProfil();
+	}
+
+
+	/**
+	 * @return array
+	 */
+	public function getMenuHorizontal() {
+		$menus = $this->getMenu('H')['menus'];
+		return new Class_Systeme_MenuHorizontal($menus);
 	}
 
 
diff --git a/library/Class/Systeme/MenuHorizontal.php b/library/Class/Systeme/MenuHorizontal.php
new file mode 100644
index 0000000000000000000000000000000000000000..1dfc98bbc4f0b39fb4de86a3b47f4375eb7fb5f3
--- /dev/null
+++ b/library/Class/Systeme/MenuHorizontal.php
@@ -0,0 +1,59 @@
+<?php
+/**
+ * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * AFI-OPAC 2.0 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * AFI-OPAC 2.0 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with AFI-OPAC 2.0; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ */
+
+
+class Class_Systeme_MenuHorizontal {
+	protected 
+		$_cfg_menus,
+		$_current_id_module,
+		$_index_menus = [];
+
+	public function __construct($cfg_menus) {
+		$this->_cfg_menus=$cfg_menus;
+		$this->_current_id_module = 0;
+		$this->injectIdModuleInMenus($this->_cfg_menus);
+	}
+
+
+	public function injectIdModuleInMenus(&$menus) {
+		for($i=0;$i<count($menus);$i++) {
+			$menus[$i]['id_module'] = $this->_current_id_module;
+
+			$this->_index_menus[$this->_current_id_module] = $menus[$i];
+
+			$this->_current_id_module++;
+			if (isset($menus[$i]['sous_menus']))
+				$this->injectIdModuleInMenus($menus[$i]['sous_menus']);
+		}
+	}
+
+
+	public function asCfgProfil() {
+		return $this->_cfg_menus;
+	}
+
+
+	public function getMenuPrefencesByIdModule($id_module) {
+		return $this->_index_menus[$id_module]['preferences'];
+	}
+}
+
+?>
\ No newline at end of file
diff --git a/library/Class/Systeme/ModulesAccueil/Calendrier.php b/library/Class/Systeme/ModulesAccueil/Calendrier.php
index 797d4678b16be315f3d69ebf278665a42a1d7953..7ae8cbf035d7f25ecfd9a5889e072f8a436b57e7 100644
--- a/library/Class/Systeme/ModulesAccueil/Calendrier.php
+++ b/library/Class/Systeme/ModulesAccueil/Calendrier.php
@@ -45,6 +45,7 @@ class Class_Systeme_ModulesAccueil_Calendrier extends Class_Systeme_ModulesAccue
 		// Information à afficher en préfixed du titre de l'article: bib, cat ou none.
 		'display_event_info'=> false,
 		'rss_avis' => false,                     //RSS
+
 		'display_next_event' => '1',//Afficher Prochains rendez-vous
 		'nb_events' => '3' // Nombre de rendez-vous à afficher
 	);
diff --git a/library/Class/Systeme/ModulesAccueil/Critiques.php b/library/Class/Systeme/ModulesAccueil/Critiques.php
index 7ff37c5e3db06397c60c14b466f26bbd0403ef3a..9e09509424aff812a27d95f910c8edd0437604c7 100644
--- a/library/Class/Systeme/ModulesAccueil/Critiques.php
+++ b/library/Class/Systeme/ModulesAccueil/Critiques.php
@@ -48,6 +48,7 @@ class Class_Systeme_ModulesAccueil_Critiques extends Class_Systeme_ModulesAccuei
 		'id_panier' => 0,
 		'id_catalogue' => 0,
 		'abon_ou_bib' => 0,
+		'tri' => 0 //tri par titre
 	);
 }
 ?>
\ No newline at end of file
diff --git a/library/Class/Systeme/ModulesAccueil/Null.php b/library/Class/Systeme/ModulesAccueil/Null.php
index 9c8f011e67d1b1ce26e9756fe21c57558bf368a6..922c3468ef6918442e5813182a30a7688119c13e 100644
--- a/library/Class/Systeme/ModulesAccueil/Null.php
+++ b/library/Class/Systeme/ModulesAccueil/Null.php
@@ -19,6 +19,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
  */
 class Class_Systeme_ModulesAccueil_Null {
+	protected static $PREFERENCES_SEPARATOR = '|';
+
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesAccueil::GROUP_INFO;
 	
@@ -136,6 +138,31 @@ class Class_Systeme_ModulesAccueil_Null {
 	public function shouldOpenInNewWindow($preferences) {
 		return false;
 	}
+
+
+	public function compactPreferences($enreg) {
+		$properties = [];
+		foreach($enreg as $clef => $valeur)
+			$properties []= $clef."=".$valeur;
+
+		return implode(static::$PREFERENCES_SEPARATOR, $properties);
+	}
+
+	
+	public function extractPreferences($line) {
+		$preferences = [];
+		if (!$props = explode(static::$PREFERENCES_SEPARATOR, $line))
+			return $preferences;
+
+		foreach($props as $prop) {
+			$pos=strpos($prop,"=");
+			$clef=substr($prop,0,$pos);
+			$valeur=substr($prop,($pos+1));
+			$preferences[$clef]=$valeur;
+		}
+
+		return array_merge($this->getDefaultValues(), $preferences);
+	}
 }
 
 ?>
\ No newline at end of file
diff --git a/library/Class/Systeme/ModulesMenu.php b/library/Class/Systeme/ModulesMenu.php
index 7ece8456aca655a5f5ed1a97cf21b9fdd0cae6ae..a598c69c0b203de3d48622f01a2b90e05125784d 100644
--- a/library/Class/Systeme/ModulesMenu.php
+++ b/library/Class/Systeme/ModulesMenu.php
@@ -45,6 +45,7 @@ class Class_Systeme_ModulesMenu extends Class_Systeme_ModulesAbstract {
 
 	private $fonctions;
 
+
 	public static function isModuleAccueil($menu) {
 		$type_menu = is_array($menu) ? $menu['type_menu'] : $menu;
 		return (false !== strpos($type_menu, self::MODULE_ACCUEIL_PREFIX));
diff --git a/library/Class/Systeme/ModulesMenu/AbonneAvis.php b/library/Class/Systeme/ModulesMenu/AbonneAvis.php
index 1b0c3e987c11e8675ff541e7712d88c3a5318877..4ad5f73ba199086224d2592a3d3e2b626ed132d2 100644
--- a/library/Class/Systeme/ModulesMenu/AbonneAvis.php
+++ b/library/Class/Systeme/ModulesMenu/AbonneAvis.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_AbonneAvis extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES;
+
+	/** @var string */
+	protected $_type_module = 'ABON_AVIS';
 	
 	protected $_libelle = "Derniers avis";
 	
diff --git a/library/Class/Systeme/ModulesMenu/AbonneFiche.php b/library/Class/Systeme/ModulesMenu/AbonneFiche.php
index 88782f7493001d0144c44bca77acf75d213ccc30..3aaec06ddce0724cfc858c5ca900a364c7c6686f 100644
--- a/library/Class/Systeme/ModulesMenu/AbonneFiche.php
+++ b/library/Class/Systeme/ModulesMenu/AbonneFiche.php
@@ -22,6 +22,9 @@ class Class_Systeme_ModulesMenu_AbonneFiche extends Class_Systeme_ModulesMenu_Nu
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES;
 
+	/** @var string */
+	protected $_type_module = 'ABON_FICHE';
+
 	/** @var string */
 	protected $_libelle = 'Fiche abonné';
 
diff --git a/library/Class/Systeme/ModulesMenu/AbonneFormations.php b/library/Class/Systeme/ModulesMenu/AbonneFormations.php
index ea0e3fdcccbef8cd5a1e5bb7935d968515a6f829..568c73f6db733b9e73f9a06b191e818b567d260b 100644
--- a/library/Class/Systeme/ModulesMenu/AbonneFormations.php
+++ b/library/Class/Systeme/ModulesMenu/AbonneFormations.php
@@ -22,6 +22,9 @@ class Class_Systeme_ModulesMenu_AbonneFormations extends Class_Systeme_ModulesMe
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES;
 
+	/** @var string */
+	protected $_type_module = 'ABON_FORMATIONS';
+
 	/** @var string */
 	protected $_libelle = 'Formations';
 
diff --git a/library/Class/Systeme/ModulesMenu/AbonneModificationFiche.php b/library/Class/Systeme/ModulesMenu/AbonneModificationFiche.php
index 35b613f32ceafa0fc643eb078635a670ff647d54..bc153d3824f408e274db5ec85879e578344013d6 100644
--- a/library/Class/Systeme/ModulesMenu/AbonneModificationFiche.php
+++ b/library/Class/Systeme/ModulesMenu/AbonneModificationFiche.php
@@ -22,6 +22,9 @@ class Class_Systeme_ModulesMenu_AbonneModificationFiche extends Class_Systeme_Mo
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES;
 
+	/** @var string */
+	protected $_type_module = 'ABON_MODIF_FICHE';
+
 	/** @var string */
 	protected $_libelle = 'Modifier données abonné';
 
diff --git a/library/Class/Systeme/ModulesMenu/AbonnePrets.php b/library/Class/Systeme/ModulesMenu/AbonnePrets.php
index 9315dc4b0ae47ed7af78f73bd50887c9d4fd9def..dfd5aa4abde90592fc01dc2f9d544ad8a09af2f0 100644
--- a/library/Class/Systeme/ModulesMenu/AbonnePrets.php
+++ b/library/Class/Systeme/ModulesMenu/AbonnePrets.php
@@ -22,6 +22,9 @@ class Class_Systeme_ModulesMenu_AbonnePrets extends Class_Systeme_ModulesMenu_Nu
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES;
 
+	/** @var string */
+	protected $_type_module = 'ABON_PRETS';
+
 	/** @var string */
 	protected $_libelle = 'Prêts en cours';
 
diff --git a/library/Class/Systeme/ModulesMenu/AbonneReservations.php b/library/Class/Systeme/ModulesMenu/AbonneReservations.php
index f7f8153b46b6a93e4c7a2719609027d9c781d310..068467141a0cfe9faa9640bd50c2ed28bdf409a8 100644
--- a/library/Class/Systeme/ModulesMenu/AbonneReservations.php
+++ b/library/Class/Systeme/ModulesMenu/AbonneReservations.php
@@ -22,6 +22,9 @@ class Class_Systeme_ModulesMenu_AbonneReservations extends Class_Systeme_Modules
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES;
 
+	/** @var string */
+	protected $_type_module = 'ABON_RESAS';
+
 	/** @var string */
 	protected $_libelle = 'Réservations en cours';
 
diff --git a/library/Class/Systeme/ModulesMenu/Accueil.php b/library/Class/Systeme/ModulesMenu/Accueil.php
index 01bff0da0f4f0f604f19b41fd148581fb9e48d70..37454b90b41fa5f4a6b8e06d75a2078ea936f0a0 100644
--- a/library/Class/Systeme/ModulesMenu/Accueil.php
+++ b/library/Class/Systeme/ModulesMenu/Accueil.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_Accueil extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_NAVIGATION;
+
+	/** @var string */
+	protected $_type_module = 'ACCUEIL';
 	
 	/** @var string */
 	protected $_libelle = 'Retour à l\'accueil';
diff --git a/library/Class/Systeme/ModulesMenu/Avis.php b/library/Class/Systeme/ModulesMenu/Avis.php
index 871b6b406c9c921ed5d55930c4238e77181f6f26..d7c6a8a665120079d4dd67096d02379034e84429 100644
--- a/library/Class/Systeme/ModulesMenu/Avis.php
+++ b/library/Class/Systeme/ModulesMenu/Avis.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_Avis extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_INFORMATIONS;
+
+	/** @var string */
+	protected $_type_module = 'AVIS';
 	
 	/** @var string */
 	protected $_libelle = 'Dernières critiques';
diff --git a/library/Class/Systeme/ModulesMenu/BibliothequeNumerique.php b/library/Class/Systeme/ModulesMenu/BibliothequeNumerique.php
index df1da910fa0ec92033eef63bdacd11024d6459c0..4bc43195472b0889c4afc7d370515119a57b4203 100644
--- a/library/Class/Systeme/ModulesMenu/BibliothequeNumerique.php
+++ b/library/Class/Systeme/ModulesMenu/BibliothequeNumerique.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_BibliothequeNumerique extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_INFORMATIONS;
+
+	/** @var string */
+	protected $_type_module = 'BIBNUM';
 	
 	/** @var int */
 	protected $_popupWidth = 550;
diff --git a/library/Class/Systeme/ModulesMenu/CVS.php b/library/Class/Systeme/ModulesMenu/CVS.php
index 2feba18f7116116eb44e7c8158dec434f2bcef3a..1ad7e377da7c936772ac6fda49549d09dc942723 100644
--- a/library/Class/Systeme/ModulesMenu/CVS.php
+++ b/library/Class/Systeme/ModulesMenu/CVS.php
@@ -22,6 +22,9 @@ class Class_Systeme_ModulesMenu_CVS extends Class_Systeme_ModulesMenu_Null {
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES;
 
+	/** @var string */
+	protected $_type_module = 'CVS';
+
 	/** @var string */
 	protected $_libelle = 'Lien vers CVS';
 
diff --git a/library/Class/Systeme/ModulesMenu/Catalogue.php b/library/Class/Systeme/ModulesMenu/Catalogue.php
index b04f8322da0aea8180a116720a0398cfb9237679..9ccf928ff1ff43923deb00e7735b33b20a705993 100644
--- a/library/Class/Systeme/ModulesMenu/Catalogue.php
+++ b/library/Class/Systeme/ModulesMenu/Catalogue.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_Catalogue extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_CATALOGUES;
+
+	/** @var string */
+	protected $_type_module = 'CATALOGUE';
 	
 	/** @var int */
 	protected $_popupWidth = 550;
diff --git a/library/Class/Systeme/ModulesMenu/Connect.php b/library/Class/Systeme/ModulesMenu/Connect.php
index 822dbf191c4e397dad9fc053a8844a2ca40eb6fd..70a3b2f7b2af078162ea38d702a505d450e4d7c7 100644
--- a/library/Class/Systeme/ModulesMenu/Connect.php
+++ b/library/Class/Systeme/ModulesMenu/Connect.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_Connect extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_NAVIGATION;
+
+	/** @var string */
+	protected $_type_module = 'CONNECT';
 	
 	/** @var string */
 	protected $_libelle = 'Se connecter';
diff --git a/library/Class/Systeme/ModulesMenu/Disconnect.php b/library/Class/Systeme/ModulesMenu/Disconnect.php
index e3e7e57f6febd4e43f7344229f808264b58ce657..1e1bdb51c04e2fdfc9fd1b8863d264f0bdab6bb5 100644
--- a/library/Class/Systeme/ModulesMenu/Disconnect.php
+++ b/library/Class/Systeme/ModulesMenu/Disconnect.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_Disconnect extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_NAVIGATION;
+
+	/** @var string */
+	protected $_type_module = 'DISCONNECT';
 	
 	/** @var string */
 	protected $_libelle = 'Se déconnecter';
diff --git a/library/Class/Systeme/ModulesMenu/Etagere.php b/library/Class/Systeme/ModulesMenu/Etagere.php
index ba05490000b1a8dc920b56348814ee24b6048619..cb350078ba681412b1791c1be4b90ed9be55d11a 100644
--- a/library/Class/Systeme/ModulesMenu/Etagere.php
+++ b/library/Class/Systeme/ModulesMenu/Etagere.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_Etagere extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_CATALOGUES;
+
+	/** @var string */
+	protected $_type_module = 'ETAGERE';
 	
 	/** @var int */
 	protected $_popupWidth = 550;
diff --git a/library/Class/Systeme/ModulesMenu/FormulaireContact.php b/library/Class/Systeme/ModulesMenu/FormulaireContact.php
index b3da8bb8536ba45567bd4a7b40591cd2d546a560..82fab428e17b3e674e088eb4e5ba2646bd50f408 100644
--- a/library/Class/Systeme/ModulesMenu/FormulaireContact.php
+++ b/library/Class/Systeme/ModulesMenu/FormulaireContact.php
@@ -22,6 +22,9 @@ class Class_Systeme_ModulesMenu_FormulaireContact extends Class_Systeme_ModulesM
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES;
 
+	/** @var string */
+	protected $_type_module = 'FORM_CONTACT';
+
 	/** @var string */
 	protected $_libelle = 'Formulaire de contact';
 
diff --git a/library/Class/Systeme/ModulesMenu/LastNews.php b/library/Class/Systeme/ModulesMenu/LastNews.php
index ea9e4d382bed520f1aea5ddfec2878678ce77339..5e36bbe93bdfd2b3ee0ce8c79a82858ae248c16e 100644
--- a/library/Class/Systeme/ModulesMenu/LastNews.php
+++ b/library/Class/Systeme/ModulesMenu/LastNews.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_LastNews extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_INFORMATIONS;
+
+	/** @var string */
+	protected $_type_module = 'LAST_NEWS';
 	
 	/** @var string */
 	protected $_libelle = 'Derniers articles';
diff --git a/library/Class/Systeme/ModulesMenu/Menu.php b/library/Class/Systeme/ModulesMenu/Menu.php
index e8e3064b6f6a3f42ccd468cde58c7170f9ec79f7..03397f6fedaec057fc081d053630f54997334675 100644
--- a/library/Class/Systeme/ModulesMenu/Menu.php
+++ b/library/Class/Systeme/ModulesMenu/Menu.php
@@ -22,6 +22,10 @@ class Class_Systeme_ModulesMenu_Menu extends Class_Systeme_ModulesMenu_Null {
 	/** @var string */
 	protected $_libelle = 'Menu';
 
+	/** @var string */
+	protected $_type_module = 'MENU';
+
+
 	public function getUrl($preferences=[]) {
 		return '#';
 	}
diff --git a/library/Class/Systeme/ModulesMenu/News.php b/library/Class/Systeme/ModulesMenu/News.php
index b214d8a6cbb52b8a3825e2f4838c32af6a387bd0..8b51806f708c2dfabe5990c061d9647252d3c089 100644
--- a/library/Class/Systeme/ModulesMenu/News.php
+++ b/library/Class/Systeme/ModulesMenu/News.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_News extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_INFORMATIONS;
+
+	/** @var string */
+	protected $_type_module = 'NEWS';
 	
 	/** @var string */
 	protected $_libelle = 'Articles cms';
diff --git a/library/Class/Systeme/ModulesMenu/Null.php b/library/Class/Systeme/ModulesMenu/Null.php
index f1bb933cf6b1c233dc12e8d49f83d7550f45cf44..95ffe03a0635c54e75209b2b35f1a7d2c15cff3a 100644
--- a/library/Class/Systeme/ModulesMenu/Null.php
+++ b/library/Class/Systeme/ModulesMenu/Null.php
@@ -47,7 +47,6 @@ class Class_Systeme_ModulesMenu_Null extends Class_Systeme_ModulesAccueil_Null {
 
 
 	public function getProperties() {
-
 		$properties = [ 'libelle' => $this->_libelle,
 										'groupe' => $this->getGroup(),
 										'phone' => $this->isPhone(),
@@ -55,11 +54,10 @@ class Class_Systeme_ModulesMenu_Null extends Class_Systeme_ModulesAccueil_Null {
 										'popup_height' => $this->_popupHeight,
 										
 		];
+
 		if ($this->_action)
 			$properties['action'] = $this->_action;
-		return $properties;
-						 
-					 
+		return $properties;					 					 
 	}
 }
 
diff --git a/library/Class/Systeme/ModulesMenu/Paniers.php b/library/Class/Systeme/ModulesMenu/Paniers.php
index 87b5377c9f002d9953cec872a07e09e055551f9f..7c53c4a6351673ae9e2b8e36e4b5746719f1b566 100644
--- a/library/Class/Systeme/ModulesMenu/Paniers.php
+++ b/library/Class/Systeme/ModulesMenu/Paniers.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_Paniers extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES;
+
+	/** @var string */
+	protected $_type_module = 'PANIER';
 	
 	protected $_libelle = "Paniers de notices";
 	
diff --git a/library/Class/Systeme/ModulesMenu/Profil.php b/library/Class/Systeme/ModulesMenu/Profil.php
index e2e4170149d3bde58acb9c09e66c4fd8e79724f2..e319b703268b494ad8ff6b1a965e6c8503a5fb88 100644
--- a/library/Class/Systeme/ModulesMenu/Profil.php
+++ b/library/Class/Systeme/ModulesMenu/Profil.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_Profil extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_INFORMATIONS;
+
+	/** @var string */
+	protected $_type_module = 'PROFIL';
 	
 	/** @var int */
 	protected $_popupWidth = 550;
diff --git a/library/Class/Systeme/ModulesMenu/RechercheAvancee.php b/library/Class/Systeme/ModulesMenu/RechercheAvancee.php
index f5efa7527635ff698b226df5bd2da700564a8fb9..cecf49e378361215d1350bb7af8da577e03865ac 100644
--- a/library/Class/Systeme/ModulesMenu/RechercheAvancee.php
+++ b/library/Class/Systeme/ModulesMenu/RechercheAvancee.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_RechercheAvancee extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_RECHERCHES;
+
+	/** @var string */
+	protected $_type_module = 'RECH_AVANCEE';
 	
 	/** @var int */
 	protected $_libelle = "Recherche avancée";
diff --git a/library/Class/Systeme/ModulesMenu/RechercheGeographique.php b/library/Class/Systeme/ModulesMenu/RechercheGeographique.php
index fdb78ffeea997340f59b0b3326780cec39e60e6f..701a5de4a6722add8a2d814f2a9b27bdb8a3c656 100644
--- a/library/Class/Systeme/ModulesMenu/RechercheGeographique.php
+++ b/library/Class/Systeme/ModulesMenu/RechercheGeographique.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_RechercheGeographique extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_RECHERCHES;
+
+	/** @var string */
+	protected $_type_module = 'RECH_GEO';
 	
 	/** @var int */
 	protected $_libelle = "Recherche géographique";
diff --git a/library/Class/Systeme/ModulesMenu/RechercheGuidee.php b/library/Class/Systeme/ModulesMenu/RechercheGuidee.php
index 152e3f46bc4324c0ae380388e79403e5c795eac9..4102e79fd08987076b5bc578fc10126f127a5080 100644
--- a/library/Class/Systeme/ModulesMenu/RechercheGuidee.php
+++ b/library/Class/Systeme/ModulesMenu/RechercheGuidee.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_RechercheGuidee extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_RECHERCHES;
+
+	/** @var string */
+	protected $_type_module = 'RECH_GUIDEE';
 	
 	/** @var int */
 	protected $_libelle = "Recherche guidée";
diff --git a/library/Class/Systeme/ModulesMenu/RechercheOai.php b/library/Class/Systeme/ModulesMenu/RechercheOai.php
index 5daacda61bafd32a13a9edf0e823f6b106e01f70..9001080064c0bf71d3644429be54c01ff410e411 100644
--- a/library/Class/Systeme/ModulesMenu/RechercheOai.php
+++ b/library/Class/Systeme/ModulesMenu/RechercheOai.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_RechercheOai extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_RECHERCHES;
+
+	/** @var string */
+	protected $_type_module = 'RECH_OAI';
 	
 	/** @var int */
 	protected $_libelle = "Recherche OAI";
diff --git a/library/Class/Systeme/ModulesMenu/RechercheSimple.php b/library/Class/Systeme/ModulesMenu/RechercheSimple.php
index fbda6b6b53c154e886083099701539d4e39a1f29..22a4164e4a18a005770de7120147411c0e4934f6 100644
--- a/library/Class/Systeme/ModulesMenu/RechercheSimple.php
+++ b/library/Class/Systeme/ModulesMenu/RechercheSimple.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_RechercheSimple extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_RECHERCHES;
+
+	/** @var string */
+	protected $_type_module = 'RECH_SIMPLE';
 	
 	/** @var int */
 	protected $_libelle = "Recherche simple";
diff --git a/library/Class/Systeme/ModulesMenu/ReserverPoste.php b/library/Class/Systeme/ModulesMenu/ReserverPoste.php
index 84a27164ac29f99b003724418c598f114c5605b0..957aa951f8b3a5eb90e00d6cbccdf7819dd89535 100644
--- a/library/Class/Systeme/ModulesMenu/ReserverPoste.php
+++ b/library/Class/Systeme/ModulesMenu/ReserverPoste.php
@@ -22,6 +22,10 @@ class Class_Systeme_ModulesMenu_ReserverPoste extends Class_Systeme_ModulesMenu_
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES;
 
+	/** @var string */
+	protected $_type_module = 'RESERVER_POSTE';
+
+
 	/** @var string */
 	protected $_libelle = 'Réserver un poste multimédia';
 
diff --git a/library/Class/Systeme/ModulesMenu/Rss.php b/library/Class/Systeme/ModulesMenu/Rss.php
index 1732553d239e2096efad70f326e1b48033a63d95..6cbc762849e6f54da211e3a13a00a44327feef56 100644
--- a/library/Class/Systeme/ModulesMenu/Rss.php
+++ b/library/Class/Systeme/ModulesMenu/Rss.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_Rss extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_INFORMATIONS;
+
+	/** @var string */
+	protected $_type_module = 'RSS';
 	
 	/** @var int */
 	protected $_popupWidth = 800;
diff --git a/library/Class/Systeme/ModulesMenu/Sitotheque.php b/library/Class/Systeme/ModulesMenu/Sitotheque.php
index 3cbf2411c9b202119b8d39a2bce3fa4a272e7462..a51529944dab24c5129d70e78686e11b9e44e9b7 100644
--- a/library/Class/Systeme/ModulesMenu/Sitotheque.php
+++ b/library/Class/Systeme/ModulesMenu/Sitotheque.php
@@ -21,7 +21,9 @@
 class Class_Systeme_ModulesMenu_Sitotheque extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_INFORMATIONS;
-	
+
+	/** @var string */
+	protected $_type_module = 'SITO';	
 
 	/** @var string */
 	protected $_libelle = 'Sitothèque';
diff --git a/library/Class/Systeme/ModulesMenu/SuggestionAchat.php b/library/Class/Systeme/ModulesMenu/SuggestionAchat.php
index ac3943bd8a8aab20e3540695eeb5b49fcb0eaef7..11f7f6a64942e26b8c728d6f6896acb10f7711b6 100644
--- a/library/Class/Systeme/ModulesMenu/SuggestionAchat.php
+++ b/library/Class/Systeme/ModulesMenu/SuggestionAchat.php
@@ -22,6 +22,10 @@ class Class_Systeme_ModulesMenu_SuggestionAchat extends Class_Systeme_ModulesMen
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES;
 
+	/** @var string */
+	protected $_type_module = 'SUGGESTION_ACHAT';
+
+
 	/** @var string */
 	protected $_libelle = 'Suggestion d\'achat';
 
diff --git a/library/Class/Systeme/ModulesMenu/Tags.php b/library/Class/Systeme/ModulesMenu/Tags.php
index 2a082196c92836f6bc596205b6d4da9f349eb5b4..06d3f2b6db322c6855b63ad3ba024c27159a8177 100644
--- a/library/Class/Systeme/ModulesMenu/Tags.php
+++ b/library/Class/Systeme/ModulesMenu/Tags.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_Tags extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_CATALOGUES;
+
+	/** @var string */
+	protected $_type_module = 'TAGS';
 	
 	protected $_libelle = "Nuage de tags";
 	
diff --git a/library/Class/Systeme/ModulesMenu/Url.php b/library/Class/Systeme/ModulesMenu/Url.php
index a47f08f67d65ee8254650bb394a6b2f380767765..21b66c41ef5809c552a54ef4cb4c18ab41ceaa0d 100644
--- a/library/Class/Systeme/ModulesMenu/Url.php
+++ b/library/Class/Systeme/ModulesMenu/Url.php
@@ -21,6 +21,9 @@
 class Class_Systeme_ModulesMenu_Url extends Class_Systeme_ModulesMenu_Null{
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_INFORMATIONS;
+
+	/** @var string */
+	protected $_type_module = 'URL';
 	
 	/** @var int */
 	protected $_popupWidth = 550;
diff --git a/library/Class/Systeme/ModulesMenu/Vodeclic.php b/library/Class/Systeme/ModulesMenu/Vodeclic.php
index 3891a392a16a71f871ae215ee1590959064dda83..f5448679e216265fe28841633ec52fd03c6f59e7 100644
--- a/library/Class/Systeme/ModulesMenu/Vodeclic.php
+++ b/library/Class/Systeme/ModulesMenu/Vodeclic.php
@@ -22,6 +22,9 @@ class Class_Systeme_ModulesMenu_Vodeclic extends Class_Systeme_ModulesMenu_Null
 	/** @var string */
 	protected $_group = Class_Systeme_ModulesMenu::GROUP_MENU_ABONNES;
 
+	/** @var string */
+	protected $_type_module = 'VODECLIC';
+
 	/** @var string */
 	protected $_libelle = 'Lien vers Vodeclic';
 
diff --git a/library/ZendAfi/View/Helper/FonctionsAdmin.php b/library/ZendAfi/View/Helper/FonctionsAdmin.php
index 8ec56fcb9df0fca15e7fd0eb128fe0ee31432fdd..82e59803c90abd628c6a7e87082470b4cd548b07 100644
--- a/library/ZendAfi/View/Helper/FonctionsAdmin.php
+++ b/library/ZendAfi/View/Helper/FonctionsAdmin.php
@@ -45,7 +45,8 @@ class ZendAfi_View_Helper_FonctionsAdmin extends ZendAfi_View_Helper_BaseHelper
 		if(!$fonction) return false;
 		$html='<div class="configuration_module" style="text-align:right">';
 		$onclick="showPopWin('".htmlspecialchars(BASE_URL.$fonction["url"])."',".$fonction["popup_width"].",".$fonction["popup_height"].",null)";
-		$html.=sprintf('<img src="'.URL_ADMIN_IMG.'ico/fonctions_admin.png" onclick="'.$onclick.'" alt="%s" title="%s" style="cursor:pointer" />',
+		$html.=sprintf('<img src="'.URL_ADMIN_IMG.'ico/fonctions_admin.png" onclick="%s" alt="%s" title="%s" style="cursor:pointer" />',
+									 $onclick,
 									 $this->translate()->_('Propriétés du module'),
 									 $this->translate()->_('Propriétés du module'));
 		$html.='</div>';
diff --git a/library/ZendAfi/View/Helper/FonctionsAdmin/Menu.php b/library/ZendAfi/View/Helper/FonctionsAdmin/Menu.php
index 16d938d0f81851f60db693c1091e2419b631a3c6..9c3717926f2c075aa9015009cc77f8c8965a8301 100644
--- a/library/ZendAfi/View/Helper/FonctionsAdmin/Menu.php
+++ b/library/ZendAfi/View/Helper/FonctionsAdmin/Menu.php
@@ -33,12 +33,19 @@ class ZendAfi_View_Helper_FonctionsAdmin_Menu extends ZendAfi_View_Helper_Foncti
 
 	protected function getPopupParams(){
 		$module = (new Class_Systeme_ModulesMenu())->getFonction($this->type_module);
+		$menu_horizontal = Class_Profil::find($this->id_profil)->getMenuHorizontal();
+		$preferences = $menu_horizontal->getMenuPrefencesByIdModule($this->id_module);
 
-		$ret["url"] = sprintf('/admin/accueil/%s?config=menu&id_profil=%d&id_module=%d&type_module=%s',
+		$params = ['config' => 'menu',
+							 'id_profil' => $this->id_profil,
+							 'id_module' => $this->id_module,
+							 'type_menu' => $this->type_module,
+							 'preferences' => $module->compactPreferences($preferences)];
+							 
+
+		$ret["url"] = sprintf('/admin/menus/%s?%s',
 													$module->getAction(),
-													$this->id_profil,
-													$this->id_module,
-													$this->type_module);
+													http_build_query($params));
 
 		$ret["popup_height"] = $module->getPopupHeight();
 		$ret["popup_width"] = $module->getPopupWidth();
diff --git a/library/ZendAfi/View/Helper/Menu/Menus.php b/library/ZendAfi/View/Helper/Menu/Menus.php
index 238d24a6315adb8182cf21667fc65fe6af1e715c..dbcc12aae83e302839f09aa82d61e0ec61e069a8 100644
--- a/library/ZendAfi/View/Helper/Menu/Menus.php
+++ b/library/ZendAfi/View/Helper/Menu/Menus.php
@@ -37,15 +37,15 @@ class ZendAfi_View_Helper_Menu_Menus extends ZendAfi_View_Helper_BaseHelper {
 	public function renderMenus() {
 		$html = '';
 
-		foreach($this->_menus as $id_menu => $entree)
-			$html.= $this->renderModule($id_menu, $entree);
+		foreach($this->_menus as $entree)
+			$html.= $this->renderModule($entree);
 
 		return $html;
 	}
 
 
-	function renderModule($id_menu, $menu){
-		$helper = ZendAfi_View_Helper_Menu_Base::getModuleHelperFromParams($id_menu, $menu);
+	function renderModule($menu){
+		$helper = ZendAfi_View_Helper_Menu_Base::getModuleHelperFromParams($menu['id_module'], $menu);
 		$helper->setView($this->view);
 		return $helper->getBoite($this->_menu_class);
 	}
diff --git a/library/ZendAfi/View/Helper/MenuHorizontal.php b/library/ZendAfi/View/Helper/MenuHorizontal.php
index 4bcb5d20c80fd7e604258e223b8e808e2b569685..f7e74272b8337e4fee6716fc94ba7955277cf26c 100644
--- a/library/ZendAfi/View/Helper/MenuHorizontal.php
+++ b/library/ZendAfi/View/Helper/MenuHorizontal.php
@@ -30,6 +30,7 @@ class ZendAfi_View_Helper_MenuHorizontal extends ZendAfi_View_Helper_BaseHelper
 		$this->profil = Class_Profil::getCurrentProfil();
 	}
 
+
 	public function menuHorizontal() {
 		return $this->renderMenus($this->profil->getCfgMenuHorizontal());
 	}
diff --git a/scripts/emacs/phafi-mode.el b/scripts/emacs/phafi-mode.el
index f98611a6120c8c2ecb9ff982e313ac9dbaf3a699..c5b6cd04228a99e0bcc506594a7343b848b9bc72 100644
--- a/scripts/emacs/phafi-mode.el
+++ b/scripts/emacs/phafi-mode.el
@@ -52,9 +52,6 @@
 	(setq ag-highlight-search t)
 	(setq ag-arguments(list "--smart-case" "--nogroup" "--column" "--ignore phonetix.txt" "--ignore TAGS" "--ignore-dir report" "--" ))
 
-	(setq gtags-ignore-case t)
-	(setq gtags-auto-update t)
-
 ;;	(setq ac-sources '(ac-source-etags ac-source-words-in-same-mode-buffers))
 	(setq ac-sources '(ac-source-etags ac-source-words-in-buffer))
 	(imenu-add-menubar-index)
@@ -461,6 +458,10 @@
     (local-set-key (kbd "M-.") 'gtags-find-tag)   ; find a tag, also M-.
     (local-set-key (kbd "M-,") 'gtags-find-rtag)  ; reverse tag
     (local-set-key (kbd "C-M-,") 'gtags-pop-stack); find tag if on call function or reverse tag if on function def
+
+		(setq gtags-ignore-case t)
+		(setq gtags-auto-update nil)
+		(setq gtags-rootdir (phafi-root-dir))
 		))
 
 
diff --git a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php
index 1de82c85c1eb97b996b008fe7cb87bb074bd5d6b..35020e53ff928b002f7b615e1bacb639ea395740 100644
--- a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php
+++ b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php
@@ -45,7 +45,7 @@ abstract class ProfilOptionsControllerWithProfilAdulteTestCase extends AbstractC
 																											 ['type_menu' => Class_Systeme_ModulesMenu::MODULE_ACCUEIL_PREFIX.'CRITIQUES',
 																												'libelle' => 'Critiques',
 																												'picto' => 'vide.gif',
-																												'preferences' => []]]],
+																												'preferences' => ['rss_avis' => '1', 'id_panier' => 3]]]],
 
 																			['type_menu' => 'URL',
 																			 'libelle' => 'Google',
@@ -349,12 +349,19 @@ class ProfilOptionsControllerViewProfilAdulteAsAdminTest extends ProfilOptionsCo
 		$this->dispatch('/opac/');		
 	}
 
+
 	/** @test */
 	public function menuHorizontalCalendrierConfigShouldContainsConfigTypeMenu() {
-		$this->assertXPath('//div[@id="menu_horizontal"]//li[@class="menu boite"]//div[@class="boite calendar"]//img[contains(@onclick, "accueil/calendrier?config=menu&id_profil=2&id_module=6")]',
+		$this->assertXPath('//div[@id="menu_horizontal"]//li[@class="menu boite"]//div[@class="boite calendar"]//img[contains(@onclick, "menus/calendrier?config=menu&id_profil=2&id_module=2&type_menu=MODULE_ACCUEIL_CALENDAR&preferences=nb_events%3D5")]',
 											 $this->_response->getBody());
 	}
 
+
+	/** @test */
+	public function menuHorizontalCritiquesConfigShouldContainsConfigTypeMenu() {
+		$this->assertXPath('//div[@id="menu_horizontal"]//li[@class="menu boite"]//div[@class="boite critiques"]//img[contains(@onclick, "menus/critiques?config=menu&id_profil=2&id_module=8&type_menu=MODULE_ACCUEIL_CRITIQUES&preferences=rss_avis%3D1|id_panier%3D3")]',
+											 $this->_response->getBody());
+	}
 }