X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/f938afb8ab4cb091d12e0ef0311eaea14b774798..c524d74994f95747d1ba31c5b297410debd23955:/redakcja/static/js/wiki/xslt.js diff --git a/redakcja/static/js/wiki/xslt.js b/redakcja/static/js/wiki/xslt.js index dda12a16..2bab378d 100644 --- a/redakcja/static/js/wiki/xslt.js +++ b/redakcja/static/js/wiki/xslt.js @@ -33,32 +33,71 @@ function withStylesheets(code_block, onError) } } +var canonThemes = null; -function xml2html(options) { - withStylesheets(function() { - var xml = options.xml.replace(/\/\s+/g, '
'); - var parser = new DOMParser(); - var serializer = new XMLSerializer(); - var doc = parser.parseFromString(xml, 'text/xml'); - var error = $('parsererror', doc); - - if (error.length == 0) { - doc = xml2htmlStylesheet.transformToFragment(doc, document); - console.log(doc.firstChild); - - if(doc.firstChild === null) { - options.error("Błąd w przetwarzaniu XML."); - return; - } +// Wykonuje block z załadowanymi kanonicznymi motywami +function withThemes(code_block, onError) +{ + if (!canonThemes) { + $.blockUI({message: 'Ładowanie motywów...'}); + $.ajax({ + url: '/themes', + dataType: 'text', + success: function(data) { + canonThemes = {}; + themes = data.split('\n'); + for (i in themes) { + canonThemes[themes[i]] = 1; + } + $.unblockUI(); + code_block(); + }, + error: onError + }) + } + else { + code_block(); + } +} - error = $('parsererror', doc); - } - if (error.length > 0 && options.error) { - options.error(error.text()); - } else { - options.success(doc.firstChild); - } + +function xml2html(options) { + withStylesheets(function() { + withThemes(function() { + var xml = options.xml.replace(/\/\s+/g, '
'); + var parser = new DOMParser(); + var serializer = new XMLSerializer(); + var doc = parser.parseFromString(xml, 'text/xml'); + var error = $('parsererror', doc); + + if (error.length == 0) { + doc = xml2htmlStylesheet.transformToFragment(doc, document); + console.log(doc.firstChild); + + if(doc.firstChild === null) { + options.error("Błąd w przetwarzaniu XML."); + return; + } + + error = $('parsererror', doc); + } + + if (error.length > 0 && options.error) { + options.error(error.text()); + } else { + $('.theme-text-list', doc.firstChild).each(function(){ + var themes = $(this).html().split(','); + for (i in themes) { + themes[i] = $.trim(themes[i]); + if (!(themes[i] in canonThemes)) + themes[i] = '' + themes[i] + "" + } + $(this).html(themes.join(', ')); + }); + options.success(doc.firstChild); + } + }, function() { options.error && options.error('Nie udało się załadować motywów'); }); }, function() { options.error && options.error('Nie udało się załadować XSLT'); }); } @@ -218,7 +257,8 @@ HTMLSerializer.prototype.serialize = function(rootElement, stripOuter) switch(token.node.nodeType) { case ELEMENT_NODE: - if(token.node.hasAttribute('x-pass-thru')) { + if(token.node.hasAttribute('x-pass-thru') + || token.node.hasAttribute('data-pass-thru')) { self._pushChildren(token.node); break; }