@@ -, +, @@ 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, --