From 05d105dba84e7b39ef6f4c18063b5b7d8a788f31 Mon Sep 17 00:00:00 2001 From: Julian Maurice <julian.maurice@biblibre.com> Date: Fri, 20 Feb 2015 16:38:44 +0100 Subject: [PATCH] dev #21646 Allow to define type of variables for better display/edition For now, only 'on-off' type is available. It displays a checkbox on edit form, and text "Enabled/Disabled" on variables list. --- .../admin/controllers/IndexController.php | 1 + .../admin/views/scripts/index/adminvar.phtml | 14 +- .../views/scripts/index/adminvaredit.phtml | 16 +- library/Class/AdminVar.php | 421 +++++++++++++----- .../controllers/AdminIndexControllerTest.php | 16 + tests/library/Class/AdminVarTest.php | 38 +- 6 files changed, 380 insertions(+), 126 deletions(-) diff --git a/application/modules/admin/controllers/IndexController.php b/application/modules/admin/controllers/IndexController.php index c105f1a0f96..7d6667bfd5f 100644 --- a/application/modules/admin/controllers/IndexController.php +++ b/application/modules/admin/controllers/IndexController.php @@ -104,6 +104,7 @@ class Admin_IndexController extends ZendAfi_Controller_Action { : $var->getValeur(); $this->view->var_cle = $var->getId(); + $this->view->var = $var; $this->view->tuto = Class_AdminVar::helpFor($var->getId()); $this->view->titre = 'Modifier la variable: ' . $var->getId(); } diff --git a/application/modules/admin/views/scripts/index/adminvar.phtml b/application/modules/admin/views/scripts/index/adminvar.phtml index e75ab095141..827edf8fd6c 100644 --- a/application/modules/admin/views/scripts/index/adminvar.phtml +++ b/application/modules/admin/views/scripts/index/adminvar.phtml @@ -47,7 +47,19 @@ hide: {duration: 1000} <?php echo Class_AdminVar::helpFor($var->getId());?> </span> </td> - <td><?php echo wordwrap($value, 40, "<br />", 1);?></td> + <td> + <?php if ($var->isOnOff()): ?> + <?php if ($value): ?> + <img alt="✓" src="<?php echo URL_ADMIN_IMG . '/ico/coche_verte.gif'; ?>"> + <?php echo $this->_('Activé'); ?> + <?php else: ?> + <img alt="✗" src="<?php echo URL_ADMIN_IMG . '/ico/del.gif'; ?>"> + <?php echo $this->_('Désactivé'); ?> + <?php endif; ?> + <?php else: ?> + <?php echo wordwrap($value, 35, "<br />", 1);?> + <?php endif; ?> + </td> <td style="width:2%;text-align:center"> <a data-popup="true" href="<?php echo $this->url(['action' => 'adminvaredit', 'cle' => $var->getId()])?>"><?php echo $this->boutonIco("type=edit");?></a> </td> diff --git a/application/modules/admin/views/scripts/index/adminvaredit.phtml b/application/modules/admin/views/scripts/index/adminvaredit.phtml index 86ee5b79a2d..75d1cffe71e 100644 --- a/application/modules/admin/views/scripts/index/adminvaredit.phtml +++ b/application/modules/admin/views/scripts/index/adminvaredit.phtml @@ -11,8 +11,20 @@ <td class="gauche"><?php echo $this->tuto;?></td> </tr> <tr> - <td class="droite">Nouvelle valeur</td> - <td class="gauche"><textarea rows="10" cols="60" name="valeur"><?php echo $this->var_valeur; ?></textarea></td> + <td class="droite"> + <?php if ($this->var->isOnOff()): ?> + <?php echo $this->_('Activé ?'); ?> + <?php else: ?> + Nouvelle valeur + <?php endif; ?> + </td> + <td class="gauche"> + <?php if ($this->var->isOnOff()): ?> + <?php echo $this->formCheckbox('valeur', null, array('checked' => $this->var_valeur)); ?> + <?php else: ?> + <textarea rows="10" cols="60" name="valeur"><?php echo $this->var_valeur; ?></textarea> + <?php endif; ?> + </td> </tr> </table><br /> </div> diff --git a/library/Class/AdminVar.php b/library/Class/AdminVar.php index 5e1efb8b937..299d8ca055c 100644 --- a/library/Class/AdminVar.php +++ b/library/Class/AdminVar.php @@ -20,6 +20,8 @@ */ class Class_AdminVar extends Storm_Model_Abstract { + const TYPE_ON_OFF = 'on-off'; + protected $_table_name = 'bib_admin_var'; protected $_table_primary = 'CLEF'; @@ -48,15 +50,15 @@ class Class_AdminVar extends Storm_Model_Abstract { $instance = self::getLoader()->newInstance()->setClef($name); } - $instance - ->setValeur($value) - ->save(); - // très particulier à cette table qui n'a pas de primary autoincrément // si on vient de la créer, last insertid est vide // donc ici on reprend le champ clef $instance->setId($instance->getClef()); + $instance + ->setValeur($value) + ->save(); + return $instance; } @@ -290,106 +292,299 @@ class Class_AdminVar extends Storm_Model_Abstract { */ public static function getKnownVars() { if (null === self::$_knownVars) - self::$_knownVars = - ['AVIS_MAX_SAISIE' => 'Nombre de caractères maximum autorisé à saisir dans les avis.', - 'AVIS_MIN_SAISIE' => 'Nombre de caractères minimum autorisé à saisir dans les avis.', - 'BLOG_MAX_NB_CARAC' => 'Nombre de caractères maximum à afficher dans le bloc critiques.', - 'NB_AFFICH_AVIS_PAR_AUTEUR' => 'Nombre d\'avis maximum à afficher par utilisateur.', - 'CLEF_GOOGLE_MAP' => 'Clef d\'activation pour le plan d\'accès google map. <a target="_blank" href="http://code.google.com/apis/maps/signup.html">Obtenir la clé google map</a>', - 'MODO_AVIS' => 'Modération des avis des lecteurs.<br /> 0 = Affichage sans attente de validation<br /> 1 = Affichage seulement après validation.', - 'MODO_AVIS_BIBLIO' => 'Modération des avis des bibliothèquaires.<br /> 0 = Affichage sans attente de validation<br /> 1 = Affichage seulement après validation.', - 'AVIS_BIB_SEULEMENT' => '0 = Les lecteurs peuvent donner leur avis. <br /> 1 = Seuls les bibliothèquaires peuvent donner leur avis', - 'MODO_BLOG' => '0 = Ne requiert pas d\'identification pour saisir des commentaires. <br /> 1 = Requiert l\'identification pour saisir des commentaires.', - 'REGISTER_OK' => 'Texte visible par l\'internaute après son inscription.', - 'RESA_CONDITION' => 'Texte visible après l\'envoi d\'e-mail de demande de réservation.', - 'SITE_OK' => '0 = Site en maintenance. <br /> 1 = Site ouvert.', - 'ID_BIBLIOSURF' => 'Nom de la bibliothèque chez bibliosurf (en minuscules)', - 'JS_STAT' => 'Javascript code for statistics', - 'ID_READ_SPEAKER' => 'Numéro de client Read Speaker <a target="_blank" href="http://webreader.readspeaker.com">http://webreader.readspeaker.com</a>', - 'BLUGA_API_KEY' => 'Clé API Bluga Webthumb <a target="_blank" href="http://webthumb.bluga.net/home">http://webthumb.bluga.net/home</a>', - 'AIDE_FICHE_ABONNE' => 'Texte d\'aide affiché dans la fiche abonné', - 'INTERDIRE_ENREG_UTIL' => 'Supprime l\'affichage du lien d\'enregistrement dans les différents formulaires de connexion et interdit l\'enregistrement d\'utilisateurs', - 'LANGUES' => 'Liste des codes langue utilisées en plus du français séparées par des ;. Exemple: en;ro;es', - 'CACHE_ACTIF' => implode('<br/>', - ['Activer le cache des boîtes (meilleure performance mais mise à jour toutes les ' . CACHE_LIFETIME / 60 . 'mn)', - '0 = inactif', - '1 = actif', - sprintf('<a href="%s" >Vider le cache</a>', - Class_Url::assemble(['module' => 'admin', - 'action' => 'clearcache']))]), - 'WORKFLOW' => implode('<br/>', - ['Activer ou désactiver la gestion des validations des articles', - 'Vide ou 0 = Désactivé, 1 = Activé avec les statuts par défaut, JSON = Activé avec des statuts de validation supplémentaire', - 'Exemple JSON :', - '[{"id":10, "label":"À valider niveau 2"}, {"id":11, "label":"À valider niveau 3"}]', - 'Les identifiants 1 à 5 sont réservés']), - 'WORKFLOW_TEXT_MAIL_ARTICLE_PENDING' => 'Contenu de l\'email de notification d\'article en attente de validation', - 'WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED' => 'Contenu de l\'email de notification de refus d\'un article à valider', - 'WORKFLOW_TEXT_MAIL_ARTICLE_VALIDATED' => 'Contenu de l\'email de notification de validation d\'un article', - 'BIBNUM' => 'Activer ou désactiver la bibliothèque numérique<br />1 = Activé, Autre valeur = désactivé', - 'FORMATIONS' => 'Activer ou désactiver le module formation<br />1 = Activé, Autre valeur = désactivé', - 'VODECLIC_KEY' => 'Clé de sécurité Vodeclic', - 'VODECLIC_ID' => 'Identifiant partenaire Vodeclic', - 'VODECLIC_BIB_ID' => 'Identifiant code bibliothèque Vodeclic', - 'CVS_BMKEY' => 'Paramétrage CVS', - 'CVS_BMID' => 'Paramétrage CVS', - 'CVS_SOURCENAME' => 'Paramétrage CVS', - 'CVS_SOURCEID' => 'Paramétrage CVS', - 'CVS_SOURCEKEY' => 'Paramétrage CVS', - 'CVS_SOURCEPASSWORD' => 'Paramétrage CVS', - 'CVS_LOGINTEST' => 'Paramétrage CVS', - 'NUMILOG_URL' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>', - 'NUMILOG_OAI_URL' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>', - 'NUMILOG_OAI_IDBIB' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>', - 'CYBERLIBRIS_URL' => 'Adresse du serveur OAI Cyberlibris', - 'CYBERLIBRIS_ID' => 'Identifiant SSO Cyberlibris', - 'OAI_SERVER' => 'Activation du serveur OAI. 0 = inactif, 1 = actif', - 'PACK_MOBILE' => 'Activation des fonctions avancées du téléphone. 0 = inactif, 1 = actif', - 'ARTE_VOD_LOGIN' => 'Login ARTE VOD', - 'ARTE_VOD_KEY' => 'Clé ARTE VOD', - 'ARTE_VOD_SSO_KEY' => 'Clé ARTE VOD Single Sign-On', - 'BABELTHEQUE_JS' => 'URL du javascript Babelthèque à insérer dans l\'OPAC', - 'MULTIMEDIA_KEY' => 'Clé publique pour le cryptage des données AFI-Multimédia', - 'WEBKIOSK_KEY' => 'Clé publique pour le cryptage des données Aesis Webkiosk', - 'WEBKIOSK_RESERVATION_URL' => 'URL d\'accès à l\'interface de réservation des postes Aesis Webkiosk', - 'CSS_EDITOR' => '', - 'CMS_FORMULAIRES' => 'Activation des formulaires. 0 = inactif, 1 = actif', - 'MENU_BOITE' => 'Activation des boîtes dans les menus. 0 = inactif, 1 = actif', - 'INTERDIRE_MODIF_FICHE_ABONNE' => 'Interdire la modification de la fiche abonne 0 = inactif, 1 = actif', - 'ROOT_URL_ECOUTE' => '', - 'URL_TYPO3' => 'Url d\'import d\'un agenda TYPO3', - 'CHAMPS_FICHE_UTILISATEUR' => 'Liste des champs que l\'utilisateur peux modifier. <br/>Ex: nom;prenom;pseudo;adresse;<br/>code_postal;ville;mail;is_contact_mail;<br/>telephone;is_contact_telephone;', - 'FACETTE_PCDM4_LIBELLE' => 'Libellé pour la PCDM4', - 'FACETTE_DEWEY_LIBELLE' => 'Libellé pour la Dewey', - 'FACETTE_TYPE_DOC_LIBELLE' => '', - 'FACETTE_LANGUE_LIBELLE' => '', - 'FACETTE_GENRE_LIBELLE' => '', - 'FACETTE_SITE_LIBELLE' => '', - 'FACETTE_SECTION_LIBELLE' => '', - 'FACETTE_BIBLIOTHEQUE_LIBELLE' => '', - 'FACETTE_AUTEUR_LIBELLE' => '', - 'FACETTE_INTERET_LIBELLE' => '', - 'FACETTE_MATIERE_LIBELLE' => '', - 'FACETTE_TAG_LIBELLE' => '', - 'AFFICHER_DISPONIBILITE_SUR_RECHERCHE' => 'Activation de la disponibilite dans le resultat de recherche. 0 = inactif, 1 = actif', - 'NOM_DOMAINE' => 'Nom de domaine principal de l\'OPAC, ex: monopac.macommune.fr', - 'TOUTAPPRENDRE_BIB_ID' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Tout-Apprendre">ToutApprendre</a>', - 'TOUTAPPRENDRE_KEY' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Tout-Apprendre">ToutApprendre</a>', - 'NUMERIQUE_PREMIUM_URL' => '', - 'MUSICME_URL' => '', - 'MUSICME_BIB_ID' => '', - 'DATE_LAST_FULL_INTEGRATION_USERS' => 'Date du dernier import total des abonnés (modifié par cosmogramme)', - 'BOITE_PANIER_AUTO' => 'Ajouter automatiquement une boîte panier dans la division flottante. 0 = inactif, 1 = actif', - 'EXTRA_SKIN_PATH' => 'Chemin vers les skins personnalisées, relatif à ' . Class_Profil_Skin::EXTRA_PATH, - 'ENABLE_COLLABORATIVE_BROWSING' => 'Activation de la navigation collaborative. 0 = inactif, 1 = actif', - 'KOHA_MULTI_SITES' => 'WS KOHA : Reservation d\'exemplaires pour les multi sites. 0 = inactif, 1 = actif', - 'LECTURA_DOMAIN' => 'Domaine utilisée par le serveur lectura pour authentification', - 'LEKIOSK_ID' => 'Identifiant fournit par lekiosk.com', - 'TEXT_REPLACEMENTS' => 'Remplacement de textes à la volée. <br/>Ex:<br/>Panier;Sélection<br/>Vous avez %d paniers;Vous avez %d sélections', - 'ARTICLES_LIST_MODE' => 'Le gestionnaire de contenu affiche les articles sous forme de liste paginée au lieu de d\'une arborescence. Cet affichage est adapté lorsque le nombre d\'article devient trop important.<br /> 1 = Affichage en liste<br /> Autre valeur = Affichage en arborescence.', - 'DILICOM_PNB' => 'Activation du PNB Dilicom. 0 = inactif, 1 = actif', - 'MYCOW_EID' => 'Clé d\'identification MyCOW.EU pour le portail. Cette clé doit être fournie par MyCOW.EU. Elle active la ressource numérique dans le portail.' - ]; + self::$_knownVars = [ + 'AVIS_MAX_SAISIE' => [ + 'description' => 'Nombre de caractères maximum autorisé à saisir dans les avis.', + ], + 'AVIS_MIN_SAISIE' => [ + 'description' => 'Nombre de caractères minimum autorisé à saisir dans les avis.', + ], + 'BLOG_MAX_NB_CARAC' => [ + 'description' => 'Nombre de caractères maximum à afficher dans le bloc critiques.', + ], + 'NB_AFFICH_AVIS_PAR_AUTEUR' => [ + 'description' => 'Nombre d\'avis maximum à afficher par utilisateur.', + ], + 'CLEF_GOOGLE_MAP' => [ + 'description' => 'Clef d\'activation pour le plan d\'accès google map. <a target="_blank" href="http://code.google.com/apis/maps/signup.html">Obtenir la clé google map</a>', + ], + 'MODO_AVIS' => [ + 'description' => 'Modération des avis des lecteurs.<br /> Désactivé : affichage sans attente de validation<br /> Activé : affichage seulement après validation.', + 'type' => self::TYPE_ON_OFF, + ], + 'MODO_AVIS_BIBLIO' => [ + 'description' => 'Modération des avis des bibliothèquaires.<br /> Désactivé: affichage sans attente de validation<br /> Activé: affichage seulement après validation', + 'type' => self::TYPE_ON_OFF, + ], + 'AVIS_BIB_SEULEMENT' => [ + 'description' => 'Désactivé: les lecteurs peuvent donner leur avis. <br /> Activé: seuls les bibliothèquaires peuvent donner leur avis', + 'type' => self::TYPE_ON_OFF, + ], + 'MODO_BLOG' => [ + 'description' => 'Désactivé: ne requiert pas d\'identification pour saisir des commentaires. <br /> Activé: requiert l\'identification pour saisir des commentaires.', + 'type' => self::TYPE_ON_OFF, + ], + 'REGISTER_OK' => [ + 'description' => 'Texte visible par l\'internaute après son inscription.', + ], + 'RESA_CONDITION' => [ + 'description' => 'Texte visible après l\'envoi d\'e-mail de demande de réservation.', + ], + 'SITE_OK' => [ + 'description' => 'Désactiver pour passer le site en maintenance', + 'type' => self::TYPE_ON_OFF, + ], + 'ID_BIBLIOSURF' => [ + 'description' => 'Nom de la bibliothèque chez bibliosurf (en minuscules)', + ], + 'JS_STAT' => [ + 'description' => 'Javascript code for statistics', + ], + 'ID_READ_SPEAKER' => [ + 'description' => 'Numéro de client Read Speaker <a target="_blank" href="http://webreader.readspeaker.com">http://webreader.readspeaker.com</a>', + ], + 'BLUGA_API_KEY' => [ + 'description' => 'Clé API Bluga Webthumb <a target="_blank" href="http://webthumb.bluga.net/home">http://webthumb.bluga.net/home</a>', + ], + 'AIDE_FICHE_ABONNE' => [ + 'description' => 'Texte d\'aide affiché dans la fiche abonné', + ], + 'INTERDIRE_ENREG_UTIL' => [ + 'description' => 'Supprime l\'affichage du lien d\'enregistrement dans les différents formulaires de connexion et interdit l\'enregistrement d\'utilisateurs', + ], + 'LANGUES' => [ + 'description' => 'Liste des codes langue utilisées en plus du français séparées par des ;. Exemple: en;ro;es', + ], + 'CACHE_ACTIF' => [ + 'description' => implode('<br/>', [ + 'Activer le cache des boîtes (meilleure performance mais mise à jour toutes les ' . CACHE_LIFETIME / 60 . 'mn)', + sprintf('<a href="%s" >Vider le cache</a>', + Class_Url::assemble(['module' => 'admin', + 'action' => 'clearcache'])) + ]), + 'type' => self::TYPE_ON_OFF, + ], + 'WORKFLOW' => [ + 'description' => implode('<br/>', [ + 'Activer ou désactiver la gestion des validations des articles', + 'Vide ou 0 = Désactivé, 1 = Activé avec les statuts par défaut, JSON = Activé avec des statuts de validation supplémentaire', + 'Exemple JSON :', + '[{"id":10, "label":"À valider niveau 2"}, {"id":11, "label":"À valider niveau 3"}]', + 'Les identifiants 1 à 5 sont réservés' + ]), + ], + 'WORKFLOW_TEXT_MAIL_ARTICLE_PENDING' => [ + 'description' => 'Contenu de l\'email de notification d\'article en attente de validation', + ], + 'WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED' => [ + 'description' => 'Contenu de l\'email de notification de refus d\'un article à valider', + ], + 'WORKFLOW_TEXT_MAIL_ARTICLE_VALIDATED' => [ + 'description' => 'Contenu de l\'email de notification de validation d\'un article', + ], + 'BIBNUM' => [ + 'description' => 'Activer ou désactiver la bibliothèque numérique', + 'type' => self::TYPE_ON_OFF, + ], + 'FORMATIONS' => [ + 'description' => 'Activer ou désactiver le module formation', + 'type' => self::TYPE_ON_OFF, + ], + 'VODECLIC_KEY' => [ + 'description' => 'Clé de sécurité Vodeclic', + ], + 'VODECLIC_ID' => [ + 'description' => 'Identifiant partenaire Vodeclic', + ], + 'VODECLIC_BIB_ID' => [ + 'description' => 'Identifiant code bibliothèque Vodeclic', + ], + 'CVS_BMKEY' => [ + 'description' => 'Paramétrage CVS', + ], + 'CVS_BMID' => [ + 'description' => 'Paramétrage CVS', + ], + 'CVS_SOURCENAME' => [ + 'description' => 'Paramétrage CVS', + ], + 'CVS_SOURCEID' => [ + 'description' => 'Paramétrage CVS', + ], + 'CVS_SOURCEKEY' => [ + 'description' => 'Paramétrage CVS', + ], + 'CVS_SOURCEPASSWORD' => [ + 'description' => 'Paramétrage CVS', + ], + 'CVS_LOGINTEST' => [ + 'description' => 'Paramétrage CVS', + ], + 'NUMILOG_URL' => [ + 'description' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>', + ], + 'NUMILOG_OAI_URL' => [ + 'description' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>', + ], + 'NUMILOG_OAI_IDBIB' => [ + 'description' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>', + ], + 'CYBERLIBRIS_URL' => [ + 'description' => 'Adresse du serveur OAI Cyberlibris', + ], + 'CYBERLIBRIS_ID' => [ + 'description' => 'Identifiant SSO Cyberlibris', + ], + 'OAI_SERVER' => [ + 'description' => 'Activation du serveur OAI', + 'type' => self::TYPE_ON_OFF, + ], + 'PACK_MOBILE' => [ + 'description' => 'Activation des fonctions avancées du téléphone', + 'type' => self::TYPE_ON_OFF, + ], + 'ARTE_VOD_LOGIN' => [ + 'description' => 'Login ARTE VOD', + ], + 'ARTE_VOD_KEY' => [ + 'description' => 'Clé ARTE VOD', + ], + 'ARTE_VOD_SSO_KEY' => [ + 'description' => 'Clé ARTE VOD Single Sign-On', + ], + 'BABELTHEQUE_JS' => [ + 'description' => 'URL du javascript Babelthèque à insérer dans l\'OPAC', + ], + 'MULTIMEDIA_KEY' => [ + 'description' => 'Clé publique pour le cryptage des données AFI-Multimédia', + ], + 'WEBKIOSK_KEY' => [ + 'description' => 'Clé publique pour le cryptage des données Aesis Webkiosk', + ], + 'WEBKIOSK_RESERVATION_URL' => [ + 'description' => 'URL d\'accès à l\'interface de réservation des postes Aesis Webkiosk', + ], + 'CSS_EDITOR' => [ + 'description' => '', + ], + 'CMS_FORMULAIRES' => [ + 'description' => 'Activation des formulaires', + 'type' => self::TYPE_ON_OFF, + ], + 'MENU_BOITE' => [ + 'description' => 'Activation des boîtes dans les menus', + 'type' => self::TYPE_ON_OFF, + ], + 'INTERDIRE_MODIF_FICHE_ABONNE' => [ + 'description' => 'Interdire la modification de la fiche abonne', + 'type' => self::TYPE_ON_OFF, + ], + 'ROOT_URL_ECOUTE' => [ + 'description' => '', + ], + 'URL_TYPO3' => [ + 'description' => 'Url d\'import d\'un agenda TYPO3', + ], + 'CHAMPS_FICHE_UTILISATEUR' => [ + 'description' => 'Liste des champs que l\'utilisateur peux modifier. <br/>Ex: nom;prenom;pseudo;adresse;<br/>code_postal;ville;mail;is_contact_mail;<br/>telephone;is_contact_telephone;', + ], + 'FACETTE_PCDM4_LIBELLE' => [ + 'description' => 'Libellé pour la PCDM4', + ], + 'FACETTE_DEWEY_LIBELLE' => [ + 'description' => 'Libellé pour la Dewey', + ], + 'FACETTE_TYPE_DOC_LIBELLE' => [ + 'description' => '', + ], + 'FACETTE_LANGUE_LIBELLE' => [ + 'description' => '', + ], + 'FACETTE_GENRE_LIBELLE' => [ + 'description' => '', + ], + 'FACETTE_SITE_LIBELLE' => [ + 'description' => '', + ], + 'FACETTE_SECTION_LIBELLE' => [ + 'description' => '', + ], + 'FACETTE_BIBLIOTHEQUE_LIBELLE' => [ + 'description' => '', + ], + 'FACETTE_AUTEUR_LIBELLE' => [ + 'description' => '', + ], + 'FACETTE_INTERET_LIBELLE' => [ + 'description' => '', + ], + 'FACETTE_MATIERE_LIBELLE' => [ + 'description' => '', + ], + 'FACETTE_TAG_LIBELLE' => [ + 'description' => '', + ], + 'AFFICHER_DISPONIBILITE_SUR_RECHERCHE' => [ + 'description' => 'Activation de la disponibilite dans le resultat de recherche.', + 'type' => self::TYPE_ON_OFF, + ], + 'NOM_DOMAINE' => [ + 'description' => 'Nom de domaine principal de l\'OPAC, ex: monopac.macommune.fr', + ], + 'TOUTAPPRENDRE_BIB_ID' => [ + 'description' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Tout-Apprendre">ToutApprendre</a>', + ], + 'TOUTAPPRENDRE_KEY' => [ + 'description' => 'Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Tout-Apprendre">ToutApprendre</a>', + ], + 'NUMERIQUE_PREMIUM_URL' => [ + 'description' => '', + ], + 'MUSICME_URL' => [ + 'description' => '', + ], + 'MUSICME_BIB_ID' => [ + 'description' => '', + ], + 'DATE_LAST_FULL_INTEGRATION_USERS' => [ + 'description' => 'Date du dernier import total des abonnés (modifié par cosmogramme)', + ], + 'BOITE_PANIER_AUTO' => [ + 'description' => 'Ajouter automatiquement une boîte panier dans la division flottante', + 'type' => self::TYPE_ON_OFF, + ], + 'EXTRA_SKIN_PATH' => [ + 'description' => 'Chemin vers les skins personnalisées, relatif à ' . Class_Profil_Skin::EXTRA_PATH, + ], + 'ENABLE_COLLABORATIVE_BROWSING' => [ + 'description' => 'Activation de la navigation collaborative', + 'type' => self::TYPE_ON_OFF, + ], + 'KOHA_MULTI_SITES' => [ + 'description' => 'WS KOHA : Reservation d\'exemplaires pour les multi sites', + 'type' => self::TYPE_ON_OFF, + ], + 'LECTURA_DOMAIN' => [ + 'description' => 'Domaine utilisée par le serveur lectura pour authentification', + ], + 'LEKIOSK_ID' => [ + 'description' => 'Identifiant fournit par lekiosk.com', + ], + 'TEXT_REPLACEMENTS' => [ + 'description' => 'Remplacement de textes à la volée. <br/>Ex:<br/>Panier;Sélection<br/>Vous avez %d paniers;Vous avez %d sélections', + ], + 'ARTICLES_LIST_MODE' => [ + 'description' => 'Le gestionnaire de contenu affiche les articles sous forme de liste paginée au lieu de d\'une arborescence. Cet affichage est adapté lorsque le nombre d\'article devient trop important', + 'type' => self::TYPE_ON_OFF, + ], + 'DILICOM_PNB' => [ + 'description' => 'Activation du PNB Dilicom', + 'type' => self::TYPE_ON_OFF, + ], + 'MYCOW_EID' => [ + 'description' => 'Clé d\'identification MyCOW.EU pour le portail. Cette clé doit être fournie par MyCOW.EU. Elle active la ressource numérique dans le portail.', + ], + ]; return self::$_knownVars; } @@ -400,9 +595,10 @@ class Class_AdminVar extends Storm_Model_Abstract { * @return string */ public static function helpFor($name) { - if (!array_key_exists($name, static::getKnownVars())) + $known_vars = static::getKnownVars(); + if (!isset($known_vars[$name]['description'])) return ''; - return static::getKnownVars()[$name]; + return $known_vars[$name]['description']; } @@ -465,6 +661,19 @@ class Class_AdminVar extends Storm_Model_Abstract { } + public function getType() { + $known_vars = static::getKnownVars(); + $name = $this->getId(); + if (!isset($known_vars[$name]['type'])) + return ''; + return $known_vars[$name]['type']; + } + + public function isOnOff() { + return $this->getType() == self::TYPE_ON_OFF; + } + + public static function getBabelthequeId() { $mathes = []; if (preg_match('/bw_([^\.]+)\.js/', (string)self::get('BABELTHEQUE_JS'), $matches)) diff --git a/tests/application/modules/admin/controllers/AdminIndexControllerTest.php b/tests/application/modules/admin/controllers/AdminIndexControllerTest.php index 1b63e02eac7..6e91d1f3a66 100644 --- a/tests/application/modules/admin/controllers/AdminIndexControllerTest.php +++ b/tests/application/modules/admin/controllers/AdminIndexControllerTest.php @@ -153,6 +153,8 @@ class AdminIndexControllerIndexActionTest extends AdminIndexControllerTestCase { class AdminIndexControllerAdminVarActionTest extends Admin_AbstractControllerTestCase { public function setUp() { parent::setUp(); + $this->fixture('Class_AdminVar', ['id' => 'BIBNUM', 'valeur' => '0']); + $this->fixture('Class_AdminVar', ['id' => 'CACHE_ACTIF', 'valeur' => '1']); $this->dispatch('/admin/index/adminvar'); } @@ -201,6 +203,20 @@ class AdminIndexControllerAdminVarActionTest extends Admin_AbstractControllerTes $this->assertXpathContentContains('//td', 'TEXT_REPLACEMENTS'); } + /** @test */ + public function bibnumShouldDisplayDelImageAndDisabledLabel() { + $base_xpath = '//table[@id="adminvars"]//td[contains(text(), "BIBNUM")]/../td[2]'; + $this->assertXPath($base_xpath . '/img[contains(@src, "del.gif")]'); + $this->assertXPathContentContains($base_xpath, 'Désactivé'); + } + + /** @test */ + public function cacheActifShouldDisplayCocheVerteImageAndEnabledLabel() { + $base_xpath = '//table[@id="adminvars"]//td[contains(text(), "CACHE_ACTIF")]/../td[2]'; + $this->assertXPathContentContains($base_xpath, 'Activé'); + $this->assertXPath($base_xpath . '/img[contains(@src, "coche_verte.gif")]'); + } + /** @test */ public function dilicomPNBShouldBePresent() { diff --git a/tests/library/Class/AdminVarTest.php b/tests/library/Class/AdminVarTest.php index 2f005e87a91..51853ab042d 100644 --- a/tests/library/Class/AdminVarTest.php +++ b/tests/library/Class/AdminVarTest.php @@ -33,11 +33,6 @@ abstract class AdminVarTestCase extends ModelTestCase { class AdminVarTestGet extends AdminVarTestCase { - public function setup() { - Class_AdminVar::set('WORKFLOW_TEXT_MAIL_ARTICLE_PENDING',''); - Class_AdminVar::set('WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED',''); - } - public function testGetReturnsValeur() { $my_var = Class_AdminVar::getLoader() ->newInstance() @@ -139,18 +134,6 @@ class AdminVarTestGet extends AdminVarTestCase { } - /** @test */ - public function workflowTextMailArticlePendingShouldHaveDefaultTextNouvelArticleAValider() { - $this->assertEquals('Un nouvel article est à valider. TITRE_ARTICLE URL_ARTICLE',Class_AdminVar::getWorkflowTextMailArticlePending()); - } - - - /** @test */ - public function workflowTextMailArticleRefusedShouldHaveDefaultTextArticleRefuse() { - $this->assertEquals('L\'article a été refusé.',Class_AdminVar::getWorkflowTextMailArticleRefused()); - } - - /** @test */ public function getVarShouldStripSlashes() { @@ -214,4 +197,25 @@ class AdminVarBabelthequeTest extends Storm_Test_ModelTestCase { } } + + +class AdminVarWorkflowTest extends Storm_Test_ModelTestCase { + public function setup() { + Class_AdminVar::beVolatile(); + Class_AdminVar::set('WORKFLOW_TEXT_MAIL_ARTICLE_PENDING',''); + Class_AdminVar::set('WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED',''); + } + + /** @test */ + public function workflowTextMailArticlePendingShouldHaveDefaultTextNouvelArticleAValider() { + $this->assertEquals('Un nouvel article est à valider. TITRE_ARTICLE URL_ARTICLE',Class_AdminVar::getWorkflowTextMailArticlePending()); + } + + + /** @test */ + public function workflowTextMailArticleRefusedShouldHaveDefaultTextArticleRefuse() { + $this->assertEquals('L\'article a été refusé.',Class_AdminVar::getWorkflowTextMailArticleRefused()); + } +} + ?> \ No newline at end of file -- GitLab