Bug 21885: Calendar to-date starts before end-date
authorPasi Kallinen <pasi.kallinen@joensuu.fi>
Tue, 27 Nov 2018 09:53:32 +0000 (11:53 +0200)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Tue, 12 Feb 2019 13:11:42 +0000 (13:11 +0000)
When adding new holidays to the calendar, you pick the start date,
and then the end date, but the end date calendar will start from
current date, not from the picked start date. Sometimes this means
many extra clicks to pick an end date.

Make the end date calendar start from the beginning date by default.

Test plan:

1) Go to the tools -> calendar
2) Pick a start date somewhere in the future, and then open the
   end date calendar. Notice how it starts before the start date
   of the date range.
3) Apply patch.
4) Pick a start date in the future. The end date calendar should
   automatically default to the same date.
5) Change the start date a day backwards, note how the end date
   does not change.
6) Change the start date after the end date, note how the end date
   adjusts, so it is not in the past.

Signed-off-by: Pasi Kallinen <pasi.kallinen@joensuu.fi>

Signed-off-by: Owen Leonard <oleonard@myacpl.org>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
(cherry picked from commit 0939d44c22cda569faf4c0c60fd67de04097b34d)
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

koha-tmpl/intranet-tmpl/prog/en/modules/tools/holidays.tt

index 4ad136e..ab93a5c 100644 (file)
@@ -516,7 +516,19 @@ td.repeatableyearly a.ui-state-default {  background:  #FFCC66 none; color :  Bl
             $("a.helptext").click(function(){
                 $(this).parent().find(".hint").toggle(); return false;
             });
-            $("#dateofrange").datepicker();
+            $("#dateofrange").datepicker({
+              beforeShow: function() {
+                var startdate = $("#jcalendar-container").datepicker("getDate");
+                if (startdate !== null) {
+                   var sd = new Date(startdate);
+                   var ed = new Date($(this).datepicker("getDate"));
+                   if (ed < sd) {
+                     $(this).datepicker("setDate", startdate);
+                     $(this).datepicker("option", "defaultDate", startdate);
+                   }
+                }
+              }
+            });
             $("#datecancelrange").datepicker();
             $("#dateofrange").each(function () { this.value = "" });
             $("#datecancelrange").each(function () { this.value = "" });
@@ -530,6 +542,16 @@ td.repeatableyearly a.ui-state-default {  background:  #FFCC66 none; color :  Bl
                 },
             onSelect: function(dateText, inst) {
                 dateChanged($(this).datepicker("getDate"));
+                var enddate = $("#dateofrange").datepicker("getDate");
+                $("#dateofrange").datepicker("option", "defaultDate", $(this).datepicker("getDate"));
+                if (enddate !== null) {
+                   var ed = new Date(enddate);
+                   var sd = new Date($(this).datepicker("getDate"));
+                   if (ed < sd) {
+                     $("#dateofrange").datepicker("setDate", $(this).datepicker("getDate"));
+                     $("#dateofrange").datepicker("option", "defaultDate", enddate);
+                   }
+                }
             },
             defaultDate: new Date("[% keydate | html %]")
             });