diff --git a/rest/index.php b/rest/index.php index 8952c064b54f12107c6be83844795a430ed90859..624ddc075d2dec5537ae7a8761a0a7597a5f9126 100755 --- a/rest/index.php +++ b/rest/index.php @@ -133,7 +133,7 @@ $app->post('/convertedFile', \Convert\controllers\ConvertPdfController::class . $app->get('/convertedFile/{filename}', \Convert\controllers\ConvertPdfController::class . ':getConvertedFileByFilename'); //ContentManagement -$app->get('/test', \ContentManagement\controllers\JnlpController::class . ':test'); //TODO +$app->post('/test', \ContentManagement\controllers\JnlpController::class . ':test'); //TODO $app->post('/jnlp', \ContentManagement\controllers\JnlpController::class . ':generateJnlp'); $app->get('/jnlp/{jnlpUniqueId}', \ContentManagement\controllers\JnlpController::class . ':renderJnlp'); $app->post('/jnlp/{jnlpUniqueId}', \ContentManagement\controllers\JnlpController::class . ':processJnlp'); diff --git a/src/frontend/app/viewer/document-viewer.component.ts b/src/frontend/app/viewer/document-viewer.component.ts index 178da9aec97e497e13e0a68204a7c26bd806d1f3..fad34dabfcb5e27e42eacc73a82c4433db1ee748 100644 --- a/src/frontend/app/viewer/document-viewer.component.ts +++ b/src/frontend/app/viewer/document-viewer.component.ts @@ -106,6 +106,8 @@ export class DocumentViewerComponent implements OnInit { } ngOnInit() { + this.setEditor(); + this.http.get('../../rest/indexing/fileInformations').pipe( tap((data: any) => { this.allowedExtensions = data.informations.allowedFiles.map((ext: any) => { @@ -750,4 +752,14 @@ export class DocumentViewerComponent implements OnInit { this.templateListForm.reset(); this.editInProgress = false; } + + setEditor() { + if (this.headerService.user.preferences.documentEdition === 'java') { + this.editor.mode = 'java'; + this.editor.async = true; + } else if (this.headerService.user.preferences.documentEdition === 'onlyoffice') { + this.editor.mode = 'onlyoffice'; + this.editor.async = false; + } + } } diff --git a/src/frontend/plugins/onlyoffice-api-js/onlyoffice-api.js b/src/frontend/plugins/onlyoffice-api-js/onlyoffice-api.js index 0d72a4dd2b5a391f60be8ba5dcef0262930e0fea..69734068ab95f835a11b2605f9c799f0d9728d5a 100644 --- a/src/frontend/plugins/onlyoffice-api-js/onlyoffice-api.js +++ b/src/frontend/plugins/onlyoffice-api-js/onlyoffice-api.js @@ -187,7 +187,7 @@ var onlyofficetesturl = ''; // TODO: allow several instances on one page simultaneously - DocsAPI.DocEditor = function(placeholderId, config) { + DocsAPI.DocEditor = function(placeholderId, config, onlyOfficeIp) { var _self = this, _config = config || {}; @@ -207,6 +207,7 @@ var onlyofficetesturl = ''; _config.editorConfig.canRequestInsertImage = _config.events && !!_config.events.onRequestInsertImage; _config.editorConfig.canRequestMailMergeRecipients = _config.events && !!_config.events.onRequestMailMergeRecipients; _config.frameEditorId = placeholderId; + _config.onlyOfficeIp = onlyOfficeIp; var onMouseUp = function (evt) { _processMouse(evt); @@ -687,9 +688,11 @@ var onlyofficetesturl = ''; } }; - function getBasePath() { - return `http://192.168.1.20:8765/web-apps/apps/`; - var scripts = document.getElementsByTagName('script'), + function getBasePath(config) { + return `http://10.2.95.76:8765/web-apps/apps/`; + return `http://${config.onlyOfficeIp}/web-apps/apps/`; + + /*var scripts = document.getElementsByTagName('script'), match; for (var i = scripts.length - 1; i >= 0; i--) { @@ -699,7 +702,7 @@ var onlyofficetesturl = ''; } } - return ""; + return "";*/ } function getExtensionPath() { @@ -710,7 +713,7 @@ var onlyofficetesturl = ''; function getAppPath(config) { var extensionPath = getExtensionPath(), - path = extensionPath ? extensionPath : getBasePath(), + path = extensionPath ? extensionPath : getBasePath(config), appMap = { 'text': 'documenteditor', 'text-pdf': 'documenteditor', 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 c91f662bbf823001319504e54474e1a20b26b0ed..3bafb5bfb6955eb13062475098381558619df49e 100644 --- a/src/frontend/plugins/onlyoffice-api-js/onlyoffice-viewer.component.ts +++ b/src/frontend/plugins/onlyoffice-api-js/onlyoffice-viewer.component.ts @@ -11,7 +11,7 @@ import { import './onlyoffice-api.js'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { Subject, Observable, of } from 'rxjs'; -import { catchError, tap } from 'rxjs/operators'; +import { catchError, tap, filter, exhaustMap } from 'rxjs/operators'; declare var DocsAPI: any; @@ -39,6 +39,9 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit { tmpFilename: string = ''; + appUrl: string = ''; + onlyfficeUrl: string = ''; + private eventAction = new Subject<any>(); @@ -50,7 +53,6 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit { // EVENT TO CONSTANTLY UPDATE CURRENT DOCUMENT if (response.event === 'onDownloadAs') { this.getEncodedDocument(response.data); - // EVENT TO AVOID INFINITE LOOP WITH MODIFIED EVENT + UPDATE DOC } } constructor(public http: HttpClient) { } @@ -68,7 +70,6 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit { getEncodedDocument(data: any) { this.http.get('../../rest/onlyOffice/encodedFile', { params: { url: data } }).pipe( tap((data: any) => { - //console.log(data.encodedFile); this.file.content = data.encodedFile; this.isSaving = false; this.triggerAfterUpdatedDoc.emit(); @@ -91,7 +92,17 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit { ngOnInit() { this.key = this.generateUniqueId(); - this.http.post(`../../${this.params.docUrl}`, { objectId: this.params.objectId, objectType: this.params.objectType, onlyOfficeKey: this.key, data : this.params.dataToMerge }).pipe( + this.http.get(`../../rest/onlyOffice/configuration`,).pipe( + tap((data: any) => { + if (data.enabled) { + this.onlyfficeUrl = data.serverUri; + this.appUrl = data.coreUrl; + } else { + this.triggerCloseEditor.emit(); + } + }), + filter((data: any) => data.enabled), + exhaustMap(() => this.http.post(`../../${this.params.docUrl}`, { objectId: this.params.objectId, objectType: this.params.objectType, onlyOfficeKey: this.key, data : this.params.dataToMerge })), tap((data: any) => { this.tmpFilename = data.filename; @@ -130,7 +141,7 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit { fileType: this.file.format, key: this.key, title: 'Edition', - url: `http://cchaplin:maarch@192.168.1.20/maarch_courrier_develop/${this.params.docUrl}?filename=${this.tmpFilename}`, + url: `${this.appUrl}${this.params.docUrl}?filename=${this.tmpFilename}`, permissions: { comment: false, download: true, @@ -140,7 +151,7 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit { } }, editorConfig: { - callbackUrl: 'http://cchaplin:maarch@192.168.1.20/maarch_courrier_develop/rest/test', + callbackUrl: 'http://cchaplin:maarch@10.2.95.76/maarch_courrier_develop/rest/test', lang: 'fr', region: 'fr-FR', mode: 'edit', @@ -163,7 +174,7 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit { }, }, }; - this.docEditor = new DocsAPI.DocEditor('placeholder', this.editorConfig); + this.docEditor = new DocsAPI.DocEditor('placeholder', this.editorConfig, this.onlyfficeUrl); } isLocked() { diff --git a/src/frontend/service/app.guard.ts b/src/frontend/service/app.guard.ts index b058196a481c0cf946ce2fb60fa971499303d4b5..53ecce73c6dd8427538e910b2910ebe279f4890b 100644 --- a/src/frontend/service/app.guard.ts +++ b/src/frontend/service/app.guard.ts @@ -34,6 +34,7 @@ export class AppGuard implements CanActivate { lastname: data.lastname, entities: data.entities, groups: data.groups, + preferences: data.preferences, privileges: data.privileges[0] === 'ALL_PRIVILEGES' ? this.privilegeService.getAllPrivileges() : data.privileges } return true; diff --git a/src/frontend/service/header.service.ts b/src/frontend/service/header.service.ts index 28253631441f37137390b1ae9f30ad50c984573a..c643efdf801557981eef583d433b35119a284362 100755 --- a/src/frontend/service/header.service.ts +++ b/src/frontend/service/header.service.ts @@ -35,6 +35,7 @@ export class HeaderService { lastname: data.lastname, entities: data.entities, groups: data.groups, + preferences: data.preferences, privileges: data.privileges[0] === 'ALL_PRIVILEGES' ? this.user.privileges : data.privileges } })