From e972c7f8b5de1cb5648b79fda8619705a1ccd72c Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@biblibre.com>
Date: Wed, 26 Nov 2014 12:58:41 +0100
Subject: [PATCH] Bug 13346: OpacExportOptions becomes multiple

The list of options is limited, the interface could be more ergonomic.

Test plan:
- verify that you are still allowed to change (add/remove) options for the
  OpacExportOptions pref.
- At the OPAC, verify the selected options appear correctly (check the
  3 pages opac-ISBDdetail.pl, opac-MARCdetail.pl and opac-detail.pl).
---
 .../1-Obligatoire/unimarc_standard_system_preferences.sql   |  2 +-
 installer/data/mysql/sysprefs.sql                           |  2 +-
 installer/data/mysql/updatedatabase.pl                      | 13 +++++++++++++
 .../prog/en/modules/admin/preferences/opac.pref             | 13 +++++++++----
 .../opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc |  3 ++-
 opac/opac-ISBDdetail.pl                                     |  5 -----
 opac/opac-MARCdetail.pl                                     |  5 -----
 opac/opac-detail.pl                                         |  5 -----
 8 files changed, 26 insertions(+), 22 deletions(-)

diff --git a/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_system_preferences.sql b/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_system_preferences.sql
index 065c6b3..94ee493 100644
--- a/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_system_preferences.sql
+++ b/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_system_preferences.sql
@@ -24,4 +24,4 @@ UPDATE systempreferences SET value = 'Ma bibliothèque' WHERE variable = 'Librar
 UPDATE systempreferences SET value = 'fr-FR' WHERE variable = 'opaclanguages';
 UPDATE systempreferences SET value = 1 WHERE variable = 'opaclanguagesdisplay';
 UPDATE systempreferences SET value = 'Bienvenue dans Koha...\r\n<hr>' WHERE variable = 'OpacMainUserBlock';
-UPDATE systempreferences SET value = 'bibtex|dc|marcxml|marc8|utf8|marcstd|ris' WHERE variable = 'OpacExportOptions';
+UPDATE systempreferences SET value = 'bibtex,dc,marcxml,marc8,utf8,marcstd,ris' WHERE variable = 'OpacExportOptions';
diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql
index c3e308f..e300cc8 100644
--- a/installer/data/mysql/sysprefs.sql
+++ b/installer/data/mysql/sysprefs.sql
@@ -252,7 +252,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `
 ('OPACdefaultSortOrder','dsc','asc|dsc|za|az','Specify the default sort order','Choice'),
 ('OPACdidyoumean',NULL,NULL,'Did you mean? configuration for the OPAC. Do not change, as this is controlled by /cgi-bin/koha/admin/didyoumean.pl.','Free'),
 ('OPACDisplay856uAsImage','OFF','OFF|Details|Results|Both','Display the URI in the 856u field as an image, the corresponding OPACXSLT option must be on','Choice'),
-('OpacExportOptions','bibtex|dc|marcxml|marc8|utf8|marcstd|mods|ris','','Define export options available on OPAC detail page.','free'),
+('OpacExportOptions','bibtex,dc,marcxml,marc8,utf8,marcstd,mods,ris','','Define export options available on OPAC detail page.','multiple'),
 ('OPACFallback', 'prog', 'bootstrap|prog', 'Define the fallback theme for the OPAC interface.', 'Themes'),
 ('OpacFavicon','','','Enter a complete URL to an image to replace the default Koha favicon on the OPAC','free'),
 ('OPACFineNoRenewals','100','','Fine limit above which user cannot renew books via OPAC','Integer'),
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index 393a3a1..82838b7 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -9573,6 +9573,19 @@ if ( CheckVersion($DBversion) ) {
     SetVersion($DBversion);
 }
 
+$DBversion = "3.19.00.XXX";
+if ( CheckVersion($DBversion) ) {
+    my $pref_value = C4::Context->preference('OpacExportOptions');
+    $pref_value =~ s/\|/,/g; # multiple is separated by ,
+    $dbh->do(q{
+        UPDATE systempreferences
+            SET value = ?,
+                type = 'multiple'
+        WHERE variable = 'OpacExportOptions'
+    }, {}, $pref_value );
+    print "Upgrade to $DBversion done (Bug XXXXX: OpacExportOptions is now multiple)\n";
+    SetVersion ($DBversion);
+}
 =head1 FUNCTIONS
 
 =head2 TableExists($table)
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 45df9f8..f0c0951 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
@@ -275,10 +275,15 @@ OPAC:
         -
             - 'List export options that should be available from OPAC detail page separated by |:'
             - pref: OpacExportOptions
-              class: multi
-            - '<br />Note: Available options are: BIBTEX (<code>bibtex</code>), Dublin Core (<code>dc</code>),'
-            - 'MARCXML (<code>marcxml</code>), MARC-8 encoded MARC (<code>marc8</code>), Unicode/UTF-8 encoded MARC (<code>utf8</code>),'
-            - 'Unicode/UTF-8 encoded MARC without local use -9xx, x9x, xx9- fields and subfields (<code>marcstd</code>), MODS (<code>mods</code>), RIS (<code>ris</code>)'
+              multiple:
+                bibtex: BibTeX
+                dc: Dublin Core
+                marcxml: MARCXML
+                marc8: MARC-8 encoded MARC
+                utf8: Unicode/UTF-8 encoded MARC
+                marcstd: Unicode/UTF-8 encoded MARC without local use -9xx, x9x, xx9- fields and subfields
+                mods: MODS
+                ris: RIS
         -
             - pref: OpacSeparateHoldings
               choices:
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc
index b15333b..3efa10c 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc
@@ -34,7 +34,8 @@
     </li>
     [% END %]
 
-    [% IF ( export_options.size ) %]
+    [% SET export_options = Koha.Preference('OpacExportOptions').split(',') %]
+    [% IF export_options.size %]
         <li>
             <div id="export">
                 <div class="dropdown">
diff --git a/opac/opac-ISBDdetail.pl b/opac/opac-ISBDdetail.pl
index c3c03c1..2acddb4 100755
--- a/opac/opac-ISBDdetail.pl
+++ b/opac/opac-ISBDdetail.pl
@@ -180,11 +180,6 @@ $template->param(
     reviews             => $reviews,
 );
 
-#Export options
-my $OpacExportOptions=C4::Context->preference("OpacExportOptions");
-my @export_options = split(/\|/,$OpacExportOptions);
-$template->{VARS}->{'export_options'} = \@export_options;
-
 #Search for title in links
 my $marccontrolnumber   = GetMarcControlnumber ($record, $marcflavour);
 my $marcissns = GetMarcISSN ( $record, $marcflavour );
diff --git a/opac/opac-MARCdetail.pl b/opac/opac-MARCdetail.pl
index f8fab90..2e9b537 100755
--- a/opac/opac-MARCdetail.pl
+++ b/opac/opac-MARCdetail.pl
@@ -314,11 +314,6 @@ if(C4::Context->preference("ISBD")) {
 	$template->param(ISBD => 1);
 }
 
-#Export options
-my $OpacExportOptions=C4::Context->preference("OpacExportOptions");
-my @export_options = split(/\|/,$OpacExportOptions);
-$template->{VARS}->{'export_options'} = \@export_options;
-
 #Search for title in links
 my $marcflavour  = C4::Context->preference("marcflavour");
 my $dat = TransformMarcToKoha( $dbh, $record );
diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl
index 3bf703f..9ba8120 100755
--- a/opac/opac-detail.pl
+++ b/opac/opac-detail.pl
@@ -1058,11 +1058,6 @@ if (C4::Context->preference("OPACURLOpenInNewWindow")) {
     $template->param(covernewwindow => 'false');
 }
 
-#Export options
-my $OpacExportOptions=C4::Context->preference("OpacExportOptions");
-my @export_options = split(/\|/,$OpacExportOptions);
-$template->{VARS}->{'export_options'} = \@export_options;
-
 if ( C4::Context->preference('OpacStarRatings') !~ /disable/ ) {
     my $rating = GetRating( $biblionumber, $borrowernumber );
     $template->param(
-- 
2.1.0