--- /dev/null
+(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);
+ }
+ });
+ }
+
+ // first time page is rendered
+ $('#make-diff-button').click(function() {
+ self.makeDiff();
+ });
+
+ $('#pubmark-changeset-button').click(function() {
+ self.showPubmarkForm();
+ });
+
+ $('#doc-revert-button').click(function() {
+ self.revertDialog();
+ });
+
+ $('#open-preview-button').click(function(event) {
+ var selected = $('#changes-list .entry.selected');
+
+ 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);
+
+ event.preventDefault();
+ });
+
+ $('#changes-list .entry').live('click', function(){
+ var $this = $(this);
+
+ var selected_count = $("#changes-list .entry.selected").length;
+
+ 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').
+ filter('*[data-enabled-when~=' + selected_count + '], *[data-enabled-when~=*]').
+ attr('disabled', null);
+ });
+
+ $('#changes-list span.tag').live('click', function(event){
+ return false;
+ });
+
+ 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);
+
+ $.blockUI({
+ message: 'Odświeżanie historii...'
+ });
+
+ function _finalize(s){
+ $.unblockUI();
+
+ if (s) {
+ if (success)
+ success();
+ }
+ else {
+ if (failure)
+ failure();
+ }
+ }
+
+ function _failure(doc, message){
+ $('#history-view .message-box').html('Nie udało się odświeżyć historii:' + message).show();
+ _finalize(false);
+ };
+
+ function _success(doc, data){
+ $('#history-view .message-box').hide();
+ var changes_list = $('#changes-list');
+ var $stub = $('#history-view .row-stub');
+ changes_list.html('');
+
+ var tags = $('select#id_addtag-tag option');
+
+ $.each(data, function(){
+ $.wiki.renderStub({
+ container: changes_list,
+ stub: $stub,
+ data: this,
+ filters: {
+// tag: function(value) {
+// return tags.filter("*[value='"+value+"']").text();
+// }
+// description: function(value) {
+// return value.replace('\n', ');
+// }
+ }
+ });
+ });
+
+ _finalize(true);
+ };
+
+ return this.doc.fetchHistory({
+ success: _success,
+ failure: _failure
+ });
+ };
+
+ HistoryPerspective.prototype.showPubmarkForm = function(){
+ 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('#pubmark_dialog', {'revision': version});
+ };
+
+ HistoryPerspective.prototype.makeDiff = function() {
+ 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;
+ }
+
+ $.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();
+ }
+ });
+ };
+
+ HistoryPerspective.prototype.revertDialog = function(){
+ 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);