X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/800bc0a9753b761c8b3f7b2eb9320226332c8399..4437d85206a7deb768c75a4fd1cb1b474e87efe3:/redakcja/static/js/wiki/wikiapi.js?ds=inline diff --git a/redakcja/static/js/wiki/wikiapi.js b/redakcja/static/js/wiki/wikiapi.js index 4b36ae9e..2f79b09b 100644 --- a/redakcja/static/js/wiki/wikiapi.js +++ b/redakcja/static/js/wiki/wikiapi.js @@ -18,32 +18,40 @@ var base_path = "/documents"; if (vname == "ajax_document_text") { - var path = "/" + arguments[1] + "/text"; + var path = "/text/" + arguments[1] + '/'; if (arguments[2] !== undefined) - path += "/" + arguments[2]; + path += arguments[2] + '/'; return base_path + path; } + if (vname == "ajax_document_revert") { + return base_path + "/revert/" + arguments[1] + '/'; + } + + if (vname == "ajax_document_history") { - return base_path + "/" + arguments[1] + "/history"; + return base_path + "/history/" + arguments[1] + '/'; } if (vname == "ajax_document_gallery") { - return base_path + "/" + arguments[1] + "/gallery"; + return base_path + "/gallery/" + arguments[1] + '/'; } if (vname == "ajax_document_diff") - return base_path + "/" + arguments[1] + "/diff"; + return base_path + "/diff/" + arguments[1] + '/'; + + if (vname == "ajax_document_rev") + return base_path + "/rev/" + arguments[1] + '/'; if (vname == "ajax_document_addtag") - return base_path + "/" + arguments[1] + "/tags"; + return base_path + "/tag/" + arguments[1] + '/'; if (vname == "ajax_publish") - return base_path + "/" + arguments[1] + "/publish"; + return base_path + "/publish/" + arguments[1] + '/'; console.log("Couldn't reverse match:", vname); return "/404.html"; @@ -54,7 +62,7 @@ */ function WikiDocument(element_id) { var meta = $('#' + element_id); - this.id = meta.attr('data-document-name'); + this.id = meta.attr('data-book') + '/' + meta.attr('data-chunk'); this.revision = $("*[data-key='revision']", meta).text(); this.readonly = !!$("*[data-key='readonly']", meta).text(); @@ -152,6 +160,24 @@ }); }; + WikiDocument.prototype.checkRevision = function(params) { + /* this doesn't modify anything, so no locks */ + var self = this; + $.ajax({ + method: "GET", + url: reverse("ajax_document_rev", self.id), + dataType: 'text', + success: function(data) { + if (data == '') { + if (params.error) + params.error(); + } + else if (data != self.revision) + params.outdated(); + } + }); + }; + /* * Fetch gallery */ @@ -208,11 +234,7 @@ data[this.name] = this.value; }); - var metaComment = '\n' - - data['textsave-text'] = metaComment + self.text; + data['textsave-text'] = self.text; $.ajax({ url: reverse("ajax_document_text", self.id), @@ -262,6 +284,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;