diff --git a/data/organisations/data.json b/data/organisations/data.json index 9b630028b..fbdbbd03a 100644 --- a/data/organisations/data.json +++ b/data/organisations/data.json @@ -13,7 +13,24 @@ { "code": "hepvs", "name": "HEP Valais", - "description": "Description in **markdown**", + "description": [ + { + "language": "de", + "value": "Description in German in **markdown** format" + }, + { + "language": "en", + "value": "Description in English in **markdown** format" + }, + { + "language": "fr", + "value": "Description in French in **markdown** format" + }, + { + "language": "it", + "value": "Description in Italian in **markdown** format" + } + ], "isShared": true, "isDedicated": true, "platformName": "FREDI", @@ -40,7 +57,24 @@ { "code": "unifr", "name": "Université de Fribourg", - "description": "#### Français\nFOLIA est le serveur de dépôt institutionnel de l'Université de Fribourg (Suisse). Il fournit un accès libre aux publications des chercheurs et chercheuses de l'Université. FOLIA est géré par la Bibliothèque cantonale et universitaire de Fribourg.\n#### Deutsch\nFOLIA ist das institutionelle Repositorium der Universität Freiburg (Schweiz). Es bietet freien Zugang zu den Publikationen der Forschenden der Universität. FOLIA wird von der Kantons- und Universitätsbibliothek Freiburg betreut.\n#### English\nFOLIA is the institutional repository of the University of Fribourg (Switzerland). It provides free access to the publications of the researchers of the University. FOLIA is managed by the Bibliothèque cantonale et universitaire de Fribourg.\n#### Italiano\nFOLIA è l'archivio istituzionale dell'Università di Friburgo (Svizzera). Fornisce un accesso gratuito alle pubblicazioni dei ricercatrici e ricercatori dell'Università. FOLIA è gestito dalla Bibliothèque cantonale et universitaire de Fribourg.", + "description": [ + { + "language": "de", + "value": "FOLIA ist das institutionelle Repositorium der Universität Freiburg (Schweiz). Es bietet freien Zugang zu den Publikationen der Forschenden der Universität. FOLIA wird von der Kantons- und Universitätsbibliothek Freiburg betreut." + }, + { + "language": "en", + "value": "FOLIA is the institutional repository of the University of Fribourg (Switzerland). It provides free access to the publications of the researchers of the University. FOLIA is managed by the Bibliothèque cantonale et universitaire de Fribourg." + }, + { + "language": "fr", + "value": "FOLIA est le serveur de dépôt institutionnel de l'Université de Fribourg (Suisse). Il fournit un accès libre aux publications des chercheurs et chercheuses de l'Université. FOLIA est géré par la Bibliothèque cantonale et universitaire de Fribourg." + }, + { + "language": "it", + "value": "FOLIA è l'archivio istituzionale dell'Università di Friburgo (Svizzera). Fornisce un accesso gratuito alle pubblicazioni dei ricercatrici e ricercatori dell'Università. FOLIA è gestito dalla Bibliothèque cantonale et universitaire de Fribourg." + } + ], "isShared": true, "isDedicated": true, "platformName": "# FOLIA\n#### Fribourg Open Library and Archive", diff --git a/sonar/common/jsonschemas/interface_language-v1.0.0.json b/sonar/common/jsonschemas/interface_language-v1.0.0.json new file mode 100644 index 000000000..192062b32 --- /dev/null +++ b/sonar/common/jsonschemas/interface_language-v1.0.0.json @@ -0,0 +1,33 @@ +{ + "title": "language", + "type": "string", + "enum": [ + "de", + "en", + "fr", + "it" + ], + "form": { + "templateOptions": { + "sort": true + }, + "options": [ + { + "label": "lang_ger", + "value": "de" + }, + { + "label": "lang_eng", + "value": "en" + }, + { + "label": "lang_fre", + "value": "fr" + }, + { + "label": "lang_ita", + "value": "it" + } + ] + } +} diff --git a/sonar/modules/organisations/jsonschemas/organisations/organisation-v1.0.0_src.json b/sonar/modules/organisations/jsonschemas/organisations/organisation-v1.0.0_src.json index 0cd850825..5a2201089 100644 --- a/sonar/modules/organisations/jsonschemas/organisations/organisation-v1.0.0_src.json +++ b/sonar/modules/organisations/jsonschemas/organisations/organisation-v1.0.0_src.json @@ -35,14 +35,50 @@ "minLength": 1 }, "description": { - "title": "Description", - "description": "HTML markup admitted.", - "type": "string", - "minLength": 1, + "title": "Descriptions", + "type": "array", + "minItems": 1, + "items": { + "title": "Description", + "type": "object", + "additionalProperties": false, + "properties": { + "value": { + "title": "Value", + "type": "string", + "minLength": 1, + "form": { + "type": "markdown", + "templateOptions": { + "rows": 5 + } + } + }, + "language": { + "$ref": "interface_language-v1.0.0.json" + } + }, + "propertiesOrder": [ + "language", + "value" + ], + "required": [ + "value", + "language" + ] + }, "form": { - "type": "markdown", - "templateOptions": { - "rows": 5 + "validation": { + "validators": { + "uniqueValueKeysInObject": { + "keys": [ + "language" + ] + } + }, + "messages": { + "uniqueValueKeysInObjectMessage": "Only one value per language is allowed" + } } } }, diff --git a/sonar/modules/organisations/mappings/v7/organisations/organisation-v1.0.0.json b/sonar/modules/organisations/mappings/v7/organisations/organisation-v1.0.0.json index badb86082..1810a424c 100644 --- a/sonar/modules/organisations/mappings/v7/organisations/organisation-v1.0.0.json +++ b/sonar/modules/organisations/mappings/v7/organisations/organisation-v1.0.0.json @@ -15,7 +15,15 @@ "type": "keyword" }, "description": { - "type": "text" + "type": "object", + "properties": { + "language": { + "type": "keyword" + }, + "value": { + "type": "text" + } + } }, "name": { "type": "text", diff --git a/sonar/modules/organisations/marshmallow/json.py b/sonar/modules/organisations/marshmallow/json.py index 82a7e27de..359369da4 100644 --- a/sonar/modules/organisations/marshmallow/json.py +++ b/sonar/modules/organisations/marshmallow/json.py @@ -43,7 +43,7 @@ class OrganisationMetadataSchemaV1(StrictKeysMixin): pid = PersistentIdentifier() code = SanitizedUnicode(required=True) name = SanitizedUnicode(required=True) - description = SanitizedUnicode() + description = fields.List(fields.Dict()) isShared = fields.Boolean() isDedicated = fields.Boolean() allowedIps = SanitizedUnicode() diff --git a/sonar/modules/organisations/serializers/schemas/export.py b/sonar/modules/organisations/serializers/schemas/export.py index 27efdb10c..fefe34ded 100644 --- a/sonar/modules/organisations/serializers/schemas/export.py +++ b/sonar/modules/organisations/serializers/schemas/export.py @@ -25,7 +25,7 @@ class ExportSchemaV1(Schema): code = fields.String(dump_only=True) name = fields.String(dump_only=True) - description = fields.String(dump_only=True) + description = fields.List(fields.Dict(dump_only=True)) isShared = fields.Boolean(dump_only=True) isDedicated = fields.Boolean(dump_only=True) files = fields.Method('get_files', dump_only=True) diff --git a/sonar/theme/templates/sonar/frontpage.html b/sonar/theme/templates/sonar/frontpage.html index 92093b90f..0f5e9f3ea 100755 --- a/sonar/theme/templates/sonar/frontpage.html +++ b/sonar/theme/templates/sonar/frontpage.html @@ -89,7 +89,7 @@
{{ g.organisation.description | markdown_filter | safe }}
+{{ g.organisation.description | description_current_language(current_i18n.locale.language) | markdown_filter | safe }}
{% endif %}