X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/efe36f4f1b5df351eeb4d40a54c3900cf9a7079b..dea9da8dbffc4ca9c29628658166b252b8233aac:/src/editor/modules/documentCanvas/canvas/wlxmlManagers.js diff --git a/src/editor/modules/documentCanvas/canvas/wlxmlManagers.js b/src/editor/modules/documentCanvas/canvas/wlxmlManagers.js index d566686..1078218 100644 --- a/src/editor/modules/documentCanvas/canvas/wlxmlManagers.js +++ b/src/editor/modules/documentCanvas/canvas/wlxmlManagers.js @@ -11,12 +11,12 @@ var DocumentElementWrapper = function(documentElement) { this.documentElement = documentElement; this.addWidget = function(widget) { - documentElement.dom().children('.canvas-widgets').append(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 || ''); @@ -33,25 +33,30 @@ var DocumentElementWrapper = function(documentElement) { 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.data('wlxmlNode'); -} +}; var getDisplayStyle = function(tag, klass) { - if(tag === 'metadata') + if(tag === 'metadata') { return 'none'; - if(tag === 'span') + } + if(tag === 'span') { return 'inline'; - if(klass === 'item') + } + if(klass && klass.substr(0, 4) === 'item') { return null; + } return 'block'; -} +}; var GenericManager = function(wlxmlElement) { this.el = wlxmlElement; @@ -69,21 +74,23 @@ $.extend(GenericManager.prototype, { this.el.toggle(toggle); } -}) +}); var managers = { _m: {}, set: function(tag, klass, manager) { - if(!this._m[tag]) + if(!this._m[tag]) { this._m[tag] = {}; + } this._m[tag][klass] = manager; }, get: function(tag,klass) { - if(this._m[tag] && this._m[tag][klass]) + if(this._m[tag] && this._m[tag][klass]) { return this._m[tag][klass]; + } return GenericManager; } -} +}; var FootnoteManager = function(wlxmlElement) { this.el = wlxmlElement; @@ -114,10 +121,11 @@ $.extend(FootnoteManager.prototype, { this.el.setDisplayStyle(toggle ? 'block' : 'inline'); this.el.toggle(toggle); - if(!options.silent) + if(!options.silent) { this.el.trigger('elementToggled', toggle, this.el.documentElement); + } } -}) +}); managers.set('aside', 'footnote', FootnoteManager); @@ -136,6 +144,31 @@ $.extend(ListItemManager.prototype, { }); managers.set('div', 'item', ListItemManager); + +var CommentManager = function(wlxmlElement) { + this.el = wlxmlElement; +}; + +$.extend(CommentManager.prototype, { + setup: function() { + this.el.clearWidgets(); + this.el.addWidget(widgets.labelWidget(this.el.tag(), this.el.klass())); + + 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);