From 9f400fddd444bc58ab2be6d4627d3b3e64d8254f Mon Sep 17 00:00:00 2001 From: Fabrizio Balliano Date: Tue, 14 Mar 2023 22:38:47 +0000 Subject: [PATCH 1/3] Added possibility to set backend locale per every admin user --- app/code/core/Mage/Admin/Model/Session.php | 1 + app/code/core/Mage/Admin/etc/config.xml | 2 +- .../admin_setup/upgrade-1.6.1.4-1.6.1.5.php | 27 ++++++ .../Block/System/Account/Edit/Form.php | 87 +++++++++++-------- .../controllers/System/AccountController.php | 6 +- app/locale/en_US/Mage_Adminhtml.csv | 1 + 6 files changed, 83 insertions(+), 41 deletions(-) create mode 100644 app/code/core/Mage/Admin/sql/admin_setup/upgrade-1.6.1.4-1.6.1.5.php diff --git a/app/code/core/Mage/Admin/Model/Session.php b/app/code/core/Mage/Admin/Model/Session.php index cba417c24ad..58b726ae279 100644 --- a/app/code/core/Mage/Admin/Model/Session.php +++ b/app/code/core/Mage/Admin/Model/Session.php @@ -167,6 +167,7 @@ public function login($username, $password, $request = null) $this->setIsFirstPageAfterLogin(true); $this->setUser($user); $this->setAcl(Mage::getResourceModel('admin/acl')->loadAcl()); + Mage::getSingleton('adminhtml/session')->setLocale($user->getBackendLocale()); $alternativeUrl = $this->_getRequestUri($request); $redirectUrl = $this->_urlPolicy->getRedirectUrl($user, $request, $alternativeUrl); diff --git a/app/code/core/Mage/Admin/etc/config.xml b/app/code/core/Mage/Admin/etc/config.xml index c2965fdd860..f6f7fd53e1e 100644 --- a/app/code/core/Mage/Admin/etc/config.xml +++ b/app/code/core/Mage/Admin/etc/config.xml @@ -23,7 +23,7 @@ - 1.6.1.4 + 1.6.1.5 diff --git a/app/code/core/Mage/Admin/sql/admin_setup/upgrade-1.6.1.4-1.6.1.5.php b/app/code/core/Mage/Admin/sql/admin_setup/upgrade-1.6.1.4-1.6.1.5.php new file mode 100644 index 00000000000..bd8ce68b6d7 --- /dev/null +++ b/app/code/core/Mage/Admin/sql/admin_setup/upgrade-1.6.1.4-1.6.1.5.php @@ -0,0 +1,27 @@ +startSetup(); + +$installer->getConnection()->addColumn($installer->getTable('admin/user'), 'backend_locale', 'varchar(8) NULL'); + +$installer->endSetup(); diff --git a/app/code/core/Mage/Adminhtml/Block/System/Account/Edit/Form.php b/app/code/core/Mage/Adminhtml/Block/System/Account/Edit/Form.php index 2e6d7ee813f..cf74d570e03 100644 --- a/app/code/core/Mage/Adminhtml/Block/System/Account/Edit/Form.php +++ b/app/code/core/Mage/Adminhtml/Block/System/Account/Edit/Form.php @@ -40,59 +40,70 @@ protected function _prepareForm() $fieldset = $form->addFieldset('base_fieldset', ['legend' => Mage::helper('adminhtml')->__('Account Information')]); $fieldset->addField('username', 'text', [ - 'name' => 'username', - 'label' => Mage::helper('adminhtml')->__('User Name'), - 'title' => Mage::helper('adminhtml')->__('User Name'), - 'required' => true, - ]); + 'name' => 'username', + 'label' => Mage::helper('adminhtml')->__('User Name'), + 'title' => Mage::helper('adminhtml')->__('User Name'), + 'required' => true, + ]); $fieldset->addField('firstname', 'text', [ - 'name' => 'firstname', - 'label' => Mage::helper('adminhtml')->__('First Name'), - 'title' => Mage::helper('adminhtml')->__('First Name'), - 'required' => true, - ]); + 'name' => 'firstname', + 'label' => Mage::helper('adminhtml')->__('First Name'), + 'title' => Mage::helper('adminhtml')->__('First Name'), + 'required' => true, + ]); $fieldset->addField('lastname', 'text', [ - 'name' => 'lastname', - 'label' => Mage::helper('adminhtml')->__('Last Name'), - 'title' => Mage::helper('adminhtml')->__('Last Name'), - 'required' => true, - ]); + 'name' => 'lastname', + 'label' => Mage::helper('adminhtml')->__('Last Name'), + 'title' => Mage::helper('adminhtml')->__('Last Name'), + 'required' => true, + ]); $fieldset->addField('user_id', 'hidden', [ - 'name' => 'user_id', - ]); + 'name' => 'user_id', + ]); $fieldset->addField('email', 'text', [ - 'name' => 'email', - 'label' => Mage::helper('adminhtml')->__('Email'), - 'title' => Mage::helper('adminhtml')->__('User Email'), - 'required' => true, - ]); + 'name' => 'email', + 'label' => Mage::helper('adminhtml')->__('Email'), + 'title' => Mage::helper('adminhtml')->__('User Email'), + 'required' => true, + ]); $fieldset->addField('current_password', 'obscure', [ - 'name' => 'current_password', - 'label' => Mage::helper('adminhtml')->__('Current Admin Password'), - 'title' => Mage::helper('adminhtml')->__('Current Admin Password'), - 'required' => true, - ]); + 'name' => 'current_password', + 'label' => Mage::helper('adminhtml')->__('Current Admin Password'), + 'title' => Mage::helper('adminhtml')->__('Current Admin Password'), + 'required' => true, + ]); $minAdminPasswordLength = Mage::getModel('admin/user')->getMinAdminPasswordLength(); $fieldset->addField('password', 'password', [ - 'name' => 'new_password', - 'label' => Mage::helper('adminhtml')->__('New Password'), - 'title' => Mage::helper('adminhtml')->__('New Password'), - 'class' => 'input-text validate-admin-password min-admin-pass-length-' . $minAdminPasswordLength, - 'note' => Mage::helper('adminhtml') - ->__('Password must be at least of %d characters.', $minAdminPasswordLength), - ]); + 'name' => 'new_password', + 'label' => Mage::helper('adminhtml')->__('New Password'), + 'title' => Mage::helper('adminhtml')->__('New Password'), + 'class' => 'input-text validate-admin-password min-admin-pass-length-' . $minAdminPasswordLength, + 'note' => Mage::helper('adminhtml') + ->__('Password must be at least of %d characters.', $minAdminPasswordLength), + ]); $fieldset->addField('confirmation', 'password', [ - 'name' => 'password_confirmation', - 'label' => Mage::helper('adminhtml')->__('Password Confirmation'), - 'class' => 'input-text validate-cpassword', - ]); + 'name' => 'password_confirmation', + 'label' => Mage::helper('adminhtml')->__('Password Confirmation'), + 'class' => 'input-text validate-cpassword', + ]); + + $locales = Mage::app()->getLocale()->getTranslatedOptionLocales(); + $locales = array_column($locales, 'label', 'value'); + array_unshift($locales, ''); + $fieldset->addField('backend_locale', 'select', [ + 'name' => 'backend_locale', + 'label' => Mage::helper('adminhtml')->__('Backend Locale'), + 'class' => 'input-select', + 'options' => $locales, + 'required' => false, + ]); $form->setValues($user->getData()); $form->setAction($this->getUrl('*/system_account/save')); diff --git a/app/code/core/Mage/Adminhtml/controllers/System/AccountController.php b/app/code/core/Mage/Adminhtml/controllers/System/AccountController.php index 8073fddce7c..6f502d98910 100644 --- a/app/code/core/Mage/Adminhtml/controllers/System/AccountController.php +++ b/app/code/core/Mage/Adminhtml/controllers/System/AccountController.php @@ -50,8 +50,6 @@ public function indexAction() public function saveAction() { $userId = Mage::getSingleton('admin/session')->getUser()->getId(); - $pwd = null; - $user = Mage::getModel("admin/user")->load($userId); $user->setId($userId) @@ -67,6 +65,10 @@ public function saveAction() $user->setPasswordConfirmation($this->getRequest()->getParam('password_confirmation', false)); } + $backend_locale = $this->getRequest()->getParam('backend_locale', false); + $backend_locale = $backend_locale == 0 ? null : $backend_locale; + $user->setBackendLocale($backend_locale); + //Validate current admin password $currentPassword = $this->getRequest()->getParam('current_password', null); $this->getRequest()->setParam('current_password', null); diff --git a/app/locale/en_US/Mage_Adminhtml.csv b/app/locale/en_US/Mage_Adminhtml.csv index a237d1b4d0b..6b14c95dd76 100644 --- a/app/locale/en_US/Mage_Adminhtml.csv +++ b/app/locale/en_US/Mage_Adminhtml.csv @@ -165,6 +165,7 @@ "BINARY","BINARY" "Back","Back" "Back to Login","Back to Login" +"Backend Locale","Backend Locale" "Backup","Backup" "Backup Name","Backup Name" "Backup options","Backup options" From 97c63b7e826ccf077ce9aee12b6c1d42b515d728 Mon Sep 17 00:00:00 2001 From: Fabrizio Balliano Date: Tue, 14 Mar 2023 22:46:01 +0000 Subject: [PATCH 2/3] set locale only if present --- app/code/core/Mage/Admin/Model/Session.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/code/core/Mage/Admin/Model/Session.php b/app/code/core/Mage/Admin/Model/Session.php index 58b726ae279..4241d55eeb2 100644 --- a/app/code/core/Mage/Admin/Model/Session.php +++ b/app/code/core/Mage/Admin/Model/Session.php @@ -167,7 +167,9 @@ public function login($username, $password, $request = null) $this->setIsFirstPageAfterLogin(true); $this->setUser($user); $this->setAcl(Mage::getResourceModel('admin/acl')->loadAcl()); - Mage::getSingleton('adminhtml/session')->setLocale($user->getBackendLocale()); + if ($backendLocale = $user->getBackendLocale()) { + Mage::getSingleton('adminhtml/session')->setLocale($backendLocale); + } $alternativeUrl = $this->_getRequestUri($request); $redirectUrl = $this->_urlPolicy->getRedirectUrl($user, $request, $alternativeUrl); From 55a0cdbfc026e2644b9a2eab469630e183a94a5a Mon Sep 17 00:00:00 2001 From: Fabrizio Balliano Date: Thu, 16 Mar 2023 20:49:19 +0000 Subject: [PATCH 3/3] camelcase --- .../Mage/Adminhtml/controllers/System/AccountController.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/code/core/Mage/Adminhtml/controllers/System/AccountController.php b/app/code/core/Mage/Adminhtml/controllers/System/AccountController.php index 6f502d98910..9314d154944 100644 --- a/app/code/core/Mage/Adminhtml/controllers/System/AccountController.php +++ b/app/code/core/Mage/Adminhtml/controllers/System/AccountController.php @@ -65,9 +65,9 @@ public function saveAction() $user->setPasswordConfirmation($this->getRequest()->getParam('password_confirmation', false)); } - $backend_locale = $this->getRequest()->getParam('backend_locale', false); - $backend_locale = $backend_locale == 0 ? null : $backend_locale; - $user->setBackendLocale($backend_locale); + $backendLocale = $this->getRequest()->getParam('backend_locale', false); + $backendLocale = $backendLocale == 0 ? null : $backendLocale; + $user->setBackendLocale($backendLocale); //Validate current admin password $currentPassword = $this->getRequest()->getParam('current_password', null);