From 8734d71d2ff0147a6c1b921154f6c4a06383854a Mon Sep 17 00:00:00 2001 From: gloas <gloas@afi-sa.fr> Date: Wed, 31 May 2017 12:05:32 +0200 Subject: [PATCH] dev #60900 add show admin icons to menu admin + save preferences to user settings --- .../admin/controllers/UsersController.php | 11 +++++++++ .../ZendAfi/View/Helper/Admin/FrontNav.php | 11 +++++++++ public/admin/js/global.js | 15 ++++++++++++ public/admin/skins/bokeh74/front_nav.css | 24 ++++++++++++++----- .../AbonneControllerSettingsTest.php | 17 +++++++++++++ .../opac/controllers/IndexControllerTest.php | 14 +++++++++++ 6 files changed, 86 insertions(+), 6 deletions(-) diff --git a/application/modules/admin/controllers/UsersController.php b/application/modules/admin/controllers/UsersController.php index 68c14a12426..e8ef95c5033 100644 --- a/application/modules/admin/controllers/UsersController.php +++ b/application/modules/admin/controllers/UsersController.php @@ -49,4 +49,15 @@ class Admin_UsersController extends ZendAfi_Controller_Action { $this->_redirectToReferer(); } + + + public function settingsAction() { + $viewRenderer = $this->getHelper('ViewRenderer'); + $viewRenderer->setNoRender(); + + $user = Class_Users::getIdentity(); + $settings = Class_User_Settings::newWith($user); + $settings->set($this->_getParam('key'), $this->_getParam('value')); + $user->save(); + } } diff --git a/library/ZendAfi/View/Helper/Admin/FrontNav.php b/library/ZendAfi/View/Helper/Admin/FrontNav.php index 7f8b2b6a973..9a712515dfe 100644 --- a/library/ZendAfi/View/Helper/Admin/FrontNav.php +++ b/library/ZendAfi/View/Helper/Admin/FrontNav.php @@ -105,6 +105,11 @@ class ZendAfi_View_Helper_Admin_FrontNav extends ZendAfi_View_Helper_BaseHelper 'reactiveOpacBlocksSorting()', 'deactiveOpacBlocksSorting()'), + $this->_toggleAnchor($this->_('Afficher les icones d\'administration'), + 'show_admin_icons', + 'showAdminIcons()', + 'hideAdminIcons()'), + $this->_toggleAnchor($this->_('Editeur CSS'), 'css_editor', 'showCSSEditor()', @@ -167,6 +172,12 @@ class ZendAfi_View_Helper_Admin_FrontNav extends ZendAfi_View_Helper_BaseHelper 'onclick' => $js . ';return true;']); }; + $admin = Class_Users::getIdentity(); + $settings = Class_User_Settings::newWith($admin); + + if($settings->get($class_sufix)) + Class_ScriptLoader::getInstance()->addJQueryReady($js_on); + return $toggleFy($js_on, 'toggle_off', 'activate_') . $toggleFy($js_off, 'toggle_on', 'deactivate_'); } diff --git a/public/admin/js/global.js b/public/admin/js/global.js index fe529d3b302..4e45689dde9 100644 --- a/public/admin/js/global.js +++ b/public/admin/js/global.js @@ -327,6 +327,21 @@ function hideZFDebug() { } +function showAdminIcons() { + $("#site_web_wrapper").attr('data-show_admin_icons', 'true'); + $('.activate_show_admin_icons').hide(); + $('.deactivate_show_admin_icons').show(); + $.ajax( baseUrl + '/admin/users/settings/key/show_admin_icons/value/1'); +} + + +function hideAdminIcons() { + $("#site_web_wrapper").attr('data-show_admin_icons', 'false'); + $('.activate_show_admin_icons').show(); + $('.deactivate_show_admin_icons').hide(); +} + + function hideMenuAdmin() { $('#menuAdmin').css('display','none'); } diff --git a/public/admin/skins/bokeh74/front_nav.css b/public/admin/skins/bokeh74/front_nav.css index dd63dc3b195..8c85d86d28a 100644 --- a/public/admin/skins/bokeh74/front_nav.css +++ b/public/admin/skins/bokeh74/front_nav.css @@ -75,12 +75,6 @@ display: none; } -.footer select[onchange], -.footer a[href*="/admin"], -.admin_tools_lock { - display: none !important; -} - .menu_admin_front fieldset { padding: 0; margin: 0; @@ -116,4 +110,22 @@ height: 2em; border: 1px solid var(--nav-text); width: 149px; +} + +#site_web_wrapper[data-show_admin_icons="true"] a[href*="/admin"] { + display: inline-block !important; +} + + +#site_web_wrapper[data-show_admin_icons="true"] .configuration_module { + display: block !important; +} + +#site_web_wrapper .footer select[onchange], +#site_web_wrapper .footer a[href*="/admin"], +#site_web_wrapper .admin_tools_lock, +#site_web_wrapper .configuration_module, +#site_web_wrapper a[href*="/admin"] { + display: none !important; + opacity: 1 !important; } \ No newline at end of file diff --git a/tests/application/modules/opac/controllers/AbonneControllerSettingsTest.php b/tests/application/modules/opac/controllers/AbonneControllerSettingsTest.php index 4bf8da8d327..c38ce192900 100644 --- a/tests/application/modules/opac/controllers/AbonneControllerSettingsTest.php +++ b/tests/application/modules/opac/controllers/AbonneControllerSettingsTest.php @@ -287,3 +287,20 @@ class AbonneControllerWithLibrariesAndNoDomainsBookmarkableTest extends Abstract $this->assertXPathContentContains('//div//a', 'Gérer mes favoris', $this->_response->getBody()); } } + + + +class AbonneControllerSettingsAdminSettingsTest extends AbonneControllerSettingsTestCase { + public function setUp() { + parent::setUp(); + $this->_user->beAdminPortail(); + + $this->dispatch('/admin/users/settings/key/show_admin_icons/value/1', true); + } + + + /** @test */ + public function userShowAdminIconsShouldBeEnabled() { + $this->assertEquals(1, Class_User_Settings::newWith($this->_user)->get('show_admin_icons')); + } +} \ No newline at end of file diff --git a/tests/application/modules/opac/controllers/IndexControllerTest.php b/tests/application/modules/opac/controllers/IndexControllerTest.php index d2b36b858a5..eaa1c132db5 100644 --- a/tests/application/modules/opac/controllers/IndexControllerTest.php +++ b/tests/application/modules/opac/controllers/IndexControllerTest.php @@ -720,7 +720,9 @@ class IndexControllerWithBibAdminLoggedTest extends AbstractControllerTestCase { 'login' => 'Joe', 'password' => 'unsupermotdepasse', 'id_site' => 1, + 'settings' => Class_User_Settings::serializeSettings(['show_admin_icons' => '1']), 'role_level' => ZendAfi_Acl_AdminControllerRoles::MODO_BIB]); + ZendAfi_Auth::getInstance()->logUser($joe); $this->dispatch('/'); } @@ -790,4 +792,16 @@ class IndexControllerWithBibAdminLoggedTest extends AbstractControllerTestCase { public function changeProfileSelectorShouldBeInMenu() { $this->assertXPath('//body/div//ul/li/ul/li/form//select'); } + + + /** @test */ + public function linkToShowAdminIconsShouldBeInMenu() { + $this->assertXPathContentContains('//body/div//ul/li/ul/li/a', 'Afficher les icones d\'administration'); + } + + + /** @test */ + public function scriptToShowAdminIconsShouldBePresent() { + $this->assertXPathContentContains('//script', 'showAdminIcons()'); + } } \ No newline at end of file -- GitLab