X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/28866d0f2520b7515f3c06e9b61bcce4f44d53b1..2dd9e6498b5e0bd5c0bd882db02be9768c34c019:/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 426c7f62..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,23 +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(); - var diff = $("*[data-key='diff']", meta).text(); - if (diff) { - diff = diff.split(','); - if (diff.length == 2 && diff[0] < diff[1]) - this.diff = diff; - else if (diff.length == 1) { - diff = parseInt(diff); - if (diff != NaN) - this.diff = [diff - 1, diff]; - } - } - - this.galleryImages = []; this.text = null; this.has_local_changes = false; this.active = true; @@ -162,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; @@ -244,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) { @@ -269,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); } }); } @@ -300,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 */