]> err.no Git - scalable-opengroupware.org/commitdiff
implemented start < end validation (#1478)
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Wed, 20 Jul 2005 09:55:59 +0000 (09:55 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Wed, 20 Jul 2005 09:55:59 +0000 (09:55 +0000)
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@836 d1b88da0-ebda-0310-925b-ed51d893ca5b

SOGo/UI/Scheduler/English.lproj/Localizable.strings
SOGo/UI/WebServerResources/ChangeLog
SOGo/UI/WebServerResources/UIxAppointmentEditor.js

index 12ee0507ba35be010ebf20538012e5ec79a00719..ce93a8763f3aaf18847bc9ea3b3c3935b315c70e 100644 (file)
 validate_notitle           = "No title is set, continue?";
 validate_invalid_startdate = "Incorrect startdate field!";
 validate_invalid_enddate   = "Incorrect enddate field!";
+validate_endbeforestart    = "Enddate is before startdate!";
+
index 8bb43e210e2d7437c4f5f43d70253c5f81385309..5cc90a10d8a91b01d414ff8ea85569af84043394 100644 (file)
@@ -1,3 +1,8 @@
+2005-07-20  Helge Hess  <helge.hess@opengroupware.org>
+
+       * UIxAppointmentEditor.js: properly validate startdate/enddate so that
+         startdate is always before the enddate (#1478)
+
 2005-07-18  Helge Hess  <helge.hess@opengroupware.org>
 
        * generic.js: added regex for email field checks
index 0285a1bb7948199e6bfba52b565635c0cd480370..3277096d253f4ffd605a18a841bb8c05d8aea032 100644 (file)
  02111-1307, USA.
 */
 
+function uixEarlierDate(date1, date2) {
+  // can this be done in a sane way?
+  if (date1.getYear()  < date2.getYear()) return date1;
+  if (date1.getYear()  > date2.getYear()) return date2;
+  // same year
+  if (date1.getMonth() < date2.getMonth()) return date1;
+  if (date1.getMonth() > date2.getMonth()) return date2;
+  // same month
+  if (date1.getDay() < date2.getDay()) return date1;
+  if (date1.getDay() > date2.getDay()) return date2;
+  // same day
+  return null;
+}
+
 function validateAptEditor() {
-      var e;
+  var e, startdate, enddate, tmpdate;
       
-      e = document.getElementById('summary');
-      if (e.value.length == 0) {
-        if (!confirm(labels.validate_notitle))
-          return false;
-      }
+  e = document.getElementById('summary');
+  if (e.value.length == 0) {
+    if (!confirm(labels.validate_notitle))
+      return false;
+  }
 
-      e = document.getElementById('startTime_date');
-      if (e.value.length != 10) {
-        alert(labels.validate_invalid_startdate);
-        return false;
-      }
-      if (calendar_startTime_date.prs_date(e.value) == null)
-       return false;
+  e = document.getElementById('startTime_date');
+  if (e.value.length != 10) {
+    alert(labels.validate_invalid_startdate);
+    return false;
+  }
+  startdate = calendar_startTime_date.prs_date(e.value);
+  if (startdate == null) {
+    alert(labels.validate_invalid_startdate);
+    return false;
+  }
       
-      e = document.getElementById('endTime_date');
-      if (e.value.length != 10) {
-        alert(labels.validate_invalid_enddate);
-        return false;
-      }
-      if (calendar_endTime_date.prs_date(e.value) == null)
+  e = document.getElementById('endTime_date');
+  if (e.value.length != 10) {
+    alert(labels.validate_invalid_enddate);
+    return false;
+  }
+  enddate = calendar_endTime_date.prs_date(e.value);
+  if (enddate == null) {
+    alert(labels.validate_invalid_enddate);
+    return false;
+  }
+  
+  tmpdate = uixEarlierDate(startdate, enddate);
+  if (tmpdate == enddate) {
+    alert(labels.validate_endbeforestart);
+    return false;
+  }
+  else if (tmpdate == null /* means: same date */) {
+    // TODO: check time
+    var start, end;
+    
+    start = document.forms[0]['startTime_time_hour'].value;
+    end   = document.forms[0]['endTime_time_hour'].value;
+    if (start > end) {
+      alert(labels.validate_endbeforestart);
+      return false;
+    }
+    else if (start == end) {
+      start = document.forms[0]['startTime_time_minute'].value;
+      end   = document.forms[0]['endTime_time_minute'].value;
+      if (start > end) {
+       alert(labels.validate_endbeforestart);
        return false;
+      }
+    }
+  }
 
-      // TODO: parse start/enddate and ensure that start is before end
-
-      return true;
+  return true;
 }