fairly simple changes
authorAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Fri, 25 Apr 2014 14:28:43 +0000 (16:28 +0200)
committerAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Mon, 5 May 2014 11:09:14 +0000 (13:09 +0200)
12 files changed:
src/editor/modules/documentCanvas/canvas/documentElement.less [new file with mode: 0644]
src/editor/modules/documentCanvas/canvas/genericElement.less [new file with mode: 0644]
src/editor/modules/documentCanvas/canvas/widgets.js [deleted file]
src/editor/modules/documentCanvas/canvas/widgets.less [deleted file]
src/editor/modules/documentCanvas/canvas/wlxmlManagers.js [deleted file]
src/editor/modules/documentCanvas/documentCanvas.js
src/editor/modules/documentCanvas/documentCanvas.less
src/editor/plugins/core/canvasElements.less [new file with mode: 0644]
src/editor/plugins/core/core.js
src/editor/plugins/core/core.less [new file with mode: 0644]
src/editor/plugins/plugins.less [new file with mode: 0644]
src/editor/styles/main.less

diff --git a/src/editor/modules/documentCanvas/canvas/documentElement.less b/src/editor/modules/documentCanvas/canvas/documentElement.less
new file mode 100644 (file)
index 0000000..43a32f5
--- /dev/null
@@ -0,0 +1,12 @@
+[document-node-element] {
+    .canvas-widgets {
+        display: inline;
+        text-indent: 0;
+    }
+
+    .canvas-widget {
+        display: none;
+    }
+
+
+}
\ No newline at end of file
diff --git a/src/editor/modules/documentCanvas/canvas/genericElement.less b/src/editor/modules/documentCanvas/canvas/genericElement.less
new file mode 100644 (file)
index 0000000..c935a79
--- /dev/null
@@ -0,0 +1,16 @@
+.canvas-widget-label {
+    position: absolute;
+    display: none;
+    top: -20px;
+    left:0;
+    background-color: red;
+    color: white;
+    font-size:12px;
+    font-weight: bold;
+    padding: 1px 3px;
+    //width:300px;
+    opacity: 0.65;
+    font-family: monospace;
+    z-index:9999;
+    white-space: nowrap;
+}
\ No newline at end of file
diff --git a/src/editor/modules/documentCanvas/canvas/widgets.js b/src/editor/modules/documentCanvas/canvas/widgets.js
deleted file mode 100644 (file)
index aecb199..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-define([
-'libs/jquery',
-'utils/wlxml'
-], function($, wlxmlUtils) {
-    
-'use strict';
-
-return {
-    labelWidget: function(tag, klass) {
-        return $('<span>')
-            .addClass('canvas-widget canvas-widget-label')
-            .text(wlxmlUtils.getTagLabel(tag) + (klass ? ' / ' + wlxmlUtils.getClassLabel(klass) : ''));
-    },
-
-    footnoteHandler: function(clickHandler) {
-        var mydom = $('<span>')
-            .addClass('canvas-widget canvas-widget-footnote-handle')
-            .css('display', 'inline')
-            .show();
-
-        mydom.click(function(e) {
-            e.stopPropagation();
-            clickHandler();
-        });
-
-        return mydom;
-    },
-
-    hideButton: function(clickHandler) {
-        var mydom = $('<span>x</span>')
-            .addClass('canvas-widget canvas-widget-hide-button');
-        mydom.click(function(e) {
-            e.stopPropagation();
-            clickHandler();
-        });
-        return mydom;
-    },
-
-    commentAdnotation: function(node) {
-        var widget = {
-            DOM: $('<div>').addClass('canvas-widget canvas-widget-comment-adnotation'),
-            update: function(node) {
-                var parts = [],
-                    metadata = node.getMetadata(),
-                    dt;
-                metadata.forEach(function(row) {
-                    parts.push(row.getValue());
-                }, 'creator');
-                metadata.some(function(row) {
-                    dt = row.getValue();
-                    return true; // break
-                }, 'date');
-                if(dt) {
-                    parts.push(dt);
-                }
-                this.DOM.text(parts.join(', '));
-            }
-        };
-        widget.update(node);
-        return widget;
-    }
-
-};
-
-});
\ No newline at end of file
diff --git a/src/editor/modules/documentCanvas/canvas/widgets.less b/src/editor/modules/documentCanvas/canvas/widgets.less
deleted file mode 100644 (file)
index 442af99..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-[document-node-element] {
-    .canvas-widgets {
-        display: inline;
-        text-indent: 0;
-    }
-
-    .canvas-widget {
-        display: none;
-    }
-
-    .canvas-widget-label {
-        position: absolute;
-        display: none;
-        top: -20px;
-        left:0;
-        background-color: red;
-        color: white;
-        font-size:12px;
-        font-weight: bold;
-        padding: 1px 3px;
-        //width:300px;
-        opacity: 0.65;
-        font-family: monospace;
-        z-index:9999;
-        white-space: nowrap;
-    }
-
-
-
-    .canvas-widget-footnote-handle {
-        display: inline;
-        outline: 0px solid transparent;
-        cursor: pointer;
-        counter-increment: footnote;
-        vertical-align: super;
-        color: blue;
-        font-size: .8em;
-
-        &::before, {
-            content: "[" counter(footnote) "]";
-        }
-    }
-
-    .canvas-widget-hide-button {
-        @line_height: 12px;
-        @padding: 2px;
-        @temporary_footnote_hack: 10px;
-
-        position: absolute;
-        top: -(@line_height + 2 * @padding) + @temporary_footnote_hack;
-        right: 0;
-        line-height: @line_height;
-        padding: @padding;
-        font-weight: bold;
-        color: white;
-        background-image: linear-gradient(to bottom,#ee5f5b,#bd362f);
-        border-radius: 1px;
-        cursor: pointer;
-    }
-
-    .canvas-widget-comment-adnotation {
-        position:absolute;
-        top: 10px;
-        right:10px;
-        font-size: 10px;
-        color: lighten(@black, 10%);
-        z-index:1000;
-    }
-}
\ No newline at end of file
diff --git a/src/editor/modules/documentCanvas/canvas/wlxmlManagers.js b/src/editor/modules/documentCanvas/canvas/wlxmlManagers.js
deleted file mode 100644 (file)
index 6b8b5ff..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-define([
-'libs/jquery',
-'modules/documentCanvas/canvas/widgets'
-], function($, widgets) {
-    
-'use strict';
-
-
-var DocumentElementWrapper = function(documentElement) {
-    
-    this.documentElement = documentElement;
-
-    this.addWidget = function(widget) {
-        documentElement.dom().children('.canvas-widgets').append(widget.DOM ? widget.DOM : widget);
-    };
-
-    this.clearWidgets = function() {
-        documentElement.dom().children('.canvas-widgets').empty();
-    };
-
-    this.setDisplayStyle = function(displayStyle) {
-        documentElement.dom().css('display', displayStyle || '');
-        documentElement._container().css('display', displayStyle || '');
-    };
-
-    this.tag = function() {
-        return documentElement.getWlxmlTag();
-    };
-
-    this.klass = function() {
-        return documentElement.getWlxmlClass();
-    };
-
-    this.toggle = function(toggle) {
-        documentElement._container().toggle(toggle);
-    };
-
-    var eventBus = documentElement.canvas ? documentElement.canvas.eventBus :
-        {trigger: function() {}};
-    this.trigger = function() {
-        eventBus.trigger.apply(eventBus, arguments);
-    };
-
-    this.node = documentElement.wlxmlNode;
-};
-
-var getDisplayStyle = function(tag, klass) {
-    if(tag === 'metadata') {
-        return 'none';
-    }
-    if(tag === 'span') {
-        return 'inline';
-    }
-    if(klass && klass.substr(0, 4) === 'item') {
-        return null;
-    }
-    if(klass === 'gap') {
-        return 'inline';
-    }
-    return 'block';
-};
-
-var GenericManager = function(wlxmlElement) {
-    this.el = wlxmlElement;
-};
-
-$.extend(GenericManager.prototype, {
-    setup: function() {
-        this.el.setDisplayStyle(getDisplayStyle(this.el.tag(), this.el.klass()));
-
-        this.el.clearWidgets();
-    },
-    toggle: function(toggle) {
-        this.el.toggle(toggle);
-    }
-
-});
-
-var managers = {
-    _m: {},
-    set: function(tag, klass, manager) {
-        if(!this._m[tag]) {
-            this._m[tag] = {};
-        }
-        this._m[tag][klass] = manager;
-    },
-    get: function(tag,klass) {
-        if(this._m[tag] && this._m[tag][klass]) {
-            return this._m[tag][klass];
-        }
-        return GenericManager;
-    }
-};
-
-var FootnoteManager = function(wlxmlElement) {
-    this.el = wlxmlElement;
-};
-$.extend(FootnoteManager.prototype, {
-    setup: function() {
-        this.el.clearWidgets();
-
-        var clickHandler = function() {
-            this.toggle(true);
-        }.bind(this);
-        this.footnoteHandler = widgets.footnoteHandler(clickHandler);
-        this.el.addWidget(this.footnoteHandler);
-
-        var closeHandler = function() {
-            this.toggle(false);
-
-        }.bind(this);
-        this.hideButton = widgets.hideButton(closeHandler);
-        this.el.addWidget(this.hideButton);
-
-        this.toggle(false, {silent: true});
-    },
-    toggle: function(toggle, options) {
-        options = options || {};
-        this.hideButton.toggle(toggle);
-        this.footnoteHandler.toggle(!toggle);
-        
-        this.el.setDisplayStyle(toggle ? 'block' : 'inline');
-        this.el.toggle(toggle);
-        if(!options.silent) {
-            this.el.trigger('elementToggled', toggle, this.el.documentElement);
-        }
-    }
-});
-managers.set('aside', 'footnote', FootnoteManager);
-
-
-var ListItemManager = function(wlxmlElement) {
-    this.el = wlxmlElement;
-};
-$.extend(ListItemManager.prototype, {
-    setup: function() {
-        this.el.clearWidgets();
-    },
-    toggleBullet: function(toggle) {
-        this.el.documentElement._container().css({display : toggle ? 'list-item' : 'block'});
-    }
-});
-managers.set('div', 'item', ListItemManager);
-
-
-var CommentManager = function(wlxmlElement) {
-    this.el = wlxmlElement;
-};
-
-$.extend(CommentManager.prototype, {
-    setup: function() {
-        this.el.clearWidgets();
-
-        this.widget = widgets.commentAdnotation(this.el.node);
-        this.el.addWidget(this.widget);
-        this.widget.DOM.show();
-    },
-    updateMetadata: function() {
-        // var parts = [];
-        // this.el.node.getMetadata().forEach(function(row) {
-        //     parts.push(row.getValue());
-        // }, 'creator');
-        // this.widget.text(parts.join(', '));
-        this.widget.update(this.el.node);
-    }
-});
-managers.set('aside', 'comment', CommentManager);
-
-return {
-    getFor: function(documentElement) {
-        var wlxmlElement = new DocumentElementWrapper(documentElement);
-        return new (managers.get(wlxmlElement.tag(), wlxmlElement.klass()))(wlxmlElement);
-
-    }
-};
-
-});
\ No newline at end of file
index 9a88b75..03b0cf7 100644 (file)
@@ -14,7 +14,13 @@ var logger = logging.getLogger('documentCanvas');
 
 return function(sandbox) {
 
-    var canvas = canvas3.fromXMLDocument(null);
+    var canvasElements;
+
+    sandbox.getPlugins(function(plugin) {
+        canvasElements = canvasElements.concat(plugin.canvasElements || []);
+    });
+
+    var canvas = canvas3.fromXMLDocument(null, canvasElements);
     var canvasWrapper = $(template);
     var shownAlready = false;
     var scrollbarPosition = 0,
index 9421482..bd39b6a 100644 (file)
@@ -1,5 +1,6 @@
 @import 'nodes.less';
-@import 'canvas/widgets.less';
+@import 'canvas/documentElement.less';
+@import 'canvas/genericElement.less';
 
 #rng-module-documentCanvas {
    height: 100%;
diff --git a/src/editor/plugins/core/canvasElements.less b/src/editor/plugins/core/canvasElements.less
new file mode 100644 (file)
index 0000000..6003476
--- /dev/null
@@ -0,0 +1,39 @@
+.canvas-widget-footnote-handle {
+    display: inline;
+    outline: 0px solid transparent;
+    cursor: pointer;
+    counter-increment: footnote;
+    vertical-align: super;
+    color: blue;
+    font-size: .8em;
+
+    &::before, {
+        content: "[" counter(footnote) "]";
+    }
+}
+
+.canvas-widget-hide-button {
+    @line_height: 12px;
+    @padding: 2px;
+    @temporary_footnote_hack: 10px;
+
+    position: absolute;
+    top: -(@line_height + 2 * @padding) + @temporary_footnote_hack;
+    right: 0;
+    line-height: @line_height;
+    padding: @padding;
+    font-weight: bold;
+    color: white;
+    background-image: linear-gradient(to bottom,#ee5f5b,#bd362f);
+    border-radius: 1px;
+    cursor: pointer;
+}
+
+.canvas-widget-comment-adnotation {
+    position:absolute;
+    top: 10px;
+    right:10px;
+    font-size: 10px;
+    color: lighten(@black, 10%);
+    z-index:1000;
+}
\ No newline at end of file
index 38675fb..150464e 100644 (file)
@@ -9,7 +9,9 @@ var _ = require('libs/underscore'),
     switchTo = require('plugins/core/switch'),
     lists = require('plugins/core/lists'),
     plugin = {name: 'core', actions: [], canvas: {}, documentExtension: {textNode: {}}},
-    Dialog = require('views/dialog/dialog');
+    Dialog = require('views/dialog/dialog'),
+    canvasElements = require('plugins/core/canvasElements');
+
 
 
 plugin.documentExtension.textNode.transformations = {
@@ -374,6 +376,8 @@ plugin.config = function(config) {
     templates.actions[0].params.template.options = config.templates;
 };
 
+plugin.canvasElements = canvasElements;
+
 return plugin;
 
 });
\ No newline at end of file
diff --git a/src/editor/plugins/core/core.less b/src/editor/plugins/core/core.less
new file mode 100644 (file)
index 0000000..0754e03
--- /dev/null
@@ -0,0 +1 @@
+@import 'canvasElements.less';
\ No newline at end of file
diff --git a/src/editor/plugins/plugins.less b/src/editor/plugins/plugins.less
new file mode 100644 (file)
index 0000000..a6ba84b
--- /dev/null
@@ -0,0 +1 @@
+@import 'core/core.less';
\ No newline at end of file
index 411a2aa..f9ae798 100644 (file)
@@ -2,6 +2,7 @@
 @import 'mixins.less';
 @import 'common.less';
 
+@import '../plugins/plugins.less';
 @import '../views/openSelect/openSelect.less';
 @import '../views/dialog/dialog.less';
 @import '../modules/rng/rng.less';