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/" + arguments[2] + "/" + arguments[3]
+ return "/" + arguments[1] + "/diff";
console.log("Couldn't reverse match:", vname);
return "/404.html";
this.id = meta.attr('data-document-name');
this.revision = $("*[data-key='revision']", meta).text();
- this.gallery = $("*[data-key='gallery']", meta).text();
-
+ this.galleryLink = $("*[data-key='gallery']", meta).text();
+ this.galleryImages = [];
this.text = null;
this.has_local_changes = false;
// this._context_lock = -1;
// return old;
// };
+
+ WikiDocument.prototype.triggerDocumentChanged = function() {
+ $(document).trigger('wlapi_document_changed', this);
+ };
/*
* Fetch text of this document.
self.revision = data.revision;
self.gallery = data.gallery;
changed = true;
+ self.triggerDocumentChanged();
}
self.has_local_changes = false;
params['success'](self, data);
},
error: function() {
- params['failure'](self, "Nie udało się wczytać treści dokumentu.");
+ 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, "<p>Nie udało się wczytać gallerii pod nazwą: '"
+ + self.galleryLink + "'.</p>");
+
+ }
+ });
+ };
+
/*
* Set document's text
*/
- WikiDocument.prototype.setText = function(text) {
+ WikiDocument.prototype.setText = function(text) {
this.text = text;
- this.has_local_changes = true;
+ this.has_local_changes = true;
};
/*
* Set document's gallery link
*/
- WikiDocument.prototype.setGallery = function(gallery) {
- this.gallery = gallery;
+ WikiDocument.prototype.setGalleryLink = function(gallery) {
+ this.galleryLink = gallery;
this.has_local_changes = true;
};
/*
* Save text back to the server
*/
- WikiDocument.prototype.save = function(comment, success, failure){
+ WikiDocument.prototype.save = function(params){
+ params = $.extend({}, noops, params);
var self = this;
-
+
if (!self.has_local_changes) {
- return success(self, "Nie ma zmian do zapisania.");
- }
+ 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;
+ });
- /* you can't set text while some is fetching it (or saving) */
var metaComment = '<!--';
- metaComment += '\n\tgallery:' + self.gallery;
- metaComment += '\n-->'
+ metaComment += '\n\tgallery:' + self.galleryLink;
+ metaComment += '\n-->\n'
- var data = {
- name: self.id,
- text: self.text,
- parent_revision: self.revision,
- comment: comment,
- };
+ data.text = metaComment + self.text;
+ data.comment = data.comment;
$.ajax({
url: reverse("ajax_document_text", self.id),
self.revision = data.revision;
self.gallery = data.gallery;
changed = true;
+ self.triggerDocumentChanged();
}
- success(self, changed);
+ params['success'](self, changed,
+ ((changed && "Udało się zapisać :)") || "Twoja wersja i serwera jest identyczna") );
},
- error: function(){
- failure(self, "Nie udało się zapisać.");
+ error: function(xhr) {
+ try {
+ params['failure'](self, $.parseJSON(xhr.responseText));
+ }
+ catch(e) {
+ params['failure'](self, {"__message": "<p>Nie udało się zapisać - błąd serwera.</p>"});
+ };
}
});
}; /* end of save() */
+ WikiDocument.prototype.setTag = function(params) {
+
+ };
+
+
$.wikiapi.WikiDocument = WikiDocument;
})(jQuery);