From f4cb35ed45b452f5afe72e619eef7535118b69b8 Mon Sep 17 00:00:00 2001
From: Alex ORLUC <alex.orluc@maarch.org>
Date: Thu, 9 Apr 2020 16:14:50 +0200
Subject: [PATCH] FEAT #13441 TIME 1:20 front edit template

---
 .../controllers/TemplateController.php        |  2 +-
 .../template-administration.component.html    |  5 +-
 .../template-administration.component.ts      | 73 +++++++++++++++----
 .../onlyoffice-viewer.component.ts            |  2 +-
 .../service/auth-interceptor.service.ts       |  2 -
 5 files changed, 61 insertions(+), 23 deletions(-)

diff --git a/src/app/template/controllers/TemplateController.php b/src/app/template/controllers/TemplateController.php
index 04363887e44..f2629c25c50 100755
--- a/src/app/template/controllers/TemplateController.php
+++ b/src/app/template/controllers/TemplateController.php
@@ -140,7 +140,7 @@ class TemplateController
             $finfo    = new \finfo(FILEINFO_MIME_TYPE);
             $mimeType = $finfo->buffer($fileContent);
             if (!in_array($mimeType, self::AUTHORIZED_MIMETYPES)) {
-                return $response->withStatus(400)->withJson(['errors' => _WRONG_FILE_TYPE]);
+                return $response->withStatus(400)->withJson(['errors' => _WRONG_FILE_TYPE . ' : '.$mimeType]);
             }
 
             $storeResult = DocserverController::storeResourceOnDocServer([
diff --git a/src/frontend/app/administration/template/template-administration.component.html b/src/frontend/app/administration/template/template-administration.component.html
index b21014fdee9..e54566ea3c2 100755
--- a/src/frontend/app/administration/template/template-administration.component.html
+++ b/src/frontend/app/administration/template/template-administration.component.html
@@ -150,12 +150,11 @@
                                         [disabled]="lockFound">{{lang.templateEdition}}</button>
                                     <button mat-raised-button color="default" type="button"
                                         (click)="$event.stopPropagation();uploadSignFileOffice.click()"
-                                        *ngIf="((creationMode && !selectedModelFile) || (!creationMode))"
+                                        *ngIf="((creationMode && !selectedModelFile) || (!creationMode && !functionsService.empty(template.file.name)))"
                                         [disabled]="lockFound">{{lang.importFile}}</button>
                                 </div>
                                 <iframe *ngIf="templateDocView !== null" [src]="templateDocView"
                                     style="width:100%;height:800px;"></iframe>
-                                <!--<app-document-viewer *ngIf="templateDocView !== null" #appDocumentViewer [editMode]="false" [base64]="templateDocView" style="height:100%;width:100%;"></app-document-viewer>-->
                             </div>
                             <div class="form-group" *ngIf="template.type=='TXT'">
                                 <div class="col-sm-12">
@@ -246,7 +245,7 @@
                                             </mat-form-field>
                                             <button mat-raised-button color="default" type="button"
                                                 (click)="$event.stopPropagation();editFile()"
-                                                *ngIf="((creationMode && selectedModelFile) || (!creationMode))"
+                                                *ngIf="((creationMode && selectedModelFile) || (!creationMode && !functionsService.empty(template.file.paper.name)))"
                                                 [disabled]="lockFound">{{lang.templateEdition}}</button>
                                             <button mat-raised-button color="default" type="button"
                                                 (click)="$event.stopPropagation();uploadSignFileOfficeHtml.click()"
diff --git a/src/frontend/app/administration/template/template-administration.component.ts b/src/frontend/app/administration/template/template-administration.component.ts
index e25e5d2e303..c44201ba03c 100755
--- a/src/frontend/app/administration/template/template-administration.component.ts
+++ b/src/frontend/app/administration/template/template-administration.component.ts
@@ -1,4 +1,4 @@
-import { Component, OnInit, ViewChild, Inject, TemplateRef, ViewContainerRef } from '@angular/core';
+import { Component, OnInit, ViewChild, Inject, TemplateRef, ViewContainerRef, OnDestroy } from '@angular/core';
 import { HttpClient } from '@angular/common/http';
 import { Router, ActivatedRoute } from '@angular/router';
 import { LANG } from '../../translate.component';
@@ -21,7 +21,7 @@ declare var tinymce: any;
     styleUrls: ['template-administration.component.scss'],
     providers: [AppService]
 })
-export class TemplateAdministrationComponent implements OnInit {
+export class TemplateAdministrationComponent implements OnInit, OnDestroy {
 
     @ViewChild('snav2', { static: true }) public sidenavRight: MatSidenav;
     @ViewChild('adminMenuTemplate', { static: true }) adminMenuTemplate: TemplateRef<any>;
@@ -143,7 +143,7 @@ export class TemplateAdministrationComponent implements OnInit {
                             this.template.file.format = data.template.template_file_name.split('.').pop();
                             this.template.file.name = data.template.template_file_name;
                         } else if (this.template.target === 'acknowledgementReceipt') {
-                            if (!this.functionsService.empty(this.template.file.paper.format)) {
+                            if (!this.functionsService.empty(data.template.template_file_name)) {
                                 this.template.file.paper.format = data.template.template_file_name.split('.').pop();
                             }
                             this.template.file.paper.name = data.template.template_file_name;
@@ -308,22 +308,59 @@ export class TemplateAdministrationComponent implements OnInit {
 
     editFile() {
         const editorOptions: any = {};
-
-        if (this.creationMode || ((this.template.target !== 'acknowledgementReceipt' && this.functionsService.empty(this.template.file.name) || (this.template.target === 'acknowledgementReceipt' && this.functionsService.empty(this.template.file.paper.name))))) {
-            for (const element of this.defaultTemplatesList) {
-                if (this.selectedModelFile === element.fileExt + ': ' + element.fileName) {
-                    editorOptions.objectId = element.filePath;
+        editorOptions.docUrl = `rest/onlyOffice/mergedFile`;
+        if (this.creationMode) {
+            if (this.template.target !== 'acknowledgementReceipt') {
+                if (!this.functionsService.empty(this.template.file.content)) {
+                    editorOptions.objectType = 'encodedResource';
+                    editorOptions.objectId = this.template.file.content;
+                    editorOptions.extension = this.template.file.format;
+                } else {
+                    editorOptions.objectType = 'templateCreation';
+                    for (const element of this.defaultTemplatesList) {
+                        if (this.selectedModelFile === element.fileExt + ': ' + element.fileName) {
+                            editorOptions.objectId = element.filePath;
+                        }
+                    }
+                    editorOptions.extension = editorOptions.objectId.toLowerCase().split('.').pop();
+                }
+            } else if (this.template.target === 'acknowledgementReceipt') {
+                if (!this.functionsService.empty(this.template.file.paper.content)) {
+                    editorOptions.objectType = 'encodedResource';
+                    editorOptions.objectId = this.template.file.paper.content;
+                    editorOptions.extension = this.template.file.paper.format;
+                } else {
+                    editorOptions.objectType = 'templateCreation';
+                    for (const element of this.defaultTemplatesList) {
+                        if (this.selectedModelFile === element.fileExt + ': ' + element.fileName) {
+                            editorOptions.objectId = element.filePath;
+                        }
+                    }
+                    editorOptions.extension = editorOptions.objectId.toLowerCase().split('.').pop();
                 }
             }
-            editorOptions.objectType = 'templateCreation';
-            editorOptions.docUrl = `rest/onlyOffice/mergedFile`;
-            editorOptions.extension = editorOptions.objectId.toLowerCase().split('.').pop();
-
         } else {
-            editorOptions.objectType = 'templateModification';
-            editorOptions.docUrl = `rest/onlyOffice/mergedFile`;
-            editorOptions.objectId = this.template.id;
-            editorOptions.extension = this.template.target === 'acknowledgementReceipt' ? this.template.file.paper.name.toLowerCase().split('.').pop() : this.template.file.name.toLowerCase().split('.').pop();
+            if (this.template.target !== 'acknowledgementReceipt') {
+                if (!this.functionsService.empty(this.template.file.content)) {
+                    editorOptions.objectType = 'encodedResource';
+                    editorOptions.objectId = this.template.file.content;
+                    editorOptions.extension = this.template.file.format;
+                } else {
+                    editorOptions.objectType = 'templateModification';
+                    editorOptions.objectId = this.template.id;
+                    editorOptions.extension = this.template.file.name.toLowerCase().split('.').pop();
+                }
+            } else if (this.template.target === 'acknowledgementReceipt') {
+                if (!this.functionsService.empty(this.template.file.paper.content)) {
+                    editorOptions.objectType = 'encodedResource';
+                    editorOptions.objectId = this.template.file.paper.content;
+                    editorOptions.extension = this.template.file.paper.format;
+                } else {
+                    editorOptions.objectType = 'templateModification';
+                    editorOptions.objectId = this.template.id;
+                    editorOptions.extension = this.template.file.paper.name.toLowerCase().split('.').pop();
+                }
+            }
         }
 
         if (this.headerService.user.preferences.documentEdition === 'java') {
@@ -588,6 +625,10 @@ export class TemplateAdministrationComponent implements OnInit {
             }
         }
     }
+
+    ngOnDestroy() {
+        tinymce.remove('textarea');
+    }
 }
 @Component({
     templateUrl: 'template-administration-checkEntities-modal.component.html',
diff --git a/src/frontend/plugins/onlyoffice-api-js/onlyoffice-viewer.component.ts b/src/frontend/plugins/onlyoffice-api-js/onlyoffice-viewer.component.ts
index 02b9a8ea7c2..321b48765d9 100644
--- a/src/frontend/plugins/onlyoffice-api-js/onlyoffice-viewer.component.ts
+++ b/src/frontend/plugins/onlyoffice-api-js/onlyoffice-viewer.component.ts
@@ -218,7 +218,7 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit, OnD
 
     getMergedFileTemplate() {
         return new Promise((resolve, reject) => {
-            this.http.post(`../../${this.params.docUrl}`, { objectId: this.params.objectId, objectType: this.params.objectType, onlyOfficeKey: this.key, data: this.params.dataToMerge }).pipe(
+            this.http.post(`../${this.params.docUrl}`, { objectId: this.params.objectId, objectType: this.params.objectType, format: this.file.format, onlyOfficeKey: this.key, data: this.params.dataToMerge }).pipe(
                 tap((data: any) => {
                     this.tmpFilename = data.filename;
 
diff --git a/src/frontend/service/auth-interceptor.service.ts b/src/frontend/service/auth-interceptor.service.ts
index fcb973f0019..9a73ca30f70 100644
--- a/src/frontend/service/auth-interceptor.service.ts
+++ b/src/frontend/service/auth-interceptor.service.ts
@@ -36,8 +36,6 @@ export class AuthInterceptor implements HttpInterceptor {
 
     intercept(request: HttpRequest<any>, next: HttpHandler): Observable<any> {
 
-        console.log(request.url);
-
         // We don't want to intercept some routes
         if (this.excludeUrls.indexOf(request.url) > -1 || request.url.indexOf('/password') > -1) {
             return next.handle(request);
-- 
GitLab