X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/92e49288fda5de1a079578f10512409a796ae24e..bea8d1caad32069ceb8c68feea989fc551b7917d:/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 ad31af3f..97d18862 100644
--- a/redakcja/static/js/wiki/wikiapi.js
+++ b/redakcja/static/js/wiki/wikiapi.js
@@ -39,6 +39,9 @@
 		if (vname == "ajax_document_diff")
 			return base_path + "/" + arguments[1] + "/diff";
 
+        if (vname == "ajax_document_rev")
+            return base_path + "/" + arguments[1] + "/rev";
+
 		if (vname == "ajax_document_addtag")
 			return base_path + "/" + arguments[1] + "/tags";
 
@@ -152,6 +155,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
 	 */
@@ -169,7 +190,7 @@
 			},
 			error: function() {
 				self.galleryImages = [];
-				params['failure'](self, "<p>Nie udało się wczytać gallerii pod nazwą: '" + self.galleryLink + "'.</p>");
+				params['failure'](self, "<p>Nie udało się wczytać galerii pod nazwą: '" + self.galleryLink + "'.</p>");
 			}
 		});
 	};
@@ -222,6 +243,8 @@
 			success: function(data) {
 				var changed = false;
 
+                $('#header').removeClass('saving');
+
 				if (data.text) {
 					self.text = data.text;
 					self.revision = data.revision;
@@ -233,17 +256,31 @@
 				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": "<p>Nie udało się zapisać - błąd serwera.</p>"
-					});
-				};
+                if ($('#header').hasClass('saving')) {
+                    $('#header').removeClass('saving');
+                    $.blockUI({
+                        message: "<p>Nie udało się zapisać zmian. <br/><button onclick='$.unblockUI()'>OK</button></p>"
+                    })
+                }
+                else {
+                    try {
+                        params['failure'](self, $.parseJSON(xhr.responseText));
+                    }
+                    catch (e) {
+                        params['failure'](self, {
+                            "__message": "<p>Nie udało się zapisać - błąd serwera.</p>"
+                        });
+                    };
+                }
 
 			}
 		});
+
+        $('#save-hide').click(function(){
+            $('#header').addClass('saving');
+            $.unblockUI();
+            $.wiki.blocking.unblock();
+        });
 	}; /* end of save() */
 
 	WikiDocument.prototype.publish = function(params) {