X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/9249e6ddc35e7cc7077fa5035fbc27397fbb70a9..915a84299a90d4c922ca4a554ded9fbc2651ccf4:/redakcja/static/js/wiki/wikiapi.js?ds=sidebyside diff --git a/redakcja/static/js/wiki/wikiapi.js b/redakcja/static/js/wiki/wikiapi.js index cbed73b8..4a4da5a7 100644 --- a/redakcja/static/js/wiki/wikiapi.js +++ b/redakcja/static/js/wiki/wikiapi.js @@ -15,7 +15,7 @@ */ function reverse() { var vname = arguments[0]; - var base_path = "/documents"; + var base_path = "/editor"; if (vname == "ajax_document_text") { var path = "/text/" + arguments[1] + '/'; @@ -47,15 +47,9 @@ if (vname == "ajax_document_rev") return base_path + "/rev/" + arguments[1] + '/'; - if (vname == "ajax_document_addtag") - return base_path + "/tag/" + arguments[1] + '/'; - if (vname == "ajax_document_pubmark") return base_path + "/pubmark/" + arguments[1] + '/'; - if (vname == "ajax_publish") - return base_path + "/publish/" + arguments[1] + '/'; - console.log("Couldn't reverse match:", vname); return "/404.html"; }; @@ -65,21 +59,24 @@ */ function WikiDocument(element_id) { var meta = $('#' + element_id); - this.id = meta.attr('data-book') + '/' + meta.attr('data-chunk'); + this.id = meta.attr('data-chunk-id'); this.revision = $("*[data-key='revision']", meta).text(); this.readonly = !!$("*[data-key='readonly']", meta).text(); this.galleryLink = $("*[data-key='gallery']", meta).text(); + this.galleryStart = parseInt($("*[data-key='gallery-start']", meta).text()); var diff = $("*[data-key='diff']", meta).text(); - diff = diff.split(','); - if (diff.length == 2 && diff[0] < diff[1]) - this.diff = diff; - else if (diff.length == 1) { - diff = parseInt(diff); - if (diff != NaN) - this.diff = [diff - 1, diff]; + if (diff) { + diff = diff.split(','); + if (diff.length == 2 && diff[0] < diff[1]) + this.diff = diff; + else if (diff.length == 1) { + diff = parseInt(diff); + if (diff != NaN) + this.diff = [diff - 1, diff]; + } } this.galleryImages = []; @@ -207,9 +204,18 @@ self.galleryImages = data; params['success'](self, data); }, - error: function() { + error: function(xhr) { + switch (xhr.status) { + case 403: + var msg = 'Galerie dostępne tylko dla zalogowanych użytkowników.'; + break; + case 404: + var msg = "Nie znaleziono galerii o nazwie: '" + self.galleryLink + "'."; + default: + var msg = "Nie udało się wczytać galerii o nazwie: '" + self.galleryLink + "'."; + } self.galleryImages = []; - params['failure'](self, "

Nie udało się wczytać galerii pod nazwą: '" + self.galleryLink + "'.

"); + params['failure'](self, "

" + msg + "

"); } }); }; @@ -337,72 +343,6 @@ }); }; - WikiDocument.prototype.publish = function(params) { - params = $.extend({}, noops, params); - var self = this; - $.ajax({ - url: reverse("ajax_publish", self.id), - type: "POST", - dataType: "json", - success: function(data) { - params.success(self, data); - }, - error: function(xhr) { - if (xhr.status == 403 || xhr.status == 401) { - params.failure(self, "Nie masz uprawnień lub nie jesteś zalogowany."); - } - else { - try { - params.failure(self, xhr.responseText); - } - catch (e) { - params.failure(self, "Nie udało się - błąd serwera."); - }; - }; - - } - }); - }; - WikiDocument.prototype.setTag = function(params) { - params = $.extend({}, noops, params); - var self = this; - var data = { - "addtag-id": self.id, - }; - - /* unpack form */ - $.each(params.form.serializeArray(), function() { - data[this.name] = this.value; - }); - - $.ajax({ - url: reverse("ajax_document_addtag", self.id), - type: "POST", - dataType: "json", - data: data, - success: function(data) { - params.success(self, data.message); - }, - error: function(xhr) { - if (xhr.status == 403 || xhr.status == 401) { - params.failure(self, { - "__all__": ["Nie masz uprawnień lub nie jesteś zalogowany."] - }); - } - else { - try { - params.failure(self, $.parseJSON(xhr.responseText)); - } - catch (e) { - params.failure(self, { - "__all__": ["Nie udało się - błąd serwera."] - }); - }; - }; - } - }); - }; - WikiDocument.prototype.pubmark = function(params) { params = $.extend({}, noops, params); var self = this; @@ -443,5 +383,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);