diff options
Diffstat (limited to 'client/src')
4 files changed, 28 insertions, 2 deletions
diff --git a/client/src/app/+about/about-instance/contact-admin-modal.component.html b/client/src/app/+about/about-instance/contact-admin-modal.component.html index b2cbd0873..c3c71bdee 100644 --- a/client/src/app/+about/about-instance/contact-admin-modal.component.html +++ b/client/src/app/+about/about-instance/contact-admin-modal.component.html | |||
@@ -26,6 +26,15 @@ | |||
26 | </div> | 26 | </div> |
27 | 27 | ||
28 | <div class="form-group"> | 28 | <div class="form-group"> |
29 | <label i18n for="subject">Subject</label> | ||
30 | <input | ||
31 | type="text" id="subject" | ||
32 | formControlName="subject" [ngClass]="{ 'input-error': formErrors['subject'] }" | ||
33 | > | ||
34 | <div *ngIf="formErrors.subject" class="form-error">{{ formErrors.subject }}</div> | ||
35 | </div> | ||
36 | |||
37 | <div class="form-group"> | ||
29 | <label i18n for="body">Your message</label> | 38 | <label i18n for="body">Your message</label> |
30 | <textarea id="body" formControlName="body" [ngClass]="{ 'input-error': formErrors['body'] }"> | 39 | <textarea id="body" formControlName="body" [ngClass]="{ 'input-error': formErrors['body'] }"> |
31 | </textarea> | 40 | </textarea> |
diff --git a/client/src/app/+about/about-instance/contact-admin-modal.component.ts b/client/src/app/+about/about-instance/contact-admin-modal.component.ts index 7d79c2215..c609c98c3 100644 --- a/client/src/app/+about/about-instance/contact-admin-modal.component.ts +++ b/client/src/app/+about/about-instance/contact-admin-modal.component.ts | |||
@@ -39,6 +39,7 @@ export class ContactAdminModalComponent extends FormReactive implements OnInit { | |||
39 | this.buildForm({ | 39 | this.buildForm({ |
40 | fromName: this.instanceValidatorsService.FROM_NAME, | 40 | fromName: this.instanceValidatorsService.FROM_NAME, |
41 | fromEmail: this.instanceValidatorsService.FROM_EMAIL, | 41 | fromEmail: this.instanceValidatorsService.FROM_EMAIL, |
42 | subject: this.instanceValidatorsService.SUBJECT, | ||
42 | body: this.instanceValidatorsService.BODY | 43 | body: this.instanceValidatorsService.BODY |
43 | }) | 44 | }) |
44 | } | 45 | } |
@@ -58,9 +59,10 @@ export class ContactAdminModalComponent extends FormReactive implements OnInit { | |||
58 | sendForm () { | 59 | sendForm () { |
59 | const fromName = this.form.value['fromName'] | 60 | const fromName = this.form.value['fromName'] |
60 | const fromEmail = this.form.value[ 'fromEmail' ] | 61 | const fromEmail = this.form.value[ 'fromEmail' ] |
62 | const subject = this.form.value[ 'subject' ] | ||
61 | const body = this.form.value[ 'body' ] | 63 | const body = this.form.value[ 'body' ] |
62 | 64 | ||
63 | this.instanceService.contactAdministrator(fromEmail, fromName, body) | 65 | this.instanceService.contactAdministrator(fromEmail, fromName, subject, body) |
64 | .subscribe( | 66 | .subscribe( |
65 | () => { | 67 | () => { |
66 | this.notifier.success(this.i18n('Your message has been sent.')) | 68 | this.notifier.success(this.i18n('Your message has been sent.')) |
diff --git a/client/src/app/shared/forms/form-validators/instance-validators.service.ts b/client/src/app/shared/forms/form-validators/instance-validators.service.ts index 5bb852858..cc5f3c5a1 100644 --- a/client/src/app/shared/forms/form-validators/instance-validators.service.ts +++ b/client/src/app/shared/forms/form-validators/instance-validators.service.ts | |||
@@ -7,6 +7,7 @@ import { Injectable } from '@angular/core' | |||
7 | export class InstanceValidatorsService { | 7 | export class InstanceValidatorsService { |
8 | readonly FROM_EMAIL: BuildFormValidator | 8 | readonly FROM_EMAIL: BuildFormValidator |
9 | readonly FROM_NAME: BuildFormValidator | 9 | readonly FROM_NAME: BuildFormValidator |
10 | readonly SUBJECT: BuildFormValidator | ||
10 | readonly BODY: BuildFormValidator | 11 | readonly BODY: BuildFormValidator |
11 | 12 | ||
12 | constructor (private i18n: I18n) { | 13 | constructor (private i18n: I18n) { |
@@ -32,6 +33,19 @@ export class InstanceValidatorsService { | |||
32 | } | 33 | } |
33 | } | 34 | } |
34 | 35 | ||
36 | this.SUBJECT = { | ||
37 | VALIDATORS: [ | ||
38 | Validators.required, | ||
39 | Validators.minLength(1), | ||
40 | Validators.maxLength(120) | ||
41 | ], | ||
42 | MESSAGES: { | ||
43 | 'required': this.i18n('A subject is required.'), | ||
44 | 'minlength': this.i18n('The subject must be at least 1 character long.'), | ||
45 | 'maxlength': this.i18n('The subject cannot be more than 120 characters long.') | ||
46 | } | ||
47 | } | ||
48 | |||
35 | this.BODY = { | 49 | this.BODY = { |
36 | VALIDATORS: [ | 50 | VALIDATORS: [ |
37 | Validators.required, | 51 | Validators.required, |
diff --git a/client/src/app/shared/instance/instance.service.ts b/client/src/app/shared/instance/instance.service.ts index 61321ecce..d0c96941d 100644 --- a/client/src/app/shared/instance/instance.service.ts +++ b/client/src/app/shared/instance/instance.service.ts | |||
@@ -22,10 +22,11 @@ export class InstanceService { | |||
22 | .pipe(catchError(res => this.restExtractor.handleError(res))) | 22 | .pipe(catchError(res => this.restExtractor.handleError(res))) |
23 | } | 23 | } |
24 | 24 | ||
25 | contactAdministrator (fromEmail: string, fromName: string, message: string) { | 25 | contactAdministrator (fromEmail: string, fromName: string, subject: string, message: string) { |
26 | const body = { | 26 | const body = { |
27 | fromEmail, | 27 | fromEmail, |
28 | fromName, | 28 | fromName, |
29 | subject, | ||
29 | body: message | 30 | body: message |
30 | } | 31 | } |
31 | 32 | ||