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