Skip to content

Commit 8a2c8ac

Browse files
authored
Merge pull request #1393 from alw-bsz/doi1196-1280
#1196, #1280 Import by DOI: import of conference data, bugfixes
2 parents 58ea1c7 + 2de362c commit 8a2c8ac

File tree

4 files changed

+98
-50
lines changed

4 files changed

+98
-50
lines changed

application/configs/doctypes/doi.xml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,19 @@
8484
<subfield name="FirstName" required="no" formelement="text" datatype="Text"/>
8585
<subfield name="AcademicTitle" required="no" formelement="text" datatype="Text" />
8686
<subfield name="IdentifierOrcid" required="no" formelement="text" datatype="Identifier"/>
87-
</field>
88-
<field name="ContributingCorporation" required="no" formelement="Text" datatype="Text" multiplicity="1"/>
87+
</field>
8988
<field name="PersonTranslator" required="no" formelement="text" datatype="Person" multiplicity="*">
9089
<subfield name="FirstName" required="no" formelement="text" datatype="Text"/>
9190
<subfield name="AcademicTitle" required="no" formelement="text" datatype="Text" />
9291
</field>
9392

9493
<field name="PublisherName" required="no" formelement="Text" datatype="Text" multiplicity="1"/>
9594
<field name="PublisherPlace" required="no" formelement="Text" datatype="Text" multiplicity="1"/>
95+
96+
<field name="OpusConferenceName" required="no" formelement="Text" datatype="Enrichment" multiplicity="1"/>
97+
<field name="OpusConferencePlace" required="no" formelement="Text" datatype="Enrichment" multiplicity="1"/>
98+
<field name="OpusConferenceNumber" required="no" formelement="Text" datatype="Enrichment" multiplicity="1"/>
99+
<field name="OpusConferenceYear" required="no" formelement="Text" datatype="Enrichment" multiplicity="1"/>
96100

97101
<field name="SubjectUncontrolled" required="no" formelement="Select" datatype="Subject" multiplicity="*"/>
98102

application/configs/doctypes_templates/doi.phtml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,13 @@ $config = Config::get();
9393
<?= $this->element($this->Edition); ?>
9494

9595
<?= $this->group($this->groupPersonEditor); ?>
96-
<?= $this->element($this->ContributingCorporation); ?>
9796
<?= $this->group($this->groupPersonTranslator); ?>
9897

98+
<?= $this->element($this->OpusConferenceName); ?>
99+
<?= $this->element($this->OpusConferencePlace); ?>
100+
<?= $this->element($this->OpusConferenceNumber); ?>
101+
<?= $this->element($this->OpusConferenceYear); ?>
102+
99103
<?= $this->element($this->PublisherName); ?>
100104
<?= $this->element($this->PublisherPlace); ?>
101105

public/layouts/opus4/js/doiAssist.js

Lines changed: 71 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"use strict";
22
var exports = new Object;
33
Object.defineProperty(exports, "__esModule", { value: true });
4-
exports.getEdition = exports.getArticleNumber = exports.getLicence = exports.getSubject = exports.getThesisAccepted = exports.getPublisherPlace = exports.getTranslator = exports.getUrl = exports.getIssn = exports.getEditor = exports.getIsbn = exports.getCompletedDate = exports.getVolume = exports.getIssue = exports.getPages = exports.getAuthor = exports.getPersonAuthorAcademicTitle = exports.getPersonAuthorIdentifierOrcid = exports.getType = exports.getTitleParent = exports.getAbstract = exports.getPersonAuthorLastName = exports.getPersonAuthorFirstName = exports.getOtherperson = exports.getTranslator = exports.getEditor = exports.getContributor = exports.getIdentifierIsbn = exports.getLanguage = exports.getIdentifierUrl = exports.getContributingCorporation = exports.getNote = exports.getPageCount = exports.getEdition = exports.getTitleSub = exports.getCreatingCorporation = exports.getId = exports.getCompletedYear = exports.getPublisherName = exports.getTitleMain = exports.parseDoi = void 0;
4+
exports.getEdition = exports.getArticleNumber = exports.getLicence = exports.getSubject = exports.getThesisAccepted = exports.getPublisherPlace = exports.getTranslator = exports.getUrl = exports.getIssn = exports.getEditor = exports.getIsbn = exports.getCompletedDate = exports.getVolume = exports.getIssue = exports.getPages = exports.getAuthor = exports.getPersonAuthorAcademicTitle = exports.getPersonAuthorIdentifierOrcid = exports.getType = exports.getTitleParent = exports.getAbstract = exports.getPersonAuthorLastName = exports.getPersonAuthorFirstName = exports.getOtherperson = exports.getTranslator = exports.getEditor = exports.getContributor = exports.getIdentifierIsbn = exports.getLanguage = exports.getIdentifierUrl = exports.getNote = exports.getPageCount = exports.getEdition = exports.getTitleSub = exports.getCreatingCorporation = exports.getId = exports.getCompletedYear = exports.getOpusConferenceYear = exports.getPublisherName = exports.getOpusConferenceName = exports.getOpusConferencePlace = exports.getOpusConferenceNumber = exports.getTitleMain = exports.parseDoi = void 0;
55

66

77
function finalize(field)
@@ -58,24 +58,86 @@ function getSubject(json)
5858
exports.getSubject = getSubject;
5959

6060

61-
function getContributingCorporation(json)
61+
function getOpusConferenceName(json)
6262
{
63-
if (json['message']['event'] != undefined) {
63+
if (json['message']['event'] && json['message']['event']['name']) {
6464
var result_name = json['message']['event']['name']; // Name der Konferenz
65+
if (json['message']['event']['acronym']) {
66+
var result_acronym = json['message']['event']['acronym']; // Acronym der Konferenz
67+
}
68+
}
69+
70+
if (result_name != undefined) {
71+
var result = result_name;
72+
if (result_acronym != undefined) {
73+
result = result + ' (' + result_acronym + ')';
74+
}
75+
}
76+
77+
if (result != undefined) {
78+
finalize("EnrichmentOpusConferenceName")
79+
}
80+
return result ? result : ''
81+
}
82+
exports.getOpusConferenceName = getOpusConferenceName;
83+
84+
function getOpusConferencePlace(json)
85+
{
86+
if (json['message']['event'] && json['message']['event']['location']) {
87+
var result = json['message']['event']['location']; // Ort der Konferenz
6588
}
66-
if (json['message']['event'] != undefined) {
67-
var result_location = json['message']['event']['location']; // Ort der Konferenz
89+
90+
if (result != undefined) {
91+
finalize("EnrichmentOpusConferencePlace")
6892
}
69-
if (result_name != undefined && result_location != undefined) {
70-
var result = result_name + ' (' + result_location + ')';
93+
return result ? result : ''
94+
}
95+
exports.getOpusConferencePlace = getOpusConferencePlace;
96+
97+
function getOpusConferenceNumber(json)
98+
{
99+
if (json['message']['event'] && json['message']['event']['number']) {
100+
var result = json['message']['event']['number']; // Zählung der Konferenz
71101
}
72102

73103
if (result != undefined) {
74-
finalize("ContributingCorporation")
104+
finalize("EnrichmentOpusConferenceNumber")
75105
}
76106
return result ? result : ''
77107
}
78-
exports.getContributingCorporation = getContributingCorporation;
108+
exports.getOpusConferenceNumber = getOpusConferenceNumber;
109+
110+
function getOpusConferenceYear(json)
111+
{
112+
var start_year;
113+
var end_year;
114+
var result;
115+
116+
if (json['message']['event'] && json['message']['event']['start'] && json['message']['event']['start']['date-parts']) {
117+
start_year = json['message']['event']['start']['date-parts'][0][0];
118+
}
119+
if (json['message']['event'] && json['message']['event']['end'] && json['message']['event']['end']['date-parts']) {
120+
end_year = json['message']['event']['end']['date-parts'][0][0];
121+
}
122+
123+
if (start_year && end_year) {
124+
if (start_year === end_year) {
125+
result = start_year.toString();
126+
} else {
127+
result = start_year + '-' + end_year;
128+
}
129+
} else if (start_year) {
130+
result = start_year.toString();
131+
} else if (end_year) {
132+
result = end_year.toString();
133+
}
134+
135+
if (result != undefined) {
136+
finalize("EnrichmentOpusConferenceYear")
137+
}
138+
return result ? result : '';
139+
}
140+
exports.getOpusConferenceYear = getOpusConferenceYear;
79141

80142

81143
function getUrl(json)
@@ -387,29 +449,6 @@ function getTitleMain(json)
387449
}
388450
exports.getTitleMain = getTitleMain;
389451

390-
/* function getContributingCorporation(json)
391-
{
392-
if (json.message.author) {
393-
var name, _z;
394-
var _laenge = json.message.author.length;
395-
if (_laenge > 0) {
396-
for (_z = 0; _z < _laenge; _z++) {
397-
if (json.message.author[_z].name != null) {
398-
name = json.message.author[_z].name;
399-
finalize("ContributingCorporation")
400-
return name;
401-
} else {
402-
return ''
403-
}
404-
}
405-
}
406-
} else {
407-
return ''
408-
}
409-
}
410-
exports.ContributingCorporation = getContributingCorporation; */
411-
412-
413452
function getTitleSub(json)
414453
{
415454
var result = json.message.subtitle;

public/layouts/opus4/js/getDoi.js

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ document.addEventListener("DOMContentLoaded", function () {
44
const abortButton = document.querySelector("input[name='abort']");
55

66

7-
// Event Listener für das Klicken auf alle Formularfelder außer dem DOI-Feld (und dem Import-Button)
7+
// Event Listener für das Klicken auf ein Formularfeld außer dem DOI-Feld (sowie Import-Button und Abbruch)
88
formFields.forEach(function (field) {
99
if (field.id !== "IdentifierDoi" && field !== importButton && field !== abortButton) {
1010
field.addEventListener("focus", function (event) {
@@ -100,11 +100,14 @@ function parseJson(jsonraw)
100100
// Ende mehrfach belegbare Felder
101101

102102
getDoctypes(data);
103-
document.getElementById("ContributingCorporation").value = getContributingCorporation(data);
104-
document.getElementById("PublisherName").value = getPublisherName(data); //json.message.publisher;
105-
document.getElementById("PublisherPlace").value = getPublisherPlace(data); //json.message.publisher-location;
106-
document.getElementById("TitleMain_1").value = getTitleMain(data);//json.message.title[0];
107-
document.getElementById("TitleSub_1").value = getTitleSub(data); //json.message.title[1];
103+
document.getElementById("EnrichmentOpusConferenceName").value = getOpusConferenceName(data); //json.message.event.name (+json.message.event.acronym);
104+
document.getElementById("EnrichmentOpusConferencePlace").value = getOpusConferencePlace(data); //json.message.event.location;
105+
document.getElementById("EnrichmentOpusConferenceNumber").value = getOpusConferenceNumber(data); //json.message.event.number;
106+
document.getElementById("EnrichmentOpusConferenceYear").value = getOpusConferenceYear(data); //json.message.event.start.date-parts[0][0] ("-" json.message.event.end.date-parts[0][0]);
107+
document.getElementById("PublisherName").value = getPublisherName(data); //json.message.publisher;
108+
document.getElementById("PublisherPlace").value = getPublisherPlace(data); //json.message.publisher-location;
109+
document.getElementById("TitleMain_1").value = getTitleMain(data); //json.message.title[0];
110+
document.getElementById("TitleSub_1").value = getTitleSub(data); //json.message.title[1];
108111

109112
var language = getLanguage(data);
110113
expandLanguage(language);
@@ -127,9 +130,8 @@ function parseJson(jsonraw)
127130
var dates = getCompletedDate(data);
128131
expandCompletedDate(dates);
129132

130-
document.getElementById("IdentifierIsbn").value = getIsbn(data); //json.message.isbn-type[0].value;
131-
document.getElementById("IdentifierIssn").value = getIssn(data); //json.message.issn-type[0].value;
132-
//document.getElementById("IdentifierUrl").value = getUrl(data); //json.message.link[0].url -> Soll laut aw raus
133+
document.getElementById("IdentifierIsbn").value = getIsbn(data); //json.message.isbn-type[0].value;
134+
document.getElementById("IdentifierIssn").value = getIssn(data); //json.message.issn-type[0].value;
133135
document.getElementById("Enrichmentopus_crossrefLicence").value = getLicence(data);
134136
document.getElementById("Enrichmentopus_import_origin").value = "crossref";
135137
document.getElementById("Enrichmentopus_doiImportPopulated").value = populatedFields;
@@ -159,13 +161,12 @@ function expandLanguage(language)
159161
function expandCompletedDate(dates)
160162
{
161163
// Für CompletedYear
164+
if (dates && dates.length > 2) {
165+
const date = dates.join();
166+
const year = date.split(',')[0];
162167

163-
if (dates !== '' && dates.length > 2) { // = Wenn überhaupt ein Jahr enthalten ist
164-
165-
date = dates.join();
166-
167-
if ((date.split(',')[0].length) = 4) {
168-
document.getElementById("CompletedYear").value = date.split(',')[0];
168+
if (year.length === 4) {
169+
document.getElementById("CompletedYear").value = year;
169170
finalize("CompletedYear");
170171
}
171172
}

0 commit comments

Comments
 (0)