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()); + } }