mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-14 05:23:06 +00:00
Submission form now displays custom messages for regex validated fields if they exist
This commit is contained in:
@@ -19,6 +19,7 @@ import {
|
|||||||
SUBMISSION_ID
|
SUBMISSION_ID
|
||||||
} from './field-parser';
|
} from './field-parser';
|
||||||
import { DsDynamicInputModel, DsDynamicInputModelConfig } from '../ds-dynamic-form-ui/models/ds-dynamic-input.model';
|
import { DsDynamicInputModel, DsDynamicInputModelConfig } from '../ds-dynamic-form-ui/models/ds-dynamic-input.model';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
|
||||||
export class ConcatFieldParser extends FieldParser {
|
export class ConcatFieldParser extends FieldParser {
|
||||||
|
|
||||||
@@ -27,10 +28,11 @@ export class ConcatFieldParser extends FieldParser {
|
|||||||
@Inject(CONFIG_DATA) configData: FormFieldModel,
|
@Inject(CONFIG_DATA) configData: FormFieldModel,
|
||||||
@Inject(INIT_FORM_VALUES) initFormValues,
|
@Inject(INIT_FORM_VALUES) initFormValues,
|
||||||
@Inject(PARSER_OPTIONS) parserOptions: ParserOptions,
|
@Inject(PARSER_OPTIONS) parserOptions: ParserOptions,
|
||||||
|
translate: TranslateService,
|
||||||
protected separator: string,
|
protected separator: string,
|
||||||
protected firstPlaceholder: string = null,
|
protected firstPlaceholder: string = null,
|
||||||
protected secondPlaceholder: string = null) {
|
protected secondPlaceholder: string = null) {
|
||||||
super(submissionId, configData, initFormValues, parserOptions);
|
super(submissionId, configData, initFormValues, parserOptions, translate);
|
||||||
|
|
||||||
this.separator = separator;
|
this.separator = separator;
|
||||||
this.firstPlaceholder = firstPlaceholder;
|
this.firstPlaceholder = firstPlaceholder;
|
||||||
|
@@ -15,6 +15,7 @@ import {
|
|||||||
import { isNotEmpty } from '../../../empty.util';
|
import { isNotEmpty } from '../../../empty.util';
|
||||||
import { FormFieldMetadataValueObject } from '../models/form-field-metadata-value.model';
|
import { FormFieldMetadataValueObject } from '../models/form-field-metadata-value.model';
|
||||||
import { ParserOptions } from './parser-options';
|
import { ParserOptions } from './parser-options';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
|
||||||
export class DropdownFieldParser extends FieldParser {
|
export class DropdownFieldParser extends FieldParser {
|
||||||
|
|
||||||
@@ -23,8 +24,9 @@ export class DropdownFieldParser extends FieldParser {
|
|||||||
@Inject(CONFIG_DATA) configData: FormFieldModel,
|
@Inject(CONFIG_DATA) configData: FormFieldModel,
|
||||||
@Inject(INIT_FORM_VALUES) initFormValues,
|
@Inject(INIT_FORM_VALUES) initFormValues,
|
||||||
@Inject(PARSER_OPTIONS) parserOptions: ParserOptions,
|
@Inject(PARSER_OPTIONS) parserOptions: ParserOptions,
|
||||||
|
translate: TranslateService
|
||||||
) {
|
) {
|
||||||
super(submissionId, configData, initFormValues, parserOptions);
|
super(submissionId, configData, initFormValues, parserOptions, translate);
|
||||||
}
|
}
|
||||||
|
|
||||||
public modelFactory(fieldValue?: FormFieldMetadataValueObject | any, label?: boolean): any {
|
public modelFactory(fieldValue?: FormFieldMetadataValueObject | any, label?: boolean): any {
|
||||||
|
@@ -25,6 +25,7 @@ import { VocabularyOptions } from '../../../../core/submission/vocabularies/mode
|
|||||||
import { ParserType } from './parser-type';
|
import { ParserType } from './parser-type';
|
||||||
import { isNgbDateStruct } from '../../../date.util';
|
import { isNgbDateStruct } from '../../../date.util';
|
||||||
import { SubmissionScopeType } from '../../../../core/submission/submission-scope-type';
|
import { SubmissionScopeType } from '../../../../core/submission/submission-scope-type';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
|
||||||
export const SUBMISSION_ID: InjectionToken<string> = new InjectionToken<string>('submissionId');
|
export const SUBMISSION_ID: InjectionToken<string> = new InjectionToken<string>('submissionId');
|
||||||
export const CONFIG_DATA: InjectionToken<FormFieldModel> = new InjectionToken<FormFieldModel>('configData');
|
export const CONFIG_DATA: InjectionToken<FormFieldModel> = new InjectionToken<FormFieldModel>('configData');
|
||||||
@@ -50,7 +51,8 @@ export abstract class FieldParser {
|
|||||||
@Inject(SUBMISSION_ID) protected submissionId: string,
|
@Inject(SUBMISSION_ID) protected submissionId: string,
|
||||||
@Inject(CONFIG_DATA) protected configData: FormFieldModel,
|
@Inject(CONFIG_DATA) protected configData: FormFieldModel,
|
||||||
@Inject(INIT_FORM_VALUES) protected initFormValues: any,
|
@Inject(INIT_FORM_VALUES) protected initFormValues: any,
|
||||||
@Inject(PARSER_OPTIONS) protected parserOptions: ParserOptions
|
@Inject(PARSER_OPTIONS) protected parserOptions: ParserOptions,
|
||||||
|
protected translate: TranslateService
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -395,11 +397,14 @@ export abstract class FieldParser {
|
|||||||
} else {
|
} else {
|
||||||
regex = new RegExp(this.configData.input.regex);
|
regex = new RegExp(this.configData.input.regex);
|
||||||
}
|
}
|
||||||
|
const baseTranslationKey = 'error.validation.pattern';
|
||||||
|
const fieldranslationKey = `${baseTranslationKey}.${controlModel.id}`;
|
||||||
|
const fieldTranslationExists = this.translate.instant(fieldranslationKey) !== fieldranslationKey;
|
||||||
controlModel.validators = Object.assign({}, controlModel.validators, { pattern: regex });
|
controlModel.validators = Object.assign({}, controlModel.validators, { pattern: regex });
|
||||||
controlModel.errorMessages = Object.assign(
|
controlModel.errorMessages = Object.assign(
|
||||||
{},
|
{},
|
||||||
controlModel.errorMessages,
|
controlModel.errorMessages,
|
||||||
{ pattern: 'error.validation.pattern' });
|
{ pattern: fieldTranslationExists ? fieldranslationKey : baseTranslationKey });
|
||||||
}
|
}
|
||||||
|
|
||||||
protected markAsRequired(controlModel) {
|
protected markAsRequired(controlModel) {
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
import { Inject } from '@angular/core';
|
import { Inject } from '@angular/core';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { FormFieldModel } from '../models/form-field.model';
|
import { FormFieldModel } from '../models/form-field.model';
|
||||||
import { ConcatFieldParser } from './concat-field-parser';
|
import { ConcatFieldParser } from './concat-field-parser';
|
||||||
import { CONFIG_DATA, INIT_FORM_VALUES, PARSER_OPTIONS, SUBMISSION_ID } from './field-parser';
|
import { CONFIG_DATA, INIT_FORM_VALUES, PARSER_OPTIONS, SUBMISSION_ID } from './field-parser';
|
||||||
@@ -10,8 +11,9 @@ export class NameFieldParser extends ConcatFieldParser {
|
|||||||
@Inject(SUBMISSION_ID) submissionId: string,
|
@Inject(SUBMISSION_ID) submissionId: string,
|
||||||
@Inject(CONFIG_DATA) configData: FormFieldModel,
|
@Inject(CONFIG_DATA) configData: FormFieldModel,
|
||||||
@Inject(INIT_FORM_VALUES) initFormValues,
|
@Inject(INIT_FORM_VALUES) initFormValues,
|
||||||
@Inject(PARSER_OPTIONS) parserOptions: ParserOptions
|
@Inject(PARSER_OPTIONS) parserOptions: ParserOptions,
|
||||||
|
translate: TranslateService
|
||||||
) {
|
) {
|
||||||
super(submissionId, configData, initFormValues, parserOptions, ',', 'form.last-name', 'form.first-name');
|
super(submissionId, configData, initFormValues, parserOptions, translate, ',', 'form.last-name', 'form.first-name');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,12 +19,14 @@ import { SeriesFieldParser } from './series-field-parser';
|
|||||||
import { TagFieldParser } from './tag-field-parser';
|
import { TagFieldParser } from './tag-field-parser';
|
||||||
import { TextareaFieldParser } from './textarea-field-parser';
|
import { TextareaFieldParser } from './textarea-field-parser';
|
||||||
import { DisabledFieldParser } from './disabled-field-parser';
|
import { DisabledFieldParser } from './disabled-field-parser';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
|
||||||
const fieldParserDeps = [
|
const fieldParserDeps = [
|
||||||
SUBMISSION_ID,
|
SUBMISSION_ID,
|
||||||
CONFIG_DATA,
|
CONFIG_DATA,
|
||||||
INIT_FORM_VALUES,
|
INIT_FORM_VALUES,
|
||||||
PARSER_OPTIONS,
|
PARSER_OPTIONS,
|
||||||
|
TranslateService
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
import { Inject } from '@angular/core';
|
import { Inject } from '@angular/core';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { FormFieldModel } from '../models/form-field.model';
|
import { FormFieldModel } from '../models/form-field.model';
|
||||||
import { ConcatFieldParser } from './concat-field-parser';
|
import { ConcatFieldParser } from './concat-field-parser';
|
||||||
import { CONFIG_DATA, INIT_FORM_VALUES, PARSER_OPTIONS, SUBMISSION_ID } from './field-parser';
|
import { CONFIG_DATA, INIT_FORM_VALUES, PARSER_OPTIONS, SUBMISSION_ID } from './field-parser';
|
||||||
@@ -10,8 +11,9 @@ export class SeriesFieldParser extends ConcatFieldParser {
|
|||||||
@Inject(SUBMISSION_ID) submissionId: string,
|
@Inject(SUBMISSION_ID) submissionId: string,
|
||||||
@Inject(CONFIG_DATA) configData: FormFieldModel,
|
@Inject(CONFIG_DATA) configData: FormFieldModel,
|
||||||
@Inject(INIT_FORM_VALUES) initFormValues,
|
@Inject(INIT_FORM_VALUES) initFormValues,
|
||||||
@Inject(PARSER_OPTIONS) parserOptions: ParserOptions
|
@Inject(PARSER_OPTIONS) parserOptions: ParserOptions,
|
||||||
|
translate: TranslateService
|
||||||
) {
|
) {
|
||||||
super(submissionId, configData, initFormValues, parserOptions, ';');
|
super(submissionId, configData, initFormValues, parserOptions, translate, ';');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user