Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/richdocuments.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2018-12-17 19:07:06 +0300
committerJulius Härtl <jus@bitgrid.net>2018-12-18 12:03:14 +0300
commit202ff4be5569819a0bad962e6f5f9e03a3e475fe (patch)
tree6dea1313c0a9a04e0235a35ea6f238c08209a2b4 /js
parentefc00d4994c278340897cecccadaa76c4ecf4897 (diff)
Make version restore compatible with Nextcloud 13/14
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'js')
-rw-r--r--js/documents.js156
1 files changed, 91 insertions, 65 deletions
diff --git a/js/documents.js b/js/documents.js
index 788bf2d3..7e5712de 100644
--- a/js/documents.js
+++ b/js/documents.js
@@ -283,81 +283,106 @@ var documentsMain = {
},
addVersionSidebarEvents: function() {
- var self = this;
- var showVersionPreview = function (e) {
- e.preventDefault();
- self.loadRevViewerContainer();
- var element = e.currentTarget.parentElement.parentElement;
- if ($(e.currentTarget).hasClass('downloadVersion')) {
- element = e.currentTarget.parentElement.parentElement.parentElement.parentElement;
- }
- var version = element.dataset.revision;
- var fileId = documentsMain.fileId + '_' + version;
- var title = documentsMain.fileName + ' - ' + version;
- documentsMain.UI.showViewer(
- fileId, title
- );
-
- // mark only current <li> as active
- $(element.parentElement).find('li').removeClass('active');
- $(element).addClass('active');
- };
+ $(parent.document.querySelector('#content')).on('click.revisions', '#app-sidebar .preview-container', this.showVersionPreview.bind(this));
+ $(parent.document.querySelector('#content')).on('click.revisions', '#app-sidebar .downloadVersion', this.showVersionPreview.bind(this));
+ // Use mousedown event to overwrite behavior of the versions app
+ $(parent.document.querySelector('#content')).on('mousedown.revisions', '#app-sidebar .revertVersion', this.restoreVersion.bind(this));
+ },
- $(parent.document.querySelector('#content')).on('click.revisions', '#app-sidebar .preview-container', showVersionPreview);
- $(parent.document.querySelector('#content')).on('click.revisions', '#app-sidebar .downloadVersion', showVersionPreview);
+ removeVersionSidebarEvents: function() {
+ $(parent.document.querySelector('#content')).off('click.revisions');
+ $(parent.document.querySelector('#content')).off('click.revisions');
+ $(parent.document.querySelector('#content')).off('mousedown.revisions');
+ },
- // Use mousedown event to overwrite behavior of the versions app
- $(parent.document.querySelector('#content')).on('mousedown.revisions', '#app-sidebar .revertVersion', function(e) {
- e.preventDefault();
- e.stopPropagation();
+ showVersionPreview: function (e) {
+ e.preventDefault();
+ documentsMain.UI.loadRevViewerContainer();
+ var element = e.currentTarget.parentElement.parentElement;
+ if ($(e.currentTarget).hasClass('downloadVersion')) {
+ element = e.currentTarget.parentElement.parentElement.parentElement.parentElement;
+ }
+ var version = element.dataset.revision;
+ var fileId = documentsMain.fileId + '_' + version;
+ var title = documentsMain.fileName + ' - ' + version;
+ documentsMain.UI.showViewer(
+ fileId, title
+ );
- // close the viewer
- documentsMain.onCloseViewer();
+ // mark only current <li> as active
+ $(element.parentElement).find('li').removeClass('active');
+ $(element).addClass('active');
+ },
- documentsMain.WOPIPostMessage($('#loleafletframe')[0], 'Host_VersionRestore', {Status: 'Pre_Restore'});
-
- var version = e.currentTarget.parentElement.parentElement.dataset.revision;
- var restoreUrl = OC.linkToRemoteBase('dav') + '/versions/' + parent.OC.getCurrentUser().uid
- + '/versions/' + documentsMain.originalFileId + '/' + version;
-
- documentsMain.$deferredVersionRestoreAck = $.Deferred();
- jQuery.when(documentsMain.$deferredVersionRestoreAck).
- done(function(args) {
- // restore selected version
- $.ajax({
- type: 'MOVE',
- url: restoreUrl,
- headers: {
- Destination: OC.linkToRemote('dav') + '/versions/' + parent.OC.getCurrentUser().uid + '/restore/target'
- },
- success: function(response) {
- if (response.status === 'error') {
- documentsMain.UI.notify(t('richdocuments', 'Failed to revert the document to older version'));
- }
+ restoreVersion: function(e) {
+ var self = this;
+ e.preventDefault();
+ e.stopPropagation();
- // load the file again, it should get reverted now
- window.location = $(parent.document.querySelector('#richdocumentsframe')).attr('src');
- documentsMain.overlay.documentOverlay('hide');
+ documentsMain.onCloseViewer();
- parent.OC.Apps.hideAppSidebar();
- },
- error: function() {
- documentsMain.UI.notify(t('richdocuments', 'Failed to revert the document to older version'));
- }
- });
- });
+ documentsMain.WOPIPostMessage($('#loleafletframe')[0], 'Host_VersionRestore', {Status: 'Pre_Restore'});
+
+ var version = e.currentTarget.parentElement.parentElement.dataset.revision;
- // resolve the deferred object immediately if client doesn't support version states
- if (!documentsMain.wopiClientFeatures || !documentsMain.wopiClientFeatures.VersionStates) {
- documentsMain.$deferredVersionRestoreAck.resolve();
+ documentsMain.$deferredVersionRestoreAck = $.Deferred();
+ jQuery.when(documentsMain.$deferredVersionRestoreAck).done(function(args) {
+ var nextcloudVersion = parseInt(parent.oc_config.version.split('.')[0]);
+ if (nextcloudVersion < 15) {
+ self._restoreAjax(version);
+ } else {
+ self._restoreDAV(version)
}
});
+
+ // resolve the deferred object immediately if client doesn't support version states
+ if (!documentsMain.wopiClientFeatures || !documentsMain.wopiClientFeatures.VersionStates) {
+ documentsMain.$deferredVersionRestoreAck.resolve();
+ }
+
+ return false;
},
- removeVersionSidebarEvents: function() {
- $(parent.document.querySelector('#content')).off('click.revisions');
- $(parent.document.querySelector('#content')).off('click.revisions');
- $(parent.document.querySelector('#content')).off('mousedown.revisions');
+ _restoreSuccess: function(response) {
+ if (response.status === 'error') {
+ documentsMain.UI.notify(t('richdocuments', 'Failed to revert the document to older version'));
+ }
+
+ // load the file again, it should get reverted now
+ window.location = $(parent.document.querySelector('#richdocumentsframe')).attr('src');
+ documentsMain.overlay.documentOverlay('hide');
+ parent.OC.Apps.hideAppSidebar();
+ },
+
+ _restoreError: function() {
+ documentsMain.UI.notify(t('richdocuments', 'Failed to revert the document to older version'));
+ },
+
+ _restoreDAV: function(version) {
+ var restoreUrl = OC.linkToRemoteBase('dav') + '/versions/' + parent.OC.getCurrentUser().uid
+ + '/versions/' + documentsMain.originalFileId + '/' + version;
+ $.ajax({
+ type: 'MOVE',
+ url: restoreUrl,
+ headers: {
+ Destination: OC.linkToRemote('dav') + '/versions/' + parent.OC.getCurrentUser().uid + '/restore/target'
+ },
+ success: this._restoreSuccess,
+ error: this._restoreError
+ });
+ },
+
+ _restoreAjax: function(version) {
+ var restoreUrl = OC.generateUrl('apps/files_versions/ajax/rollbackVersion.php?file={file}&revision={revision}',
+ {
+ file: documentsMain.fullPath, revision: version
+ });
+ $.ajax({
+ type: 'GET',
+ url: restoreUrl,
+ success: this._restoreSuccess,
+ error: this._restoreError
+ });
},
showEditor : function(title, fileId, action){
@@ -700,7 +725,7 @@ var documentsMain = {
parent.document.title = documentsMain.UI.mainTitle;
parent.postMessage('close', '*');
- this.removeVersionSidebarEvents();
+ this.UI.removeVersionSidebarEvents();
},
onCloseViewer: function() {
@@ -710,6 +735,7 @@ var documentsMain = {
$('#revViewerContainer').remove();
documentsMain.isViewerMode = false;
documentsMain.UI.revisionsStart = 0;
+ parent.$('#versionsTabView .active').removeClass('active');
$('#loleafletframe').focus();
},