X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/061f517181630ee982c33aee63965b18965fd5aa..e50a9a26fd33d555ffc3a8363f8aa936afbbcb2f:/platforma/static/js/models.js
diff --git a/platforma/static/js/models.js b/platforma/static/js/models.js
index 59a285a1..dae64d8a 100755
--- a/platforma/static/js/models.js
+++ b/platforma/static/js/models.js
@@ -98,7 +98,7 @@ Editor.HTMLModel = Editor.Model.extend({
return false;
},
- asWLML: function(element)
+ asWLML: function(element, inner)
{
console.log("Source", element);
var doc = this.parser.parseFromString(this.serializer.serializeToString(element), 'text/xml');
@@ -111,30 +111,81 @@ Editor.HTMLModel = Editor.Model.extend({
}
console.log("Transformed", doc, " to: ", result.documentElement);
- return this.serializer.serializeToString(result.documentElement);
+ if(inner) {
+ var children = result.documentElement.childNodes;
+ var buf = '';
+
+ for(var i=0; i < children.length; i++)
+ buf += this.serializer.serializeToString(children.item(i));
+
+ return buf;
+ }
+
+ return this.serializer.serializeToString(result.documentElement);
+ },
+
+ innerAsWLML: function(elem)
+ {
+ return this.asWLML(elem, true);
+ },
+
+ updateInnerWithWLML: function($element, innerML)
+ {
+ var e = $element.clone().html('')[0];
+ var s = this.asWLML(e);
+ // hurray for dirty hacks :P
+ s = s.replace(/>%<\//, '>'+innerML+'');
+ return this.updateWithWLML($element, s);
},
updateWithWLML: function($element, text)
{
// filter the string
text = text.replace(/\/\s+/g, '
');
- var chunk = this.parser.parseFromString("
Źle sformatowana zawartoÅÄ:" + e.toString() + "
"; + } - // check if chunk is parsable - if(errors.length > 0) - throw {text: errors.text(), html: errors.html()}; + var parseError = chunk.getElementsByTagName('parsererror'); + console.log("Errors:", parseError); - var result = this.htmlXSL.transformToFragment(chunk, document); + if(parseError.length > 0) + { + console.log("Parse errors.") + return this.serializer.serializeToString(parseError.item(0)); + } - console.log("RESULT", this.serializer.serializeToString(result)); + console.log("Transforming to HTML"); + var result = this.htmlXSL.transformToFragment(chunk, $element[0].ownerDocument).firstChild; - if(!result) - throw "WLML->HTML transformation failed."; - - $element.replaceWith(result); - this.set('state', 'dirty'); + if(!result) { + return "BÅÄ d aplikacji - nie udaÅo siÄ wygenerowaÄ nowego widoku HTML."; + } + + var errors = result.getElementsByTagName('error'); + if(errors.length > 0) + { + var errorMessage = 'WystÄ piÅy bÅÄdy: