@@ -, +, @@ --- C4/HoldsQueue.pm | 22 ++++++++++-- circ/view_holdsqueue.pl | 34 ++++++++++++++----- .../prog/en/modules/circ/view_holdsqueue.tt | 27 +++++++++++++++ t/db_dependent/HoldsQueue.t | 2 +- 4 files changed, 74 insertions(+), 11 deletions(-) --- a/C4/HoldsQueue.pm +++ a/C4/HoldsQueue.pm @@ -129,7 +129,13 @@ Returns hold queue for a holding branch. If branch is omitted, then whole queue =cut sub GetHoldsQueueItems { - my ($branchlimit) = @_; + my ($branchlimit, $limit, $page) = @_; + + $limit ||= 20; + $page ||= 1; + + my $offset = 0 + ( $limit * ( $page - 1 ) ); + my $dbh = C4::Context->dbh; my @bind_params = (); @@ -156,6 +162,7 @@ sub GetHoldsQueueItems { push @bind_params, $branchlimit; } $query .= " ORDER BY ccode, location, cn_sort, author, title, pickbranch, reservedate"; + $query .= " LIMIT $limit OFFSET $offset"; my $sth = $dbh->prepare($query); $sth->execute(@bind_params); my $items = []; @@ -177,7 +184,18 @@ sub GetHoldsQueueItems { push @$items, $row; } - return $items; + + + @bind_params = (); + my $total_query = "SELECT COUNT(*) FROM tmp_holdsqueue"; + if ($branchlimit) { + $total_query .=" WHERE tmp_holdsqueue.holdingbranch = ?"; + push @bind_params, $branchlimit; + } + + my ($total_results) = $dbh->selectrow_array( $total_query, undef, @bind_params ); + + return ( $items, $total_results ); } =head2 CreateQueue --- a/circ/view_holdsqueue.pl +++ a/circ/view_holdsqueue.pl @@ -25,7 +25,7 @@ This script displays items in the tmp_holdsqueue table use Modern::Perl; use CGI qw ( -utf8 ); use C4::Auth qw( get_template_and_user ); -use C4::Output qw( output_html_with_http_headers ); +use C4::Output qw( output_html_with_http_headers pagination_bar ); use C4::HoldsQueue qw( GetHoldsQueueItems ); use Koha::BiblioFrameworks; use Koha::ItemTypes; @@ -43,16 +43,34 @@ my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user( my $params = $query->Vars; my $run_report = $params->{'run_report'}; my $branchlimit = $params->{'branchlimit'}; -my $itemtypeslimit = $params->{'itemtypeslimit'}; +my $limit = $params->{'limit'} || 20; +my $page = $params->{'page'} || 1; if ( $run_report ) { - # XXX GetHoldsQueueItems() does not support $itemtypeslimit! - my $items = GetHoldsQueueItems($branchlimit, $itemtypeslimit); + my ( $items, $total ) = GetHoldsQueueItems( $branchlimit, $limit, $page ); + + my $pages = int( $total / $limit ) + ( ( $total % $limit ) > 0 ? 1 : 0 ); $template->param( - branchlimit => $branchlimit, - total => scalar @$items, - itemsloop => $items, - run_report => $run_report, + branchlimit => $branchlimit, + total => $total, + itemsloop => $items, + run_report => $run_report, + page => $page, + limit => $limit, + pagination_bar => pagination_bar( + 'view_holdsqueue.pl', + $pages, + $page, + 'page', + { + branchlimit => $branchlimit, + itemtypeslimit => $itemtypeslimit, + ccodeslimit => $ccodeslimit, + locationslimit => $locationslimit, + limit => $limit, + run_report => 1, + } + ), ); } --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/view_holdsqueue.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/view_holdsqueue.tt @@ -66,6 +66,29 @@
[% total | html %] items found for [% IF ( branchlimit ) %][% Branches.GetName( branchlimit ) | html %][% ELSE %]All libraries[% END %]
+ +
+ + + + + + + + + +
+
[% pagination_bar | $raw %]
+ [% ELSE %]
No items found.
[% END %] @@ -237,6 +260,10 @@ $(document).ready(function() { var holdst; + $('#limit').change(function() { + $('#limitselect').submit(); + }); + // Setup filters before DataTables initialisation, in case some columns are // hidden by default var filterColumnTimeoutId; --- a/t/db_dependent/HoldsQueue.t +++ a/t/db_dependent/HoldsQueue.t @@ -163,7 +163,7 @@ $dbh->do("DELETE FROM items WHERE holdingbranch = '$borrower_branchcode'"); # Frst branch from StaticHoldsQueueWeight test_queue ('take from lowest cost branch', 0, $borrower_branchcode, $other_branches[0]); test_queue ('take from lowest cost branch', 1, $borrower_branchcode, $least_cost_branch_code); -my $queue = C4::HoldsQueue::GetHoldsQueueItems($least_cost_branch_code) || []; +my ( $queue, $total ) = C4::HoldsQueue::GetHoldsQueueItems($least_cost_branch_code) || []; my $queue_item = $queue->[0]; ok( $queue_item && $queue_item->{pickbranch} eq $borrower_branchcode --