From 550b22c3be1cf8b120ef2354dc9e24ccd55b74aa Mon Sep 17 00:00:00 2001
From: Julia Radzhabova <Julia.Radzhabova@onlyoffice.com>
Date: Fri, 12 Apr 2019 17:55:08 +0300
Subject: [PATCH] [DE] Review: add description for moved text and move to
 changed text

---
 .../main/lib/controller/ReviewChanges.js      | 25 ++++++++++++++-----
 .../template/ReviewChangesPopover.template    | 19 ++++++++------
 apps/common/main/lib/view/ReviewPopover.js    |  2 ++
 apps/common/main/resources/less/comments.less |  6 ++++-
 4 files changed, 37 insertions(+), 15 deletions(-)

diff --git a/apps/common/main/lib/controller/ReviewChanges.js b/apps/common/main/lib/controller/ReviewChanges.js
index ced73f3b7..ede54d3dc 100644
--- a/apps/common/main/lib/controller/ReviewChanges.js
+++ b/apps/common/main/lib/controller/ReviewChanges.js
@@ -86,7 +86,8 @@ define([
                 'Common.Views.ReviewPopover': {
                     'reviewchange:accept':      _.bind(this.onAcceptClick, this),
                     'reviewchange:reject':      _.bind(this.onRejectClick, this),
-                    'reviewchange:delete':      _.bind(this.onDeleteClick, this)
+                    'reviewchange:delete':      _.bind(this.onDeleteClick, this),
+                    'reviewchange:goto':        _.bind(this.onGotoClick, this)
                 }
             });
         },
@@ -237,10 +238,11 @@ define([
             _.each(data, function(item) {
                 var changetext = '', proptext = '',
                     value = item.get_Value(),
+                    movetype = item.get_MoveType(),
                     settings = false;
                 switch (item.get_Type()) {
                     case Asc.c_oAscRevisionsChangeType.TextAdd:
-                        changetext = me.textInserted;
+                        changetext = (movetype==Asc.c_oAscRevisionsMove.NoMove) ? me.textInserted : me.textParaMoveTo;
                         if (typeof value == 'object') {
                             _.each(value, function(obj) {
                                 if (typeof obj === 'string')
@@ -267,7 +269,7 @@ define([
                         }
                     break;
                     case Asc.c_oAscRevisionsChangeType.TextRem:
-                        changetext = me.textDeleted;
+                        changetext = (movetype==Asc.c_oAscRevisionsMove.NoMove) ? me.textDeleted : (item.is_MovedDown() ? me.textParaMoveFromDown : me.textParaMoveFromUp);
                         if (typeof value == 'object') {
                             _.each(value, function(obj) {
                                 if (typeof obj === 'string')
@@ -430,7 +432,8 @@ define([
                         type        : item.get_Type(),
                         changedata  : item,
                         scope       : me.view,
-                        hint        : !me.appConfig.canReview
+                        hint        : !me.appConfig.canReview,
+                        goto        : (item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveTo || item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveFrom)
                     });
 
                 arr.push(change);
@@ -511,6 +514,13 @@ define([
             Common.NotificationCenter.trigger('edit:complete', this.view);
         },
 
+        onGotoClick: function(change) {
+            if (this.api) {
+                this.api.asc_FollowRevisionMove(change);
+            }
+            Common.NotificationCenter.trigger('edit:complete', this.view);
+        },
+
         onTurnPreview: function(state) {
             if ( this.appConfig.isReviewOnly ) {
                 this.view.turnChanges(true);
@@ -774,7 +784,10 @@ define([
         textShape: 'Shape',
         textTableChanged: '<b>Table Settings Changed</b>',
         textTableRowsAdd: '<b>Table Rows Added<b/>',
-        textTableRowsDel: '<b>Table Rows Deleted<b/>'
-        
+        textTableRowsDel: '<b>Table Rows Deleted<b/>',
+        textParaMoveTo: '<b>Moved:</b>',
+        textParaMoveFromUp: '<b>Moved Up:</b>',
+        textParaMoveFromDown: '<b>Moved Down:</b>'
+
     }, Common.Controllers.ReviewChanges || {}));
 });
\ No newline at end of file
diff --git a/apps/common/main/lib/template/ReviewChangesPopover.template b/apps/common/main/lib/template/ReviewChangesPopover.template
index bad0fdc7c..9b8762816 100644
--- a/apps/common/main/lib/template/ReviewChangesPopover.template
+++ b/apps/common/main/lib/template/ReviewChangesPopover.template
@@ -4,18 +4,21 @@
     </div>
     <div class="user-date"><%=date%></div>
     <div class="user-message limit-height"><%=changetext%></div>
-    <% if (!hint) { %>
     <div class="edit-ct">
-        <% if (scope.appConfig.isReviewOnly) { %>
-        <div class="btn-delete img-commonctrl"></div>
-        <% } else { %>
-        <div class="btn-accept img-commonctrl"></div>
-        <div class="btn-reject img-commonctrl"></div>
+        <% if (goto) { %>
+        <div class="btn-goto img-commonctrl"></div>
+        <% } %>
+        <% if (!hint) { %>
+            <% if (scope.appConfig.isReviewOnly) { %>
+            <div class="btn-delete img-commonctrl"></div>
+            <% } else { %>
+            <div class="btn-accept img-commonctrl"></div>
+            <div class="btn-reject img-commonctrl"></div>
+            <% } %>
         <% } %>
     </div>
-    <% if (lock) { %>
+    <% if (!hint && lock) { %>
     <div class="lock-area" style="cursor: default;"></div>
     <div class="lock-author" style="cursor: default;"><%=lockuser%></div>
     <% } %>
-    <% } %>
 </div>
\ No newline at end of file
diff --git a/apps/common/main/lib/view/ReviewPopover.js b/apps/common/main/lib/view/ReviewPopover.js
index 7d7d0090f..4fcf1fab6 100644
--- a/apps/common/main/lib/view/ReviewPopover.js
+++ b/apps/common/main/lib/view/ReviewPopover.js
@@ -505,6 +505,8 @@ define([
                                 me.fireEvent('reviewchange:reject', [record.get('changedata')]);
                             } else if (btn.hasClass('btn-delete')) {
                                 me.fireEvent('reviewchange:delete', [record.get('changedata')]);
+                            } else if (btn.hasClass('btn-goto')) {
+                                me.fireEvent('reviewchange:goto', [record.get('changedata')]);
                             }
                         }
                     });
diff --git a/apps/common/main/resources/less/comments.less b/apps/common/main/resources/less/comments.less
index 7ca42c406..33a0e6c1c 100644
--- a/apps/common/main/resources/less/comments.less
+++ b/apps/common/main/resources/less/comments.less
@@ -231,7 +231,7 @@
         cursor: pointer;
     }
 
-    .btn-edit,.btn-delete, .btn-resolve, .btn-resolve-check, .btn-accept, .btn-reject {
+    .btn-edit,.btn-delete, .btn-resolve, .btn-resolve-check, .btn-accept, .btn-reject, .btn-goto {
         width: 16px;
         height: 16px;
         margin: 0 0 0 5px;
@@ -262,6 +262,10 @@
         background-position: -42px -234px;
     }
 
+    .btn-goto {
+        background-position: -22px -272px;
+    }
+
     .inner-edit-ct {
         padding: 7px 0px 0px 0px;