diff --git a/src/main/java/org/olat/user/ProfileFormController.java b/src/main/java/org/olat/user/ProfileFormController.java index 210292e70f38a2ae2925d45bee59f9ff347e0d3b..573f629aaa6aafa81f34c060fb069e7f1540acb0 100644 --- a/src/main/java/org/olat/user/ProfileFormController.java +++ b/src/main/java/org/olat/user/ProfileFormController.java @@ -421,12 +421,12 @@ public class ProfileFormController extends FormBasicController { if (source == dialogCtr) { dialogCtr.dispose(); dialogCtr = null; - if (DialogBoxUIFactory.isYesEvent(event)) { - if (changedEmail != null) { - createChangeEmailWorkflow(ureq); - } + if (DialogBoxUIFactory.isYesEvent(event) && changedEmail != null) { + createChangeEmailWorkflow(ureq); + fireEvent(ureq, Event.DONE_EVENT); + } else { + fireEvent(ureq, Event.FAILED_EVENT); } - fireEvent(ureq, Event.FAILED_EVENT); } super.event(ureq, source, event); } @@ -568,9 +568,6 @@ public class ProfileFormController extends FormBasicController { conf.setTextAboutMe(textAboutMe.getValue()); hpcm.saveConfigTo(identityToModify, conf); - // fire the appropriate event - fireEvent(ureq, Event.DONE_EVENT); - // update the user profile data CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync( OresHelper.createOLATResourceableInstance(Identity.class, identityToModify.getKey()), new SyncerExecutor() { @@ -595,6 +592,7 @@ public class ProfileFormController extends FormBasicController { emailChanged = true; // change email address to old address until it is verified identityToModify.getUser().setProperty(UserConstants.EMAIL, currentEmail); + emailEl.setValue(currentEmail); } } if (!userManager.updateUserFromIdentity(identityToModify)) { @@ -606,10 +604,6 @@ public class ProfileFormController extends FormBasicController { OLATResourceable modRes = OresHelper.createOLATResourceableInstance(Identity.class, identityToModify.getKey()); CoordinatorManager.getInstance().getCoordinator().getEventBus() .fireEventToListenersOf(new MultiUserEvent("changed"), modRes); - - if (!emailChanged) { - fireEvent(ureq, Event.FAILED_EVENT); - } } }); @@ -625,6 +619,8 @@ public class ProfileFormController extends FormBasicController { dialogCtr = DialogBoxUIFactory.createYesNoDialog(ureq, getWindowControl(), translate("email.change.dialog.title"), dialogText); listenTo(dialogCtr); dialogCtr.activate(); + } else { + fireEvent(ureq, Event.DONE_EVENT); } } @@ -676,10 +672,12 @@ public class ProfileFormController extends FormBasicController { if (isMailSent) { tk.setMailSent(true); // set key - User user = this.identityToModify.getUser(); + User user = identityToModify.getUser(); user.setProperty("emchangeKey", tk.getRegistrationKey()); - UserManager.getInstance().updateUser(user); + userManager.updateUserFromIdentity(identityToModify); getWindowControl().setInfo(translate("email.sent")); + updateEmailForm(identityToModify.getUser()); + flc.setDirty(true); } else { tk.setMailSent(false); registrationManager.deleteTemporaryKeyWithId(tk.getRegistrationKey()); diff --git a/src/main/java/org/olat/user/propertyhandlers/SmsPhonePropertyHandler.java b/src/main/java/org/olat/user/propertyhandlers/SmsPhonePropertyHandler.java index ab2197438842b190441bcfad49099a4ad866b276..296dba4b826ff39131ea30f6a6510d534d4e1c42 100644 --- a/src/main/java/org/olat/user/propertyhandlers/SmsPhonePropertyHandler.java +++ b/src/main/java/org/olat/user/propertyhandlers/SmsPhonePropertyHandler.java @@ -59,7 +59,10 @@ public class SmsPhonePropertyHandler extends PhonePropertyHandler { @Override public void updateUserFromFormItem(User user, FormItem formItem) { - //update is done during confirmation + if(formItem instanceof SmsPhoneElement && ((SmsPhoneElement)formItem).hasChanged()) { + SmsPhoneElement el = (SmsPhoneElement)formItem; + setInternalValue(user, el.getPhone()); + } } @Override diff --git a/src/main/java/org/olat/user/propertyhandlers/ui/SmsPhoneElement.java b/src/main/java/org/olat/user/propertyhandlers/ui/SmsPhoneElement.java index 01c513b2fc9dd70bcb02e18690a6ac2c31cae2e0..0b91dd62c938cdc662dbaeb044cae41ad77927d5 100644 --- a/src/main/java/org/olat/user/propertyhandlers/ui/SmsPhoneElement.java +++ b/src/main/java/org/olat/user/propertyhandlers/ui/SmsPhoneElement.java @@ -57,6 +57,7 @@ public class SmsPhoneElement extends FormItemImpl implements FormItemCollection, private String phone; private boolean forceFormDirty; + private boolean hasChanged = false; private final User editedUser; private final UserPropertyHandler handler; @@ -81,6 +82,10 @@ public class SmsPhoneElement extends FormItemImpl implements FormItemCollection, public void setPhone(String phone) { this.phone = phone; } + + public boolean hasChanged() { + return hasChanged; + } public FormLink getEditLink() { return editLink; @@ -104,6 +109,7 @@ public class SmsPhoneElement extends FormItemImpl implements FormItemCollection, } else if(smsPhoneCtrl == source) { if(event == Event.DONE_EVENT || event == Event.CHANGED_EVENT) { setPhone(smsPhoneCtrl.getPhone()); + hasChanged = true; forceFormDirty = true; component.setDirty(true); } @@ -198,6 +204,7 @@ public class SmsPhoneElement extends FormItemImpl implements FormItemCollection, private void doRemove() { setPhone(null); + hasChanged = true; component.setDirty(true); } } \ No newline at end of file diff --git a/src/test/resources/arquillian.xml b/src/test/resources/arquillian.xml index 6a5c75dd4d9e9d38250a65ffb0655b846759451b..b720d437ad98f0e6037fcb2a4ba79a8d5fcd4617 100644 --- a/src/test/resources/arquillian.xml +++ b/src/test/resources/arquillian.xml @@ -31,7 +31,7 @@ --> <property name="firefoxDriverVersion">${webdriver.firefox.version:v0.29.0}</property> <property name="firefoxUserPreferences">src/test/profile/firefox/prefs.js</property> - <property name="chromeDriverVersion">${webdriver.chrome.version:90.0.4430.24}</property> + <property name="chromeDriverVersion">${webdriver.chrome.version:92.0.4515.43}</property> <property name="chromeArguments">${webdriver.chrome.arguments}</property> <property name="chromeExperimentalOption">{ "prefs":{"credentials_enable_service": false, "profile.password_manager_enabled": false }