X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/573b9004c7bc2a6a2b29335155b4ff55d142c6b6..4a8b54a88de9d528031701ec97224752f2e2b25b:/src/redakcja/static/js/wiki/wikiapi.js

diff --git a/src/redakcja/static/js/wiki/wikiapi.js b/src/redakcja/static/js/wiki/wikiapi.js
index 53b2a9da..14b8337e 100644
--- a/src/redakcja/static/js/wiki/wikiapi.js
+++ b/src/redakcja/static/js/wiki/wikiapi.js
@@ -35,6 +35,9 @@
 	    return base_path + "/history/" + arguments[1] + '/';
 	}
 
+	if (vname == "ajax_document_scans") {
+            return base_path + "/scans/" + arguments[1] + '/';
+	}
 	if (vname == "ajax_document_gallery") {
 	    return base_path + "/gallery/" + arguments[1] + '/';
 	}
@@ -117,11 +120,11 @@
 	    this.readonly = !!$("*[data-key='readonly']", meta).text();
 
 	    this.bookSlug = $("*[data-key='book-slug']", meta).text();
+	    this.scansLink = $("*[data-key='scans']", meta).text();
 	    this.galleryLink = $("*[data-key='gallery']", meta).text();
             this.galleryStart = parseInt($("*[data-key='gallery-start']", meta).text());
             this.fullUri = $("*[data-key='full-uri']", meta).text();
 
-	    this.galleryImages = [];
 	    this.text = null;
 	    this.has_local_changes = false;
             this.active = true;
@@ -150,6 +153,7 @@
 
 		    if (self.text === null || self.revision !== data.revision) {
 		        self.text = data.text;
+                        $.wiki.undo.push(data.text);
 		        self.revision = data.revision;
 		        self.gallery = data.gallery;
 		        changed = true;
@@ -232,24 +236,43 @@
             });
         }
 
+        refreshImageGallery(params) {
+            if (this.galleryLink) {
+                params = $.extend({}, params, {
+                    url: reverse("ajax_document_gallery", this.galleryLink)
+                });
+            }
+            this.refreshGallery(params);
+        }
+
+        refreshScansGallery(params) {
+            if (this.scansLink) {
+                params = $.extend({}, params, {
+                    url: reverse("ajax_document_scans", this.scansLink)
+                });
+                this.refreshGallery(params);
+            } else {
+                // Fallback to image gallery.
+                this.refreshImageGallery(params)
+            }
+        }
+        
         /*
          * Fetch gallery
          */
         refreshGallery(params) {
 	    params = $.extend({}, noops, params);
 	    var self = this;
-	    if (!self.galleryLink) {
-	        params['failure'](self, 'Brak galerii.');
+            if (!params.url) {
+	        params.failure('Brak galerii.');
 	        return;
-	    }
+            }
 	    $.ajax({
 	        method: "GET",
-	        url: reverse("ajax_document_gallery", self.galleryLink),
+	        url: params.url,
 	        dataType: 'json',
-	        // data: {},
 	        success: function(data) {
-		    self.galleryImages = data;
-		    params['success'](self, data);
+		    params.success(data);
 	        },
 	        error: function(xhr) {
                     switch (xhr.status) {
@@ -257,12 +280,11 @@
                         var msg = 'Galerie dostępne tylko dla zalogowanych użytkowników.';
                         break;
                     case 404:
-                        var msg = "Nie znaleziono galerii o nazwie: '" + self.galleryLink + "'.";
+                        var msg = "Nie znaleziono galerii.";
                     default:
-                        var msg = "Nie udało się wczytać galerii o nazwie: '" + self.galleryLink + "'.";
+                        var msg = "Nie udało się wczytać galerii.";
                     }
-		    self.galleryImages = [];
-		    params['failure'](self, msg);
+		    params.failure(msg);
 	        }
 	    });
         }
@@ -288,12 +310,32 @@
         /*
          * Set document's text
          */
-        setText(text) {
+        setText(text, silent=false) {
             if (text == this.text) return;
+            if (!silent) {
+                $.wiki.undo.push(text);
+            }
             this.text = text;
             this.has_local_changes = true;
         }
 
+        undo() {
+            let ctx = $.wiki.exitContext();
+            this.setText(
+                $.wiki.undo.undo(),
+                true
+            );
+            $.wiki.enterContext(ctx);
+        }
+        redo() {
+            let ctx = $.wiki.exitContext();
+            this.setText(
+                $.wiki.undo.redo(),
+                true
+            );
+            $.wiki.enterContext(ctx);
+        }
+
         /*
          * Save text back to the server
          */