(function($){
- function HistoryPerspective(options) {
- var old_callback = options.callback || function() {};
-
- options.callback = function() {
- var self = this;
- if (CurrentDocument.diff) {
- rev_from = CurrentDocument.diff[0];
- rev_to = CurrentDocument.diff[1];
- this.doc.fetchDiff({
- from: rev_from,
- to: rev_to,
- success: function(doc, data){
- var result = $.wiki.newTab(doc, ''+rev_from +' -> ' + rev_to, 'DiffPerspective');
-
- $(result.view).html(data);
- $.wiki.switchToTab(result.tab);
- }
- });
- }
+ class HistoryPerspective extends $.wiki.Perspective {
+ constructor(options) {
+ super(options);
+ var self = this;
- // first time page is rendered
+ // first time page is rendered
$('#make-diff-button').click(function() {
- self.makeDiff();
- });
+ self.makeDiff();
+ });
- $('#pubmark-changeset-button').click(function() {
- self.showPubmarkForm();
- });
+ $('#pubmark-changeset-button').click(function() {
+ self.showPubmarkForm();
+ });
- $('#doc-revert-button').click(function() {
- self.revertDialog();
- });
+ $('#doc-revert-button').click(function() {
+ self.revertDialog();
+ });
- $('#open-preview-button').click(function(event) {
- var selected = $('#changes-list .entry.selected');
+ $('#open-preview-button').click(function(event) {
+ var selected = $('#changes-list .entry.selected');
- if (selected.length != 1) {
+ if (selected.length != 1) {
window.alert("Wybierz dokładnie *jedną* wersję.");
return;
- }
+ }
- var version = parseInt($("*[data-stub-value='version']", selected[0]).text());
- window.open($(this).attr('data-basehref') + "?revision=" + version);
+ var version = parseInt($("*[data-stub-value='version']", selected[0]).text());
+ window.open($(this).attr('data-basehref') + "?revision=" + version);
- event.preventDefault();
- });
+ event.preventDefault();
+ });
$(document).on('click', '#changes-list .entry', function(){
- var $this = $(this);
+ var $this = $(this);
- var selected_count = $("#changes-list .entry.selected").length;
+ var selected_count = $("#changes-list .entry.selected").length;
- if ($this.hasClass('selected')) {
+ if ($this.hasClass('selected')) {
$this.removeClass('selected');
selected_count -= 1;
- }
- else {
- if (selected_count < 2) {
- $this.addClass('selected');
- selected_count += 1;
- };
- };
-
- $('#history-view-editor .toolbar button').attr('disabled', 'disabled').
+ }
+ else {
+ if (selected_count < 2) {
+ $this.addClass('selected');
+ selected_count += 1;
+ };
+ };
+
+ $('#history-view-editor .toolbar button').attr('disabled', 'disabled').
filter('*[data-enabled-when~="' + selected_count + '"]').
- attr('disabled', null);
+ attr('disabled', null);
});
+ $(document).on('click', '#changes-list .entry .approved', function(){
+ $("#changes-list .entry.selected").removeClass('selected');
+ $(this).closest('.entry').click();
+ self.showPubmarkForm();
+ return false;
+ })
$(document).on('click', '#changes-list span.tag', function(event){
return false;
});
self.triggerFetch();
}
});
+ }
- old_callback.call(this);
- }
-
- $.wiki.Perspective.call(this, options);
- };
-
- HistoryPerspective.prototype = new $.wiki.Perspective();
-
- HistoryPerspective.prototype.freezeState = function(){
- // must
- };
-
- HistoryPerspective.prototype.onEnter = function(success, failure){
- $.wiki.Perspective.prototype.onEnter.call(this);
- this.startFetching();
- success && success();
- };
-
- HistoryPerspective.prototype.startFetching = function() {
- $('#history-view .message-box').html('Wczytywanie historii…').show();
- $('#changes-list').html('');
- this.finished = false;
- this.before = '';
- this.triggerFetch();
- };
- HistoryPerspective.prototype.stopFetching = function() {
- self.finished = true;
- $('#history-view .message-box').hide()
- };
-
-
- HistoryPerspective.prototype.triggerFetch = function() {
- var self = this;
- self.fetching = true;
-
- function _finalize() {
- self.fetching = false;
+ onEnter(success, failure) {
+ super.onEnter();
+ this.startFetching();
+ success && success();
}
- function _failure(doc, message){
- $('#history-view .message-box').html('Nie udało się odświeżyć historii:' + message).show();
- _finalize();
- };
+ startFetching() {
+ $('#history-view .message-box').html('Wczytywanie historii…').show();
+ $('#changes-list').html('');
+ this.finished = false;
+ this.before = '';
+ this.triggerFetch();
+ }
+ stopFetching() {
+ self.finished = true;
+ $('#history-view .message-box').hide()
+ }
- function _success(doc, data){
- //$('#history-view .message-box').hide(); ONLY AFTER LAST!
- var changes_list = $('#changes-list');
- var $stub = $('#history-view .row-stub');
+ triggerFetch() {
+ var self = this;
+ self.fetching = true;
- if (!data.length) {
- self.stopFetching();
+ function _finalize() {
+ self.fetching = false;
}
- $.each(data, function(){
- $.wiki.renderStub({
- container: changes_list,
- stub: $stub,
- data: this,
- });
- self.before = this.version;
- if (this.version == 1) {
- self.stopFetching();
- }
- });
+ function _failure(doc, message){
+ $('#history-view .message-box').html('Nie udało się odświeżyć historii:' + message).show();
+ _finalize();
+ };
- _finalize();
- };
+ function _success(doc, data){
+ //$('#history-view .message-box').hide(); ONLY AFTER LAST!
+ var changes_list = $('#changes-list');
+ var $stub = $('#history-view .row-stub');
- this.doc.fetchHistory({
- success: _success,
- failure: _failure,
- before: this.before,
- });
- }
+ if (!data.length) {
+ self.stopFetching();
+ }
+ $.each(data, function(){
+ $.wiki.renderStub({
+ container: changes_list,
+ stub: $stub,
+ data: this,
+ });
+ self.before = this.version;
+ if (this.version == 1) {
+ self.stopFetching();
+ }
+ });
- HistoryPerspective.prototype.showPubmarkForm = function(){
- var selected = $('#changes-list .entry.selected');
+ _finalize();
+ };
- if (selected.length != 1) {
- window.alert("Musisz zaznaczyć dokładnie jedną wersję.");
- return;
+ this.doc.fetchHistory({
+ success: _success,
+ failure: _failure,
+ before: this.before,
+ });
}
- var version = parseInt($("*[data-stub-value='version']", selected[0]).text());
- $.wiki.showDialog('#pubmark_dialog', {'revision': version});
- };
+ showPubmarkForm() {
+ var selected = $('#changes-list .entry.selected');
- HistoryPerspective.prototype.makeDiff = function() {
- var changelist = $('#changes-list');
- var selected = $('.entry.selected', changelist);
+ if (selected.length != 1) {
+ window.alert("Musisz zaznaczyć dokładnie jedną wersję.");
+ return;
+ }
- if (selected.length != 2) {
- window.alert("Musisz zaznaczyć dokładnie dwie wersje do porównania.");
- return;
+ var version = parseInt($("*[data-stub-value='version']", selected[0]).text());
+ var approved = selected.attr('data-approved') == 'true';
+ $.wiki.showDialog('#pubmark_dialog', {'revision': version, 'approved': !approved});
}
- $.blockUI({
- message: 'Wczytywanie porównania...'
- });
-
- var rev_from = $("*[data-stub-value='version']", selected[1]).text();
- var rev_to = $("*[data-stub-value='version']", selected[0]).text();
-
- return this.doc.fetchDiff({
- from: rev_from,
- to: rev_to,
- success: function(doc, data){
- var result = $.wiki.newTab(doc, ''+rev_from +' -> ' + rev_to, 'DiffPerspective');
-
- $(result.view).html(data);
- $.wiki.switchToTab(result.tab);
- $.unblockUI();
- },
- failure: function(doc){
- $.unblockUI();
+ makeDiff() {
+ var changelist = $('#changes-list');
+ var selected = $('.entry.selected', changelist);
+
+ if (selected.length != 2) {
+ window.alert("Musisz zaznaczyć dokładnie dwie wersje do porównania.");
+ return;
}
- });
- };
- HistoryPerspective.prototype.revertDialog = function(){
- var self = this;
- var selected = $('#changes-list .entry.selected');
+ var rev_from = $("*[data-stub-value='version']", selected[1]).text();
+ var rev_to = $("*[data-stub-value='version']", selected[0]).text();
- if (selected.length != 1) {
- window.alert("Musisz zaznaczyć dokładnie jedną wersję.");
- return;
+ $.wiki.DiffPerspective.open(rev_from, rev_to);
}
- var version = parseInt($("*[data-stub-value='version']", selected[0]).text());
- $.wiki.showDialog('#revert_dialog', {revision: version});
- };
+ revertDialog() {
+ var self = this;
+ var selected = $('#changes-list .entry.selected');
+ if (selected.length != 1) {
+ window.alert("Musisz zaznaczyć dokładnie jedną wersję.");
+ return;
+ }
+
+ var version = parseInt($("*[data-stub-value='version']", selected[0]).text());
+ $.wiki.showDialog('#revert_dialog', {revision: version});
+ }
+ }
$.wiki.HistoryPerspective = HistoryPerspective;
})(jQuery);