Compare commits

..

13 Commits

Author SHA1 Message Date
c344a1d6a6 Merge branch 'feature/referenceData' into release/v7.3.0
# Conflicts:
#	web/documentserver-example/nodejs/app.js
#	web/documentserver-example/nodejs/views/config.ejs
2022-12-15 17:24:42 +03:00
a53f36eca3 nodejs: referenceData 2022-12-15 17:22:30 +03:00
4882459f51 Merge branch 'feature/referenceData' into release/v7.3.0
# Conflicts:
#	web/documentserver-example/nodejs/app.js
2022-12-13 16:28:15 +03:00
0a0f5b556c nodejs: referenceData 2022-12-13 16:27:18 +03:00
2502c2a979 Merge branch 'develop' into release/v7.3.0 2022-12-12 17:31:17 +03:00
be85920ce4 nodejs: rename wopi icons 2022-12-12 17:30:24 +03:00
7d7c10b3bc nodejs: update wopi editnew icon 2022-12-12 17:26:34 +03:00
1cbc6eca2e nodejs: wopi embedview icon 2022-12-12 17:25:10 +03:00
d007b0a969 Merge remote-tracking branch 'remotes/origin/develop' into release/v7.3.0 2022-12-09 14:34:36 +03:00
63f032d924 nodejs: revert editnew for existing file (ee46a77684) 2022-12-09 14:34:19 +03:00
820cafe202 Merge remote-tracking branch 'remotes/origin/develop' into release/v7.3.0 2022-12-09 11:24:36 +03:00
e0d7e416d3 nodejs: format condition 2022-12-09 11:23:33 +03:00
806aba967c csharp: replace equal("") 2022-12-09 10:45:41 +03:00
15 changed files with 65 additions and 60 deletions

View File

@ -1,5 +1,6 @@
# Change Log
- nodejs: wopi editnew action for exisiting file
- nodejs: fix wopi actions after restart
- setting an unavailable language
- description in the tooltip on the main page

View File

@ -130,7 +130,7 @@ namespace OnlineEditorsExampleMVC.Helpers
var payloadToken = JwtManager.Encode(payload); // encode the payload object to the payload token
var bodyToken = JwtManager.Encode(body); // encode the body object to the body token
// create header token
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
request.Headers.Add(JWTheader, "Bearer " + payloadToken);
body.Add("token", bodyToken);

View File

@ -55,7 +55,7 @@ namespace OnlineEditorsExampleMVC.Helpers
// check if the document token is enabled
if (JwtManager.Enabled)
{
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string token = null;
@ -92,7 +92,7 @@ namespace OnlineEditorsExampleMVC.Helpers
// file saving process
public static int processSave(Dictionary<string, object> fileData, string fileName, string userAddress)
{
if (fileData["url"].Equals(null)) {
if (string.IsNullOrEmpty((string)fileData["url"])) {
throw new Exception("DownloadUrl is null");
}
var downloadUri = (string)fileData["url"];
@ -169,7 +169,7 @@ namespace OnlineEditorsExampleMVC.Helpers
// file force saving process
public static int processForceSave(Dictionary<string, object> fileData, string fileName, string userAddress)
{
if (fileData["url"].Equals(null)) {
if ( string.IsNullOrEmpty((string)fileData["url"])) {
throw new Exception("DownloadUrl is null");
}
var downloadUri = (string)fileData["url"];
@ -228,7 +228,7 @@ namespace OnlineEditorsExampleMVC.Helpers
fileName = DocManagerHelper.GetCorrectName(Path.GetFileNameWithoutExtension(fileName) + downloadExt, userAddress);
}
forcesavePath = DocManagerHelper.ForcesavePath(fileName, userAddress, false);
if (forcesavePath.Equals("")) // create forcesave path if it doesn't exist
if (string.IsNullOrEmpty(forcesavePath)) // create forcesave path if it doesn't exist
{
forcesavePath = DocManagerHelper.ForcesavePath(fileName, userAddress, true);
}
@ -279,7 +279,7 @@ namespace OnlineEditorsExampleMVC.Helpers
var payloadToken = JwtManager.Encode(payload); // encode a payload object into a header token
var bodyToken = JwtManager.Encode(body); // encode body into a body token
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
request.Headers.Add(JWTheader, "Bearer " + payloadToken); // add a header Authorization with a header token and Authorization prefix in it
body.Add("token", bodyToken);

View File

@ -463,13 +463,13 @@ namespace OnlineEditorsExampleMVC
if (JwtManager.Enabled && isEmbedded == null)
{
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
if (context.Request.Headers.AllKeys.Contains(JWTheader, StringComparer.InvariantCultureIgnoreCase))
{
var headerToken = context.Request.Headers.Get(JWTheader).Substring("Bearer ".Length);
string token = JwtManager.Decode(headerToken);
if (token == null || token.Equals(""))
if (string.IsNullOrEmpty(token))
{
context.Response.StatusCode = (int)HttpStatusCode.Forbidden;
context.Response.Write("JWT validation failed");
@ -479,7 +479,7 @@ namespace OnlineEditorsExampleMVC
}
var filePath = DocManagerHelper.ForcesavePath(fileName, userAddress, false); // get the path to the force saved document version
if (filePath.Equals(""))
if (string.IsNullOrEmpty(filePath))
{
filePath = DocManagerHelper.StoragePath(fileName, userAddress); // or to the original document
}
@ -520,14 +520,14 @@ namespace OnlineEditorsExampleMVC
if (JwtManager.Enabled)
{
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
if (context.Request.Headers.AllKeys.Contains(JWTheader, StringComparer.InvariantCultureIgnoreCase))
{
var headerToken = context.Request.Headers.Get(JWTheader).Substring("Bearer ".Length);
string token = JwtManager.Decode(headerToken);
if (token == null || token.Equals(""))
if (string.IsNullOrEmpty(token))
{
context.Response.StatusCode = (int)HttpStatusCode.Forbidden;
context.Response.Write("JWT validation failed");

View File

@ -132,7 +132,7 @@ namespace ASC.Api.DocumentConverter
var payloadToken = JwtManager.Encode(payload); // encode the payload object to the payload token
var bodyToken = JwtManager.Encode(body); // encode the body object to the body token
// create header token
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
request.Headers.Add(JWTheader, "Bearer " + payloadToken); // and add it to the request headers with the Bearer prefix
body.Add("token", bodyToken);

View File

@ -57,7 +57,7 @@ namespace OnlineEditorsExample
// check if the document token is enabled
if (JwtManager.Enabled)
{
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string token = null;
@ -76,7 +76,7 @@ namespace OnlineEditorsExample
context.Response.Write("{\"error\":1,\"message\":\"JWT expected\"}");
}
if (token != null && !token.Equals("")) // invalid signature error
if (!string.IsNullOrEmpty(token)) // invalid signature error
{
fileData = jss.Deserialize<Dictionary<string, object>>(token);
if (fileData.ContainsKey("payload"))
@ -160,7 +160,7 @@ namespace OnlineEditorsExample
File.WriteAllText(Path.Combine(versionDir, "key.txt"), (string)fileData["key"]); // write the key value to the key.txt file
string forcesavePath = _Default.ForcesavePath(newFileName, userAddress, false); // get the path to the forcesaved file version
if (!forcesavePath.Equals("")) // if the forcesaved file version exists
if (!string.IsNullOrEmpty(forcesavePath)) // if the forcesaved file version exists
{
File.Delete(forcesavePath); // remove it
}
@ -231,7 +231,7 @@ namespace OnlineEditorsExample
}
forcesavePath = _Default.ForcesavePath(fileName, userAddress, false);
if (forcesavePath.Equals("")) // create forcesave path if it doesn't exist
if (string.IsNullOrEmpty(forcesavePath)) // create forcesave path if it doesn't exist
{
forcesavePath = _Default.ForcesavePath(fileName, userAddress, true);
}
@ -282,7 +282,7 @@ namespace OnlineEditorsExample
var payloadToken = JwtManager.Encode(payload); // encode a payload object into a header token
var bodyToken = JwtManager.Encode(body); // encode body into a body token
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
request.Headers.Add(JWTheader, "Bearer " + payloadToken); // add a header Authorization with a header token and Authorization prefix in it
body.Add("token", bodyToken);

View File

@ -283,14 +283,14 @@ namespace OnlineEditorsExample
if (JwtManager.Enabled && isEmbedded == null)
{
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
if (context.Request.Headers.AllKeys.Contains(JWTheader, StringComparer.InvariantCultureIgnoreCase))
{
var headerToken = context.Request.Headers.Get(JWTheader).Substring("Bearer ".Length);
string token = JwtManager.Decode(headerToken);
if (token == null || token.Equals(""))
if (string.IsNullOrEmpty(token))
{
context.Response.StatusCode = (int)HttpStatusCode.Forbidden;
context.Response.Write("JWT validation failed");
@ -300,7 +300,7 @@ namespace OnlineEditorsExample
}
var filePath = _Default.ForcesavePath(fileName, userAddress, false); // get the path to the force saved document version
if (filePath.Equals(""))
if (string.IsNullOrEmpty(filePath))
{
filePath = _Default.StoragePath(fileName, userAddress); // or to the original document
}
@ -340,14 +340,14 @@ namespace OnlineEditorsExample
if (JwtManager.Enabled)
{
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
if (context.Request.Headers.AllKeys.Contains(JWTheader, StringComparer.InvariantCultureIgnoreCase))
{
var headerToken = context.Request.Headers.Get(JWTheader).Substring("Bearer ".Length);
string token = JwtManager.Decode(headerToken);
if (token == null || token.Equals(""))
if (string.IsNullOrEmpty(token))
{
context.Response.StatusCode = (int)HttpStatusCode.Forbidden;
context.Response.Write("JWT validation failed");

View File

@ -481,30 +481,24 @@ app.post("/reference", function (req, res) { //define a handler for renaming fil
var referenceData = req.body.referenceData;
if (!!referenceData) {
var portalName = referenceData.portalName;
var instanceId = referenceData.instanceId;
if (portalName != req.docManager.getServerUrl()) {
result({ "error": "You do not have access to this site" });
return;
}
if (instanceId === req.docManager.getInstanceId()) {
var fileKey = JSON.parse(referenceData.fileKey);
var userAddress = fileKey.userAddress;
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;
if (userAddress === req.docManager.curUserHostAddress()
&& req.docManager.existsSync(req.docManager.storagePath(fileKey.fileName, userAddress))) {
var fileName = fileKey.fileName;
}
}
}
var fileName = fileId.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 && !!req.body.path) {
var path = fileUtility.getFileName(req.body.path);
if (req.docManager.existsSync(req.docManager.storagePath(path, userAddress))) {
fileName = path;
}
}
@ -517,8 +511,8 @@ app.post("/reference", function (req, res) { //define a handler for renaming fil
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()
fileKey: JSON.stringify({ fileName: fileName, userAddress: req.docManager.curUserHostAddress()}),
instanceId: req.docManager.getServerUrl()
},
path: fileName,
});
@ -834,11 +828,6 @@ 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 type = req.query.type || ""; // type: embedded/mobile/desktop
if (type == "") {
type = new RegExp(configServer.get("mobileRegEx"), "i").test(req.get('User-Agent')) ? "mobile" : "desktop";
@ -1006,7 +995,8 @@ app.get("/editor", function (req, res) { // define a handler for editing docume
submitForm: submitForm,
plugins: JSON.stringify(plugins),
actionData: actionData,
referenceData: userid != "uid-0" ? referenceData : null
fileKey: userid != "uid-0" ? JSON.stringify({ fileName: fileName, userAddress: req.docManager.curUserHostAddress()}) : null,
instanceId: userid != "uid-0" ? req.docManager.getInstanceId() : null
},
history: history,
historyData: historyData,

View File

@ -496,5 +496,9 @@ docManager.prototype.getFilesInfo = function (fileId) {
else return responseArray;
};
docManager.prototype.getInstanceId = function () {
return this.getServerUrl();
};
// save all the functions to the docManager module to export it later in other files
module.exports = docManager;

View File

Before

Width:  |  Height:  |  Size: 316 B

After

Width:  |  Height:  |  Size: 316 B

View File

@ -0,0 +1,5 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="10" height="2" rx="1" transform="matrix(1.19249e-08 -1 -1 -1.19249e-08 13 13)" fill="#444444"/>
<path d="M6.57692 19.6154C6.30247 20.2741 6.78642 21 7.5 21H16.5C17.2136 21 17.6975 20.2741 17.4231 19.6154L15.7564 15.6154C15.6011 15.2427 15.237 15 14.8333 15H9.16667C8.76297 15 8.39886 15.2427 8.24359 15.6154L6.57692 19.6154Z" fill="#444444"/>
<path d="M15 14C15 13.2044 14.6839 12.4413 14.1213 11.8787C13.5587 11.3161 12.7956 11 12 11C11.2044 11 10.4413 11.3161 9.87868 11.8787C9.31607 12.4413 9 13.2044 9 14L12 14H15Z" fill="#444444"/>
</svg>

After

Width:  |  Height:  |  Size: 653 B

View File

@ -0,0 +1,6 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.326 18.6739C13.8912 18.2391 13.8912 17.5342 14.326 17.0994L20.0993 11.3261C20.5341 10.8913 21.239 10.8913 21.6738 11.3261C22.1086 11.7609 22.1086 12.4658 21.6738 12.9006L15.9006 18.6739C15.4658 19.1087 14.7608 19.1087 14.326 18.6739Z" fill="#444444"/>
<path d="M14.326 5.3261C14.7608 4.8913 15.4658 4.8913 15.9006 5.3261L21.6738 11.0994C22.1086 11.5342 22.1086 12.2391 21.6738 12.6739C21.239 13.1087 20.5341 13.1087 20.0993 12.6739L14.326 6.90063C13.8912 6.46583 13.8912 5.76089 14.326 5.3261Z" fill="#444444"/>
<path d="M9.67385 5.3261C10.1086 5.76089 10.1086 6.46583 9.67385 6.90063L3.90061 12.6739C3.46582 13.1087 2.76088 13.1087 2.32609 12.6739C1.8913 12.2391 1.8913 11.5342 2.32609 11.0994L8.09933 5.3261C8.53412 4.8913 9.23905 4.8913 9.67385 5.3261Z" fill="#444444"/>
<path d="M9.67385 18.6739C9.23905 19.1087 8.53412 19.1087 8.09933 18.6739L2.32609 12.9006C1.8913 12.4658 1.8913 11.7609 2.32609 11.3261C2.76088 10.8913 3.46582 10.8913 3.90061 11.3261L9.67385 17.0994C10.1086 17.5342 10.1086 18.2391 9.67385 18.6739Z" fill="#444444"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 838 B

After

Width:  |  Height:  |  Size: 838 B

View File

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

View File

@ -158,15 +158,11 @@
<% if (storedFiles[i].actions && storedFiles[i].actions.length > 0) { %>
<td class="contentCells contentCells-wopi contentCells-shift">
<% for (var j = 0; j < storedFiles[i].actions.length; j++) { %>
<% if (storedFiles[i].actions[j].name != "editnew") { %>
<a href="<%= serverUrl %>/wopi-action/<%= encodeURIComponent(storedFiles[i].name) %>?action=<%= storedFiles[i].actions[j].name %><%= params %>" target="_blank">
<% if (storedFiles[i].actions[j].name == "edit") { %>
<img src="images/editor.svg" alt="<%= storedFiles[i].actions[j].name %>" title="<%= storedFiles[i].actions[j].name %>" />
<%} else { %>
<img src="images/view.svg" alt="<%= storedFiles[i].actions[j].name %>" title="<%= storedFiles[i].actions[j].name %>" />
<% } %>
</a>
<% } %>
<a href="<%= serverUrl %>/wopi-action/<%= encodeURIComponent(storedFiles[i].name) %>?action=<%= storedFiles[i].actions[j].name %><%= params %>" target="_blank">
<img
src="images/wopi-<%= storedFiles[i].actions[j].name %>.svg"
alt="<%= storedFiles[i].actions[j].name %>" title="<%= storedFiles[i].actions[j].name %>" />
</a>
<% } %>
</td>
<% } %>