View | Details | Raw Unified | Return to bug 23763
Collapse All | Expand All

(-)a/catalogue/search.pl (-58 / +12 lines)
Lines 598-663 for (my $i=0;$i<@servers;$i++) { Link Here
598
                    $line->{'incart'} = 1;
598
                    $line->{'incart'} = 1;
599
                }
599
                }
600
            }
600
            }
601
            $template->param(SEARCH_RESULTS => \@newresults);
601
            my( $page_numbers, $hits_to_paginate, $pages, $current_page_number, $previous_page_offset, $next_page_offset, $last_page_offset ) =
602
            ## FIXME: add a global function for this, it's better than the current global one
602
                Koha::SearchEngine::Search->pagination_bar(
603
            ## Build the page numbers on the bottom of the page
603
                    {
604
            my @page_numbers;
604
                        hits              => $hits,
605
            my $max_result_window = $searcher->max_result_window;
605
                        max_result_window => $searcher->max_result_window,
606
            my $hits_to_paginate = ($max_result_window && $max_result_window < $hits) ? $max_result_window : $hits;
606
                        results_per_page  => $results_per_page,
607
            $template->param( hits_to_paginate => $hits_to_paginate );
607
                        offset            => $offset,
608
            # total number of pages there will be
608
                        sort_by           => \@sort_by
609
            my $pages = ceil($hits_to_paginate / $results_per_page);
610
            my $last_page_offset = ( $pages -1 ) * $results_per_page;
611
            # default page number
612
            my $current_page_number = 1;
613
            $current_page_number = ($offset / $results_per_page + 1) if $offset;
614
            my $previous_page_offset;
615
            if ( $offset >= $results_per_page ) {
616
                $previous_page_offset = $offset - $results_per_page;
617
            }
618
            my $next_page_offset = $offset + $results_per_page;
619
            # If we're within the first 10 pages, keep it simple
620
            #warn "current page:".$current_page_number;
621
            if ($current_page_number < 10) {
622
                # just show the first 10 pages
623
                # Loop through the pages
624
                my $pages_to_show = 10;
625
                $pages_to_show = $pages if $pages<10;
626
                for (my $i=1; $i<=$pages_to_show;$i++) {
627
                    # the offset for this page
628
                    my $this_offset = (($i*$results_per_page)-$results_per_page);
629
                    # the page number for this page
630
                    my $this_page_number = $i;
631
                    # put it in the array
632
                    push @page_numbers,
633
                      { offset    => $this_offset,
634
                        pg        => $this_page_number,
635
                        # it should only be highlighted if it's the current page
636
                        highlight => $this_page_number == $current_page_number,
637
                        sort_by   => join ' ', @sort_by
638
                      };
639
                                
640
                }
641
                        
642
            }
643
644
            # now, show twenty pages, with the current one smack in the middle
645
            else {
646
                for (my $i=$current_page_number; $i<=($current_page_number + 20 );$i++) {
647
                    my $this_offset = ((($i-9)*$results_per_page)-$results_per_page);
648
                    my $this_page_number = $i-9;
649
                    if ( $this_page_number <= $pages ) {
650
                        push @page_numbers,
651
                          { offset    => $this_offset,
652
                            pg        => $this_page_number,
653
                            highlight => $this_page_number == $current_page_number,
654
                            sort_by   => join ' ', @sort_by
655
                          };
656
                    }
609
                    }
657
                }
610
                );
658
            }
611
            $template->param( hits_to_paginate => $hits_to_paginate );
612
            $template->param(SEARCH_RESULTS => \@newresults);
659
            # FIXME: no previous_page_offset when pages < 2
613
            # FIXME: no previous_page_offset when pages < 2
660
            $template->param(   PAGE_NUMBERS => \@page_numbers,
614
            $template->param(   PAGE_NUMBERS => $page_numbers,
661
                                last_page_offset => $last_page_offset,
615
                                last_page_offset => $last_page_offset,
662
                                previous_page_offset => $previous_page_offset) unless $pages < 2;
616
                                previous_page_offset => $previous_page_offset) unless $pages < 2;
663
            $template->param(   next_page_offset => $next_page_offset) unless $pages eq $current_page_number;
617
            $template->param(   next_page_offset => $next_page_offset) unless $pages eq $current_page_number;
(-)a/opac/opac-search.pl (-60 / +15 lines)
Lines 852-919 for (my $i=0;$i<@servers;$i++) { Link Here
852
                OPACItemsResultsDisplay => (C4::Context->preference("OPACItemsResultsDisplay")),
852
                OPACItemsResultsDisplay => (C4::Context->preference("OPACItemsResultsDisplay")),
853
                suppress_result_number => $hide,
853
                suppress_result_number => $hide,
854
                            );
854
                            );
855
	    if (C4::Context->preference("OPACLocalCoverImages")){
855
            if (C4::Context->preference("OPACLocalCoverImages")){
856
		$template->param(OPACLocalCoverImages => 1);
856
            $template->param(OPACLocalCoverImages => 1);
857
		$template->param(OPACLocalCoverImagesPriority => C4::Context->preference("OPACLocalCoverImagesPriority"));
857
            $template->param(OPACLocalCoverImagesPriority => C4::Context->preference("OPACLocalCoverImagesPriority"));
858
	    }
859
            ## Build the page numbers on the bottom of the page
860
            my @page_numbers;
861
            my $max_result_window = $searcher->max_result_window;
862
            my $hits_to_paginate = ($max_result_window && $max_result_window < $hits) ? $max_result_window : $hits;
863
            $template->param( hits_to_paginate => $hits_to_paginate );
864
            # total number of pages there will be
865
            my $pages = ceil($hits_to_paginate / $results_per_page);
866
            my $last_page_offset = ( $pages - 1 ) * $results_per_page;
867
            # default page number
868
            my $current_page_number = 1;
869
            if ($offset) {
870
                $current_page_number = ( $offset / $results_per_page + 1 );
871
            }
872
            my $previous_page_offset;
873
            if ( $offset >= $results_per_page ) {
874
                $previous_page_offset = $offset - $results_per_page;
875
            }
876
            my $next_page_offset = $offset + $results_per_page;
877
            # If we're within the first 10 pages, keep it simple
878
            #warn "current page:".$current_page_number;
879
            if ($current_page_number < 10) {
880
                # just show the first 10 pages
881
                # Loop through the pages
882
                my $pages_to_show = 10;
883
                $pages_to_show = $pages if $pages<10;
884
                for ($i=1; $i<=$pages_to_show;$i++) {
885
                    # the offset for this page
886
                    my $this_offset = (($i*$results_per_page)-$results_per_page);
887
                    # the page number for this page
888
                    my $this_page_number = $i;
889
                    # put it in the array
890
                    push @page_numbers,
891
                      { offset    => $this_offset,
892
                        pg        => $this_page_number,
893
                        highlight => $this_page_number == $current_page_number,
894
                        sort_by   => join ' ', @sort_by
895
                      };
896
897
                }
898
                        
899
            }
858
            }
900
            # now, show twenty pages, with the current one smack in the middle
859
            ## Build the page numbers on the bottom of the page
901
            else {
860
            my ( $page_numbers, $hits_to_paginate, $pages, $current_page_number, $previous_page_offset, $next_page_offset, $last_page_offset ) =
902
                for ($i=$current_page_number; $i<=($current_page_number + 20 );$i++) {
861
                Koha::SearchEngine::Search->pagination_bar(
903
                    my $this_offset = ((($i-9)*$results_per_page)-$results_per_page);
862
                    {
904
                    my $this_page_number = $i-9;
863
                        hits              => $hits,
905
                    if ( $this_page_number <= $pages ) {
864
                        max_result_window => $searcher->max_result_window,
906
                        push @page_numbers,
865
                        results_per_page  => $results_per_page,
907
                          { offset    => $this_offset,
866
                        offset            => $offset,
908
                            pg        => $this_page_number,
867
                        sort_by           => \@sort_by
909
                            highlight => $this_page_number == $current_page_number,
910
                            sort_by => join ' ', @sort_by
911
                          };
912
                    }
868
                    }
913
                }
869
                );
914
                        
870
            $template->param( hits_to_paginate => $hits_to_paginate );
915
            }
871
            $template->param(   PAGE_NUMBERS => $page_numbers,
916
            $template->param(   PAGE_NUMBERS => \@page_numbers,
917
                                last_page_offset => $last_page_offset,
872
                                last_page_offset => $last_page_offset,
918
                                previous_page_offset => $previous_page_offset) unless $pages < 2;
873
                                previous_page_offset => $previous_page_offset) unless $pages < 2;
919
            $template->param(next_page_offset => $next_page_offset) unless $pages eq $current_page_number;
874
            $template->param(next_page_offset => $next_page_offset) unless $pages eq $current_page_number;
(-)a/t/Koha/SearchEngine/Search.t (-2 / +1 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 5;
20
use Test::More tests => 1;
21
use Test::Exception;
21
use Test::Exception;
22
22
23
use t::lib::Mocks;
23
use t::lib::Mocks;
24
- 

Return to bug 23763