X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/56ab6eadd6887a63a83c768abf3c02393d1f4a28..9201c5810622e27a19de7e331046108d7110c46b:/modules/visualEditor.transformations.js?ds=inline diff --git a/modules/visualEditor.transformations.js b/modules/visualEditor.transformations.js index 2d2f630..57049e7 100644 --- a/modules/visualEditor.transformations.js +++ b/modules/visualEditor.transformations.js @@ -8,7 +8,42 @@ if(typeof module !== 'undefined' && module.exports) { transformations.fromXML = { getHTMLTree: function(xml) { - return xml; + var inner = $(xml).clone(); + var toret = $('
'); + toret.append(inner); + + var toBlock = ['div', 'document', 'section', 'header']; + var toInline = ['aside', 'span']; + + toBlock.forEach(function(tagName) { + tagName = tagName.toLowerCase(); + console.log('running ' + tagName); + toret.find(tagName).replaceWith(function() { + var currentTag = $(this); + if(currentTag.attr('wlxml-tag')) + return; + var toret = $('
').attr('wlxml-tag', tagName); + if(currentTag.attr('class')) + toret.attr('wlxml-class', currentTag.attr('class').replace(/\./g, '-')); + toret.append(currentTag.contents()); + return toret; + }); + }); + + toInline.forEach(function(tagName) { + tagName = tagName.toLowerCase(); + toret.find(tagName).replaceWith(function() { + var currentTag = $(this); + if(currentTag.attr('wlxml-tag')) + return; + var toret = $('').attr('wlxml-tag', tagName); + if(currentTag.attr('class')) + toret.attr('wlxml-class', currentTag.attr('class').replace(/\./g, '-')); + toret.append(currentTag.contents()); + return toret; + }); + }); + return toret.children(); }, getMetaData: function(xml) { var toret = {}; @@ -28,7 +63,31 @@ if(typeof module !== 'undefined' && module.exports) { transformations.toXML = { getXML: function(documentDescription) { - return documentDescription.HTMLTree; + + var inner = $(documentDescription.HTMLTree); + var toret = $('
'); + toret.append(inner); + + toret.find('div, span').replaceWith(function() { + var div = $(this); + var tagName = div.attr('wlxml-tag'); + var toret = $('<'+tagName+'>'); + if(div.attr('wlxml-class')) + toret.attr('class', div.attr('wlxml-class').replace(/-/g, '.')) + toret.append(div.contents()); + return toret; + }); + + var meta = $('\n'); + _.each(_.keys(documentDescription.metadata), function(key) { + meta.append('\n\t' + documentDescription.metadata[key] + ''); + }); + meta.append('\n'); + + toret.find('metadata').replaceWith(meta); + + return toret.html(); + } }