Compare commits

..

2 Commits

4 changed files with 95 additions and 1 deletions

View File

@ -1,5 +1,7 @@
# Change Log
- nodejs: referenceData
## 1.4.0
- nodejs: option to send directUrl
- opening file on client by directUrl

View File

@ -29,6 +29,7 @@ const config = require('config');
const configServer = config.get('server');
const storageFolder = configServer.get("storageFolder");
const mime = require("mime");
const urlModule = require("url");
const docManager = require("./helpers/docManager");
const documentService = require("./helpers/documentService");
const fileUtility = require("./helpers/fileUtility");
@ -469,6 +470,75 @@ app.get("/csv", function (req, res) { // define a handler for downloading csv f
filestream.pipe(res); // send file information to the response by streams
})
app.post("/reference", function (req, res) { //define a handler for renaming file
req.docManager = new docManager(req, res);
var result = function(data) {
res.writeHead(200, {"Content-Type": "application/json" });
res.write(JSON.stringify(data));
res.end();
};
var referenceData = req.body.referenceData;
if (!!referenceData) {
var portalName = referenceData.portalName;
if (portalName != req.docManager.getServerUrl()) {
result({ "error": "You do not have access to this site" });
return;
}
var fileId = JSON.parse(referenceData.fileId);
var userAddress = fileId.userAddress;
if (userAddress != req.docManager.curUserHostAddress()) {
result({ "error": "You do not have access to this file" });
return;
}
var fileName = fileId.fileName;
if (!req.docManager.existsSync(req.docManager.storagePath(fileName, userAddress))) {
result({ "error": "File is not exist" });
return;
}
} else if (!!req.body.link) {
if (req.body.link.indexOf(req.docManager.curUserHostAddress()) != -1) {
result({ "error": "You do not have access to this site" });
return;
}
var urlObj = urlModule.parse(req.body.link, true);
var fileName = urlObj.query.fileName;
if (!req.docManager.existsSync(req.docManager.storagePath(fileName, userAddress))) {
result({ "error": "File is not exist" });
return;
}
} else if (!!req.body.path) {
var fileName = fileUtility.getFileName(req.body.path);
if (!req.docManager.existsSync(req.docManager.storagePath(fileName, userAddress))) {
result({ "error": "File is not exist" });
return;
}
}
if (!fileName) {
result({ "error": "File is not found" });
return;
}
result({
key: req.docManager.getKey(fileName),
url: req.docManager.getDownloadUrl(fileName, true),
directUrl: req.docManager.getDownloadUrl(fileName),
referenceData: {
fileId: JSON.stringify({ fileName: fileName, userAddress: req.docManager.curUserHostAddress()}),
portalName: req.docManager.getServerUrl()
},
link: req.docManager.getServerUrl() + "/editor?fileName=" + encodeURIComponent(fileName),
path: fileName,
});
});
app.post("/track", async function (req, res) { // define a handler for tracking file changes
req.docManager = new docManager(req, res);
@ -779,6 +849,11 @@ app.get("/editor", function (req, res) { // define a handler for editing docume
}
}
var referenceData = {
fileId: JSON.stringify({ fileName: fileName, userAddress: req.docManager.curUserHostAddress()}),
portalName: req.docManager.getServerUrl()
};
var templatesImageUrl = req.docManager.getTemplateImageUrl(fileUtility.getFileType(fileName));
var createUrl = req.docManager.getCreateUrl(fileUtility.getFileType(fileName), userid, type, lang);
var templates = [
@ -945,7 +1020,8 @@ app.get("/editor", function (req, res) { // define a handler for editing docume
fileChoiceUrl: fileChoiceUrl,
submitForm: submitForm,
plugins: JSON.stringify(plugins),
actionData: actionData
actionData: actionData,
referenceData: userid != "uid-0" ? referenceData : null
},
history: history,
historyData: historyData,

View File

@ -22,6 +22,7 @@
"commentGroups": <%- editor.commentGroups %>,
"userInfoGroups": <%- editor.userInfoGroups %>
},
"referenceData": <%- JSON.stringify(editor.referenceData) %>,
"title": "<%- file.name %>",
"url": "<%- file.uri %>"
},

View File

@ -151,6 +151,20 @@
innerAlert("onRequestSendNotify: " + data);
};
var onRequestReferenceData = function(event) { // user refresh external data source
innerAlert("onRequestReferenceData");
innerAlert(event.data);
let xhr = new XMLHttpRequest();
xhr.open("POST", "reference");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify(event.data));
xhr.onload = function () {
innerAlert(xhr.responseText);
docEditor.setReferenceData(JSON.parse(xhr.responseText));
}
};
var onRequestSaveAs = function (event) { // the user is trying to save file by clicking Save Copy as... button
var title = event.data.title;
var url = event.data.url;
@ -209,6 +223,7 @@
config.events.onRequestRename = onRequestRename;
config.events.onRequestUsers = onRequestUsers;
config.events.onRequestSendNotify = onRequestSendNotify;
config.events.onRequestReferenceData = onRequestReferenceData;
}
if (config.editorConfig.createUrl) {