Files
document-server-integration/web/documentserver-example/csharp/DocEditor.aspx.cs
Sergey Linnik 0f549db065 csharp: format
2019-09-02 14:53:06 +03:00

198 lines
7.8 KiB
C#

/*
*
* (c) Copyright Ascensio System SIA 2019
*
* The MIT License (MIT)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*/
using System;
using System.Collections.Generic;
using System.IO;
using System.Web;
using System.Web.Configuration;
using System.Web.Script.Serialization;
using System.Web.UI;
using ASC.Api.DocumentConverter;
namespace OnlineEditorsExample
{
public partial class DocEditor : Page
{
public static string FileName;
public static string FileUri
{
get { return _Default.FileUri(FileName); }
}
protected string Key
{
get
{
return ServiceConverter.GenerateRevisionId(_Default.CurUserHostAddress(null)
+ "/" + Path.GetFileName(FileUri)
+ "/" + File.GetLastWriteTime(_Default.StoragePath(FileName, null)).GetHashCode());
}
}
protected string DocServiceApiUri
{
get { return WebConfigurationManager.AppSettings["files.docservice.url.api"] ?? string.Empty; }
}
protected string DocConfig { get; private set; }
public static string CallbackUrl
{
get
{
var callbackUrl = _Default.Host;
callbackUrl.Path =
HttpRuntime.AppDomainAppVirtualPath
+ (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/")
+ "webeditor.ashx";
callbackUrl.Query = "type=track"
+ "&fileName=" + HttpUtility.UrlEncode(FileName)
+ "&userAddress=" + HttpUtility.UrlEncode(HttpContext.Current.Request.UserHostAddress);
return callbackUrl.ToString();
}
}
protected void Page_Load(object sender, EventArgs e)
{
var externalUrl = Request["fileUrl"];
if (!string.IsNullOrEmpty(externalUrl))
{
FileName = _Default.DoUpload(externalUrl);
}
else
{
FileName = Request["fileID"];
}
var type = Request["type"];
if (!string.IsNullOrEmpty(type))
{
Try(type);
Response.Redirect("doceditor.aspx?fileID=" + HttpUtility.UrlEncode(FileName));
}
var ext = Path.GetExtension(FileName);
var config = new Dictionary<string, object>
{
{ "type", Request["action"] != "embedded" ? "desktop" : "embedded" },
{ "documentType", _Default.DocumentType(FileName) },
{
"document", new Dictionary<string, object>
{
{ "title", FileName },
{ "url", FileUri },
{ "fileType", ext.Trim('.') },
{ "key", Key },
{
"info", new Dictionary<string, object>
{
{ "author", "Me" },
{ "created", DateTime.Now.ToShortDateString() }
}
},
{
"permissions", new Dictionary<string, object>
{
{ "edit", _Default.EditedExts.Contains(ext) },
{ "download", true }
}
}
}
},
{
"editorConfig", new Dictionary<string, object>
{
{ "mode", _Default.EditMode && _Default.EditedExts.Contains(ext) && Request["action"] != "view" ? "edit" : "view" },
{ "lang", "en" },
{ "callbackUrl", CallbackUrl },
{
"user", new Dictionary<string, object>
{
{ "id", _Default.CurUserHostAddress(null) },
{ "name", "John Smith" }
}
},
{
"embedded", new Dictionary<string, object>
{
{ "saveUrl", FileUri },
{ "embedUrl", FileUri },
{ "shareUrl", FileUri },
{ "toolbarDocked", "top" }
}
},
{
"customization", new Dictionary<string, object>
{
{ "about", true },
{ "feedback", true },
{
"goback", new Dictionary<string, object>
{
{ "url", _Default.Host + "default.aspx" }
}
}
}
}
}
}
};
if (JwtManager.Enabled)
{
var token = JwtManager.Encode(config);
config.Add("token", token);
}
DocConfig = new JavaScriptSerializer().Serialize(config);
}
private static void Try(string type)
{
string ext;
switch (type)
{
case "document":
ext = ".docx";
break;
case "spreadsheet":
ext = ".xlsx";
break;
case "presentation":
ext = ".pptx";
break;
default:
return;
}
var demoName = "demo" + ext;
FileName = _Default.GetCorrectName(demoName);
File.Copy(HttpRuntime.AppDomainAppPath + "app_data/" + demoName, _Default.StoragePath(FileName, null));
}
}
}