X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/b65f1bbd3863db4164c3b7283e187460ccdf2504..64023eecd0051c57391e28a989aec4660d891a3b:/modules/documentCanvas/canvas/wlxmlManagers.js?ds=sidebyside diff --git a/modules/documentCanvas/canvas/wlxmlManagers.js b/modules/documentCanvas/canvas/wlxmlManagers.js index 2a9bf15..0a48fdc 100644 --- a/modules/documentCanvas/canvas/wlxmlManagers.js +++ b/modules/documentCanvas/canvas/wlxmlManagers.js @@ -6,7 +6,7 @@ define([ 'use strict'; -var DocumentElementAPI = function(documentElement) { +var DocumentElementWrapper = function(documentElement) { this.addWidget = function(widget) { documentElement.dom().find('.canvas-widgets').append(widget); @@ -28,6 +28,10 @@ var DocumentElementAPI = function(documentElement) { this.klass = function() { return documentElement.getWlxmlClass(); }; + + this.toggle = function(toggle) { + documentElement._container().toggle(toggle); + } } var getDisplayStyle = function(tag, klass) { @@ -49,13 +53,65 @@ $.extend(GenericManager.prototype, { this.el.clearWidgets(); this.el.addWidget(widgets.labelWidget(this.el.tag(), this.el.klass())); + }, + 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); + }, + toggle: function(toggle) { + this.hideButton.toggle(toggle); + this.footnoteHandler.toggle(!toggle); + + this.el.setDisplayStyle(toggle ? 'block' : 'inline'); + this.el.toggle(toggle); + } +}) +managers.set('aside', 'footnote', FootnoteManager); + + return { getFor: function(documentElement) { - var wlxmlElement = new DocumentElementAPI(documentElement); - return new GenericManager(wlxmlElement); + var wlxmlElement = new DocumentElementWrapper(documentElement); + return new (managers.get(wlxmlElement.tag(), wlxmlElement.klass()))(wlxmlElement); + } };