diff --git a/VERSIONS_WIP/85632 b/VERSIONS_WIP/85632 new file mode 100644 index 0000000000000000000000000000000000000000..ed0d8247f4f1e170c4b1739d6873dae3e59cd9d3 --- /dev/null +++ b/VERSIONS_WIP/85632 @@ -0,0 +1 @@ + - ticket #85632 : Administration : Variables : ajout de la colonne niveau d'accès et ouverture de certaines variables au rôle administrateur. \ No newline at end of file diff --git a/application/modules/admin/views/scripts/index/adminvar.phtml b/application/modules/admin/views/scripts/index/adminvar.phtml index 13abaf7ce2c4e314602da6aba3977f0e3fb3d4b1..838f634030075945026f90b894ce82151958e456 100644 --- a/application/modules/admin/views/scripts/index/adminvar.phtml +++ b/application/modules/admin/views/scripts/index/adminvar.phtml @@ -1,41 +1,45 @@ <?php -Class_ScriptLoader::getInstance()->addSearchInputToContent($this->_('Filtrer les variables')); -?> +Class_ScriptLoader::getInstance() + ->addSearchInputToContent($this->_('Filtrer les variables')) + ->addFontAwesome(); -<table id="adminvars"> - <thead> - <tr class="soustitre"> - <th><?php echo $this->_('Clef'); ?></th> - <th><?php echo $this->_('Valeur'); ?></th> - <th><?php echo $this->_('action'); ?></th> - </tr> - </thead> - <tbody> - <?php - $ligne = 0; - foreach($this->vars as $var) { - $ligne ++ ; - $edit_url = $this->url(['controller' => 'index', - 'action' => 'adminvaredit', - 'cle' => $var->getClef()]); - ?> - <tr data-adminvar= "<?php echo $var->getClef(); ?>" class="<?php echo ($ligne & 1) ? "first" : "second";?>"> - <td style="vertical-align:top;" > - <?php echo $var->getDescription();?> - <br><sub><a data-popup="true" href="<?php echo $edit_url; ?>"> - <?php echo $var->getClef();?></a></sub> - </td> - <td> - <?php - echo ($renderer = $var->getRenderer()) - ? $renderer($var->getValeur(), $this) - : $this->adminVar($var); - ?> - </td> - <td style="width:2%;text-align:center"> - <a data-popup="true" href="<?php echo $edit_url; ?>"><?php echo $this->boutonIco("type=edit");?></a> - </td> - </tr> - <?php } ?> -</tbody> -</table> +$description = new Class_TableDescription('adminvars'); +$description + ->addColumn($this->_('Variable'), + ['attribute' => 'id', + 'callback' => function($var) + { + $private = $var->getMeta()->isPrivate(); + + return $this->tag('div', $var->getDescription()) + . $this->tag('sub', str_replace('_', ' ', $var->getId())) + . $this->tag('div', + $this->tag('i', + ' ' + . $this->tag('span', $private ? $this->_('Privée') : $this->_('Publique')), + ['class' => 'fa fa-' . ($private ? 'lock': 'unlock')])) +; + }, + 'options' => ['row_params' => function ($var) + { + return ['data-adminvar' => $var->getId()]; + }]]) + + ->addColumn($this->_('Valeur'), function($var) + { + return ($renderer = $var->getRenderer()) + ? $renderer($var->getValeur(), $this) + : $this->adminVar($var); + }) + + ->addRowAction(['label' => function($var) + { + return $this->_('Modifier la variable %s', $var->getId()); + }, + 'icon' => 'edit', + 'url' => '/admin/index/adminvaredit/cle/%s', + 'anchorOptions' => ['data-popup' => 'true'] + ]) + ; + +echo $this->renderTable($description, $this->vars); diff --git a/library/Class/AdminVar.php b/library/Class/AdminVar.php index 29ee2239d41da48e565f05e00072e223f53d68c7..e97e42be25625cb159d49690aeca99b5b3d87940 100644 --- a/library/Class/AdminVar.php +++ b/library/Class/AdminVar.php @@ -152,9 +152,9 @@ class Class_AdminVarLoader extends Storm_Model_Loader { protected function _getStaticAlbumVars() { return ['ALBUMS_LIST_MODE' => Class_AdminVar_Meta::newOnOff($this->_('Le gestionnaire de contenu affiche les albums sous forme de liste paginée au lieu de d\'une arborescence. Cet affichage est adapté lorsque le nombre d\'albums devient trop important')), - 'ALBUM_MEDIA_NO_AUTOINDEX_TITLE' => Class_AdminVar_Meta::newOnOff($this->_('Ne pas créer de zone 464 pour les médias dont le titre n\'est pas saisi'))->bePrivate(), + 'ALBUM_MEDIA_NO_AUTOINDEX_TITLE' => Class_AdminVar_Meta::newOnOff($this->_('Bibliothèque numérique: ne pas créer de zone 464 pour les médias dont le titre n\'est pas saisi')), - 'BIBNUM' => Class_AdminVar_Meta::newOnOff($this->_('Activer ou désactiver la bibliothèque numérique'))->bePrivate(), + 'BIBNUM' => Class_AdminVar_Meta::newOnOff($this->_('Activer ou désactiver la bibliothèque numérique')), 'SITO_IN_ALBUMS' => Class_AdminVar_Meta::newOnOff($this->_('Gérer la sitothèque dans la bibliothèque numérique, nécessite l\'activation de la bibliothèque numérique'))->bePrivate(), 'NUMILOG_URL' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>'))->bePrivate(), @@ -228,7 +228,7 @@ class Class_AdminVarLoader extends Storm_Model_Loader { 'ENABLE_BOOKMARKABLE_SEARCHES' => Class_AdminVar_Meta::newOnOff($this->_('Les utilisateurs peuvent enregister des recherches dans leurs favoris'), ['value' => 0]), 'ENABLE_BOOKMARKABLE_SEARCHES_NOTIFY' => Class_AdminVar_Meta::newOnOff($this->_('Les utilisateurs peuvent recevoir les nouveautés de leurs recherches favorites par email'), ['value' => 0]), Class_AdminVar_UserDoubleDetectOn::KEY => Class_AdminVar_Meta::newMultiInput($this->_('Champs servant à la détection des doublons. Champs possibles : %s', (new Class_AdminVar_UserDoubleDetectOn)->knownAsList()), - ['validate' => 'ZendAfi_Validate_UserDoubleDetectOn'])->bePrivate(), + ['validate' => 'ZendAfi_Validate_UserDoubleDetectOn']), ]; } @@ -305,7 +305,7 @@ class Class_AdminVarLoader extends Storm_Model_Loader { return [ 'DEFAULT_LANGUAGE' => Class_AdminVar_Meta::newDefault($this->_('Langue par défaut'))->bePrivate(), 'FORCE_HTTPS' => Class_AdminVar_Meta::newOnOff($this->_('Forcer l\'accès au site par le protocole HTTPS. Nécessite l\'installation et la configuration appropriée du serveur Web')), - 'LOGIN_THROUGH_SIGB_ONLY' => Class_AdminVar_Meta::newOnOff($this->_('Les abonnées peuvent se connecter uniquement via le webservice du SIGB.') + 'LOGIN_THROUGH_SIGB_ONLY' => Class_AdminVar_Meta::newOnOff($this->_('Les abonné.e.s peuvent se connecter uniquement via le webservice du SIGB.') . '<br/>' . $this->_('De plus, à la connexion, l\'enregistrement des mots de passes des abonnés est désactivé.'))->bePrivate(), 'OAUTH_ACCEPT_HTTP' => Class_AdminVar_Meta::newOnOff($this->_('Autoriser l\'accès aux API OAUTH via HTTP (non sécurisé - déconseillé)'), ['value' => 0]), @@ -324,7 +324,7 @@ class Class_AdminVarLoader extends Storm_Model_Loader { '<a href="' . Class_Url::baseUrl() . '/admin/index/clearcache" >Vider le cache</a>']))->bePrivate(), 'CACHE_DATE' => Class_AdminVar_Meta::newDefault($this->_('Date du dernier vidage manuel du cache'))->bePrivate(), - 'ACTIVITY' => Class_AdminVar_Meta::newOnOff($this->_('Activer ou désactiver le module d\'activité'))->bePrivate(), + 'ACTIVITY' => Class_AdminVar_Meta::newOnOff($this->_('Activer ou désactiver le module d\'activité')), 'BABELTHEQUE_JS' => Class_AdminVar_Meta::newDefault($this->_('URL du javascript Babelthèque à insérer dans l\'OPAC'))->bePrivate(), 'MULTIMEDIA_KEY' => Class_AdminVar_Meta::newDefault($this->_('Clé publique pour le cryptage des données AFI-Multimédia')), @@ -363,11 +363,10 @@ class Class_AdminVarLoader extends Storm_Model_Loader { 'BUID' => Class_AdminVar_Meta::newRawText($this->_('Identifiant unique (attention: la modification de cette variable impactera les outils de suivi de cette installation)'))->bePrivate(), 'STATUS_REPORT_PUSH_URL' => Class_AdminVar_Meta::newRawText($this->_('URL destinataire du rapport d\'état du système (0 pour désactiver)'), ['value' => 'http://pola.afi-sa.net/smile.php'])->bePrivate(), 'STATUS_REPORT_TAGS' => Class_AdminVar_Meta::newMultiInput($this->_('Liste des tags à ajouter au rapport d\'état du système'))->bePrivate(), - 'FEATURES_TRACKING_ENABLE' => Class_AdminVar_Meta::newOnOff('Affiche les dernières modifications apportés au logiciel Bokeh', ['value' => 1])->bePrivate(), - 'INSPECTOR_GADGET_MARC_XML' => Class_AdminVar_Meta::newOnOff('Affiche le MARC XML de la notice dans Inspector Gadget')->bePrivate(), + 'FEATURES_TRACKING_ENABLE' => Class_AdminVar_Meta::newOnOff('Affiche les dernières modifications apportés au logiciel Bokeh', ['value' => 1]), + 'INSPECTOR_GADGET_MARC_XML' => Class_AdminVar_Meta::newOnOff('Affiche le MARC XML de la notice dans Inspector Gadget'), 'BUSINESS_EMAIL' => Class_AdminVar_Meta::newDefault($this->_('Email utilisé pour les demandes d\'accompagnement de mise en place ou d\'utilisation des fonctionnalités du logiciel'), ['value' => 'cial-bib@afi-sa.fr'])->bePrivate(), - 'CODIFICATION_BROWSER' => Class_AdminVar_Meta::newOnOff($this->_('Activer l\'outil de parcours des codifications')) - ->bePrivate(), + 'CODIFICATION_BROWSER' => Class_AdminVar_Meta::newOnOff($this->_('Activer l\'outil de parcours des codifications')), 'TEMPLATING' => Class_AdminVar_Meta::newOnOff('Active l\'accès au magasin de thèmes', ['value' => 0])->bePrivate() ]; @@ -428,8 +427,7 @@ class Class_AdminVarLoader extends Storm_Model_Loader { ['value' => '500'])->bePrivate(), 'ALLOWED_FILES_EXTENSIONS_FOR_IMPORT' => Class_AdminVar_Meta::newMultiInput($this->_('Liste des extensions de fichiers disponibles à l\'import.'), - ['value' => 'css;pdf;mp3;mp4;ogg;m4v;ico;gif;svg;jpg;jpeg;png;epub;geojson']) - ->bePrivate(), + ['value' => 'css;pdf;mp3;mp4;ogg;m4v;ico;gif;svg;jpg;jpeg;png;epub;geojson;xsl;txt;pdf']), 'RESIZABLE_DIMENSIONS' => Class_AdminVar_Meta::newMultiInput($this->_('Liste des dimensions disponibles pour retailler les images lors de l\'import.'), ['value' => '800x600;1024x768;1280x1024;']), diff --git a/library/Class/AdminVar/Meta.php b/library/Class/AdminVar/Meta.php index 6732d8a4d4c30af54f15cf4466aa2dc530d09c33..a60af071dbfbb74ebcfb4e16ac499cc6d0e53dc0 100644 --- a/library/Class/AdminVar/Meta.php +++ b/library/Class/AdminVar/Meta.php @@ -75,6 +75,11 @@ class Class_AdminVar_Meta { } + public function getRoleLevel() { + return $this->_attributes['role_level']; + } + + public function getType() { return $this->_type; } @@ -160,4 +165,9 @@ class Class_AdminVar_Meta { $this->_attributes['role_level'] = ZendAfi_Acl_AdminControllerRoles::SUPER_ADMIN; return $this; } + + + public function isPrivate() { + return ZendAfi_Acl_AdminControllerRoles::SUPER_ADMIN == $this->getAttribute('role_level', null); + } } \ No newline at end of file diff --git a/library/Class/ScriptLoader.php b/library/Class/ScriptLoader.php index 97922989c5962820a7ae0175edb93665c0390e16..988359955471ca7d94aadd172c1e34a2f6d4d1ca 100644 --- a/library/Class/ScriptLoader.php +++ b/library/Class/ScriptLoader.php @@ -869,4 +869,9 @@ class Class_ScriptLoader { public function getDate() { return date('Y-m-d H:i:s', static::getTimeSource()->time()); } + + + public function addFontAwesome() { + return $this->addOPACStyleSheet('font-awesome-4.7.0/css/font-awesome.min.css'); + } } diff --git a/library/ZendAfi/View/Helper/Admin/FileManager.php b/library/ZendAfi/View/Helper/Admin/FileManager.php index ca97542c04f0b8b39c1cebfad0f682a8a0c3555a..fcbdab68c61a49b99cf73fd5465be79e4bbd9313 100644 --- a/library/ZendAfi/View/Helper/Admin/FileManager.php +++ b/library/ZendAfi/View/Helper/Admin/FileManager.php @@ -30,7 +30,7 @@ class ZendAfi_View_Helper_Admin_FileManager extends ZendAfi_View_Helper_BaseHelp return ''; $script_loader = Class_ScriptLoader::getInstance() - ->addOPACStyleSheet('font-awesome-4.7.0/css/font-awesome.min.css') + ->addFontAwesome() ->addOPACStyleSheet('file-manager/style.css') ->addOPACPluginScript('file-manager/file-manager.js') ->addOPACPluginStyleSheet('file-manager/file-manager.css') diff --git a/tests/application/modules/admin/controllers/AdminIndexControllerTest.php b/tests/application/modules/admin/controllers/AdminIndexControllerTest.php index 074e4fc7a78377d0bf41d5700efbb73081f2cf6a..b39c7077e15b650b8350b3c504ac07d2db85fcb9 100644 --- a/tests/application/modules/admin/controllers/AdminIndexControllerTest.php +++ b/tests/application/modules/admin/controllers/AdminIndexControllerTest.php @@ -161,7 +161,7 @@ class AdminIndexControllerAdminVarActionTest extends Admin_AbstractControllerTes /** @test */ public function bibnumShouldDisplayDelImageAndDisabledLabel() { - $base_xpath = '//table[@id="adminvars"]//a[contains(text(), "BIBNUM")]/ancestor::tr[1]/td[2]'; + $base_xpath = '//table[@id="adminvars"]//sub[contains(text(), "BIBNUM")]/ancestor::tr[1]/td[2]'; $this->assertXPath($base_xpath . '/img[contains(@src, "unpublish_16.png")]'); $this->assertXPathContentContains($base_xpath, 'Désactivé'); } @@ -169,7 +169,7 @@ class AdminIndexControllerAdminVarActionTest extends Admin_AbstractControllerTes /** @test */ public function cacheActifShouldDisplayCocheVerteImageAndEnabledLabel() { - $base_xpath = '//table[@id="adminvars"]//a[contains(text(), "CACHE_ACTIF")]/ancestor::tr[1]/td[2]'; + $base_xpath = '//table[@id="adminvars"]//sub[contains(text(), "CACHE ACTIF")]/ancestor::tr[1]/td[2]'; $this->assertXPathContentContains($base_xpath, 'Activé'); $this->assertXPath($base_xpath . '/img[contains(@src, "publish_16.png")]'); } diff --git a/tests/application/modules/admin/controllers/IndexControllerTest.php b/tests/application/modules/admin/controllers/IndexControllerTest.php index 895333b89180b95b7d909f6023be3b3dd656efed..7c6174595a53ad1673b9d864c6767ed00784518f 100644 --- a/tests/application/modules/admin/controllers/IndexControllerTest.php +++ b/tests/application/modules/admin/controllers/IndexControllerTest.php @@ -441,6 +441,18 @@ class Admin_IndexControllerAdminvarActionTest extends Admin_AbstractControllerTe public function varNewsletterUnsubscribeTextShouldBeLienPourSeDesinscrire() { $this->assertXPathContentContains('//tr[@data-adminvar="NEWSLETTER_UNSUBSCRIBE_TEXT"]//td', 'Lien pour se '); } + + + /** @test */ + public function varBibnumShouldBePublique() { + $this->assertXPathContentContains('//tr[@data-adminvar="BIBNUM"]//td', 'Publique'); + } + + + /** @test */ + public function varAllowedDiskSpaceShouldBePrivate() { + $this->assertXPathContentContains('//tr[@data-adminvar="ALLOWED_DISK_SPACE"]//td', 'Privée'); + } } diff --git a/tests/application/modules/admin/controllers/NewsletterControllerTest.php b/tests/application/modules/admin/controllers/NewsletterControllerTest.php index d5ec95319d7f3aca96e914cc4773964aece9b7d2..ee6e00933c3d30c2cf61b2efb6ec7ce63686bd5e 100644 --- a/tests/application/modules/admin/controllers/NewsletterControllerTest.php +++ b/tests/application/modules/admin/controllers/NewsletterControllerTest.php @@ -67,7 +67,7 @@ class Admin_NewsletterControllerConfigActionTest extends Admin_NewsletterControl /** @test */ public function newsletterUnsubscribeVarShouldBeDisplayed() { - $this->assertXPathContentContains('//tr//td[1]','NEWSLETTER_UNSUBSCRIBE_TEXT'); + $this->assertXPathContentContains('//tr//td[1]','NEWSLETTER UNSUBSCRIBE TEXT'); }