From e309822b93d9b69f30cbe830ef3d09dfdb2c13b2 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 5 Jun 2018 15:01:45 +0200 Subject: Add form validator translations --- .../custom-config-validators.service.ts | 72 +++++++++++++++++ .../shared/forms/form-validators/custom-config.ts | 56 ------------- .../form-validators/form-validator.service.ts | 9 ++- .../src/app/shared/forms/form-validators/index.ts | 11 ++- .../form-validators/login-validators.service.ts | 30 +++++++ .../src/app/shared/forms/form-validators/login.ts | 18 ----- .../reset-password-validators.service.ts | 20 +++++ .../shared/forms/form-validators/reset-password.ts | 10 --- .../form-validators/user-validators.service.ts | 93 ++++++++++++++++++++++ .../src/app/shared/forms/form-validators/user.ts | 70 ---------------- .../forms/form-validators/validator-message.ts | 5 -- .../video-abuse-validators.service.ts | 20 +++++ .../shared/forms/form-validators/video-abuse.ts | 10 --- .../video-channel-validators.service.ts | 48 +++++++++++ .../shared/forms/form-validators/video-channel.ts | 34 -------- .../video-comment-validators.service.ts | 20 +++++ .../shared/forms/form-validators/video-comment.ts | 10 --- .../form-validators/video-validators.service.ts | 88 ++++++++++++++++++++ .../src/app/shared/forms/form-validators/video.ts | 68 ---------------- 19 files changed, 404 insertions(+), 288 deletions(-) create mode 100644 client/src/app/shared/forms/form-validators/custom-config-validators.service.ts delete mode 100644 client/src/app/shared/forms/form-validators/custom-config.ts create mode 100644 client/src/app/shared/forms/form-validators/login-validators.service.ts delete mode 100644 client/src/app/shared/forms/form-validators/login.ts create mode 100644 client/src/app/shared/forms/form-validators/reset-password-validators.service.ts delete mode 100644 client/src/app/shared/forms/form-validators/reset-password.ts create mode 100644 client/src/app/shared/forms/form-validators/user-validators.service.ts delete mode 100644 client/src/app/shared/forms/form-validators/user.ts delete mode 100644 client/src/app/shared/forms/form-validators/validator-message.ts create mode 100644 client/src/app/shared/forms/form-validators/video-abuse-validators.service.ts delete mode 100644 client/src/app/shared/forms/form-validators/video-abuse.ts create mode 100644 client/src/app/shared/forms/form-validators/video-channel-validators.service.ts delete mode 100644 client/src/app/shared/forms/form-validators/video-channel.ts create mode 100644 client/src/app/shared/forms/form-validators/video-comment-validators.service.ts delete mode 100644 client/src/app/shared/forms/form-validators/video-comment.ts create mode 100644 client/src/app/shared/forms/form-validators/video-validators.service.ts delete mode 100644 client/src/app/shared/forms/form-validators/video.ts (limited to 'client/src/app/shared/forms') diff --git a/client/src/app/shared/forms/form-validators/custom-config-validators.service.ts b/client/src/app/shared/forms/form-validators/custom-config-validators.service.ts new file mode 100644 index 000000000..1b36bbc6b --- /dev/null +++ b/client/src/app/shared/forms/form-validators/custom-config-validators.service.ts @@ -0,0 +1,72 @@ +import { Validators } from '@angular/forms' +import { I18n } from '@ngx-translate/i18n-polyfill' +import { BuildFormValidator } from '@app/shared' +import { Injectable } from '@angular/core' + +@Injectable() +export class CustomConfigValidatorsService { + readonly INSTANCE_NAME: BuildFormValidator + readonly INSTANCE_SHORT_DESCRIPTION: BuildFormValidator + readonly SERVICES_TWITTER_USERNAME: BuildFormValidator + readonly CACHE_PREVIEWS_SIZE: BuildFormValidator + readonly SIGNUP_LIMIT: BuildFormValidator + readonly ADMIN_EMAIL: BuildFormValidator + readonly TRANSCODING_THREADS: BuildFormValidator + + constructor (private i18n: I18n) { + this.INSTANCE_NAME = { + VALIDATORS: [ Validators.required ], + MESSAGES: { + 'required': this.i18n('Instance name is required.') + } + } + + this.INSTANCE_SHORT_DESCRIPTION = { + VALIDATORS: [ Validators.max(250) ], + MESSAGES: { + 'max': this.i18n('Short description should not be longer than 250 characters.') + } + } + + this.SERVICES_TWITTER_USERNAME = { + VALIDATORS: [ Validators.required ], + MESSAGES: { + 'required': this.i18n('Twitter username is required.') + } + } + + this.CACHE_PREVIEWS_SIZE = { + VALIDATORS: [ Validators.required, Validators.min(1), Validators.pattern('[0-9]+') ], + MESSAGES: { + 'required': this.i18n('Previews cache size is required.'), + 'min': this.i18n('Previews cache size must be greater than 1.'), + 'pattern': this.i18n('Previews cache size must be a number.') + } + } + + this.SIGNUP_LIMIT = { + VALIDATORS: [ Validators.required, Validators.min(1), Validators.pattern('[0-9]+') ], + MESSAGES: { + 'required': this.i18n('Signup limit is required.'), + 'min': this.i18n('Signup limit must be greater than 1.'), + 'pattern': this.i18n('Signup limit must be a number.') + } + } + + this.ADMIN_EMAIL = { + VALIDATORS: [ Validators.required, Validators.email ], + MESSAGES: { + 'required': this.i18n('Admin email is required.'), + 'email': this.i18n('Admin email must be valid.') + } + } + + this.TRANSCODING_THREADS = { + VALIDATORS: [ Validators.required, Validators.min(1) ], + MESSAGES: { + 'required': this.i18n('Transcoding threads is required.'), + 'min': this.i18n('Transcoding threads must be greater than 1.') + } + } + } +} diff --git a/client/src/app/shared/forms/form-validators/custom-config.ts b/client/src/app/shared/forms/form-validators/custom-config.ts deleted file mode 100644 index e3d9a4c7b..000000000 --- a/client/src/app/shared/forms/form-validators/custom-config.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { Validators } from '@angular/forms' - -export const INSTANCE_NAME = { - VALIDATORS: [ Validators.required ], - MESSAGES: { - 'required': 'Instance name is required.' - } -} - -export const INSTANCE_SHORT_DESCRIPTION = { - VALIDATORS: [ Validators.max(250) ], - MESSAGES: { - 'max': 'Short description should not be longer than 250 characters.' - } -} - -export const SERVICES_TWITTER_USERNAME = { - VALIDATORS: [ Validators.required ], - MESSAGES: { - 'required': 'Twitter username is required.' - } -} - -export const CACHE_PREVIEWS_SIZE = { - VALIDATORS: [ Validators.required, Validators.min(1), Validators.pattern('[0-9]+') ], - MESSAGES: { - 'required': 'Preview cache size is required.', - 'min': 'Preview cache size must be greater than 1.', - 'pattern': 'Preview cache size must be a number.' - } -} - -export const SIGNUP_LIMIT = { - VALIDATORS: [ Validators.required, Validators.min(1), Validators.pattern('[0-9]+') ], - MESSAGES: { - 'required': 'Signup limit is required.', - 'min': 'Signup limit must be greater than 1.', - 'pattern': 'Preview cache size must be a number.' - } -} - -export const ADMIN_EMAIL = { - VALIDATORS: [ Validators.required, Validators.email ], - MESSAGES: { - 'required': 'Admin email is required.', - 'email': 'Admin email must be valid.' - } -} - -export const TRANSCODING_THREADS = { - VALIDATORS: [ Validators.required, Validators.min(1) ], - MESSAGES: { - 'required': 'Transcoding threads is required.', - 'min': 'Transcoding threads must be greater than 1.' - } -} diff --git a/client/src/app/shared/forms/form-validators/form-validator.service.ts b/client/src/app/shared/forms/form-validators/form-validator.service.ts index 5c3d3e4bd..d10e17ca7 100644 --- a/client/src/app/shared/forms/form-validators/form-validator.service.ts +++ b/client/src/app/shared/forms/form-validators/form-validator.service.ts @@ -3,11 +3,12 @@ import { Injectable } from '@angular/core' import { FormReactiveErrors, FormReactiveValidationMessages } from '@app/shared/forms/form-reactive' import { I18n } from '@ngx-translate/i18n-polyfill' +export type BuildFormValidator = { + VALIDATORS: ValidatorFn[], + MESSAGES: { [ name: string ]: string } +} export type BuildFormArgument = { - [ id: string ]: { - VALIDATORS: ValidatorFn[], - MESSAGES: { [ name: string ]: string } - } + [ id: string ]: BuildFormValidator } export type BuildFormDefaultValues = { [ name: string ]: string | string[] diff --git a/client/src/app/shared/forms/form-validators/index.ts b/client/src/app/shared/forms/form-validators/index.ts index cf544b2a9..487683088 100644 --- a/client/src/app/shared/forms/form-validators/index.ts +++ b/client/src/app/shared/forms/form-validators/index.ts @@ -1,5 +1,10 @@ +export * from './custom-config-validators.service' export * from './form-validator.service' export * from './host' -export * from './user' -export * from './video-abuse' -export * from './video' +export * from './login-validators.service' +export * from './reset-password-validators.service' +export * from './user-validators.service' +export * from './video-abuse-validators.service' +export * from './video-channel-validators.service' +export * from './video-comment-validators.service' +export * from './video-validators.service' diff --git a/client/src/app/shared/forms/form-validators/login-validators.service.ts b/client/src/app/shared/forms/form-validators/login-validators.service.ts new file mode 100644 index 000000000..9d68f830c --- /dev/null +++ b/client/src/app/shared/forms/form-validators/login-validators.service.ts @@ -0,0 +1,30 @@ +import { I18n } from '@ngx-translate/i18n-polyfill' +import { Validators } from '@angular/forms' +import { Injectable } from '@angular/core' +import { BuildFormValidator } from '@app/shared' + +@Injectable() +export class LoginValidatorsService { + readonly LOGIN_USERNAME: BuildFormValidator + readonly LOGIN_PASSWORD: BuildFormValidator + + constructor (private i18n: I18n) { + this.LOGIN_USERNAME = { + VALIDATORS: [ + Validators.required + ], + MESSAGES: { + 'required': this.i18n('Username is required.') + } + } + + this.LOGIN_PASSWORD = { + VALIDATORS: [ + Validators.required + ], + MESSAGES: { + 'required': this.i18n('Password is required.') + } + } + } +} diff --git a/client/src/app/shared/forms/form-validators/login.ts b/client/src/app/shared/forms/form-validators/login.ts deleted file mode 100644 index f37f8d285..000000000 --- a/client/src/app/shared/forms/form-validators/login.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Validators } from '@angular/forms' - -export const LOGIN_USERNAME = { - VALIDATORS: [ - Validators.required - ], - MESSAGES: { - 'required': 'Username is required.' - } -} -export const LOGIN_PASSWORD = { - VALIDATORS: [ - Validators.required - ], - MESSAGES: { - 'required': 'Password is required.' - } -} diff --git a/client/src/app/shared/forms/form-validators/reset-password-validators.service.ts b/client/src/app/shared/forms/form-validators/reset-password-validators.service.ts new file mode 100644 index 000000000..df206254d --- /dev/null +++ b/client/src/app/shared/forms/form-validators/reset-password-validators.service.ts @@ -0,0 +1,20 @@ +import { I18n } from '@ngx-translate/i18n-polyfill' +import { Validators } from '@angular/forms' +import { Injectable } from '@angular/core' +import { BuildFormValidator } from '@app/shared' + +@Injectable() +export class ResetPasswordValidatorsService { + readonly RESET_PASSWORD_CONFIRM: BuildFormValidator + + constructor (private i18n: I18n) { + this.RESET_PASSWORD_CONFIRM = { + VALIDATORS: [ + Validators.required + ], + MESSAGES: { + 'required': this.i18n('Confirmation of the password is required.') + } + } + } +} diff --git a/client/src/app/shared/forms/form-validators/reset-password.ts b/client/src/app/shared/forms/form-validators/reset-password.ts deleted file mode 100644 index 7dafdef9a..000000000 --- a/client/src/app/shared/forms/form-validators/reset-password.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Validators } from '@angular/forms' - -export const RESET_PASSWORD_CONFIRM = { - VALIDATORS: [ - Validators.required - ], - MESSAGES: { - 'required': 'Confirmation of the password is required.' - } -} diff --git a/client/src/app/shared/forms/form-validators/user-validators.service.ts b/client/src/app/shared/forms/form-validators/user-validators.service.ts new file mode 100644 index 000000000..bb6ff2068 --- /dev/null +++ b/client/src/app/shared/forms/form-validators/user-validators.service.ts @@ -0,0 +1,93 @@ +import { I18n } from '@ngx-translate/i18n-polyfill' +import { Validators } from '@angular/forms' +import { BuildFormValidator } from '@app/shared' +import { Injectable } from '@angular/core' + +@Injectable() +export class UserValidatorsService { + readonly USER_USERNAME: BuildFormValidator + readonly USER_EMAIL: BuildFormValidator + readonly USER_PASSWORD: BuildFormValidator + readonly USER_VIDEO_QUOTA: BuildFormValidator + readonly USER_ROLE: BuildFormValidator + readonly USER_DISPLAY_NAME: BuildFormValidator + readonly USER_DESCRIPTION: BuildFormValidator + + constructor (private i18n: I18n) { + + this.USER_USERNAME = { + VALIDATORS: [ + Validators.required, + Validators.minLength(3), + Validators.maxLength(20), + Validators.pattern(/^[a-z0-9._]+$/) + ], + MESSAGES: { + 'required': this.i18n('Username is required.'), + 'minlength': this.i18n('Username must be at least 3 characters long.'), + 'maxlength': this.i18n('Username cannot be more than 20 characters long.'), + 'pattern': this.i18n('Username should be only lowercase alphanumeric characters.') + } + } + + this.USER_EMAIL = { + VALIDATORS: [ Validators.required, Validators.email ], + MESSAGES: { + 'required': this.i18n('Email is required.'), + 'email': this.i18n('Email must be valid.') + } + } + + this.USER_PASSWORD = { + VALIDATORS: [ + Validators.required, + Validators.minLength(6), + Validators.maxLength(255) + ], + MESSAGES: { + 'required': this.i18n('Password is required.'), + 'minlength': this.i18n('Password must be at least 6 characters long.'), + 'maxlength': this.i18n('Password cannot be more than 255 characters long.') + } + } + + this.USER_VIDEO_QUOTA = { + VALIDATORS: [ Validators.required, Validators.min(-1) ], + MESSAGES: { + 'required': this.i18n('Video quota is required.'), + 'min': this.i18n('Quota must be greater than -1.') + } + } + + this.USER_ROLE = { + VALIDATORS: [ Validators.required ], + MESSAGES: { + 'required': this.i18n('User role is required.') + } + } + + this.USER_DISPLAY_NAME = { + VALIDATORS: [ + Validators.required, + Validators.minLength(3), + Validators.maxLength(120) + ], + MESSAGES: { + 'required': this.i18n('Display name is required.'), + 'minlength': this.i18n('Display name must be at least 3 characters long.'), + 'maxlength': this.i18n('Display name cannot be more than 120 characters long.') + } + } + + this.USER_DESCRIPTION = { + VALIDATORS: [ + Validators.minLength(3), + Validators.maxLength(250) + ], + MESSAGES: { + 'minlength': this.i18n('Description must be at least 3 characters long.'), + 'maxlength': this.i18n('Description cannot be more than 250 characters long.') + } + } + } +} diff --git a/client/src/app/shared/forms/form-validators/user.ts b/client/src/app/shared/forms/form-validators/user.ts deleted file mode 100644 index 0973f1b00..000000000 --- a/client/src/app/shared/forms/form-validators/user.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { Validators } from '@angular/forms' - -export const USER_USERNAME = { - VALIDATORS: [ - Validators.required, - Validators.minLength(3), - Validators.maxLength(20), - Validators.pattern(/^[a-z0-9._]+$/) - ], - MESSAGES: { - 'required': 'Username is required.', - 'minlength': 'Username must be at least 3 characters long.', - 'maxlength': 'Username cannot be more than 20 characters long.', - 'pattern': 'Username should be only lowercase alphanumeric characters.' - } -} -export const USER_EMAIL = { - VALIDATORS: [ Validators.required, Validators.email ], - MESSAGES: { - 'required': 'Email is required.', - 'email': 'Email must be valid.' - } -} -export const USER_PASSWORD = { - VALIDATORS: [ - Validators.required, - Validators.minLength(6), - Validators.maxLength(255) - ], - MESSAGES: { - 'required': 'Password is required.', - 'minlength': 'Password must be at least 6 characters long.', - 'maxlength': 'Password cannot be more than 255 characters long.' - } -} -export const USER_VIDEO_QUOTA = { - VALIDATORS: [ Validators.required, Validators.min(-1) ], - MESSAGES: { - 'required': 'Video quota is required.', - 'min': 'Quota must be greater than -1.' - } -} -export const USER_ROLE = { - VALIDATORS: [ Validators.required ], - MESSAGES: { - 'required': 'User role is required.' - } -} -export const USER_DISPLAY_NAME = { - VALIDATORS: [ - Validators.required, - Validators.minLength(3), - Validators.maxLength(120) - ], - MESSAGES: { - 'required': 'Display name is required.', - 'minlength': 'Display name must be at least 3 characters long.', - 'maxlength': 'Display name cannot be more than 120 characters long.' - } -} -export const USER_DESCRIPTION = { - VALIDATORS: [ - Validators.minLength(3), - Validators.maxLength(250) - ], - MESSAGES: { - 'minlength': 'Description must be at least 3 characters long.', - 'maxlength': 'Description cannot be more than 250 characters long.' - } -} diff --git a/client/src/app/shared/forms/form-validators/validator-message.ts b/client/src/app/shared/forms/form-validators/validator-message.ts deleted file mode 100644 index 5ce45833b..000000000 --- a/client/src/app/shared/forms/form-validators/validator-message.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type ValidatorMessage = { - [ id: string ]: { - [ error: string ]: string - } -} diff --git a/client/src/app/shared/forms/form-validators/video-abuse-validators.service.ts b/client/src/app/shared/forms/form-validators/video-abuse-validators.service.ts new file mode 100644 index 000000000..774e6a488 --- /dev/null +++ b/client/src/app/shared/forms/form-validators/video-abuse-validators.service.ts @@ -0,0 +1,20 @@ +import { I18n } from '@ngx-translate/i18n-polyfill' +import { Validators } from '@angular/forms' +import { Injectable } from '@angular/core' +import { BuildFormValidator } from '@app/shared' + +@Injectable() +export class VideoAbuseValidatorsService { + readonly VIDEO_ABUSE_REASON: BuildFormValidator + + constructor (private i18n: I18n) { + this.VIDEO_ABUSE_REASON = { + VALIDATORS: [ Validators.required, Validators.minLength(2), Validators.maxLength(300) ], + MESSAGES: { + 'required': this.i18n('Report reason is required.'), + 'minlength': this.i18n('Report reason must be at least 2 characters long.'), + 'maxlength': this.i18n('Report reason cannot be more than 300 characters long.') + } + } + } +} diff --git a/client/src/app/shared/forms/form-validators/video-abuse.ts b/client/src/app/shared/forms/form-validators/video-abuse.ts deleted file mode 100644 index 4b2a2b789..000000000 --- a/client/src/app/shared/forms/form-validators/video-abuse.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Validators } from '@angular/forms' - -export const VIDEO_ABUSE_REASON = { - VALIDATORS: [ Validators.required, Validators.minLength(2), Validators.maxLength(300) ], - MESSAGES: { - 'required': 'Report reason is required.', - 'minlength': 'Report reason must be at least 2 characters long.', - 'maxlength': 'Report reason cannot be more than 300 characters long.' - } -} diff --git a/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts b/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts new file mode 100644 index 000000000..28b063f89 --- /dev/null +++ b/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts @@ -0,0 +1,48 @@ +import { I18n } from '@ngx-translate/i18n-polyfill' +import { Validators } from '@angular/forms' +import { Injectable } from '@angular/core' +import { BuildFormValidator } from '@app/shared' + +@Injectable() +export class VideoChannelValidatorsService { + readonly VIDEO_CHANNEL_DISPLAY_NAME: BuildFormValidator + readonly VIDEO_CHANNEL_DESCRIPTION: BuildFormValidator + readonly VIDEO_CHANNEL_SUPPORT: BuildFormValidator + + constructor (private i18n: I18n) { + this.VIDEO_CHANNEL_DISPLAY_NAME = { + VALIDATORS: [ + Validators.required, + Validators.minLength(3), + Validators.maxLength(120) + ], + MESSAGES: { + 'required': i18n('Display name is required.'), + 'minlength': i18n('Display name must be at least 3 characters long.'), + 'maxlength': i18n('Display name cannot be more than 120 characters long.') + } + } + + this.VIDEO_CHANNEL_DESCRIPTION = { + VALIDATORS: [ + Validators.minLength(3), + Validators.maxLength(500) + ], + MESSAGES: { + 'minlength': i18n('Description must be at least 3 characters long.'), + 'maxlength': i18n('Description cannot be more than 500 characters long.') + } + } + + this.VIDEO_CHANNEL_SUPPORT = { + VALIDATORS: [ + Validators.minLength(3), + Validators.maxLength(500) + ], + MESSAGES: { + 'minlength': i18n('Support text must be at least 3 characters long.'), + 'maxlength': i18n('Support text cannot be more than 500 characters long.') + } + } + } +} diff --git a/client/src/app/shared/forms/form-validators/video-channel.ts b/client/src/app/shared/forms/form-validators/video-channel.ts deleted file mode 100644 index 2185cdaa9..000000000 --- a/client/src/app/shared/forms/form-validators/video-channel.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Validators } from '@angular/forms' - -export const VIDEO_CHANNEL_DISPLAY_NAME = { - VALIDATORS: [ - Validators.required, - Validators.minLength(3), - Validators.maxLength(120) - ], - MESSAGES: { - 'required': 'Display name is required.', - 'minlength': 'Display name must be at least 3 characters long.', - 'maxlength': 'Display name cannot be more than 120 characters long.' - } -} -export const VIDEO_CHANNEL_DESCRIPTION = { - VALIDATORS: [ - Validators.minLength(3), - Validators.maxLength(500) - ], - MESSAGES: { - 'minlength': 'Description must be at least 3 characters long.', - 'maxlength': 'Description cannot be more than 500 characters long.' - } -} -export const VIDEO_CHANNEL_SUPPORT = { - VALIDATORS: [ - Validators.minLength(3), - Validators.maxLength(500) - ], - MESSAGES: { - 'minlength': 'Support text must be at least 3 characters long.', - 'maxlength': 'Support text cannot be more than 500 characters long.' - } -} diff --git a/client/src/app/shared/forms/form-validators/video-comment-validators.service.ts b/client/src/app/shared/forms/form-validators/video-comment-validators.service.ts new file mode 100644 index 000000000..45c7081ef --- /dev/null +++ b/client/src/app/shared/forms/form-validators/video-comment-validators.service.ts @@ -0,0 +1,20 @@ +import { I18n } from '@ngx-translate/i18n-polyfill' +import { Validators } from '@angular/forms' +import { Injectable } from '@angular/core' +import { BuildFormValidator } from '@app/shared' + +@Injectable() +export class VideoCommentValidatorsService { + readonly VIDEO_COMMENT_TEXT: BuildFormValidator + + constructor (private i18n: I18n) { + this.VIDEO_COMMENT_TEXT = { + VALIDATORS: [ Validators.required, Validators.minLength(1), Validators.maxLength(3000) ], + MESSAGES: { + 'required': this.i18n('Comment is required.'), + 'minlength': this.i18n('Comment must be at least 2 characters long.'), + 'maxlength': this.i18n('Comment cannot be more than 3000 characters long.') + } + } + } +} diff --git a/client/src/app/shared/forms/form-validators/video-comment.ts b/client/src/app/shared/forms/form-validators/video-comment.ts deleted file mode 100644 index 290d83195..000000000 --- a/client/src/app/shared/forms/form-validators/video-comment.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Validators } from '@angular/forms' - -export const VIDEO_COMMENT_TEXT = { - VALIDATORS: [ Validators.required, Validators.minLength(1), Validators.maxLength(3000) ], - MESSAGES: { - 'required': 'Comment is required.', - 'minlength': 'Comment must be at least 2 characters long.', - 'maxlength': 'Comment cannot be more than 3000 characters long.' - } -} diff --git a/client/src/app/shared/forms/form-validators/video-validators.service.ts b/client/src/app/shared/forms/form-validators/video-validators.service.ts new file mode 100644 index 000000000..76fc5cf04 --- /dev/null +++ b/client/src/app/shared/forms/form-validators/video-validators.service.ts @@ -0,0 +1,88 @@ +import { I18n } from '@ngx-translate/i18n-polyfill' +import { Validators } from '@angular/forms' +import { Injectable } from '@angular/core' +import { BuildFormValidator } from '@app/shared' + +@Injectable() +export class VideoValidatorsService { + readonly VIDEO_NAME: BuildFormValidator + readonly VIDEO_PRIVACY: BuildFormValidator + readonly VIDEO_CATEGORY: BuildFormValidator + readonly VIDEO_LICENCE: BuildFormValidator + readonly VIDEO_LANGUAGE: BuildFormValidator + readonly VIDEO_IMAGE: BuildFormValidator + readonly VIDEO_CHANNEL: BuildFormValidator + readonly VIDEO_DESCRIPTION: BuildFormValidator + readonly VIDEO_TAGS: BuildFormValidator + readonly VIDEO_SUPPORT: BuildFormValidator + + constructor (private i18n: I18n) { + + this.VIDEO_NAME = { + VALIDATORS: [ Validators.required, Validators.minLength(3), Validators.maxLength(120) ], + MESSAGES: { + 'required': this.i18n('Video name is required.'), + 'minlength': this.i18n('Video name must be at least 3 characters long.'), + 'maxlength': this.i18n('Video name cannot be more than 120 characters long.') + } + } + + this.VIDEO_PRIVACY = { + VALIDATORS: [ Validators.required ], + MESSAGES: { + 'required': this.i18n('Video privacy is required.') + } + } + + this.VIDEO_CATEGORY = { + VALIDATORS: [ ], + MESSAGES: {} + } + + this.VIDEO_LICENCE = { + VALIDATORS: [ ], + MESSAGES: {} + } + + this.VIDEO_LANGUAGE = { + VALIDATORS: [ ], + MESSAGES: {} + } + + this.VIDEO_IMAGE = { + VALIDATORS: [ ], + MESSAGES: {} + } + + this.VIDEO_CHANNEL = { + VALIDATORS: [ Validators.required ], + MESSAGES: { + 'required': this.i18n('Video channel is required.') + } + } + + this.VIDEO_DESCRIPTION = { + VALIDATORS: [ Validators.minLength(3), Validators.maxLength(10000) ], + MESSAGES: { + 'minlength': this.i18n('Video description must be at least 3 characters long.'), + 'maxlength': this.i18n('Video description cannot be more than 10000 characters long.') + } + } + + this.VIDEO_TAGS = { + VALIDATORS: [ Validators.minLength(2), Validators.maxLength(30) ], + MESSAGES: { + 'minlength': this.i18n('A tag should be more than 2 characters long.'), + 'maxlength': this.i18n('A tag should be less than 30 characters long.') + } + } + + this.VIDEO_SUPPORT = { + VALIDATORS: [ Validators.minLength(3), Validators.maxLength(500) ], + MESSAGES: { + 'minlength': this.i18n('Video support must be at least 3 characters long.'), + 'maxlength': this.i18n('Video support cannot be more than 500 characters long.') + } + } + } +} diff --git a/client/src/app/shared/forms/form-validators/video.ts b/client/src/app/shared/forms/form-validators/video.ts deleted file mode 100644 index a986243df..000000000 --- a/client/src/app/shared/forms/form-validators/video.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { Validators } from '@angular/forms' - -export const VIDEO_NAME = { - VALIDATORS: [ Validators.required, Validators.minLength(3), Validators.maxLength(120) ], - MESSAGES: { - 'required': 'Video name is required.', - 'minlength': 'Video name must be at least 3 characters long.', - 'maxlength': 'Video name cannot be more than 120 characters long.' - } -} - -export const VIDEO_PRIVACY = { - VALIDATORS: [ Validators.required ], - MESSAGES: { - 'required': 'Video privacy is required.' - } -} - -export const VIDEO_CATEGORY = { - VALIDATORS: [ ], - MESSAGES: {} -} - -export const VIDEO_LICENCE = { - VALIDATORS: [ ], - MESSAGES: {} -} - -export const VIDEO_LANGUAGE = { - VALIDATORS: [ ], - MESSAGES: {} -} - -export const VIDEO_IMAGE = { - VALIDATORS: [ ], - MESSAGES: {} -} - -export const VIDEO_CHANNEL = { - VALIDATORS: [ Validators.required ], - MESSAGES: { - 'required': 'Video channel is required.' - } -} - -export const VIDEO_DESCRIPTION = { - VALIDATORS: [ Validators.minLength(3), Validators.maxLength(10000) ], - MESSAGES: { - 'minlength': 'Video description must be at least 3 characters long.', - 'maxlength': 'Video description cannot be more than 10000 characters long.' - } -} - -export const VIDEO_TAGS = { - VALIDATORS: [ Validators.minLength(2), Validators.maxLength(30) ], - MESSAGES: { - 'minlength': 'A tag should be more than 2 characters long.', - 'maxlength': 'A tag should be less than 30 characters long.' - } -} - -export const VIDEO_SUPPORT = { - VALIDATORS: [ Validators.minLength(3), Validators.maxLength(500) ], - MESSAGES: { - 'minlength': 'Video support must be at least 3 characters long.', - 'maxlength': 'Video support cannot be more than 500 characters long.' - } -} -- cgit v1.2.3