[Koha-patches] [PATCH] Bug 7392: Add system preference to define export options in OPAC

Katrin Fischer Katrin.Fischer.83 at web.de
Sun Jan 1 14:23:07 CET 2012


NOTE: Patch depends on changes made for Bug 7245 for the "marcstd" option.

It adds a new system preference 'OpacExportOptions':

The new system preference allows to give a list of | separated
values to define, which download options are offered in OPAC.
Possible options are listed in the system preference editor
and include the new export option 'marcstd' from bug 7245.

The sequence of the download options in the system preference will
be the sequence in the OPAC pull down.

If left empty, the export option will be hidden from OPAC.

This patch creates a new include file for the OPAC with all the
code that is common to the three detail views (regular, MARC, and
ISBD).

As a side effect of creating this include file, some inconsistencies
in OpacSearchForTitleIn were fixed. {BIBLIONUMBER} and {CONTROLNUMBER}
were broken for ISBD and MARC view before and should now be replaced
with the correct values in all tabs.
---
 installer/data/mysql/sysprefs.sql                  |    2 +-
 installer/data/mysql/updatedatabase.pl             |    9 +++
 .../prog/en/modules/admin/preferences/opac.pref    |    9 +++-
 .../prog/en/includes/opac-detail-sidebar.inc       |   63 ++++++++++++++++++++
 .../opac-tmpl/prog/en/modules/opac-ISBDdetail.tt   |   56 +-----------------
 .../opac-tmpl/prog/en/modules/opac-MARCdetail.tt   |   55 +-----------------
 koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt |   55 +-----------------
 opac/opac-ISBDdetail.pl                            |    9 +++
 opac/opac-MARCdetail.pl                            |   22 +++++--
 opac/opac-detail.pl                                |    5 ++
 10 files changed, 115 insertions(+), 170 deletions(-)
 create mode 100644 koha-tmpl/opac-tmpl/prog/en/includes/opac-detail-sidebar.inc

diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql
index 128c9b2..6ed5d0f 100755
--- a/installer/data/mysql/sysprefs.sql
+++ b/installer/data/mysql/sysprefs.sql
@@ -328,4 +328,4 @@ INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('
 INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('OpacKohaUrl','1',"Show 'Powered by Koha' text on OPAC footer.",NULL,NULL);
 INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('EasyAnalyticalRecords','0','If on, display in the catalogue screens tools to easily setup analytical record relationships','','YesNo');
 INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacShowRecentComments',0,'If ON a link to recent comments will appear in the OPAC masthead',NULL,'YesNo');
-
+INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacExportOptions','bibtex|dc|marcxml|marc8|utf8|marcstd|mods|ris','Define export options available on OPAC detail page.','','free');
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index 67708fa..32bc210 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -4585,6 +4585,15 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     SetVersion($DBversion);
 }
 
+$DBversion = "3.06.03.XXX";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacExportOptions','bibtex|dc|marcxml|marc8|utf8|marcstd|mods|ris','Define available export options on OPAC detail page.','','free');");
+    print "Upgrade to $DBversion done (Bug 7345: Add system preference OpacExportOptions.)\n";
+    SetVersion($DBversion);
+}
+
+
+
 =head1 FUNCTIONS
 
 =head2 DropAllForeignKeys($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 d6ae2b2..40cdf78 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
@@ -132,7 +132,7 @@ OPAC:
               class: file
             - to override specified settings from the default stylesheet. Enter the filename (if the file is in the server's css directory) or a complete URL beginning with <code>http://</code> (if the file lives on a remote server). Leave blank to disable.
         -
-            - Use the CSS stylesheet <!-- TMPL_VAR NAME="opacthemelang" -->/css/
+            - Use the CSS stylesheet [% opacthemelang %]/css/
             - pref: opaclayoutstylesheet
               class: file
             - on all pages in the OPAC, instead of the default (leave blank to disable).
@@ -208,6 +208,13 @@ OPAC:
                   Results: "Results page only"
                   Both: "Both Details and Results pages"
             - 'Note: The corresponding OPACXSLT option must be turned on.'
+        -
+            - '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>)'
     Features:
         -
             - pref: opacuserlogin
diff --git a/koha-tmpl/opac-tmpl/prog/en/includes/opac-detail-sidebar.inc b/koha-tmpl/opac-tmpl/prog/en/includes/opac-detail-sidebar.inc
new file mode 100644
index 0000000..12772aa
--- /dev/null
+++ b/koha-tmpl/opac-tmpl/prog/en/includes/opac-detail-sidebar.inc
@@ -0,0 +1,63 @@
+<ul id="action">
+    [% UNLESS ( norequests ) %]
+        [% IF ( opacuserlogin ) %]
+            [% IF ( RequestOnOpac ) %]
+                [% IF ( AllowOnShelfHolds ) %]
+                    <li><a class="reserve" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% biblionumber %]">Place Hold</a></li>
+                [% ELSE %]
+                    [% IF ( ItemsIssued ) %]
+                        <li><a class="reserve" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% biblionumber %]">Place Hold</a></li>
+                    [% END %]
+                [% END %]
+            [% END %]
+        [% END %]
+    [% END %]
+    <li><a class="print" href="#" onclick="window.print();">Print</a></li>
+    [% IF ( virtualshelves ) %]
+        [% IF ( opacuserlogin ) %][% IF ( loggedinusername ) %]
+            <li><a class="addtoshelf" href="/cgi-bin/koha/opac-addbybiblionumber.pl?biblionumber=[% biblionumber %]" onclick="Dopop('opac-addbybiblionumber.pl?biblionumber=[% biblionumber %]'); return false;">
+                Save to Your Lists
+            </a></li>
+        [% END %][% END %]
+    [% END %]
+    [% IF ( opacbookbag ) %]
+        <li><a class="addtocart" href="#" onclick="addRecord('[% biblionumber %]'); return false;">Add to Your Cart</a></li>
+    [% END %]
+    <li style="display:none;"><a href="#" id="furthersearches">More searches</a></li>
+</ul>
+
+[% IF ( OPACSearchForTitleIn ) %]
+    <div id="furtherm" class="yuimenu">
+    <div class="bd">
+    <h4>Search for this title in:</h4>
+    <ul class="first-of-type">
+        [% OPACSearchForTitleIn %]
+    </ul>
+    </div>
+    </div>
+[% END %]
+
+[% IF ( export_options.size ) %] 
+    <div id="export" class="detailtagcell">
+        <form method="get" action="/cgi-bin/koha/opac-export.pl">
+        <label for="format">Save Record:</label>
+        <select name="format" id="format">
+        [% FOREACH option IN export_options %]
+            [% SWITCH option %]
+                [% CASE 'bibtex' %]<option value="bibtex">BIBTEX</option>
+                [% CASE 'dc' %]<option value="dc">Dublin Core (XML)</option>
+                [% CASE 'marcxml' %]<option value="marcxml">MARCXML</option>
+                [% CASE 'marc8' %]<option value="marc8">MARC (non-Unicode/MARC-8)</option>
+                [% CASE 'utf8' %]<option value="utf8">MARC (Unicode/UTF-8)</option>
+                [% CASE 'marcstd' %]<option value="utf8">MARC (Unicode/UTF-8, Standard)</option>  
+                [% CASE 'mods' %]<option value="mods">MODS (XML)</option>
+                [% CASE 'ris' %]<option value="ris">RIS</option>
+                [% CASE %]<option value="[% option %]">[% option %]</option>
+            [% END %]
+        [% END %]
+        </select>
+        <input type="hidden" name="op" value="export" />
+        <input type="hidden" name="bib" value="[% biblionumber %]" />
+        <input type="submit" name="save" value="Go" /></form>
+    </div>
+[% END %]
\ No newline at end of file
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-ISBDdetail.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-ISBDdetail.tt
index f9984a7..97b64ad 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-ISBDdetail.tt
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-ISBDdetail.tt
@@ -46,63 +46,9 @@
 	</div>
 	<div class="yui-u">
 	<div id="ulactioncontainer" class="container">
-<ul id="action">
 
-[% UNLESS ( norequests ) %]
-        [% IF ( opacuserlogin ) %]
-		[% IF ( RequestOnOpac ) %]
-			[% IF ( AllowOnShelfHolds ) %]
-				<li><a class="reserve" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% biblionumber %]">Place Hold</a></li>
-			[% ELSE %]
-				[% IF ( ItemsIssued ) %]
-					<li><a class="reserve" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% biblionumber %]">Place Hold</a></li>
-				[% END %]
-			[% END %]
+[% INCLUDE 'opac-detail-sidebar.inc' %]
 
-        	[% END %]
-	[% END %]
-[% END %]
-        <li><a class="print" href="#" onclick="window.print();">Print</a></li>
-[% IF ( virtualshelves ) %]
-   [% IF ( opacuserlogin ) %] [% IF ( loggedinusername ) %]
-        <li><a class="addtoshelf" href="/cgi-bin/koha/opac-addbybiblionumber.pl?biblionumber=[% biblionumber %]" onclick="Dopop('opac-addbybiblionumber.pl?biblionumber=[% biblionumber %]'); return false;">
-            Save to Your Lists
-        </a></li>
-    [% END %][% END %]
-[% END %]
-        [% IF ( opacbookbag ) %]<li><a class="addtocart" href="#" onclick="addRecord('[% biblionumber %]'); return false;">
-            Add to Your Cart
-        </a></li>[% END %]
-		<li style="display:none;"><a href="#" id="furthersearches">More searches</a></li>
-</ul>
-
-[% IF ( OPACSearchForTitleIn ) %]
-<div id="furtherm" class="yuimenu">
-<div class="bd">
-<h4>Search for this title in:</h4>
-<ul class="first-of-type">
-
-[% OPACSearchForTitleIn %]
-
-</ul>
-</div>
-</div>
-[% END %]
-
-		<div id="export">
-		<form method="get" action="/cgi-bin/koha/opac-export.pl">
-		<label for="format">Save Record:</label>
-	    <select name="format" id="format">
-		<option value="">-- Choose Format --</option>
- 	    <option value="bibtex">BibTex</option>
-        <option value="dc">Dublin Core (XML)</option>
-        <option value="marcxml">MARCXML</option>
-        <option value="marc8">MARC (non-Unicode/MARC-8)</option>
-        <option value="utf8">MARC (Unicode/UTF-8)</option>
-        <option value="mods">MODS (XML)</option>
- 	    <option value="ris">RIS</option>    
-		</select><input type="hidden" name="op" value="export" /><input type="hidden" name="bib" value="[% biblionumber %]" />
-<input type="submit" name="save" value="Go" /></form></div>
 </div>
 </div>
 </div>
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-MARCdetail.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-MARCdetail.tt
index 284154e..f3d2c91 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-MARCdetail.tt
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-MARCdetail.tt
@@ -201,62 +201,9 @@ $(document).ready(function(){
     </div>
     <div class="yui-u">
     <div id="ulactioncontainer" class="container">
-<ul id="action">
 
-[% UNLESS ( norequests ) %]
-        [% IF ( opacuserlogin ) %]
-        [% IF ( RequestOnOpac ) %]
-            [% IF ( AllowOnShelfHolds ) %]
-                <li><a class="reserve" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% biblionumber %]">Place Hold</a></li>
-            [% ELSE %]
-                [% IF ( ItemsIssued ) %]
-                    <li><a class="reserve" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% biblionumber %]">Place Hold</a></li>
-                [% END %]
-            [% END %]
-
-            [% END %]
-    [% END %]
-[% END %]
-        <li><a class="print" href="#" onclick="window.print();">
-            Print
-        </a></li>
-[% IF ( virtualshelves ) %]
-   [% IF ( opacuserlogin ) %] [% IF ( loggedinusername ) %]
-        <li><a class="addtoshelf" href="/cgi-bin/koha/opac-addbybiblionumber.pl?biblionumber=[% biblionumber %]" onclick="Dopop('opac-addbybiblionumber.pl?biblionumber=[% biblionumber %]'); return false;">
-            Save to Your Lists
-        </a></li>
-    [% END %][% END %]
-[% END %]
-        [% IF ( opacbookbag ) %]<li><a class="addtocart" href="#" onclick="addRecord('[% biblionumber %]'); return false;">
-            Add to Your Cart
-        </a></li>[% END %]
-        <li style="display:none;"><a href="#" id="furthersearches">More searches</a></li>
-</ul>
-
-[% IF ( OPACSearchForTitleIn ) %]
-<div id="furtherm" class="yuimenu">
-<div class="bd">
-<h4>Search for this title in:</h4>
-<ul class="first-of-type">
-
-[% OPACSearchForTitleIn %]
-
-</ul>
-</div>
-</div>
-[% END %]
+[% INCLUDE 'opac-detail-sidebar.inc' %]
 
-        <div id="export">
-        <form method="get" action="/cgi-bin/koha/opac-export.pl">
-        <label for="format">Save Record:</label>
-        <select name="format" id="format">
-        <option value="">-- Choose Format --</option>
-        <option value="mods">MODS (XML)</option>
-        <option value="dc">Dublin Core (XML)</option>
-        <option value="marcxml">MARCXML</option>
-        <option value="marc8">MARC (non-Unicode/MARC-8)</option>
-        <option value="utf8">MARC (Unicode/UTF-8)</option>    </select><input type="hidden" name="op" value="export" /><input type="hidden" name="bib" value="[% biblionumber %]" />
-<input type="submit" name="save" value="Go" /></form></div>
 </div>
 </div>
 </div>
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt
index d1b6570..aa411ca 100755
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt
@@ -1013,61 +1013,8 @@ YAHOO.util.Event.onContentReady("furtherm", function () {
         [% END %]
     </div>
 [% END %]
-<ul id="action">
-
-[% UNLESS ( norequests ) %]
-        [% IF ( opacuserlogin ) %]
-		[% IF ( RequestOnOpac ) %]
-			[% IF ( AllowOnShelfHolds ) %]
-	            		<li><a class="reserve" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% biblionumber %]">Place Hold</a></li>
-			[% ELSE %]
-				[% IF ( ItemsIssued ) %]
-		            		<li><a class="reserve" href="/cgi-bin/koha/opac-reserve.pl?biblionumber=[% biblionumber %]">Place Hold</a></li>
-				[% END %]
-			[% END %]
-        	[% END %]
-	[% END %]
-[% END %]
-        <li><a class="print" href="#" onclick="window.print();">Print</a></li>
-[% IF ( virtualshelves ) %]
-    [% IF ( opacuserlogin ) %][% IF ( loggedinusername ) %]
-        <li><a class="addtoshelf" href="/cgi-bin/koha/opac-addbybiblionumber.pl?biblionumber=[% biblionumber %]" onclick="Dopop('opac-addbybiblionumber.pl?biblionumber=[% biblionumber %]'); return false;">
-            Save to Your Lists
-        </a></li>
-    [% END %][% END %]
-[% END %]
-        [% IF ( opacbookbag ) %]<li><a class="addtocart" href="#" onclick="addRecord('[% biblionumber %]'); return false;">Add to Your Cart</a></li>[% END %]
-		<li style="display:none;"><a href="#" id="furthersearches">More searches</a></li>
-</ul>
-
-[% IF ( OPACSearchForTitleIn ) %]
-<div id="furtherm" class="yuimenu">
-<div class="bd">
-<h4>Search for this title in:</h4>
-<ul class="first-of-type">
-
-[% OPACSearchForTitleIn %]
 
-</ul>
-</div>
-</div>
-[% END %]
-
-        <div id="export" class="detailtagcell">
-        <form method="get" action="/cgi-bin/koha/opac-export.pl">
-        <label for="format">Save Record:</label>
-        <select name="format" id="format">
-        <option value="">-- Choose Format --</option>
-        <option value="bibtex">BIBTEX</option>
-        <option value="dc">Dublin Core (XML)</option>
-        <option value="marcxml">MARCXML</option>
-        <option value="marc8">MARC (non-Unicode/MARC-8)</option>
-        <option value="utf8">MARC (Unicode/UTF-8)</option>    
-        <option value="mods">MODS (XML)</option>
-        <option value="ris">RIS</option>
-		</select><input type="hidden" name="op" value="export" /><input type="hidden" name="bib" value="[% biblionumber %]" />
-<input type="submit" name="save" value="Go" /></form>
-        </div>
+[% INCLUDE 'opac-detail-sidebar.inc' %]
 
         [% IF ( NovelistSelectProfile ) %] [% IF ( NovelistSelectView == 'right') %]
          <div id="NovelistSelect">
diff --git a/opac/opac-ISBDdetail.pl b/opac/opac-ISBDdetail.pl
index c80d41c..3373787 100755
--- a/opac/opac-ISBDdetail.pl
+++ b/opac/opac-ISBDdetail.pl
@@ -159,13 +159,22 @@ $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);
+
 if (my $search_for_title = C4::Context->preference('OPACSearchForTitleIn')){
     $dat->{author} ? $search_for_title =~ s/{AUTHOR}/$dat->{author}/g : $search_for_title =~ s/{AUTHOR}//g;
     $dat->{title} =~ s/\/+$//; # remove trailing slash
     $dat->{title} =~ s/\s+$//; # remove trailing space
     $dat->{title} ? $search_for_title =~ s/{TITLE}/$dat->{title}/g : $search_for_title =~ s/{TITLE}//g;
     $isbn ? $search_for_title =~ s/{ISBN}/$isbn/g : $search_for_title =~ s/{ISBN}//g;
+    $marccontrolnumber ? $search_for_title =~ s/{CONTROLNUMBER}/$marccontrolnumber/g : $search_for_title =~ s/{CONTROLNUMBER}//g;
+    $search_for_title =~ s/{BIBLIONUMBER}/$biblionumber/g;
  $template->param('OPACSearchForTitleIn' => $search_for_title);
 }
 
diff --git a/opac/opac-MARCdetail.pl b/opac/opac-MARCdetail.pl
index ffa0a6d..9f552b8 100755
--- a/opac/opac-MARCdetail.pl
+++ b/opac/opac-MARCdetail.pl
@@ -270,13 +270,25 @@ 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 );
+my $isbn = GetNormalizedISBN(undef,$record,$marcflavour);
+my $marccontrolnumber   = GetMarcControlnumber   ($record, $marcflavour);
+
 if (my $search_for_title = C4::Context->preference('OPACSearchForTitleIn')){
-    $biblio->{author} ? $search_for_title =~ s/{AUTHOR}/$biblio->{author}/g : $search_for_title =~ s/{AUTHOR}//g;
-    $biblio->{title} =~ s/\/+$//; # remove trailing slash
-    $biblio->{title} =~ s/\s+$//; # remove trailing space
-    $biblio->{title} ? $search_for_title =~ s/{TITLE}/$biblio->{title}/g : $search_for_title =~ s/{TITLE}//g;
-    $biblio->{isbn} ? $search_for_title =~ s/{ISBN}/$biblio->{isbn}/g : $search_for_title =~ s/{ISBN}//g;
+    $dat->{author} ? $search_for_title =~ s/{AUTHOR}/$dat->{author}/g : $search_for_title =~ s/{AUTHOR}//g;
+    $dat->{title} =~ s/\/+$//; # remove trailing slash
+    $dat->{title} =~ s/\s+$//; # remove trailing space
+    $dat->{title} ? $search_for_title =~ s/{TITLE}/$dat->{title}/g : $search_for_title =~ s/{TITLE}//g;
+    $isbn ? $search_for_title =~ s/{ISBN}/$isbn/g : $search_for_title =~ s/{ISBN}//g;
+    $marccontrolnumber ? $search_for_title =~ s/{CONTROLNUMBER}/$marccontrolnumber/g : $search_for_title =~ s/{CONTROLNUMBER}//g;
+    $search_for_title =~ s/{BIBLIONUMBER}/$biblionumber/g;
  $template->param('OPACSearchForTitleIn' => $search_for_title);
 }
 
diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl
index f82dde2..59f243e 100755
--- a/opac/opac-detail.pl
+++ b/opac/opac-detail.pl
@@ -881,6 +881,11 @@ 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;
+
 #Search for title in links
 my $marccontrolnumber   = GetMarcControlnumber   ($record, $marcflavour);
 
-- 
1.7.5.4



More information about the Koha-patches mailing list