Bugzilla – Attachment 186234 Details for
Bug 38425
Add links to full texts based on identifiers
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 38425: Add external links based on PIDs (UNIMARC)
Bug-38425-Add-external-links-based-on-PIDs-UNIMARC.patch (text/plain), 11.12 KB, created by
Ludovic
on 2025-09-05 15:50:13 UTC
(
hide
)
Description:
Bug 38425: Add external links based on PIDs (UNIMARC)
Filename:
MIME Type:
Creator:
Ludovic
Created:
2025-09-05 15:50:13 UTC
Size:
11.12 KB
patch
obsolete
>From ab94f335aad8ef37ebefac68b5752b8e91eb1062 Mon Sep 17 00:00:00 2001 >From: Alexander Wagner <alexander.wagner@desy.de> >Date: Tue, 6 May 2025 13:45:55 +0000 >Subject: [PATCH] Bug 38425: Add external links based on PIDs (UNIMARC) > >Render some (common) identifiers field UNIMARC 017 as links to external >resources by evaluating `$2` and using the appropriate resolver URL. >Currently implemented values for `$2`: arXiv, doi, inspire, openlibrary, >pmc, pmid. The patch includes adds the class `resource_list` to the >intranet scss to be able to use the identical XSLT code as for the OPAC. > >Test plan: > >1. Open intranet interface and edit any record >2. Add PIDs to your records. For Marc21 use `024 7_` > for UNIMARC use `017 7_` with the following subfield layout: > - $2 doi $a 10.2147/CIA.S157877 > - $2 pmid $a 29942120 > - $2 pmc $a PMC6005330 > - $2 arxiv: $a arxiv:2411.05889 > - $2 inspire $a 2835154 > - $2 openlibrary $a OL27448W > (May be all or any combination. The values of $a would not matter, > the above just gives valid links to the external system in question.) >3. Check intranet detail display of the record: nothing appears >4. Check OPAC detail display of the record: nothing appears >5. Apply the patch >6. Check intranet detail display of the record. It now gives a new line: > External Resource(s): <here links to whatever was added in step 2) > The ids are clickable and lead to the external system >7. Check OPAC detail display of the record: > External Resource(s): <here links to whatever was added in step 2) > The ids are clickable and lead to the external system > >Sponsored-by: Deutsches Elektronen-Synchrotron DESY, Library >Signed-off-by: Ludovic <ludovic.julien@inlibro.com> >--- > .../en/xslt/UNIMARCslim2intranetDetail.xsl | 81 +++++++++++++++++++ > .../en/xslt/UNIMARCslim2OPACDetail.xsl | 81 +++++++++++++++++++ > 2 files changed, 162 insertions(+) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/UNIMARCslim2intranetDetail.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/UNIMARCslim2intranetDetail.xsl >index d92d9cff86b..0ca1f185243 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/xslt/UNIMARCslim2intranetDetail.xsl >+++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/UNIMARCslim2intranetDetail.xsl >@@ -24,6 +24,87 @@ > <xsl:variable name="AuthorLinkSortBy" select="marc:sysprefs/marc:syspref[@name='AuthorLinkSortBy']"/> > <xsl:variable name="AuthorLinkSortOrder" select="marc:sysprefs/marc:syspref[@name='AuthorLinkSortOrder']"/> > >+ <!-- Add links based on persistent identifiers Bug 38425 --> >+ <xsl:if test="marc:datafield[@tag=017]"> >+ <span class="results_summary pid_links"> >+ <span class="label">External resource(s): </span> >+ <ul class="resource_list"> >+ <xsl:for-each select="marc:datafield[@tag=017]/marc:subfield[@code='2']"> >+ <xsl:choose> >+ <xsl:when test=". = 'doi'"> >+ <li> >+ <span class="label">doi:</span> >+ <xsl:for-each select="../marc:subfield[@code='a']"> >+ <a> >+ <xsl:attribute name="href">https://doi.org/<xsl:value-of select="str:encode-uri(current(), true())"/></xsl:attribute> >+ <xsl:value-of select="current()" /> >+ </a> >+ </xsl:for-each> >+ </li> >+ </xsl:when> >+ <xsl:when test=". = 'pmid'"> >+ <li> >+ <span class="label">PMID: </span> >+ <xsl:for-each select="../marc:subfield[@code='a']"> >+ <a> >+ <xsl:attribute name="href">https://pubmed.ncbi.nlm.nih.gov/<xsl:value-of select="str:encode-uri(current(), true())"/></xsl:attribute> >+ <xsl:value-of select="current()" /> >+ </a> >+ </xsl:for-each> >+ </li> >+ </xsl:when> >+ <xsl:when test=". = 'pmc'"> >+ <li> >+ <span class="label">PMCID: </span> >+ <xsl:for-each select="../marc:subfield[@code='a']"> >+ <a> >+ <xsl:attribute name="href">https://pmc.ncbi.nlm.nih.gov/articles/<xsl:value-of select="str:encode-uri(current(), true())"/></xsl:attribute> >+ <xsl:value-of select="current()" /> >+ </a> >+ </xsl:for-each> >+ </li> >+ </xsl:when> >+ <xsl:when test=". = 'arxiv'"> >+ <li> >+ <!-- arXiv-ids are `arxiv:1234.5678` is redundant >+ <span class="label">arXiv:</span> >+ --> >+ <xsl:for-each select="../marc:subfield[@code='a']"> >+ <a> >+ <xsl:attribute name="href">https://arxiv.org/abs/<xsl:value-of select="str:encode-uri(current(), true())"/></xsl:attribute> >+ <xsl:value-of select="current()" /> >+ </a> >+ </xsl:for-each> >+ </li> >+ </xsl:when> >+ <xsl:when test=". = 'inspire'"> >+ <li> >+ <span class="label">inspire: </span> >+ <xsl:for-each select="../marc:subfield[@code='a']"> >+ <a> >+ <xsl:attribute name="href">https://inspirehep.net/literature/<xsl:value-of select="str:encode-uri(current(), true())"/></xsl:attribute> >+ <xsl:value-of select="current()" /> >+ </a> >+ </xsl:for-each> >+ </li> >+ </xsl:when> >+ <xsl:when test=". = 'openlibrary'"> >+ <li> >+ <span class="label">OpenLibrary: </span> >+ <xsl:for-each select="../marc:subfield[@code='a']"> >+ <a> >+ <xsl:attribute name="href">https://openlibrary.org/works/<xsl:value-of select="str:encode-uri(current(), true())"/></xsl:attribute> >+ <xsl:value-of select="current()" /> >+ </a> >+ </xsl:for-each> >+ </li> >+ </xsl:when> >+ </xsl:choose> >+ </xsl:for-each> >+ </ul> >+ </span> >+ </xsl:if> >+ > <xsl:if test="marc:datafield[@tag=200]"> > <xsl:for-each select="marc:datafield[@tag=200]"> > <h1> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl >index 548e39aad1d..55abf2adc62 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl >@@ -26,6 +26,87 @@ > <xsl:variable name="AuthorLinkSortBy" select="marc:sysprefs/marc:syspref[@name='AuthorLinkSortBy']"/> > <xsl:variable name="AuthorLinkSortOrder" select="marc:sysprefs/marc:syspref[@name='AuthorLinkSortOrder']"/> > >+ <!-- Add links based on persistent identifiers Bug 38425 --> >+ <xsl:if test="marc:datafield[@tag=017]"> >+ <span class="results_summary pid_links"> >+ <span class="label">External resource(s): </span> >+ <ul class="resource_list"> >+ <xsl:for-each select="marc:datafield[@tag=017]/marc:subfield[@code='2']"> >+ <xsl:choose> >+ <xsl:when test=". = 'doi'"> >+ <li> >+ <span class="label">doi:</span> >+ <xsl:for-each select="../marc:subfield[@code='a']"> >+ <a> >+ <xsl:attribute name="href">https://doi.org/<xsl:value-of select="str:encode-uri(current(), true())"/></xsl:attribute> >+ <xsl:value-of select="current()" /> >+ </a> >+ </xsl:for-each> >+ </li> >+ </xsl:when> >+ <xsl:when test=". = 'pmid'"> >+ <li> >+ <span class="label">PMID: </span> >+ <xsl:for-each select="../marc:subfield[@code='a']"> >+ <a> >+ <xsl:attribute name="href">https://pubmed.ncbi.nlm.nih.gov/<xsl:value-of select="str:encode-uri(current(), true())"/></xsl:attribute> >+ <xsl:value-of select="current()" /> >+ </a> >+ </xsl:for-each> >+ </li> >+ </xsl:when> >+ <xsl:when test=". = 'pmc'"> >+ <li> >+ <span class="label">PMCID: </span> >+ <xsl:for-each select="../marc:subfield[@code='a']"> >+ <a> >+ <xsl:attribute name="href">https://pmc.ncbi.nlm.nih.gov/articles/<xsl:value-of select="str:encode-uri(current(), true())"/></xsl:attribute> >+ <xsl:value-of select="current()" /> >+ </a> >+ </xsl:for-each> >+ </li> >+ </xsl:when> >+ <xsl:when test=". = 'arxiv'"> >+ <li> >+ <!-- arXiv-ids are `arxiv:1234.5678` is redundant >+ <span class="label">arXiv:</span> >+ --> >+ <xsl:for-each select="../marc:subfield[@code='a']"> >+ <a> >+ <xsl:attribute name="href">https://arxiv.org/abs/<xsl:value-of select="str:encode-uri(current(), true())"/></xsl:attribute> >+ <xsl:value-of select="current()" /> >+ </a> >+ </xsl:for-each> >+ </li> >+ </xsl:when> >+ <xsl:when test=". = 'inspire'"> >+ <li> >+ <span class="label">inspire: </span> >+ <xsl:for-each select="../marc:subfield[@code='a']"> >+ <a> >+ <xsl:attribute name="href">https://inspirehep.net/literature/<xsl:value-of select="str:encode-uri(current(), true())"/></xsl:attribute> >+ <xsl:value-of select="current()" /> >+ </a> >+ </xsl:for-each> >+ </li> >+ </xsl:when> >+ <xsl:when test=". = 'openlibrary'"> >+ <li> >+ <span class="label">OpenLibrary: </span> >+ <xsl:for-each select="../marc:subfield[@code='a']"> >+ <a> >+ <xsl:attribute name="href">https://openlibrary.org/works/<xsl:value-of select="str:encode-uri(current(), true())"/></xsl:attribute> >+ <xsl:value-of select="current()" /> >+ </a> >+ </xsl:for-each> >+ </li> >+ </xsl:when> >+ </xsl:choose> >+ </xsl:for-each> >+ </ul> >+ </span> >+ </xsl:if> >+ > <xsl:if test="marc:datafield[@tag=200]"> > <xsl:for-each select="marc:datafield[@tag=200]"> > <h2 class="title"> >-- >2.43.0
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 38425
:
174425
|
181900
|
181974
|
181975
| 186234