From f0edeb681a6d9ebbbe25c3fcb10f43a1f2234cb0 Mon Sep 17 00:00:00 2001
From: Owen Leonard
Date: Fri, 14 Jan 2022 11:24:17 +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.
Signed-off-by: Lucas Gass
---
installer/data/mysql/atomicupdate/bug-17018.pl | 13 +++++++++++++
installer/data/mysql/mandatory/sysprefs.sql | 1 +
.../prog/en/modules/admin/preferences/opac.pref | 8 ++++++++
.../bootstrap/en/includes/opac-topissues.inc | 6 +++---
.../bootstrap/en/modules/opac-topissues.tt | 2 +-
opac/opac-search.pl | 2 +-
opac/opac-topissues.pl | 2 +-
7 files changed, 28 insertions(+), 6 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 9cdd4f64ee..4228aee858 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 20bdbd959e..d2a037f1ff 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
@@ -880,6 +880,14 @@ OPAC:
subtype: Subtypes
sorting: Sorting
location: Location and availability
+ -
+ - Show tabs in the OPAC advanced search for limiting searches by
+ - pref: OpacAdvancedSearchTypes
+ multiple:
+ itemtypes: Item type
+ ccode: Collection
+ loc: Shelving location
+ - "Tabs appear in the order listed. "
Authentication:
-
- pref: OPACShibOnly
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..5bb5716f29 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 @@
[% END %]
- [% AdvancedSearchTypes = Koha.Preference('AdvancedSearchTypes').split('\|') %]
- [% IF AdvancedSearchTypes.grep('^itemtypes$').size %]
+ [% OpacAdvancedSearchTypes = Koha.Preference('OpacAdvancedSearchTypes').split(',') %]
+ [% IF OpacAdvancedSearchTypes.grep('^itemtypes$').size %]
[% END %]
- [% IF AdvancedSearchTypes.grep('^ccode$').size %]
+ [% IF OpacAdvancedSearchTypes.grep('^ccode$').size %]
- [% IF Koha.Preference('AdvancedSearchTypes') == 'ccode' %]
+ [% IF Koha.Preference('OpacAdvancedSearchTypes') == 'ccode' %]
Collection
[% AuthorisedValues.GetByCode('ccode', result.ccode, 1) | html %]
[% ELSE %]
diff --git a/opac/opac-search.pl b/opac/opac-search.pl
index 5fd4be435e..0affc5b1fc 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