From c2d7e018565a2bf60b3aa709caa43164508dcef7 Mon Sep 17 00:00:00 2001
From: Owen Leonard <oleonard@myacpl.org>
Date: Mon, 14 Feb 2022 19:18:15 +0000
Subject: [PATCH] Bug 17018: Split AdvancedSearchTypes for staff and OPAC

This patch adds a new system preference, OpacAdvancedSearchTypes, as an
OPAC-specific version of the AdvancedSearchTypes preference. Values from
AdvancedSearchTypes are copied to OpacAdvancedSearchTypes so that
behavior is consistent.

To test, apply the patch and run the database update process.

- Go to Administration -> System preferences.
- Search for AdvancedSearchTypes. You should get two results, one for
  the OPAC preference and one for the staff interface.
- Check that the OpacAdvancedSearchTypes settings match the
  AdvancedSearchTypes settings.
- View the advanced search pages in the staff interface and OPAC to
  confirm that the tabs look correct.
- Change the OpacAdvancedSearchTypes and AdvancedSearchTypes settings to
  be different and confirm that each is applied separately to each
  interface.
- Enable the OpacTopissue system preference.
- View the "Most popular" page in the OPAC.
  - The OpacAdvancedSearchTypes settings should be reflected in the
    "Refine your search" sidebar: If "Collection" is checked, a filter
    for collection should appear. If "Item types" is checked, a filter
    for item types should appear.
---
 installer/data/mysql/atomicupdate/bug-17018.pl      | 13 +++++++++++++
 installer/data/mysql/mandatory/sysprefs.sql         |  1 +
 .../prog/en/modules/admin/preferences/opac.pref     |  6 ++++++
 .../en/modules/admin/preferences/searching.pref     |  4 ++--
 .../bootstrap/en/includes/opac-topissues.inc        |  6 +++---
 .../bootstrap/en/modules/opac-topissues.tt          |  2 +-
 opac/opac-search.pl                                 |  2 +-
 opac/opac-topissues.pl                              |  2 +-
 8 files changed, 28 insertions(+), 8 deletions(-)
 create mode 100755 installer/data/mysql/atomicupdate/bug-17018.pl

diff --git a/installer/data/mysql/atomicupdate/bug-17018.pl b/installer/data/mysql/atomicupdate/bug-17018.pl
new file mode 100755
index 0000000000..58facba735
--- /dev/null
+++ b/installer/data/mysql/atomicupdate/bug-17018.pl
@@ -0,0 +1,13 @@
+use Modern::Perl;
+
+return {
+    bug_number => "17018",
+    description => "Split AdvancedSearchTypes for staff and OPAC",
+    up => sub {
+        my ($args) = @_;
+        my $dbh = $args->{dbh};
+
+        $dbh->do( "INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) SELECT 'OpacAdvancedSearchTypes', `value`, `options`, 'Select which set of fields are available as limits on the OPAC advanced search page', `type` FROM systempreferences WHERE variable = 'AdvancedSearchTypes'" );
+
+    },
+}
diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql
index dd83a00fd8..1d656fb0f8 100644
--- a/installer/data/mysql/mandatory/sysprefs.sql
+++ b/installer/data/mysql/mandatory/sysprefs.sql
@@ -389,6 +389,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `
 ('OpacAddMastheadLibraryPulldown','0','','Adds a pulldown menu to select the library to search on the opac masthead.','YesNo'),
 ('OpacAdvSearchMoreOptions','pubdate,itemtype,language,subtype,sorting,location','Show search options for the expanded view (More options)','pubdate|itemtype|language|subtype|sorting|location','multiple'),
 ('OpacAdvSearchOptions','pubdate,itemtype,language,sorting,location','Show search options','pubdate|itemtype|language|subtype|sorting|location','multiple'),
+('OpacAdvancedSearchTypes','itemtypes','itemtypes|ccode','Select which set of fields are available as limits on the OPAC advanced search page','Choice'),
 ('OPACAllowHoldDateInFuture','0','','If set, along with the AllowHoldDateInFuture system preference, OPAC users can set the date of a hold to be in the future.','YesNo'),
 ('OpacAllowPublicListCreation','1',NULL,'If set, allows opac users to create public lists','YesNo'),
 ('OpacAllowSharingPrivateLists','0',NULL,'If set, allows opac users to share private lists with other patrons','YesNo'),
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref
index a214dae954..fe83eb4a23 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref
@@ -876,6 +876,12 @@ OPAC:
                 subtype: Subtypes
                 sorting: Sorting
                 location: Location and availability
+        -
+            - Show tabs in the OPAC advanced search for limiting searches on the
+            - pref: OpacAdvancedSearchTypes
+              class: long
+            - "fields (separate values with |). Tabs appear in the order listed.<br/>"
+            - "<em>Currently supported values</em>: Item types (<strong>itemtypes</strong>), Collection, (<strong>ccode</strong>) and Shelving Location (<strong>loc</strong>)."
     Authentication:
         -
             - pref: OPACShibOnly
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref
index a0d7ec430d..310a3fe72a 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref
@@ -96,11 +96,11 @@ Searching:
                    0: "Don't add"
             - search history of the unlogged user to the next patron logging in.
         -
-            - Show tabs in the OPAC and staff interface advanced search for limiting searches on the
+            - Show tabs in the staff interface advanced search for limiting searches on the
             - pref: AdvancedSearchTypes
               class: long
             - "fields (separate values with |). Tabs appear in the order listed.<br/>"
-            - "<em>Currently supported values</em>: Item types (<strong>itemtypes</strong>), Collection Codes (<strong>ccode</strong>) and Shelving Location (<strong>loc</strong>)."
+            - "<em>Currently supported values</em>: Item types (<strong>itemtypes</strong>), Collection, (<strong>ccode</strong>) and Shelving Location (<strong>loc</strong>)."
         -
             - Limit the languages listed in the advanced search drop-down to the
             - pref: AdvancedSearchLanguages
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-topissues.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-topissues.inc
index 11e0b4cf6d..c26c1d7eae 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-topissues.inc
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-topissues.inc
@@ -25,8 +25,8 @@
                             </select></li>
                 [% END %]
 
-                [% AdvancedSearchTypes = Koha.Preference('AdvancedSearchTypes').split('\|') %]
-                [% IF AdvancedSearchTypes.grep('^itemtypes$').size %]
+                [% OpacAdvancedSearchTypes = Koha.Preference('OpacAdvancedSearchTypes').split('|') %]
+                [% IF OpacAdvancedSearchTypes.grep('^itemtypes$').size %]
                     <li>
                         <label for="itemtype">Limit to: </label>
                         <select name="itemtype" id="itemtype">
@@ -44,7 +44,7 @@
                     </li>
                 [% END %]
 
-                [% IF AdvancedSearchTypes.grep('^ccode$').size %]
+                [% IF OpacAdvancedSearchTypes.grep('^ccode$').size %]
                     <li>
                         <label for="ccode">Limit to:</label>
                         <select name="ccode" id="ccode">
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-topissues.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-topissues.tt
index 3cdc6a417a..2b256d668a 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-topissues.tt
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-topissues.tt
@@ -110,7 +110,7 @@
                                                     [% IF ( result.item('size') ) %][% result.item('size') | html %][% END %]</p>
                                             </td>
                                             <td>
-                                                [% IF Koha.Preference('AdvancedSearchTypes') == 'ccode' %]
+                                                [% IF Koha.Preference('OpacAdvancedSearchTypes') == 'ccode' %]
                                                     <span class="tdlabel">Collection</span>
                                                     [% AuthorisedValues.GetByCode('ccode', result.ccode, 1) | html %]
                                                 [% ELSE %]
diff --git a/opac/opac-search.pl b/opac/opac-search.pl
index b2d7be17c8..f97a05da1f 100755
--- a/opac/opac-search.pl
+++ b/opac/opac-search.pl
@@ -239,7 +239,7 @@ foreach my $itemtype ( keys %{$itemtypes} ) {
 my $itype_or_itemtype = (C4::Context->preference("item-level_itypes"))?'itype':'itemtype';
 my @advancedsearchesloop;
 my $cnt;
-my $advanced_search_types = C4::Context->preference("AdvancedSearchTypes") || "itemtypes";
+my $advanced_search_types = C4::Context->preference("OpacAdvancedSearchTypes") || "itemtypes";
 my @advanced_search_types = split(/\|/, $advanced_search_types);
 
 my $hidingrules = C4::Context->yaml_preference('OpacHiddenItems') // {};
diff --git a/opac/opac-topissues.pl b/opac/opac-topissues.pl
index f185702e32..43830ccfd5 100755
--- a/opac/opac-topissues.pl
+++ b/opac/opac-topissues.pl
@@ -64,7 +64,7 @@ if (!$do_it && C4::Context->userenv && C4::Context->userenv->{'branch'} ) {
 }
 my $itemtype = $input->param('itemtype') || '';
 my $timeLimit = $input->param('timeLimit') || 3;
-my $advanced_search_types = C4::Context->preference('AdvancedSearchTypes');
+my $advanced_search_types = C4::Context->preference('OpacAdvancedSearchTypes');
 my @advanced_search_types = split /\|/, $advanced_search_types;
 
 my $params = {
-- 
2.20.1