diff --git a/application/controllers/admin/useraction.php b/application/controllers/admin/useraction.php index 5a65478c9d9..daf2e8a59ff 100755 --- a/application/controllers/admin/useraction.php +++ b/application/controllers/admin/useraction.php @@ -644,19 +644,16 @@ public function personalsettings() $oldPassword = Yii::app()->request->getPost('oldpassword'); - $newPassword = Yii::app()->request->getPost('password'); - $repeatPassword = Yii::app()->request->getPost('repeatpassword'); - $oUserModel->email = Yii::app()->request->getPost('email'); - - //if only email should be changed, then just check the current password + // Check the current password $currentPasswordOk = $oUserModel->checkPassword($oldPassword); - if ($currentPasswordOk) { - $uresult = $oUserModel->save(); - } else { + if (!$currentPasswordOk) { Yii::app()->setFlashMessage(gT('The current password is not correct.'), 'error'); $this->getController()->redirect(array("admin/user/sa/personalsettings")); } + $newPassword = Yii::app()->request->getPost('password'); + $repeatPassword = Yii::app()->request->getPost('repeatpassword'); + if ($newPassword !== '' && $repeatPassword !== '') { $error = $oUserModel->validateNewPassword($newPassword, $oldPassword, $repeatPassword); @@ -670,6 +667,25 @@ public function personalsettings() } } + if (Yii::app()->request->getPost('newemailshown') == "1") { + if (Yii::app()->getConfig('demoMode')) { + Yii::app()->setFlashMessage(gT("You can't change email if demo mode is active."), 'error'); + $this->getController()->redirect(array("admin/user/sa/personalsettings")); + } + + $oldPassword = Yii::app()->request->getPost('oldpassword'); + + // Check the current password + $currentPasswordOk = $oUserModel->checkPassword($oldPassword); + if (!$currentPasswordOk) { + Yii::app()->setFlashMessage(gT('The current password is not correct.'), 'error'); + $this->getController()->redirect(array("admin/user/sa/personalsettings")); + } + + $oUserModel->email = Yii::app()->request->getPost('newemail'); + $uresult = $oUserModel->save(); + } + $oUserModel->lang = Yii::app()->request->getPost('lang'); $oUserModel->dateformat = Yii::app()->request->getPost('dateformat'); $oUserModel->htmleditormode = Yii::app()->request->getPost('htmleditormode'); diff --git a/application/views/admin/user/personalsettings.php b/application/views/admin/user/personalsettings.php index 473f7d7de87..c0f4e163a7d 100644 --- a/application/views/admin/user/personalsettings.php +++ b/application/views/admin/user/personalsettings.php @@ -122,22 +122,32 @@ +
+
+ " control-label"]); ?> +
+ true, 'class' => 'form-control', 'maxlength' => 254]); ?> +
+
+

-
- + -
- + + + -getClientScript()->registerScript( - "personalSettings", - "$('#selector__showChangePassword').on('click', function(e){ - e.preventDefault(); - $('#newpasswordshown').val('1'); - $('.selector__password-row').removeClass('hidden').find('input').each( - function(i,item){ - $(item).prop('disabled', false); - } - ); - $(this).closest('div').remove(); - });", - LSYii_ClientScript::POS_POSTSCRIPT -); +getClientScript()->registerScriptFile(Yii::app()->getConfig('adminscripts') . 'personalsettings.js'); diff --git a/assets/scripts/admin/personalsettings.js b/assets/scripts/admin/personalsettings.js new file mode 100644 index 00000000000..de1cfec342b --- /dev/null +++ b/assets/scripts/admin/personalsettings.js @@ -0,0 +1,23 @@ +$(document).on('click', '#selector__showChangePassword', function(e){ + e.preventDefault(); + $('#newpasswordshown').val('1'); + showHiddenRow('.selector__oldpassword-row'); + showHiddenRow('.selector__password-row'); + $(this).closest('div').remove(); +}); + +$(document).on('click', '#selector__showChangeEmail', function(e){ + e.preventDefault(); + $('#newemailshown').val('1'); + showHiddenRow('.selector__oldpassword-row'); + showHiddenRow('.selector__email-row'); + $(this).closest('div').remove(); +}); + +function showHiddenRow(selector) { + $(selector).removeClass('hidden').find('input').each( + function(i,item){ + $(item).prop('disabled', false); + } + ); +} \ No newline at end of file