Bug 22272: Calendar: When entering date ranges grey out dates in the past from the...
authorEmmi <emmi.takkinen@outlook.com>
Wed, 10 Jul 2019 06:25:43 +0000 (09:25 +0300)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Tue, 13 Aug 2019 10:53:25 +0000 (11:53 +0100)
In "Calendar" tool it's possible to pick dates before start
date as end date.

This patch sets end date calendars "minDate" as picked start day
to grey out past dates. Also reindents datepicker code for
better readability.

Test plan:
- Apply this patch
- Set start date from first calendar
- Set end date from second calendar
=> Dates before start date are greyed out

Signed-off-by: Nadine Pierre <nadine.pierre@inLibro.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

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

index 8ba0d6d..f7771c0 100644 (file)
@@ -516,43 +516,44 @@ td.repeatableyearly a.ui-state-default {  background:  #FFCC66 none; color :  Bl
                 $(this).parent().find(".hint").toggle(); return false;
             });
             $("#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);
-                   }
+                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 = "" });
             $("#jcalendar-container").datepicker({
-              beforeShowDay: function(thedate) {
-                var day = thedate.getDate();
-                var month = thedate.getMonth() + 1;
-                var year = thedate.getFullYear();
-                var dateString = year + '/' + month + '/' + day;
-                return dateStatusHandler(dateString);
+                beforeShowDay: function(thedate) {
+                    var day = thedate.getDate();
+                    var month = thedate.getMonth() + 1;
+                    var year = thedate.getFullYear();
+                    var dateString = year + '/' + month + '/' + day;
+                    return dateStatusHandler(dateString);
                 },
-            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 %]")
+                onSelect: function(dateText, inst) {
+                    dateChanged($(this).datepicker("getDate"));
+                    var enddate = $("#dateofrange").datepicker("getDate");
+                    $("#dateofrange").datepicker("option", "defaultDate", $(this).datepicker("getDate"));
+                    $("#dateofrange").datepicker( "option", "minDate", $(this).datepicker("getDate")); //ensure end date can't be before start date
+                    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 %]")
             });
             $(".hidePanel").on("click",function(){
                 if( $(this).hasClass("showHoliday") ){