diff --git a/UI/Templates/PreferencesUI/UIxPreferences.wox b/UI/Templates/PreferencesUI/UIxPreferences.wox index 35356ddb1..435914f90 100644 --- a/UI/Templates/PreferencesUI/UIxPreferences.wox +++ b/UI/Templates/PreferencesUI/UIxPreferences.wox @@ -894,15 +894,15 @@ ng-model="app.preferences.defaults.Vacation.startDateEnabled" ng-true-value="1" ng-false-value="0" - ng-change="app.updateVacationStartDate()"> + ng-change="app.updateVacationDates()"> @@ -912,14 +912,14 @@ ng-model="app.preferences.defaults.Vacation.endDateEnabled" ng-true-value="1" ng-false-value="0" - ng-change="app.updateVacationEndDate()"> + ng-change="app.updateVacationDates()"> diff --git a/UI/WebServerResources/js/Preferences/PreferencesController.js b/UI/WebServerResources/js/Preferences/PreferencesController.js index fa9004e50..f23b11fff 100644 --- a/UI/WebServerResources/js/Preferences/PreferencesController.js +++ b/UI/WebServerResources/js/Preferences/PreferencesController.js @@ -9,7 +9,7 @@ */ PreferencesController.$inject = ['$q', '$window', '$state', '$mdMedia', '$mdSidenav', '$mdDialog', '$mdToast', 'sgFocus', 'Dialog', 'User', 'Account', 'statePreferences', 'Authentication']; function PreferencesController($q, $window, $state, $mdMedia, $mdSidenav, $mdDialog, $mdToast, focus, Dialog, User, Account, statePreferences, Authentication) { - var vm = this, account, mailboxes = [], today = new Date(); + var vm = this, account, mailboxes = [], today = new Date(), tomorrow = today.addDays(1); vm.preferences = statePreferences; vm.passwords = { newPassword: null, newPasswordConfirmation: null }; @@ -38,9 +38,7 @@ vm.timeZonesListFilter = timeZonesListFilter; vm.timeZonesSearchText = ''; vm.sieveVariablesCapability = ($window.sieveCapabilities.indexOf('variables') >= 0); - vm.tomorrow = today.addDays(1); - vm.updateVacationStartDate = updateVacationStartDate; - vm.updateVacationEndDate = updateVacationEndDate; + vm.updateVacationDates = updateVacationDates; // Fetch a flatten version of the mailboxes list of the main account (0) // This list will be forwarded to the Sieve filter controller @@ -58,8 +56,7 @@ statePreferences.ready().then(function() { if (statePreferences.defaults.SOGoAlternateAvatar) User.$alternateAvatar = statePreferences.defaults.SOGoAlternateAvatar; - updateVacationStartDate(); - updateVacationEndDate(); + updateVacationDates(); }); function go(module, form) { @@ -372,22 +369,33 @@ }); } - function updateVacationStartDate() { + function updateVacationDates() { if (statePreferences.defaults && statePreferences.defaults.Vacation && - statePreferences.defaults.Vacation.startDateEnabled) - vm.vacationStartDate = statePreferences.defaults.Vacation.startDate; - else - vm.vacationStartDate = vm.tomorrow; - } + statePreferences.defaults.Vacation.enabled) { - function updateVacationEndDate() { - if (statePreferences.defaults && - statePreferences.defaults.Vacation && - statePreferences.defaults.Vacation.endDateEnabled) - vm.vacationEndDate = statePreferences.defaults.Vacation.endDate; - else + // Determine minimum dates + vm.vacationStartDateMin = undefined; + if (statePreferences.defaults.Vacation.startDateEnabled) { + vm.vacationStartDateMin = tomorrow; + vm.vacationStartDate = statePreferences.defaults.Vacation.startDate; + } + else if (statePreferences.defaults.Vacation.endDateEnabled) + vm.vacationStartDate = tomorrow; + else + vm.vacationStartDate = undefined; + + // Determine maximum value of start date + if (statePreferences.defaults.Vacation.endDateEnabled) + vm.vacationEndDate = statePreferences.defaults.Vacation.endDate; + else + vm.vacationEndDate = undefined; + } + else { + vm.vacationStartDateMin = undefined; + vm.vacationStartDate = undefined; vm.vacationEndDate = undefined; + } } }