Fixed dates validation with new date picker

This commit is contained in:
Francis Lachapelle
2012-09-24 11:21:48 -04:00
parent 23ebc24d94
commit ae6e32c40a
3 changed files with 54 additions and 31 deletions

View File

@@ -55,7 +55,8 @@ function validateAptEditor() {
alert(labels.validate_invalid_startdate);
return false;
}
startdate = e.calendar.prs_date(e.value);
startdate = getStartDate();
if (startdate == null) {
alert(labels.validate_invalid_startdate);
return false;
@@ -66,7 +67,7 @@ function validateAptEditor() {
alert(labels.validate_invalid_enddate);
return false;
}
enddate = e.calendar.prs_date(e.value);
enddate = getEndDate();
if (enddate == null) {
alert(labels.validate_invalid_enddate);
return false;
@@ -235,6 +236,9 @@ function _getDate(which) {
date.setMinutes(time[2]);
}
if (isNaN(date.getTime()))
return null;
return date;
}
@@ -290,35 +294,47 @@ function onAdjustTime(event) {
if ($(this).readAttribute("id").startsWith("start")) {
// Start date was changed
var delta = window.getShadowStartDate().valueOf() - startDate.valueOf();
window.setStartDate();
if (delta != 0) {
var newEndDate = new Date(endDate.valueOf() - delta);
window.setEndDate(newEndDate);
if (startDate == null) {
var oldStartDate = window.getShadowStartDate();
window.setStartDate(oldStartDate);
}
else {
var delta = window.getShadowStartDate().valueOf() - startDate.valueOf();
window.setStartDate();
if (delta != 0) {
// Increment end date
var newEndDate = new Date(endDate.valueOf() - delta);
window.setEndDate(newEndDate);
window.timeWidgets['end']['date'].updateShadowValue();
window.timeWidgets['end']['time'].updateShadowValue();
window.timeWidgets['start']['date'].updateShadowValue();
window.timeWidgets['start']['time'].updateShadowValue();
if (window.timeWidgets['end']['time'].onChange)
window.timeWidgets['end']['time'].onChange(); // method from SOGoTimePicker
window.timeWidgets['end']['date'].updateShadowValue();
window.timeWidgets['end']['time'].updateShadowValue();
window.timeWidgets['start']['date'].updateShadowValue();
window.timeWidgets['start']['time'].updateShadowValue();
if (window.timeWidgets['end']['time'].onChange)
window.timeWidgets['end']['time'].onChange(); // method from SOGoTimePicker
}
}
}
else {
// End date was changed
var delta = endDate.valueOf() - startDate.valueOf();
if (delta < 0) {
alert(labels.validate_endbeforestart);
if (endDate == null) {
var oldEndDate = window.getShadowEndDate();
window.setEndDate(oldEndDate);
window.timeWidgets['end']['date'].updateShadowValue();
window.timeWidgets['end']['time'].updateShadowValue();
window.timeWidgets['end']['time'].onChange(); // method from SOGoTimePicker
}
else {
window.setEndDate();
var delta = endDate.valueOf() - startDate.valueOf();
if (delta < 0) {
alert(labels.validate_endbeforestart);
var oldEndDate = window.getShadowEndDate();
window.setEndDate(oldEndDate);
window.timeWidgets['end']['date'].updateShadowValue();
window.timeWidgets['end']['time'].updateShadowValue();
window.timeWidgets['end']['time'].onChange(); // method from SOGoTimePicker
}
else {
window.setEndDate();
}
}
}
}

View File

@@ -51,9 +51,9 @@ function savePreferences(sender) {
}
if ($("enableVacationEndDate") && $("enableVacationEndDate").checked) {
var e = $("vacationEndDate_date");
var endDate = e.calendar.prs_date(e.value);
var endDate = e.inputAsDate();
var now = new Date();
if (endDate.getTime() < now.getTime()) {
if (isNaN(endDate.getTime()) || endDate.getTime() < now.getTime()) {
showAlertDialog(_("End date of your auto reply must be in the future."));
sendForm = false;
}

View File

@@ -18,11 +18,11 @@ function uixEarlierDate(date1, date2) {
return null;
}
function validateDate(date, label) {
function validateDate(which, label) {
var result, dateValue;
dateValue = date.calendar.prs_date(date.value);
if (date.value.length != 10 || !dateValue) {
dateValue = this._getDate(which);
if (dateValue == null) {
alert(label);
result = false;
} else
@@ -41,14 +41,14 @@ function validateTaskEditor() {
e = document.getElementById('startTime_date');
if (!e.disabled) {
startdate = validateDate(e, labels.validate_invalid_startdate);
startdate = validateDate('start', labels.validate_invalid_startdate);
if (!startdate)
return false;
}
e = document.getElementById('dueTime_date');
if (!e.disabled) {
enddate = validateDate(e, labels.validate_invalid_enddate);
enddate = validateDate('due', labels.validate_invalid_enddate);
if (!enddate)
return false;
}
@@ -204,6 +204,9 @@ this._getDate = function(which) {
date.setHours(time[0]);
date.setMinutes(time[1]);
if (isNaN(date.getTime()))
return null;
return date;
};
@@ -235,6 +238,11 @@ this.getShadowDueDate = function() {
this._setDate = function(which, newDate) {
window.timeWidgets[which]['date'].setInputAsDate(newDate);
window.timeWidgets[which]['time'].value = newDate.getDisplayHoursString();
// Update date picker
var dateComponent = jQuery(window.timeWidgets[which]['date']).closest('.date');
dateComponent.data('date', window.timeWidgets[which]['date'].value);
dateComponent.datepicker('update');
};
this.setStartDate = function(newStartDate) {
@@ -242,7 +250,6 @@ this.setStartDate = function(newStartDate) {
};
this.setDueDate = function(newDueDate) {
// window.alert(newDueDate);
this._setDate('due', newDueDate);
};
@@ -268,8 +275,8 @@ this.initTimeWidgets = function (widgets) {
jQuery(widgets['due']['date']).closest('.date').datepicker({autoclose: true});
jQuery('#statusTime_date').closest('.date').datepicker({autoclose: true});
widgets['start']['date'].observe("change", this.onAdjustDueTime, false);
widgets['start']['time'].observe("time:change", this.onAdjustDueTime, false);
jQuery(widgets['start']['date']).change(onAdjustTime);
widgets['start']['time'].on("time:change", onAdjustDueTime);
widgets['start']['time'].addInterface(SOGoTimePickerInterface);
widgets['due']['time'].addInterface(SOGoTimePickerInterface);
};