diff --git a/ChangeLog b/ChangeLog index 9ca413d07..8e0b1192c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2010-03-25 Wolfgang Sourdeau + + * UI/PreferencesUI/UIxPreferences.m (-setHasChanged:) + (-hasChanged): restored accessors. + (-defaultAction): when "hasChanged" is YES, we request a reload of + the parent window. This feature was carelessly removed recently. + 2010-03-25 Francis Lachapelle * UI/WebServerResources/UIxContactsUserFolders.js diff --git a/UI/PreferencesUI/UIxPreferences.h b/UI/PreferencesUI/UIxPreferences.h index f6ffd4f28..1ef64f6c0 100644 --- a/UI/PreferencesUI/UIxPreferences.h +++ b/UI/PreferencesUI/UIxPreferences.h @@ -44,6 +44,7 @@ NSArray *daysOfWeek, *daysBetweenResponsesList; NSArray *sieveFilters; NSMutableDictionary *vacationOptions, *forwardOptions; + BOOL hasChanged; } - (NSString *) userLongDateFormat; diff --git a/UI/PreferencesUI/UIxPreferences.m b/UI/PreferencesUI/UIxPreferences.m index 1ebe687b5..3caba899a 100644 --- a/UI/PreferencesUI/UIxPreferences.m +++ b/UI/PreferencesUI/UIxPreferences.m @@ -103,6 +103,8 @@ if (!forwardOptions) forwardOptions = [NSMutableDictionary new]; } + + hasChanged = NO; } return self; @@ -126,6 +128,16 @@ [super dealloc]; } +- (void) setHasChanged: (BOOL) newHasChanged +{ + hasChanged = newHasChanged; +} + +- (BOOL) hasChanged +{ + return hasChanged; +} + - (void) setItem: (NSString *) newItem { ASSIGN (item, newItem); @@ -913,6 +925,7 @@ id results; WORequest *request; SOGoDomainDefaults *dd; + NSString *method; request = [context request]; if ([[request method] isEqualToString: @"POST"]) @@ -939,7 +952,12 @@ acquire: NO]; [account updateFilters]; - results = [self jsCloseWithRefreshMethod: nil]; + if (hasChanged) + method = @"window.location.reload()"; + else + method = nil; + + results = [self jsCloseWithRefreshMethod: method]; } else results = self; diff --git a/UI/Templates/PreferencesUI/UIxPreferences.wox b/UI/Templates/PreferencesUI/UIxPreferences.wox index 8be6eee63..fb599acfd 100644 --- a/UI/Templates/PreferencesUI/UIxPreferences.wox +++ b/UI/Templates/PreferencesUI/UIxPreferences.wox @@ -297,6 +297,8 @@ >
+ diff --git a/UI/WebServerResources/UIxPreferences.js b/UI/WebServerResources/UIxPreferences.js index 89fde2e30..7b01c7b4d 100644 --- a/UI/WebServerResources/UIxPreferences.js +++ b/UI/WebServerResources/UIxPreferences.js @@ -76,6 +76,20 @@ function prototypeIfyFilters() { } function _setupEvents(enable) { + var widgets = [ "timezone", "shortDateFormat", "longDateFormat", + "timeFormat", "weekStartDay", "dayStartTime", "dayEndTime", + "firstWeek", "messageCheck", "subscribedFoldersOnly", + "language"]; + for (var i = 0; i < widgets.length; i++) { + var widget = $(widgets[i]); + if (widget) { + if (enable) + widget.observe("change", onChoiceChanged); + else + widget.stopObserving("change", onChoiceChanged); + } + } + $("replyPlacementList").observe ("change", onReplyPlacementListChange); $("composeMessagesType").observe ("change", onComposeMessagesTypeChange); @@ -84,6 +98,13 @@ function _setupEvents(enable) { categoriesValue.value = ""; } +function onChoiceChanged(event) { + var hasChanged = $("hasChanged"); + hasChanged.value = "1"; + + _setupEvents(false); +} + function addDefaultEmailAddresses(event) { var defaultAddresses = $("defaultEmailAddresses").value.split(/, */); var addresses = $("autoReplyEmailAddresses").value.trim();