@@ -, +, @@
parameters
BETWEEN <>
AND <>
The date input fields should have no default values.
eg. "now", "-6 month", "-5 year", "1 day", etc.
The date input fields should have the proper default values.
eg. "NOT", "-X", "10 asdasd", etc.
These are silently ignored, and the date input fields should
have no default values.
pulldowns) still work as expected.
---
.../intranet-tmpl/prog/en/includes/calendar.inc | 24 ++++++++++++++++------
.../en/modules/reports/guided_reports_start.tt | 2 +-
reports/guided_reports.pl | 13 ++++++++++--
3 files changed, 30 insertions(+), 9 deletions(-)
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/calendar.inc
+++ a/koha-tmpl/intranet-tmpl/prog/en/includes/calendar.inc
@@ -56,19 +56,22 @@ function validate_date (dateText, inst) {
}
}
-function Date_from_syspref(dstring) {
+function Date_from_syspref(dstring, tmpdformat) {
var dateX = dstring.split(/[-/.]/);
+ if (typeof tmpdformat === 'undefined') {
+ tmpdformat = dformat;
+ }
if (debug > 1 && sentmsg < 1) {sentmsg++; alert("Date_from_syspref(" + dstring + ") splits to:\n" + dateX.join("\n"));}
- if (dformat === "iso") {
+ if (tmpdformat === "iso") {
return new Date(dateX[0], (dateX[1] - 1), dateX[2]); // YYYY-MM-DD to (YYYY,m(0-11),d)
- } else if (dformat === "us") {
+ } else if (tmpdformat === "us") {
return new Date(dateX[2], (dateX[0] - 1), dateX[1]); // MM/DD/YYYY to (YYYY,m(0-11),d)
- } else if (dformat === "metric") {
+ } else if (tmpdformat === "metric") {
return new Date(dateX[2], (dateX[1] - 1), dateX[0]); // DD/MM/YYYY to (YYYY,m(0-11),d)
- } else if (dformat === "dmydot") {
+ } else if (tmpdformat === "dmydot") {
return new Date(dateX[2], (dateX[1] - 1), dateX[0]); // DD.MM.YYYY to (YYYY,m(0-11),d)
} else {
- if (debug > 0) {alert("KOHA ERROR - Unrecognized date format: " +dformat);}
+ if (debug > 0) {alert("KOHA ERROR - Unrecognized date format: " +tmpdformat);}
return 0;
}
}
@@ -150,6 +153,15 @@ $("#dateofbirth").datepicker({
}).on("change", function(e, value) {
if ( ! is_valid_date( $(this).val() ) ) {$(this).val("");}
});
+
+ $( ".datepicker" ).each(function () {
+ var defval = $(this).data("defvalue");
+ if (defval !== "") {
+ var tmpd = Date_from_syspref(defval, "iso");
+ $(this).datepicker('setDate', tmpd);
+ }
+ });
+
// http://jqueryui.com/demos/datepicker/#date-range
var dates = $( ".datepickerfrom, .datepickerto" ).datepicker({
changeMonth: true,
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt
@@ -672,7 +672,7 @@ canned reports and writing custom SQL reports.
[% IF sql_param.input == 'date' %]
-
+
[% ELSIF ( sql_param.input == 'text' ) %]
--- a/reports/guided_reports.pl
+++ a/reports/guided_reports.pl
@@ -701,19 +701,28 @@ elsif ($phase eq 'Run this report'){
my @authval_errors;
my %uniq_params;
for(my $i=0;$i<($#split/2);$i++) {
- my ($text,$authorised_value) = split /\|/,$split[$i*2+1];
+ my ($text,$authorised_value,$def_value) = split /\|/,$split[$i*2+1];
my $sep = $authorised_value ? "|" : "";
if( defined $uniq_params{$text.$sep.$authorised_value} ){
next;
} else { $uniq_params{$text.$sep.$authorised_value} = "$i"; }
my $input;
my $labelid;
+ my $inputvalue;
if ( not defined $authorised_value ) {
# no authorised value input, provide a text box
$input = "text";
} elsif ( $authorised_value eq "date" ) {
# require a date, provide a date picker
$input = 'date';
+ if ( defined $def_value && ($def_value eq "now" || $def_value =~ /^([+-]?\d+) +(hour|day|week|month|year)$/) ) { # careful with the regex, we are doing explicit sql query
+ my ($ivalue, $interval) = ($1, $2);
+ ($ivalue, $interval) = (0, "hour") if ($def_value eq "now");
+ my $dbh=C4::Context->dbh;
+ my $sth = $dbh->prepare("SELECT DATE(DATE_ADD(NOW(), INTERVAL ? ".$interval." ))");
+ $sth->execute( $ivalue );
+ $inputvalue = $sth->fetchrow_array();
+ }
} else {
# defined $authorised_value, and not 'date'
my $dbh=C4::Context->dbh;
@@ -797,7 +806,7 @@ elsif ($phase eq 'Run this report'){
};
}
- push @tmpl_parameters, {'entry' => $text, 'input' => $input, 'labelid' => $labelid, 'name' => $text.$sep.$authorised_value };
+ push @tmpl_parameters, {'entry' => $text, 'input' => $input, 'inputvalue' => $inputvalue, 'labelid' => $labelid, 'name' => $text.$sep.$authorised_value };
}
$template->param('sql' => $sql,
'name' => $name,
--