[Koha-patches] [PATCH] [SIGNED-OFF] Fix for Bug 3459, topissues doesn't take care of ccode

Katrin Fischer Katrin.Fischer.83 at web.de
Thu Jan 13 22:53:51 CET 2011


From: Owen Leonard <oleonard at myacpl.org>

- Change conditional to display filter in sidebar without EXPR
- Enhance switch between ccode default and itemtype default searches
- Enable preselect of submitted collection code in filter form,
  stealing code from opac-search.pl

Signed-off-by: Katrin Fischer <Katrin.Fischer.83 at web.de>
---
 .../opac-tmpl/prog/en/includes/opac-topissues.inc  |    4 +-
 .../opac-tmpl/prog/en/modules/opac-topissues.tmpl  |   40 ++++++---
 opac/opac-topissues.pl                             |   95 ++++++++++++++------
 3 files changed, 98 insertions(+), 41 deletions(-)

diff --git a/koha-tmpl/opac-tmpl/prog/en/includes/opac-topissues.inc b/koha-tmpl/opac-tmpl/prog/en/includes/opac-topissues.inc
index 20eba49..b96b8d3 100644
--- a/koha-tmpl/opac-tmpl/prog/en/includes/opac-topissues.inc
+++ b/koha-tmpl/opac-tmpl/prog/en/includes/opac-topissues.inc
@@ -25,9 +25,9 @@
             </li>
             <li><label for="itemtype">Limit to: </label>
                     <select name="itemtype" id="itemtype" style="width: 10em;">
-                        <option value="">All item types</option>
+                        <!-- TMPL_IF NAME="ccodesearch" --><option value="">All collections</option><!-- TMPL_ELSE --><option value="">All item types</option><!-- /TMPL_IF -->
                         <!-- TMPL_LOOP name="itemtypeloop" -->
-                            <!-- TMPL_IF EXPR="itemtype eq description" --><option value="<!-- TMPL_VAR name="value" -->" selected="selected"><!-- TMPL_ELSE --><option value="<!-- TMPL_VAR name="value" -->"><!-- /TMPL_IF -->
+                            <!-- TMPL_IF NAME="selected" --><option value="<!-- TMPL_VAR name="value" -->" selected="selected"><!-- TMPL_ELSE --><option value="<!-- TMPL_VAR name="value" -->"><!-- /TMPL_IF -->
                                 <!-- TMPL_VAR name="description" -->
                             </option>
                         <!-- /TMPL_LOOP -->
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-topissues.tmpl b/koha-tmpl/opac-tmpl/prog/en/modules/opac-topissues.tmpl
index 871d6c9..c02e78d 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-topissues.tmpl
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-topissues.tmpl
@@ -27,7 +27,19 @@ function Dopop(link) {
 </style>
 </head>
 <body id="opac-topissues">
-	<!-- TMPL_IF EXPR="OpacNav||results_loop" --><div id="doc3" class="yui-t1"><!-- TMPL_ELSE --><div id="doc3" class="yui-t7"><!-- /TMPL_IF -->
+
+<!-- TMPL_IF NAME="results_loop" -->
+<div id="doc3" class="yui-t1">
+<!-- TMPL_ELSE -->
+<!-- TMPL_IF NAME="OpacNav" -->
+<div id="doc3" class="yui-t1">
+<!-- TMPL_ELSE -->
+<div id="doc3" class="yui-t7">
+<!-- /TMPL_IF -->
+<!-- /TMPL_IF -->
+
+	
+
    <div id="bd">
 <!-- TMPL_INCLUDE name="masthead.inc" -->
 
@@ -51,7 +63,7 @@ function Dopop(link) {
     </caption>
             <thead><tr>
                 <th>Title</th>
-                <th>Itemtype</th>
+                <th><!-- TMPL_IF NAME="ccodesearch" -->Collection<!-- TMPL_ELSE -->Item type<!-- /TMPL_IF --></th>
                 <th>Checkouts</th>
 				<!-- TMPL_IF NAME="opacuserlogin" --><th>&nbsp;</th><!-- /TMPL_IF -->
 				
@@ -100,13 +112,11 @@ function Dopop(link) {
             </li>
             <li><label for="itemtype">Limit to: </label>
                     <select name="itemtype" id="itemtype">
-                        <option value="">All item types</option>
-                       <!-- TMPL_LOOP name="itemtypeloop" -->
-                           <!-- TMPL_IF name="selected" -->
-                               <option value="<!-- TMPL_VAR name="value" -->" selected="selected"><!-- TMPL_VAR name="description" --></option>
-                           <!-- TMPL_ELSE -->
-                               <option value="<!-- TMPL_VAR name="value" -->"><!-- TMPL_VAR name="description" --></option>
-                           <!-- /TMPL_IF -->
+                        <!-- TMPL_IF NAME="ccodesearch" --><option value="">All collections</option><!-- TMPL_ELSE --><option value="">All item types</option><!-- /TMPL_IF -->
+                        <!-- TMPL_LOOP name="itemtypeloop" -->
+                            <!-- TMPL_IF NAME="selected" --><option value="<!-- TMPL_VAR name="value" -->" selected="selected"><!-- TMPL_ELSE --><option value="<!-- TMPL_VAR name="value" -->"><!-- /TMPL_IF -->
+                                <!-- TMPL_VAR name="description" -->
+                            </option>
                         <!-- /TMPL_LOOP -->
                     </select></li>
 			<li>
@@ -126,11 +136,19 @@ function Dopop(link) {
 	</div>
 </div>
 </div>
-</div><!-- TMPL_IF EXPR="OpacNav||results_loop" -->
+</div>
+<!-- TMPL_IF NAME="results_loop" -->
+<div class="yui-b"><div class="container">
+<!-- TMPL_INCLUDE NAME="opac-topissues.inc" -->
+<!-- TMPL_IF NAME="OpacNav" --><!--TMPL_INCLUDE NAME="navigation.inc" --><!-- /TMPL_IF -->
+</div></div>
+<!-- TMPL_ELSE -->
+<!-- TMPL_IF NAME="OpacNav" -->
 <div class="yui-b"><div class="container">
-<!-- TMPL_IF NAME="results_loop" --><!-- TMPL_INCLUDE NAME="opac-topissues.inc" --><!-- /TMPL_IF -->
 <!--TMPL_INCLUDE NAME="navigation.inc" -->
 </div></div>
 <!-- /TMPL_IF -->
+<!-- /TMPL_IF -->
+
 </div>
 <!-- TMPL_INCLUDE NAME="opac-bottom.inc" -->
diff --git a/opac/opac-topissues.pl b/opac/opac-topissues.pl
index 70b712e..b4b83f1 100755
--- a/opac/opac-topissues.pl
+++ b/opac/opac-topissues.pl
@@ -55,27 +55,52 @@ my $limit = $input->param('limit') || 10;
 my $branch = $input->param('branch') || '';
 my $itemtype = $input->param('itemtype') || '';
 my $timeLimit = $input->param('timeLimit') || 3;
+my $advanced_search_types = C4::Context->preference('AdvancedSearchTypes');
+
 my $whereclause = '';
-$whereclause .= 'items.homebranch='.$dbh->quote($branch)." AND " if ($branch);
-$whereclause .= 'biblioitems.itemtype='.$dbh->quote($itemtype)." AND " if $itemtype;
-$whereclause .= ' TO_DAYS(NOW()) - TO_DAYS(biblio.datecreated) <= '.($timeLimit*30).' AND ' if $timeLimit < 999;
+$whereclause .= ' AND items.homebranch='.$dbh->quote($branch) if ($branch);
+$whereclause .= ' AND TO_DAYS(NOW()) - TO_DAYS(biblio.datecreated) <= '.($timeLimit*30) if $timeLimit < 999;
 $whereclause =~ s/ AND $// if $whereclause;
-$whereclause = " WHERE ".$whereclause if $whereclause;
-
-my $query = "SELECT datecreated, biblio.biblionumber, title, 
-                author, sum( items.issues ) AS tot, biblioitems.itemtype,
-                biblioitems.publishercode,biblioitems.publicationyear,
-                itemtypes.description
-                FROM biblio
-                LEFT JOIN items USING (biblionumber)
-                LEFT JOIN biblioitems USING (biblionumber)
-                LEFT JOIN itemtypes ON itemtypes.itemtype = biblioitems.itemtype
-                $whereclause
-                GROUP BY biblio.biblionumber
-                HAVING tot >0
-                ORDER BY tot DESC
-                LIMIT $limit
-                ";
+my $query;
+
+if($advanced_search_types eq 'ccode'){
+    $whereclause .= ' AND authorised_values.authorised_value='.$dbh->quote($itemtype) if $itemtype;
+    $query = "SELECT datecreated, biblio.biblionumber, title,
+                    author, sum( items.issues ) AS tot, biblioitems.itemtype,
+                    biblioitems.publishercode,biblioitems.publicationyear,
+                    authorised_values.lib as description
+                    FROM biblio
+                    LEFT JOIN items USING (biblionumber)
+                    LEFT JOIN biblioitems USING (biblionumber)
+                    LEFT JOIN authorised_values ON items.ccode = authorised_values.authorised_value
+                    WHERE 1
+                    $whereclause
+                    AND authorised_values.category = 'ccode' 
+                    GROUP BY biblio.biblionumber
+                    HAVING tot >0
+                    ORDER BY tot DESC
+                    LIMIT $limit
+                    ";
+    $template->param(ccodesearch => 1);
+}else{
+    $whereclause .= ' AND biblioitems.itemtype='.$dbh->quote($itemtype) if $itemtype;
+    $query = "SELECT datecreated, biblio.biblionumber, title,
+                    author, sum( items.issues ) AS tot, biblioitems.itemtype,
+                    biblioitems.publishercode,biblioitems.publicationyear,
+                    itemtypes.description
+                    FROM biblio
+                    LEFT JOIN items USING (biblionumber)
+                    LEFT JOIN biblioitems USING (biblionumber)
+                    LEFT JOIN itemtypes ON itemtypes.itemtype = biblioitems.itemtype
+                    WHERE 1
+                    $whereclause
+                    GROUP BY biblio.biblionumber
+                    HAVING tot >0
+                    ORDER BY tot DESC
+                    LIMIT $limit
+                    ";
+     $template->param(itemtypesearch => 1);
+}
 
 my $sth = $dbh->prepare($query);
 $sth->execute();
@@ -98,20 +123,34 @@ $template->param(do_it => 1,
 
 $template->param( branchloop => GetBranchesLoop(C4::Context->userenv->{'branch'}));
 
-#doctype
+# the index parameter is different for item-level itemtypes
+my $itype_or_itemtype = (C4::Context->preference("item-level_itypes"))?'itype':'itemtype';
 $itemtypes = GetItemTypes;
-my @itemtypeloop;
-foreach my $thisitemtype (sort {$itemtypes->{$a}->{'description'} cmp $itemtypes->{$b}->{'description'}} keys %$itemtypes) {
+my @itemtypesloop;
+my $selected=1;
+if (!$advanced_search_types or $advanced_search_types eq 'itemtypes') {
+        foreach my $thisitemtype ( sort {$itemtypes->{$a}->{'description'} cmp $itemtypes->{$b}->{'description'} } keys %$itemtypes ) {
         my $selected = 1 if $thisitemtype eq $itemtype;
-        my %row =(value => $thisitemtype,
-                    description => $itemtypes->{$thisitemtype}->{'description'},
-                    selected => $selected,
-                 );
-        push @itemtypeloop, \%row;
+        my %row =( value => $thisitemtype,
+                   description => $itemtypes->{$thisitemtype}->{'description'},
+                   selected => $selected,
+            );
+        push @itemtypesloop, \%row;
+        }
+} else {
+    my $advsearchtypes = GetAuthorisedValues($advanced_search_types, '', 'opac');
+        for my $thisitemtype (@$advsearchtypes) {
+                my $selected = 1 if $thisitemtype->{authorised_value} eq $itemtype;
+                my %row =( value => $thisitemtype->{authorised_value},
+                selected => $selected,
+                description => $thisitemtype->{'lib'},
+            );
+                push @itemtypesloop, \%row;
+        }
 }
 
 $template->param(
-                 itemtypeloop =>\@itemtypeloop,
+                 itemtypeloop =>\@itemtypesloop,
                  dateformat    => C4::Context->preference("dateformat"),
                 );
 output_html_with_http_headers $input, $cookie, $template->output;
-- 
1.7.1



More information about the Koha-patches mailing list