|
Lines 5-10
Link Here
|
| 5 |
var dformat = "[% dateformat | html %]"; |
5 |
var dformat = "[% dateformat | html %]"; |
| 6 |
var sentmsg = 0; |
6 |
var sentmsg = 0; |
| 7 |
if (debug > 1) {alert("dateformat: " + dformat + "\ndebug is on (level " + debug + ")");} |
7 |
if (debug > 1) {alert("dateformat: " + dformat + "\ndebug is on (level " + debug + ")");} |
|
|
8 |
var MSG_PLEASE_ENTER_A_VALID_DATE = (_("Please enter a valid date (should match %s).")); |
| 9 |
|
| 10 |
function is_valid_date(date) { |
| 11 |
// An empty string is considered as a valid date for convenient reasons. |
| 12 |
if ( date === '' ) return 1; |
| 13 |
var dateformat = dateformat_str = '[% Koha.Preference('dateformat') | html %]'; |
| 14 |
if ( dateformat == 'us' ) { |
| 15 |
if ( date.search(/^\d{2}\/\d{2}\/\d{4}($|\s)/) == -1 ) return 0; |
| 16 |
dateformat = 'mm/dd/yy'; |
| 17 |
} else if ( dateformat == 'metric' ) { |
| 18 |
if ( date.search(/^\d{2}\/\d{2}\/\d{4}($|\s)/) == -1 ) return 0; |
| 19 |
dateformat = 'dd/mm/yy'; |
| 20 |
} else if (dateformat == 'iso' ) { |
| 21 |
if ( date.search(/^\d{4}-\d{2}-\d{2}($|\s)/) == -1 ) return 0; |
| 22 |
dateformat = 'yy-mm-dd'; |
| 23 |
} else if ( dateformat == 'dmydot' ) { |
| 24 |
if ( date.search(/^\d{2}\.\d{2}\.\d{4}($|\s)/) == -1 ) return 0; |
| 25 |
} |
| 26 |
try { |
| 27 |
$.datepicker.parseDate(dateformat, date); |
| 28 |
} catch (e) { |
| 29 |
return 0; |
| 30 |
}; |
| 31 |
return 1; |
| 32 |
} |
| 33 |
|
| 34 |
function get_dateformat_str(dateformat) { |
| 35 |
var dateformat_str; |
| 36 |
if ( dateformat == 'us' ) { |
| 37 |
dateformat_str = 'mm/dd/yyyy'; |
| 38 |
} else if ( dateformat == 'metric' ) { |
| 39 |
dateformat_str = 'dd/mm/yyyy'; |
| 40 |
} else if (dateformat == 'iso' ) { |
| 41 |
dateformat_str = 'yyyy-mm-dd'; |
| 42 |
} else if ( dateformat == 'dmydot' ) { |
| 43 |
dateformat_str = 'dd.mm.yyyy'; |
| 44 |
} |
| 45 |
return dateformat_str; |
| 46 |
} |
| 47 |
|
| 48 |
function validate_date (dateText, inst) { |
| 49 |
if ( !is_valid_date(dateText) ) { |
| 50 |
var dateformat_str = get_dateformat_str( '[% Koha.Preference('dateformat') | html %]' ); |
| 51 |
alert(MSG_PLEASE_ENTER_A_VALID_DATE.format(dateformat_str)); |
| 52 |
$('#'+inst.id).val(''); |
| 53 |
} |
| 54 |
} |
| 8 |
|
55 |
|
| 9 |
function Date_from_syspref(dstring) { |
56 |
function Date_from_syspref(dstring) { |
| 10 |
var dateX = dstring.split(/[-/.]/); |
57 |
var dateX = dstring.split(/[-/.]/); |
|
Lines 23-28
Link Here
|
| 23 |
} |
70 |
} |
| 24 |
} |
71 |
} |
| 25 |
|
72 |
|
|
|
73 |
jQuery.validator.addMethod("is_date_after", |
| 74 |
function(value, element, params) { |
| 75 |
var from = Date_from_syspref( $(params).val() ); |
| 76 |
var to = Date_from_syspref(value); |
| 77 |
return to > from; |
| 78 |
}); |
| 79 |
|
| 80 |
jQuery.validator.addMethod("date_on_or_after", |
| 81 |
function(value, element, params) { |
| 82 |
var from = Date_from_syspref( $(params).val() ); |
| 83 |
var to = Date_from_syspref(value); |
| 84 |
return to >= from; |
| 85 |
}); |
| 86 |
|
| 26 |
/* Instead of including multiple localization files as you would normally see with |
87 |
/* Instead of including multiple localization files as you would normally see with |
| 27 |
jQueryUI we expose the localization strings in the default configuration */ |
88 |
jQueryUI we expose the localization strings in the default configuration */ |
| 28 |
jQuery(function($){ |
89 |
jQuery(function($){ |
|
Lines 64-70
Link Here
|
| 64 |
yearRange: "c-100:c" |
125 |
yearRange: "c-100:c" |
| 65 |
}); |
126 |
}); |
| 66 |
|
127 |
|
| 67 |
$( ".datepicker" ).datepicker(); |
128 |
$( ".datepicker" ).datepicker({ |
|
|
129 |
onClose: function(dateText, inst) { |
| 130 |
validate_date(dateText, inst); |
| 131 |
}, |
| 132 |
}).on("change", function(e, value) { |
| 133 |
if ( ! is_valid_date( $(this).val() ) ) {$(this).val("");} |
| 134 |
}); |
| 68 |
// http://jqueryui.com/demos/datepicker/#date-range |
135 |
// http://jqueryui.com/demos/datepicker/#date-range |
| 69 |
var dates = $( ".datepickerfrom, .datepickerto" ).datepicker({ |
136 |
var dates = $( ".datepickerfrom, .datepickerto" ).datepicker({ |
| 70 |
changeMonth: true, |
137 |
changeMonth: true, |
|
Lines 77-83
Link Here
|
| 77 |
$.datepicker._defaults.dateFormat, |
144 |
$.datepicker._defaults.dateFormat, |
| 78 |
selectedDate, instance.settings ); |
145 |
selectedDate, instance.settings ); |
| 79 |
dates.not( this ).datepicker( "option", option, date ); |
146 |
dates.not( this ).datepicker( "option", option, date ); |
| 80 |
} |
147 |
}, |
|
|
148 |
onClose: function(dateText, inst) { |
| 149 |
validate_date(dateText, inst); |
| 150 |
}, |
| 151 |
}).on("change", function(e, value) { |
| 152 |
if ( ! is_valid_date( $(this).val() ) ) {$(this).val("");} |
| 81 |
}); |
153 |
}); |
| 82 |
}); |
154 |
}); |
| 83 |
//]]> |
155 |
//]]> |