From 3d658f44f79e35335c432b83afc2a404f095e63c Mon Sep 17 00:00:00 2001 From: Joe Atzberger Date: Tue, 28 Apr 2009 18:23:36 -0500 Subject: [PATCH] Bug 3130 and general cleanup Javascript error in FF and IE when loading page and no data matches criteria. This was because it was passing more holds than necessary to the template and letting a template conditional inside the loop control whether to display or not. That doesn't make sense, and it forces the table to be displayed even when all rows FAIL the conditional. jquery.tablesorter was confused trying to be added on top of an empty table with nothing to sort. There were several other errors addressed by this patch: ~ 13 unused variables deleted. ~ regexps run on user-supplied $var before checking $var defined ~ decimal ratio prohibited and silently replaced with "3" I also added the hold ratio to a column display, with a jquery tweak to put it in the ratio input box on click. Hidden .sql div now contains the actual query run, like the other wizard reports. Signed-off-by: Galen Charlton Signed-off-by: Henri-Damien LAURENT --- circ/reserveratios.pl | 66 ++++++---------- .../prog/en/modules/circ/reserveratios.tmpl | 77 ++++++++++--------- 2 files changed, 63 insertions(+), 80 deletions(-) diff --git a/circ/reserveratios.pl b/circ/reserveratios.pl index 5d6a2a2931..b28dc324ec 100755 --- a/circ/reserveratios.pl +++ b/circ/reserveratios.pl @@ -28,12 +28,10 @@ use C4::Debug; use Date::Calc qw/Today Add_Delta_YM/; my $input = new CGI; -my $order = $input->param('order'); -my $startdate=$input->param('from'); -my $enddate=$input->param('to'); -my $ratio=$input->param('ratio'); - -my $theme = $input->param('theme'); # only used if allowthemeoverride is set +my $order = $input->param('order'); +my $startdate = $input->param('from'); +my $enddate = $input->param('to'); +my $ratio = $input->param('ratio'); my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { @@ -46,19 +44,6 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); -my $duedate; -my $borrowernumber; -my $itemnum; -my $data1; -my $data2; -my $data3; -my $name; -my $phone; -my $email; -my $biblionumber; -my $title; -my $author; - my ( $year, $month, $day ) = Today(); my $todaysdate = sprintf("%-04.4d-%-02.2d-%02.2d", $year, $month, $day); # Find yesterday for the default shelf pull start and end dates @@ -66,18 +51,14 @@ my $todaysdate = sprintf("%-04.4d-%-02.2d-%02.2d", $year, $month, $day); my $datelastyear = sprintf("%-04.4d-%-02.2d-%02.2d", Add_Delta_YM($year, $month, $day, -1, 0)); # Predefine the start and end dates if they are not already defined -$startdate =~ s/^\s+//; -$startdate =~ s/\s+$//; -$enddate =~ s/^\s+//; -$enddate =~ s/\s+$//; # Check if null, should string match, if so set start and end date to yesterday -if (!defined($startdate) or $startdate eq "") { +if (!defined($startdate) or $startdate !~ s/^\s*(\S+)\s*$/$1/) { # strip spaces, remove Taint $startdate = format_date($datelastyear); } -if (!defined($enddate) or $enddate eq "") { - $enddate = format_date($todaysdate); +if (!defined($enddate) or $enddate !~ s/^\s*(\S+)\s*$/$1/) { # strip spaces, remove Taint + $enddate = format_date($todaysdate); } -if (!defined($ratio) or $ratio eq "" or $ratio !~ /^\s*\d+\s*$/ ) { +if (!defined($ratio) or $ratio !~ s/^\s*(0?\.?\d+)(\.0*)?\s*$/$1/) { # strip spaces, remove Taint $ratio = 3; } if ($ratio == 0) { @@ -144,20 +125,23 @@ notforloan = 0 AND damaged = 0 AND itemlost = 0 AND wthdrawn = 0 $sqldatewhere "; - if (C4::Context->preference('IndependantBranches')){ $strsth .= " AND items.holdingbranch=? "; push @query_params, C4::Context->userenv->{'branch'}; } $strsth .= " GROUP BY reserves.biblionumber " . $sqlorderby; + +$template->param(sql => $strsth); my $sth = $dbh->prepare($strsth); $sth->execute(@query_params); +my $ratio_atleast1 = ($ratio >= 1) ? 1 : 0; my @reservedata; while ( my $data = $sth->fetchrow_hashref ) { - my @itemlist; - my $ratiocalc = int(10 * $data->{reservecount} / $data->{itemcount} / $ratio )/10; + my $thisratio = $data->{reservecount} / $data->{itemcount}; + my $ratiocalc = ($thisratio / $ratio); + ($thisratio / $ratio) >= 1 or next; # TODO: tighter targeting -- get ratio limit into SQL using HAVING clause push( @reservedata, { @@ -166,34 +150,32 @@ while ( my $data = $sth->fetchrow_hashref ) { name => $data->{borrower}, title => $data->{title}, author => $data->{author}, - notes => $data->{notes}, + notes => $data->{notes}, itemnum => $data->{itemnumber}, biblionumber => $data->{biblionumber}, holdingbranch => $data->{holdingbranch}, - listbranch => $data->{listbranch}, + listbranch => $data->{listbranch}, branch => $data->{branch}, itemcallnumber => $data->{itemcallnumber}, - location => $data->{l_location}, - itype => $data->{l_itype}, + location => $data->{l_location}, + itype => $data->{l_itype}, reservecount => $data->{reservecount}, - itemcount => $data->{itemcount}, - ratiocalc => $ratiocalc, - ratio_ge_one => $ratiocalc ge 1.0 ? 1 : "", - listcall => $data->{listcall} + itemcount => $data->{itemcount}, + ratiocalc => sprintf("%.0d", $ratio_atleast1 ? ($thisratio / $ratio) : $thisratio), + thisratio => sprintf("%.2f", $thisratio), + thisratio_atleast1 => ($thisratio >= 1) ? 1 : 0, + listcall => $data->{listcall} } ); } - -$sth->finish; - $template->param( + ratio_atleast1 => $ratio_atleast1, todaysdate => format_date($todaysdate), from => $startdate, to => $enddate, ratio => $ratio, reserveloop => \@reservedata, - "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1, DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), ); diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/reserveratios.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/reserveratios.tmpl index fb18f9cff4..0eeb7cf9a0 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/reserveratios.tmpl +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/reserveratios.tmpl @@ -9,7 +9,7 @@ - + -
@@ -43,7 +54,9 @@ $.tablesorter.addParser({

Hold Ratios to Calculate Items Needed

Calculated on . From to

-

These items have a large number of holds.

+

These items have a hold ratio ≥ .

+
+ @@ -53,6 +66,7 @@ $.tablesorter.addParser({ + @@ -73,42 +87,29 @@ $.tablesorter.addParser({ - - - - - - - - - - + + + + + + + + + -
Items &order=itemcount&from=&to=">Sort Hold Ratio Title &order=biblio&from=&to=">Sort
-

-
-

-
-

- - "> - - - - - "> - - - - "> - - - - -

-

-

to order

+ + "> + + "> + + "> + + + +

+

+

to order

-- 2.39.5