From d4598d47358f7badd2609b82629a3f2f542d0602 Mon Sep 17 00:00:00 2001
From: Alex ORLUC <alex.orluc@maarch.org>
Date: Wed, 11 Dec 2019 16:14:00 +0100
Subject: [PATCH] FEAT #0000 TIME 4 onlyoffice some tests

---
 rest/index.php                                |  2 +-
 .../controllers/JnlpController.php            | 10 +++-
 .../onlyoffice-viewer.component.ts            | 56 +++++++++----------
 3 files changed, 36 insertions(+), 32 deletions(-)

diff --git a/rest/index.php b/rest/index.php
index cfd934219a3..e86b2859977 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -33,7 +33,7 @@ $app->add(function (\Slim\Http\Request $request, \Slim\Http\Response $response,
     $route = $request->getAttribute('route');
     $currentMethod = empty($route) ? '' : $route->getMethods()[0];
     $currentRoute = empty($route) ? '' : $route->getPattern();
-    if (!in_array($currentMethod.$currentRoute, $routesWithoutAuthentication) && preg_match('/POST\/test*/', $currentMethod.$currentRoute) == 0) {
+    if (!in_array($currentMethod.$currentRoute, $routesWithoutAuthentication)) {
         $login = \SrcCore\controllers\AuthenticationController::authentication();
         if (!empty($login)) {
             \SrcCore\controllers\CoreController::setGlobals(['login' => $login]);
diff --git a/src/app/contentManagement/controllers/JnlpController.php b/src/app/contentManagement/controllers/JnlpController.php
index 3e414e33d27..82378356200 100755
--- a/src/app/contentManagement/controllers/JnlpController.php
+++ b/src/app/contentManagement/controllers/JnlpController.php
@@ -383,22 +383,26 @@ class JnlpController
 
     public static function test(Request $request, Response $response)
     {
+
         if (($body_stream = file_get_contents("php://input"))===false) {
             echo "Bad Request";
         }
         
         $data = json_decode($body_stream, true);
-        
-        if ($data["status"] == 2) {
+        if ($data["status"] == 2 || $data["status"] == 6) {
             $downloadUri = $data["url"];
                 
             if (($new_data = file_get_contents($downloadUri))===false) {
                 echo "Bad Response";
             } else {
-                echo $new_data;
+                $tmpPath = CoreConfigModel::getTmpPath();
+                $fileOnTmp = "tmp_file_onlyoffice_{$data["key"]}.odt";
+                file_put_contents($tmpPath.$fileOnTmp, $new_data, LOCK_EX);
+                // echo $new_data;
                 //file_put_contents($path_for_save, $new_data, LOCK_EX);
             }
         }
+
         return $response->withJson(['error' => 0]);
     }
 }
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 27b0b12ce7b..1117570a9a7 100644
--- a/src/frontend/plugins/onlyoffice-api-js/onlyoffice-viewer.component.ts
+++ b/src/frontend/plugins/onlyoffice-api-js/onlyoffice-viewer.component.ts
@@ -33,59 +33,59 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit {
     docEditor: any;
     showModalWindow: boolean = false;
 
-    @HostListener('window:message',['$event'])
+    @HostListener('window:message', ['$event'])
     onMessage(e: any) {
         console.log(e);
         const response = JSON.parse(e.data);
-        
+
         if (response.event === 'onDownloadAs') {
-            this.onDownloadAs(response.data);
+            this.saveDocument();
         }
     }
-    constructor(private zone: NgZone, public http: HttpClient) { }    
+    constructor(private zone: NgZone, public http: HttpClient) { }
 
     quit() {
         this.docEditor.downloadAs();
-        //this.docEditor.destroyEditor();
     }
 
-    onDocumentStateChange(event: any) {
-        if (event.data) {
-            console.log('The document changed');
-            console.log(event);
-        } else {
-            console.log('Changes are collected on document editing service');
+    saveDocument() {
+        const content = {
+            "c": "forcesave",
+            "key": "azerty4",
+            "userdata": "Bernard BLIER"
         }
-    }
 
-    onDownloadAs(url: any) {
         const optionRequete = {
             headers: new HttpHeaders({ 
               'Access-Control-Allow-Origin':'*',
-            })
-          };
-        this.http.get(url, optionRequete).pipe(
-            tap((data: any) => {
-                console.log(data);
             }),
-            catchError((err: any) => {
-                console.log(err)
-                return of(false);
-            })
-        ).subscribe();
+            params: content
+          };
+
+        this.http.post('http://10.2.95.76:8765/coauthoring/CommandService.ashx', {}, optionRequete).pipe().subscribe();
     }
-    
+
 
     ngOnInit() { }
 
+    generateUniqueId(length: number = 5) {
+        var result = '';
+        var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
+        var charactersLength = characters.length;
+        for (var i = 0; i < length; i++) {
+            result += characters.charAt(Math.floor(Math.random() * charactersLength));
+        }
+        return result;
+    }
+
     ngAfterViewInit() {
         this.editorConfig = {
             documentType: 'text',
             document: {
                 fileType: 'odt',
-                key: 'toto',
+                key: 'azerty4',
                 title: this.onlyofficeName,
-                url: `http://10.2.95.76/rep_standard.odt`,
+                url: `http://cchaplin:maarch@10.2.95.76/maarch_courrier_develop/rest/resources/1660/originalContent`,
                 permissions: {
                     comment: false,
                     download: true,
@@ -95,7 +95,7 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit {
                 }
             },
             editorConfig: {
-                callbackUrl: 'http://10.2.95.76/maarch_courrier_develop/rest/test',
+                callbackUrl: 'http://cchaplin:maarch@10.2.95.76/maarch_courrier_develop/rest/test',
                 lang: 'fr-FR',
                 mode: 'edit',
                 customization: {
@@ -103,7 +103,7 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit {
                     comments: false,
                     compactToolbar: false,
                     feedback: false,
-                    forcesave: false,
+                    forcesave: true,
                     goback: false,
                     hideRightMenu: true,
                     showReviewChanges: false,
-- 
GitLab