From 742da13bb5d3a0f2f470cccfaa18581a27ce8ff7 Mon Sep 17 00:00:00 2001 From: Emmi Date: Wed, 10 Jul 2019 09:25:43 +0300 Subject: [PATCH] Bug 22272 - Calendar: When entering date... ...ranges grey out dates in the past from the start date 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: Lucas Gass --- .../prog/en/modules/tools/holidays.tt | 61 +++++++++++----------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/holidays.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/holidays.tt index 8ba0d6d60c..f7771c0953 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/holidays.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/holidays.tt @@ -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") ){ -- 2.11.0