diff --git a/data/organisations/data.json b/data/organisations/data.json
index 9b630028..d95c8939 100644
--- a/data/organisations/data.json
+++ b/data/organisations/data.json
@@ -13,7 +13,42 @@
{
"code": "hepvs",
"name": "HEP Valais",
- "description": "Description in **markdown**",
+ "description": [
+ {
+ "language": "ger",
+ "value": "Description in German in **markdown** format"
+ },
+ {
+ "language": "eng",
+ "value": "Description in English in **markdown** format"
+ },
+ {
+ "language": "fre",
+ "value": "Description in French in **markdown** format"
+ },
+ {
+ "language": "ita",
+ "value": "Description in Italian in **markdown** format"
+ }
+ ],
+ "footer": [
+ {
+ "language": "ger",
+ "value": "Footer GER **markdown** format"
+ },
+ {
+ "language": "eng",
+ "value": "Footer ENG **markdown** format"
+ },
+ {
+ "language": "fre",
+ "value": "Footer FRE **markdown** format"
+ },
+ {
+ "language": "ita",
+ "value": "Footer ITA **markdown** format"
+ }
+ ],
"isShared": true,
"isDedicated": true,
"platformName": "FREDI",
@@ -40,7 +75,42 @@
{
"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": "ger",
+ "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": "eng",
+ "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": "fre",
+ "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": "ita",
+ "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."
+ }
+ ],
+ "footer": [
+ {
+ "language": "ger",
+ "value": "Footer GER **markdown** format"
+ },
+ {
+ "language": "eng",
+ "value": "Footer ENG **markdown** format"
+ },
+ {
+ "language": "fre",
+ "value": "Footer FRE **markdown** format"
+ },
+ {
+ "language": "ita",
+ "value": "Footer ITA **markdown** format"
+ }
+ ],
"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 00000000..00d8b056
--- /dev/null
+++ b/sonar/common/jsonschemas/interface_language-v1.0.0.json
@@ -0,0 +1,33 @@
+{
+ "title": "language",
+ "type": "string",
+ "enum": [
+ "ger",
+ "eng",
+ "fre",
+ "ita"
+ ],
+ "form": {
+ "templateOptions": {
+ "sort": true
+ },
+ "options": [
+ {
+ "label": "lang_ger",
+ "value": "ger"
+ },
+ {
+ "label": "lang_eng",
+ "value": "eng"
+ },
+ {
+ "label": "lang_fre",
+ "value": "fre"
+ },
+ {
+ "label": "lang_ita",
+ "value": "ita"
+ }
+ ]
+ }
+}
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 0cd85082..337fcd4d 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,99 @@
"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"
+ }
+ }
+ }
+ },
+ "footer": {
+ "title": "Footers",
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "title": "Footer",
+ "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": {
+ "hideExpression": "!field.parent.model.isDedicated",
+ "validation": {
+ "validators": {
+ "uniqueValueKeysInObject": {
+ "keys": [
+ "language"
+ ]
+ }
+ },
+ "messages": {
+ "uniqueValueKeysInObjectMessage": "Only one value per language is allowed"
+ }
}
}
},
@@ -292,6 +377,7 @@
"code",
"name",
"description",
+ "footer",
"isShared",
"isDedicated",
"allowedIps",
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 badb8608..152bd16b 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,26 @@
"type": "keyword"
},
"description": {
- "type": "text"
+ "type": "object",
+ "properties": {
+ "language": {
+ "type": "keyword"
+ },
+ "value": {
+ "type": "text"
+ }
+ }
+ },
+ "footer": {
+ "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 82a7e27d..50589e4e 100644
--- a/sonar/modules/organisations/marshmallow/json.py
+++ b/sonar/modules/organisations/marshmallow/json.py
@@ -43,7 +43,8 @@ class OrganisationMetadataSchemaV1(StrictKeysMixin):
pid = PersistentIdentifier()
code = SanitizedUnicode(required=True)
name = SanitizedUnicode(required=True)
- description = SanitizedUnicode()
+ description = fields.List(fields.Dict())
+ footer = 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 27efdb10..166777de 100644
--- a/sonar/modules/organisations/serializers/schemas/export.py
+++ b/sonar/modules/organisations/serializers/schemas/export.py
@@ -25,7 +25,8 @@ 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))
+ footer = 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/footer.html b/sonar/theme/templates/sonar/footer.html
index 5817c810..13a79d5d 100755
--- a/sonar/theme/templates/sonar/footer.html
+++ b/sonar/theme/templates/sonar/footer.html
@@ -15,10 +15,19 @@
along with this program. If not, see .
#}
-