Newer
Older

Hamza HRAMCHI
committed
import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
import { NotificationService } from '../../service/notification.service';
import { HttpClient } from '@angular/common/http';
import { tap, catchError } from 'rxjs/operators';
import { TranslateService } from '@ngx-translate/core';
import { AuthService } from '../../service/auth.service';
import { of } from 'rxjs';
import { NgForm } from '@angular/forms';
import { FunctionsService } from '../../service/functions.service';
declare let tinymce: any;
@Component({
templateUrl: 'customization.component.html',
styleUrls: ['../administration.scss', 'customization.component.scss'],
})

Hamza HRAMCHI
committed
export class CustomizationComponent implements OnInit, OnDestroy {
@ViewChild('customizationForm', { static: false }) customizationForm: NgForm;
loading: boolean = true;
loginMessage: string = '';
applicationUrl: string = '';
watermark = {
enabled: false,
text: 'Document n°[id]',
constructor(
public http: HttpClient,
private translate: TranslateService,
public notificationService: NotificationService,
public authService: AuthService,
private functions: FunctionsService
async ngOnInit(){
await this.getCustomizationInfos();
setTimeout(() => {
this.initMce();
}, 0);
}
ngOnDestroy(): void {
tinymce.remove();
}
getCustomizationInfos() {
return new Promise((resolve) => {
this.http.get('../rest/authenticationInformations').pipe(
tap((data: any) => {
this.applicationUrl = data.applicationUrl;
this.loginMessage = data.loginMessage;
resolve(true);
}),
catchError((err: any) => {
this.notificationService.handleErrors(err);
return of(false);
})
).subscribe();
});
}
getWatermark() {
return new Promise((resolve) => {
this.http.get('../rest/customization/watermark').pipe(
tap((data: any) => {
if (!this.functions.empty(data.configuration)) {
this.watermark = data.configuration;
}
resolve(true);
}),
catchError((err: any) => {
this.notificationService.handleErrors(err);
return of(false);
})
).subscribe();

Hamza HRAMCHI
committed
});
}
onSubmit() {
this.loginMessage = tinymce.get('login_message').getContent();
this.http.put('../rest/customization', {id: this.authService.user.id , loginMessage: this.loginMessage, applicationUrl: this.applicationUrl, watermark: this.watermark}).pipe(
this.notificationService.success(this.translate.instant('lang.modificationSaved'));
}),
catchError((err: any) => {
this.notificationService.handleErrors(err);
return of(false);
})
).subscribe();
isNumber(evt: any) {
evt = (evt) ? evt : window.event;
const charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
return true;
}
initMce() {
const param = {
selector: '#login_message',
base_url: `${this.functions.getBaseUrl().split('#')[0]}/tinymce/`,
height: '200',
suffix: '.min',
extended_valid_elements : 'tag,class,script[src|async|defer|type|charset]',
content_css: `${this.functions.getBaseUrl().split('#')[0]}/assets/custom_tinymce.css`,
language: this.translate.instant('lang.langISO').replace('-', '_'),
language_url: `../node_modules/tinymce-i18n/langs/${this.translate.instant('lang.langISO').replace('-', '_')}.js`,
menubar: false,
statusbar: false,
readonly: false,
plugins: [
'autolink', 'table', 'noneditable', 'link'
],
noneditable_noneditable_class: 'mceNonEditable',
table_toolbar: '',
table_sizing_mode: 'relative',
table_resize_bars: false,
toolbar_sticky: true,
toolbar_drawer: 'floating',
table_style_by_css: true,
content_style: 'table td { padding: 1px; vertical-align: top; }',
forced_root_block : false,
toolbar: 'undo redo | fontselect fontsizeselect | bold italic underline strikethrough forecolor backcolor | table maarch_b64image | \
alignleft aligncenter alignright alignjustify \
bullist numlist outdent indent | removeformat | link'
};
tinymce.init(param);
}
}