View | Details | Raw Unified | Return to bug 12561
Collapse All | Expand All

(-)a/C4/Search.pm (-6 / +16 lines)
Lines 1661-1670 sub searchResults { Link Here
1661
    my ($bibliotag,$bibliosubf)=GetMarcFromKohaField( 'biblio.biblionumber' );
1661
    my ($bibliotag,$bibliosubf)=GetMarcFromKohaField( 'biblio.biblionumber' );
1662
1662
1663
    # set stuff for XSLT processing here once, not later again for every record we retrieved
1663
    # set stuff for XSLT processing here once, not later again for every record we retrieved
1664
    my $xslsyspref = $is_opac ? 'OPACXSLTResultsDisplay' : 'XSLTResultsDisplay';
1665
    my $xslfile = C4::Context->preference( $xslsyspref ) || "default";
1666
    my $lang   = C4::Languages::getlanguage();
1667
    my $sysxml = C4::XSLT::get_xslt_sysprefs();
1668
1664
1669
    my $userenv = C4::Context->userenv;
1665
    my $userenv = C4::Context->userenv;
1670
    my $logged_in_user
1666
    my $logged_in_user
Lines 1961-1974 sub searchResults { Link Here
1961
1957
1962
        # XSLT processing of some stuff
1958
        # XSLT processing of some stuff
1963
        # we fetched the sysprefs already before the loop through all retrieved record!
1959
        # we fetched the sysprefs already before the loop through all retrieved record!
1964
        if (!$scan && $xslfile) {
1960
        if (!$scan) {
1965
            $record_processor->options({
1961
            $record_processor->options({
1966
                frameworkcode => $fw,
1962
                frameworkcode => $fw,
1967
                interface     => $search_context->{'interface'}
1963
                interface     => $search_context->{'interface'}
1968
            });
1964
            });
1969
1965
1970
            $record_processor->process($marcrecord);
1966
            $record_processor->process($marcrecord);
1971
            $oldbiblio->{XSLTResultsRecord} = XSLTParse4Display($oldbiblio->{biblionumber}, $marcrecord, $xslsyspref, 1, \@hiddenitems, $sysxml, $xslfile, $lang, $xslt_variables);
1967
1968
            $oldbiblio->{XSLTResultsRecord} = XSLTParse4Display(
1969
                {
1970
                    biblionumber => $oldbiblio->{biblionumber},
1971
                    record       => $marcrecord,
1972
                    xsl_syspref  => (
1973
                        $is_opac
1974
                        ? 'OPACXSLTResultsDisplay'
1975
                        : 'XSLTResultsDisplay'
1976
                    ),
1977
                    fix_amps       => 1,
1978
                    hidden_items   => \@hiddenitems,
1979
                    xslt_variables => $xslt_variables
1980
                }
1981
            );
1972
        }
1982
        }
1973
1983
1974
        # if biblio level itypes are used and itemtype is notforloan, it can't be reserved either
1984
        # if biblio level itypes are used and itemtype is notforloan, it can't be reserved either
(-)a/C4/XSLT.pm (-8 / +25 lines)
Lines 189-205 sub get_xslt_sysprefs { Link Here
189
    return $sysxml;
189
    return $sysxml;
190
}
190
}
191
191
192
sub XSLTParse4Display {
192
sub get_xsl_filename {
193
    my ( $biblionumber, $orig_record, $xslsyspref, $fixamps, $hidden_items, $sysxml, $xslfilename, $lang, $variables ) = @_;
193
    my ( $xslsyspref ) = @_;
194
195
    my $lang   = C4::Languages::getlanguage();
194
196
195
    $sysxml ||= C4::Context->preference($xslsyspref);
197
    my $xslfilename = C4::Context->preference($xslsyspref) || "default";
196
    $xslfilename ||= C4::Context->preference($xslsyspref);
197
    $lang ||= C4::Languages::getlanguage();
198
198
199
    if ( $xslfilename =~ /^\s*"?default"?\s*$/i ) {
199
    if ( $xslfilename =~ /^\s*"?default"?\s*$/i ) {
200
        my $htdocs;
200
201
        my $theme;
201
        my ( $htdocs, $theme, $xslfile );
202
        my $xslfile;
202
203
        if ($xslsyspref eq "XSLTDetailsDisplay") {
203
        if ($xslsyspref eq "XSLTDetailsDisplay") {
204
            $htdocs  = C4::Context->config('intrahtdocs');
204
            $htdocs  = C4::Context->config('intrahtdocs');
205
            $theme   = C4::Context->preference("template");
205
            $theme   = C4::Context->preference("template");
Lines 240-245 sub XSLTParse4Display { Link Here
240
        $xslfilename =~ s/\{langcode\}/$lang/;
240
        $xslfilename =~ s/\{langcode\}/$lang/;
241
    }
241
    }
242
242
243
    return $xslfilename;
244
}
245
246
sub XSLTParse4Display {
247
    my ( $params ) = @_;
248
249
    my $biblionumber = $params->{biblionumber};
250
    my $orig_record  = $params->{record};
251
    my $xslsyspref   = $params->{xsl_syspref};
252
    my $fixamps      = $params->{fix_amps};
253
    my $hidden_items = $params->{hidden_items} || [];
254
    my $variables    = $params->{xslt_variables};
255
256
    my $xslfilename = get_xsl_filename( $xslsyspref);
257
    warn $xslfilename;
258
243
    # grab the XML, run it through our stylesheet, push it out to the browser
259
    # grab the XML, run it through our stylesheet, push it out to the browser
244
    my $record = transformMARCXML4XSLT($biblionumber, $orig_record);
260
    my $record = transformMARCXML4XSLT($biblionumber, $orig_record);
245
    my $itemsxml;
261
    my $itemsxml;
Lines 272-277 sub XSLTParse4Display { Link Here
272
    }
288
    }
273
    $varxml .= "</variables>\n";
289
    $varxml .= "</variables>\n";
274
290
291
    my $sysxml = get_xslt_sysprefs();
275
    $xmlrecord =~ s/\<\/record\>/$itemsxml$sysxml$varxml\<\/record\>/;
292
    $xmlrecord =~ s/\<\/record\>/$itemsxml$sysxml$varxml\<\/record\>/;
276
    if ($fixamps) { # We need to correct the ampersand entities that Zebra outputs
293
    if ($fixamps) { # We need to correct the ampersand entities that Zebra outputs
277
        $xmlrecord =~ s/\&amp;amp;/\&amp;/g;
294
        $xmlrecord =~ s/\&amp;amp;/\&amp;/g;
(-)a/catalogue/detail.pl (-8 / +9 lines)
Lines 119-127 my $marcflavour = C4::Context->preference("marcflavour"); Link Here
119
119
120
{
120
{
121
    # XSLT processing of some stuff
121
    # XSLT processing of some stuff
122
    my $xslfile = C4::Context->preference('XSLTDetailsDisplay') || "default";
123
    my $lang   = C4::Languages::getlanguage();
124
    my $sysxml = C4::XSLT::get_xslt_sysprefs();
125
122
126
    my $searcher = Koha::SearchEngine::Search->new(
123
    my $searcher = Koha::SearchEngine::Search->new(
127
        { index => $Koha::SearchEngine::BIBLIOS_INDEX }
124
        { index => $Koha::SearchEngine::BIBLIOS_INDEX }
Lines 143-153 my $marcflavour = C4::Context->preference("marcflavour"); Link Here
143
140
144
    $template->param(
141
    $template->param(
145
        XSLTDetailsDisplay => '1',
142
        XSLTDetailsDisplay => '1',
146
        XSLTBloc           => XSLTParse4Display(
143
        XSLTBloc => XSLTParse4Display(
147
            $biblionumber, $record, "XSLTDetailsDisplay", 1,
144
            {
148
            undef,         $sysxml, $xslfile,             $lang,
145
                biblionumber   => $biblionumber,
149
            $variables
146
                record         => $record,
150
        )
147
                xsl_syspref    => "XSLTDetailsDisplay",
148
                fix_amps       => 1,
149
                xslt_variables => $variables
150
            }
151
        ),
151
    );
152
    );
152
}
153
}
153
154
(-)a/opac/opac-detail.pl (-14 / +14 lines)
Lines 174-204 my $marcflavour = C4::Context->preference("marcflavour"); Link Here
174
my $ean = GetNormalizedEAN( $record, $marcflavour );
174
my $ean = GetNormalizedEAN( $record, $marcflavour );
175
175
176
{
176
{
177
178
    # XSLT processing of some stuff
179
    my $xslfile = C4::Context->preference('OPACXSLTDetailsDisplay') || "default";
180
    my $lang   = C4::Languages::getlanguage();
181
    my $sysxml = C4::XSLT::get_xslt_sysprefs();
182
183
    my $searcher = Koha::SearchEngine::Search->new(
177
    my $searcher = Koha::SearchEngine::Search->new(
184
        { index => $Koha::SearchEngine::BIBLIOS_INDEX }
178
       { index => $Koha::SearchEngine::BIBLIOS_INDEX }
185
    );
179
    );
186
    my $cleaned_title = $biblio->title;
180
    my $cleaned_title = $biblio->title;
187
    $cleaned_title =~ tr|/||;
181
    $cleaned_title =~ tr|/||;
188
    my $query =
182
    my $query =
189
      ( C4::Context->preference('UseControlNumber') and $record->field('001') )
183
     ( C4::Context->preference('UseControlNumber') and $record->field('001') )
190
      ? 'rcn:'. $record->field('001')->data . ' AND (bib-level:a OR bib-level:b)'
184
     ? 'rcn:'. $record->field('001')->data . ' AND (bib-level:a OR bib-level:b)'
191
      : "Host-item:$cleaned_title";
185
     : "Host-item:$cleaned_title";
192
    my ( $err, $result, $count ) = $searcher->simple_search_compat( $query, 0, 0 );
186
    my ( $err, $result, $count ) = $searcher->simple_search_compat( $query, 0, 0 );
193
187
194
    warn "Warning from simple_search_compat: $err"
188
    warn "Warning from simple_search_compat: $err"
195
        if $err;
189
       if $err;
196
190
197
    my $variables = {
191
    my $variables = {
198
        anonymous_session   => ($borrowernumber) ? 0 : 1,
192
        anonymous_session   => ($borrowernumber) ? 0 : 1,
199
        show_analytics_link => $count > 0 ? 1 : 0
193
        show_analytics_link => $count > 0 ? 1 : 0
200
    };
194
    };
201
195
196
    my $lang   = C4::Languages::getlanguage();
202
    my @plugin_responses = Koha::Plugins->call(
197
    my @plugin_responses = Koha::Plugins->call(
203
        'opac_detail_xslt_variables',
198
        'opac_detail_xslt_variables',
204
        {
199
        {
Lines 214-222 my $ean = GetNormalizedEAN( $record, $marcflavour ); Link Here
214
209
215
    $template->param(
210
    $template->param(
216
        XSLTBloc => XSLTParse4Display(
211
        XSLTBloc => XSLTParse4Display(
217
            $biblionumber, $record, "OPACXSLTDetailsDisplay", 1, undef,
212
            {
218
            $sysxml, $xslfile, $lang, $variables
213
                biblionumber   => $biblionumber,
219
        )
214
                record         => $record,
215
                xsl_syspref    => 'OPACXSLTDetailsDisplay',
216
                fix_amps       => 1,
217
                xslt_variables => $variables
218
            }
219
        ),
220
    );
220
    );
221
}
221
}
222
222
(-)a/opac/opac-shelves.pl (-10 / +7 lines)
Lines 292-302 if ( $op eq 'view' ) { Link Here
292
                $categorycode = $patron ? $patron->categorycode : undef;
292
                $categorycode = $patron ? $patron->categorycode : undef;
293
            }
293
            }
294
294
295
            # Lists display falls back to search results configuration
296
            my $xslfile = C4::Context->preference('OPACXSLTListsDisplay') || "default";
297
            my $lang   = C4::Languages::getlanguage();
298
            my $sysxml = C4::XSLT::get_xslt_sysprefs();
299
300
            my $record_processor = Koha::RecordProcessor->new({ filters => 'ViewPolicy' });
295
            my $record_processor = Koha::RecordProcessor->new({ filters => 'ViewPolicy' });
301
296
302
            my $art_req_itypes;
297
            my $art_req_itypes;
Lines 321-331 if ( $op eq 'view' ) { Link Here
321
                    anonymous_session => ($loggedinuser) ? 0 : 1
316
                    anonymous_session => ($loggedinuser) ? 0 : 1
322
                };
317
                };
323
                $this_item->{XSLTBloc} = XSLTParse4Display(
318
                $this_item->{XSLTBloc} = XSLTParse4Display(
324
                    $biblionumber,          $record,
319
                    {
325
                    "OPACXSLTListsDisplay", 1,
320
                        biblionumber   => $biblionumber,
326
                    undef,                  $sysxml,
321
                        record         => $record,
327
                    $xslfile,               $lang,
322
                        xsl_syspref    => "OPACXSLTListsDisplay",
328
                    $variables
323
                        fix_amps       => 1,
324
                        xslt_variables => $variables
325
                    }
329
                );
326
                );
330
327
331
                my $marcflavour = C4::Context->preference("marcflavour");
328
                my $marcflavour = C4::Context->preference("marcflavour");
(-)a/opac/opac-tags.pl (-9 / +8 lines)
Lines 287-305 if ($loggedinuser) { Link Here
287
        # BZ17530: 'Intelligent' guess if result can be article requested
287
        # BZ17530: 'Intelligent' guess if result can be article requested
288
        $tag->{artreqpossible} = ( $art_req_itypes->{ $tag->{itemtype} // q{} } || $art_req_itypes->{ '*' } ) ? 1 : q{};
288
        $tag->{artreqpossible} = ( $art_req_itypes->{ $tag->{itemtype} // q{} } || $art_req_itypes->{ '*' } ) ? 1 : q{};
289
289
290
        my $xslfile = C4::Context->preference('OPACXSLTResultsDisplay') || "default";
291
        my $lang   = C4::Languages::getlanguage();
292
        my $sysxml = C4::XSLT::get_xslt_sysprefs();
293
294
        my $variables = {
290
        my $variables = {
295
            anonymous_session => ($loggedinuser) ? 0 : 1
291
            anonymous_session => ($loggedinuser) ? 0 : 1
296
        };
292
        };
297
        $tag->{XSLTBloc} = XSLTParse4Display(
293
        $tag->{XSLTBloc} = XSLTParse4Display(
298
            $tag->{biblionumber},     $record,
294
            {
299
            "OPACXSLTResultsDisplay", 1,
295
                biblionumber   => $tag->{biblionumber},
300
            $hidden_items,            $sysxml,
296
                record         => $record,
301
            $xslfile,                 $lang,
297
                xsl_filename   => 'OPACXSLTResultsDisplay',
302
            $variables
298
                fix_amps       => 1,
299
                hidden_items   => $hidden_items,
300
                xslt_variables => $variables
301
            }
303
        );
302
        );
304
303
305
        my $date = $tag->{date_created} || '';
304
        my $date = $tag->{date_created} || '';
(-)a/virtualshelves/shelves.pl (-7 / +8 lines)
Lines 253-270 if ( $op eq 'view' ) { Link Here
253
                }
253
                }
254
            );
254
            );
255
255
256
            my $xslfile = C4::Context->preference('XSLTListsDisplay');
257
            my $lang   = C4::Languages::getlanguage();
258
            my $sysxml = C4::XSLT::get_xslt_sysprefs();
259
260
            my @items;
256
            my @items;
261
            while ( my $content = $contents->next ) {
257
            while ( my $content = $contents->next ) {
262
                my $this_item;
258
                my $this_item;
263
                my $biblionumber = $content->biblionumber;
259
                my $biblionumber = $content->biblionumber;
264
                my $record       = GetMarcBiblio({ biblionumber => $biblionumber });
260
                my $record       = GetMarcBiblio({ biblionumber => $biblionumber });
265
261
266
                $this_item->{XSLTBloc} = XSLTParse4Display( $biblionumber, $record, "XSLTListsDisplay",
262
                $this_item->{XSLTBloc} = XSLTParse4Display(
267
                                                            1, undef, $sysxml, $xslfile, $lang);
263
                    {
264
                        biblionumber => $biblionumber,
265
                        record       => $record,
266
                        xsl_filename => "XSLTListsDisplay",
267
                        fix_amps     => 1,
268
                    }
269
                );
268
270
269
                my $marcflavour = C4::Context->preference("marcflavour");
271
                my $marcflavour = C4::Context->preference("marcflavour");
270
                my $itemtype = Koha::Biblioitems->search({ biblionumber => $content->biblionumber })->next->itemtype;
272
                my $itemtype = Koha::Biblioitems->search({ biblionumber => $content->biblionumber })->next->itemtype;
271
- 

Return to bug 12561