Bug 30880: Add 'branchonly' to OPACResultsUnavailableGroupingBy
authorAleisha Amohia <aleishaamohia@hotmail.com>
Wed, 1 Jun 2022 22:35:06 +0000 (22:35 +0000)
committerTomas Cohen Arazi <tomascohen@theke.io>
Tue, 8 Nov 2022 13:00:39 +0000 (10:00 -0300)
This patch adds a third option 'branch only' to the
OPACResultsUnavailableGroupBy system preference. This option will group
unavailable items by branch in the OPAC search results and NOT show
individual callnumbers or substatuses.

Note: This assumes OPACXSLTResultsDisplay is set to default.

To test:
1. Create a biblio record with 3 items with the following home branches:
Item A: Branch A
Item B: Branch A
Item C: Branch B
2. Check out Item A to yourself
3. Edit Item B to have a lost status
4. Go to Administration -> global system preferences. Search for
OPACResultsUnavailableGroupingBy.
5. By default, this preference will be set to 'branch'.
6. Open the OPAC in another tab, and search for your record.
7. Confirm the search results shows an Availability line with "Not
available: Branch A: Checked out (1). Branch A: Lost (1)." i.e. showing
both branch and substatus.
8. In your staff client tab, set OPACResultsUnavailableGroupingBy to
'substatus'.
9. Go back to your OPAC tab and search for your record. Confirm the
search results shows an Availability line with "Not available: Checked
out (1). Lost (1)." i.e. showing substatus only.
10. Apply patch, update database, restart services.
11. In your staff client tab, refresh the page. Confirm the options for
OPACResultsUnavailableGroupingBy have now changed to:
- branch and substatus
- substatus only
- branch only
12. Set OPACResultsUnavailableGroupingBy to 'branch only'.
13. Go back to your OPAC tab and search for your record. Confirm the
search results shows an Availability line with "Not available: Branch A
(2)." i.e. showing branch only.
14. Confirm the other two options still work as expected.

Sponsored-by: Chartered Accountants Australia and New Zealand
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
installer/data/mysql/atomicupdate/bug_30880_-_add_option_OPACResultsUnavailableGroupingBy_syspref.pl [new file with mode: 0644]
installer/data/mysql/mandatory/sysprefs.sql
koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref
koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl

diff --git a/installer/data/mysql/atomicupdate/bug_30880_-_add_option_OPACResultsUnavailableGroupingBy_syspref.pl b/installer/data/mysql/atomicupdate/bug_30880_-_add_option_OPACResultsUnavailableGroupingBy_syspref.pl
new file mode 100644 (file)
index 0000000..2d79b90
--- /dev/null
@@ -0,0 +1,12 @@
+use Modern::Perl;
+
+return {
+    bug_number => "30880",
+    description => "Add branchonly option to OPACResultsUnavailableGroupingBy syspref",
+    up => sub {
+        my ($args) = @_;
+        my ($dbh, $out) = @$args{qw(dbh out)};
+
+        $dbh->do(q{ UPDATE systempreferences SET options = 'branch|substatus|branchonly', explanation = 'Group OPAC XSLT results by branch and substatus, or substatus only, or branch only' WHERE variable = 'OPACResultsUnavailableGroupingBy' });
+    },
+};
index 2f9c815..73de402 100644 (file)
@@ -491,7 +491,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `
 ('OpacResetPassword','0','','Shows the ''Forgot your password?'' link in the OPAC','YesNo'),
 ('OPACResultsLibrary', 'homebranch', 'homebranch|holdingbranch', 'Defines whether the OPAC displays the holding or home branch in search results when using XSLT', 'Choice'),
 ('OPACResultsSidebar','','70|10','Define HTML to be included on the search results page, underneath the facets sidebar','Textarea'),
-('OPACResultsUnavailableGroupingBy','branch','branch|substatus','Group OPAC XSLT results by branch or substatus','Choice'),
+('OPACResultsUnavailableGroupingBy','branch','branch|substatus|branchonly','Group OPAC XSLT results by branch and substatus, or substatus only, or branch only','Choice'),
 ('OPACSearchForTitleIn','<a href=\"https://worldcat.org/search?q={TITLE}\" target=\"_blank\">Other Libraries (WorldCat)</a>\n<a href=\"https://scholar.google.com/scholar?q={TITLE}\" target=\"_blank\">Other Databases (Google Scholar)</a>\n<a href=\"https://www.bookfinder.com/search/?author={AUTHOR}&amp;title={TITLE}&amp;st=xl&amp;ac=qr\" target=\"_blank\">Online Stores (Bookfinder.com)</a>\n<a href=\"https://openlibrary.org/search?author=({AUTHOR})&title=({TITLE})\" target=\"_blank\">Open Library (openlibrary.org)</a>','70|10','Enter the HTML that will appear in the \'Search for this title in\' box on the detail page in the OPAC.  Enter {TITLE}, {AUTHOR}, or {ISBN} in place of their respective variables in the URL. Leave blank to disable \'More Searches\' menu.','Textarea'),
 ('OpacSeparateHoldings','0',NULL,'Separate current branch holdings from other holdings (OPAC)','YesNo'),
 ('OpacSeparateHoldingsBranch','homebranch','homebranch|holdingbranch','Branch used to separate holdings (OPAC)','Choice'),
index 8aa0144..043c527 100644 (file)
@@ -329,8 +329,9 @@ OPAC:
             - Group unavailable items by
             - pref: OPACResultsUnavailableGroupingBy
               choices:
-                  branch: "branch"
-                  substatus: "substatus"
+                  branch: "branch and substatus"
+                  substatus: "substatus only"
+                  branchonly: "branch only"
             - ". (NOTE: For large consortia we recommend to group unavailable items by substatus, listing item counts only.)"
 
     Features:
index f282770..bccaaee 100644 (file)
                                     </xsl:call-template>
                                 </xsl:for-each>
                             </xsl:when>
+                            <xsl:when test="$OPACResultsUnavailableGroupingBy='branchonly'">
+                                <!-- Only group by branch, do not list substatuses and individual call numbers -->
+                                <xsl:for-each select="items:items/items:item[not(items:resultbranch=preceding-sibling::*/items:resultbranch)]">
+                                    <xsl:sort select="items:resultbranch"/>
+                                    <xsl:variable name="currentbranch" select="items:resultbranch"/>
+                                    <xsl:if test="count($unavailable_items[items:resultbranch=$currentbranch])>0">
+                                        <span class="ItemSummary unavailable">
+                                            <xsl:value-of select="$currentbranch"/>
+                                            <span class="unavailable">
+                                                <xsl:text> (</xsl:text>
+                                                <xsl:value-of select="count($unavailable_items[items:resultbranch=$currentbranch])"/>
+                                                <xsl:text>)</xsl:text>
+                                            </span>
+                                        <xsl:text>. </xsl:text>
+                                        </span>
+                                    </xsl:if>
+                                </xsl:for-each>
+                            </xsl:when>
                         </xsl:choose>
                     </span></xsl:if>