From fa08bdc596286b9af544241a5078f18d7a081cda Mon Sep 17 00:00:00 2001 From: Alex ORLUC <alex.orluc@maarch.org> Date: Thu, 3 Jan 2019 16:33:28 +0100 Subject: [PATCH] FEAT #8489 add update sendmail form --- apps/maarch_entreprise/xml/services.xml | 2 +- .../sendmail-administration.component.html | 35 ++++++++++------ .../sendmail-administration.component.ts | 41 +++++++++++++------ src/frontend/lang/lang-en.ts | 3 ++ src/frontend/lang/lang-fr.ts | 6 ++- src/frontend/lang/lang-nl.ts | 3 ++ 6 files changed, 62 insertions(+), 28 deletions(-) diff --git a/apps/maarch_entreprise/xml/services.xml b/apps/maarch_entreprise/xml/services.xml index 2c515c497e1..397af0de6e2 100755 --- a/apps/maarch_entreprise/xml/services.xml +++ b/apps/maarch_entreprise/xml/services.xml @@ -435,7 +435,7 @@ <angular>true</angular> </SERVICE>--> <SERVICE> - <id>admin_emailserver</id> + <id>admin_email_server</id> <name>_EMAILSERVER_PARAM</name> <comment>_EMAILSERVER_PARAM_DESC</comment> <servicepage>/administration/sendmail</servicepage> diff --git a/src/frontend/app/administration/sendmail/sendmail-administration.component.html b/src/frontend/app/administration/sendmail/sendmail-administration.component.html index 173a570d8dc..880988557ce 100644 --- a/src/frontend/app/administration/sendmail/sendmail-administration.component.html +++ b/src/frontend/app/administration/sendmail/sendmail-administration.component.html @@ -26,7 +26,7 @@ <div class="col-md-12" style="margin-bottom: 20px;"> <mat-form-field> <mat-select #smtpType (selectionChange)="changeDesc(smtpType)" name="smtpType" - placeholder="Type de configuration" [(ngModel)]="sendmail.smtpType"> + placeholder="Type de configuration" [(ngModel)]="sendmail.type"> <mat-option *ngFor="let type of smtpTypeList" [value]="type.id"> {{type.label}} </mat-option> @@ -35,11 +35,11 @@ </mat-form-field> </div> </div> - <div class="form-group" [style.opacity]="sendmail.smtpType != 'internalParam' ? '0.5' : '1'"> + <div class="form-group" [style.opacity]="sendmail.type != 'internalParam' ? '0.5' : '1'"> <div class="col-md-2"> <mat-form-field> <mat-select name="SMTPSecure" placeholder="Méthode d'authentification" - [disabled]="sendmail.smtpType != 'internalParam'" [(ngModel)]="sendmail.SMTPSecure"> + [disabled]="sendmail.type != 'internalParam'" [(ngModel)]="sendmail.secure"> <mat-option *ngFor="let security of smtpSecList" [value]="security"> {{security}} </mat-option> @@ -48,39 +48,48 @@ </div> <div class="col-md-9"> <mat-form-field> - <input matInput name="host" [disabled]="sendmail.smtpType != 'internalParam'" [(ngModel)]="sendmail.host" placeholder="{{lang.host}}"> + <input matInput name="host" [disabled]="sendmail.type != 'internalParam'" [(ngModel)]="sendmail.host" placeholder="{{lang.host}}"> </mat-form-field> </div> <div class="col-md-1"> <mat-form-field> <input name="port" type="number" matInput [(ngModel)]="sendmail.port" - [disabled]="sendmail.smtpType != 'internalParam'" placeholder="{{lang.port}}"> + [disabled]="sendmail.type != 'internalParam'" placeholder="{{lang.port}}"> </mat-form-field> </div> </div> - <div class="form-group" [style.opacity]="sendmail.smtpType != 'internalParam' ? '0.5' : '1'"> + <div class="form-group" [style.opacity]="sendmail.type != 'internalParam' ? '0.5' : '1'"> <div class="col-md-12"> - <mat-slide-toggle color="primary" name="SMTPAuth" [(ngModel)]="sendmail.SMTPAuth" - [disabled]="sendmail.smtpType != 'internalParam'">{{lang.enableAuth}}</mat-slide-toggle> + <mat-slide-toggle color="primary" name="SMTPAuth" [(ngModel)]="sendmail.auth" + [disabled]="sendmail.type != 'internalParam'">{{lang.enableAuth}}</mat-slide-toggle> </div> </div> - <div class="form-group" [style.opacity]="sendmail.smtpType != 'internalParam' ? '0.5' : '1'"> + <div class="form-group" [style.opacity]="sendmail.type != 'internalParam' ? '0.5' : '1'"> <div class="col-md-12"> <mat-form-field> - <input [disabled]="!sendmail.SMTPAuth || sendmail.smtpType != 'internalParam'" + <input name="user" [(ngModel)]="sendmail.user" [disabled]="!sendmail.auth || sendmail.type != 'internalParam'" matInput placeholder="{{lang.id}}"> </mat-form-field> </div> <div class="col-md-12"> <mat-form-field> - <input [disabled]="!sendmail.SMTPAuth || sendmail.smtpType != 'internalParam'" + <input name="password" [type]="hidePassword ? 'password' : 'text'" [(ngModel)]="sendmail.password" [disabled]="!sendmail.auth || sendmail.type != 'internalParam'" matInput placeholder="{{lang.password}}"> + <mat-icon style="cursor: pointer;" matSuffix (click)="hidePassword = !hidePassword" class="fa fa-2x" [ngClass]="[hidePassword ? 'fa-eye-slash' : 'fa-eye']"></mat-icon> + </mat-form-field> + </div> + </div> + <div class="form-group" [style.opacity]="sendmail.type != 'internalParam' ? '0.5' : '1'"> + <div class="col-md-12"> + <mat-form-field> + <input name="mailFrom" [(ngModel)]="sendmail.from" [disabled]="sendmail.type != 'internalParam'" + matInput placeholder="{{lang.mailFrom}}"> </mat-form-field> </div> </div> <div class="col-md-12 text-center" style="padding:10px;"> - <button mat-raised-button type="submit" color="primary">{{lang.validate}}</button> - <button mat-raised-button type="button" color="default" (click)="cancelModification()">{{lang.cancel}}</button> + <button mat-raised-button type="submit" color="primary" [disabled]="checkModif()" >{{lang.validate}}</button> + <button mat-raised-button type="button" color="default" [disabled]="checkModif()" (click)="cancelModification()">{{lang.cancel}}</button> </div> </form> </mat-tab> diff --git a/src/frontend/app/administration/sendmail/sendmail-administration.component.ts b/src/frontend/app/administration/sendmail/sendmail-administration.component.ts index 53665f04d16..90828385d4a 100644 --- a/src/frontend/app/administration/sendmail/sendmail-administration.component.ts +++ b/src/frontend/app/administration/sendmail/sendmail-administration.component.ts @@ -28,14 +28,15 @@ export class SendmailAdministrationComponent implements OnInit { loading : boolean = false; sendmail: any = { - 'smtpType': 'internalParam', + 'type': 'internalParam', 'host': '', - 'SMTPAuth': true, - 'username': '', + 'auth': true, + 'user': '', 'password': '', - 'SMTPSecure': 'ssl', //tls, ssl, starttls + 'secure': 'ssl', //tls, ssl, starttls 'port': '465', - + 'charset': 'utf-8', + 'from': '', }; smtpTypeList = [ @@ -51,6 +52,7 @@ export class SendmailAdministrationComponent implements OnInit { smtpTypeDesc = ''; smtpSecList = ['ssl', 'tls']; sendmailClone: any = {}; + hidePassword: boolean = true; constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private notify: NotificationService, private headerService: HeaderService) { @@ -68,12 +70,14 @@ export class SendmailAdministrationComponent implements OnInit { this.loading = true; this.coreUrl = angularGlobals.coreUrl; - // this.http.get(this.coreUrl + 'rest/sendmail') - // .subscribe((data: any) => { - - // }, (err) => { - // this.notify.error(err.error.errors); - // }); + this.http.get(this.coreUrl + 'rest/configurations/admin_email_server') + .subscribe((data: any) => { + this.sendmail = data.configuration.value + this.sendmailClone = JSON.parse(JSON.stringify(this.sendmail)); + this.smtpTypeDesc = this.lang[this.sendmail.type+'Desc']; + }, (err) => { + this.notify.handleErrors(err); + }); this.loading = false; } @@ -83,6 +87,19 @@ export class SendmailAdministrationComponent implements OnInit { changeDesc(e: any) { this.smtpTypeDesc = this.lang[e.selected.value+'Desc']; - console.log(e.selected.value+'Desc'); + } + + onSubmit() { + this.http.put(this.coreUrl + 'rest/configurations/admin_email_server', this.sendmail) + .subscribe((data: any) => { + this.sendmailClone = JSON.parse(JSON.stringify(this.sendmail)); + this.notify.success(this.lang.configurationUpdated); + }, (err) => { + this.notify.handleErrors(err); + }); + } + + checkModif() { + return (JSON.stringify(this.sendmailClone) === JSON.stringify(this.sendmail)); } } diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts index c5268850ee7..1448d6823c0 100755 --- a/src/frontend/lang/lang-en.ts +++ b/src/frontend/lang/lang-en.ts @@ -728,4 +728,7 @@ export const LANG_EN = { "connectionFailed" : "Connection to server failed, please try later.", "searchMailInBasket" : "Search mails in basket", "undefined" : "Undefined", + "configurationUpdated" : "Configuration updated", + "port" : "Port", + "mailFrom" : "Mail address used", }; diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts index 7683b2d6449..59d3e648f59 100755 --- a/src/frontend/lang/lang-fr.ts +++ b/src/frontend/lang/lang-fr.ts @@ -746,7 +746,7 @@ export const LANG_FR = { "undefinedStatus" : "Statut non défini", "subEntities" : "Entités (et sous-entités)", "category_id" : "Catégorie", - "smtpRelay" : "Relai stmp", + "smtpRelay" : "Relai smtp", "smtpRelayDesc" : "Utilisation d'un relai smtp du serveur (ssmtp par exemple), configuration externe à l'application", "internalParam" : "Configuration interne", "internalParamDesc" : "Utilisateur du module interne phpmailer de l'application", @@ -756,5 +756,7 @@ export const LANG_FR = { "connectionFailed" : "La connexion au serveur a échoué. Veuillez réessayer ultérieurement.", "searchMailInBasket" : "Rechercher des courriers dans la bannette", "undefined" : "Non défini", - + "configurationUpdated" : "Configuration mise à jour", + "port" : "Port", + "mailFrom" : "Adresse e-mail utilisée", }; diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts index 0b227f85d10..ce9ba9d8e56 100755 --- a/src/frontend/lang/lang-nl.ts +++ b/src/frontend/lang/lang-nl.ts @@ -757,4 +757,7 @@ export const LANG_NL = { "searchMailInBasket" : "_TO_TRANSLATE", "basketsAssignedShort" : "_TO_TRANSLATE", "undefined" : "_TO_TRANSLATE", + "configurationUpdated" : "_TO_TRANSLATE", + "port" : "_TO_TRANSLATE", + "mailFrom" : "_TO_TRANSLATE", }; -- GitLab