Please don't use backquotes in SQL statements, they break PostgrSQL.



Am 24.03.2012 um 18:12 schrieb Dobrica Pavlinusic <[email protected]>:

> From: Stéphane Delaune <[email protected]>
> 
> Signed-off-by: Marijana Glavica <[email protected]>
> 
> I am signing it off because it doesn't break anything and I will report
> another bug for language issues described in my previous comment.
> ---
> C4/Search.pm                                       |    3 +-
> C4/VirtualShelves/Page.pm                          |    2 +-
> C4/XSLT.pm                                         |   80 ++++++++++++++-----
> catalogue/detail.pl                                |    2 +-
> installer/data/mysql/sysprefs.sql                  |    8 +-
> installer/data/mysql/updatedatabase.pl             |   30 +++++++
> .../prog/en/modules/admin/preferences/opac.pref    |   14 ++--
> .../en/modules/admin/preferences/staff_client.pref |   14 ++--
> opac/opac-detail.pl                                |    2 +-
> 9 files changed, 109 insertions(+), 46 deletions(-)
> 
> diff --git a/C4/Search.pm b/C4/Search.pm
> index 9bc0af2..56468b5 100644
> --- a/C4/Search.pm
> +++ b/C4/Search.pm
> @@ -1776,8 +1776,7 @@ sub searchResults {
>    $debug && warn $marcrecord->as_formatted;
>    my $interface = $search_context eq 'opac' ? 'OPAC' : '';
>    if (!$scan && C4::Context->preference($interface . "XSLTResultsDisplay")) {
> -            $oldbiblio->{XSLTResultsRecord} = 
> XSLTParse4Display($oldbiblio->{biblionumber}, $marcrecord, 'Results',
> -                                                                
> $search_context, 1, \@hiddenitems);
> +            $oldbiblio->{XSLTResultsRecord} = 
> XSLTParse4Display($oldbiblio->{biblionumber}, $marcrecord, 
> $interface."XSLTResultsDisplay", 1, \@hiddenitems);
>        # the last parameter tells Koha to clean up the problematic ampersand 
> entities that Zebra outputs
>         }
> 
> diff --git a/C4/VirtualShelves/Page.pm b/C4/VirtualShelves/Page.pm
> index 125a1e6..d32afed 100644
> --- a/C4/VirtualShelves/Page.pm
> +++ b/C4/VirtualShelves/Page.pm
> @@ -257,7 +257,7 @@ sub shelfpage {
>                     my $biblionumber = $this_item->{'biblionumber'};
>                     my $record = GetMarcBiblio($biblionumber);
>                     $this_item->{XSLTBloc} =
> -                        XSLTParse4Display($biblionumber, $record, 'Results', 
> 'opac')
> +                        XSLTParse4Display($biblionumber, $record, 
> "OPACXSLTResultsDisplay")
>                             if 
> C4::Context->preference("OPACXSLTResultsDisplay") && $type eq 'opac';
> 
>                     # the virtualshelfcontents table does not store these 
> columns nor are they retrieved from the items
> diff --git a/C4/XSLT.pm b/C4/XSLT.pm
> index 7557efe..621f08f 100644
> --- a/C4/XSLT.pm
> +++ b/C4/XSLT.pm
> @@ -3,6 +3,7 @@ package C4::XSLT;
> # <jmf at liblime dot com>
> # Parts Copyright Katrin Fischer 2011
> # Parts Copyright ByWater Solutions 2011
> +# Parts Copyright Biblibre 2012
> #
> # This file is part of Koha.
> #
> @@ -32,6 +33,7 @@ use C4::Reserves;
> use Encode;
> use XML::LibXML;
> use XML::LibXSLT;
> +use LWP::Simple;
> 
> use vars qw($VERSION @ISA @EXPORT);
> 
> @@ -41,6 +43,7 @@ BEGIN {
>     @ISA = qw(Exporter);
>     @EXPORT = qw(
>         &XSLTParse4Display
> +        &GetURI
>     );
> }
> 
> @@ -50,6 +53,19 @@ C4::XSLT - Functions for displaying XSLT-generated content
> 
> =head1 FUNCTIONS
> 
> +=head2 GetURI
> +
> +GetURI file and returns the xslt as a string
> +
> +=cut
> +
> +sub GetURI {
> +    my ($uri) = @_;
> +    my $string;
> +    $string = get $uri ;
> +    return $string;
> +}
> +
> =head2 transformMARCXML4XSLT
> 
> Replaces codes with authorized values in a MARC::Record object
> @@ -121,8 +137,39 @@ sub getAuthorisedValues4MARCSubfields {
> my $stylesheet;
> 
> sub XSLTParse4Display {
> -    my ( $biblionumber, $orig_record, $xsl_suffix, $interface, $fixamps, 
> $hidden_items ) = @_;
> -    $interface = 'opac' unless $interface;
> +    my ( $biblionumber, $orig_record, $xslsyspref, $fixamps, $hidden_items ) 
> = @_;
> +    my $xslfilename = C4::Context->preference($xslsyspref);
> +    if ( $xslfilename =~ /^\s*"?default"?\s*$/i ) {
> +        if ($xslsyspref eq "XSLTDetailsDisplay") {
> +            $xslfilename = C4::Context->config('intrahtdocs') .
> +                        '/' . C4::Context->preference("template") .
> +                        '/' . C4::Templates::_current_language() .
> +                        '/xslt/' .
> +                        C4::Context->preference('marcflavour') .
> +                        "slim2intranetDetail.xsl";
> +        } elsif ($xslsyspref eq "XSLTResultsDisplay") {
> +            $xslfilename = C4::Context->config('intrahtdocs') .
> +                        '/' . C4::Context->preference("template") .
> +                        '/' . C4::Templates::_current_language() .
> +                        '/xslt/' .
> +                        C4::Context->preference('marcflavour') .
> +                        "slim2intranetResults.xsl";
> +        } elsif ($xslsyspref eq "OPACXSLTDetailsDisplay") {
> +            $xslfilename = C4::Context->config('opachtdocs') .
> +                        '/' . C4::Context->preference("opacthemes") .
> +                        '/' . C4::Templates::_current_language() .
> +                        '/xslt/' .
> +                        C4::Context->preference('marcflavour') .
> +                        "slim2OPACDetail.xsl";
> +        } elsif ($xslsyspref eq "OPACXSLTResultsDisplay") {
> +            $xslfilename = C4::Context->config('opachtdocs') .
> +                        '/' . C4::Context->preference("opacthemes") .
> +                        '/' . C4::Templates::_current_language() .
> +                        '/xslt/' .
> +                        C4::Context->preference('marcflavour') .
> +                        "slim2OPACResults.xsl";
> +        }
> +    }
>     # grab the XML, run it through our stylesheet, push it out to the browser
>     my $record = transformMARCXML4XSLT($biblionumber, $orig_record);
>     #return $record->as_formatted();
> @@ -153,29 +200,20 @@ sub XSLTParse4Display {
>     # don't die when you find &, >, etc
>     $parser->recover_silently(0);
>     my $source = $parser->parse_string($xmlrecord);
> -    unless ( $stylesheet ) {
> +    unless ( $stylesheet->{$xslfilename} ) {
>         my $xslt = XML::LibXSLT->new();
> -        my $xslfile;
> -        if ($interface eq 'intranet') {
> -            $xslfile = C4::Context->config('intrahtdocs') . 
> -                      '/' . C4::Context->preference("template") . 
> -                      '/' . C4::Templates::_current_language() .
> -                      '/xslt/' .
> -                      C4::Context->preference('marcflavour') .
> -                      "slim2intranet$xsl_suffix.xsl";
> +        my $style_doc;
> +        if ( $xslfilename =~ /^https?:\/\// ) {
> +            my $xsltstring = GetURI($xslfilename);
> +            $style_doc = $parser->parse_string($xsltstring);
>         } else {
> -            $xslfile = C4::Context->config('opachtdocs') . 
> -                      '/' . C4::Context->preference("opacthemes") . 
> -                      '/' . C4::Templates::_current_language() .
> -                      '/xslt/' .
> -                      C4::Context->preference('marcflavour') .
> -                      "slim2OPAC$xsl_suffix.xsl";
> +            use Cwd;
> +            $style_doc = $parser->parse_file($xslfilename);
>         }
> -        my $style_doc = $parser->parse_file($xslfile);
> -        $stylesheet = $xslt->parse_stylesheet($style_doc);
> +        $stylesheet->{$xslfilename} = $xslt->parse_stylesheet($style_doc);
>     }
> -    my $results = $stylesheet->transform($source);
> -    my $newxmlrecord = $stylesheet->output_string($results);
> +    my $results      = $stylesheet->{$xslfilename}->transform($source);
> +    my $newxmlrecord = $stylesheet->{$xslfilename}->output_string($results);
>     return $newxmlrecord;
> }
> 
> diff --git a/catalogue/detail.pl b/catalogue/detail.pl
> index da62e07..de355fa 100755
> --- a/catalogue/detail.pl
> +++ b/catalogue/detail.pl
> @@ -85,7 +85,7 @@ my $marcflavour  = C4::Context->preference("marcflavour");
> # XSLT processing of some stuff
> if (C4::Context->preference("XSLTDetailsDisplay") ) {
>     $template->param('XSLTDetailsDisplay' =>'1',
> -        'XSLTBloc' => XSLTParse4Display($biblionumber, $record, 
> 'Detail','intranet') );
> +        'XSLTBloc' => XSLTParse4Display($biblionumber, $record, 
> "XSLTDetailsDisplay") );
> }
> 
> $template->param( 'SpineLabelShowPrintOnBibDetails' => 
> C4::Context->preference("SpineLabelShowPrintOnBibDetails") );
> diff --git a/installer/data/mysql/sysprefs.sql 
> b/installer/data/mysql/sysprefs.sql
> index 3e850b3..21212a0 100644
> --- a/installer/data/mysql/sysprefs.sql
> +++ b/installer/data/mysql/sysprefs.sql
> @@ -219,10 +219,10 @@ INSERT INTO `systempreferences` 
> (variable,value,options,explanation,type) VALUES
> 
> INSERT INTO `systempreferences` (variable,value,options,explanation,type) 
> VALUES('OPACShelfBrowser','1','','Enable/disable Shelf Browser on item 
> details page. WARNING: this feature is very resource consuming on collections 
> with large numbers of items.','YesNo');
> INSERT INTO `systempreferences` (variable,value,options,explanation,type) 
> VALUES
> -('OPACXSLTDetailsDisplay','0','','Enable XSL stylesheet control over details 
> page display on OPAC','YesNo'),
> -('OPACXSLTResultsDisplay','0','','Enable XSL stylesheet control over results 
> page display on OPAC','YesNo'),
> -('XSLTDetailsDisplay','0','','Enable XSL stylesheet control over details 
> page display on intranet','YesNo'),
> -('XSLTResultsDisplay','0','','Enable XSL stylesheet control over results 
> page display on intranet','YesNo');
> +('OPACXSLTDetailsDisplay','','','Enable XSL stylesheet control over details 
> page display on OPAC','Free'),
> +('OPACXSLTResultsDisplay','','','Enable XSL stylesheet control over results 
> page display on OPAC','Free'),
> +('XSLTDetailsDisplay','','','Enable XSL stylesheet control over details page 
> display on intranet','Free'),
> +('XSLTResultsDisplay','','','Enable XSL stylesheet control over results page 
> display on intranet','Free');
> INSERT INTO `systempreferences` (variable,value,options,explanation,type) 
> VALUES('AdvancedSearchTypes','itemtypes','itemtypes|ccode','Select which set 
> of fields comprise the Type limit in the advanced search','Choice');
> INSERT INTO `systempreferences` (variable,value,options,explanation,type) 
> VALUES('AllowOnShelfHolds', '0', '', 'Allow hold requests to be placed on 
> items that are not on loan', 'YesNo');
> INSERT INTO `systempreferences` (variable,value,options,explanation,type) 
> VALUES('AllowHoldsOnDamagedItems', '1', '', 'Allow hold requests to be placed 
> on damaged items', 'YesNo');
> diff --git a/installer/data/mysql/updatedatabase.pl 
> b/installer/data/mysql/updatedatabase.pl
> index 8259bf2..f43bfba 100755
> --- a/installer/data/mysql/updatedatabase.pl
> +++ b/installer/data/mysql/updatedatabase.pl
> @@ -5036,6 +5036,36 @@ if ( C4::Context->preference("Version") < 
> TransformToNum($DBversion) ) {
>     SetVersion($DBversion);
> }
> 
> +$DBversion = "XXX";
> +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
> +    my $countXSLTDetailsDisplay = 0;
> +    my $valueXSLTDetailsDisplay = "";
> +    my $valueXSLTResultsDisplay = "";
> +    my $valueOPACXSLTDetailsDisplay = "";
> +    my $valueOPACXSLTResultsDisplay = "";
> +    #the line below test if database comes from a BibLibre's branch
> +    $countXSLTDetailsDisplay = $dbh->do('SELECT 1 FROM `systempreferences` 
> WHERE `variable`="IntranetXSLTDetailsDisplay"');
> +    if ($countXSLTDetailsDisplay > 0)
> +    {
> +        #the two lines below will only be used to update the databases from 
> the BibLibre's branch. They will not affect the others
> +        $dbh->do(q|UPDATE `systempreferences` SET 
> `variable`="XSLTDetailsDisplay" WHERE 
> `variable`="IntranetXSLTDetailsDisplay"|);
> +        $dbh->do(q|UPDATE `systempreferences` SET 
> `variable`="XSLTResultsDisplay" WHERE 
> `variable`="IntranetXSLTResultsDisplay"|);
> +    }
> +    else
> +    {
> +        $valueXSLTDetailsDisplay = "default" if 
> (C4::Context->preference("XSLTDetailsDisplay"));
> +        $valueXSLTResultsDisplay = "default" if 
> (C4::Context->preference("XSLTResultsDisplay"));
> +        $valueOPACXSLTDetailsDisplay = "default" if 
> (C4::Context->preference("OPACXSLTDetailsDisplay"));
> +        $valueOPACXSLTResultsDisplay = "default" if 
> (C4::Context->preference("OPACXSLTResultsDisplay"));
> +        $dbh->do("UPDATE systempreferences SET type='Free', 
> value=\"$valueXSLTDetailsDisplay\" WHERE variable='XSLTDetailsDisplay'");
> +        $dbh->do("UPDATE systempreferences SET type='Free', 
> value=\"$valueXSLTResultsDisplay\" WHERE variable='XSLTResultsDisplay'");
> +        $dbh->do("UPDATE systempreferences SET type='Free', 
> value=\"$valueOPACXSLTDetailsDisplay\" WHERE 
> variable='OPACXSLTDetailsDisplay'");
> +        $dbh->do("UPDATE systempreferences SET type='Free', 
> value=\"$valueOPACXSLTResultsDisplay\" WHERE 
> variable='OPACXSLTResultsDisplay'");
> +    }
> +    print "XSLT systempreference takes a path to file rather than YesNo\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 ae6b620..b3bee94 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
> @@ -48,17 +48,15 @@ OPAC:
>                   no: Show
>             - lost items on search and detail pages.
>         -
> -            - Show biblio records on OPAC result page
> +            - 'Display OPAC results using XSLT stylesheet at: '
>             - pref: OPACXSLTResultsDisplay
> -              choices:
> -                  yes: using XSLT stylesheets.
> -                  no: normally.
> +              class: file
> +            - '<br />Options:<br />- leave empty for "no xslt"<br />- enter 
> "default" for the default one<br />- put a path to define a xslt file<br />- 
> put an URL for an external specific stylesheet.'
>         -
> -            - Show item details pages on the OPAC
> +            - 'Display OPAC details using XSLT stylesheet at: '
>             - pref: OPACXSLTDetailsDisplay
> -              choices:
> -                  yes: using XSLT stylesheets.
> -                  no: normally.
> +              class: file
> +            - '<br />Options:<br />- leave empty for "no xslt"<br />- enter 
> "default" for the default one<br />- put a path to define a xslt file<br />- 
> put an URL for an external specific stylesheet.'
>         -
>             - On pages displayed with XSLT stylesheets on the OPAC,
>             - pref: DisplayOPACiconsXSLT
> diff --git 
> a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_client.pref 
> b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_client.pref
> index efa33a8..edb9072 100644
> --- 
> a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_client.pref
> +++ 
> b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_client.pref
> @@ -51,17 +51,15 @@ Staff Client:
>               class: url
>             - for the Staff Client's favicon. (This should be a complete URL, 
> starting with <code>http://</code>.)
>         -
> -            - Show biblio records on result page in the staff client
> +            - 'Display results in the staff client using XSLT stylesheet at: 
> '
>             - pref: XSLTResultsDisplay
> -              choices:
> -                  yes: using XSLT stylesheets.
> -                  no: normally.
> +              class: file
> +            - '<br />Options:<br />- leave empty for "no xslt"<br />- enter 
> "default" for the default one<br />- put a path to define a xslt file<br />- 
> put an URL for an external specific stylesheet.'
>         -
> -            - Show item details pages in the staff client
> +            - 'Display details in the staff client using XSLT stylesheet at: 
> '
>             - pref: XSLTDetailsDisplay
> -              choices:
> -                  yes: using XSLT stylesheets.
> -                  no: normally.
> +              class: file
> +            - '<br />Options:<br />- leave empty for "no xslt"<br />- enter 
> "default" for the default one<br />- put a path to define a xslt file<br />- 
> put an URL for an external specific stylesheet.'
>         -
>             - Use the Yahoo UI libraries
>             - pref: yuipath
> diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl
> index b45250d..f64c794 100755
> --- a/opac/opac-detail.pl
> +++ b/opac/opac-detail.pl
> @@ -92,7 +92,7 @@ SetUTF8Flag($record);
> 
> # XSLT processing of some stuff
> if (C4::Context->preference("OPACXSLTDetailsDisplay") ) {
> -    $template->param( 'XSLTBloc' => XSLTParse4Display($biblionumber, 
> $record, 'Detail', 'opac') );
> +    $template->param( 'XSLTBloc' => XSLTParse4Display($biblionumber, 
> $record, "OPACXSLTDetailsDisplay" ) );
> }
> 
> 
> -- 
> 1.7.2.5
> 
> _______________________________________________
> Koha-patches mailing list
> [email protected]
> http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches
> website : http://www.koha-community.org/
> git : http://git.koha-community.org/
> bugs : http://bugs.koha-community.org/
_______________________________________________
Koha-patches mailing list
[email protected]
http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/

Reply via email to