Skip to content

Commit

Permalink
(js) Add constraints to dates of vacation reply
Browse files Browse the repository at this point in the history
Fixes #3841
  • Loading branch information
cgx committed Oct 14, 2016
1 parent fd55403 commit 5628366
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 11 deletions.
1 change: 1 addition & 0 deletions NEWS
Expand Up @@ -2,6 +2,7 @@
------------------

Enhancements
- [web] add constraints to start/end dates of automatic responder (#3841)
- [web] updated Angular to version 1.5.8

Bug fixes
Expand Down
23 changes: 17 additions & 6 deletions UI/Templates/PreferencesUI/UIxPreferences.wox
Expand Up @@ -893,24 +893,35 @@
<md-checkbox
ng-model="app.preferences.defaults.Vacation.startDateEnabled"
ng-true-value="1"
ng-false-value="0">
ng-false-value="0"
ng-change="app.updateVacationStartDate()">
<var:string label:value="Enable auto reply on" />
</md-checkbox>
<md-datepicker
<md-input-container>
<md-datepicker
ng-disabled="app.preferences.defaults.Vacation.startDateEnabled == 0"
ng-model="app.preferences.defaults.Vacation.startDate"><!-- datepicker --></md-datepicker>
ng-model="app.preferences.defaults.Vacation.startDate"
ng-change="app.updateVacationStartDate()"
md-min-date="::app.tomorrow"
md-max-date="app.vacationEndDate"><!-- datepicker --></md-datepicker>
</md-input-container>
</div>

<div layout="row">
<div>
<md-checkbox
ng-model="app.preferences.defaults.Vacation.endDateEnabled"
ng-true-value="1"
ng-false-value="0">
ng-false-value="0"
ng-change="app.updateVacationEndDate()">
<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"><!-- datepicker --></md-datepicker>
ng-model="app.preferences.defaults.Vacation.endDate"
ng-change="app.updateVacationEndDate()"
md-min-date="app.vacationStartDate"><!-- datepicker --></md-datepicker>
</md-input-container>
</div>

<div>
Expand Down
33 changes: 28 additions & 5 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 = [];
var vm = this, account, mailboxes = [], today = new Date();

vm.preferences = statePreferences;
vm.passwords = { newPassword: null, newPasswordConfirmation: null };
Expand Down Expand Up @@ -38,6 +38,9 @@
vm.timeZonesListFilter = timeZonesListFilter;
vm.timeZonesSearchText = '';
vm.sieveVariablesCapability = ($window.sieveCapabilities.indexOf('variables') >= 0);
vm.tomorrow = today.addDays(1);
vm.updateVacationStartDate = updateVacationStartDate;
vm.updateVacationEndDate = updateVacationEndDate;

// 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 @@ -55,6 +58,8 @@
statePreferences.ready().then(function() {
if (statePreferences.defaults.SOGoAlternateAvatar)
User.$alternateAvatar = statePreferences.defaults.SOGoAlternateAvatar;
updateVacationStartDate();
updateVacationEndDate();
});

function go(module, form) {
Expand Down Expand Up @@ -282,15 +287,15 @@
domains = [];

// We do some sanity checks
if (window.forwardConstraints > 0 &&
if ($window.forwardConstraints > 0 &&
angular.isDefined(vm.preferences.defaults.Forward) &&
vm.preferences.defaults.Forward.enabled &&
angular.isDefined(vm.preferences.defaults.Forward.forwardAddress)) {

addresses = vm.preferences.defaults.Forward.forwardAddress.split(",");

// We first extract the list of 'known domains' to SOGo
defaultAddresses = window.defaultEmailAddresses.split(/, */);
defaultAddresses = $window.defaultEmailAddresses.split(/, */);

_.forEach(defaultAddresses, function(adr) {
var domain = adr.split("@")[1];
Expand All @@ -302,11 +307,11 @@
// We check if we're allowed or not to forward based on the domain defaults
for (i = 0; i < addresses.length && sendForm; i++) {
domain = addresses[i].split("@")[1].toLowerCase();
if (domains.indexOf(domain) < 0 && window.forwardConstraints == 1) {
if (domains.indexOf(domain) < 0 && $window.forwardConstraints == 1) {
Dialog.alert(l('Error'), l("You are not allowed to forward your messages to an external email address."));
sendForm = false;
}
else if (domains.indexOf(domain) >= 0 && window.forwardConstraints == 2) {
else if (domains.indexOf(domain) >= 0 && $window.forwardConstraints == 2) {
Dialog.alert(l('Error'), l("You are not allowed to forward your messages to an internal email address."));
sendForm = false;
}
Expand Down Expand Up @@ -366,6 +371,24 @@
return value.toUpperCase().indexOf(filter.toUpperCase()) >= 0;
});
}

function updateVacationStartDate() {
if (statePreferences.defaults &&
statePreferences.defaults.Vacation &&
statePreferences.defaults.Vacation.startDateEnabled)
vm.vacationStartDate = statePreferences.defaults.Vacation.startDate;
else
vm.vacationStartDate = vm.tomorrow;
}

function updateVacationEndDate() {
if (statePreferences.defaults &&
statePreferences.defaults.Vacation &&
statePreferences.defaults.Vacation.endDateEnabled)
vm.vacationEndDate = statePreferences.defaults.Vacation.endDate;
else
vm.vacationEndDate = undefined;
}
}

angular
Expand Down

0 comments on commit 5628366

Please sign in to comment.