Bugzilla – Attachment 165198 Details for
Bug 16567
RSS feeds show issues in W3C validator and can't be read by some aggregators (Chimpfeedr, feedbucket)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 16567: Correct RSS feed validity errors
Bug-16567-Correct-RSS-feed-validity-errors.patch (text/plain), 29.82 KB, created by
Brendan Lawlor
on 2024-04-19 13:38:17 UTC
(
hide
)
Description:
Bug 16567: Correct RSS feed validity errors
Filename:
MIME Type:
Creator:
Brendan Lawlor
Created:
2024-04-19 13:38:17 UTC
Size:
29.82 KB
patch
obsolete
>From 5c971b59239df4be792089cad04b212c38ae0b51 Mon Sep 17 00:00:00 2001 >From: Owen Leonard <oleonard@myacpl.org> >Date: Mon, 15 Apr 2024 14:21:03 +0000 >Subject: [PATCH] Bug 16567: Correct RSS feed validity errors > >This patch corrects a few markup errors in the XML feeds to make the >feeds validate correctly. The template has been largely re-indented to >improve readability and eliminate tab characters. > >To test, apply the patch and perform a search in the OPAC. > >- Open the RSS link appearing after the "Your search returned..." > header. >- Depending on how your browser handles XML documents you may need to > view source on the page to see the actual XML markup. >- Copy the source and paste it into the W3C feed validator: > https://validator.w3.org/feed/#validate_by_input >- The feed should be found to be valid. > - In my tests you'll get a "Recommendation" about "Self reference > doesn't match document location." I think this recommendation > doesn't apply. > >Perform the same test with the other two available formats: Atom and >OpenSearch: > >- Change the end of the RSS feed url from '&format=rss' to > '&format=atom' and validate the result. > - The same "self reference" recommendation will come up, and again I > think we can ignore it. > - There is another recommendation about "Two entries with the same > value for atom:updated." The updated time is set to the same time > as the feed itself (the time when the feed was generated. Maybe > this is incorrect. If so we need a follow-up that exposes a > different value to the template. biblio.datecreated maybe? >- Change the end of the feed url from '&format=atom' to > '&format=OpenSearchDescription' and validate that result. > >Signed-off-by: Brendan Lawlor <blawlor@clamsnet.org> >--- > .../bootstrap/en/modules/opac-opensearch.tt | 350 ++++++++++++------ > 1 file changed, 237 insertions(+), 113 deletions(-) > >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-opensearch.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-opensearch.tt >index 1d45fb5b81..14e7889834 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-opensearch.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-opensearch.tt >@@ -1,125 +1,249 @@ >-<?xml version='1.0' encoding='utf-8' ?> >+[%- FILTER collapse -%] > [%- USE raw -%] > [%- USE Koha -%] > [%- PROCESS 'html_helpers.inc' -%] >-[% IF ( opensearchdescription ) %] >- <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"> >- <ShortName>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Library catalog[% END %]</ShortName> >- <Description>Search the [% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Koha library[% END %] catalog</Description> >- <InputEncoding>UTF-8</InputEncoding> >- <Image width="16" height="16" type="image/x-icon"> >- [% IF ( Koha.Preference('OpacFavicon') ) %] >- [% Koha.Preference('OpacFavicon') | url %] >- [% ELSE %] >- [% Koha.Preference('OPACBaseURL') | url %][% interface | url %]/[% theme | url %]/images/favicon.ico >- [% END %] >- </Image> >- <Url method="get" type="text/html" template="[% Koha.Preference('OPACBaseURL') | url %]/cgi-bin/koha/opac-search.pl?q={searchTerms}" /> >- <Query role="example" searchTerms="cat" /> >- </OpenSearchDescription> >-[% ELSE %] >+<?xml version="1.0" encoding="utf-8" ?> > >-[% IF ( rss ) %] >-<rss version="2.0" >- xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" >- xmlns:dc="http://purl.org/dc/elements/1.1/" >- xmlns:atom="http://www.w3.org/2005/Atom"> >- <channel> >- <title><![CDATA[[% LibraryName | html %] Search [% IF ( query_desc ) %]for '[% query_desc | html %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc | html %]'[% END %]]]></title> >- <link>[% OPACBaseURL | html %]/cgi-bin/koha/opac-search.pl?[% query_cgi | html %][% limit_cgi | html %]&format=rss</link> >- <atom:link rel="self" type="application/rss+xml" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | html %][% limit_cgi | html %]&sort_by=[% sort_by | uri %]&format=atom"/> >- <description><![CDATA[ Search results [% IF ( query_desc ) %]for '[% query_desc | html %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc | html %]'[% END %] at [% LibraryName | html %]]]></description> >- <opensearch:totalResults>[% total | html %]</opensearch:totalResults> >- <opensearch:startIndex>[% offset | html %]</opensearch:startIndex> >- [% IF ( results_per_page ) %] >- <opensearch:itemsPerPage>[% results_per_page | html %]</opensearch:itemsPerPage> >- [% ELSE %] >- <opensearch:itemsPerPage>20</opensearch:itemsPerPage> >- [% END %] >- [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %] >- <atom:link rel="search" type="application/opensearchdescription+xml" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% SEARCH_RESULT.query_cgi | $raw %][% SEARCH_RESULT.limit_cgi | $raw %]&sort_by=[% SEARCH_RESULT.sort_by |uri %]&format=opensearchdescription"/> >- <opensearch:Query role="request" searchTerms="[% SEARCH_RESULT.query_desc |uri %][% SEARCH_RESULT.limit_desc |uri %]" startPage="[% SEARCH_RESULT.page | html %]" /> >- <item> >- <title>[% INCLUDE 'biblio-title-head.inc' biblio=SEARCH_RESULT %]</title> >- <dc:identifier>ISBN:[% SEARCH_RESULT.isbn | html %]</dc:identifier> >- <link>[% OPACBaseURL | url %][% PROCESS biblio_a_href biblionumber => SEARCH_RESULT.biblionumber %]</link> >- <description><![CDATA[ >-[% IF ( OPACAmazonCoverImages ) %][% IF ( SEARCH_RESULT.normalized_isbn ) %]<img src="https://images-na.ssl-images-amazon.com/images/P/[% SEARCH_RESULT.normalized_isbn | uri %].01.TZZZZZZZ.jpg" alt="" />[% END %][% END %] >-[% IF ( SyndeticsEnabled ) %][% IF ( SyndeticsCoverImages ) %][% IF ( SEARCH_RESULT.content_identifier_exists ) %]<img src="http://www.syndetics.com/index.aspx?isbn=[% SEARCH_RESULT.normalized_isbn | uri %]/SC.GIF&client=[% SEARCH_RESULT.SyndeticsClientCode | uri %]&type=xw10[% IF ( SEARCH_RESULT.normalized_upc ) %]&upc=[% SEARCH_RESULT.normalized_upc | uri %][% END %][% IF ( SEARCH_RESULT.normalized_oclc ) %]&oclc=[% SEARCH_RESULT.normalized_oclc | uri %][% END %]" alt="" /> >+ [% IF ( opensearchdescription ) %] >+ <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"> >+ <ShortName> >+ Catalog search >+ </ShortName> >+ <Description> >+ [% IF ( LibraryNameTitle ) %] >+ Search the [% LibraryNameTitle | html %] catalog >+ [% ELSE %] >+ Search the Koha library catalog >+ [% END %] >+ </Description> >+ <InputEncoding>UTF-8</InputEncoding> >+ <Image width="16" height="16" type="image/x-icon"> >+ [% IF ( Koha.Preference('OpacFavicon') ) %] >+ [% Koha.Preference('OpacFavicon') | url %] >+ [% ELSE %] >+ [% Koha.Preference('OPACBaseURL') | url %][% interface | url %]/[% theme | url %]/images/favicon.ico >+ [% END %] >+ </Image> >+ <Url type="text/html" template="[% Koha.Preference('OPACBaseURL') | url %]/cgi-bin/koha/opac-search.pl?q={searchTerms}" /> >+ <Query role="example" searchTerms="cat" /> >+ </OpenSearchDescription> >+ [% ELSE %] > >-[% ELSE %] >-<img src="http://www.syndetics.com/index.aspx?isbn=[% SEARCH_RESULT.normalized_isbn | uri %]/SC.GIF&client=[% SyndeticsClientCode | uri %]&type=xw10&upc=[% SEARCH_RESULT.normalized_upc | uri %]&oclc=[% SEARCH_RESULT.normalized_oclc | uri %]" alt="" /> >-[% END %][% END %][% END %] >+ [% IF ( rss ) %] >+ <rss version="2.0" >+ xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" >+ xmlns:dc="http://purl.org/dc/elements/1.1/" >+ xmlns:atom="http://www.w3.org/2005/Atom"> >+ <channel> >+ <title> >+ <![CDATA[[% LibraryName | html %] Search [% IF ( query_desc ) %]for '[% query_desc | html %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc | html %]'[% END %]]]> >+ </title> >+ <link> >+ [% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | replace('&', '&') | $raw %][% limit_cgi | $raw %]&sort_by=[% sort_by | uri %]&format=rss >+ </link> >+ <atom:link rel="self" type="application/rss+xml" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | replace('&', '&') | $raw %][% limit_cgi | $raw %]&sort_by=[% sort_by | uri %]&format=rss"/> >+ <description> >+ <![CDATA[ Search results [% IF ( query_desc ) %]for '[% query_desc | html %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc | html %]'[% END %] at [% LibraryName | html %]]]> >+ </description> >+ <opensearch:totalResults>[% total | html %]</opensearch:totalResults> >+ <opensearch:startIndex>[% offset | html %]</opensearch:startIndex> >+ [% IF ( results_per_page ) %] >+ <opensearch:itemsPerPage>[% results_per_page | html %]</opensearch:itemsPerPage> >+ [% ELSE %] >+ <opensearch:itemsPerPage>20</opensearch:itemsPerPage> >+ [% END %] >+ <atom:link rel="search" type="application/opensearchdescription+xml" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | replace('&', '&') | $raw %][% limit_cgi | $raw %]&sort_by=[% sort_by |uri %]&format=opensearchdescription"/> >+ <opensearch:Query role="request" searchTerms="[% query_cgi | uri %][% limit_desc | uri %]" startPage="[% page | html %]" /> >+ [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %] >+ <item> >+ <title>[% INCLUDE 'biblio-title-head.inc' biblio=SEARCH_RESULT %]</title> >+ <dc:identifier>ISBN:[% SEARCH_RESULT.isbn | html %]</dc:identifier> >+ <link>[% OPACBaseURL | url %][% PROCESS biblio_a_href biblionumber => SEARCH_RESULT.biblionumber %]</link> >+ <description> >+ [% IF ( OPACAmazonCoverImages ) %] >+ [% IF ( SEARCH_RESULT.normalized_isbn ) %] >+ <![CDATA[ >+ <img src="https://images-na.ssl-images-amazon.com/images/P/[% SEARCH_RESULT.normalized_isbn | uri %].01.TZZZZZZZ.jpg" alt="" /> >+ ]]> >+ [% END %] >+ [% END %] >+ [% IF ( SyndeticsEnabled ) %] >+ [% IF ( SyndeticsCoverImages ) %] >+ [% IF ( SEARCH_RESULT.content_identifier_exists ) %] >+ <![CDATA[ >+ <img src="http://www.syndetics.com/index.aspx?isbn=[% SEARCH_RESULT.normalized_isbn | uri %]/SC.GIF&client=[% SEARCH_RESULT.SyndeticsClientCode | uri %]&type=xw10[% IF ( SEARCH_RESULT.normalized_upc ) %]&upc=[% SEARCH_RESULT.normalized_upc | uri %][% END %][% IF ( SEARCH_RESULT.normalized_oclc ) %]&oclc=[% SEARCH_RESULT.normalized_oclc | uri %][% END %]" alt="" /> >+ ]]> >+ [% ELSE %] >+ <![CDATA[ >+ <img src="http://www.syndetics.com/index.aspx?isbn=[% SEARCH_RESULT.normalized_isbn | uri %]/SC.GIF&client=[% SyndeticsClientCode | uri %]&type=xw10&upc=[% SEARCH_RESULT.normalized_upc | uri %]&oclc=[% SEARCH_RESULT.normalized_oclc | uri %]" alt="" /> >+ ]]> >+ [% END %] >+ [% END %] >+ [% END %] >+ [% bt_id = ( SEARCH_RESULT.normalized_upc || SEARCH_RESULT.normalized_isbn ) %] >+ [% IF ( BakerTaylorEnabled ) %] >+ [% IF bt_id %] >+ <![CDATA[ >+ <a href="https://[% BakerTaylorBookstoreURL |url %][% bt_id | uri %]"><img alt="See Baker & Taylor" src="[% BakerTaylorImageURL |url %][% bt_id | uri %]" /></a> >+ ]]> >+ [% END %] >+ [% END %] > >-[% bt_id = ( SEARCH_RESULT.normalized_upc || SEARCH_RESULT.normalized_isbn ) %] >-[% IF ( BakerTaylorEnabled ) %][% IF bt_id %]<a href="https://[% BakerTaylorBookstoreURL |url %][% bt_id | uri %]"><img alt="See Baker & Taylor" src="[% BakerTaylorImageURL |url %][% bt_id | uri %]" /></a>[% END %][% END %] >+ [% IF Koha.Preference('OPACCustomCoverImages') AND Koha.Preference('CustomCoverImagesURL') %] >+ [% SET custom_cover_image_url = SEARCH_RESULT.biblio_object.custom_cover_image_url %] >+ [% IF custom_cover_image_url %] >+ <![CDATA[ >+ <img alt="Cover image" src="[% custom_cover_image_url | url %]" /> >+ ]]> >+ [% END %] >+ [% END %] >+ <![CDATA[ >+ <p> >+ [% IF ( SEARCH_RESULT.author ) %] >+ By [% SEARCH_RESULT.author | html %].<br /> >+ [% END %] >+ [% IF ( SEARCH_RESULT.place ) %] >+ [% SEARCH_RESULT.place | html %] >+ [% END %] >+ [% IF ( SEARCH_RESULT.publishercode ) %] >+ [% SEARCH_RESULT.publishercode | html %] >+ [% END %] >+ [% IF ( SEARCH_RESULT.publicationyear ) %] >+ [% SEARCH_RESULT.publicationyear | html %] >+ [% ELSE %] >+ [% IF ( SEARCH_RESULT.copyrightdate ) %] >+ [% SEARCH_RESULT.copyrightdate | html %] >+ [% END %] >+ [% END %] >+ [% IF ( SEARCH_RESULT.pages ) %] >+ .<br /> [% SEARCH_RESULT.pages | html %] >+ [% END %] >+ [% IF ( SEARCH_RESULT.notes ) %] >+ , [% SEARCH_RESULT.notes | html %] >+ [% END %] >+ [% IF ( SEARCH_RESULT.size ) %] >+ [% SEARCH_RESULT.size | html %].<br /> >+ [% END %] >+ [% IF ( SEARCH_RESULT.isbn ) %] >+ [% SEARCH_RESULT.isbn | html %] >+ [% END %] >+ </p> >+ ]]> >+ [% IF Koha.Preference( 'OPACHoldRequests' ) == 1 %] >+ <![CDATA[ >+ <p> >+ <a href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-reserve.pl?biblionumber=[% SEARCH_RESULT.biblionumber | uri %]">Place hold on <em>[% SEARCH_RESULT.title | html %]</em></a> >+ </p> >+ ]]> >+ [% END %] >+ </description> >+ <guid>[% OPACBaseURL | url %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber | uri %]</guid> >+ </item> >+ [% END %] >+ </channel> >+ </rss> >+ [% END # /IF rss %] > >-[% IF Koha.Preference('OPACCustomCoverImages') AND Koha.Preference('CustomCoverImagesURL') %] >- [% SET custom_cover_image_url = SEARCH_RESULT.biblio_object.custom_cover_image_url %] >- [% IF custom_cover_image_url %] >- <img alt="Cover image" src="[% custom_cover_image_url | url %]" /> >- [% END %] >-[% END %] >+ [% IF ( atom ) %] >+ <feed xmlns="http://www.w3.org/2005/Atom" >+ xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"> >+ <id>[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | html %][% limit_cgi | html %]&format=atom</id> >+ <title>[% LibraryName | html %] Search [% IF ( query_desc ) %]for '[% query_desc | html %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc | html %]'[% END %]</title> >+ <link href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | replace('&', '&') | $raw %][% limit_cgi | $raw %]&format=atom"/> >+ <updated>[% timestamp | html %]</updated> >+ <author> >+ <name>[% LibraryName | html %]</name> >+ </author> >+ <opensearch:totalResults>[% total | html %]</opensearch:totalResults> >+ <opensearch:startIndex>[% page | html %]</opensearch:startIndex> >+ [% IF ( results_per_page ) %] >+ <opensearch:itemsPerPage>[% results_per_page | html %]</opensearch:itemsPerPage> >+ [% ELSE %] >+ <opensearch:itemsPerPage>20</opensearch:itemsPerPage> >+ [% END %] >+ <opensearch:Query role="request" searchTerms="[% query_desc | uri %] [% limit_desc | uri %]" startPage="[% page | html %]" /> >+ <link rel="alternate" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | replace('&', '&') | $raw %][% limit_cgi | $raw %]pw=[% page | uri %]&format=atom" type="application/atom+xml"/> >+ <link rel="self" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | replace('&', '&') | $raw %][% limit_cgi | $raw %]&format=atom" type="application/atom+xml"/> >+ <link rel="first" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | replace('&', '&') | $raw %][% limit_cgi | $raw %]pw=1&format=atom" type="application/atom+xml"/> >+ <link rel="previous" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | replace('&', '&') | $raw %][% limit_cgi | $raw %]pw=2&format=atom" type="application/atom+xml"/> >+ <link rel="next" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | replace('&', '&') | $raw %][% limit_cgi | $raw %]pw=4&format=atom" type="application/atom+xml"/> >+ <link rel="last" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | replace('&', '&') | $raw %][% SEARCH_RESULT.limit_cgi | $raw %]pw=42299&format=atom" type="application/atom+xml"/> >+ <link rel="search" type="application/opensearchdescription+xml" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?format=opensearchdescription"/> > >- <p>[% IF ( SEARCH_RESULT.author ) %]By [% SEARCH_RESULT.author | html %]. [% END %] >- [% IF ( SEARCH_RESULT.place ) %][% SEARCH_RESULT.place | html %] [% END %][% IF ( SEARCH_RESULT.publishercode ) %][% SEARCH_RESULT.publishercode | html %][% END %][% IF ( SEARCH_RESULT.publicationyear ) %] [% SEARCH_RESULT.publicationyear | html %] >- [% ELSE %][% IF ( SEARCH_RESULT.copyrightdate ) %] [% SEARCH_RESULT.copyrightdate | html %][% END %][% END %] >- [% IF ( SEARCH_RESULT.pages ) %]. [% SEARCH_RESULT.pages | html %][% END %] >- [% IF ( SEARCH_RESULT.notes ) %], [% SEARCH_RESULT.notes | html %][% END %] >- [% IF ( SEARCH_RESULT.size ) %] [% SEARCH_RESULT.size | html %]. [% END %] >- [% IF ( SEARCH_RESULT.isbn ) %] [% SEARCH_RESULT.isbn | html %][% END %] >- </p> >-[% IF Koha.Preference( 'OPACHoldRequests' ) == 1 %] >-<p><a href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-reserve.pl?biblionumber=[% SEARCH_RESULT.biblionumber | uri %]">Place hold on <em>[% SEARCH_RESULT.title | html %]</em></a></p> >-[% END %] >- ]]></description> >- <guid>[% OPACBaseURL | url %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber | uri %]</guid> >- </item> >- [% END %] >- </channel> >-</rss> >-[% END %] >+ [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %] >+ <entry> >+ <title>[% SEARCH_RESULT.title | html %] [% FOREACH subtitl IN SEARCH_RESULT.subtitle %], [% subtitl.subfield | html %][% END %]</title> >+ <link href="[% OPACBaseURL | url %][% PROCESS biblio_a_href biblionumber => SEARCH_RESULT.biblionumber %]" /> >+ <updated>[% timestamp | html %]</updated> >+ <summary type="xhtml"> >+ <div xmlns="http://www.w3.org/1999/xhtml"> >+ [% IF ( OPACAmazonCoverImages ) %] >+ [% IF ( SEARCH_RESULT.normalized_isbn ) %] >+ <img src="https://images-na.ssl-images-amazon.com/images/P/[% SEARCH_RESULT.normalized_isbn | uri %].01.TZZZZZZZ.jpg" alt="" /> >+ [% END %] >+ [% END %] > >-[% IF ( atom ) %] >-<feed xmlns="http://www.w3.org/2005/Atom" >- xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"> >- <id>[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | html %][% limit_cgi | html %]&format=atom</id> >- <title>[% LibraryName | html %] Search [% IF ( query_desc ) %]for '[% query_desc | html %]'[% END %][% IF ( limit_desc ) %] with limit(s): '[% limit_desc | html %]'[% END %]</title> >- <link href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | html %][% limit_cgi | html %]&format=rss"/> >- <updated>[% timestamp | html %]</updated> >- <author> >- <name>[% LibraryName | html %]</name> >- </author> >- <!-- <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id> --> >- <opensearch:totalResults>[% total | html %]</opensearch:totalResults> >- <opensearch:startIndex>[% page | html %]</opensearch:startIndex> >- [% IF ( results_per_page ) %] >- <opensearch:itemsPerPage>[% results_per_page | html %]</opensearch:itemsPerPage> >- [% ELSE %] >- <opensearch:itemsPerPage>20</opensearch:itemsPerPage> >- [% END %] >- <opensearch:Query role="request" searchTerms="[% SEARCH_RESULT.query_desc | uri %] [% SEARCH_RESULT.limit_desc | uri %]" startPage="[% page | html %]" /> >- <link rel="alternate" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% SEARCH_RESULT.query_cgi | $raw %][% SEARCH_RESULT.limit_cgi | $raw %]pw=[% page | uri %]&format=atom" type="application/atom+xml"/> >- <link rel="self" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% SEARCH_RESULT.query_cgi | $raw %][% SEARCH_RESULT.limit_cgi | $raw %]&format=atom" type="application/atom+xml"/> >- <link rel="first" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% SEARCH_RESULT.query_cgi | $raw %][% SEARCH_RESULT.limit_cgi | $raw %]pw=1&format=atom" type="application/atom+xml"/> >- <link rel="previous" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% SEARCH_RESULT.query_cgi | $raw %][% SEARCH_RESULT.limit_cgi | $raw %]pw=2&format=atom" type="application/atom+xml"/> >- <link rel="next" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% SEARCH_RESULT.query_cgi | $raw %][% SEARCH_RESULT.limit_cgi | $raw %]pw=4&format=atom" type="application/atom+xml"/> >- <link rel="last" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% SEARCH_RESULT.query_cgi | $raw %][% SEARCH_RESULT.limit_cgi | $raw %]pw=42299&format=atom" type="application/atom+xml"/> >- <link rel="search" type="application/opensearchdescription+xml" href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?format=opensearchdescription"/> >+ [% IF ( SyndeticsEnabled ) %] >+ [% IF ( SyndeticsCoverImages ) %] >+ [% IF ( SEARCH_RESULT.content_identifier_exists ) %] >+ <img src="http://www.syndetics.com/index.aspx?isbn=[% SEARCH_RESULT.normalized_isbn | uri %]/SC.GIF&client=[% SEARCH_RESULT.SyndeticsClientCode | uri %]&type=xw10[% IF ( SEARCH_RESULT.normalized_upc ) %]&upc=[% SEARCH_RESULT.normalized_upc | uri %][% END %][% IF ( SEARCH_RESULT.normalized_oclc ) %]&oclc=[% SEARCH_RESULT.normalized_oclc | uri %][% END %]" alt="" /> >+ [% ELSE %] >+ <img src="http://www.syndetics.com/index.aspx?isbn=[% SEARCH_RESULT.normalized_isbn | uri %]/SC.GIF&client=[% SyndeticsClientCode | uri %]&type=xw10&upc=[% SEARCH_RESULT.normalized_upc | uri %]&oclc=[% SEARCH_RESULT.normalized_oclc | uri %]" alt="" /> >+ [% END %] >+ [% END %] >+ [% END %] >+ [% bt_id = ( SEARCH_RESULT.normalized_upc || SEARCH_RESULT.normalized_isbn ) %] >+ [% IF ( BakerTaylorEnabled ) %] >+ [% IF bt_id %] >+ <a href="https://[% BakerTaylorBookstoreURL |url %][% bt_id | uri %]"><img alt="See Baker & Taylor" src="[% BakerTaylorImageURL |url %][% bt_id | uri %]" /></a> >+ [% END %] >+ [% END %] > >- [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %] >- <entry> >- <title>[% SEARCH_RESULT.title | html %] [% FOREACH subtitl IN SEARCH_RESULT.subtitle %], [% subtitl.subfield | html %][% END %]</title> >- <link>[% OPACBaseURL | url %][% PROCESS biblio_a_href biblionumber => SEARCH_RESULT.biblionumber %]</link> >- <!-- <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> --> >- <updated>[% SEARCH_RESULT.timestamp | html %]</updated> >- <id>[% OPACBaseURL | html %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber | html %]</id> >- <content type="text"> >+ [% IF Koha.Preference('OPACCustomCoverImages') AND Koha.Preference('CustomCoverImagesURL') %] >+ [% SET custom_cover_image_url = SEARCH_RESULT.biblio_object.custom_cover_image_url %] >+ [% IF custom_cover_image_url %] >+ <img alt="Cover image" src="[% custom_cover_image_url | url %]" /> >+ [% END %] >+ [% END %] > >- </content> >- </entry> >- [% END %] >- </feed> >-[% END %] >+ [% IF ( SEARCH_RESULT.author ) %] >+ By [% SEARCH_RESULT.author | html %].<br /> >+ [% END %] >+ [% IF ( SEARCH_RESULT.place ) %] >+ [% SEARCH_RESULT.place | html %] >+ [% END %] >+ [% IF ( SEARCH_RESULT.publishercode ) %] >+ [% SEARCH_RESULT.publishercode | html %] >+ [% END %] >+ [% IF ( SEARCH_RESULT.publicationyear ) %] >+ [% SEARCH_RESULT.publicationyear | html %] >+ [% ELSE %] >+ [% IF ( SEARCH_RESULT.copyrightdate ) %] >+ [% SEARCH_RESULT.copyrightdate | html %] >+ [% END %] >+ [% END %] >+ [% IF ( SEARCH_RESULT.pages ) %] >+ .<br /> [% SEARCH_RESULT.pages | html %] >+ [% END %] >+ [% IF ( SEARCH_RESULT.notes ) %] >+ , [% SEARCH_RESULT.notes | html %] >+ [% END %] >+ [% IF ( SEARCH_RESULT.size ) %] >+ [% SEARCH_RESULT.size | html %].<br /> >+ [% END %] >+ [% IF ( SEARCH_RESULT.isbn ) %] >+ [% SEARCH_RESULT.isbn | html %] >+ [% END %] > >-[% END %] >+ [% IF Koha.Preference( 'OPACHoldRequests' ) == 1 %] >+ <a href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-reserve.pl?biblionumber=[% SEARCH_RESULT.biblionumber | uri %]">Place hold on [% SEARCH_RESULT.title | html %]</a> >+ [% END %] >+ </div> >+ </summary> >+ <id>[% OPACBaseURL | html %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber | html %]</id> >+ </entry> >+ [% END %] >+ </feed> >+ [% END # /IF atom %] >+ [% END # /IF opensearchdescription %] >+[% END # /FILTER %] >-- >2.39.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 16567
:
164891
|
165198
|
165523