Bug 23796: Convert OpacCustomSearch system preference to news block
authorOwen Leonard <oleonard@myacpl.org>
Wed, 11 Dec 2019 18:20:46 +0000 (18:20 +0000)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Thu, 23 Jul 2020 09:17:27 +0000 (11:17 +0200)
This patch moves the OpacCustomSearch system preference into the Koha
news system, making it possible to have language- and library-specific
content.

To test you should have some content in the OpacCustomSearch system
preference. Apply the patch and run the database update process.

 - Go to the OPAC and confirm that the content which was previously in
   the OpacCustomSearch system preference now displays correctly where
   it was before.
 - In the staff client, go to Tools -> News and verify that the content
   from OpacCustomSearch is now stored in news items. There should be
   one entry for each of the enabled translations in your system, for
   instance 'OpacCustomSearch_en', 'OpacCustomSearch_fr-FR',
   'OpacCustomSearch_cs-CZ'
 - Go to Administration -> System preferences and confirm that the
   OpacCustomSearch preference has been removed.

Signed-off-by: David Nind <david@davidnind.com>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

installer/data/mysql/atomicupdate/bug_23796-move-OpacCustomSearch-to-news.perl [new file with mode: 0644]
installer/data/mysql/sysprefs.sql
koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref
koha-tmpl/intranet-tmpl/prog/en/modules/tools/koha-news.tt
koha-tmpl/opac-tmpl/bootstrap/en/includes/masthead.inc

diff --git a/installer/data/mysql/atomicupdate/bug_23796-move-OpacCustomSearch-to-news.perl b/installer/data/mysql/atomicupdate/bug_23796-move-OpacCustomSearch-to-news.perl
new file mode 100644 (file)
index 0000000..0ae9e6e
--- /dev/null
@@ -0,0 +1,30 @@
+$DBversion = 'XXX'; # will be replaced by the RM
+if( CheckVersion( $DBversion ) ) {
+
+    # get list of installed translations
+    require C4::Languages;
+    my @langs;
+    my $tlangs = C4::Languages::getTranslatedLanguages();
+
+    foreach my $language ( @$tlangs ) {
+        foreach my $sublanguage ( @{$language->{'sublanguages_loop'}} ) {
+            push @langs, $sublanguage->{'rfc4646_subtag'};
+        }
+    }
+
+    # Get any existing value from the OpacCustomSearch system preference
+    my ($OpacCustomSearch) = $dbh->selectrow_array( q|
+        SELECT value FROM systempreferences WHERE variable='OpacCustomSearch';
+    |);
+    if( $OpacCustomSearch ){
+        foreach my $lang ( @langs ) {
+            print "Inserting OpacCustomSearch contents into $lang news item...\n";
+            # If there is a value in the OpacCustomSearch preference, insert it into opac_news
+            $dbh->do("INSERT INTO opac_news (branchcode, lang, title, content ) VALUES (NULL, ?, '', ?)", undef, "OpacCustomSearch_$lang", $OpacCustomSearch);
+        }
+    }
+    # Remove the OpacCustomSearch system preference
+    $dbh->do("DELETE FROM systempreferences WHERE variable='OpacCustomSearch'");
+    SetVersion ($DBversion);
+    print "Upgrade to $DBversion done (Bug 23796: Convert OpacCustomSearch system preference to news block)\n";
+}
index 9f15439..5c6969d 100644 (file)
@@ -378,7 +378,6 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `
 ('OpacAdditionalStylesheet','','','Define an auxiliary stylesheet for OPAC use, to override specified settings from the primary opac.css stylesheet. Enter the filename (if the file is in the server\'s css directory) or a complete URL beginning with http (if the file lives on a remote server).','free'),
 ('OpacCoce','0', NULL, 'If on, enables cover retrieval from the configured Coce server in the OPAC', 'YesNo'),
 ('OPACCustomCoverImages','0',NULL,'If enabled, the custom cover images will be displayed at the OPAC. CustomCoverImagesURL must be defined.','YesNo'),
-('OpacCustomSearch','','70|10','Replace the search box on the OPAC with the provided HTML','Textarea'),
 ('OPACdefaultSortField','relevance','relevance|popularity|call_number|pubdate|acqdate|title|author','Specify the default field used for sorting','Choice'),
 ('OPACdefaultSortOrder','dsc','asc|dsc|za|az','Specify the default sort order','Choice'),
 ('OPACdidyoumean','',NULL,'Did you mean? configuration for the OPAC. Do not change, as this is controlled by /cgi-bin/koha/admin/didyoumean.pl.','Free'),
index 9396fcb..ebb2dc5 100644 (file)
@@ -352,12 +352,6 @@ OPAC:
               syntax: text/html
               class: code
         -
-            - "Replace the search box at the top of OPAC pages with the following HTML:"
-            - pref: OpacCustomSearch
-              type: textarea
-              syntax: text/html
-              class: code
-        -
             - "Display language selector on "
             - pref: OpacLangSelectorMode
               choices:
index 12e835d..f321e6b 100644 (file)
@@ -332,7 +332,7 @@ Edit news item[% ELSE %]Add news item[% END %][% ELSE %]News[% END %]</div>
     [% END %]
     [% FOREACH lang_lis IN lang_list %]
         <optgroup label="[% lang_lis.language | html %]">
-            [% FOREACH location IN [ '', 'OpacNavRight', 'opacheader', 'OpacMainUserBlock', 'opaccredits' ] %]
+            [% FOREACH location IN [ '', 'OpacNavRight', 'opacheader', 'OpacCustomSearch', 'OpacMainUserBlock', 'opaccredits' ] %]
                 [% IF ( location == '' ) %]
                     [% SET location_lang = lang_lis.language %]
                     [% location = BLOCK %]OPAC news[% END %]
index 0f7cbc6..c178445 100644 (file)
@@ -6,6 +6,7 @@
 [% PROCESS 'html_helpers.inc' %]
 [% SET OpacLangSelectorMode = Koha.Preference('OpacLangSelectorMode') %]
 [% SET OpacHeader = KohaNews.get( location => "opacheader", lang => lang, library => branchcode, blocktitle => 0 ) %]
+[% SET OpacCustomSearch = KohaNews.get( location => "OpacCustomSearch", lang => lang, library => branchcode, blocktitle => 0 ) %]
 
 <div id="wrap">
     <div id="header-region" class="noprint">
                         [% ELSE %]
                             <div class="mastheadsearch">
                         [% END %]
-                        [% IF Koha.Preference('OpacCustomSearch') == '' %]
+                        [% IF ( OpacCustomSearch ) %]
+                            [% PROCESS koha_news_block news => OpacCustomSearch %]
+                        [% ELSE %]
                             <form name="searchform" method="get" action="/cgi-bin/koha/opac-search.pl" id="searchform" class="form-inline">
                                 <label for="masthead_search"> Search
                                     [% UNLESS ( Koha.Preference( 'OpacAddMastheadLibraryPulldown' ) == 1 ) %]
                                 [% END # / OpacAddMastheadLibraryPulldown %]
 
                             </form>
-                        [% ELSE # / Koha.Preference('OpacCustomSearch') == '' %]
-                            [% Koha.Preference('OpacCustomSearch') | $raw %]
-                        [% END # / Koha.Preference('OpacCustomSearch') == '' %]
+                        [% END # / ( OpacCustomSearch ) %]
                         </div> <!-- / .mastheadsearch -->
                     [% END # / UNLESS advsearch %]