From 9f43025a0c6de3ea429e7691641b8c5cb3cfee22 Mon Sep 17 00:00:00 2001 From: Sophie <6323967-smatts@users.noreply.gitlab.com> Date: Thu, 20 Jul 2023 04:25:35 +0000 Subject: [PATCH] Add datePublished to metadata form --- i18n/de.json | 3 ++- i18n/en.json | 3 ++- metadata-generator.html | 52 ++++++++++++++++++++++++++++++++++++++++- 3 files changed, 55 insertions(+), 3 deletions(-) diff --git a/i18n/de.json b/i18n/de.json index ad3e815..27076f6 100644 --- a/i18n/de.json +++ b/i18n/de.json @@ -44,5 +44,6 @@ "LABEL_URL": "URL der Ressource", "LABEL_URL_PLACEHOLDER": "Direktlink zur Resource (Voreinstellung GitHub/GitLab Pages URL)", "LABEL_YAML_METADATA": "YAML Metadaten", - "LABEL_NO_INSTITUTION_FOUND": "Keine passende Institution gefunden" + "LABEL_NO_INSTITUTION_FOUND": "Keine passende Institution gefunden", + "LABEL_DATE_PUBLISHED": "Veröffentlichungsdatum" } \ No newline at end of file diff --git a/i18n/en.json b/i18n/en.json index ac65b58..d11642a 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -44,5 +44,6 @@ "LABEL_URL": "Resource URL", "LABEL_URL_PLACEHOLDER": "Direct link to the resource (default GitHub/GitLab Pages URL)", "LABEL_YAML_METADATA": "YAML Metadata", - "LABEL_NO_INSTITUTION_FOUND": "No matching institution found" + "LABEL_NO_INSTITUTION_FOUND": "No matching institution found", + "LABEL_DATE_PUBLISHED": "Date published" } \ No newline at end of file diff --git a/metadata-generator.html b/metadata-generator.html index 32cd660..3a6fbe6 100644 --- a/metadata-generator.html +++ b/metadata-generator.html @@ -17,6 +17,12 @@ + + + + + + @@ -223,7 +229,7 @@
- @@ -232,6 +238,15 @@
Pflichtfeld
+
+ +
+ +
+
+
+
+
@@ -554,6 +569,7 @@ creatorList.insertBefore(item, creatorList.lastElementChild); createOrUpdateSelect2(); + createOrUpdateDatePicker(); updateContent(); } @@ -620,6 +636,7 @@ const selectedResourceTypes = $('#inputResourceType').val(); const selectedEducationalLevel = $('#inputEducationalLevel').val(); const identifier = document.getElementById("inputUrl").value; + const datePublished = $("#datepicker1").datepicker("getDate"); let meta = { creativeWorkStatus: document.getElementById("inputStatus").value, name: document.getElementById("inputTitle").value, @@ -650,6 +667,12 @@ if (selectedEducationalLevel.length > 0) { meta.educationalLevel = selectedEducationalLevel } + if (meta.creativeWorkStatus == "Published" && datePublished) { + let dateString = datePublished.getFullYear() + "-" + + ('0' + (datePublished.getMonth()+1)).slice(-2) + "-" + + ('0' + datePublished.getDate()).slice(-2); + meta.datePublished = dateString; + } document.getElementById("comment").value = jsyaml.dump(meta); if (navigator.clipboard) { document.getElementById("button_copy_generated_output").disabled = false @@ -683,6 +706,7 @@ const educationalLevelIds = data.educationalLevel ? data.educationalLevel.map(idMap) : []; document.getElementById("inputStatus").value = data.creativeWorkStatus ? data.creativeWorkStatus : "Draft"; + $("#datepicker1").datepicker("update", new Date(data.datePublished)); document.getElementById("inputUrl").value = data.id ? data.id : ""; document.getElementById("inputTitle").value = data.name; setCreators(data.creator ? data.creator : []); @@ -789,6 +813,7 @@ i18next.changeLanguage(languageCode); document.getElementById("selectedLanguageLabel").textContent = languageCode.toUpperCase(); createOrUpdateSelect2(); + createOrUpdateDatePicker(); } function createOrUpdateSelect2() { @@ -837,6 +862,31 @@ }); } + function createOrUpdateDatePicker() { + // Keep previously set date when changing the language + let date = $('#datepicker1').datepicker("getDate"); + + if (document.getElementById("inputStatus").value != "Published") { + document.getElementById("datepickerInput").required = false; + } else { + // Make required if input status is set to published + document.getElementById("datepickerInput").required = true; + // When set to published, set datePublished to today + if (!date) { + $('#datepicker1').datepicker("update", new Date()); + } + } + $('#datepicker1').datepicker("destroy"); + let language = document.getElementById("selectedLanguageLabel").textContent.toLowerCase(); + if (language == "en") language += "-US"; + $('#datepicker1').datepicker({ + language: language + }); + if (date) { + $('#datepicker1').datepicker("update", new Date(date)); + } + } + function updateContent() { let elements = document.querySelectorAll('[data-i18n]'); for (let i = 0; i < elements.length; i++) {