mirror of
https://github.com/ONLYOFFICE/document-server-integration.git
synced 2026-04-07 14:06:11 +08:00
445 lines
33 KiB
Plaintext
445 lines
33 KiB
Plaintext
<%@ Page Title="ONLYOFFICE" Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
|
|
|
|
<%@ Import Namespace="System.IO" %>
|
|
<%@ Import Namespace="System.Web.Configuration" %>
|
|
<%@ Import Namespace="OnlineEditorsExampleMVC.Helpers" %>
|
|
<%@ Import Namespace="OnlineEditorsExampleMVC.Models" %>
|
|
<%@ Import Namespace="System.Collections.Generic" %>
|
|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
|
|
<html lang="en">
|
|
<head runat="server">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
<meta name="viewport" content="width=device-width" />
|
|
<meta name="server-version" content=<%= DocManagerHelper.GetVersion() %> />
|
|
<!--
|
|
*
|
|
* (c) Copyright Ascensio System SIA 2025
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
-->
|
|
<title>ONLYOFFICE</title>
|
|
|
|
<link href="<%: Url.Content("~/favicon.ico") %>" rel="shortcut icon" type="image/x-icon" />
|
|
|
|
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Open+Sans:900,800,700,600,500,400,300&subset=latin,cyrillic-ext,cyrillic,latin-ext" />
|
|
|
|
<%: Styles.Render("~/Content/css") %>
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<div class="center main-nav">
|
|
<a href="./">
|
|
<img src ="content/images/logo.svg" alt="ONLYOFFICE" />
|
|
</a>
|
|
</div>
|
|
<menu class="responsive-nav">
|
|
<li>
|
|
<a href="#" onclick="toggleSidePanel(event)">
|
|
<img src="content/images/mobile-menu.svg" alt="ONLYOFFICE" />
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="./">
|
|
<img src ="content/images/mobile-logo.svg" alt="ONLYOFFICE" />
|
|
</a>
|
|
</li>
|
|
</menu>
|
|
</header>
|
|
|
|
<div class="center main">
|
|
<table class="table-main">
|
|
<tbody>
|
|
<tr>
|
|
<td class="left-panel section">
|
|
<div class="help-block">
|
|
<span>Create new</span>
|
|
<div class="clearFix">
|
|
<div class="create-panel">
|
|
<ul class="try-editor-list clearFix" data-link="<%= Url.Action("sample", "Home") %>">
|
|
<li>
|
|
<a class="try-editor word" data-type="docx">Document</a>
|
|
</li>
|
|
<li>
|
|
<a class="try-editor cell" data-type="xlsx">Spreadsheet</a>
|
|
</li>
|
|
<li>
|
|
<a class="try-editor slide" data-type="pptx">Presentation</a>
|
|
</li>
|
|
<li>
|
|
<a class="try-editor form" data-type="pdf">PDF form</a>
|
|
</li>
|
|
</ul>
|
|
<label class="side-option">
|
|
<input id="createSample" class="checkbox" type="checkbox" />With sample content
|
|
</label>
|
|
</div>
|
|
|
|
<div class="upload-panel clearFix">
|
|
<a class="file-upload">Upload file
|
|
<input type="file" id="fileupload" name="files[]" data-url="<%= Url.Content("~/webeditor.ashx?type=upload") %>" />
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<table class="user-block-table" cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="middle">
|
|
<span class="select-user">Username</span>
|
|
<img id="info" class="info" src="content/images/info.svg" />
|
|
<select class="select-user" id="user">
|
|
<% foreach (User user in Users.getAllUsers())
|
|
{ %>
|
|
<option value="<%= user.id %>"><%= user.name.IsEmpty() ? "Anonymous" : user.name %></option>
|
|
<% } %>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="middle">
|
|
<span class="select-user">Language</span>
|
|
<img class="info info-tooltip" data-id="language"
|
|
data-tooltip="Choose the language for ONLYOFFICE editors interface"
|
|
src="content/images/info.svg" />
|
|
<select class="select-user" id="language">
|
|
<% Dictionary<string, string> languages = DocManagerHelper.GetLanguages();
|
|
foreach (var lang in languages)
|
|
{ %>
|
|
<option value="<%= lang.Key %>"><%= lang.Value %></option>
|
|
<% } %>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="middle">
|
|
<label class="side-option">
|
|
<input id="directUrl" type="checkbox" class="checkbox" />Try opening on client
|
|
<img id="directUrlInfo" class="info info-tooltip" data-id="directUrlInfo" data-tooltip="Some files can be opened in the user's browser without connecting to the document server." src="content/images/info.svg" />
|
|
</label>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<button class="mobile-close-btn" onclick="toggleSidePanel(event)">
|
|
<img src="content/images/close.svg" alt="">
|
|
</button>
|
|
</td>
|
|
<td class="section">
|
|
<div class="main-panel">
|
|
<menu class="links">
|
|
<li class="home-link active" >
|
|
<a href="./">
|
|
<img src="content/images/home.svg" alt="Home"/>
|
|
</a>
|
|
</li>
|
|
<% if (bool.Parse(WebConfigurationManager.AppSettings["enable-forgotten"])) { %>
|
|
<li>
|
|
<a href="/Forgotten">Forgotten files</a>
|
|
</li>
|
|
<% } %>
|
|
</menu>
|
|
<% var storedFiles = DocManagerHelper.GetStoredFiles(); %>
|
|
<div id="portal-info" style="display: <%= storedFiles.Any() ? "none" : "table-cell" %>">
|
|
<span class="portal-name">Welcome to ONLYOFFICE Docs!</span>
|
|
<span class="portal-descr">Get started with a live demo of ONLYOFFICE Docs, a powerful open-source office suite for your browser.</span>
|
|
<span class="portal-descr">
|
|
You can test editing features in real-time and explore multi-user collaboration:
|
|
<ul>
|
|
<li>Create a new Document, Spreadsheet, Presentation, or PDF Form or use the sample files</li>
|
|
<li>Upload your own files to test using the Upload file button</li>
|
|
<li>Select your username and language to simulate different users and environments</li>
|
|
<li>Try real-time collaboration by opening the same document using different users in different Web browser sessions</li>
|
|
</ul>
|
|
</span>
|
|
<span class="portal-descr">⚠️ This example is intended for testing purposes only. Do not use it on a production server without proper code modifications. If you have enabled this test demo, please disable it before deploying the editors in production.</span>
|
|
<% foreach (User user in Users.getAllUsers())
|
|
{ %>
|
|
<div class="user-descr" onclick="toggleUserDescr(event)">
|
|
<b><%= user.name.IsEmpty() ? "Anonymous" : user.name %></b>
|
|
<ul>
|
|
<% foreach (string description in user.descriptions)
|
|
{ %>
|
|
<li><%= description %></li>
|
|
<% } %>
|
|
</ul>
|
|
</div>
|
|
<% } %>
|
|
</div>
|
|
<%
|
|
if (storedFiles.Any())
|
|
{ %>
|
|
<div class="stored-list">
|
|
<div class="storedHeader">
|
|
<div class="storedHeaderText">
|
|
<span class="header-list">Your documents</span>
|
|
</div>
|
|
<div class="storedHeaderClearAll">
|
|
<div class="clear-all">Clear all</div>
|
|
</div>
|
|
</div>
|
|
<table class="tableHeader" cellspacing="0" cellpadding="0" width="100%">
|
|
<thead>
|
|
<tr>
|
|
<td class="tableHeaderCell tableHeaderCellFileName">Filename</td>
|
|
<td class="tableHeaderCell tableHeaderCellEditors contentCells-shift">Editors</td>
|
|
<td class="tableHeaderCell tableHeaderCellViewers">Viewers</td>
|
|
<td class="tableHeaderCell tableHeaderCellAction">Action</td>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
<div class="scroll-table-body">
|
|
<table cellspacing="0" cellpadding="0" width="100%">
|
|
<tbody>
|
|
<% foreach (var storedFile in storedFiles)
|
|
{
|
|
var isEnabledDirectUrl = DocManagerHelper.GetDirectUrl();
|
|
var editUrl = "doceditor.aspx?fileID=" + HttpUtility.UrlEncode(storedFile.Name);
|
|
var docType = FileUtility.GetFileType(storedFile.Name).ToString().ToLower();
|
|
var ext = Path.GetExtension(storedFile.Name).ToLower();
|
|
var canEdit = DocManagerHelper.EditedExts.Contains(ext);
|
|
var isFillFormDoc = DocManagerHelper.FillFormExts.Contains(ext);
|
|
%>
|
|
|
|
<tr class="tableRow" title="<%= storedFile.Name %> [<%= DocManagerHelper.GetFileVersion(storedFile.Name, HttpContext.Current.Request.UserHostAddress.Replace(':', '_')) %>]">
|
|
<td class="contentCells">
|
|
<a class="stored-edit <%= docType %>" href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, directUrl = isEnabledDirectUrl }) %>" target="_blank">
|
|
<span><%= storedFile.Name %></span>
|
|
</a>
|
|
</td>
|
|
<% if (canEdit) { %>
|
|
<td class="contentCells contentCells-icon">
|
|
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "edit", directUrl = isEnabledDirectUrl }) %>" target="_blank">
|
|
<img src="content/images/desktop.svg" alt="Open in editor for full size screens" title="Open in editor for full size screens"/>
|
|
</a>
|
|
</td>
|
|
<td class="contentCells contentCells-icon">
|
|
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "mobile", editorsMode = "edit", directUrl = isEnabledDirectUrl }) %>" target="_blank">
|
|
<img src="content/images/mobile.svg" alt="Open in editor for mobile devices" title="Open in editor for mobile devices"/>
|
|
</a>
|
|
</td>
|
|
<% if (docType != "pdf") { %>
|
|
<td class="contentCells contentCells-icon">
|
|
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "comment", directUrl = isEnabledDirectUrl }) %>" target="_blank">
|
|
<img src="content/images/comment.svg" alt="Open in editor for comment" title="Open in editor for comment"/>
|
|
</a>
|
|
</td>
|
|
<% } %>
|
|
<% if (docType == "word") { %>
|
|
<td class="contentCells contentCells-icon">
|
|
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "review", directUrl = isEnabledDirectUrl }) %>" target="_blank">
|
|
<img src="content/images/review.svg" alt="Open in editor for review" title="Open in editor for review"/>
|
|
</a>
|
|
</td>
|
|
<% } else if (docType == "cell") { %>
|
|
<td class="contentCells contentCells-icon">
|
|
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "filter", directUrl = isEnabledDirectUrl }) %>" target="_blank">
|
|
<img src="content/images/filter.svg" alt="Open in editor without access to change the filter" title="Open in editor without access to change the filter" />
|
|
</a>
|
|
</td>
|
|
<% } %>
|
|
<% if (docType == "word") { %>
|
|
<td class="contentCells contentCells-icon">
|
|
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "blockcontent", directUrl = isEnabledDirectUrl }) %>" target="_blank">
|
|
<img src="content/images/block-content.svg" alt="Open in editor without content control modification" title="Open in editor without content control modification"/>
|
|
</a>
|
|
</td>
|
|
<% } else { %>
|
|
<td class="contentCells contentCells-icon"></td>
|
|
<% } %>
|
|
<% if (docType != "word" && docType != "cell") { %>
|
|
<td class="contentCells contentCells-icon "></td>
|
|
<% } %>
|
|
<% if (isFillFormDoc) { %>
|
|
<td class="contentCells contentCells-shift contentCells-icon firstContentCellShift">
|
|
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "fillForms", directUrl = isEnabledDirectUrl }) %>" target="_blank">
|
|
<img src="content/images/fill-forms.svg" alt="Open in editor for filling in forms" title="Open in editor for filling in forms"/>
|
|
</a>
|
|
</td>
|
|
<% } else { %>
|
|
<td class="contentCells contentCells-shift contentCells-icon firstContentCellShift"></td>
|
|
<% } %>
|
|
<% } else if (isFillFormDoc) { %>
|
|
<td class="contentCells contentCells-icon "></td>
|
|
<td class="contentCells contentCells-icon">
|
|
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "mobile", editorsMode = "fillForms", directUrl = isEnabledDirectUrl }) %>" target="_blank">
|
|
<img src="content/images/mobile-fill-forms.svg" alt="Open in editor for filling in forms for mobile devices" title="Open in editor for filling in forms for mobile devices"/>
|
|
</a>
|
|
</td>
|
|
<td class="contentCells contentCells-icon "></td>
|
|
<td class="contentCells contentCells-icon "></td>
|
|
<td class="contentCells contentCells-icon "></td>
|
|
<td class="contentCells contentCells-shift contentCells-icon firstContentCellShift">
|
|
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "fillForms", directUrl = isEnabledDirectUrl }) %>" target="_blank">
|
|
<img src="content/images/fill-forms.svg" alt="Open in editor for filling in forms" title="Open in editor for filling in forms"/>
|
|
</a>
|
|
</td>
|
|
<% } else { %>
|
|
<td class="contentCells contentCells-shift contentCells-icon contentCellsEmpty" colspan="6"></td>
|
|
<% } %>
|
|
<td class="contentCells contentCells-icon firstContentCellViewers">
|
|
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "view", directUrl = isEnabledDirectUrl }) %>" target="_blank">
|
|
<img src="content/images/desktop.svg" alt="Open in viewer for full size screens" title="Open in viewer for full size screens"/>
|
|
</a>
|
|
</td>
|
|
<td class="contentCells contentCells-icon">
|
|
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "mobile", editorsMode = "view", directUrl = isEnabledDirectUrl }) %>" target="_blank">
|
|
<img src="content/images/mobile.svg" alt="Open in viewer for mobile devices" title="Open in viewer for mobile devices"/>
|
|
</a>
|
|
</td>
|
|
<td class="contentCells contentCells-icon contentCells-shift">
|
|
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "embedded", editorsMode = "embedded", directUrl = isEnabledDirectUrl }) %>" target="_blank">
|
|
<img src="content/images/embeded.svg" alt="Open in embedded mode" title="Open in embedded mode"/>
|
|
</a>
|
|
</td>
|
|
<% if (docType != null ) { %>
|
|
<td class="contentCells contentCells-icon">
|
|
<a class="convert-file" data="<%= storedFile.Name %>" data-type="<%= docType %>">
|
|
<img class="icon-action" src="content/images/convert.svg" alt="Convert" title="Convert" /></a>
|
|
</td>
|
|
<% } else { %>
|
|
<td class="contentCells contentCells-icon downloadContentCellShift"></td>
|
|
<% } %>
|
|
<td class="contentCells contentCells-icon downloadContentCellShift">
|
|
<a href="webeditor.ashx?type=download&fileName=<%= HttpUtility.UrlEncode(storedFile.Name) %>">
|
|
<img class="icon-download" src="content/images/download.svg" alt="Download" title="Download" />
|
|
</a>
|
|
</td>
|
|
<td class="contentCells contentCells-icon contentCells-shift">
|
|
<a class="delete-file" data-filename="<%= storedFile.Name %>">
|
|
<img class="icon-action" src="content/images/delete.svg" alt="Delete" title="Delete" />
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
<% } %>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<% } %>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div id="mainProgress">
|
|
<div id="uploadSteps">
|
|
<span id="uploadFileName" class="uploadFileName"></span>
|
|
<div class="describeUpload">After these steps are completed, you can work with your document.</div>
|
|
<span id="step1" class="step">1. Loading the file.</span>
|
|
<span class="step-descr">The loading speed depends on file size and additional elements it contains.</span>
|
|
<div id="select-file-type" class="invisible">
|
|
<br />
|
|
<span class="step">Please select the current document type</span>
|
|
<div class="buttonsMobile indent">
|
|
<div class="button file-type document" data="docx">Document</div>
|
|
<div class="button file-type spreadsheet" data="xlsx">Spreadsheet</div>
|
|
<div class="button file-type presentation" data="pptx">Presentation</div>
|
|
</div>
|
|
</div>
|
|
<br />
|
|
<span id="step2" class="step">2. Conversion.</span>
|
|
<span class="step-descr">The file is converted to OOXML so that you can edit it.</span>
|
|
<br />
|
|
<div id="blockPassword">
|
|
<span class="descrFilePass">The file is password protected.</span>
|
|
<br />
|
|
<div>
|
|
<input id="filePass" type="password"/>
|
|
<div id="enterPass" class="button orange">Enter</div>
|
|
<div id="skipPass" class="button gray">Skip</div>
|
|
</div>
|
|
<span class="errorPass"></span>
|
|
<br />
|
|
</div>
|
|
<input type="hidden" name="hiddenFileName" id="hiddenFileName" />
|
|
<span class="progress-descr">Note the speed of all operations depends on your connection quality and server location.</span>
|
|
<br />
|
|
<div class="error-message">
|
|
<b>Upload error: </b><span></span>
|
|
<br />
|
|
Please select another file and try again.
|
|
</div>
|
|
</div>
|
|
<iframe id="embeddedView" src="" height="345px" width="432px" frameborder="0" scrolling="no" allowtransparency></iframe>
|
|
<br />
|
|
<div class="buttonsMobile">
|
|
<div id="beginEdit" class="button orange disable">Edit</div>
|
|
<div id="beginView" class="button gray disable">View</div>
|
|
<div id="beginEmbedded" class="button gray disable">Embedded view</div>
|
|
<div id="cancelEdit" class="button gray">Cancel</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="convertingProgress">
|
|
<div id="convertingSteps">
|
|
<span id="convertFileName" class="convertFileName"></span>
|
|
<span id="convertStep1" class="step">1. Select a format file to convert</span>
|
|
<span class="step-descr">The converting speed depends on file size and additional elements it contains.</span>
|
|
<table cellspacing="0" cellpadding="0" width="100%" class="convertTable">
|
|
<tbody>
|
|
<tr class="typeButtonsRow" id="convTypes"></tr>
|
|
</tbody>
|
|
</table>
|
|
<br />
|
|
<span id="convertStep2" class="step">2. File conversion</span>
|
|
<span class="step-descr disable" id="convert-descr">The file is converted <div class="convertPercent" id="convertPercent">0 %</div></span>
|
|
<span class="step-error hidden" id="convert-error"></span>
|
|
<div class="describeUpload">Note the speed of all operations depends on your connection quality and server location.</div>
|
|
<input type="hidden" name="hiddenFileName" id="hiddenFileName" />
|
|
</div>
|
|
<br />
|
|
<div class="buttonsMobile">
|
|
<div id="downloadConverted" class="button converting orange disable">DOWNLOAD</div>
|
|
<div id="beginViewConverted" class="button converting wide gray disable">VIEW</div>
|
|
<div id="beginEditConverted" class="button converting wide gray disable">EDIT</div>
|
|
<div id="cancelEdit" class="button converting gray">CANCEL</div>
|
|
</div>
|
|
</div>
|
|
|
|
<iframe id="iframeScripts" src="<%= WebConfigurationManager.AppSettings["files.docservice.url.site"] + WebConfigurationManager.AppSettings["files.docservice.url.preloader"] %>" width=1 height=1 style="position: absolute; visibility: hidden; top: 0;" ></iframe>
|
|
|
|
<footer>
|
|
<div class="center">
|
|
<table>
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<a href="https://api.onlyoffice.com/docs/docs-api/get-started/how-it-works/" target="_blank">API Documentation</a>
|
|
</td>
|
|
<td>
|
|
<a href="mailto:sales@onlyoffice.com">Submit your request</a>
|
|
</td>
|
|
<td class="copy">
|
|
© Ascensio System SIA <%= DateTime.Now.Year.ToString() %>. All rights reserved.
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</footer>
|
|
|
|
<%: Scripts.Render("~/bundles/jquery", "~/bundles/scripts") %>
|
|
|
|
<script language="javascript" type="text/javascript">
|
|
var UrlConverter = '<%= Url.Content("~/webeditor.ashx?type=convert") %>';
|
|
var UrlEditor = '<%= Url.Action("editor", "Home") %>';
|
|
</script>
|
|
</body>
|
|
</html>
|