X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/58d4aaf62aad7d19d2fb26176afd083c8f75f82a..9f5909ffb6a680a86c2da4a260df92df8e88c3b3:/redakcja/static/js/wiki/wikiapi.js diff --git a/redakcja/static/js/wiki/wikiapi.js b/redakcja/static/js/wiki/wikiapi.js index 97d18862..4fe2707d 100644 --- a/redakcja/static/js/wiki/wikiapi.js +++ b/redakcja/static/js/wiki/wikiapi.js @@ -26,6 +26,11 @@ return base_path + path; } + if (vname == "ajax_document_revert") { + return base_path + "/" + arguments[1] + "/revert"; + } + + if (vname == "ajax_document_history") { return base_path + "/" + arguments[1] + "/history"; @@ -283,6 +288,45 @@ }); }; /* end of save() */ + WikiDocument.prototype.revertToVersion = function(params) { + var self = this; + params = $.extend({}, noops, params); + + if (params.revision >= this.revision) { + params.failure(self, 'Proszę wybrać rewizję starszą niż aktualna.'); + return; + } + + // Serialize form to dictionary + var data = {}; + $.each(params['form'].serializeArray(), function() { + data[this.name] = this.value; + }); + + $.ajax({ + url: reverse("ajax_document_revert", self.id), + type: "POST", + dataType: "json", + data: data, + success: function(data) { + if (data.text) { + self.text = data.text; + self.revision = data.revision; + self.gallery = data.gallery; + self.triggerDocumentChanged(); + + params.success(self, "Udało się przywrócić wersję :)"); + } + else { + params.failure(self, "Przywracana wersja identyczna z aktualną. Anulowano przywracanie."); + } + }, + error: function(xhr) { + params.failure(self, "Nie udało się przywrócić wersji - błąd serwera."); + } + }); + }; + WikiDocument.prototype.publish = function(params) { params = $.extend({}, noops, params); var self = this; @@ -349,5 +393,22 @@ }); }; + WikiDocument.prototype.getLength = function(params) { + var xml = this.text.replace(/\/(\s+)/g, '
$1'); + var parser = new DOMParser(); + var doc = parser.parseFromString(xml, 'text/xml'); + var error = $('parsererror', doc); + + if (error.length > 0) { + throw "Not an XML document."; + } + $.xmlns["rdf"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"; + $('rdf|RDF, motyw, pa, pe, pr, pt', doc).remove(); + var text = $(doc).text(); + text = $.trim(text.replace(/\s{2,}/g, ' ')); + return text.length; + } + + $.wikiapi.WikiDocument = WikiDocument; })(jQuery);