From b00a0f5be9b28a4e44d35514503b4cf7acc22ec9 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Wed, 29 Mar 2023 17:56:48 +0200 Subject: [PATCH] 100553: Added extra regex validation to prevent users from adding namespaces, elements and qualifiers with spaces Minor fixes: - Metadata Registry's name field was not being emptied after successful submission - The first input from both forms both had the red error border after clearing the fields --- .../metadata-schema-form.component.spec.ts | 4 +++- .../metadata-schema-form.component.ts | 11 ++++++++--- .../metadata-field-form.component.spec.ts | 4 +++- .../metadata-field-form.component.ts | 15 +++++++++++++-- src/assets/i18n/en.json5 | 6 ++++++ 5 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.spec.ts b/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.spec.ts index 8d416c2df8..98e98a6646 100644 --- a/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.spec.ts +++ b/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.spec.ts @@ -29,7 +29,9 @@ describe('MetadataSchemaFormComponent', () => { createFormGroup: () => { return { patchValue: () => { - } + }, + markAsUntouched(opts?: any) { + }, }; } }; diff --git a/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.ts b/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.ts index 5c6885ae72..adb649696c 100644 --- a/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.ts +++ b/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.ts @@ -77,10 +77,10 @@ export class MetadataSchemaFormComponent implements OnInit, OnDestroy { } ngOnInit() { - combineLatest( + combineLatest([ this.translateService.get(`${this.messagePrefix}.name`), this.translateService.get(`${this.messagePrefix}.namespace`) - ).subscribe(([name, namespace]) => { + ]).subscribe(([name, namespace]) => { this.name = new DynamicInputModel({ id: 'name', label: name, @@ -97,8 +97,12 @@ export class MetadataSchemaFormComponent implements OnInit, OnDestroy { name: 'namespace', validators: { required: null, + pattern: '^[^.]*$', }, required: true, + errorMessages: { + pattern: 'error.validation.metadata.namespace.invalid-pattern', + }, }); this.formModel = [ new DynamicFormGroupModel( @@ -163,9 +167,10 @@ export class MetadataSchemaFormComponent implements OnInit, OnDestroy { * Reset all input-fields to be empty */ clearFields() { + this.formGroup.markAsUntouched(); this.formGroup.patchValue({ metadatadataschemagroup:{ - prefix: '', + name: '', namespace: '' } }); diff --git a/src/app/admin/admin-registries/metadata-schema/metadata-field-form/metadata-field-form.component.spec.ts b/src/app/admin/admin-registries/metadata-schema/metadata-field-form/metadata-field-form.component.spec.ts index e13180d633..fcd8dd395d 100644 --- a/src/app/admin/admin-registries/metadata-schema/metadata-field-form/metadata-field-form.component.spec.ts +++ b/src/app/admin/admin-registries/metadata-schema/metadata-field-form/metadata-field-form.component.spec.ts @@ -39,7 +39,9 @@ describe('MetadataFieldFormComponent', () => { createFormGroup: () => { return { patchValue: () => { - } + }, + markAsUntouched(opts?: any) { + }, }; } }; diff --git a/src/app/admin/admin-registries/metadata-schema/metadata-field-form/metadata-field-form.component.ts b/src/app/admin/admin-registries/metadata-schema/metadata-field-form/metadata-field-form.component.ts index 1c000c3c76..14013f3cb7 100644 --- a/src/app/admin/admin-registries/metadata-schema/metadata-field-form/metadata-field-form.component.ts +++ b/src/app/admin/admin-registries/metadata-schema/metadata-field-form/metadata-field-form.component.ts @@ -98,25 +98,35 @@ export class MetadataFieldFormComponent implements OnInit, OnDestroy { * Initialize the component, setting up the necessary Models for the dynamic form */ ngOnInit() { - combineLatest( + combineLatest([ this.translateService.get(`${this.messagePrefix}.element`), this.translateService.get(`${this.messagePrefix}.qualifier`), this.translateService.get(`${this.messagePrefix}.scopenote`) - ).subscribe(([element, qualifier, scopenote]) => { + ]).subscribe(([element, qualifier, scopenote]) => { this.element = new DynamicInputModel({ id: 'element', label: element, name: 'element', validators: { required: null, + pattern: '^[^.]*$', }, required: true, + errorMessages: { + pattern: 'error.validation.metadata.element.invalid-pattern', + }, }); this.qualifier = new DynamicInputModel({ id: 'qualifier', label: qualifier, name: 'qualifier', + validators: { + pattern: '^[^.]*$', + }, required: false, + errorMessages: { + pattern: 'error.validation.metadata.qualifier.invalid-pattern', + }, }); this.scopeNote = new DynamicInputModel({ id: 'scopeNote', @@ -189,6 +199,7 @@ export class MetadataFieldFormComponent implements OnInit, OnDestroy { * Reset all input-fields to be empty */ clearFields() { + this.formGroup.markAsUntouched(); this.formGroup.patchValue({ metadatadatafieldgroup: { element: '', diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index 597f226cc7..c0edb83a3b 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -1478,6 +1478,12 @@ "error.validation.groupExists": "This group already exists", + "error.validation.metadata.namespace.invalid-pattern": "This field cannot contain dots, please use the Element & Qualifier fields instead", + + "error.validation.metadata.element.invalid-pattern": "This field cannot contain dots, please use the Qualifier field instead", + + "error.validation.metadata.qualifier.invalid-pattern": "This field cannot contain dots", + "feed.description": "Syndication feed",