[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> </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