diff --git a/app/components/SimpleEditor/ContainerEditor.js b/app/components/SimpleEditor/ContainerEditor.js index ae7c28db654b35a113057e2861f2b628476845bf..b0a904536b4ab80f09331354bc2c62974f60de11 100644 --- a/app/components/SimpleEditor/ContainerEditor.js +++ b/app/components/SimpleEditor/ContainerEditor.js @@ -30,20 +30,11 @@ class ContainerEditor extends SubstanceContainerEditor { }.bind(this)) } + // open for editing if (!this.props.disabled) { el.addClass('sm-enabled') el.setAttribute('contenteditable', true) } - if (this.props.canNotEdit) { - el.addEventListener('keydown', function (e) { - e.preventDefault() - if (e.keyCode === 13 || e.keyCode === 32) { - const documentSession = this.context.documentSession - documentSession.undo() - } - }) - el.addEventListener('contextmenu', event => event.preventDefault()) - } return el } diff --git a/app/components/SimpleEditor/Editor.js b/app/components/SimpleEditor/Editor.js index 146ea851d7678044190450bd6f46c32e22c994f5..2669760318e2b4ea438ec08e371360d6dd3c6f29 100644 --- a/app/components/SimpleEditor/Editor.js +++ b/app/components/SimpleEditor/Editor.js @@ -1,6 +1,5 @@ import { ProseEditor, - // ProseEditorOverlayTools, ScrollPane, SplitPane, TOCProvider @@ -94,9 +93,11 @@ class Editor extends ProseEditor { } _renderEditor ($$) { - var configurator = this.props.configurator + const configurator = this.props.configurator + const editing = this.props.disabled ? 'selection' : 'full' + return $$(ContainerEditor, { - canNotEdit: this.props.disabled, + editing: editing, documentSession: this.documentSession, commands: configurator.getSurfaceCommandNames(), containerId: 'body', @@ -133,7 +134,7 @@ class Editor extends ProseEditor { getChildContext () { var doc = this.doc // TODO -- check whether this is correct - var oldContext = Object.assign({}, super.getChildContext(), { Editor }) + var oldContext = super.getChildContext() // toc provider var tocProvider = new TOCProvider(doc, { diff --git a/app/components/SimpleEditor/Overlay.js b/app/components/SimpleEditor/Overlay.js index e32def516d9eb11cda23b3ab74f04fb4941861a9..c238b54e4df06fa773f16dad64b2ea3e6bc7b71a 100644 --- a/app/components/SimpleEditor/Overlay.js +++ b/app/components/SimpleEditor/Overlay.js @@ -2,39 +2,45 @@ import { ProseEditorOverlayTools } from 'substance' import { each, includes, keys } from 'lodash' class Overlay extends ProseEditorOverlayTools { - render ($$) { + getActiveTools () { const surface = this.getSurface() + if (!surface) return [] - if (surface && surface.props.canNotEdit) { - const commandStates = this.context.commandManager.getCommandStates() - each(keys(commandStates), (key) => { + const activeTools = super.getActiveTools() + + if (!surface.isEditable() && surface.isSelectable()) { + const commandStates = this.getCommandStates() + + each(keys(commandStates), key => { const allowed = ['comment', 'save'] if (!includes(allowed, key)) commandStates[key].disabled = true }) + + console.log('filter it', activeTools) } - let el = $$('div').addClass(this.getClassNames()) - let activeTools = this.getActiveTools() + return activeTools + } - if (activeTools.length > 0) { - let toolsEl = $$('div').addClass('se-active-tools') - activeTools.forEach(tool => { - toolsEl.append( - $$(tool.Class, tool.toolProps).ref(tool.toolProps.name) - ) - }) - el.append(toolsEl) - } - return el + getCommandStates () { + const commandManager = this.context.commandManager + return commandManager.getCommandStates() + } + + getContainerId () { + const editor = this.getEditor() + return editor.props.containerId + } + + getEditor () { + return this.context.controller } getSurface () { + const containerId = this.getContainerId() const surfaceManager = this.context.surfaceManager - return surfaceManager.getSurface('body') - } - getClassNames () { - return 'sc-prose-editor-overlay-tools' + return surfaceManager.getSurface(containerId) } }