[VIVO-1415] Add publication claiming from PubMed and CrossRef (#129)
* Claiming interface for DOI and PMID * Allow http://doi.org urls in the claim process * Make button i18n compliant * Check Editor already claimed, error for no citation, PUMCIDs fixed * Fixed gnarly DOI containing semi-colon (removed semi-colon as separator), match more DOI formats internally, improve AUTH restrictions * Add Wilma themes * Add permissions to allow proxy editors * Update DOI resolver URI for content negotiation * CSS changes to prevent layout problems in admin pages * Add selectable list of publication types on import Resolves to https://jira.duraspace.org/browse/VIVO-1415
This commit is contained in:
parent
0a08c2890d
commit
f597b7ee42
31 changed files with 4197 additions and 9 deletions
|
@ -810,3 +810,55 @@ role_in_presentation_capitalized=Role in Presentation
|
|||
advisee_capitalized_first_name=First Name
|
||||
advisee_capitalized_lastname=Last Name
|
||||
|
||||
# Messages for creating and linking resources (publications)
|
||||
create_and_link_enter=Enter {0}:
|
||||
create_and_link_claim_for=Claiming works for<br />{0}
|
||||
create_and_link_confirm_works=Confirm your work(s)
|
||||
create_and_link_confirm_works_intro=Please check that these are the work(s) that you wish to claim, and indicate your relationship with them.
|
||||
create_and_link_authors=Authors
|
||||
create_and_link_authors_desc=If you are an author of a work, please select your name in the author list.<br />Retrieved metadata may be incomplete. If you can not see your name listed, select "Unlisted Author".
|
||||
create_and_link_editors=Editors
|
||||
create_and_link_editors_desc=If you edited the work, please select "Editor".
|
||||
create_and_link_not_mine_desc=If you do not wish to claim a work, select "This is not my work".
|
||||
create_and_link_already_claimed=You have already claimed this work.
|
||||
create_and_link_unlisted_author=Unlisted Author
|
||||
create_and_link_editor=Editor
|
||||
create_and_link_not_mine=This is not my work
|
||||
create_and_link_remaining=There are {0} ids remaining
|
||||
create_and_link_thank_you=Thank you
|
||||
create_and_link_finished=There are no more works left to claim.<br />You may enter more IDs below, or view your profile.
|
||||
create_and_link_go_profile=Go to profile
|
||||
create_and_link_enter_dois_intro=You may enter one or more DOIs to match, and can be entered either as an ID or URL:<br /><br />e.g.
|
||||
create_and_link_enter_dois_supported=Currently, DOIs issued by Crossref, DataCite and mEDRA are supported.<br />Each DOI should be separated by a comma or new line.
|
||||
create_and_link_enter_pmid_intro=You may enter one or more PubMed IDs to match. Each ID should be separated by a comma or new line.
|
||||
create_and_link_enter_pmid_supported=Note that metadata will be retrieved from Crossref, if the PubMed ID can be resolved to a DOI.
|
||||
create_and_link_unknown_profile=Unknown Profile
|
||||
create_and_link_unknown_resource=Unknown Resource Type
|
||||
create_and_link_unauthorized_for_profile=You do not have permissions to claim for this user
|
||||
create_and_link_submit_ids=Submit IDs
|
||||
create_and_link_submit_confirm=Confirm
|
||||
create_and_link_error=Unable to retrieve citation details
|
||||
create_and_link_type_article=Article
|
||||
create_and_link_type_article_journal=Journal Article
|
||||
create_and_link_type_book=Book
|
||||
create_and_link_type_chapter=Chapter
|
||||
create_and_link_type_dataset=Dataset
|
||||
create_and_link_type_figure=Image
|
||||
create_and_link_type_graphic=Image
|
||||
create_and_link_type_legal_case=Legal Case
|
||||
create_and_link_type_legislation=Legislation
|
||||
create_and_link_type_manuscript=Manuscript
|
||||
create_and_link_type_map=Map
|
||||
create_and_link_type_musical_score=Musical Score
|
||||
create_and_link_type_paper_conference=Conference Paper
|
||||
create_and_link_type_patent=Patent
|
||||
create_and_link_type_personal_communication=Letter
|
||||
create_and_link_type_post_weblog=Blog
|
||||
create_and_link_type_report=Report
|
||||
create_and_link_type_review=Review
|
||||
create_and_link_type_speech=Speech
|
||||
create_and_link_type_thesis=Thesis
|
||||
create_and_link_type_webpage=Webpage
|
||||
claim_publications_by=Claim publications by
|
||||
claim_publications_by_doi=DOI
|
||||
claim_publications_by_pmid=PubMed ID
|
BIN
webapp/src/main/webapp/images/createAndLink/error.png
Normal file
BIN
webapp/src/main/webapp/images/createAndLink/error.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.9 KiB |
BIN
webapp/src/main/webapp/images/createAndLink/tick.png
Normal file
BIN
webapp/src/main/webapp/images/createAndLink/tick.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.3 KiB |
|
@ -0,0 +1,111 @@
|
|||
<#setting number_format="computer">
|
||||
<form id="createAndLink" method="post">
|
||||
<#if personLabel??>
|
||||
<div class="claim-for">
|
||||
<h3>${i18n().create_and_link_claim_for(personLabel)}</h3>
|
||||
<#if personThumbUrl??>
|
||||
<img src="${urls.base}${personThumbUrl}" />
|
||||
</#if>
|
||||
</div>
|
||||
</#if>
|
||||
<h2>${i18n().create_and_link_confirm_works}</h2>
|
||||
${i18n().create_and_link_confirm_works_intro}<br /><br />
|
||||
<h4>${i18n().create_and_link_authors}</h4>
|
||||
<div class="description">${i18n().create_and_link_authors_desc}</div><br />
|
||||
<h4>${i18n().create_and_link_editors}</h4>
|
||||
<div class="description">${i18n().create_and_link_editors_desc}</div><br /><br />
|
||||
${i18n().create_and_link_not_mine_desc}<br /><br />
|
||||
<#list citations as citation>
|
||||
<div class="entryId">
|
||||
<#if citation.externalProvider??>
|
||||
${citation.externalProvider?upper_case}: ${citation.externalId?html}
|
||||
<#else>
|
||||
ID: ${citation.externalId?html}
|
||||
</#if>
|
||||
</div>
|
||||
<#if citation.type?has_content>
|
||||
<select name="type${citation.externalId}">
|
||||
<#list publicationTypes as publicationType>
|
||||
<option value="${publicationType.uri}" <#if publicationType.uri == citation.typeUri>selected</#if>>${publicationType.label}</option>
|
||||
</#list>
|
||||
</select><br/>
|
||||
</#if>
|
||||
<div class="entry">
|
||||
<#if citation.showError>
|
||||
<div class="citation_error">
|
||||
${i18n().create_and_link_error}
|
||||
</div>
|
||||
<#else>
|
||||
<!-- Output Citation -->
|
||||
<#if citation.alreadyClaimed>
|
||||
<div class="citation_claimed">
|
||||
</#if>
|
||||
<input type="hidden" name="externalId" value="${citation.externalId!}" />
|
||||
<div class="citation">
|
||||
<#assign proposedAuthor=false />
|
||||
<#if citation.title??><span class="citation_title">${citation.title?html}</span><br /></#if>
|
||||
<#assign formatted_citation>
|
||||
<#if citation.journal??><span class="citation_journal">${citation.journal?html}</span></#if>
|
||||
<#if citation.publicationYear??><span class="citation_year">${citation.publicationYear!?html};</span></#if>
|
||||
<#if citation.volume??><span class="citation_volume">${citation.volume!?html}</#if>
|
||||
<#if citation.issue??><span class="citation_issue">(${citation.issue!?html})</#if>
|
||||
<#if citation.pagination??><span class="citation_pages">:${citation.pagination!?html}</#if>
|
||||
</#assign>
|
||||
<#if formatted_citation??>
|
||||
${formatted_citation}<br />
|
||||
</#if>
|
||||
<#if citation.authors??>
|
||||
<#list citation.authors as author>
|
||||
<#if author??>
|
||||
<span class="citation_author">
|
||||
<#if citation.alreadyClaimed>
|
||||
<span>${author.name!?html}</span>
|
||||
<#else>
|
||||
<#if author.name??>
|
||||
<#if !author.linked>
|
||||
<input type="radio" id="author${citation.externalId}-${author?counter}" name="contributor${citation.externalId}" value="author${author?counter}" <#if author.proposed>checked</#if> class="radioWithLabel" />
|
||||
<label for="author${citation.externalId}-${author?counter}" class="labelForRadio">${author.name!?html}</label>
|
||||
<#if author.proposed><#assign proposedAuthor=true /></#if>
|
||||
<#else>
|
||||
<span class="linked">${author.name!?html}</span>
|
||||
</#if>
|
||||
</#if>
|
||||
</#if>
|
||||
</span>
|
||||
</#if>
|
||||
<#sep>; </#sep>
|
||||
</#list><br />
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
<#if citation.alreadyClaimed>
|
||||
<span class="claimed">${i18n().create_and_link_already_claimed}</span>
|
||||
<#else>
|
||||
<input type="radio" id="author${citation.externalId}" name="contributor${citation.externalId}" value="author" <#if !proposedAuthor>checked</#if> class="radioWithLabel" /><label for="author${citation.externalId}" class="labelForRadio"> ${i18n().create_and_link_unlisted_author}</label><br />
|
||||
<input type="radio" id="editor${citation.externalId}" name="contributor${citation.externalId}" value="editor" class="radioWithLabel" /><label for="editor${citation.externalId}" class="labelForRadio"> ${i18n().create_and_link_editor}</label><br />
|
||||
<input type="radio" id="notmine${citation.externalId}" name="contributor${citation.externalId}" value="notmine" class="radioWithLabel" /><label for="notmine${citation.externalId}" class="labelForRadio"> ${i18n().create_and_link_not_mine}</label><br />
|
||||
</#if>
|
||||
<input type="hidden" name="externalResource${citation.externalId}" value="${citation.externalResource!?html}" />
|
||||
<input type="hidden" name="externalProvider${citation.externalId}" value="${citation.externalProvider!?html}" />
|
||||
<input type="hidden" name="vivoUri${citation.externalId}" value="${citation.vivoUri!?html}" />
|
||||
<input type="hidden" name="profileUri" value="${profileUri!}" />
|
||||
<#if citation.alreadyClaimed>
|
||||
</div>
|
||||
</#if>
|
||||
</#if>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
<br/>
|
||||
<!-- End Citation -->
|
||||
</#list>
|
||||
<#if remainderIds??>
|
||||
<input type="hidden" name="remainderIds" value="${remainderIds}" />
|
||||
</#if>
|
||||
<div class="buttons">
|
||||
<input type="hidden" name="action" value="confirmID" />
|
||||
<input type="submit" value="${i18n().create_and_link_submit_confirm}" class="submit" />
|
||||
<#if remainderCount??>
|
||||
<span class="remainder">${i18n().create_and_link_remaining(remainderCount)}</span>
|
||||
</#if>
|
||||
</div>
|
||||
</form>
|
|
@ -0,0 +1,35 @@
|
|||
<form id="createAndLink" method="post">
|
||||
<#if personLabel??>
|
||||
<div class="claim-for">
|
||||
<h3>${i18n().create_and_link_claim_for(personLabel)}</h3>
|
||||
<#if personThumbUrl??>
|
||||
<img src="${urls.base}${personThumbUrl}" />
|
||||
</#if>
|
||||
</div>
|
||||
</#if>
|
||||
<#if showConfirmation??>
|
||||
<h2>${i18n().create_and_link_thank_you}</h2>
|
||||
${i18n().create_and_link_finished}<br /><br />
|
||||
<#if profileUri??>
|
||||
<a href="${profileUrl(profileUri)}">${i18n().create_and_link_go_profile}</a><br /><br />
|
||||
</#if>
|
||||
</#if>
|
||||
<h2>${i18n().create_and_link_enter(label)}</h2>
|
||||
<#switch provider>
|
||||
<#case "doi">
|
||||
${i18n().create_and_link_enter_dois_intro}<br />
|
||||
<i>ID</i>: 10.1038/nature01234<br />
|
||||
<i>URL</i>: https://doi.org/10.1038/nature01234<br />
|
||||
<br />
|
||||
${i18n().create_and_link_enter_dois_supported}<br /><br />
|
||||
<#break>
|
||||
<#case "pmid">
|
||||
${i18n().create_and_link_enter_pmid_intro}<br /><br />
|
||||
${i18n().create_and_link_enter_pmid_supported}<br /><br />
|
||||
<#break>
|
||||
</#switch>
|
||||
<textarea name="externalIds" rows="15" cols="50"></textarea><br />
|
||||
<input type="submit" value="${i18n().create_and_link_submit_ids}" class="submit" /><br />
|
||||
<input type="hidden" name="action" value="findID" />
|
||||
<input type="hidden" name="profileUri" value="${profileUri!}" />
|
||||
</form>
|
|
@ -0,0 +1 @@
|
|||
<h2>${i18n().create_and_link_unauthorized_for_profile}</h2>
|
|
@ -0,0 +1,2 @@
|
|||
<h2>${i18n().create_and_link_unknown_profile}</h2>
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
<h2>${i18n().create_and_link_unknown_resource}</h2>
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
#createAndLink select {
|
||||
height: 2.5em;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
padding-bottom: 0px;
|
||||
padding-top: 0px;
|
||||
}
|
||||
|
||||
#createAndLink .citation_error:before {
|
||||
content: url('../../../images/createAndLink/error.png');
|
||||
transform: scale(0.5);
|
||||
margin-top: 10px;
|
||||
margin-right: 10px;
|
||||
float: left;
|
||||
}
|
||||
#createAndLink .citation_error {
|
||||
height: 70px;
|
||||
}
|
||||
#createAndLink .citation_claimed:before {
|
||||
content: url('../../../images/createAndLink/tick.png');
|
||||
transform: scale(0.75);
|
||||
margin-top: -17px;
|
||||
margin-left: 535px;
|
||||
float: left;
|
||||
position: absolute;
|
||||
}
|
||||
#createAndLink .citation_claimed:hover:before {
|
||||
opacity: 0.2;
|
||||
}
|
||||
#createAndLink .citation_claimed .citation {
|
||||
opacity: 0.2;
|
||||
}
|
||||
#createAndLink .citation_claimed:hover .citation {
|
||||
opacity: 1.0;
|
||||
}
|
||||
#createAndLink .citation_type {
|
||||
font-style: italic;
|
||||
padding: 5px;
|
||||
}
|
||||
#createAndLink .citation_title {
|
||||
font-weight: bold;
|
||||
}
|
||||
#createAndLink .citation_journal {
|
||||
font-style: italic;
|
||||
}
|
||||
#createAndLink .claimed {
|
||||
font-weight: bold;
|
||||
}
|
||||
#createAndLink .linked {
|
||||
font-style: italic;
|
||||
}
|
||||
#createAndLink .entryId {
|
||||
background-color: #3e8baa; /* #E0E0E0; */
|
||||
color: #ffffff;
|
||||
padding: 5px;
|
||||
font-weight: bold;
|
||||
display: inline-block;
|
||||
}
|
||||
#createAndLink .entry {
|
||||
border: 2px solid #3e8baa; /* #E0E0E0; */
|
||||
padding: 5px;
|
||||
}
|
||||
#createAndLink label {
|
||||
display: inline;
|
||||
}
|
||||
#createAndLink .radioWithLabel:checked + .labelForRadio {
|
||||
font-weight: bold;
|
||||
}
|
||||
#createAndLink .description {
|
||||
padding-left: 22px;
|
||||
}
|
||||
#createAndLink .remainder {
|
||||
font-style: italic;
|
||||
}
|
||||
#createAndLink .claim-for {
|
||||
float: right;
|
||||
border: 2px solid #3e8baa; /* #E0E0E0; */
|
||||
padding: 5px;
|
||||
}
|
||||
#createAndLink .claim-for h3 {
|
||||
text-align: center;
|
||||
}
|
|
@ -30,5 +30,6 @@ VIVO tenderfoot theme: screen styles
|
|||
@import url("page-individual.css");
|
||||
@import url("page-login.css");
|
||||
@import url("page-menu.css");
|
||||
@import url("page-createAndLink.css");
|
||||
@import url("https://fonts.googleapis.com/css?family=Noto+Sans");
|
||||
@import url("../../../local/css/local.css");
|
||||
|
|
|
@ -104,11 +104,23 @@
|
|||
|
||||
<section itemscope itemtype="http://schema.org/Person" id="individual-intro" class="vcard person" role="region">
|
||||
<section id="individual-info" ${infoClass!} role="region">
|
||||
<!-- Overview -->
|
||||
<!-- #include "individual-overview.ftl" -->
|
||||
|
||||
<!-- Geographic Focus -->
|
||||
<!-- #include "individual-geographicFocus.ftl" -->
|
||||
<#if editable>
|
||||
<#if claimSources?size > 0>
|
||||
${i18n().claim_publications_by}
|
||||
<#if claimSources?seq_contains("doi")>
|
||||
<form action="${urls.base}/createAndLink/doi" method="get" style="display: inline-block;">
|
||||
<input type="hidden" name="profileUri" value="${individual.uri}" />
|
||||
<input type="submit" class="submit" value="${i18n().claim_publications_by_doi}" />
|
||||
</form>
|
||||
</#if>
|
||||
<#if claimSources?seq_contains("pmid")>
|
||||
<form action="${urls.base}/createAndLink/pmid" method="get" style="display: inline-block;">
|
||||
<input type="hidden" name="profileUri" value="${individual.uri}" />
|
||||
<input type="submit" class="submit" value="${i18n().claim_publications_by_pmid}" />
|
||||
</form>
|
||||
</#if>
|
||||
</#if>
|
||||
</#if>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
#createAndLink select {
|
||||
height: 2.5em;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
padding-bottom: 0px;
|
||||
padding-top: 0px;
|
||||
}
|
||||
|
||||
#createAndLink .citation_error:before {
|
||||
content: url('../../../images/createAndLink/error.png');
|
||||
transform: scale(0.5);
|
||||
margin-top: 10px;
|
||||
margin-right: 10px;
|
||||
float: left;
|
||||
}
|
||||
#createAndLink .citation_error {
|
||||
height: 70px;
|
||||
}
|
||||
#createAndLink .citation_claimed:before {
|
||||
content: url('../../../images/createAndLink/tick.png');
|
||||
transform: scale(0.75);
|
||||
margin-top: -17px;
|
||||
margin-left: 535px;
|
||||
float: left;
|
||||
position: absolute;
|
||||
}
|
||||
#createAndLink .citation_claimed:hover:before {
|
||||
opacity: 0.2;
|
||||
}
|
||||
#createAndLink .citation_claimed .citation {
|
||||
opacity: 0.2;
|
||||
}
|
||||
#createAndLink .citation_claimed:hover .citation {
|
||||
opacity: 1.0;
|
||||
}
|
||||
#createAndLink .citation_type {
|
||||
font-style: italic;
|
||||
padding: 5px;
|
||||
}
|
||||
#createAndLink .citation_title {
|
||||
font-weight: bold;
|
||||
}
|
||||
#createAndLink .citation_journal {
|
||||
font-style: italic;
|
||||
}
|
||||
#createAndLink .claimed {
|
||||
font-weight: bold;
|
||||
}
|
||||
#createAndLink .linked {
|
||||
font-style: italic;
|
||||
}
|
||||
#createAndLink .entryId {
|
||||
background-color: #3e8baa; /* #E0E0E0; */
|
||||
color: #ffffff;
|
||||
padding: 5px;
|
||||
font-weight: bold;
|
||||
display: inline-block;
|
||||
}
|
||||
#createAndLink .entry {
|
||||
border: 2px solid #3e8baa; /* #E0E0E0; */
|
||||
padding: 5px;
|
||||
}
|
||||
#createAndLink label {
|
||||
display: inline;
|
||||
}
|
||||
#createAndLink .radioWithLabel:checked + .labelForRadio {
|
||||
font-weight: bold;
|
||||
}
|
||||
#createAndLink .description {
|
||||
padding-left: 22px;
|
||||
}
|
||||
#createAndLink .remainder {
|
||||
font-style: italic;
|
||||
}
|
||||
#createAndLink .claim-for {
|
||||
float: right;
|
||||
border: 2px solid #3e8baa; /* #E0E0E0; */
|
||||
padding: 5px;
|
||||
}
|
||||
#createAndLink .claim-for h3 {
|
||||
text-align: center;
|
||||
}
|
|
@ -24,4 +24,5 @@ VIVO wilma theme: screen styles
|
|||
|
||||
@import url("reset.css");
|
||||
@import url("wilma.css");
|
||||
@import url("page-createAndLink.css");
|
||||
@import url("../../../local/css/local.css");
|
||||
|
|
|
@ -62,6 +62,23 @@
|
|||
<section id="individual-info" ${infoClass!} role="region">
|
||||
<section id="right-hand-column" role="region">
|
||||
<#include "individual-visualizationFoafPerson.ftl">
|
||||
<#if editable>
|
||||
<#if claimSources?size > 0>
|
||||
<br />${i18n().claim_publications_by}<br />
|
||||
<#if claimSources?seq_contains("doi")>
|
||||
<form action="${urls.base}/createAndLink/doi" method="get" style="float: left;">
|
||||
<input type="hidden" name="profileUri" value="${individual.uri}" />
|
||||
<input type="submit" class="submit" value="${i18n().claim_publications_by_doi}" />
|
||||
</form>
|
||||
</#if>
|
||||
<#if claimSources?seq_contains("pmid")>
|
||||
<form action="${urls.base}/createAndLink/pmid" method="get" style="float: right;">
|
||||
<input type="hidden" name="profileUri" value="${individual.uri}" />
|
||||
<input type="submit" class="submit" value="${i18n().claim_publications_by_pmid}" />
|
||||
</form>
|
||||
</#if>
|
||||
</#if>
|
||||
</#if>
|
||||
</section>
|
||||
<#include "individual-adminPanel.ftl">
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue