Compare commits

...

36 Commits

Author SHA1 Message Date
7e26d068a5 php: review mode 2017-01-31 18:01:19 +03:00
13c8530cfd nodejs: review mode 2017-01-31 17:53:29 +03:00
c0f47f892b nodejs: using method getServerUrl 2017-01-31 16:51:28 +03:00
ca142cc2cd nodejs: response error 0 in all case 2017-01-19 12:39:32 +03:00
f8ebb4af10 add processing status 4 (closed without save) 2017-01-19 12:00:08 +03:00
4f21721901 change license to 2017 2017-01-18 10:46:50 +03:00
5ccef87a38 Fix Bug 33666 - user name is undefined 2017-01-10 11:40:15 +03:00
4ab35107d0 nodejs: POST for storage 2016-12-28 14:17:41 +03:00
1599022776 nodejs: POST for command 2016-12-28 14:02:07 +03:00
7b9e4e7fde c#: method POST since 4.2 2016-12-26 17:04:54 +03:00
a5703b663c nodejs: method POST since 4.2 2016-12-26 17:04:36 +03:00
4e7586cd2a php: method POST since 4.2 2016-12-26 17:04:19 +03:00
a6c74e62ca Fixed displaing mobile version. 2016-12-23 14:13:35 +03:00
cb5324381e Fixed displaing mobile version. 2016-12-23 13:55:01 +03:00
a255a21361 php: error without simpleXml 2016-12-07 16:44:20 +03:00
567d24e004 php: message about error on json parse 2016-12-07 16:09:17 +03:00
b52350ce75 php: default folder without IP 2016-12-07 15:13:48 +03:00
c319be9751 firstname & lastname replaced by name 2016-12-06 16:48:20 +03:00
4211056907 Fix Bug 33595 2016-12-05 17:41:43 +03:00
615e4b78bb hide ™ 2016-12-05 17:23:06 +03:00
65f973371c Merge pull request #19 from ONLYOFFICE/feature/php
Feature/php
2016-12-05 17:00:58 +03:00
73791ee71e php: user selector 2016-12-05 16:20:59 +03:00
cea433733f php: delete file 2016-12-05 15:22:05 +03:00
85e6de27d3 php: restyle create panel 2016-12-05 15:21:19 +03:00
a1adfd784f php: create empty file and with demo data 2016-12-05 14:21:54 +03:00
48ae10ca05 php: hide ™ 2016-12-05 13:59:49 +03:00
517bcec8cf php: reload page for update recent list 2016-12-05 13:59:09 +03:00
148cd92792 php: check file exists 2016-12-05 13:44:52 +03:00
7aca28cbca php: alone IP address 2016-12-05 13:18:47 +03:00
eac8c96d60 Merge tag 'v4.2.0' into develop
v4.2.0 v4.2.0
2016-12-05 11:39:34 +03:00
663fc997f1 Merge branch 'release/v4.2.0' 2016-12-05 11:39:33 +03:00
ab089e3052 php: change table recent files 2016-12-02 15:14:13 +03:00
4b1e588b07 php: logo as link 2016-12-02 14:12:58 +03:00
6826aea262 php: conversion from -x format after save 2016-12-02 14:05:11 +03:00
7b4e737139 php: some changes 2016-12-02 11:55:30 +03:00
ed58fc3ebd php: list recent opened files 2016-12-02 11:07:10 +03:00
87 changed files with 860 additions and 447 deletions

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2016 ONLYOFFICE
Copyright (c) 2017 ONLYOFFICE
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -26,6 +26,7 @@
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Configuration;
@ -213,20 +214,26 @@ namespace OnlineEditorsExampleMVC.Helpers
: documentRevisionId;
documentRevisionId = GenerateRevisionId(documentRevisionId);
var urlDocumentService = DocumentConverterUrl + ConvertParams;
var urlToConverter = String.Format(urlDocumentService,
HttpUtility.UrlEncode(documentUri),
toExtension.Trim('.'),
fromExtension.Trim('.'),
title,
documentRevisionId);
if (isAsync)
urlToConverter += "&async=true";
var req = (HttpWebRequest) WebRequest.Create(urlToConverter);
var req = (HttpWebRequest)WebRequest.Create(DocumentConverterUrl);
req.Method = "POST";
req.ContentType = "text/json";
req.Timeout = ConvertTimeout;
var bodyString = string.Format("{{\"async\": {0},\"filetype\": \"{1}\",\"key\": \"{2}\",\"outputtype\": \"{3}\",\"title\": \"{4}\",\"url\": \"{5}\"}}",
isAsync.ToString().ToLower(),
fromExtension.Trim('.'),
documentRevisionId,
toExtension.Trim('.'),
title,
documentUri);
var bytes = Encoding.UTF8.GetBytes(bodyString);
req.ContentLength = bytes.Length;
using (var requestStream = req.GetRequestStream())
{
requestStream.Write(bytes, 0, bytes.Length);
}
Stream stream = null;
var countTry = 0;
while (countTry < MaxTry)

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2016 ONLYOFFICE
Copyright (c) 2017 ONLYOFFICE
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,4 +1,4 @@
For the ONLYOFFICE<EFBFBD> Applications example to work properly you need to do the following:
For the ONLYOFFICE Applications example to work properly you need to do the following:
1. Download and extract the Example.zip into a directory selected for it, for instance, C:\OnlyofficeExample
@ -10,7 +10,7 @@ For the ONLYOFFICE
5. Make sure that the user account under which the IIS NetworkService process is executed has the write access rights for the C:\OnlyofficeExample\App_Data folder (this is significant for the IIS later than 6.0).
6. Make the created ONLYOFFICE<EFBFBD> Applications example available through IP or domain name so that it could be connected from the web by the document service for proper document rendering.
6. Make the created ONLYOFFIC<49> Applications example available through IP or domain name so that it could be connected from the web by the document service for proper document rendering.

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
<!--*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -23,7 +23,7 @@
*
*-->
<%@ Page Title="ONLYOFFICE" Language="C#" Inherits="System.Web.Mvc.ViewPage<OnlineEditorsExampleMVC.Models.FileModel>" %>
<%@ Page Title="ONLYOFFICE" Language="C#" Inherits="System.Web.Mvc.ViewPage<OnlineEditorsExampleMVC.Models.FileModel>" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Web.Configuration" %>
<%@ Import Namespace="OnlineEditorsExampleMVC.Helpers" %>
@ -36,7 +36,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width" />
<link rel="icon" href="~/favicon.ico" type="image/x-icon" />
<title><%= Model.FileName + " - ONLYOFFICE" %></title>
<title><%= Model.FileName + " - ONLYOFFICE" %></title>
<%: Styles.Render("~/Content/editor") %>
@ -112,8 +112,7 @@
user: {
id: "<%= DocManagerHelper.CurUserHostAddress() %>",
firstname: 'John',
lastname: 'Smith',
name: "John Smith",
},
embedded: {

View File

@ -1,6 +1,6 @@
<!--*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -23,7 +23,7 @@
*
*-->
<%@ Page Title="ONLYOFFICE" Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<%@ Page Title="ONLYOFFICE" Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<%@ Import Namespace="System.Web.Configuration" %>
<%@ Import Namespace="OnlineEditorsExampleMVC.Helpers" %>
@ -35,7 +35,7 @@
<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" />
<title>ONLYOFFICE</title>
<title>ONLYOFFICE</title>
<link href="<%: Url.Content("~/favicon.ico") %>" rel="shortcut icon" type="image/x-icon" />
@ -46,10 +46,10 @@
<body>
<div class="top-panel"></div>
<div class="main-panel">
<span class="portal-name">ONLYOFFICE Online Editors</span>
<span class="portal-name">ONLYOFFICE Online Editors</span>
<br />
<br />
<span class="portal-descr">Get started with a demo-sample of ONLYOFFICE Online Editors, the first html5-based editors. You may upload your own documents for testing using the "Choose file" button and selecting the necessary files on your PC.</span>
<span class="portal-descr">Get started with a demo-sample of ONLYOFFICE Online Editors, the first html5-based editors. You may upload your own documents for testing using the "Choose file" button and selecting the necessary files on your PC.</span>
<div class="file-upload button gray">
<span>Choose file</span>

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,4 +1,4 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="OnlineEditorsExample._Default" Title="ONLYOFFICE" %>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="OnlineEditorsExample._Default" Title="ONLYOFFICE" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Linq" %>
@ -9,7 +9,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ONLYOFFICE</title>
<title>ONLYOFFICE</title>
<link rel="icon" href="~/favicon.ico" type="image/x-icon" />
@ -43,10 +43,10 @@
<div class="top-panel"></div>
<div class="main-panel">
<span class="portal-name">ONLYOFFICE Online Editors</span>
<span class="portal-name">ONLYOFFICE Online Editors</span>
<br />
<br />
<span class="portal-descr">Get started with a demo-sample of ONLYOFFICE Online Editors, the first html5-based editors. You may upload your own documents for testing using the "Choose file" button and selecting the necessary files on your PC.</span>
<span class="portal-descr">Get started with a demo-sample of ONLYOFFICE Online Editors, the first html5-based editors. You may upload your own documents for testing using the "Choose file" button and selecting the necessary files on your PC.</span>
<div class="file-upload button gray">
<span>Choose file</span>
@ -99,7 +99,7 @@
if (examples.Any())
{ %>
<br />
Download the code for the sample of ONLYOFFICE Online Editors to find out the details.
Download the code for the sample of ONLYOFFICE Online Editors to find out the details.
<br />
<br />
<% foreach (var example in examples)

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,4 +1,4 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DocEditor.aspx.cs" Inherits="OnlineEditorsExample.DocEditor" Title="ONLYOFFICE" %>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DocEditor.aspx.cs" Inherits="OnlineEditorsExample.DocEditor" Title="ONLYOFFICE" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="OnlineEditorsExample" %>
@ -9,7 +9,7 @@
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="icon" href="~/favicon.ico" type="image/x-icon" />
<title>ONLYOFFICE</title>
<title>ONLYOFFICE</title>
<style>
html {
@ -105,8 +105,7 @@
user: {
id: "<%= _Default.CurUserHostAddress(null) %>",
firstname: "John",
lastname: "Smith",
name: "John Smith",
},
embedded: {

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -23,6 +23,7 @@
*
*/
using System.Text;
using OnlineEditorsExample;
using System;
using System.IO;
@ -220,22 +221,28 @@ namespace ASC.Api.DocumentConverter
: documentRevisionId;
documentRevisionId = GenerateRevisionId(documentRevisionId);
var urlDocumentService = DocumentConverterUrl + ConvertParams;
var urlToConverter = String.Format(urlDocumentService,
HttpUtility.UrlEncode(documentUri),
toExtension.Trim('.'),
fromExtension.Trim('.'),
title,
documentRevisionId);
if (isAsync)
urlToConverter += "&async=true";
var req = (HttpWebRequest) WebRequest.Create(urlToConverter);
var req = (HttpWebRequest)WebRequest.Create(DocumentConverterUrl);
req.Method = "POST";
req.ContentType = "text/json";
req.Timeout = ConvertTimeout;
Stream stream = null;
var bodyString = string.Format("{{\"async\": {0},\"filetype\": \"{1}\",\"key\": \"{2}\",\"outputtype\": \"{3}\",\"title\": \"{4}\",\"url\": \"{5}\"}}",
isAsync.ToString().ToLower(),
fromExtension.Trim('.'),
documentRevisionId,
toExtension.Trim('.'),
title,
documentUri);
var bytes = Encoding.UTF8.GetBytes(bodyString);
req.ContentLength = bytes.Length;
using (var requestStream = req.GetRequestStream())
{
requestStream.Write(bytes, 0, bytes.Length);
}
var countTry = 0;
Stream stream = null;
// hack. http://ubuntuforums.org/showthread.php?t=1841740
if (_Default.IsMono)

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2016 ONLYOFFICE
Copyright (c) 2017 ONLYOFFICE
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -1,4 +1,4 @@
For the ONLYOFFICE<EFBFBD> Applications example to work properly you need to do the following:
For the ONLYOFFICE Applications example to work properly you need to do the following:
1. Download and extract the Example.zip into a directory selected for it, for instance, C:\OnlyofficeExample
@ -10,7 +10,7 @@ For the ONLYOFFICE
5. Make sure that the user account under which the IIS NetworkService process is executed has the write access rights for the C:\OnlyofficeExample\App_Data folder (this is significant for the IIS later than 6.0).
6. Make the created ONLYOFFICE<EFBFBD> Applications example available through IP or domain name so that it could be connected from the web by the document service for proper document rendering.
6. Make the created ONLYOFFICE Applications example available through IP or domain name so that it could be connected from the web by the document service for proper document rendering.

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2016 ONLYOFFICE
Copyright (c) 2017 ONLYOFFICE
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
<!--*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -35,7 +35,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ONLYOFFICE</title>
<title>ONLYOFFICE</title>
<link rel="icon" href="favicon.ico" type="image/x-icon" />
<link rel="stylesheet" type="text/css" href="css/editor.css" />
@ -106,8 +106,7 @@
user: {
id: "<%= Model.CurUserHostAddress() %>",
firstname: "John",
lastname: "Smith",
name: "John Smith",
},
embedded: {

View File

@ -1,6 +1,6 @@
<!--*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -32,7 +32,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ONLYOFFICE</title>
<title>ONLYOFFICE</title>
<link rel="icon" href="favicon.ico" 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" />
<link rel="stylesheet" type="text/css" href="css/stylesheet.css" />
@ -43,10 +43,10 @@
<div class="top-panel"></div>
<div class="main-panel">
<span class="portal-name">ONLYOFFICE Online Editors</span>
<span class="portal-name">ONLYOFFICE Online Editors</span>
<br />
<br />
<span class="portal-descr">Get started with a demo-sample of ONLYOFFICE Online Editors, the first html5-based editors. You may upload your own documents for testing using the "Choose file" button and selecting the necessary files on your PC.</span>
<span class="portal-descr">Get started with a demo-sample of ONLYOFFICE Online Editors, the first html5-based editors. You may upload your own documents for testing using the "Choose file" button and selecting the necessary files on your PC.</span>
<div class="file-upload button gray">
<span>Choose file</span>

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2016 ONLYOFFICE
Copyright (c) 2017 ONLYOFFICE
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -1,6 +1,6 @@
<!--*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -27,11 +27,11 @@
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<title>ONLYOFFICE</title>
<title>ONLYOFFICE</title>
<link href="stylesheet.css" type="text/css" rel="stylesheet">
<!--Change the address on installed ONLYOFFICE Online Editors-->
<!--Change the address on installed ONLYOFFICE Online Editors-->
<script id="scriptApi" type="text/javascript" src="https://doc.onlyoffice.com/web-apps/apps/api/documents/api.js"></script>
@ -42,10 +42,10 @@
<div id="page">
<div class="top-panel"></div>
<div id="mainPanel" class="main-panel">
<span class="portal-name">ONLYOFFICE Online Editors</span>
<span class="portal-name">ONLYOFFICE Online Editors</span>
<br />
<br />
<span class="portal-descr">Get started with a demo-sample of ONLYOFFICE Online Editors, the first html5-based editors. You may enter url your own document for testing.</span>
<span class="portal-descr">Get started with a demo-sample of ONLYOFFICE Online Editors, the first html5-based editors. You may enter url your own document for testing.</span>
<textarea id="documentUrl" class="document-url">http://onlyo.co/1x5REbq?demo.docx</textarea>
<br />
<br />

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2016 ONLYOFFICE
Copyright (c) 2017 ONLYOFFICE
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -155,10 +155,9 @@ app.post("/upload", function (req, res) {
res.write("{ \"filename\": \"" + file.name + "\"}");
var userid = req.query.userid ? req.query.userid : "uid-1";
var firstname = req.query.firstname ? req.query.firstname : "Jonn";
var lastname = req.query.lastname ? req.query.lastname : "Smith";
var name = req.query.name ? req.query.name : "Jonn Smith";
docManager.saveFileData(file.name, userid, firstname + " " + lastname);
docManager.saveFileData(file.name, userid, name);
}
res.end();
});
@ -235,7 +234,7 @@ app.get("/convert", function (req, res) {
try {
if (configServer.get('convertedDocs').indexOf(fileExt) != -1) {
var key = documentService.generateRevisionId(fileUri);
documentService.getConvertedUriAsync(fileUri, fileExt, internalFileExt, key, callback);
documentService.getConvertedUri(fileUri, fileExt, internalFileExt, key, true, callback);
} else {
writeResult(fileName, null, null);
}
@ -291,9 +290,7 @@ app.post("/track", function (req, res) {
var processTrack = function (response, body, fileName, userAddress) {
var processSave = function (body, fileName, userAddress, newVersion) {
var downloadUri = body.url;
var processSave = function (downloadUri, body, fileName, userAddress, resp, newVersion) {
var curExt = fileUtility.getFileExtension(fileName);
var downloadExt = fileUtility.getFileExtension(downloadUri);
@ -301,7 +298,10 @@ app.post("/track", function (req, res) {
var key = documentService.generateRevisionId(downloadUri);
try {
downloadUri = documentService.getConvertedUri(downloadUri, downloadExt, curExt, key);
documentService.getConvertedUriSync(downloadUri, downloadExt, curExt, key, function(dUri){
processSave(dUri, body, fileName, userAddress, resp, newVersion)
});
return;
} catch (ex) {
console.log(ex);
fileName = docManager.getCorrectName(fileUtility.getFileName(fileName, true) + downloadExt, userAddress)
@ -349,7 +349,10 @@ app.post("/track", function (req, res) {
} catch (ex) {
console.log(ex);
}
}
response.write("{\"error\":0}");
response.end();
};
if (body.status == 1) { //Editing
if (body.actions && body.actions[0].type == 0) { //finished edit
@ -363,15 +366,17 @@ app.post("/track", function (req, res) {
}
}
}
} else if (body.status == 2 || body.status == 3) { //MustSave, Corrupted
processSave(body, fileName, userAddress, true);
} else if (body.status == 6 || body.status == 7) { //MustForceSave, CorruptedForceSave
processSave(body, fileName, userAddress);
} else if (body.status == 2 || body.status == 3 //MustSave, Corrupted
|| body.status == 6 || body.status == 7) { //MustForceSave, CorruptedForceSave
var newVersion = (body.status == 2 || body.status == 3);
processSave(body.url, body, fileName, userAddress, response, newVersion);
return;
}
response.write("{\"error\":0}");
response.end();
}
};
var readbody = function (request, response, fileName, userAddress) {
var content = "";
@ -382,7 +387,7 @@ app.post("/track", function (req, res) {
var body = JSON.parse(content);
processTrack(response, body, fileName, userAddress);
});
}
};
if (req.body.hasOwnProperty("status")) {
processTrack(res, req.body, fileName, userAddress);
@ -402,13 +407,12 @@ app.get("/editor", function (req, res) {
var diff = [];
var lang = docManager.getLang();
var userid = req.query.userid ? req.query.userid : "uid-1";
var firstname = req.query.firstname ? req.query.firstname : "Jonn";
var lastname = req.query.lastname ? req.query.lastname : "Smith";
var name = req.query.name ? req.query.name : "Jonn Smith";
if (fileExt != null) {
var fileName = docManager.createDemo((req.query.sample ? "sample." : "new.") + fileExt, userid, firstname + " " + lastname);
var fileName = docManager.createDemo((req.query.sample ? "sample." : "new.") + fileExt, userid, name);
var redirectPath = docManager.getProtocol() + "://" + docManager.req.get("host") + "/editor?fileName=" + encodeURIComponent(fileName) + docManager.getCustomParams();
var redirectPath = docManager.getServerUrl() + "/editor?fileName=" + encodeURIComponent(fileName) + docManager.getCustomParams();
res.redirect(redirectPath);
return;
}
@ -465,15 +469,14 @@ app.get("/editor", function (req, res) {
documentType: fileUtility.getFileType(fileName),
key: key,
callbackUrl: docManager.getCallback(fileName),
isEdit: canEdit,
isEdit: canEdit && mode != "review",
mode: canEdit && mode != "view" ? "edit" : "view",
canBackToFolder: type != "embedded",
getServerUrl: docManager.getServerUrl(),
curUserHostAddress: docManager.curUserHostAddress(),
lang: lang,
userid: userid,
firstname: firstname,
lastname: lastname,
name: name,
fileChoiceUrl: fileChoiceUrl,
plugins: plugins
},

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -82,11 +82,8 @@ docManager.getCustomParams = function () {
var userid = docManager.req.query.userid;
params += (userid ? "&userid=" + userid : "");
var firstname = docManager.req.query.firstname;
params += (firstname ? "&firstname=" + firstname : "");
var lastname = docManager.req.query.lastname;
params += (lastname ? "&lastname=" + lastname : "");
var name = docManager.req.query.name;
params += (name ? "&name=" + name : "");
var lang = docManager.req.query.lang;
params += (lang ? "&lang=" + docManager.getLang() : "");
@ -155,7 +152,7 @@ docManager.getFileUri = function (fileName) {
};
docManager.getlocalFileUri = function (fileName, version) {
var serverPath = docManager.getProtocol() + "://" + docManager.req.get("host");
var serverPath = docManager.getServerUrl();
var storagePath = storageFolder.length ? storageFolder + "/" : "";
var hostAddress = docManager.curUserHostAddress();
var url = serverPath + "/" + storagePath + hostAddress + "/" + encodeURIComponent(fileName);
@ -170,7 +167,7 @@ docManager.getServerUrl = function () {
};
docManager.getCallback = function (fileName) {
var server = docManager.getProtocol() + "://" + docManager.req.get("host");
var server = docManager.getServerUrl();
var hostAddress = docManager.curUserHostAddress();
var handler = "/track?useraddress=" + encodeURIComponent(hostAddress) + "&filename=" + encodeURIComponent(fileName);

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -25,7 +25,6 @@
var path = require("path");
var urllib = require("urllib");
var syncRequest = require("sync-request");
var xml2js = require("xml2js");
var fileUtility = require("./fileUtility");
var guidManager = require("./guidManager");
@ -34,52 +33,71 @@ var siteUrl = configServer.get('siteUrl');
var documentService = {};
documentService.convertParams = "?url={0}&outputtype={1}&filetype={2}&title={3}&key={4}";
documentService.commandParams = "?c={0}&key={1}";
documentService.userIp = null;
documentService.getConvertedUri = function (documentUri, fromExtension, toExtension, documentRevisionId) {
var xml = documentService.sendRequestToConvertService(documentUri, fromExtension, toExtension, documentRevisionId);
documentService.getConvertedUriSync = function (documentUri, fromExtension, toExtension, documentRevisionId, callback) {
documentRevisionId = documentService.generateRevisionId(documentRevisionId || documentUri);
var res = documentService.getResponseUri(xml);
return res.value;
documentService.getConvertedUri(documentUri, fromExtension, toExtension, documentRevisionId, false, function (err, data) {
if (err) {
callback();
return;
}
var res = documentService.getResponseUri(data);
callback(res.value);
});
};
documentService.getConvertedUriAsync = function (documentUri, fromExtension, toExtension, documentRevisionId, callback) {
documentService.getConvertedUri = function (documentUri, fromExtension, toExtension, documentRevisionId, async, callback) {
fromExtension = fromExtension || fileUtility.getFileExtension(documentUri);
var title = fileUtility.getFileName(documentUri) || guidManager.newGuid();
documentRevisionId = documentService.generateRevisionId(documentRevisionId || documentUri);
var params = documentService.convertParams.format(
encodeURIComponent(documentUri),
toExtension.replace(".", ""),
fromExtension.replace(".", ""),
title,
documentRevisionId);
var params = {
async: async,
url: documentUri,
outputtype: toExtension.replace(".", ""),
filetype: fromExtension.replace(".", ""),
title: title,
key: documentRevisionId
};
urllib.request(siteUrl + configServer.get('converterUrl') + params, callback);
urllib.request(siteUrl + configServer.get('converterUrl'),
{
method: "POST",
headers: {
'Content-Type': 'application/json'
},
data: params
},
callback);
};
documentService.getExternalUri = function (fileStream, contentLength, contentType, documentRevisionId) {
var params = documentService.convertParams.format("", "", "", "", documentRevisionId);
documentService.getExternalUri = function (fileStream, contentLength, contentType, documentRevisionId, callback) {
documentRevisionId = documentService.generateRevisionId(documentRevisionId);
var urlTostorage = siteUrl + configServer.get('storageUrl') + params;
var urlTostorage = siteUrl + configServer.get('storageUrl') + "?key=" + documentRevisionId;
var response = syncRequest("POST", urlTostorage, {
headers: {
"Content-Type": contentType == null ? "application/octet-stream" : contentType,
"Content-Length": contentLength.toString(),
"charset": "utf-8"
urllib.request(urlTostorage,
{
method: "POST",
headers: {
"Content-Type": contentType == null ? "application/octet-stream" : contentType,
"Content-Length": contentLength.toString(),
"charset": "utf-8"
},
data: fileStream
},
body: fileStream
});
var res = documentService.getResponseUri(response.body.toString());
return res.value;
function (err, data) {
if (err) {
callback();
return;
}
var res = documentService.getResponseUri(data);
callback(res.value);
});
};
documentService.generateRevisionId = function (expectedKey) {
@ -92,24 +110,6 @@ documentService.generateRevisionId = function (expectedKey) {
return key.substring(0, Math.min(key.length, 20));
};
documentService.sendRequestToConvertService = function (documentUri, fromExtension, toExtension, documentRevisionId) {
fromExtension = fromExtension || fileUtility.getFileExtension(documentUri);
var title = fileUtility.getFileName(documentUri) || guidManager.newGuid();
documentRevisionId = documentService.generateRevisionId(documentRevisionId || documentUri);
var params = documentService.convertParams.format(
encodeURIComponent(documentUri),
toExtension.replace(".", ""),
fromExtension.replace(".", ""),
title,
documentRevisionId);
var res = syncRequest("GET", siteUrl + configServer.get('converterUrl') + params);
return res.getBody("utf8");
};
documentService.processConvertServiceResponceError = function (errorCode) {
var errorMessage = "";
var errorMessageTemplate = "Error occurred in the ConvertService: ";
@ -200,14 +200,22 @@ documentService.convertXmlStringToJson = function (xml) {
return res;
};
documentService.commandRequest = function (method, documentRevisionId) {
documentService.commandRequest = function (method, documentRevisionId, callback) {
documentRevisionId = documentService.generateRevisionId(documentRevisionId);
var params = documentService.commandParams.format(
method,
documentRevisionId);
var params = {
c: method,
key: documentRevisionId
};
var res = syncRequest("GET", siteUrl + configServer.get('commandUrl') + params).getBody("utf8");
return JSON.parse(res).error;
urllib.request(siteUrl + configServer.get('commandUrl'),
{
method: "POST",
headers: {
'Content-Type': 'application/json'
},
data: params
},
callback);
};
module.exports = documentService;

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 B

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -25,14 +25,12 @@
var language;
var userid;
var firstname;
var lastname;
var username;
if (typeof jQuery != "undefined") {
jq = jQuery.noConflict();
firstname = getUrlVars()["firstname"];
lastname = getUrlVars()["lastname"];
username = getUrlVars()["name"];
userid = getUrlVars()["userid"];
language = getUrlVars()["lang"];
@ -43,43 +41,26 @@ if (typeof jQuery != "undefined") {
jq("#language").change(function() {
var user = jq('#user option:selected').text();
var arUser = user.split(' ');
firstname = arUser[0];
//alert(language);
lastname = arUser[1];
window.location = "?lang=" + jq(this).val() + "&userid=" + userid + "&firstname=" + firstname + "&lastname=" + lastname;
var username = jq('#user option:selected').text();
window.location = "?lang=" + jq(this).val() + "&userid=" + userid + "&name=" + username;
});
if ("" != userid && undefined != userid)
jq("#user").val(userid);
else
userid = jq("#user").val();
if ("" != firstname && undefined != firstname)
firstname=getUrlVars()["firstname"];
else{
var user = jq('#user option:selected').text();
var arUser = user.split(' ');
firstname = arUser[0];
if ("" != username && undefined != username) {
username = getUrlVars()["name"];
}
if ("" != lastname && undefined != lastname)
lastname=getUrlVars()["lastname"];
else{
var user = jq('#user option:selected').text();
var arUser = user.split(' ');
lastname = arUser[1];
else {
username = jq('#user option:selected').text();
}
jq("#user").change(function() {
var user = jq('#user option:selected').text();
var arUser = user.split(' ');
firstname = arUser[0];
lastname = arUser[1];
//var fn = jq('#user option:selected').attr('value-fn');
window.location = "?lang=" + language + "&userid=" + jq(this).val() + "&firstname=" + arUser[0] + "&lastname=" + arUser[1];
var username = jq('#user option:selected').text();
window.location = "?lang=" + language + "&userid=" + jq(this).val() + "&name=" + username;
});
jq(function () {
@ -217,7 +198,7 @@ if (typeof jQuery != "undefined") {
jq(document).on("click", "#beginEdit:not(.disable)", function () {
var fileId = encodeURIComponent(jq('#hiddenFileName').val());
var url = UrlEditor + "?fileName=" + fileId + "&lang=" + language + "&userid=" + userid + "&firstname=" +firstname +"&lastname=" + lastname;
var url = UrlEditor + "?fileName=" + fileId + "&lang=" + language + "&userid=" + userid + "&name=" + username;
window.open(url, "_blank");
jq('#hiddenFileName').val("");
jq.unblockUI();
@ -226,7 +207,7 @@ if (typeof jQuery != "undefined") {
jq(document).on("click", "#beginView:not(.disable)", function () {
var fileId = encodeURIComponent(jq('#hiddenFileName').val());
var url = UrlEditor + "?mode=view&fileName=" + fileId + "&lang=" + language + "&userid=" + userid + "&firstname=" +firstname +"&lastname=" + lastname;
var url = UrlEditor + "?mode=view&fileName=" + fileId + "&lang=" + language + "&userid=" + userid + "&name=" + username;
window.open(url, "_blank");
jq('#hiddenFileName').val("");
jq.unblockUI();
@ -235,7 +216,7 @@ if (typeof jQuery != "undefined") {
jq(document).on("click", "#beginEmbedded:not(.disable)", function () {
var fileId = encodeURIComponent(jq('#hiddenFileName').val());
var url = UrlEditor + "?type=embedded&fileName=" + fileId + "&lang=" + language + "&userid=" + userid + "&firstname=" +firstname +"&lastname=" + lastname;
var url = UrlEditor + "?type=embedded&fileName=" + fileId + "&lang=" + language + "&userid=" + userid + "&name=" + username;
jq("#mainProgress").addClass("embedded");
jq("#beginEmbedded").addClass("disable");

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -288,7 +288,7 @@ footer {
background-repeat: no-repeat;
display: inline-block;
height: 16px;
max-width: 450px;
max-width: 250px;
margin-bottom: -6px;
overflow: hidden;
padding: 8px 0 1px 34px;

View File

@ -1,6 +1,6 @@
<!--*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -28,8 +28,10 @@
<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" />
<title>ONLYOFFICE™</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="mobile-web-app-capable" content="yes" />
<title>ONLYOFFICE</title>
<link rel="icon" href="images/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" type="text/css" href="stylesheets/editor.css" />
</head>
@ -112,8 +114,9 @@
created: new Date().toDateString()
},
permissions: {
download: true,
edit: "<%= editor.isEdit %>" == "true",
download: true
review: true,
}
},
editorConfig: {
@ -122,8 +125,7 @@
callbackUrl: "<%- editor.callbackUrl %>",
user: {
id: "<%= editor.userid %>",
firstname: "<%= editor.firstname %>",
lastname: "<%= editor.lastname %>"
name: "<%= editor.name %>",
},
embedded: {
saveUrl: "<%= file.uri %>",
@ -137,7 +139,7 @@
comments: true,
feedback: true,
goback: {
url: ("<%= editor.type %>" == "embedded" ? null : "<%= editor.getServerUrl %>")
url: "<%= editor.getServerUrl %>"
}
},
fileChoiceUrl: "<%= editor.fileChoiceUrl %>",

View File

@ -1,6 +1,6 @@
<!--*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -30,7 +30,7 @@
<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" />
<title>ONLYOFFICE Integration Edition</title>
<title>ONLYOFFICE Integration Edition</title>
<link href="images/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" />
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" />
@ -39,14 +39,14 @@
<body>
<header>
<a href="/">
<img src ='images/logo.png' alt="ONLYOFFICE" />
<img src ='images/logo.png' alt="ONLYOFFICE" />
</a>
</header>
<div class="main-panel">
<span class="portal-name">ONLYOFFICE Integration Edition Welcome!</span>
<span class="portal-name">ONLYOFFICE Integration Edition Welcome!</span>
<br />
<br />
<span class="portal-descr">Get started with a demo-sample of ONLYOFFICE Integration Edition, the first html5-based editors. You may upload your own documents for testing using the "Upload file" button and selecting the necessary files on your PC.</span>
<span class="portal-descr">Get started with a demo-sample of ONLYOFFICE Integration Edition, the first html5-based editors. You may upload your own documents for testing using the "Upload file" button and selecting the necessary files on your PC.</span>
<table class="user-block-table" cellspacing="0" cellpadding="0">
<tr>
<td valign="middle" width="30%">
@ -129,7 +129,7 @@
<thead>
<tr class="tableHeader">
<td class="tableHeaderCell tableHeaderCellFileName">Filename</td>
<td colspan="2" class="tableHeaderCell contentCells-shift">Editors</td>
<td colspan="3" class="tableHeaderCell contentCells-shift">Editors</td>
<td colspan="3" class="tableHeaderCell">Viewers</td>
</tr>
</thead>
@ -137,32 +137,38 @@
<% for (var i = 0; i < storedFiles.length; i++) { %>
<tr class="tableRow" title="<%=storedFiles[i].name%>">
<td class="contentCells">
<a class="stored-edit <%= storedFiles[i].documentType%>" href="editor?fileName=<%= encodeURIComponent(storedFiles[i].name) + params %>" target="_blank">
<a class="stored-edit <%= storedFiles[i].documentType %>" href="editor?fileName=<%= encodeURIComponent(storedFiles[i].name) + params %>" target="_blank">
<span title="<%= storedFiles[i].url %>"><%= storedFiles[i].name %></span></a>
<a href="<%= storedFiles[i].url %>">
<img class="icon-download" src="images/download-24.png" alt="download" /></a>
<img class="icon-download" src="images/download-24.png" alt="Download" title="Download" /></a>
<a class="delete-file" data="<%= encodeURIComponent(storedFiles[i].name) %>">
<img class="icon-delete" src="images/delete-24.png" alt="delete" /></a>
<img class="icon-delete" src="images/delete-24.png" alt="Delete" title="Delete" /></a>
</td>
<td class="contentCells contentCells-icon">
<a href="editor?fileName=<%= encodeURIComponent(storedFiles[i].name) + params %>" target="_blank">
<img src="images/desktop-24.png" alt="editor" /></a>
<img src="images/desktop-24.png" 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="editor?type=mobile&mode=edit&fileName=<%= encodeURIComponent(storedFiles[i].name) + params %>" target="_blank">
<img src="images/mobile-24.png" alt="Open in editor for mobile devices" title="Open in editor for mobile devices" /></a>
</td>
<td class="contentCells contentCells-shift contentCells-icon">
<a href="editor?type=mobile&mode=edit&fileName=<%= encodeURIComponent(storedFiles[i].name) + params %>" target="_blank">
<img src="images/mobile-24.png" alt="mobile editor" /></a>
<% if (storedFiles[i].documentType == "text") { %>
<a href="editor?mode=review&fileName=<%= encodeURIComponent(storedFiles[i].name) + params %>" target="_blank">
<img src="images/review-24.png" alt="Open in editor for review" title="Open in editor for review" /></a>
<% } %>
</td>
<td class="contentCells contentCells-icon">
<a href="editor?mode=view&fileName=<%= encodeURIComponent(storedFiles[i].name) + params %>" target="_blank">
<img src="images/desktop-24.png" alt="viewer" /></a>
<img src="images/desktop-24.png" 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="editor?type=mobile&mode=view&fileName=<%= encodeURIComponent(storedFiles[i].name) + params %>" target="_blank">
<img src="images/mobile-24.png" alt="mobile viewer" /></a>
<img src="images/mobile-24.png" alt="Open in viewer for mobile devices" title="Open in viewer for mobile devices" /></a>
</td>
<td class="contentCells contentCells-icon">
<a href="editor?type=embedded&mode=embedded&fileName=<%= encodeURIComponent(storedFiles[i].name) + params %>" target="_blank">
<img src="images/embeded-24.png" alt="embedded" /></a>
<img src="images/embeded-24.png" alt="Open in embedded mode" title="Open in embedded mode" /></a>
</td>
</tr>
<% } %>
@ -177,7 +183,7 @@
<div class="help-block">
<span>Want to learn the magic?</span>
<br />
Explore ONLYOFFICE Integration Edition <a href="http://api.onlyoffice.com/editors/howitworks" target="_blank">API Documentation.</a>
Explore ONLYOFFICE Integration Edition <a href="http://api.onlyoffice.com/editors/howitworks" target="_blank">API Documentation.</a>
</div>
<br />
<br />

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2016 ONLYOFFICE
Copyright (c) 2017 ONLYOFFICE
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -28,6 +28,7 @@
<?php
require_once( dirname(__FILE__) . '/config.php' );
require_once( dirname(__FILE__) . '/functions.php' );
function sendlog($msg, $logFileName) {
file_put_contents($logFileName, $msg . PHP_EOL, FILE_APPEND);
@ -134,7 +135,9 @@ function getClientIp() {
getenv('HTTP_FORWARDED_FOR')?:
getenv('HTTP_FORWARDED')?:
getenv('REMOTE_ADDR')?:
'';
'Storage';
$ipaddress = preg_replace("/[^0-9a-zA-Z.=]/", "_", $ipaddress);
return $ipaddress;
}
@ -144,6 +147,13 @@ function serverPath() {
}
function getCurUserHostAddress($userAddress = NULL) {
if ($GLOBALS['ALONE']) {
if (empty($GLOBALS['STORAGE_PATH'])) {
return "Storage";
} else {
return "";
}
}
if (is_null($userAddress)) {$userAddress = getClientIp();}
return preg_replace("[^0-9a-zA-Z.=]", '_', $userAddress);
}
@ -192,6 +202,44 @@ function getStoragePath($fileName, $userAddress = NULL) {
return $directory . $fileName;
}
function getStoredFiles() {
$storagePath = trim(str_replace(array('/','\\'), DIRECTORY_SEPARATOR, $GLOBALS['STORAGE_PATH']), DIRECTORY_SEPARATOR);
$directory = __DIR__ . DIRECTORY_SEPARATOR . $storagePath;
$result = array();
if ($storagePath != "")
{
$directory = $directory . DIRECTORY_SEPARATOR;
if (!file_exists($directory) && !is_dir($directory)) {
return $result;
}
}
$directory = $directory . getCurUserHostAddress($userAddress) . DIRECTORY_SEPARATOR;
if (!file_exists($directory) && !is_dir($directory)) {
return $result;
}
$cdir = scandir($directory);
foreach ($cdir as $key => $fileName)
{
if (!in_array($fileName,array(".","..")))
{
if (!is_dir($directory . DIRECTORY_SEPARATOR . $fileName))
{
$result[] = (object) array(
'name' => $fileName,
'url' => FileUri($fileName),
'documentType' => getDocumentType($fileName)
);
}
}
}
return $result;
}
function getVirtualPath() {
$storagePath = trim(str_replace(array('/','\\'), '/', $GLOBALS['STORAGE_PATH']), '/');
$storagePath = $storagePath != "" ? $storagePath . '/' : "";
@ -202,11 +250,15 @@ function getVirtualPath() {
return $virtPath;
}
function FileUri($file_name) {
$uri = getVirtualPath() . $file_name;
return $uri;
}
function getFileExts() {
return array_merge($GLOBALS['DOC_SERV_VIEWD'], $GLOBALS['DOC_SERV_EDITED'], $GLOBALS['DOC_SERV_CONVERT']);
}
function GetCorrectName($fileName) {
$path_parts = pathinfo($fileName);
@ -221,4 +273,11 @@ function GetCorrectName($fileName) {
return $name;
}
function getDocEditorKey($fileName) {
$key = getCurUserHostAddress() . FileUri($fileName);
$stat = filemtime(getStoragePath($fileName));
$key = $key . $stat;
return GenerateRevisionId($key);
}
?>

View File

@ -2,6 +2,7 @@
$GLOBALS['FILE_SIZE_MAX'] = 5242880;
$GLOBALS['STORAGE_PATH'] = "";
$GLOBALS['ALONE'] = FALSE;
$GLOBALS['MODE'] = "";

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 B

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -48,15 +48,21 @@ div {
a, a:hover, a:visited {
color: #333;
}
.top-panel {
background: url("images/logo.png") no-repeat 30px center #3D4A6B;
header {
height: 44px;
background: #3D4A6B;
height: 80px;
width: 100%;
margin: 0 auto;
min-width: 600px;
width: auto;
}
header img {
margin: 12px 0 0 16px;
}
.main-panel {
margin: 80px auto;
margin: 80px auto 16px;
width: 600px;
}
.portal-name {
@ -69,41 +75,13 @@ a, a:hover, a:visited {
width: 600px;
}
.save-original {
color: #929597;
line-height: 20px;
margin-left: 16px;
white-space: nowrap;
width: 272px;
margin-left: 30px;
}
label .checkbox {
vertical-align: middle;
}
.question {
background: url("images/question_small.png") no-repeat center center transparent;
cursor: pointer;
display: inline-block;
height: 16px;
width: 16px;
}
#hint {
background-color: #FFFFFF;
border: 1px solid #8E908F;
display: none;
margin: 4px 0 0 -32px;
max-width: 415px;
padding: 10px 15px 15px;
word-wrap: break-word;
z-index: 255;
}
.corner {
background: url("images/corner.png") no-repeat scroll 0 0 transparent;
height: 6px;
left: 35px;
margin-top: -15px;
position: absolute;
width: 9px;
z-index: 261;
}
.try-descr {
font-size: 16px;
white-space : nowrap;
@ -111,13 +89,13 @@ label .checkbox {
.try-editor-list {
list-style: none;
margin: 0;
margin: 0 0 16px;
padding: 0;
}
.try-editor-list li {
float: left;
margin: 25px;
width: 150px;
margin: 0 15px;
width: 100px;
}
.try-editor {
background-color: transparent;
@ -140,6 +118,9 @@ label .checkbox {
.try-editor.presentation {
background-image: url("images/file_pptx.png");
}
.create-sample {
margin-left: 75px;
}
.button, .button:visited, .button:hover, .button:active {
display: inline-block;
@ -183,25 +164,39 @@ label .checkbox {
border: 1px solid #E9EAEA;
}
.file-upload {
cursor: pointer;
margin-bottom: 8px;
padding: 0 !important;
overflow: hidden;
position: relative;
.upload-panel {
border-right: 1px solid #D1D1D1;
float: left;
margin-right: 25px;
}
.file-upload span {
line-height: 21px;
margin: 2px 12px;
.file-upload {
background: url("images/file_upload.png") no-repeat center 0 transparent;
cursor: pointer;
display: inline-block;
font-size: 14px;
font-weight: bold;
height: 45px;
margin: 0 40px 16px;
overflow: hidden;
padding-top: 100px;
position: relative;
text-align: center;
width: 100px;
}
.file-upload input {
cursor: pointer;
font-size: 23px;
opacity: 0;
position: absolute;
right: 0;
top: 0;
transform: translate(-300px, 0) scale(4);
transform: translate(555px, 60px) scale(8);
}
.create-panel {
float: left;
}
.upload-panel,
.create-panel {
padding: 10px 0;
}
#mainProgress {
@ -268,17 +263,68 @@ label .checkbox {
position: absolute;
visibility: hidden;
}
.bottom-panel {
bottom: 0;
position: fixed;
footer {
text-align: right;
width: 100%;
width: auto;
margin-bottom: 15px;
margin-right: 15px;
}
.help-block span {
font-size: 16px;
line-height: 26px;
}
.stored-list {
border-top: 1px solid #D1D1D1;
list-style: none;
margin: 0;
padding: 0;
}
.stored-list li {
border-bottom: 1px solid #D1D1D1;
line-height: 28px;
padding: 0 8px;
}
.stored-edit {
background-color: transparent;
background-position: left center;
background-repeat: no-repeat;
display: inline-block;
height: 16px;
max-width: 250px;
margin-bottom: -6px;
overflow: hidden;
padding: 8px 0 1px 34px;
text-decoration: none;
text-overflow: ellipsis;
white-space: nowrap;
}
.stored-edit.text {
background-image: url("images/icon_docx.png");
}
.stored-edit.spreadsheet {
background-image: url("images/icon_xlsx.png");
}
.stored-edit.presentation {
background-image: url("images/icon_pptx.png");
}
.stored-edit span {
font-size: 12px;
line-height: 12px;
vertical-align: top;
}
.stored-edit:hover span {
text-decoration: underline;
}
.stored-download {
color: #787878;
float: right;
text-decoration: none;
}
.stored-download:hover {
color: #787878;
text-decoration: underline;
}
@ -310,4 +356,110 @@ label .checkbox {
-moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
-webkit-box-shadow:0 2px 4px rgba(0, 0, 0, 0.5);
padding: 0 !important;
}
}
.clearFix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.td100 {
width: 100%;
}
.block-lang {
padding-right: 10px;
padding-top: 9px;
}
/*Icon table*/
#tableRow {
vertical-align: top;
}
.tableRow {
background: transparent;
-moz-transition: all 0.2s ease-in-out;
-webkit-transition: all 0.2s ease-in-out;
-o-transition: all 0.2s ease-in-out;
-ms-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
}
.tableRow:hover {
background-color: #ebebeb;
}
.tableHeader {
background: transparent;
color: #333;
cursor: default;
font-family: 'Open Sans', sans-serif;
font-size: 13px;
height: 40px;
-khtml-user-select: none;
user-select: none;
-moz-user-select: none;
-webkit-user-select: none;
}
.tableHeaderCell {
padding: 2px 1px 2px 5px;
text-align: center;
}
.tableHeaderCellFileName {
text-align: left;
}
.contentCells {
padding: 4px 1px 4px 5px;
font-family: 'Open Sans', sans-serif;
font-size: 16px;
border-bottom: 1px solid #e5e5e5;
white-space: nowrap;
-khtml-user-select: none;
user-select: none;
-moz-user-select: none;
-webkit-user-select: none;
}
.contentCells-shift {
padding-right: 30px;
}
.contentCells-icon {
width: 6%;
}
.contentCellsSmall {
padding: 5px 1px 5px 6px;
font-family: 'Open Sans', sans-serif;
font-size: 13px;
border-bottom: 1px solid #e5e5e5;
white-space: nowrap;
text-align: center;
}
.primaryRow {
background-color: #e9e9e9;
}
.secondaryRow {
background-color: #F9F9F9;
}
.select-user {
margin-left: 15px;
}
.user-block-table {
height: 100%;
width: 100%;
}
.user-block-table td {
background-color: #F4F4F4;
border-bottom: 1px solid white;
padding: 12px 0;
}
#user, #language {
width: 130px;
}
.icon-download {
margin-bottom: -5px;
}
.icon-delete {
cursor: pointer;
margin-bottom: -6px;
}

View File

@ -1,7 +1,7 @@
<?php
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -40,15 +40,15 @@
}
else
{
$filename = $_GET["fileID"];
$filename = basename($_GET["fileID"]);
}
$type = $_GET["type"];
$createExt = $_GET["fileExt"];
if (!empty($type))
if (!empty($createExt))
{
$filename = tryGetDefaultByType($type);
$filename = tryGetDefaultByType($createExt);
$new_url = "doceditor.php?fileID=" . $filename;
$new_url = "doceditor.php?fileID=" . $filename . "&user=" . $_GET["user"];
header('Location: ' . $new_url, true);
exit;
}
@ -56,24 +56,8 @@
$fileuri = FileUri($filename);
function tryGetDefaultByType($type) {
$ext;
switch ($type)
{
case "document":
$ext = ".docx";
break;
case "spreadsheet":
$ext = ".xlsx";
break;
case "presentation":
$ext = ".pptx";
break;
default:
return;
}
$demoName = "demo" . $ext;
function tryGetDefaultByType($createExt) {
$demoName = ($_GET["sample"] ? "demo." : "new.") . $createExt;
$demoFilename = GetCorrectName($demoName);
if(!@copy(dirname(__FILE__) . DIRECTORY_SEPARATOR . "app_data" . DIRECTORY_SEPARATOR . $demoName, getStoragePath($demoFilename)))
@ -85,10 +69,6 @@
return $demoFilename;
}
function getDocEditorKey($fileUri) {
return GenerateRevisionId(getCurUserHostAddress() . "/" . basename($fileUri));
}
function getCallbackUrl($fileName) {
return serverPath() . '/'
. "webeditor-ajax.php"
@ -103,7 +83,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="icon" href="./favicon.ico" type="image/x-icon" />
<title>ONLYOFFICE</title>
<title>ONLYOFFICE</title>
<style>
html {
@ -167,18 +147,26 @@
var сonnectEditor = function () {
<?php
if (!file_exists(getStoragePath($filename))) {
echo "alert('File not found'); return;";
}
?>
var user = [{id:"0","name":"Jonn Smith"}, {id:"1","name":"Mark Pottato"}, {id:"2","name":"Hamish Mitchell"}]["<?php echo $_GET["user"] ?>" || 0];
docEditor = new DocsAPI.DocEditor("iframeEditor",
{
width: "100%",
height: "100%",
type: "<?php echo ($_GET["action"] != "embedded" ? "desktop" : "embedded") ?>",
type: "<?php echo ($_GET["type"] == "mobile" ? "mobile" : ($_GET["type"] == "embedded" ? "embedded" : "desktop")) ?>",
documentType: "<?php echo getDocumentType($filename) ?>",
document: {
title: fileName,
url: "<?php echo $fileuri ?>",
fileType: fileType,
key: "<?php echo getDocEditorKey($fileuri) ?>",
key: "<?php echo getDocEditorKey($filename) ?>",
info: {
author: "Me",
@ -186,8 +174,9 @@
},
permissions: {
edit: <?php echo (in_array(strtolower('.' . pathinfo($filename, PATHINFO_EXTENSION)), $GLOBALS['DOC_SERV_EDITED']) ? "true" : "false") ?>,
download: true,
edit: <?php echo (in_array(strtolower('.' . pathinfo($filename, PATHINFO_EXTENSION)), $GLOBALS['DOC_SERV_EDITED']) && $_GET["action"] != "review" ? "true" : "false") ?>,
review: true
}
},
editorConfig: {
@ -197,11 +186,7 @@
callbackUrl: "<?php echo getCallbackUrl($filename) ?>",
user: {
id: "<?php echo getClientIp() ?>",
firstname: "John",
lastname: "Smith",
},
user: user,
embedded: {
saveUrl: "<?php echo $fileuri ?>",
@ -214,7 +199,7 @@
about: true,
feedback: true,
goback: {
url: "<?php echo serverPath() ?>/index.php",
url: "<?php echo serverPath() ?>",
},
},
},

View File

@ -28,14 +28,8 @@
<?php
require_once( dirname(__FILE__) . '/config.php' );
require_once( dirname(__FILE__) . '/common.php' );
function FileUri($file_name) {
$uri = getVirtualPath() . $file_name;
return $uri;
}
function GetExternalFileUri($local_uri) {
$externalUri = '';
@ -106,23 +100,6 @@ function DoUpload($fileUri) {
}
function generateUrlToConverter($document_uri, $from_extension, $to_extension, $title, $document_revision_id, $is_async) {
$urlToConverterParams = array(
"url" => $document_uri,
"outputtype" => trim($to_extension,'.'),
"filetype" => trim($from_extension, '.'),
"title" => $title,
"key" => $document_revision_id);
$urlToConverter = $GLOBALS['DOC_SERV_CONVERTER_URL'] . "?" . http_build_query($urlToConverterParams);
if ($is_async)
$urlToConverter = $urlToConverter . "&async=true";
return $urlToConverter;
}
function generateUrlToStorage($document_uri, $from_extension, $to_extension, $title, $document_revision_id) {
return $GLOBALS['DOC_SERV_STORAGE_URL'] . "?" . http_build_query(
@ -227,16 +204,29 @@ function SendRequestToConvertService($document_uri, $from_extension, $to_extensi
$document_revision_id = GenerateRevisionId($document_revision_id);
$urlToConverter = generateUrlToConverter($document_uri, $from_extension, $to_extension, $title, $document_revision_id, $is_async);
$urlToConverter = $GLOBALS['DOC_SERV_CONVERTER_URL'];
$data = json_encode(
array(
"async" => $is_async,
"url" => $document_uri,
"outputtype" => trim($to_extension,'.'),
"filetype" => trim($from_extension, '.'),
"title" => $title,
"key" => $document_revision_id
)
);
$response_xml_data;
$countTry = 0;
$opts = array('http' => array(
'method' => 'GET',
'timeout' => $GLOBALS['DOC_SERV_TIMEOUT']
)
);
'method' => 'POST',
'timeout' => $GLOBALS['DOC_SERV_TIMEOUT'],
'header'=> "Content-type: application/json\r\n",
'content' => $data
)
);
if (substr($urlToConverter, 0, strlen("https")) === "https") {
$opts['ssl'] = array( 'verify_peer' => FALSE );
@ -256,8 +246,11 @@ function SendRequestToConvertService($document_uri, $from_extension, $to_extensi
}
libxml_use_internal_errors(true);
$data = simplexml_load_string($response_xml_data);
if (!$data) {
if (!function_exists('simplexml_load_file')){
throw new Exception("Server can't read xml");
}
$response_data = simplexml_load_string($response_xml_data);
if (!$response_data) {
$exc = "Bad Response. Errors: ";
foreach(libxml_get_errors() as $error) {
$exc = $exc . "\t" . $error->message;
@ -265,7 +258,7 @@ function SendRequestToConvertService($document_uri, $from_extension, $to_extensi
throw new Exception ($exc);
}
return $data;
return $response_data;
}
@ -320,6 +313,9 @@ function GetResponseUri($x_document_response, &$response_uri) {
$resultPercent = 0;
libxml_use_internal_errors(true);
if (!function_exists('simplexml_load_file')){
throw new Exception("Server can't read xml");
}
$data = simplexml_load_string($x_document_response);
if (!$data) {

View File

@ -1,7 +1,7 @@
<?php
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -29,6 +29,8 @@
require_once( dirname(__FILE__) . '/config.php' );
require_once( dirname(__FILE__) . '/common.php' );
require_once( dirname(__FILE__) . '/functions.php' );
$user = $_GET["user"];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@ -36,7 +38,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ONLYOFFICE</title>
<title>ONLYOFFICE Integration Edition</title>
<link rel="icon" href="./favicon.ico" type="image/x-icon" />
@ -58,8 +60,6 @@
<script type="text/javascript" src="js/jquery.dropdownToggle.js"></script>
<script type="text/javascript" src="js/jscript.js"></script>
<script type="text/javascript">
var ConverExtList = '<?php echo implode(",", $GLOBALS["DOC_SERV_CONVERT"]) ?>';
var EditedExtList = '<?php echo implode(",", $GLOBALS["DOC_SERV_EDITED"]) ?>';
@ -67,39 +67,170 @@
</head>
<body>
<form id="form1">
<div class="top-panel"></div>
<header>
<a href="/">
<img src ="css/images/logo.png" alt="ONLYOFFICE" />
</a>
</header>
<div class="main-panel">
<span class="portal-name">ONLYOFFICE™ Online Editors</span>
<span class="portal-name">ONLYOFFICE Integration Edition Welcome!</span>
<br />
<br />
<span class="portal-descr">Get started with a demo-sample of ONLYOFFICE™ Online Editors, the first html5-based editors. You may upload your own documents for testing using the "Choose file" button and selecting the necessary files on your PC.</span>
<span class="portal-descr">Get started with a demo-sample of ONLYOFFICE Integration Edition, the first html5-based editors. You may upload your own documents for testing using the "Upload file" button and selecting the necessary files on your PC.</span>
<div class="file-upload button gray">
<span>Choose file</span>
<input type="file" id="fileupload" name="files" data-url="webeditor-ajax.php?type=upload" />
<table class="user-block-table" cellspacing="0" cellpadding="0">
<tr>
<td valign="middle" width="30%">
<span class="select-user">Username:</span>
<select class="select-user" id="user">
<option value="0">Jonn Smith</option>
<option value="1">Mark Pottato</option>
<option value="2">Hamish Mitchell</option>
</select>
</td>
<td valign="middle" width="70%">Select user name before opening the document; you can open the same document using different users in different Web browser sessions, so you can check out multi-user editing functions.</td>
</tr>
<!--<tr>
<td valign="middle" width="30%">
<select class="select-user" id="language">
<option value="en" selected>English</option>
<option value="de">Deutsch</option>
<option value="es">Espanol</option>
<option value="fr">Francais</option>
<option value="it">Italiano</option>
<option value="pt">Portuguese</option>
<option value="ru">Русский</option>
<option value="sl">Slovenian</option>
</select>
</td>
<td valign="middle" width="70%">Choose the language for ONLYOFFICE&trade; editors interface.</td>
</tr>-->
</table>
<br />
<br />
<div class="help-block">
<span>Upload your file or create new file</span>
<br />
<br />
<div class="clearFix">
<div class="upload-panel clearFix">
<a class="file-upload">Upload
<br />
File
<input type="file" id="fileupload" name="files" data-url="webeditor-ajax.php?type=upload" />
</a>
<br />
<label class="save-original">
<input type="checkbox" id="checkOriginalFormat" class="checkbox" />Keep file format
</label>
</div>
<div class="create-panel clearFix">
<ul class="try-editor-list clearFix">
<li>
<a class="try-editor document reload-page" target="_blank" href="doceditor.php?fileExt=docx&user=<?php echo $user; ?>">Create
<br />
Document</a>
</li>
<li>
<a class="try-editor spreadsheet reload-page" target="_blank" href="doceditor.php?fileExt=xlsx&user=<?php echo $user; ?>">Create
<br />
Spreadsheet</a>
</li>
<li>
<a class="try-editor presentation reload-page" target="_blank" href="doceditor.php?fileExt=pptx&user=<?php echo $user; ?>">Create
<br />
Presentation</a>
</li>
</ul>
<label class="create-sample">
<input type="checkbox" id="createSample" class="checkbox" />Create a file filled with sample content
</label>
</div>
</div>
</div>
<label class="save-original">
<input type="checkbox" id="checkOriginalFormat" class="checkbox" />Save document in original format
</label>
<span class="question"></span>
<br />
<br />
<br />
<span class="try-descr">You are also enabled to view and edit documents pre-uploaded to the portal.</span>
<ul class="try-editor-list">
<li><a class="try-editor document" href="doceditor.php?type=document" target="_blank">Create<br />Sample Document</a></li>
<li><a class="try-editor spreadsheet" href="doceditor.php?type=spreadsheet" target="_blank">Create<br />Sample Spreadsheet</a></li>
<li><a class="try-editor presentation" href="doceditor.php?type=presentation" target="_blank">Create<br />Sample Presentation</a></li>
</ul>
<div class="help-block">
<span>Your documents</span>
<br />
<br />
<div class="stored-list">
<div id="UserFiles">
<table cellspacing="0" cellpadding="0" width="100%">
<thead>
<tr class="tableHeader">
<td class="tableHeaderCell tableHeaderCellFileName">Filename</td>
<td colspan="3" class="tableHeaderCell contentCells-shift">Editors</td>
<td colspan="3" class="tableHeaderCell">Viewers</td>
</tr>
</thead>
<tbody>
<?php $storedFiles = getStoredFiles();
foreach ($storedFiles as &$storeFile)
{
echo '<tr class="tableRow" title="'.$storeFile->name.'">';
echo ' <td class="contentCells">';
echo ' <a class="stored-edit '.$storeFile->documentType.'" href="doceditor.php?fileID='.urlencode($storeFile->name).'&user='.$user.'" target="_blank">';
echo ' <span title="'.$storeFile->name.'">'.$storeFile->name.'</span>';
echo ' </a>';
echo ' <a href="'.$storeFile->url.'">';
echo ' <img class="icon-download" src="css/images/download-24.png" alt="Download" title="Download" /></a>';
echo ' </a>';
echo ' <a class="delete-file" data="'.$storeFile->name.'">';
echo ' <img class="icon-delete" src="css/images/delete-24.png" alt="Delete" title="Delete" /></a>';
echo ' </a>';
echo ' </td>';
echo ' <td class="contentCells contentCells-icon">';
echo ' <a href="doceditor.php?fileID='.urlencode($storeFile->name).'&user='.$user.'" target="_blank">';
echo ' <img src="css/images/desktop-24.png" alt="Open in editor for full size screens" title="Open in editor for full size screens" /></a>';
echo ' </a>';
echo ' </td>';
echo ' <td class="contentCells contentCells-icon">';
echo ' <a href="doceditor.php?fileID='.urlencode($storeFile->name).'&user='.$user.'&type=mobile" target="_blank">';
echo ' <img src="css/images/mobile-24.png" alt="Open in editor for mobile devices" title="Open in editor for mobile devices" /></a>';
echo ' </a>';
echo ' <td class="contentCells contentCells-shift contentCells-icon">';
if ($storeFile->documentType == "text") {
echo ' <a href="doceditor.php?fileID='.urlencode($storeFile->name).'&user='.$user.'&action=review" target="_blank">';
echo ' <img src="css/images/review-24.png" alt="Open in editor for review" title="Open in editor for review" /></a>';
echo ' </a>';
}
echo ' </td>';
echo ' <td class="contentCells contentCells-icon">';
echo ' <a href="doceditor.php?fileID='.urlencode($storeFile->name).'&user='.$user.'&action=view" target="_blank">';
echo ' <img src="css/images/desktop-24.png" alt="Open in viewer for full size screens" title="Open in viewer for full size screens" /></a>';
echo ' </a>';
echo ' </td>';
echo ' <td class="contentCells contentCells-icon">';
echo ' <a href="doceditor.php?fileID='.urlencode($storeFile->name).'&user='.$user.'&action=view&type=mobile" target="_blank">';
echo ' <img src="css/images/mobile-24.png" alt="Open in viewer for mobile devices" title="Open in viewer for mobile devices" /></a>';
echo ' </a>';
echo ' </td>';
echo ' <td class="contentCells contentCells-icon">';
echo ' <a href="doceditor.php?fileID='.urlencode($storeFile->name).'&user='.$user.'&type=embedded" target="_blank">';
echo ' <img src="css/images/embeded-24.png" alt="Open in embedded mode" title="Open in embedded mode" /></a>';
echo ' </a>';
echo ' </td>';
echo '</tr>';
}
?>
</tbody>
</table>
</div>
</div>
</div>
<br />
<br />
<br />
<div class="help-block">
<span>Want to learn how it works?</span>
<span>Want to learn the magic?</span>
<br />
Read the editor <a href="http://api.onlyoffice.com/editors/howitworks">API Documentation</a>
Explore ONLYOFFICE Integration Edition <a href="http://api.onlyoffice.com/editors/howitworks" target="_blank">API Documentation.</a>
</div>
<br />
<br />
@ -107,15 +238,10 @@
<div class="help-block">
<span>Any questions?</span>
<br />
Please, <a href="mailto:sales@onlyoffice.com">submit your request</a> and we'll help you shortly.
Please, <a href="mailto:sales@onlyoffice.com">submit your request here</a>.
</div>
</div>
<div id="hint">
<div class="corner"></div>
If you check this option the file will be saved both in the original and converted into Office Open XML format for faster viewing and editing. In other case the document will be overwritten by its copy in Office Open XML format.
</div>
<div id="mainProgress">
<div id="uploadSteps">
<span id="step1" class="step">1. Loading the file</span>
@ -150,8 +276,9 @@
</div>
<span id="loadScripts" data-docs="<?php echo $GLOBALS['DOC_SERV_PRELOADER_URL'] ?>"></span>
<div class="bottom-panel">&copy; Ascensio System SIA <?php echo date("Y") ?>. All rights reserved.</div>
<footer>&copy; Ascensio Systems Inc <?php echo date("Y") ?>. All rights reserved.</footer>
<script type="text/javascript" src="js/jscript.js"></script>
</form>
</body>
</html>

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -26,6 +26,16 @@
if (typeof jQuery != "undefined") {
jq = jQuery.noConflict();
user = getUrlVars()["user"];
if ("" != user && undefined != user)
jq("#user").val(user);
else
user = jq("#user").val();
jq(document).on("change", "#user", function() {
window.location = "?user=" + jq(this).val();
});
jq(function () {
jq('#fileupload').fileupload({
dataType: 'json',
@ -108,7 +118,11 @@ if (typeof jQuery != "undefined") {
url: requestAddress,
complete: function (data) {
var responseText = data.responseText;
var response = jq.parseJSON(responseText);
try {
var response = jq.parseJSON(responseText);
} catch (e) {
response = { error: e };
}
if (response.error) {
jq(".current").removeClass("current");
@ -166,23 +180,25 @@ if (typeof jQuery != "undefined") {
jq(document).on("click", "#beginEdit:not(.disable)", function () {
var fileId = encodeURIComponent(jq('#hiddenFileName').val());
var url = "doceditor.php?fileID=" + fileId;
var url = "doceditor.php?fileID=" + fileId + "&user=" + user;
window.open(url, "_blank");
jq('#hiddenFileName').val("");
jq.unblockUI();
document.location.reload();
});
jq(document).on("click", "#beginView:not(.disable)", function () {
var fileId = encodeURIComponent(jq('#hiddenFileName').val());
var url = "doceditor.php?action=view&fileID=" + fileId;
var url = "doceditor.php?action=view&fileID=" + fileId + "&user=" + user;
window.open(url, "_blank");
jq('#hiddenFileName').val("");
jq.unblockUI();
document.location.reload();
});
jq(document).on("click", "#beginEmbedded:not(.disable)", function () {
var fileId = encodeURIComponent(jq('#hiddenFileName').val());
var url = "doceditor.php?action=embedded&fileID=" + fileId;
var url = "doceditor.php?type=embedded&fileID=" + fileId + "&user=" + user;
jq("#mainProgress").addClass("embedded");
jq("#beginEmbedded").addClass("disable");
@ -190,14 +206,60 @@ if (typeof jQuery != "undefined") {
jq("#embeddedView").attr("src", url);
});
jq(document).on("click", ".reload-page", function () {
setTimeout(function () { document.location.reload(); }, 1000);
return true;
});
jq(document).on("mouseup", ".reload-page", function (event) {
if (event.which == 2) {
setTimeout(function () { document.location.reload(); }, 1000);
}
return true;
});
jq(document).on("click", "#cancelEdit, .dialog-close", function () {
jq('#hiddenFileName').val("");
jq("#embeddedView").attr("src", "");
jq.unblockUI();
});
jq.dropdownToggle({
switcherSelector: ".question",
dropdownID: "hint"
jq(document).on("click", ".delete-file", function () {
var fileName = jq(this).attr("data");
var requestAddress = "webeditor-ajax.php?type=delete&fileName=" + fileName;
jq.ajax({
async: true,
contentType: "text/xml",
type: "get",
url: requestAddress,
complete: function (data) {
document.location.reload();
}
});
});
}
jq(document).on("click", "#createSample", function () {
jq(".try-editor").each(function () {
var href = jq(this).attr("href");
if (jq("#createSample").is(":checked")) {
href += "&sample=true";
} else {
href = href.replace("&sample=true", "");
}
jq(this).attr("href", href);
});
});
}
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
};

View File

@ -1,19 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<compilation debug="false" targetFramework="4.5">
<assemblies>
<remove assembly="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
</compilation>
<system.web>
<customErrors mode="Off"/>
</system.web>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="max-age=300, must-revalidate"/>
</customHeaders>
</httpProtocol>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="300000000">
@ -23,13 +13,9 @@
</requestLimits>
</requestFiltering>
</security>
<modules>
</modules>
<defaultDocument enabled="true">
</defaultDocument>
<modules/>
<defaultDocument enabled="true" />
<httpErrors errorMode="Detailed"/>
<urlCompression doDynamicCompression="false"/>
</system.webServer>
</configuration>

View File

@ -68,6 +68,10 @@ if (isset($_GET["type"]) && !empty($_GET["type"])) { //Checks if type value exis
$response_array = track();
$response_array['status'] = 'success';
die (json_encode($response_array));
case "delete":
$response_array = delete();
$response_array['status'] = 'success';
die (json_encode($response_array));
default:
$response_array['status'] = 'error';
$response_array['error'] = '404 Method not found';
@ -150,14 +154,33 @@ function track() {
$userAddress = $_GET["userAddress"];
$fileName = $_GET["fileName"];
$storagePath = getStoragePath($fileName, $userAddress);
$downloadUri = $data["url"];
$curExt = strtolower('.' . pathinfo($fileName, PATHINFO_EXTENSION));
$downloadExt = strtolower('.' . pathinfo($downloadUri, PATHINFO_EXTENSION));
if ($downloadExt != $curExt) {
$key = getDocEditorKey(downloadUri);
try {
sendlog("Convert " . $downloadUri . " from " . $downloadExt . " to " . $curExt, "logs/webedior-ajax.log");
$convertedUri;
$percent = GetConvertedUri($downloadUri, $downloadExt, $curExt, $key, FALSE, $convertedUri);
$downloadUri = $convertedUri;
} catch (Exception $e) {
sendlog("Convert after save ".$e->getMessage(), "logs/webedior-ajax.log");
$result["error"] = "error: " . $e->getMessage();
return $result;
}
}
$saved = 1;
if (($new_data = file_get_contents($downloadUri))===FALSE){
$saved = 0;
} else {
$storagePath = getStoragePath($fileName, $userAddress);
file_put_contents($storagePath, $new_data, LOCK_EX);
}
@ -181,7 +204,7 @@ function convert() {
if ($fileUri == "") {
$fileUri = FileUri($fileName);
}
$key = GenerateRevisionId($fileUri);
$key = getDocEditorKey($fileName);
$newFileUri;
$result;
@ -223,4 +246,19 @@ function convert() {
return $result;
}
function delete() {
try {
$fileName = $_GET["fileName"];
$filePath = getStoragePath($fileName);
unlink($filePath);
}
catch (Exception $e) {
sendlog("Deletion ".$e->getMessage(), "logs/webedior-ajax.log");
$result["error"] = "error: " . $e->getMessage();
return $result;
}
}
?>

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2016 ONLYOFFICE
Copyright (c) 2017 ONLYOFFICE
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -68,8 +68,7 @@
user: {
id: "<%= @file.cur_user_host_address %>",
firstname: "John",
lastname: "Smith",
name: "John Smith",
},
embedded: {

View File

@ -1,10 +1,10 @@
<div class="top-panel"></div>
<div class="main-panel">
<span class="portal-name">ONLYOFFICE Online Editors</span>
<span class="portal-name">ONLYOFFICE Online Editors</span>
<br />
<br />
<span class="portal-descr">Get started with a demo-sample of ONLYOFFICE Online Editors, the first html5-based editors. You may upload your own documents for testing using the "Choose file" button and selecting the necessary files on your PC.</span>
<span class="portal-descr">Get started with a demo-sample of ONLYOFFICE Online Editors, the first html5-based editors. You may upload your own documents for testing using the "Choose file" button and selecting the necessary files on your PC.</span>
<div class="file-upload button gray">
<span>Choose file</span>

View File

@ -2,7 +2,7 @@
<html>
<head>
<%= favicon_link_tag "favicon.ico" %>
<title>ONLYOFFICE</title>
<title>ONLYOFFICE</title>
<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" />
<%= stylesheet_link_tag "application" %>
</head>

View File

@ -1,6 +1,6 @@
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).

View File

@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!--*
*
* (c) Copyright Ascensio System Limited 2010-2016
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
@ -27,7 +27,7 @@
*-->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width">
<title>ONLYOFFICE Integration Edition</title>
<title>ONLYOFFICE Integration Edition</title>
<link href="css/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" />
<link rel="stylesheet" type="text/css" href="css/stylesheet.css">
@ -35,16 +35,16 @@
<body>
<header>
<a href="">
<img src="css/logo.png" alt="ONLYOFFICE">
<img src="css/logo.png" alt="ONLYOFFICE">
</a>
</header>
<div class="main-panel">
<span class="portal-name">ONLYOFFICE Integration Edition Welcome!</span>
<span class="portal-name">ONLYOFFICE Integration Edition Welcome!</span>
<br>
<br>
<span class="portal-descr">Congratulations! Your Document Server has successfully started. Now you can integrate ONLYOFFICE collaborative online document editing into your Web Application and use this Integration Edition to open, edit and save your own documents with the most popular file formats, such as .DOCX, .XLSX, .PPTX, etc. Our editors are fully implemented in HTML5!</span>
<span class="portal-descr">Congratulations! Your Document Server has successfully started. Now you can integrate ONLYOFFICE collaborative online document editing into your Web Application and use this Integration Edition to open, edit and save your own documents with the most popular file formats, such as .DOCX, .XLSX, .PPTX, etc. Our editors are fully implemented in HTML5!</span>
<ul class="features-list">
<li>Open, Edit and Save existing documents for in-browser editing using ONLYOFFICE Server documents.</li>
<li>Open, Edit and Save existing documents for in-browser editing using ONLYOFFICE Server documents.</li>
<li>Collaborative co-editing functions chat, comments and other multi-user features.</li>
<li>Use of Auto-save function.</li>
<li>All editing operations are processed on this virtual machine. Your documents stay under your complete control.</li>
@ -53,7 +53,7 @@
<div class="help-block">
<span>Want to learn the magic?</span>
<br>
Explore ONLYOFFICE Integration Edition <a href="http://api.onlyoffice.com/editors/howitworks" target="_blank">API Documentation.</a>
Explore ONLYOFFICE Integration Edition <a href="http://api.onlyoffice.com/editors/howitworks" target="_blank">API Documentation.</a>
</div>
<br>
<div class="help-block">