X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/f499ee9347f539c36f3846fdc41020f2320bae77..f938afb8ab4cb091d12e0ef0311eaea14b774798:/platforma/static/js/wiki/wikiapi.js diff --git a/platforma/static/js/wiki/wikiapi.js b/platforma/static/js/wiki/wikiapi.js deleted file mode 100644 index 9bf5555a..00000000 --- a/platforma/static/js/wiki/wikiapi.js +++ /dev/null @@ -1,283 +0,0 @@ -(function($) { - - $.wikiapi = {}; - - var noop = function() {}; - var noops = {'success': noop, 'failure': noop}; - - /* - * Return absolute reverse path of given named view. - * (at least he have it hard-coded in one place) - * - * TODO: think of a way, not to hard-code it here ;) - * - */ - function reverse() { - var vname = arguments[0]; - - if(vname == "ajax_document_text") { - var path = "/" + arguments[1] + "/text"; - if (arguments[2] !== undefined) - path += "/" + arguments[2]; - return path; - } - - if (vname == "ajax_document_history") { - return "/" + arguments[1] + "/history"; - } - - if (vname == "ajax_document_gallery") { - return "/gallery/" + arguments[1]; - } - - if(vname == "ajax_document_diff") - return "/" + arguments[1] + "/diff"; - - console.log("Couldn't reverse match:", vname); - return "/404.html"; - }; - - /* - * Document Abstraction - */ - function WikiDocument(element_id) { - var meta = $('#'+element_id); - - this.id = meta.attr('data-document-name'); - this.revision = $("*[data-key='revision']", meta).text(); - this.galleryLink = $("*[data-key='gallery']", meta).text(); - this.galleryImages = []; - this.text = null; - - this.has_local_changes = false; - this._lock = -1; - this._context_lock = -1; - this._lock_count = 0; - } - -// WikiDocument.prototype.lock = function() { -// if(this._lock < 0) { -// this._lock = Math.random(); -// this._context_lock = this._lock; -// this._lock_count = 1; -// return this._lock; -// } -// -// // reentrant locks -// if(this._context_lock === this._lock) { -// this._lock_count += 1; -// return this._lock; -// } -// -// throw "Document operation in progress. Try again later." -// }; -// -// WikiDocument.prototype.unlock = function(lockNumber) { -// if(this.locked === lockNumber) { -// this._lock_count -= 1; -// -// if(this._lock_count === 0) { -// this._lock = -1; -// this._context_lock = -1; -// }; -// return; -// } -// throw "Trying to unlock with wrong lockNumber"; -// }; -// -// /* -// * About to leave context of current lock. -// */ -// WikiDocument.prototype.leaveContext = function() { -// var old = this._context_lock; -// this._context_lock = -1; -// return old; -// }; - - WikiDocument.prototype.triggerDocumentChanged = function() { - $(document).trigger('wlapi_document_changed', this); - }; - - /* - * Fetch text of this document. - */ - WikiDocument.prototype.fetch = function(params) { - params = $.extend({}, noops, params); - var self = this; - - $.ajax({ - method: "GET", - url: reverse("ajax_document_text", self.id), - dataType: 'json', - success: function(data) - { - var changed = false; - - if (self.text === null || self.revision !== data.revision) { - self.text = data.text; - self.revision = data.revision; - self.gallery = data.gallery; - changed = true; - self.triggerDocumentChanged(); - } - - self.has_local_changes = false; - params['success'](self, changed); - }, - error: function() { - params['failure'](self, "Nie udało się wczytać treści dokumentu."); - } - }); - }; - - /* - * Fetch history of this document. - * - * from - First revision to fetch (default = 0) - * upto - Last revision to fetch (default = tip) - * - */ - WikiDocument.prototype.fetchHistory = function(params) { - /* this doesn't modify anything, so no locks */ - params = $.extend({}, noops, params); - var self = this; - - $.ajax({ - method: "GET", - url: reverse("ajax_document_history", self.id), - dataType: 'json', - data: {"from": params['from'], "upto": params['upto']}, - success: function(data) { - params['success'](self, data); - }, - error: function() { - params['failure'](self, "Nie udało się wczytać historii dokumentu."); - } - }); - }; - - WikiDocument.prototype.fetchDiff = function(params) { - /* this doesn't modify anything, so no locks */ - var self = this; - - params = $.extend({ - 'from': self.revision, - 'to': self.revision - }, noops, params); - - $.ajax({ - method: "GET", - url: reverse("ajax_document_diff", self.id), - dataType: 'html', - data: {"from": params['from'], "to": params['to']}, - success: function(data) { - params['success'](self, data); - }, - error: function() { - params['failure'](self, "Nie udało się wczytać porównania wersji."); - } - }); - }; - - /* - * Fetch gallery - */ - WikiDocument.prototype.refreshGallery = function(params) { - params = $.extend({}, noops, params); - var self = this; - - $.ajax({ - method: "GET", - url: reverse("ajax_document_gallery", self.galleryLink), - dataType: 'json', - // data: {}, - success: function(data) { - self.galleryImages = data; - params['success'](self, data); - }, - error: function() { - self.galleryImages = []; - params['failure'](self, "

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

"); - - } - }); - }; - - /* - * Set document's text - */ - WikiDocument.prototype.setText = function(text) { - this.text = text; - this.has_local_changes = true; - }; - - /* - * Set document's gallery link - */ - WikiDocument.prototype.setGalleryLink = function(gallery) { - this.galleryLink = gallery; - this.has_local_changes = true; - }; - - /* - * Save text back to the server - */ - WikiDocument.prototype.save = function(params){ - params = $.extend({}, noops, params); - var self = this; - - if (!self.has_local_changes) { - console.log("Abort: no changes."); - return params['success'](self, false, "Nie ma zmian do zapisania."); - }; - - // Serialize form to dictionary - var data = {}; - $.each(params['form'].serializeArray(), function() { - data[this.name] = this.value; - }); - - var metaComment = '\n' - - data.text = metaComment + self.text; - data.comment = data.comment; - - $.ajax({ - url: reverse("ajax_document_text", self.id), - type: "POST", - dataType: "json", - data: data, - success: function(data){ - var changed = false; - if (data.text) { - self.text = data.text; - self.revision = data.revision; - self.gallery = data.gallery; - changed = true; - self.triggerDocumentChanged(); - } - params['success'](self, changed, - ((changed && "Udało się zapisać :)") || "Twoja wersja i serwera jest identyczna") ); - }, - error: function(xhr) { - try { - params['failure'](self, $.parseJSON(xhr.responseText)); - } - catch(e) { - params['failure'](self, {"__message": "

Nie udało się zapisać - błąd serwera.

"}); - }; - } - }); - }; /* end of save() */ - - WikiDocument.prototype.setTag = function(params) { - - }; - - - $.wikiapi.WikiDocument = WikiDocument; - -})(jQuery);