Skip to content

Commit

Permalink
(js) Improve dates constraints of vacation reply
Browse files Browse the repository at this point in the history
Fixes #3846
  • Loading branch information
cgx committed Oct 18, 2016
1 parent 6454cdb commit 6f14696
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 23 deletions.
10 changes: 5 additions & 5 deletions UI/Templates/PreferencesUI/UIxPreferences.wox
Expand Up @@ -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()">
<var:string label:value="Enable auto reply on" />
</md-checkbox>
<md-input-container>
<md-datepicker
ng-disabled="app.preferences.defaults.Vacation.startDateEnabled == 0"
ng-model="app.preferences.defaults.Vacation.startDate"
ng-change="app.updateVacationStartDate()"
md-min-date="::app.tomorrow"
ng-change="app.updateVacationDates()"
md-min-date="app.vacationStartDateMin"
md-max-date="app.vacationEndDate"><!-- datepicker --></md-datepicker>
</md-input-container>
</div>
Expand All @@ -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()">
<var:string label:value="Disable auto reply on" />
</md-checkbox>
<md-input-container>
<md-datepicker
ng-disabled="app.preferences.defaults.Vacation.endDateEnabled == 0"
ng-model="app.preferences.defaults.Vacation.endDate"
ng-change="app.updateVacationEndDate()"
ng-change="app.updateVacationDates()"
md-min-date="app.vacationStartDate"><!-- datepicker --></md-datepicker>
</md-input-container>
</div>
Expand Down
44 changes: 26 additions & 18 deletions UI/WebServerResources/js/Preferences/PreferencesController.js
Expand Up @@ -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 };
Expand Down Expand Up @@ -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
Expand All @@ -58,8 +56,7 @@
statePreferences.ready().then(function() {
if (statePreferences.defaults.SOGoAlternateAvatar)
User.$alternateAvatar = statePreferences.defaults.SOGoAlternateAvatar;
updateVacationStartDate();
updateVacationEndDate();
updateVacationDates();
});

function go(module, form) {
Expand Down Expand Up @@ -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;
}
}
}

Expand Down

0 comments on commit 6f14696

Please sign in to comment.