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

github.com/ONLYOFFICE/onlyoffice-nextcloud.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorSergey Linnik <sergey.linnik@onlyoffice.com>2020-08-25 14:23:04 +0300
committerGitHub <noreply@github.com>2020-08-25 14:23:04 +0300
commit4dd8589ffbb0c0952f07ef98b348289188ce056e (patch)
tree919c0c1cf1980ee7bc47cef50708918f42c2d9b1 /js
parentd31a12935588dea86f397b18abb14a80307f4e91 (diff)
parent74e91b2a450d65abbca978b5cc44c5e39d755a37 (diff)
Merge pull request #343 from ONLYOFFICE/feature/version-history
Feature/version history
Diffstat (limited to 'js')
-rw-r--r--js/editor.js98
-rw-r--r--js/listener.js10
-rw-r--r--js/main.js51
3 files changed, 147 insertions, 12 deletions
diff --git a/js/editor.js b/js/editor.js
index 284fe67..d8ac41b 100644
--- a/js/editor.js
+++ b/js/editor.js
@@ -30,7 +30,9 @@
OCA.Onlyoffice = _.extend({
AppName: "onlyoffice",
- inframe: false
+ inframe: false,
+ fileId: null,
+ shareToken: null
}, OCA.Onlyoffice);
OCA.Onlyoffice.InitEditor = function () {
@@ -40,11 +42,12 @@
});
};
- var fileId = $("#iframeEditor").data("id");
- var shareToken = $("#iframeEditor").data("sharetoken");
+ OCA.Onlyoffice.fileId = $("#iframeEditor").data("id");
+ OCA.Onlyoffice.shareToken = $("#iframeEditor").data("sharetoken");
+ OCA.Onlyoffice.version = $("#iframeEditor").data("version");
var directToken = $("#iframeEditor").data("directtoken");
OCA.Onlyoffice.inframe = !!$("#iframeEditor").data("inframe");
- if (!fileId && !shareToken && !directToken) {
+ if (!OCA.Onlyoffice.fileId && !OCA.Onlyoffice.shareToken && !directToken) {
displayError(t(OCA.Onlyoffice.AppName, "FileId is empty"));
return;
}
@@ -56,7 +59,7 @@
var configUrl = OC.generateUrl("apps/" + OCA.Onlyoffice.AppName + "/ajax/config/{fileId}",
{
- fileId: fileId || 0
+ fileId: OCA.Onlyoffice.fileId || 0
});
var params = [];
@@ -64,13 +67,16 @@
if (filePath) {
params.push("filePath=" + encodeURIComponent(filePath));
}
- if (shareToken) {
- params.push("shareToken=" + encodeURIComponent(shareToken));
+ if (OCA.Onlyoffice.shareToken) {
+ params.push("shareToken=" + encodeURIComponent(OCA.Onlyoffice.shareToken));
}
if (directToken) {
$("html").addClass("onlyoffice-full-page");
params.push("directToken=" + encodeURIComponent(directToken));
}
+ if (OCA.Onlyoffice.version > 0) {
+ params.push("version=" + OCA.Onlyoffice.version);
+ }
if (OCA.Onlyoffice.inframe || directToken) {
var dsVersion = DocsAPI.DocEditor.version();
@@ -133,15 +139,22 @@
config.events = {
"onDocumentStateChange": setPageTitle,
+ "onRequestHistory": OCA.Onlyoffice.onRequestHistory,
+ "onRequestHistoryData": OCA.Onlyoffice.onRequestHistoryData,
+ "onDocumentReady": OCA.Onlyoffice.onDocumentReady,
};
+ if (!OCA.Onlyoffice.version) {
+ config.events.onRequestHistoryClose = OCA.Onlyoffice.onRequestHistoryClose;
+ }
+
if (config.editorConfig.tenant) {
config.events.onAppReady = function () {
OCA.Onlyoffice.docEditor.showMessage(t(OCA.Onlyoffice.AppName, "You are using public demo ONLYOFFICE Document Server. Please do not store private sensitive data."));
};
}
- if (OCA.Onlyoffice.inframe && !shareToken
+ if (OCA.Onlyoffice.inframe && !OCA.Onlyoffice.shareToken
|| OC.currentUser) {
config.events.onRequestSaveAs = OCA.Onlyoffice.onRequestSaveAs;
config.events.onRequestInsertImage = OCA.Onlyoffice.onRequestInsertImage;
@@ -154,7 +167,7 @@
}
if (OCA.Onlyoffice.inframe
- && config._files_sharing && !shareToken
+ && config._files_sharing && !OCA.Onlyoffice.shareToken
&& window.parent.OCA.Onlyoffice.context) {
config.events.onRequestSharingSettings = OCA.Onlyoffice.onRequestSharingSettings;
}
@@ -174,6 +187,73 @@
});
};
+ OCA.Onlyoffice.onRequestHistory = function (version) {
+ $.get(OC.generateUrl("apps/" + OCA.Onlyoffice.AppName + "/ajax/history?fileId={fileId}&shareToken={shareToken}",
+ {
+ fileId: OCA.Onlyoffice.fileId || 0,
+ shareToken: OCA.Onlyoffice.shareToken || "",
+ }),
+ function onSuccess(response) {
+ if (response.error) {
+ var data = {error: response.error};
+ } else {
+ var currentVersion = 0;
+ $.each(response, function (i, fileVersion) {
+ if (fileVersion.version >= currentVersion) {
+ currentVersion = fileVersion.version;
+ }
+ });
+
+ if (version) {
+ currentVersion = Math.min(currentVersion, version);
+ }
+
+ data = {
+ currentVersion: currentVersion,
+ history: response,
+ };
+ }
+ OCA.Onlyoffice.docEditor.refreshHistory(data);
+ });
+ };
+
+ OCA.Onlyoffice.onRequestHistoryData = function (event) {
+ var version = event.data;
+
+ $.get(OC.generateUrl("apps/" + OCA.Onlyoffice.AppName + "/ajax/version?fileId={fileId}&version={version}&shareToken={shareToken}",
+ {
+ fileId: OCA.Onlyoffice.fileId || 0,
+ version: version,
+ shareToken: OCA.Onlyoffice.shareToken || "",
+ }),
+ function onSuccess(response) {
+ if (response.error) {
+ response = {
+ error: response.error,
+ version: version,
+ };
+ }
+ OCA.Onlyoffice.docEditor.setHistoryData(response);
+ });
+ };
+
+ OCA.Onlyoffice.onRequestHistoryClose = function () {
+ location.reload(true);
+ };
+
+ OCA.Onlyoffice.onDocumentReady = function() {
+ if (OCA.Onlyoffice.inframe) {
+ window.parent.postMessage({
+ method: "onDocumentReady"
+ },
+ "*");
+ }
+
+ if (OCA.Onlyoffice.version > 0) {
+ OCA.Onlyoffice.onRequestHistory(OCA.Onlyoffice.version);
+ }
+ };
+
OCA.Onlyoffice.onRequestSaveAs = function (event) {
var saveData = {
name: event.data.title,
diff --git a/js/listener.js b/js/listener.js
index 3a25edb..f571010 100644
--- a/js/listener.js
+++ b/js/listener.js
@@ -36,6 +36,7 @@
OCA.Onlyoffice.onRequestClose = function () {
$(OCA.Onlyoffice.frameSelector).remove();
+ OCA.Onlyoffice.frameSelector = null;
if (OCA.Viewer && OCA.Viewer.close) {
OCA.Viewer.close();
@@ -77,6 +78,12 @@
revisedMimes);
};
+ OCA.Onlyoffice.onDocumentReady = function () {
+ if (OCA.Onlyoffice.bindVersionClick) {
+ OCA.Onlyoffice.bindVersionClick();
+ }
+ };
+
window.addEventListener("message", function (event) {
if ($(OCA.Onlyoffice.frameSelector)[0].contentWindow !== event.source
|| !event.data["method"]) {
@@ -108,6 +115,9 @@
case "editorRequestCompareFile":
OCA.Onlyoffice.onRequestCompareFile(event.data.param);
break;
+ case "onDocumentReady":
+ OCA.Onlyoffice.onDocumentReady();
+ break;
}
}, false);
diff --git a/js/main.js b/js/main.js
index a880116..9eda2df 100644
--- a/js/main.js
+++ b/js/main.js
@@ -66,7 +66,7 @@
}
fileList.add(response, { animate: true });
- OCA.Onlyoffice.OpenEditor(response.id, dir, response.name, winEditor);
+ OCA.Onlyoffice.OpenEditor(response.id, dir, response.name, 0, winEditor);
OCA.Onlyoffice.context = { fileList: fileList };
OCA.Onlyoffice.context.fileName = response.name;
@@ -76,8 +76,11 @@
);
};
- OCA.Onlyoffice.OpenEditor = function (fileId, fileDir, fileName, winEditor) {
- var filePath = fileDir.replace(new RegExp("\/$"), "") + "/" + fileName;
+ OCA.Onlyoffice.OpenEditor = function (fileId, fileDir, fileName, version, winEditor) {
+ var filePath = "";
+ if (fileName) {
+ filePath = fileDir.replace(new RegExp("\/$"), "") + "/" + fileName;
+ }
var url = OC.generateUrl("/apps/" + OCA.Onlyoffice.AppName + "/{fileId}?filePath={filePath}",
{
fileId: fileId,
@@ -92,6 +95,10 @@
});
}
+ if (version > 0) {
+ url += "&version=" + version;
+ }
+
if (winEditor && winEditor.location) {
winEditor.location.href = url;
} else if (!OCA.Onlyoffice.setting.sameTab || OCA.Onlyoffice.Desktop) {
@@ -305,6 +312,40 @@
return extension;
}
+ OCA.Onlyoffice.openVersion = function (fileId, version) {
+ if (OCA.Onlyoffice.frameSelector) {
+ $(OCA.Onlyoffice.frameSelector)[0].contentWindow.OCA.Onlyoffice.onRequestHistory(version);
+ return;
+ }
+
+ OCA.Onlyoffice.OpenEditor(fileId, "", "", version)
+ };
+
+ OCA.Onlyoffice.bindVersionClick = function () {
+ unbindVersionClick();
+ $(document).on("click.onlyoffice-version", "#versionsTabView .downloadVersion", function() {
+ var versionNodes = $("#versionsTabView ul.versions>li");
+ var versionNode = $(this).closest("#versionsTabView ul.versions>li")[0];
+
+ var href = $(this).attr("href");
+ var search = new RegExp("\/versions\/\\w+\/versions\/(\\d+)\/\\d+");
+ var result = search.exec(href);
+ if (result && result.length > 1) {
+ var fileId = result[1];
+ }
+
+ var versionNum = versionNodes.length - $.inArray(versionNode, versionNodes);
+
+ OCA.Onlyoffice.openVersion(fileId || "", versionNum);
+
+ return false;
+ });
+ };
+
+ var unbindVersionClick = function() {
+ $(document).off("click.onlyoffice-version", "#versionsTabView .downloadVersion");
+ }
+
var initPage = function () {
if ($("#isPublic").val() === "1" && !$("#filestable").length) {
var fileName = $("#filename").val();
@@ -334,6 +375,10 @@
} else {
OC.Plugins.register("OCA.Files.FileList", OCA.Onlyoffice.FileList);
OC.Plugins.register("OCA.Files.NewFileMenu", OCA.Onlyoffice.NewFileMenu);
+
+ if (OCA.Versions) {
+ OCA.Onlyoffice.bindVersionClick();
+ }
}
};