From 5f1e99cb4b303bc0e52a289c71aead403cbdd886 Mon Sep 17 00:00:00 2001 From: Sophie <6323967-smatts@users.noreply.gitlab.com> Date: Fri, 5 Apr 2024 06:23:30 +0000 Subject: [PATCH] Allow software licenses --- i18n/de.json | 4 +- i18n/en.json | 4 +- metadata-generator.html | 256 +++++++++++++++++++++++++++------------- 3 files changed, 182 insertions(+), 82 deletions(-) diff --git a/i18n/de.json b/i18n/de.json index 27076f6..d08cb8d 100644 --- a/i18n/de.json +++ b/i18n/de.json @@ -45,5 +45,7 @@ "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_DATE_PUBLISHED": "Veröffentlichungsdatum" + "LABEL_DATE_PUBLISHED": "Veröffentlichungsdatum", + "LABEL_SOFTWARE_LICENSE": "Software-Lizenz", + "LABEL_CC_LICENSE": "CC-Lizenz" } \ No newline at end of file diff --git a/i18n/en.json b/i18n/en.json index d11642a..852022a 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -45,5 +45,7 @@ "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_DATE_PUBLISHED": "Date published" + "LABEL_DATE_PUBLISHED": "Date published", + "LABEL_SOFTWARE_LICENSE": "Software license", + "LABEL_CC_LICENSE": "CC license" } \ No newline at end of file diff --git a/metadata-generator.html b/metadata-generator.html index efb2c18..6902747 100644 --- a/metadata-generator.html +++ b/metadata-generator.html @@ -170,42 +170,57 @@
-
-
- +
+ +
-
- +
+
+ +
+
+ +
+
+ +
+
+ +
-
- +
+
-
- + +
+ +
-
-
- -
-
+
+ +
+
Pflichtfeld
+
+
@@ -293,7 +308,8 @@ async function init() { await loadVocabs(); await i18nLoader(); - chooseLicense(); + chooseCCLicense(); + addSoftwareLicenses(); addCreator(); $("#inputEducationalLevel option[value='https://w3id.org/kim/educationalLevel/level_A']").attr("selected", "true"); $('.selectpicker').selectpicker('refresh'); @@ -302,7 +318,9 @@ if (userLang) { changeLanguage(userLang); } + } + let vocabInstitutions = [] function loadVocabs() { @@ -385,8 +403,50 @@ } ]; + const softwareLicenses = [ + { + name: 'Apache License 2.0', + url:'https://opensource.org/license/apache-2-0' + }, + { + name: 'BSD 2-Clause "Simplified" License', + url: 'https://opensource.org/license/bsd-2-clause' + }, + { + name: 'BSD 3-Clause "New" or "Revised" License', + url: 'https://opensource.org/license/bsd-3-clause', + }, + { + name: 'GNU General Public License v2.0', + url: 'https://opensource.org/license/gpl-2-0', + }, + { + name: 'GNU General Public License v3.0', + url: 'https://opensource.org/license/gpl-3-0', + }, + { + name: 'GNU Lesser General Public License v2.1', + url: 'https://opensource.org/license/lgpl-2-1', + }, + { + name: 'GNU Affero General Public License v3.0', + url: 'https://www.gnu.org/licenses/agpl-3.0.html', + }, + { + name: 'MIT License', + url: 'https://opensource.org/license/mit', + }, + { + name: 'GNU Free Documentation License', + url: 'https://www.gnu.org/licenses/fdl-1.3.html', + }, + { + name: 'Zero-Clause BSD', + url: 'https://opensource.org/license/0bsd' + } + ] - function chooseLicense() { + function chooseCCLicense() { const by = document.getElementById("inputLicenseBY") const sa = document.getElementById("inputLicenseSA") const nd = document.getElementById("inputLicenseND") @@ -478,6 +538,27 @@ } } + function addSoftwareLicenses() { + softwareLicenses.forEach((item) => { + $("#inputSoftwareLicense").append(''); + }); + } + + function ccOrSoftwareLicense() { + if(document.getElementById("radioLicenseCC").checked) { + document.getElementById("inputLicenseBY").disabled = false; + document.getElementById("choicesLicense").style = ""; + chooseCCLicense(); + document.getElementById("inputSoftwareLicense").setAttribute("disabled", "true"); + } else { + document.getElementById("inputLicenseBY").disabled = true; + document.getElementById("choicesLicense").style = "color: gray"; + document.getElementById("choosenLicense").style = "color: gray"; + document.getElementById("inputSoftwareLicense").removeAttribute("disabled"); + } + $('.selectpicker').selectpicker('refresh'); + } + function splitKeywords(keywordString) { const keywords = keywordString.split(","); return keywords.map((k) => k.trim()); @@ -712,7 +793,11 @@ type: "LearningResource", name: document.getElementById("inputTitle").value, description: document.getElementById("inputDescription").value, - license: document.getElementById("licenseUrl").value + } + if(document.getElementById("radioLicenseCC").checked) { + meta.license = document.getElementById("licenseUrl").value + } else { + meta.license = document.getElementById("inputSoftwareLicense").value } if (identifier) { meta.id = identifier; @@ -791,7 +876,7 @@ document.getElementById("inputDescription").value = data.description ? data.description : ""; $('#inputLanguage').val(data.inLanguage ? data.inLanguage : []).selectpicker('refresh'); $('#inputSubjectOf').val(aboutIds).selectpicker('refresh'); - setLicense(licenseUrl) + setLicense((data.license && data.license.id) ? idMap(data.license) : data.license) document.getElementById("inputImage").value = data.image ? data.image : ""; $('#inputResourceType').val(learningResourceTypeIds).selectpicker('refresh'); if (educationalLevelIds.length > 0) { @@ -805,52 +890,63 @@ } } function setLicense(license) { - const by = document.getElementById("inputLicenseBY") - const sa = document.getElementById("inputLicenseSA") - const nd = document.getElementById("inputLicenseND") - const nc = document.getElementById("inputLicenseNC") - if (license.startsWith("https://creativecommons.org/publicdomain/zero/")) { - by.checked = true; - sa.checked = true; - nd.checked = true; - nc.checked = true; - } else if (license.startsWith("https://creativecommons.org/licenses/by/")) { - by.checked = false; - sa.checked = true; - nd.checked = true; - nc.checked = true; - } else if (license.startsWith("https://creativecommons.org/licenses/by-sa/")) { - by.checked = false; - sa.checked = false; - nd.checked = true; - nc.checked = true; - } else if (license.startsWith("https://creativecommons.org/licenses/by-nd/")) { - by.checked = false; - sa.checked = true; - nd.checked = false; - nc.checked = true; - } else if (license.startsWith("https://creativecommons.org/licenses/by-nc/")) { - by.checked = false; - sa.checked = true; - nd.checked = true; - nc.checked = false; - } else if (license.startsWith("https://creativecommons.org/licenses/by-nc-sa/")) { - by.checked = false; - sa.checked = false; - nd.checked = true; - nc.checked = false; - } else if (license.startsWith("https://creativecommons.org/licenses/by-nc-nd/")) { - by.checked = false; - sa.checked = true; - nd.checked = false; - nc.checked = false; + if (license.startsWith("https://creativecommons.org/")) { + const by = document.getElementById("inputLicenseBY") + const sa = document.getElementById("inputLicenseSA") + const nd = document.getElementById("inputLicenseND") + const nc = document.getElementById("inputLicenseNC") + if (license.startsWith("https://creativecommons.org/publicdomain/zero/")) { + by.checked = true; + sa.checked = true; + nd.checked = true; + nc.checked = true; + } else if (license.startsWith("https://creativecommons.org/licenses/by/")) { + by.checked = false; + sa.checked = true; + nd.checked = true; + nc.checked = true; + } else if (license.startsWith("https://creativecommons.org/licenses/by-sa/")) { + by.checked = false; + sa.checked = false; + nd.checked = true; + nc.checked = true; + } else if (license.startsWith("https://creativecommons.org/licenses/by-nd/")) { + by.checked = false; + sa.checked = true; + nd.checked = false; + nc.checked = true; + } else if (license.startsWith("https://creativecommons.org/licenses/by-nc/")) { + by.checked = false; + sa.checked = true; + nd.checked = true; + nc.checked = false; + } else if (license.startsWith("https://creativecommons.org/licenses/by-nc-sa/")) { + by.checked = false; + sa.checked = false; + nd.checked = true; + nc.checked = false; + } else if (license.startsWith("https://creativecommons.org/licenses/by-nc-nd/")) { + by.checked = false; + sa.checked = true; + nd.checked = false; + nc.checked = false; + } else { + by.checked = false; + sa.checked = false; + nd.checked = false; + nc.checked = false; + } + chooseCCLicense(); } else { - by.checked = false; - sa.checked = false; - nd.checked = false; - nc.checked = false; + document.getElementById("inputSoftwareLicense").name = softwareLicenses.find(l => l.url == license).name; + document.getElementById("inputSoftwareLicense").value = license; + document.getElementById("radioLicenseSoftware").checked = "true"; + document.getElementById("inputLicenseBY").disabled = true; + document.getElementById("choicesLicense").style = "color: gray"; + document.getElementById("choosenLicense").style = "color: gray"; + document.getElementById("inputSoftwareLicense").removeAttribute("disabled"); + $('.selectpicker').selectpicker('refresh'); } - chooseLicense(); } async function i18nLoader() {