From d4f93a83552980a411e71a2dff70790efc900c6b Mon Sep 17 00:00:00 2001 From: wangf1122 <74916635+wangf1122@users.noreply.github.com> Date: Fri, 5 Apr 2024 10:16:13 -0400 Subject: [PATCH] metadata history viewing with user profile level (#7450) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Allow metadata history viewing with user profile level Co-authored-by: Jose García --- .../fao/geonet/kernel/setting/Settings.java | 3 ++- .../img/metadata_history.png | Bin 0 -> 32148 bytes .../img/metadata_history_config.png | Bin 0 -> 45335 bytes .../system-configuration.md | 13 +++++++++ .../history/GenericMetadataEventListener.java | 2 +- .../api/records/MetadataWorkflowApi.java | 25 +++++++++++++++--- .../api/records/editing/BatchEditsApi.java | 17 ------------ .../components/search/mdview/mdviewModule.js | 2 +- .../resources/catalog/js/CatController.js | 11 ++++++++ .../resources/catalog/locales/ca-admin.json | 4 +-- .../resources/catalog/locales/cs-admin.json | 4 +-- .../resources/catalog/locales/da-admin.json | 4 +-- .../resources/catalog/locales/de-admin.json | 4 +-- .../resources/catalog/locales/en-admin.json | 7 +++-- .../resources/catalog/locales/es-admin.json | 4 +-- .../resources/catalog/locales/fi-admin.json | 4 +-- .../resources/catalog/locales/fr-admin.json | 4 +-- .../resources/catalog/locales/is-admin.json | 4 +-- .../resources/catalog/locales/it-admin.json | 4 +-- .../resources/catalog/locales/ko-admin.json | 4 +-- .../resources/catalog/locales/nl-admin.json | 4 +-- .../resources/catalog/locales/pt-admin.json | 4 +-- .../resources/catalog/locales/ru-admin.json | 4 +-- .../resources/catalog/locales/sk-admin.json | 4 +-- .../resources/catalog/locales/sv-admin.json | 4 +-- .../resources/catalog/locales/zh-admin.json | 4 +-- .../templates/admin/settings/system.html | 22 +++++++++++++++ .../default/templates/recordView/footer.html | 2 +- .../setup/sql/data/data-db-default.sql | 4 ++- .../sql/migrate/v4210/migrate-default.sql | 3 +++ 30 files changed, 116 insertions(+), 59 deletions(-) create mode 100644 docs/manual/docs/administrator-guide/configuring-the-catalog/img/metadata_history.png create mode 100644 docs/manual/docs/administrator-guide/configuring-the-catalog/img/metadata_history_config.png diff --git a/core/src/main/java/org/fao/geonet/kernel/setting/Settings.java b/core/src/main/java/org/fao/geonet/kernel/setting/Settings.java index f64e17ee3bf..01640e6e0e9 100644 --- a/core/src/main/java/org/fao/geonet/kernel/setting/Settings.java +++ b/core/src/main/java/org/fao/geonet/kernel/setting/Settings.java @@ -71,7 +71,6 @@ public class Settings { public static final String SYSTEM_ENABLE_ALL_THESAURUS = "system/metadata/allThesaurus"; public static final String SYSTEM_METADATA_THESAURUS_NAMESPACE = "system/metadata/thesaurusNamespace"; public static final String SYSTEM_METADATA_VALIDATION_REMOVESCHEMALOCATION = "system/metadata/validation/removeSchemaLocation"; - public static final String SYSTEM_METADATA_HISTORY_ENABLED = "system/metadata/history/enabled"; public static final GNSetting SYSTEM_SITE_SVNUUID = new GNSetting("system/site/svnUuid", true); public static final String SYSTEM_INTRANET_NETWORK = "system/intranet/network"; public static final String SYSTEM_INTRANET_NETMASK = "system/intranet/netmask"; @@ -140,6 +139,8 @@ public class Settings { public static final String METADATA_IMPORT_RESTRICT = "metadata/import/restrict"; public static final String METADATA_IMPORT_USERPROFILE = "metadata/import/userprofile"; public static final String METADATA_BATCH_EDITING_ACCESS_LEVEL = "metadata/batchediting/accesslevel"; + public static final String METADATA_HISTORY_ENABLED = "metadata/history/enabled"; + public static final String METADATA_HISTORY_ACCESS_LEVEL = "metadata/history/accesslevel"; public static final String METADATA_PUBLISHED_DELETE_USERPROFILE = "metadata/delete/profilePublishedMetadata"; public static final String METADATA_PUBLISH_USERPROFILE = "metadata/publication/profilePublishMetadata"; public static final String METADATA_UNPUBLISH_USERPROFILE = "metadata/publication/profileUnpublishMetadata"; diff --git a/docs/manual/docs/administrator-guide/configuring-the-catalog/img/metadata_history.png b/docs/manual/docs/administrator-guide/configuring-the-catalog/img/metadata_history.png new file mode 100644 index 0000000000000000000000000000000000000000..a89837bfcbd415eb747b056377fcb0c87bec5738 GIT binary patch literal 32148 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

*1YafeHmfcpX6=Ys&=m!&8}! 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 literal 0 HcmV?d00001 diff --git a/docs/manual/docs/administrator-guide/configuring-the-catalog/system-configuration.md b/docs/manual/docs/administrator-guide/configuring-the-catalog/system-configuration.md index 37a665a169a..9d923dd46d8 100644 --- a/docs/manual/docs/administrator-guide/configuring-the-catalog/system-configuration.md +++ b/docs/manual/docs/administrator-guide/configuring-the-catalog/system-configuration.md @@ -230,6 +230,19 @@ Allows to configure the user profile allowed to publish and un-publish metadata. ![](img/metadata-publication.png) +## Metadata History + +Allows to view metadata history + +![](img/metadata_history.png) + +- **Minimum user profile allowed to view metadata history** Minimum user profile allowed to delete metadata (`Registered User`, `Editor` or `Administrator`). The default value is `Editor`. +![](img/metadata_history_config.png) + +- **Registered User Configuration** The user who has granted view permission to the metadata record can view the history. +- **Editor Configuration** The user who has granted editing permission to the metadata record can view the history. +- **Administrator Configuration** The user who has granted system administrator permission can view the history. + ## Harvesting *Allow editing on harvested records*: Enables/Disables editing of harvested records in the catalogue. By default, harvested records cannot be edited. diff --git a/listeners/src/main/java/org/fao/geonet/listener/history/GenericMetadataEventListener.java b/listeners/src/main/java/org/fao/geonet/listener/history/GenericMetadataEventListener.java index 06299c4be91..b9e052d5e99 100644 --- a/listeners/src/main/java/org/fao/geonet/listener/history/GenericMetadataEventListener.java +++ b/listeners/src/main/java/org/fao/geonet/listener/history/GenericMetadataEventListener.java @@ -70,7 +70,7 @@ public final void handleEvent(AbstractHistoryEvent event) { */ public final void storeContentHistoryEvent(AbstractHistoryEvent event) { - if(settingManager.getValueAsBool(Settings.SYSTEM_METADATA_HISTORY_ENABLED)) { + if(settingManager.getValueAsBool(Settings.METADATA_HISTORY_ENABLED)) { Integer metadataid = Math.toIntExact(event.getMdId()); diff --git a/services/src/main/java/org/fao/geonet/api/records/MetadataWorkflowApi.java b/services/src/main/java/org/fao/geonet/api/records/MetadataWorkflowApi.java index 64f11419545..385253c659a 100644 --- a/services/src/main/java/org/fao/geonet/api/records/MetadataWorkflowApi.java +++ b/services/src/main/java/org/fao/geonet/api/records/MetadataWorkflowApi.java @@ -60,6 +60,7 @@ import org.fao.geonet.kernel.setting.Settings; import org.fao.geonet.repository.*; import org.fao.geonet.util.MetadataPublicationMailNotifier; +import org.fao.geonet.util.UserUtil; import org.fao.geonet.utils.Log; import org.fao.geonet.utils.Xml; import org.jdom.Element; @@ -71,6 +72,7 @@ import org.springframework.data.domain.Sort; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; +import org.springframework.security.access.hierarchicalroles.RoleHierarchy; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @@ -149,6 +151,9 @@ public class MetadataWorkflowApi { @Autowired MetadataPublicationMailNotifier metadataPublicationMailNotifier; + @Autowired + RoleHierarchy roleHierarchy; + // The restore function currently supports these states static final Integer[] supportedRestoreStatuses = { Integer.parseInt(StatusValue.Events.RECORDUPDATED), @@ -635,7 +640,7 @@ public void deleteAllRecordStatus( @io.swagger.v3.oas.annotations.Operation(summary = "Search status", description = "") @RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET, path = "/status/search") @ResponseStatus(value = HttpStatus.OK) - @PreAuthorize("hasAuthority('Editor')") + @PreAuthorize("hasAuthority('RegisteredUser')") @ResponseBody public List getWorkflowStatusByType( @Parameter(description = "One or more types to retrieve (ie. worflow, event, task). Default is all.", @@ -694,6 +699,9 @@ public List getWorkflowStatusByType( ServiceContext context = ApiUtils.createServiceContext(request); Profile profile = context.getUserSession().getProfile(); + String allowedProfileLevel = org.apache.commons.lang.StringUtils.defaultIfBlank(settingManager.getValue(Settings.METADATA_HISTORY_ACCESS_LEVEL), Profile.Editor.toString()); + Profile allowedAccessLevelProfile = Profile.valueOf(allowedProfileLevel); + if (profile != Profile.Administrator) { if (CollectionUtils.isEmpty(recordIdentifier) && CollectionUtils.isEmpty(uuid)) { @@ -704,7 +712,12 @@ public List getWorkflowStatusByType( if (!CollectionUtils.isEmpty(recordIdentifier)) { for (Integer recordId : recordIdentifier) { try { - ApiUtils.canEditRecord(String.valueOf(recordId), request); + if (allowedAccessLevelProfile == Profile.RegisteredUser) { + ApiUtils.canViewRecord(String.valueOf(recordId), request); + } else { + ApiUtils.canEditRecord(String.valueOf(recordId), request); + } + } catch (SecurityException e) { throw new NotAllowedException(ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT); } @@ -713,7 +726,12 @@ public List getWorkflowStatusByType( if (!CollectionUtils.isEmpty(uuid)) { for (String recordId : uuid) { try { - ApiUtils.canEditRecord(recordId, request); + if (allowedAccessLevelProfile == Profile.RegisteredUser) { + ApiUtils.canViewRecord(recordId, request); + } else { + ApiUtils.canEditRecord(recordId, request); + } + } catch (SecurityException e) { throw new NotAllowedException(ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT); } @@ -1310,4 +1328,5 @@ private void changeMetadataStatus(ServiceContext context, AbstractMetadata metad listOfStatusChange.add(metadataStatusValue); sa.onStatusChange(listOfStatusChange, true); } + } diff --git a/services/src/main/java/org/fao/geonet/api/records/editing/BatchEditsApi.java b/services/src/main/java/org/fao/geonet/api/records/editing/BatchEditsApi.java index 63efea7a154..09d038c0fbd 100644 --- a/services/src/main/java/org/fao/geonet/api/records/editing/BatchEditsApi.java +++ b/services/src/main/java/org/fao/geonet/api/records/editing/BatchEditsApi.java @@ -307,21 +307,4 @@ private Pair applyBatchEdits( return Pair.write(report, preview); } - /** - * Checks if the user profile is allowed to batch edit metadata. - * - * @param userSession - */ - private void checkUserProfileToBatchEditMetadata(UserSession userSession) { - if (userSession.getProfile() != Profile.Administrator) { - String allowedUserProfileToImportMetadata = - StringUtils.defaultIfBlank(settingManager.getValue(Settings.METADATA_BATCH_EDITING_ACCESS_LEVEL), Profile.Editor.toString()); - - // Is the user profile is higher than the profile allowed to import metadata? - if (!UserUtil.hasHierarchyRole(allowedUserProfileToImportMetadata, this.roleHierarchy)) { - throw new NotAllowedException("The user has no permissions to batch edit metadata."); - } - } - - } } diff --git a/web-ui/src/main/resources/catalog/components/search/mdview/mdviewModule.js b/web-ui/src/main/resources/catalog/components/search/mdview/mdviewModule.js index f4ec405e092..1310e4a4810 100644 --- a/web-ui/src/main/resources/catalog/components/search/mdview/mdviewModule.js +++ b/web-ui/src/main/resources/catalog/components/search/mdview/mdviewModule.js @@ -105,7 +105,7 @@ gnGlobalSettings.gnCfg.mods.recordview.showStatusTopBarFor; gnConfigService.load().then(function (c) { - $scope.isRecordHistoryEnabled = gnConfig["system.metadata.history.enabled"]; + $scope.isRecordHistoryEnabled = gnConfig["metadata.history.enabled"]; $scope.isPreferGroupLogo = gnConfig["system.metadata.prefergrouplogo"]; var statusSystemRating = gnConfig["system.localrating.enable"]; diff --git a/web-ui/src/main/resources/catalog/js/CatController.js b/web-ui/src/main/resources/catalog/js/CatController.js index 545ef097783..baf6f846d23 100644 --- a/web-ui/src/main/resources/catalog/js/CatController.js +++ b/web-ui/src/main/resources/catalog/js/CatController.js @@ -1862,6 +1862,17 @@ : ""; return angular.isFunction(this[fnName]) ? this[fnName]() : false; }, + canViewMetadataHistory: function () { + var profile = gnConfig["metadata.history.accesslevel"] || "Editor", + fnName = + profile !== "" + ? "is" + profile[0].toUpperCase() + profile.substring(1) + "OrMore" + : ""; + if (profile === "RegisteredUser") { + return true; + } + return angular.isFunction(this[fnName]) ? this[fnName]() : false; + }, canDeletePublishedMetadata: function () { var profile = gnConfig["metadata.delete.profilePublishedMetadata"] || "Editor", diff --git a/web-ui/src/main/resources/catalog/locales/ca-admin.json b/web-ui/src/main/resources/catalog/locales/ca-admin.json index ab9420aeb8a..071f21a5a92 100644 --- a/web-ui/src/main/resources/catalog/locales/ca-admin.json +++ b/web-ui/src/main/resources/catalog/locales/ca-admin.json @@ -734,8 +734,8 @@ "system/metadata/thesaurusNamespace-help": "Based on this pattern, when creating a new thesaurus a namespace will be suggested. The pattern can contain \\{\\{type\\}\\} and \\{\\{filename\\}\\} placeholder for substitution.", "system/metadata/validation/removeSchemaLocation": "Eliminar la locatització de l'esquema per a la validació", "system/metadata/validation/removeSchemaLocation-help": "Si s'activa, amb el valor true, l'atribut schemaLocation en l'element arrel de la metadada s'elimina durant la validació i en desar la metadata. Això assegura que l'schemaLocation utilitzat per a la metadada és sempre l'esquema local.", - "system/metadata/history/enabled": "Habilitar la traçabilitat dels històrics de cada registre", - "system/metadata/history/enabled-help": "Quan s'activa, amb el valor 'true', cada esdeveniment que alteri un registre de metadades és registrat a la base de dades.", + "metadata/history/enabled": "Habilitar la traçabilitat dels històrics de cada registre", + "metadata/history/enabled-help": "Quan s'activa, amb el valor 'true', cada esdeveniment que alteri un registre de metadades és registrat a la base de dades.", "system/metadata/allThesaurus-help": "Si s'habilita, un tesaurus virtual es crearà contenint totes les paraules clau dels altres tesaurus. Això és útil quan el nom del tesaurus no és important i només la paraula clau importa. Per assegurar que els blocs de paraules clau es mantenen (amb el nom correcte del tesaurus), habilitar això també s'habilita una transformació en update-fixed-info que assignarà les paraules claus d'aquest tesaurus virtual a blocs amb el tesaurus correcte.", "system/metadataprivs": "Privilegis de la metadada", "system/metadataprivs/usergrouponly": "Només ajustar privilegis als grups de l'usuari", diff --git a/web-ui/src/main/resources/catalog/locales/cs-admin.json b/web-ui/src/main/resources/catalog/locales/cs-admin.json index 91620e88d68..328e7ed4adf 100644 --- a/web-ui/src/main/resources/catalog/locales/cs-admin.json +++ b/web-ui/src/main/resources/catalog/locales/cs-admin.json @@ -734,8 +734,8 @@ "system/metadata/thesaurusNamespace-help": "Na základě tohoto vzoru bude při vytváření nového tezauru navržen jmenný prostor. Vzor může obsahovat zástupný symbol \\{\\{type\\}\\} a \\{\\{filename\\}\\} pro nahrazení.", "system/metadata/validation/removeSchemaLocation": "Odebrat schéma umístění pro ověření", "system/metadata/validation/removeSchemaLocation-help": "Je-li pravda, atribut schemaLocation v kořenovém elementu metadat je během ověřování a ukládání metadat odstraněn. Zaručuje, že schemaLocation použité pro metadata je vždy lokální schéma", - "system/metadata/history/enabled": "Povolit záznam historie záznamů", - "system/metadata/history/enabled-help": "Pokud je to pravda, je v databázi registrována každá událost, která mění záznamy metadat.", + "metadata/history/enabled": "Povolit záznam historie záznamů", + "metadata/history/enabled-help": "Pokud je to pravda, je v databázi registrována každá událost, která mění záznamy metadat.", "system/metadata/allThesaurus-help": "Pokud to platí, bude vytvořen virtuální tezaurus obsahující všechna klíčová slova ve všech ostatních tezaurech. To je užitečné v editoru, kdy není důležitý název tezauru, ale pouze klíčové slovo. Aby bylo možné zajistit uchování správných skupin klíčových slov (se správným názvem tezauru) aktivace této funkce rovněž umožní transformaci do aktualizovat-stanovené-info (update-fixed-info), kterým se přiřadí klíčové slovo do tezauru 'všechny' ke skupinám klíčových slov s odpovídajícím tezaurem pro dané klíčové slovo", "system/metadataprivs": "Výhradní práva k metadatům", "system/metadataprivs/usergrouponly": "Pouze nastavit výhradní práva ke skupinám uživatele", diff --git a/web-ui/src/main/resources/catalog/locales/da-admin.json b/web-ui/src/main/resources/catalog/locales/da-admin.json index 2590b5bf6af..3468aaf66d3 100644 --- a/web-ui/src/main/resources/catalog/locales/da-admin.json +++ b/web-ui/src/main/resources/catalog/locales/da-admin.json @@ -734,8 +734,8 @@ "system/metadata/thesaurusNamespace-help": "Når en ny tesaurus skabes, bliver et namespace baseret på dette mønster foreslået. ", "system/metadata/validation/removeSchemaLocation": "Fjern skemaplacering for validering", "system/metadata/validation/removeSchemaLocation-help": "Hvis sandt, fjernes schemaLocation-attributten i metadataens rod-element under valideringsprocessen og ved lagring af metadata. Det sikrer, at skemaplaceringen, der bruges til metadataene, altid er det lokale skema", - "system/metadata/history/enabled": "Aktiver håndtering af historiske poster", - "system/metadata/history/enabled-help": "Hvis denne er sand, registreres ethvert event, som ændrer metadata-instanserne.", + "metadata/history/enabled": "Aktiver håndtering af historiske poster", + "metadata/history/enabled-help": "Hvis denne er sand, registreres ethvert event, som ændrer metadata-instanserne.", "system/metadata/allThesaurus-help": "Hvis slået til, oprettes der en virtuel thesaurus, der indeholder alle søgeord i alle andre thesauri. Dette er nyttigt i editoren, når navnet på thesaurusen er ubetydeligt, og kun nøgleordet er vigtigt. For at sikre, at de korrekte nøgleordsblokke vedligeholdes (med korrekt thesaurus navn) aktiverer denne indstilling også en transformation i update-fixed-info, der vil tildele søgeordet i 'alle' thesaurus til nøgleordsblokke med den korrekte thesaurus som nøgleord.", "system/metadataprivs": "Metadata privilegier", "system/metadataprivs/usergrouponly": "Indstil kun privilegier til brugerens grupper", diff --git a/web-ui/src/main/resources/catalog/locales/de-admin.json b/web-ui/src/main/resources/catalog/locales/de-admin.json index 1b1ed8154a6..a51133461ae 100644 --- a/web-ui/src/main/resources/catalog/locales/de-admin.json +++ b/web-ui/src/main/resources/catalog/locales/de-admin.json @@ -734,8 +734,8 @@ "system/metadata/thesaurusNamespace-help": "Basierend auf diesem Muster wird beim Erstellen eines neuen Thesaurus ein Namensraum vorgeschlagen. Das Muster kann die Platzhalter \\{\\{type\\}\\} und \\{\\{filename\\}\\} für die Ersetzung enthalten.", "system/metadata/validation/removeSchemaLocation": "Entfernen Sie den Schemapfad zur Validierung", "system/metadata/validation/removeSchemaLocation-help": "Wenn zutreffend (true), wird das schemaLocation-Attribut im Stammelement der Metadaten während der Validierung und beim Speichern der Metadaten entfernt. Dadurch wird sichergestellt, dass die für die Metadaten verwendete schemaLocation immer das lokale Schema ist", - "system/metadata/history/enabled": "Aktivieren der Aufzeichnung der History", - "system/metadata/history/enabled-help": "Wenn zutreffend (true), wird jedes Ereignis, das Metadatensätze ändert, in der Datenbank registriert.", + "metadata/history/enabled": "Aktivieren der Aufzeichnung der History", + "metadata/history/enabled-help": "Wenn zutreffend (true), wird jedes Ereignis, das Metadatensätze ändert, in der Datenbank registriert.", "system/metadata/allThesaurus-help": "Wenn das Feld ausgewählt ist, wird ein virtueller Thesaurus generiert, der alle Schlagwörter aller anderen Thesauri enthält. Dies ist nützlich im Editor, wenn der Name des Thesaurus unwichtig ist und nur die Schlagwörter von Bedeutung sind. Um sicherzustellen, dass die richtigen Schlagwort-Blöcke (des korrekten Thesaurus-Namens) bearbeitet werden, wird gleichzeitig eine Transformation in update-fixed-info.xsl durchgeführt.", "system/metadataprivs": "Metadaten Berechtigungen", "system/metadataprivs/usergrouponly": "Nur Berechtigungen an die Gruppen der Nutzer vergeben", diff --git a/web-ui/src/main/resources/catalog/locales/en-admin.json b/web-ui/src/main/resources/catalog/locales/en-admin.json index 4576cd2631d..9975a4ecdaf 100644 --- a/web-ui/src/main/resources/catalog/locales/en-admin.json +++ b/web-ui/src/main/resources/catalog/locales/en-admin.json @@ -724,8 +724,8 @@ "system/metadata/thesaurusNamespace-help": "Based on this pattern, when creating a new thesaurus a namespace will be suggested. The pattern can contain \\{\\{type\\}\\} and \\{\\{filename\\}\\} placeholder for substitution.", "system/metadata/validation/removeSchemaLocation": "Remove schema location for validation", "system/metadata/validation/removeSchemaLocation-help": "If true, the schemaLocation attribute in root element of the metadata is removed during validation and on metadata save. It ensures that the schemaLocation used for the metadata is always the local schema one", - "system/metadata/history/enabled": "Enable record history recording", - "system/metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", + "metadata/history/enabled": "Enable record history recording", + "metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", "system/metadata/allThesaurus-help": "If true then a virtual thesaurus will be created that contains all keywords in all other thesauri. This is useful in editor when the name of the thesaurus is unimportant and only the keyword is important. In order to ensure that the correct keyword blocks are maintained (with correct thesaurus name) enabling this will also enable a transform in update-fixed-info that will assign the keyword in the 'all' thesaurus to keyword blocks with the correct thesaurus for the keyword", "system/metadataprivs": "Metadata privileges", "system/metadataprivs/usergrouponly": "Only set privileges to user's groups", @@ -876,6 +876,9 @@ "metadata/publication/profilePublishMetadata-help": "Minimum user profile allowed to publish metadata (Reviewer or Administrator). The default value is Reviewer.", "metadata/publication/profileUnpublishMetadata": "Minimum user profile allowed to un-publish metadata", "metadata/publication/profileUnpublishMetadata-help": "Minimum user profile allowed to un-publish metadata (Reviewer or Administrator). The default value is Reviewer.", + "metadata/history": "Metadata History", + "metadata/history/accesslevel": "Select the minimum user profile allowed to view metadata history", + "metadata/history/accesslevel-help": "Select the user profile allowed to view metadata history (Registered User, Editor or Administrator). The Registered User configuration can view the history with view permission granted to the metadata record. The Editor configuration can view the history with editing permission granted to the metadata record. The default value is Editor.", "filterStatusByAuthor":"Status author", "filterStatusByOwner":"Status owner", "filterStatusByRecordId":"Record identifier", diff --git a/web-ui/src/main/resources/catalog/locales/es-admin.json b/web-ui/src/main/resources/catalog/locales/es-admin.json index 3febc89408f..e60c631cf14 100644 --- a/web-ui/src/main/resources/catalog/locales/es-admin.json +++ b/web-ui/src/main/resources/catalog/locales/es-admin.json @@ -734,8 +734,8 @@ "system/metadata/thesaurusNamespace-help": "Based on this pattern, when creating a new thesaurus a namespace will be suggested. The pattern can contain \\{\\{type\\}\\} and \\{\\{filename\\}\\} placeholder for substitution.", "system/metadata/validation/removeSchemaLocation": "Eliminar la ubicación del esquema para la validación", "system/metadata/validation/removeSchemaLocation-help": "Si es verdadero, el atributo schemaLocation en el elemento raíz del metadato se elimina durante la validación y el guardado del metadato. Asegura que schemaLocation utilizado para el metadato es siempre uno en el esquema local", - "system/metadata/history/enabled": "Habilitar el registro del historial de grabación", - "system/metadata/history/enabled-help": "Cuando es verdadero, todos los eventos que alteran los registros de metadatos se registran en la base de datos.", + "metadata/history/enabled": "Habilitar el registro del historial de grabación", + "metadata/history/enabled-help": "Cuando es verdadero, todos los eventos que alteran los registros de metadatos se registran en la base de datos.", "system/metadata/allThesaurus-help": "Si se habilita, un tesauro virtual se creará conteniendo todas las palabras clave de los otros tesauros. Esto es útil cuando el nombre del tesauro no es importante y sólo la palabra clave importa. Para asegurar que los bloques de palabras claves se mantienen (con el nombre correcto del tesauro), habilitar esto también habilita una transformación en update-fixed-info que asignará las palabras claves de este tesauro virtual a bloques con el tesauro correcto.", "system/metadataprivs": "Privilegios del metadato", "system/metadataprivs/usergrouponly": "Sólo ajustar privilegios a los grupos del usuario", diff --git a/web-ui/src/main/resources/catalog/locales/fi-admin.json b/web-ui/src/main/resources/catalog/locales/fi-admin.json index fd87df15fb7..2ed68f1dba4 100644 --- a/web-ui/src/main/resources/catalog/locales/fi-admin.json +++ b/web-ui/src/main/resources/catalog/locales/fi-admin.json @@ -734,8 +734,8 @@ "system/metadata/thesaurusNamespace-help": "Based on this pattern, when creating a new thesaurus a namespace will be suggested. The pattern can contain \\{\\{type\\}\\} and \\{\\{filename\\}\\} placeholder for substitution.", "system/metadata/validation/removeSchemaLocation": "Remove schema location for validation", "system/metadata/validation/removeSchemaLocation-help": "If true, the schemaLocation attribute in root element of the metadata is removed during validation and on metadata save. It ensures that the schemaLocation used for the metadata is always the local schema one", - "system/metadata/history/enabled": "Enable record history recording", - "system/metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", + "metadata/history/enabled": "Enable record history recording", + "metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", "system/metadata/allThesaurus-help": "Valittuna virtuaalinen, kaikkien tesaurusten avainsanat sisältävä, tesaurus luodaan. Tämä on hyödyllistä editorissa, jossa tesauruksen nimellä ei ole merkitystä. Lisäohje:\nIn order to ensure that the correct keyword blocks are maintained (with correct thesaurus name) enabling this will also enable a transform in update-fixed-info that will assign the keyword in the 'all' thesaurus to keyword blocks with the correct thesaurus for the keyword", "system/metadataprivs": "Oikeudet metatietoihin", "system/metadataprivs/usergrouponly": "Aseta oikeudet vain käyttäjän ryhmille", diff --git a/web-ui/src/main/resources/catalog/locales/fr-admin.json b/web-ui/src/main/resources/catalog/locales/fr-admin.json index 9a51efe27e3..fb811d87946 100644 --- a/web-ui/src/main/resources/catalog/locales/fr-admin.json +++ b/web-ui/src/main/resources/catalog/locales/fr-admin.json @@ -734,8 +734,8 @@ "system/metadata/thesaurusNamespace-help": "En fonction du modèle, lors de la création d'un nouveau thésaurus, un espace de nom sera proposé automatiquement. Le modèle peut contenir \\{\\{type\\}\\} et \\{\\{filename\\}\\} pour être substituté.", "system/metadata/validation/removeSchemaLocation": "Supprimer l'adresse du schéma XSD pour la validation (@xsi:schemaLocation).", "system/metadata/validation/removeSchemaLocation-help": "Si sélectionné, l'attribut schemaLocation est supprimé de l'élément racine du XML. Cela permet d'utiliser systématiquement le schéma XSD interne définit par le plugin.", - "system/metadata/history/enabled": "Activer l'historique des fiches", - "system/metadata/history/enabled-help": "Une fois actif, les événements réalisés sur la fiche sont enregistrés en base de données.", + "metadata/history/enabled": "Activer l'historique des fiches", + "metadata/history/enabled-help": "Une fois actif, les événements réalisés sur la fiche sont enregistrés en base de données.", "system/metadata/allThesaurus-help": "Si sélectionné, un thésaurus virtuel est créé contenant tous les mots clés de tous les thésaurus. Cela est utilisé dans l'éditeur quand le nom du thésaurus n'est pas important. Lorsque cette option est activée, les mots clés sont répartis dans les thésaurus lors de la sauvegarde (dans le processus update-fixed-info).", "system/metadataprivs": "Gestion des privilèges", "system/metadataprivs/usergrouponly": "Définir uniquement les privilèges pour les groupes de l'utilisateur", diff --git a/web-ui/src/main/resources/catalog/locales/is-admin.json b/web-ui/src/main/resources/catalog/locales/is-admin.json index c66fac9991d..ecdf10055f6 100644 --- a/web-ui/src/main/resources/catalog/locales/is-admin.json +++ b/web-ui/src/main/resources/catalog/locales/is-admin.json @@ -734,8 +734,8 @@ "system/metadata/thesaurusNamespace-help": "Based on this pattern, when creating a new thesaurus a namespace will be suggested. The pattern can contain \\{\\{type\\}\\} and \\{\\{filename\\}\\} placeholder for substitution.", "system/metadata/validation/removeSchemaLocation": "Fjarlægja skema staðsetningu fyrir gæðamat", "system/metadata/validation/removeSchemaLocation-help": "Ef satt, er schemaLocation eigindið í rótarþætti lýsigagnanna fjarlægt á meðan á gæðamati stendur og lýsigögn vistuð. Það tryggir að schemaLocation sem notað er fyrir lýsigögnin er alltaf staðbundna skemað", - "system/metadata/history/enabled": "Enable record history recording", - "system/metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", + "metadata/history/enabled": "Enable record history recording", + "metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", "system/metadata/allThesaurus-help": "Ef rétt þá verður búinn til sýndarhugtakalisti sem inniheldur öll leitarorð annarra hugtakalista. Þetta er gagnlegt í breytiham þegar nafn hugtakalistans skiptir ekki máli og einungis leitarorðið er mikilvægt. Til að tryggja að réttum leitarorðabálki sé haldið við (með réttu nafni á hugtakalista) mun það að virkja þetta einnig virkja ummyndun í update-fixed-info sem mun úthluta leitarorðinu í 'all' hugtakalistanum í leitarorðalista með réttum hugtakalista fyrir leitarorðið", "system/metadataprivs": "Lýsigögn sérrettindi", "system/metadataprivs/usergrouponly": "Aðeins stilla sérrettindi á notendahópa", diff --git a/web-ui/src/main/resources/catalog/locales/it-admin.json b/web-ui/src/main/resources/catalog/locales/it-admin.json index 6f07b9ad06c..7cb625fc81f 100644 --- a/web-ui/src/main/resources/catalog/locales/it-admin.json +++ b/web-ui/src/main/resources/catalog/locales/it-admin.json @@ -734,8 +734,8 @@ "system/metadata/thesaurusNamespace-help": "Based on this pattern, when creating a new thesaurus a namespace will be suggested. The pattern can contain \\{\\{type\\}\\} and \\{\\{filename\\}\\} placeholder for substitution.", "system/metadata/validation/removeSchemaLocation": "Rimuovi il percorso dello schema per la validazione", "system/metadata/validation/removeSchemaLocation-help": "Se impostato, l'attributo schemaLocation nell'elemento root dei metadati viene rimosso durante la convalida e il salvataggio dei metadati. Per la validazione, auindi, verrà utilizzato uno schema locale", - "system/metadata/history/enabled": "Enable record history recording", - "system/metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", + "metadata/history/enabled": "Enable record history recording", + "metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", "system/metadata/allThesaurus-help": "Se è vero, verrà creato un thesaurus virtuale contenente tutte le parole chiave degli altri thesauri. Questo è utile nell'editor quando il nome del thesaurus non è importante e solo la parola chiave è importante. Per garantire che i blocchi di parole chiave corretti siano mantenuti (con il nome del thesaurus corretto), abilitando questa opzione si abiliterà anche una trasformazione in update-fixed-info che assegnerà la parola chiave nel thesaurus 'all' a blocchi di parole chiave con il thesaurus corretto per la parola chiave", "system/metadataprivs": "Privilegi sui metadati", "system/metadataprivs/usergrouponly": "Imposta solo i privilegi ai gruppi utente", diff --git a/web-ui/src/main/resources/catalog/locales/ko-admin.json b/web-ui/src/main/resources/catalog/locales/ko-admin.json index d4b3ba34a77..9d5ecdc7f5f 100644 --- a/web-ui/src/main/resources/catalog/locales/ko-admin.json +++ b/web-ui/src/main/resources/catalog/locales/ko-admin.json @@ -734,8 +734,8 @@ "system/metadata/thesaurusNamespace-help": "Based on this pattern, when creating a new thesaurus a namespace will be suggested. The pattern can contain \\{\\{type\\}\\} and \\{\\{filename\\}\\} placeholder for substitution.", "system/metadata/validation/removeSchemaLocation": "유효성 검증을 위해 스키마 위치 제거", "system/metadata/validation/removeSchemaLocation-help": "true인 경우 유효성 검사 및 메타 데이터 저장시 메타데이터의 루트 요소에 있는 schemaLocation 속성이 제거됩니다. 이는 메타데이터에 사용된 스키마 위치가 항상 로컬 스키마임을 보장합니다.", - "system/metadata/history/enabled": "Enable record history recording", - "system/metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", + "metadata/history/enabled": "Enable record history recording", + "metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", "system/metadata/allThesaurus-help": "만약 true이면 가상 동의어 사전은 다른 동의어 사전의 모든 티워드를 포함하여 생성될 것입니다. 이는 편집시에 동의어 사전의 유형은 중요하지 않고 키워드 만이 중요할때 유용하게 사용됩니다. 정확한 키워드 블럭의 (정확한 어구 이름으로) 유지되는 지를 확인합니다. 이것은 또한 키워드에 대한 올바른 시소러스와 블록을 키워드 'all'동의어 사전에 키워드를 할당합니다. update-fixed-info의 변환을 가능하게 할 것이다", "system/metadataprivs": "메타데이터 권한", "system/metadataprivs/usergrouponly": "사용자 그룹에 대한 권한 설정", diff --git a/web-ui/src/main/resources/catalog/locales/nl-admin.json b/web-ui/src/main/resources/catalog/locales/nl-admin.json index 48ea7d5c456..4d6e2106c87 100644 --- a/web-ui/src/main/resources/catalog/locales/nl-admin.json +++ b/web-ui/src/main/resources/catalog/locales/nl-admin.json @@ -734,8 +734,8 @@ "system/metadata/thesaurusNamespace-help": "Op basis van dit patroon zal een namespace worden gesuggereerd wanneer een nieuwe thesaurus wordt aangemaakt. Het patroon kan placeholders \\{\\{type\\}\\} en \\{\\{filename\\}\\} bevatten ter vervanging.", "system/metadata/validation/removeSchemaLocation": "Verwijder schema locatie voorafgaand aan validatie", "system/metadata/validation/removeSchemaLocation-help": "Indien waar, wordt het attribuut schemaLocation in het hoofdelement van de metadata verwijderd tijdens validatie en bij het opslaan van metadata. Het zorgt ervoor dat de schemaLocation die voor de metadata wordt gebruikt altijd het lokale schema is", - "system/metadata/history/enabled": "Activeer opslag van record historie", - "system/metadata/history/enabled-help": "Alle mutatie activiteit rond een record wordt opgeslagen in de database", + "metadata/history/enabled": "Activeer opslag van record historie", + "metadata/history/enabled-help": "Alle mutatie activiteit rond een record wordt opgeslagen in de database", "system/metadata/allThesaurus-help": "Indien ingeschakeld zal een virtuele thesaurus aangemaakt worden die alle sleutelwoorden uit andere thesauri bevat. Dit is handig in de editor wanneer de naam van de thesaurus onbelangrijk is en enkel het sleutelwoord van belang is. Om ervoor te zorgen dat de correcte sleutelwoord blokken worden behouden (met een correcte thesaurus naam) zorgt dit er ook voor dat een transformatie in update-fixed-info ingeschakeld wordt dat het sleutelwoord in de 'all' thesaurus toewijst aan sleutelwoord blokken met de correcte thesaurus voor het sleutelwoord.", "system/metadataprivs": "metadata privileges", "system/metadataprivs/usergrouponly": "Stel alleen rechten in voor de groepen van de gebruiker", diff --git a/web-ui/src/main/resources/catalog/locales/pt-admin.json b/web-ui/src/main/resources/catalog/locales/pt-admin.json index b6608c534b2..111f6d9ff32 100644 --- a/web-ui/src/main/resources/catalog/locales/pt-admin.json +++ b/web-ui/src/main/resources/catalog/locales/pt-admin.json @@ -734,8 +734,8 @@ "system/metadata/thesaurusNamespace-help": "Based on this pattern, when creating a new thesaurus a namespace will be suggested. The pattern can contain \\{\\{type\\}\\} and \\{\\{filename\\}\\} placeholder for substitution.", "system/metadata/validation/removeSchemaLocation": "Remover esquema de localização para validação", "system/metadata/validation/removeSchemaLocation-help": "Se verdadeiro, o atributo schemaLocation no elemento root do metadado é removido durante a validação e no metadado salvo. Isto assegura que o schemaLocation usado para o metadado é sempre igual ao esquema local.", - "system/metadata/history/enabled": "Habilitar gravação de histórico de registros", - "system/metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", + "metadata/history/enabled": "Habilitar gravação de histórico de registros", + "metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", "system/metadata/allThesaurus-help": "Se habilitado, um dicionário de sinônimos virtual que contém palavras-chave em todos outros dicionários será criado. Isso é útil no editor quando o nome do dicionário não é importante e somente a palavra-chave importa. A fim de garantir que blocos de palavra-chave corretos são mantidos (com o nome correto do dicionário) isso também habilitará a transformação em update-fixed-info que sa", "system/metadataprivs": "Privilégios de metadados", "system/metadataprivs/usergrouponly": "Só atribua privilégios aos grupos de usuários", diff --git a/web-ui/src/main/resources/catalog/locales/ru-admin.json b/web-ui/src/main/resources/catalog/locales/ru-admin.json index 49505765f6e..dcc559696dc 100644 --- a/web-ui/src/main/resources/catalog/locales/ru-admin.json +++ b/web-ui/src/main/resources/catalog/locales/ru-admin.json @@ -734,8 +734,8 @@ "system/metadata/thesaurusNamespace-help": "Based on this pattern, when creating a new thesaurus a namespace will be suggested. The pattern can contain \\{\\{type\\}\\} and \\{\\{filename\\}\\} placeholder for substitution.", "system/metadata/validation/removeSchemaLocation": "Remove schema location for validation", "system/metadata/validation/removeSchemaLocation-help": "If true, the schemaLocation attribute in root element of the metadata is removed during validation and on metadata save. It ensures that the schemaLocation used for the metadata is always the local schema one", - "system/metadata/history/enabled": "Enable record history recording", - "system/metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", + "metadata/history/enabled": "Enable record history recording", + "metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", "system/metadata/allThesaurus-help": "If true then a virtual thesaurus will be created that contains all keywords in all other thesauri. This is useful in editor when the name of the thesaurus is unimportant and only the keyword is important. In order to ensure that the correct keyword blocks are maintained (with correct thesaurus name) enabling this will also enable a transform in update-fixed-info that will assign the keyword in the 'all' thesaurus to keyword blocks with the correct thesaurus for the keyword", "system/metadataprivs": "Metadata privileges", "system/metadataprivs/usergrouponly": "Only set privileges to user's groups", diff --git a/web-ui/src/main/resources/catalog/locales/sk-admin.json b/web-ui/src/main/resources/catalog/locales/sk-admin.json index 77e7b75ea6f..ee0cd278abb 100644 --- a/web-ui/src/main/resources/catalog/locales/sk-admin.json +++ b/web-ui/src/main/resources/catalog/locales/sk-admin.json @@ -734,8 +734,8 @@ "system/metadata/thesaurusNamespace-help": "Based on this pattern, when creating a new thesaurus a namespace will be suggested. The pattern can contain \\{\\{type\\}\\} and \\{\\{filename\\}\\} placeholder for substitution.", "system/metadata/validation/removeSchemaLocation": "Remove schema location for validation", "system/metadata/validation/removeSchemaLocation-help": "If true, the schemaLocation attribute in root element of the metadata is removed during validation and on metadata save. It ensures that the schemaLocation used for the metadata is always the local schema one", - "system/metadata/history/enabled": "Enable record history recording", - "system/metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", + "metadata/history/enabled": "Enable record history recording", + "metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", "system/metadata/allThesaurus-help": "Pokiaľ to platí, bude vytvorený virtuálne tezaurus obsahujúci všetky kľúčové slová vo všetkých ostatných tezauroch. To je užitočné v editore, kedy nie je dôležitý názov tezauru, ale len kľúčové slovo. Aby bolo možné zaistiť uchovanie správnych skupín kľúčových slov (so správnym názvom tezauru) aktivácia tejto funkcie rovnako umožní transformáciu do aktualizovať-stanovené-info (update-fixed-info), ktorým sa priradí kľúčové slovo do tezauru 'všetky' ku skupinám kľúčových slov s odpovedajúcim tezaurom pre dané kľúčové slovo", "system/metadataprivs": "Výhradné práva k metaúdajom", "system/metadataprivs/usergrouponly": "Len nastaviť výhradné práva ku skupinám užívateľa", diff --git a/web-ui/src/main/resources/catalog/locales/sv-admin.json b/web-ui/src/main/resources/catalog/locales/sv-admin.json index d66588f5f65..c05cc6161c2 100644 --- a/web-ui/src/main/resources/catalog/locales/sv-admin.json +++ b/web-ui/src/main/resources/catalog/locales/sv-admin.json @@ -734,8 +734,8 @@ "system/metadata/thesaurusNamespace-help": "Based on this pattern, when creating a new thesaurus a namespace will be suggested. The pattern can contain \\{\\{type\\}\\} and \\{\\{filename\\}\\} placeholder for substitution.", "system/metadata/validation/removeSchemaLocation": "Ta bort schemaplats för validering", "system/metadata/validation/removeSchemaLocation-help": "Om sann tas schemaLocation-attributet i rotelementet i metadata bort under validering och när metadata sparas. Det säkerställer att schemaLocation som används för metadata alltid är det lokala schemat", - "system/metadata/history/enabled": "Aktivera registrering av historik", - "system/metadata/history/enabled-help": "Om sann registreras varje händelse som ändrar metadataposter i databasen.", + "metadata/history/enabled": "Aktivera registrering av historik", + "metadata/history/enabled-help": "Om sann registreras varje händelse som ändrar metadataposter i databasen.", "system/metadata/allThesaurus-help": "Om sann kommer en virtuell tesaurus att skapas som innehåller alla nyckelord i alla andra tesaurier. Detta är användbart i redigeraren när namnet på ordboken är oviktigigt och bara nyckelordet är viktigt. För att säkerställa att de korrekta sökordsblocken upprätthålls (med rätt ordboksnamn), vilket också möjliggör en omvandling i uppdateringsfix-information som kommer att tilldela nyckelordet i "all" samtal till nyckelordblock med rätt tesaurus för nyckelord", "system/metadataprivs": "Metadatarättigheter", "system/metadataprivs/usergrouponly": "Ange rättigheter endast för användargrupper", diff --git a/web-ui/src/main/resources/catalog/locales/zh-admin.json b/web-ui/src/main/resources/catalog/locales/zh-admin.json index 339bc58530a..30a02fec772 100644 --- a/web-ui/src/main/resources/catalog/locales/zh-admin.json +++ b/web-ui/src/main/resources/catalog/locales/zh-admin.json @@ -734,8 +734,8 @@ "system/metadata/thesaurusNamespace-help": "Based on this pattern, when creating a new thesaurus a namespace will be suggested. The pattern can contain \\{\\{type\\}\\} and \\{\\{filename\\}\\} placeholder for substitution.", "system/metadata/validation/removeSchemaLocation": "Remove schema location for validation", "system/metadata/validation/removeSchemaLocation-help": "If true, the schemaLocation attribute in root element of the metadata is removed during validation and on metadata save. It ensures that the schemaLocation used for the metadata is always the local schema one", - "system/metadata/history/enabled": "Enable record history recording", - "system/metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", + "metadata/history/enabled": "Enable record history recording", + "metadata/history/enabled-help": "When true, every event that alters metadata records is registered in the database.", "system/metadata/allThesaurus-help": "If true then a virtual thesaurus will be created that contains all keywords in all other thesauri. This is useful in editor when the name of the thesaurus is unimportant and only the keyword is important. In order to ensure that the correct keyword blocks are maintained (with correct thesaurus name) enabling this will also enable a transform in update-fixed-info that will assign the keyword in the 'all' thesaurus to keyword blocks with the correct thesaurus for the keyword", "system/metadataprivs": "元数据特权", "system/metadataprivs/usergrouponly": "只设置用户组的权限", diff --git a/web-ui/src/main/resources/catalog/templates/admin/settings/system.html b/web-ui/src/main/resources/catalog/templates/admin/settings/system.html index 31031173e0c..aaffb3e8be2 100644 --- a/web-ui/src/main/resources/catalog/templates/admin/settings/system.html +++ b/web-ui/src/main/resources/catalog/templates/admin/settings/system.html @@ -254,6 +254,28 @@

{{section2.name | translate}}

+ +
diff --git a/web/src/main/webapp/WEB-INF/classes/setup/sql/data/data-db-default.sql b/web/src/main/webapp/WEB-INF/classes/setup/sql/data/data-db-default.sql index 0898fab126b..ed96794648e 100644 --- a/web/src/main/webapp/WEB-INF/classes/setup/sql/data/data-db-default.sql +++ b/web/src/main/webapp/WEB-INF/classes/setup/sql/data/data-db-default.sql @@ -651,7 +651,7 @@ INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('metadata/vcs/enable', 'false', 2, 9161, 'n'); INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/metadata/validation/removeSchemaLocation', 'false', 2, 9170, 'n'); -INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/metadata/history/enabled', 'false', 2, 9171, 'n'); +INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('metadata/history/enabled', 'false', 2, 9171, 'n'); INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/metadatacreate/generateUuid', 'true', 2, 9100, 'n'); INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/metadatacreate/preferredGroup', '', 1, 9105, 'n'); INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/metadatacreate/preferredTemplate', '', 0, 9106, 'n'); @@ -697,6 +697,8 @@ INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('metada INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('metadata/batchediting/accesslevel', 'Editor', 0, 12020, 'n'); +INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('metadata/history/accesslevel', 'Editor', 0, 12021, 'n'); + INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('metadata/delete/profilePublishedMetadata', 'Editor', 0, 12011, 'n'); INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('metadata/publication/profilePublishMetadata', 'Reviewer', 0, 12021, 'n'); diff --git a/web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v4210/migrate-default.sql b/web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v4210/migrate-default.sql index 4cf2cee3af6..d3090e13c6f 100644 --- a/web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v4210/migrate-default.sql +++ b/web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v4210/migrate-default.sql @@ -2,3 +2,6 @@ UPDATE Metadata SET data = replace(data, 'http://standards.iso.org/iso/19115/-3/ UPDATE Settings SET value='4.2.10' WHERE name='system/platform/version'; UPDATE Settings SET value='SNAPSHOT' WHERE name='system/platform/subVersion'; + +UPDATE settings SET name='metadata/history/enabled' WHERE name='system/metadata/history/enabled' +INSERT INTO Settings (name, value, datatype, position, internal) SELECT distinct 'metadata/history/accesslevel', 'Editor', 0, 12021, 'n' from settings WHERE NOT EXISTS (SELECT name FROM Settings WHERE name = 'metadata/history/accesslevel');