X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/2a473a181f02b0183a6c333619999beaf73c87c0..e002a72cd05229f4747aec88ca535c683e1da288:/modules/documentCanvas/canvas/documentElement.js?ds=inline diff --git a/modules/documentCanvas/canvas/documentElement.js b/modules/documentCanvas/canvas/documentElement.js index 5457b83..6fea275 100644 --- a/modules/documentCanvas/canvas/documentElement.js +++ b/modules/documentCanvas/canvas/documentElement.js @@ -69,31 +69,65 @@ var DocumentTextElement = function(htmlElement) { DocumentNodeElement.prototype = new DocumentElement(); DocumentTextElement.prototype = new DocumentElement(); +var manipulate = function(e, params, action) { + var dom; + if(params instanceof DocumentElement) { + dom = params.dom() + } else { + dom = DocumentNodeElement.createDOM(params); + } + e.$element[action](dom); + return documentElementFromHTMLElement(dom); +}; + $.extend(DocumentNodeElement.prototype, { append: function(params) { - var to_append = DocumentNodeElement.createDOM(params.tag, params.klass); - this.$element.append(to_append); - return documentElementFromHTMLElement(to_append); + manipulate(this, params, 'append'); }, before: function(params) { - var to_append = DocumentNodeElement.createDOM(params.tag, params.klass); - this.$element.before(to_append); - return documentElementFromHTMLElement(to_append); + manipulate(this, params, 'before'); + }, after: function(params) { - var to_append = DocumentNodeElement.createDOM(params.tag, params.klass); - this.$element.after(to_append); - return documentElementFromHTMLElement(to_append); + manipulate(this, params, 'after'); } }); -DocumentNodeElement.createDOM = function(tag, klass) { - var dom = $('<' + tag + '>'); - if(klass) - dom.attr('class', klass); +DocumentNodeElement.createDOM = function(params) { + var dom; + if(params.text) { + dom = $(document.createTextNode(params.text)); + } else { + dom = $('<' + params.tag + '>'); + if(params.klass) + dom.attr('class', params.klass); + } return dom; }; +$.extend(DocumentTextElement.prototype, { + setText: function(text) { + this.$element[0].data = text; + }, + getText: function() { + return this.$element.text(); + }, + after: function(params) { + if(params.text || params instanceof DocumentTextElement) + return false; + var dom; + if(params instanceof DocumentNodeElement) { + dom = params.dom(); + } else { + dom = DocumentNodeElement.createDOM(params); + } + this.$element.wrap('
'); + this.$element.parent().after(dom[0]); + this.$element.unwrap(); + return documentElementFromHTMLElement(dom[0]); + } +}); + var documentElementFromHTMLElement = function(htmlElement) { if(htmlElement.nodeType === Node.ELEMENT_NODE) return new DocumentNodeElement(htmlElement);