[Koha-patches] [PATCH] Bug 8588 [3.8.x] Duplicate field IDs cause problems with SQL report parameter entry
Owen Leonard
oleonard at myacpl.org
Wed Nov 21 18:35:53 CET 2012
Reimplemented for 3.8.x: Changes to markup and script to
enable unique ids on form fields. These changes allow for
working label+input pairs on one or more text and select
inputs and multiple working datepickers.
To test, create a report with more than one date parameter,
at least one text parameter, and one or more authorised
value parameters. The datepickers should each work properly,
and labels should by clickable.
---
.../en/modules/reports/guided_reports_start.tt | 22 +++++++++++++-------
reports/guided_reports.pl | 8 +++++--
2 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt
index bec1619..7343e13 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt
@@ -487,24 +487,30 @@ canned reports and writing custom SQL reports.</p>
<input type='hidden' name='reports' value="[% reports %]" />
<h1>Enter parameters for report [% name %]:</h1>
[% IF ( notes ) %]<p>[% notes %]</p>[% END %]
+ <fieldset class="rows">
+ <ol>
[% FOREACH sql_param IN sql_params %]
[% IF sql_param.input == 'date' %]
- <p>
- [% sql_param.entry %]: <input id="date_[% sql_param_entry %]" type="text" value="" size="10" name="sql_params">
- <img id="date_picker_[% sql_param_entry %]" alt="Show calendar" src="/intranet-tmpl/prog/en/lib/calendar/cal.gif">
+ <li><label for="date_[% sql_param_entry %][% loop.count %]">
+ [% sql_param.entry %]:</label> <input id="date_[% sql_param_entry %][% loop.count %]" type="text" value="" size="10" name="sql_params" />
+ <img id="date_picker_[% sql_param_entry %][% loop.count %]" alt="Show calendar" src="/intranet-tmpl/prog/en/lib/calendar/cal.gif" />
<script type="text/javascript">
Calendar.setup( {
- inputField : "date_[% sql_param_entry %]",
+ inputField : "date_[% sql_param_entry %][% loop.count %]",
ifFormat : "%Y-%m-%d",
- button : "date_picker_[% sql_param_entry %]"
+ button : "date_picker_[% sql_param_entry %][% loop.count %]"
} );
</script>
- </p>
+ </li>
+ [% ELSIF ( sql_param.input == 'text' ) %]
+ <li><label for="sql_params[% loop.count %]">[% sql_param.entry %]: </label><input id="sql_params[% loop.count %]" type="text" name="sql_params" /></li>
[% ELSE %]
- <p>[% sql_param.entry %]: [% sql_param.input %]</p>
+ <li><label for="sql_params_[% sql_param.labelid %]">[% sql_param.entry %]:</label> [% sql_param.input %]</li>
[% END %]
[% END %]
- <input type='submit' value='Run the report'/>
+ </ol>
+ </fieldset>
+ <fieldset class="action"><input type="submit" value="Run the report"/></fieldset>
</form>
[% END %]
diff --git a/reports/guided_reports.pl b/reports/guided_reports.pl
index 394b415..4bbf44e 100755
--- a/reports/guided_reports.pl
+++ b/reports/guided_reports.pl
@@ -425,6 +425,7 @@ elsif ($phase eq 'Run this report'){
for(my $i=0;$i<($#split/2);$i++) {
my ($text,$authorised_value) = split /\|/,$split[$i*2+1];
my $input;
+ my $labelid;
if ($authorised_value eq "date") {
$input = 'date';
}
@@ -480,8 +481,11 @@ elsif ($phase eq 'Run this report'){
$authorised_lib{$value} = $lib;
}
}
+ $labelid = $text;
+ $labelid =~ s/\W//g;
$input =CGI::scrolling_list( # FIXME: factor out scrolling_list
-name => "sql_params",
+ -id => "sql_params_".$labelid,
-values => \@authorised_values,
# -default => $value,
-labels => \%authorised_lib,
@@ -492,9 +496,9 @@ elsif ($phase eq 'Run this report'){
);
} else {
- $input = "<input type='text' name='sql_params'/>";
+ $input = "text";
}
- push @tmpl_parameters, {'entry' => $text, 'input' => $input };
+ push @tmpl_parameters, {'entry' => $text, 'input' => $input, 'labelid' => $labelid };
}
$template->param('sql' => $sql,
'name' => $name,
--
1.7.9.5
More information about the Koha-patches
mailing list