From db2f5818c7ef66125af38bd23852511ec593450d Mon Sep 17 00:00:00 2001
From: Julia Radzhabova <Julia.Radzhabova@onlyoffice.com>
Date: Tue, 15 Jan 2019 14:12:09 +0300
Subject: [PATCH] [DE] Save/load display mode for review changes to/from local
 storage in viewer (set "original" mode by default)

---
 .../main/lib/controller/ReviewChanges.js      | 20 ++++++++++++-------
 apps/common/main/lib/view/ReviewChanges.js    |  9 +++++++++
 2 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/apps/common/main/lib/controller/ReviewChanges.js b/apps/common/main/lib/controller/ReviewChanges.js
index 7d31d22b6..7cf006f18 100644
--- a/apps/common/main/lib/controller/ReviewChanges.js
+++ b/apps/common/main/lib/controller/ReviewChanges.js
@@ -514,17 +514,22 @@ define([
         },
 
         onReviewViewClick: function(menu, item, e) {
+            this.turnDisplayMode(item.value);
+            !this.appConfig.canReview && Common.localStorage.setItem(this.view.appPrefix + "review-mode", item.value);
+            Common.NotificationCenter.trigger('edit:complete', this.view);
+        },
+
+        turnDisplayMode: function(mode) {
             if (this.api) {
-                if (item.value === 'final')
+                if (mode === 'final')
                     this.api.asc_BeginViewModeInReview(true);
-                else if (item.value === 'original')
+                else if (mode === 'original')
                     this.api.asc_BeginViewModeInReview(false);
                 else
                     this.api.asc_EndViewModeInReview();
             }
-            this.disableEditing(item.value !== 'markup');
-            this._state.previewMode = (item.value !== 'markup');
-            Common.NotificationCenter.trigger('edit:complete', this.view);
+            this.disableEditing(mode == 'final' || mode == 'original');
+            this._state.previewMode = (mode == 'final' || mode == 'original');
         },
 
         isPreviewChangesMode: function() {
@@ -628,8 +633,9 @@ define([
                         me.dlgChanges.show(Math.max(10, offset.left + sdk.width() - 300), Math.max(10, offset.top + sdk.height() - 150));
                     }
                 });
-            } else {
-                config.canViewReview && (config.canViewReview = me.api.asc_HaveRevisionsChanges(true)); // check revisions from all users
+            } else if (config.canViewReview) {
+                config.canViewReview = me.api.asc_HaveRevisionsChanges(true); // check revisions from all users
+                config.canViewReview && me.turnDisplayMode(Common.localStorage.getItem(me.view.appPrefix + "review-mode") || 'original'); // load display mode only in viewer
             }
 
             if (me.view && me.view.btnChat) {
diff --git a/apps/common/main/lib/view/ReviewChanges.js b/apps/common/main/lib/view/ReviewChanges.js
index 70cb42b9d..d74d143ef 100644
--- a/apps/common/main/lib/view/ReviewChanges.js
+++ b/apps/common/main/lib/view/ReviewChanges.js
@@ -350,6 +350,7 @@ define([
                                 ]
                             }));
                         me.btnReviewView.updateHint(me.tipReviewView);
+                        !me.appConfig.canReview && me.turnDisplayMode(Common.localStorage.getItem(me.appPrefix + "review-mode") || 'original');
                     }
                     me.btnSharing && me.btnSharing.updateHint(me.tipSharing);
                     me.btnHistory && me.btnHistory.updateHint(me.tipHistory);
@@ -530,6 +531,14 @@ define([
                 this.btnChat && this.btnChat.toggle(state, true);
             },
 
+            turnDisplayMode: function(mode) {
+                if (this.btnReviewView) {
+                    this.btnReviewView.menu.items[0].setChecked(mode=='markup', true);
+                    this.btnReviewView.menu.items[1].setChecked(mode=='final', true);
+                    this.btnReviewView.menu.items[2].setChecked(mode=='original', true);
+                }
+            },
+
             SetDisabled: function (state, langs) {
                 this.btnsSpelling && this.btnsSpelling.forEach(function(button) {
                     if ( button ) {