Skip to content

Commit

Permalink
Merge pull request #11 from ONLYOFFICE/release/1.0.1
Browse files Browse the repository at this point in the history
Release/1.0.1
  • Loading branch information
LinneyS authored Mar 3, 2017
2 parents ae7434a + 9fc0b0d commit 0a38a6a
Show file tree
Hide file tree
Showing 11 changed files with 131 additions and 45 deletions.
10 changes: 8 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,8 @@
owncloud-onlyoffice (1.0.0)
* Initial release
## 1.0.1
- fix exception when versions app is disabled
- adding protocol to document server url
- onlyofficeOpen is default action
- Nextcloud 11 compatibility

## 1.0.0
- Initial release
34 changes: 17 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,36 @@
# ![](screenshots/icon.png) OwnCloud ONLYOFFICE integration app
# ![](screenshots/icon.png) ownCloud/Nextcloud ONLYOFFICE integration app

This app enables users to edit office documents from [ownCloud](https://owncloud.com) using ONLYOFFICE Document Server. Currently the following document formats can be edited with this app: DOCX, XLSX, PPTX, TXT. The above mentioned formats are also available for viewing together with PDF and CSV. The edited files of the corresponding type can be converted into the Office Open XML formats: ODT, ODS, ODP, DOC, XLS, PPT, PPS, EPUB, RTF, HTML, HTM.
This app enables users to edit office documents from [ownCloud](https://owncloud.com)/[Nextcloud](https://nextcloud.com) using ONLYOFFICE Document Server. Currently the following document formats can be edited with this app: DOCX, XLSX, PPTX, TXT. The above mentioned formats are also available for viewing together with PDF and CSV. The edited files of the corresponding type can be converted into the Office Open XML formats: ODT, ODS, ODP, DOC, XLS, PPT, PPS, EPUB, RTF, HTML, HTM.

The app will create an item in the `new` (+) menu to create **Document**, **Spreadsheet**, **Presentation**. It will also create a new **Open in ONLYOFFICE** menu option within the document library for Office documents. This allows multiple users to collaborate in real time and to save back those changes to ownCloud.
The app will create an item in the `new` (+) menu to create **Document**, **Spreadsheet**, **Presentation**. It will also create a new **Open in ONLYOFFICE** menu option within the document library for Office documents. This allows multiple users to collaborate in real time and to save back those changes to ownCloud/Nextcloud.



## Installing ONLYOFFICE Document Server

You will need an instance of ONLYOFFICE Document Server that is resolvable and connectable both from ownCloud and any end clients (version 3.0 and later are supported for use with the app). If that is not the case, use the official ONLYOFFICE Document Server documetnations page: [Document Server for Linux](http://helpcenter.onlyoffice.com/server/linux/document/linux-installation.aspx). ONLYOFFICE Document Server must also be able to POST to ownCloud directly.
You will need an instance of ONLYOFFICE Document Server that is resolvable and connectable both from ownCloud/Nextcloud and any end clients (version 3.0 and later are supported for use with the app). If that is not the case, use the official ONLYOFFICE Document Server documetnations page: [Document Server for Linux](http://helpcenter.onlyoffice.com/server/linux/document/linux-installation.aspx). ONLYOFFICE Document Server must also be able to POST to ownCloud directly.

The easiest way to start an instance of ONLYOFFICE Document Server is to use [Docker](https://github.com/ONLYOFFICE/Docker-DocumentServer).



## Installing ownCloud ONLYOFFICE integration app
## Installing ownCloud/Nextcloud ONLYOFFICE integration app

To start using ONLYOFFICE Document Server with ownCloud, the following steps must be performed:
To start using ONLYOFFICE Document Server with ownCloud/Nextcloud, the following steps must be performed:

1. Place ownCloud ONLYOFFICE integration app to your ownCloud server into the _/apps_ (or some other) directory, [used](https://doc.owncloud.org/server/9.0/admin_manual/installation/apps_management_installation.html#using-custom-app-directories) to connect applications:
1. Place ownCloud/Nextcloud ONLYOFFICE integration app to your ownCloud/Nextcloud server into the _/apps_ (or some other) directory, [used](https://doc.owncloud.org/server/9.0/admin_manual/installation/apps_management_installation.html#using-custom-app-directories) to connect applications:
```
cd apps/
git clone https://github.com/ONLYOFFICE/onlyoffice-owncloud.git onlyoffice
```

2. In ownCloud open the `~/index.php/settings/apps?category=disabled` page with _Not enabled_ apps by administrator and click _Enable_ for the **ONLYOFFICE** application.
2. In ownCloud/Nextcloud open the `~/index.php/settings/apps?category=disabled` page with _Not enabled_ apps by administrator and click _Enable_ for the **ONLYOFFICE** application.



## Configuring ownCloud ONLYOFFICE integration app
## Configuring ownCloud/Nextcloud ONLYOFFICE integration app

In ownCloud open the `~/index.php/settings/admin#onlyoffice` page with administrative settings for **ONLYOFFICE** section and enter the address
In ownCloud/Nextcloud open the `~/index.php/settings/admin#onlyoffice` page with administrative settings for **ONLYOFFICE** section and enter the address

```
https://<documentserver>
Expand All @@ -44,11 +44,11 @@ Where the **documentserver** is the name of the server with the ONLYOFFICE Docum

The ONLYOFFICE integration follows the API documented here https://api.onlyoffice.com/editors/basic:

* When creating a new file, the user navigates to a document folder within ownCloud and clicks the **Document**, **Spreadsheet** or **Presentation* item in the _new_ (+) menu.
* When creating a new file, the user navigates to a document folder within ownCloud/Nextcloud and clicks the **Document**, **Spreadsheet** or **Presentation* item in the _new_ (+) menu.

* The browser invokes the `create` method in the `/lib/Controller/EditorController.php` controller. This method adds the copy of the file from the assets folder to the folder the user is currently in.

* Or, when opening an existing file, the user navigates to it within ownCloud and selects the **Open in ONLYOFFICE** menu option.
* Or, when opening an existing file, the user navigates to it within ownCloud/Nextcloud and selects the **Open in ONLYOFFICE** menu option.

* A new browser tab is opened and the `index` method of the `/lib/Controller/EditorController.php` controller is invoked.

Expand All @@ -62,16 +62,16 @@ The ONLYOFFICE integration follows the API documented here https://api.onlyoffic
* **userId** - the identification of the user;
* **userName** - the name of the user.

* ownCloud takes this object and constructs a page from `templates/editor.php` template, filling in all of those values so that the client browser can load up the editor.
* ownCloud/Nextcloud takes this object and constructs a page from `templates/editor.php` template, filling in all of those values so that the client browser can load up the editor.

* The client browser makes a request for the javascript library from ONLYOFFICE Document Server and sends ONLYOFFICE Document Server the DocEditor configuration with the above properties.

* Then ONLYOFFICE Document Server downloads the document from ownCloud and the user begins editing.
* Then ONLYOFFICE Document Server downloads the document from ownCloud/Nextcloud and the user begins editing.

* ONLYOFFICE Document Server sends a POST request to the _callback_ URL to inform ownCloud that a user is editing the document.
* ONLYOFFICE Document Server sends a POST request to the _callback_ URL to inform ownCloud/Nextcloud that a user is editing the document.

* When all users and client browsers are done with editing, they close the editing window.

* After 10 seconds of inactivity, ONLYOFFICE Document Server sends a POST to the _callback_ URL letting ownCloud know that the clients have finished editing the document and closed it.
* After 10 seconds of inactivity, ONLYOFFICE Document Server sends a POST to the _callback_ URL letting ownCloud/Nextcloud know that the clients have finished editing the document and closed it.

* ownCloud downloads the new version of the document, replacing the old one.
* ownCloud/Nextcloud downloads the new version of the document, replacing the old one.
10 changes: 7 additions & 3 deletions appinfo/info.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
<summary>ownCloud ONLYOFFICE integration app</summary>
<description>ONLYOFFICE integration app enables users to edit Office documents within ONLYOFFICE from OwnCloud. This will create a new Open in ONLYOFFICE action within the document library for Office documents. This allows multiple users to collaborate in real time and to save back those changes to OwnCloud.</description>
<licence>AGPL</licence>
<author>Ascensio System SIA</author>
<version>1.0.0</version>
<author mail="dev@onlyoffice.com" homepage="https://www.onlyoffice.com/">Ascensio System SIA</author>
<version>1.0.1</version>
<namespace>Onlyoffice</namespace>
<types>
<filesystem/>
Expand All @@ -24,6 +24,10 @@
<screenshot>https://raw.githubusercontent.com/ONLYOFFICE/onlyoffice-owncloud/master/screenshots/open.png</screenshot>
<screenshot>https://raw.githubusercontent.com/ONLYOFFICE/onlyoffice-owncloud/master/screenshots/settings.png</screenshot>
<dependencies>
<owncloud min-version="9.0" max-version="9.1" />
<owncloud min-version="9.0" max-version="9.2" />
<nextcloud min-version="11" max-version="11"/>
</dependencies>
<settings>
<admin>OCA\Onlyoffice\AdminSettings</admin>
</settings>
</info>
8 changes: 4 additions & 4 deletions controller/editorcontroller.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

namespace OCA\Onlyoffice\Controller;

use OCP\App;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Http\ContentSecurityPolicy;
use OCP\AppFramework\Controller;
Expand Down Expand Up @@ -379,12 +380,11 @@ private function getKey($file) {

$key = $fileId . $file->getMtime();

$ownerView = new View('/'.$ownerId.'/files');
$ownerView = new View("/" . $ownerId . "/files");
$filePath = $ownerView->getPath($fileId);
$versions = "";
try {
$versions = [];
if (App::isEnabled("files_versions")) {
$versions = Storage::getVersions($ownerId, $filePath);
} catch (AutoloadNotAllowedException $e) {
}

$countVersions = count($versions);
Expand Down
4 changes: 2 additions & 2 deletions controller/settingscontroller.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public function __construct($AppName,
* @return TemplateResponse
*/
public function index() {
$data = [ "documentserver" => $this->config->GetDocumentServerUrl()];
$data = ["documentserver" => $this->config->GetDocumentServerUrl()];
return new TemplateResponse($this->appName, "settings", $data, "blank");
}

Expand All @@ -77,7 +77,7 @@ public function index() {
*/
public function settings($documentserver) {
$this->config->SetDocumentServerUrl($documentserver);
return [ "documentserver" => $this->config->GetDocumentServerUrl()];
return ["documentserver" => $this->config->GetDocumentServerUrl()];
}

/**
Expand Down
6 changes: 3 additions & 3 deletions css/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@
*
*/

.onlyoffice-new-docx {
.icon-onlyoffice-new-docx {
background-image: url("../img/new-docx.svg");
}
.onlyoffice-new-xlsx {
.icon-onlyoffice-new-xlsx {
background-image: url("../img/new-xlsx.svg");
}
.onlyoffice-new-pptx {
.icon-onlyoffice-new-pptx {
background-image: url("../img/new-pptx.svg");
}
16 changes: 10 additions & 6 deletions js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@
}
};

OCA.Onlyoffice.FileClick = function (context, attr) {
var fileInfoModel = context.fileInfoModel;
OCA.Onlyoffice.FileClick = function (fileName, context, attr) {
var fileInfoModel = context.fileInfoModel || context.fileList.getModelForFile(fileName);
var fileList = context.fileList;
if (!attr.conv) {
OCA.Onlyoffice.OpenEditor(fileInfoModel.id);
Expand Down Expand Up @@ -140,9 +140,13 @@
return OC.imagePath(OCA.Onlyoffice.AppName, "btn-edit");
},
actionHandler: function (fileName, context) {
OCA.Onlyoffice.FileClick(context, attr);
OCA.Onlyoffice.FileClick(fileName, context, attr);
}
});

if (attr.def && !fileList.fileActions.getDefaultFileAction(attr.mime, "file", OC.PERMISSION_READ)) {
fileList.fileActions.setDefault(attr.mime, "onlyofficeOpen");
}
});
}
);
Expand All @@ -160,7 +164,7 @@
menu.addMenuEntry({
id: "onlyofficeDocx",
displayName: t(OCA.Onlyoffice.AppName, "Document"),
iconClass: "onlyoffice-new-docx",
iconClass: "icon-onlyoffice-new-docx",
fileType: "docx",
actionHandler: function (name) {
OCA.Onlyoffice.CreateFile(name + ".docx", fileList);
Expand All @@ -170,7 +174,7 @@
menu.addMenuEntry({
id: "onlyofficeXlsx",
displayName: t(OCA.Onlyoffice.AppName, "Spreadsheet"),
iconClass: "onlyoffice-new-xlsx",
iconClass: "icon-onlyoffice-new-xlsx",
fileType: "xlsx",
actionHandler: function (name) {
OCA.Onlyoffice.CreateFile(name + ".xlsx", fileList);
Expand All @@ -180,7 +184,7 @@
menu.addMenuEntry({
id: "onlyofficePpts",
displayName: t(OCA.Onlyoffice.AppName, "Presentation"),
iconClass: "onlyoffice-new-pptx",
iconClass: "icon-onlyoffice-new-pptx",
fileType: "pptx",
actionHandler: function (name) {
OCA.Onlyoffice.CreateFile(name + ".pptx", fileList);
Expand Down
70 changes: 70 additions & 0 deletions lib/adminsettings.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
<?php
/**
*
* (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).
* In accordance with Section 7(a) of the GNU GPL its Section 15 shall be amended to the effect that
* Ascensio System SIA expressly excludes the warranty of non-infringement of any third-party rights.
*
* THIS PROGRAM IS DISTRIBUTED WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR
* FITNESS FOR A PARTICULAR PURPOSE. For more details, see GNU GPL at https://www.gnu.org/copyleft/gpl.html
*
* You can contact Ascensio System SIA by email at sales@onlyoffice.com
*
* The interactive user interfaces in modified source and object code versions of ONLYOFFICE must display
* Appropriate Legal Notices, as required under Section 5 of the GNU GPL version 3.
*
* Pursuant to Section 7 § 3(b) of the GNU GPL you must retain the original ONLYOFFICE logo which contains
* relevant author attributions when distributing the software. If the display of the logo in its graphic
* form is not reasonably feasible for technical reasons, you must include the words "Powered by ONLYOFFICE"
* in every copy of the program you distribute.
* Pursuant to Section 7 § 3(e) we decline to grant you any rights under trademark law for use of our trademarks.
*
*/

namespace OCA\Onlyoffice;

use OCP\Settings\ISettings;

use OCA\Onlyoffice\AppInfo\Application;

/**
* Settings controller for the administration page
*/
class AdminSettings implements ISettings {

public function __construct() {
}

/**
* Print config section
*
* @return TemplateResponse
*/
public function getForm() {
$app = new Application();
$container = $app->getContainer();
$response = $container->query("\OCA\Onlyoffice\Controller\SettingsController")->index();
return $response;
}

/**
* Get section ID
*
* @return string
*/
public function getSection() {
return "server";
}

/**
* Get priority order
*
* @return int
*/
public function getPriority() {
return 50;
}
}
13 changes: 8 additions & 5 deletions lib/appconfig.php
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,10 @@ public function __construct($AppName) {
* @param string $documentServer - document service address
*/
public function SetDocumentServerUrl($documentServer) {
$documentServer = rtrim(trim($documentServer), "/");
$documentServer = strtolower(rtrim(trim($documentServer), "/"));
if (strlen($documentServer) > 0 && !preg_match("/^https?:\/\//i", $documentServer)) {
$documentServer = "http://" . $documentServer;
}
$this->config->setAppValue($this->appName, $this->_documentserver, $documentServer);
$this->DropSKey();
}
Expand Down Expand Up @@ -126,10 +129,10 @@ private function DropSKey() {
* @var array
*/
public $formats = [
"docx" => [ "mime" => "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "type" => "text", "edit" => true ],
"xlsx" => [ "mime" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "type" => "spreadsheet", "edit" => true ],
"pptx" => [ "mime" => "application/vnd.openxmlformats-officedocument.presentationml.presentation", "type" => "presentation", "edit" => true ],
"ppsx" => [ "mime" => "application/vnd.openxmlformats-officedocument.presentationml.slideshow", "type" => "presentation", "edit" => true ],
"docx" => [ "mime" => "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "type" => "text", "edit" => true, "def" => true ],
"xlsx" => [ "mime" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "type" => "spreadsheet", "edit" => true, "def" => true ],
"pptx" => [ "mime" => "application/vnd.openxmlformats-officedocument.presentationml.presentation", "type" => "presentation", "edit" => true, "def" => true ],
"ppsx" => [ "mime" => "application/vnd.openxmlformats-officedocument.presentationml.slideshow", "type" => "presentation", "edit" => true, "def" => true ],
"txt" => [ "mime" => "text/plain", "type" => "text", "edit" => true ],
"csv" => [ "mime" => "text/csv", "type" => "spreadsheet"/*, "edit" => true*/ ],
"odt" => [ "mime" => "application/vnd.oasis.opendocument.text", "type" => "text", "conv" => true ],
Expand Down
2 changes: 1 addition & 1 deletion settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
* Pursuant to Section 7 § 3(e) we decline to grant you any rights under trademark law for use of our trademarks.
*
*/

namespace OCA\Onlyoffice;

use OCP\User;
Expand Down
3 changes: 1 addition & 2 deletions templates/editor.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,8 @@
p($_["documentServerUrl"]) .
print_unescaped("/web-apps/apps/api/documents/api.js\" type=\"text/javascript\"></script>");
} ?>


<script type="text/javascript">
<script type="text/javascript" nonce="<?php p(base64_encode($_["requesttoken"])) ?>">
OCA.Onlyoffice.OpenEditor ({
error: "<?php empty($_["error"]) ? "" : p($_["error"]) ?>",

Expand Down

0 comments on commit 0a38a6a

Please sign in to comment.