From f3db626a9ad37b89eea67caeb3aab87b4753415c Mon Sep 17 00:00:00 2001 From: gnaegi <none@none> Date: Fri, 25 Jul 2014 15:00:17 +0200 Subject: [PATCH] OO-988 make personal toolconfig behave like other forms with explicit button --- .../org/olat/user/ToolsPrefsController.java | 64 +++++++++++++------ .../user/_i18n/LocalStrings_de.properties | 2 +- .../user/_i18n/LocalStrings_en.properties | 2 +- 3 files changed, 45 insertions(+), 23 deletions(-) diff --git a/src/main/java/org/olat/user/ToolsPrefsController.java b/src/main/java/org/olat/user/ToolsPrefsController.java index 07958a80f09..3b2dbabb2a7 100644 --- a/src/main/java/org/olat/user/ToolsPrefsController.java +++ b/src/main/java/org/olat/user/ToolsPrefsController.java @@ -34,7 +34,9 @@ import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; import org.olat.core.gui.components.form.flexible.impl.FormEvent; +import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.id.Identity; import org.olat.core.util.StringHelper; @@ -112,42 +114,62 @@ public class ToolsPrefsController extends FormBasicController { } presetEl = uifactory.addCheckboxesVertical("usertools.set", "usertools.set", formLayout, toolKeys, toolValues, 1); presetEl.addActionListener(FormEvent.ONCHANGE); - presetEl.setEnabled(enabled); + presetEl.setEnabled(enabled); + initPresetElementUserData(); - String selectedTools = (String)prefs.get(WindowManager.class, "user-tools"); - if(!StringHelper.containsNonWhitespace(selectedTools)) { - selectedTools = userToolsModule.getDefaultPresetOfUserTools(); - } - if(StringHelper.containsNonWhitespace(selectedTools)) { - String[] selectedToolArr = selectedTools.split(","); - for(String toolKey:toolKeys) { - for(String selectedTool:selectedToolArr) { - if(toolKey.equals(selectedTool)) { - presetEl.select(toolKey, true); - } - } - } - } + // Create submit and cancel buttons + FormLayoutContainer buttonLayoutWrappper = FormLayoutContainer.createButtonLayout("buttonLayoutWrappper", getTranslator()); + formLayout.add(buttonLayoutWrappper); + FormLayoutContainer buttonLayout = FormLayoutContainer.createButtonLayout("buttonLayoutInner", getTranslator()); + buttonLayoutWrappper.add(buttonLayout); + uifactory.addFormSubmitButton("save", buttonLayout); + uifactory.addFormCancelButton("cancel", buttonLayout, ureq, getWindowControl()); + } @Override protected void doDispose() { // } - - @Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { - if(presetEl == source) { - doSave(); - } super.formInnerEvent(ureq, source, event); } @Override protected void formOK(UserRequest ureq) { - // + doSave(); + showInfo("preferences.successful"); + fireEvent(ureq, Event.DONE_EVENT); + } + + @Override + protected void formCancelled(UserRequest ureq) { + // reset to last saved state: re-initialize form + initPresetElementUserData(); + fireEvent(ureq, Event.CANCELLED_EVENT); + } + + private void initPresetElementUserData() { + String selectedTools = (String)prefs.get(WindowManager.class, "user-tools"); + if(!StringHelper.containsNonWhitespace(selectedTools)) { + // use presets when user has not yet any values + selectedTools = userToolsModule.getDefaultPresetOfUserTools(); + } + if(StringHelper.containsNonWhitespace(selectedTools)) { + String[] selectedToolArr = selectedTools.split(","); + keyloop: for (String toolKey:presetEl.getKeys()) { + for(String selectedTool:selectedToolArr) { + if(toolKey.equals(selectedTool)) { + presetEl.select(toolKey, true); + continue keyloop; + } + } + // not found: disable + presetEl.select(toolKey, false); + } + } } private void doSave() { diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_de.properties index 68ceb8979c2..1e5a4d9b9bf 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_de.properties @@ -145,7 +145,7 @@ landing.pages=Startseite notallowedtochangepwd=Sie d\u00FCrfen das Passwort nicht selbst setzen. Bei Fragen wenden Sie sich bitte an {0}. password.failed=Ihr neues Passwort wurde nicht gespeichert. Ein unerwarteter Fehler ist aufgetreten. password.successful=Ihr neues Passwort wurde erfolgreich gespeichert. Es ist ab sofort aktiv. -preferences.successful=Ihre Systemeinstellungen wurden gespeichert. \u00C4nderungen von Spracheinstellungen und AJAX-Modus werden erst bei Ihrem n\u00E4chsten Login aktiviert. +preferences.successful=Ihre Systemeinstellungen wurden gespeichert. \u00C4nderungen von Werkzeugen, Spracheinstellungen und AJAX-Modus werden erst bei Ihrem n\u00E4chsten Login aktiviert. preferences.unsuccessful=Ihre Systemeinstellungen konnten nicht gespeichert werden. Bitte versuchen Sie es noch einmal. user.preferences.successful=Die Systemeinstellungen des Benutzers ({0}) wurden gespeichert. \u00C4nderungen von Spracheinstellungen und AJAX-Modus sind beim n\u00E4chsten Login aktiv. user.preferences.unsuccessful=Die Systemeinstellungen des Benutzers ({0}) konnten nicht gespeichert werden. Bitte versuchen Sie es noch einmal. diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_en.properties index 8147e8ad06a..233cba93233 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_en.properties @@ -162,7 +162,7 @@ menu.portfolio.alt=Portfolio notallowedtochangepwd=You are not allowed to change your password on your own. Please contact {0} if you have any questions. password.failed=Your new password could not be saved. An unexpected server error occurred. password.successful=Your new password has been saved successfully. It is valid from now on. -preferences.successful=Your system settings have been saved. Modifications regarding your language settings and the AJAX mode will be activated after your next login. +preferences.successful=Your system settings have been saved. Modifications regarding your tools, language settings and the AJAX mode will be activated after your next login. preferences.unsuccessful=Your system settings could not be saved. Please try again. profile.unsuccessful=Your profile could not be saved. Please try again. propdelete.yesno.text=Do you really want to delete the property '{0}' of user '{1}'? -- GitLab