From 7725091a7b35acd5352d1c40c9bd3cf3050e1759 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Wed, 22 Feb 2017 15:39:36 +0200
Subject: [PATCH] Activate / deactivate track changes working plus fixes

---
 app/components/SimpleEditor/Editor.js          | 18 +++++++++++++-----
 app/components/SimpleEditor/SimpleEditor.scss  |  4 +---
 .../track_change/TrackChangeComponent.js       |  2 +-
 .../track_change/TrackChangeControlTool.js     | 15 +--------------
 .../track_change/TrackChangePackage.js         |  7 ++++---
 .../track_change/TrackChangesProvider.js       |  6 ++----
 6 files changed, 22 insertions(+), 30 deletions(-)

diff --git a/app/components/SimpleEditor/Editor.js b/app/components/SimpleEditor/Editor.js
index 1f5977b..66c140b 100644
--- a/app/components/SimpleEditor/Editor.js
+++ b/app/components/SimpleEditor/Editor.js
@@ -3,6 +3,7 @@ import { includes, some } from 'lodash'
 import {
   ProseEditor,
   TOCProvider,
+  Toolbar
 } from 'substance'
 
 import Comments from './panes/Comments/CommentBoxList'
@@ -34,10 +35,12 @@ class Editor extends ProseEditor {
     this.extendProps({
       trackChanges: !this.props.trackChanges
     })
-
+    //
     this.props.updateTrackChangesStatus(!this.props.trackChanges)
 
-    this.extendState({ trackChanges: !this.props.trackChanges })
+    this.refs.toolbar.extendProps({
+      trackChanges: this.props.trackChanges
+    })
   }
 
   willUpdateState () {}
@@ -141,8 +144,14 @@ class Editor extends ProseEditor {
 
   // TODO -- use this to insert read-only mode alert
   _renderToolbar ($$) {
-    const toolbar = super._renderToolbar($$)
-    return toolbar
+    let commandStates = this.commandManager.getCommandStates()
+    return $$('div').addClass('se-toolbar-wrapper').append(
+    $$(Toolbar, {
+      commandStates: commandStates,
+      trackChanges: this.props.trackChanges,
+      toolGroups: ['text', 'document', 'annotations', 'default', 'track-change-enable', 'track-change-toggle-view']
+    }).ref('toolbar')
+  )
   }
 
   _renderEditor ($$) {
@@ -163,7 +172,6 @@ class Editor extends ProseEditor {
   getInitialState () {
     return {
       editorReady: false,
-      trackChanges: this.props.trackChanges,
       trackChangesView: true
     }
   }
diff --git a/app/components/SimpleEditor/SimpleEditor.scss b/app/components/SimpleEditor/SimpleEditor.scss
index a5376e9..e841653 100644
--- a/app/components/SimpleEditor/SimpleEditor.scss
+++ b/app/components/SimpleEditor/SimpleEditor.scss
@@ -119,7 +119,6 @@ $active-blue: #4a90e2;
     } // end dropdown
 
     .sm-target-track-change-enable {
-      border-right: 1px solid $border;
 
       button {
         background-color: $inactive-grey;
@@ -174,8 +173,7 @@ $active-blue: #4a90e2;
       border-left: 1px solid $border;
     }
 
-    .sm-target-track-change-enable,
-    .sm-target-track-change-toggle-view {
+    .sm-target-track-change-enable {
       padding: 0 9px;
     }
 
diff --git a/app/components/SimpleEditor/elements/track_change/TrackChangeComponent.js b/app/components/SimpleEditor/elements/track_change/TrackChangeComponent.js
index 30215e3..9fe65a5 100644
--- a/app/components/SimpleEditor/elements/track_change/TrackChangeComponent.js
+++ b/app/components/SimpleEditor/elements/track_change/TrackChangeComponent.js
@@ -96,7 +96,7 @@ class TrackChangeComponent extends AnnotationComponent {
 
     const selection = surface.editorSession.getSelection()
 
-    if (selection.isNull() || selection.isCollapsed()) return false
+    if (selection.isNodeSelection || selection.isNull() || selection.isCollapsed()) return false
 
     const overlaps = selection.overlaps(annotationSelection)
     const contains = selection.contains(annotationSelection)
diff --git a/app/components/SimpleEditor/elements/track_change/TrackChangeControlTool.js b/app/components/SimpleEditor/elements/track_change/TrackChangeControlTool.js
index 63a14be..cb65285 100644
--- a/app/components/SimpleEditor/elements/track_change/TrackChangeControlTool.js
+++ b/app/components/SimpleEditor/elements/track_change/TrackChangeControlTool.js
@@ -2,10 +2,6 @@ import { Tool } from 'substance'
 
 class TrackChangeControlTool extends Tool {
 
-  getClassNames () {
-    return 'sm-target-track-change-enable'
-  }
-
   renderButton ($$) {
     const el = super.renderButton($$)
 
@@ -16,21 +12,12 @@ class TrackChangeControlTool extends Tool {
     return el
   }
 
-  getSurface () {
-    const surfaceManager = this.context.surfaceManager
-    // const containerId = this.context.controller.props.containerId
-    return surfaceManager.getSurface('body')
-  }
-
   isTrackChangesOn () {
-    const surface = this.getSurface()
-    if (!surface) return
-    return surface.props.trackChanges
+    return this.parent._owner.props.trackChanges
   }
 
   canAct () {
     const provider = this.context.trackChangesProvider
-    // console.log('can act?', provider.canAct())
     return provider.canAct()
   }
 }
diff --git a/app/components/SimpleEditor/elements/track_change/TrackChangePackage.js b/app/components/SimpleEditor/elements/track_change/TrackChangePackage.js
index ce01b0c..40b630f 100644
--- a/app/components/SimpleEditor/elements/track_change/TrackChangePackage.js
+++ b/app/components/SimpleEditor/elements/track_change/TrackChangePackage.js
@@ -11,17 +11,18 @@ export default {
   name: 'track-change',
   configure: function (config, { toolGroup }) {
     config.addNode(TrackChange)
-
+    config.addToolGroup('track-change-enable')
+    config.addToolGroup('track-change-toggle-view')
     config.addComponent(TrackChange.type, TrackChangeComponent)
     config.addConverter('html', TrackChangeHTMLConverter)
 
     // TODO -- both tools should go to the same target
     config.addTool('track-change-enable', TrackChangeControlTool, {
-      toolGroup: 'default'
+      toolGroup: 'track-change-enable'
     })
 
     config.addTool('track-change-toggle-view', TrackChangeControlViewTool, {
-      toolGroup: 'default'
+      toolGroup: 'track-change-toggle-view'
     })
 
     config.addCommand('track-change-enable', TrackChangeControlCommand)
diff --git a/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js b/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js
index e890b09..6a762e6 100644
--- a/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js
+++ b/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js
@@ -17,7 +17,6 @@ import {
 
 import {
   annotationHelpers,
-  truncateAnnotation,
   TOCProvider
 } from 'substance'
 
@@ -529,11 +528,10 @@ class TrackChangesProvider extends TOCProvider {
   truncateTrackAnnotation (selection, annotation) {
     const surface = this.getSurface()
     const info = this.getInfo()
+    const doc = this.getDocument()
 
     const transformation = (tx, args) => {
-      args.anno = annotation
-      args.selection = selection
-      truncateAnnotation(tx, args)
+      annotationHelpers.truncateAnnotation(doc, annotation, selection)
     }
 
     surface.transaction(transformation, info)
-- 
GitLab