Skip to content

Commit

Permalink
Merge pull request #9 from ONLYOFFICE/develop
Browse files Browse the repository at this point in the history
Release/v2.0.0
  • Loading branch information
LinneyS authored Apr 15, 2021
2 parents 7dd1d53 + e4c8a13 commit c2a4508
Show file tree
Hide file tree
Showing 42 changed files with 827 additions and 97 deletions.
6 changes: 6 additions & 0 deletions 3rd-Party.license
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Plone ONLYOFFICE integration plugin uses code from the following 3rd party projects:


PyJWT - A Python implementation of JWT (https://opensource.org/licenses/MIT)
License: MIT
License File: PyJWT.license
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Change Log

## 2.0.0
## Added
- JWT support
## Fixed
- Issue when files inside unpublished folders couldn't be edited

## 1.0.0
## Added
- Edit option for DOCX, XLSX, PPTX.
Expand Down
17 changes: 17 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
include *.js
include *.json
include *.py
include *.md
include *.txt
include *.cfg
recursive-include src *.css
recursive-include src *.js
recursive-include src *.map
recursive-include src *.po
recursive-include src *.pot
recursive-include src *.pt
recursive-include src *.py
recursive-include src *.sh
recursive-include src *.txt
recursive-include src *.xml
recursive-include src *.zcml
156 changes: 95 additions & 61 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Plone ONLYOFFICE integration plugin

This plugin allows users to edit office documents within [Plone](https://plone.org/) using ONLYOFFICE Document Server - [Community or Integration Edition](#onlyoffice-document-server-editions).
This plugin allows users to edit office documents within [Plone](https://plone.org/) using ONLYOFFICE Docs packaged as Document Server - [Community or Enterprise Edition](#onlyoffice-docs-editions).

## Features

Expand All @@ -15,39 +15,99 @@ Supported formats:
* For viewing and editing: DOCX, XLSX, PPTX.
* For viewing only: PDF, ODT, ODS, ODP, DOC, XLS, PPT.

## Installing ONLYOFFICE Document Server
## Installing ONLYOFFICE Docs

You will need an instance of ONLYOFFICE Document Server that is resolvable and connectable both from Plone and any end-clients. ONLYOFFICE Document Server must also be able to POST to Plone directly.
You will need an instance of ONLYOFFICE Docs (Document Server) that is resolvable and connectable both from Plone and any end-clients. ONLYOFFICE Document Server must also be able to POST to Plone directly.

You can install free Community version of ONLYOFFICE Document Server or scalable enterprise-level Integration Edition.
You can install free Community version of ONLYOFFICE Docs or scalable Enterprise Edition with pro features.

To install free Community version, use [Docker](https://github.com/onlyoffice/Docker-DocumentServer) (recommended) or follow [these instructions](https://helpcenter.onlyoffice.com/server/linux/document/linux-installation.aspx) for Debian, Ubuntu, or derivatives.

To install Integration Edition, follow instructions [here](https://helpcenter.onlyoffice.com/server/integration-edition/index.aspx).
To install Enterprise Edition, follow instructions [here](https://helpcenter.onlyoffice.com/server/integration-edition/index.aspx).

Community Edition vs Integration Edition comparison can be found [here](#onlyoffice-document-server-editions).
Community Edition vs Enterprise Edition comparison can be found [here](#onlyoffice-docs-editions).

## Installing Plone ONLYOFFICE integration plugin

Install plugin by adding it to your `buildout.cfg`:
1. Install plugin by adding it to your `buildout.cfg`:
```
[buildout]
```
[buildout]
...
...
eggs =
onlyoffice.connector
```
2. Run `bin/buildout`.
3. Go to `Site Setup` -> `Add-ons`and press the `Install` button to enable plugin.
eggs =
onlyoffice.connector
You could also install plugin via Docker
```

and then running `bin/buildout`

To enable plugin, go to `Site Setup` -> `Add-ons`and press the `Install` button.
docker run --rm -p 8080:8080 -e ADDONS="onlyoffice.connector" plone
```
Both options will automatically install plugin from [PyPi](https://pypi.org/project/onlyoffice.connector/).
## Configuring Plone ONLYOFFICE integration plugin
To configure plugin go to `Site Setup`. Scroll down to `Add-ons Configuration` section and press the `ONLYOFFICE Configuration` button.
## Developing Plone ONLYOFFICE plugin
1. Clone repository and change directory:
```
git clone --branch deploy [email protected]:ONLYOFFICE/onlyoffice-plone.git
cd onlyoffice-plone
```
2. Create a virtualenv in the package.
3. Install requirements with pip.
4. Run buildout:
```
virtualenv .
./bin/pip install -r requirements.txt
./bin/buildout
```
5. Start Plone in foreground:
```
./bin/instance fg
```
If you have a working Plone instance, you can install plugin by adding the project files to the src directory:
1. In the src directory create the onlyoffice.connector directory.
2. Put your project files received by git into the onlyoffice.connector directory.
3. Edit the buildout.cfg file:
```
[buildout]
...
eggs =
onlyoffice.connector
develop =
src/onlyoffice.connector
```
4. Rerun buildout for the changes to take effect:
```
./bin/buildout
```
5. Then start or restart your Plone instance.
Note that Plone is based on Zope server and will not run as `root` user. If you intend to run it as `root` user. You must supply [effective-user directive](https://zope.readthedocs.io/en/2.12/SETUID.html). In order to do so add `effective-user <username>` line to `./parts/instance/etc/zope.conf`.
## Upgrade Plone ONLYOFFICE integration plugin
1. If you specified a concrete plugin version in your buildout.cfg file (so-called “pinning”, and a recommended practice),
like onlyoffice.connector = 1.0.0, update this reference to point to the newer version. If the plugin version is not
specified, then the latest version will be automatically loaded:
```
[versions]
...
onlyoffice.connector = 1.0.1
```
2. Run bin/buildout. Wait until the new version is downloaded and installed.
3. Restart Plone - your site may look weird, or even be inaccessible until you have performed the next step.
4. Navigate to the Add-on screen (add /prefs_install_products_form to your site URL) and in the Upgrades list select onlyoffice.connector and click "Upgrade onlyoffice.connector".
## How it works
The ONLYOFFICE integration follows the API documented [here](https://api.onlyoffice.com/editors/basic):
Expand All @@ -66,73 +126,44 @@ The ONLYOFFICE integration follows the API documented [here](https://api.onlyoff
* After 10 seconds of inactivity, ONLYOFFICE Document Server sends a POST to the `callback` URL letting Plone know that the clients have finished editing the document and closed it.
* Plone downloads the new version of the document, replacing the old one.
## Developing Plone ONLYOFFICE plugin

- Clone repository and change directory

```
git clone --branch deploy [email protected]:ONLYOFFICE/onlyoffice-plone.git
cd onlyoffice-plone
```

- Create a virtualenv in the package
- Install requirements with pip
- Run buildout

```
virtualenv --clear .
./bin/pip install -r requirements.txt
./bin/buildout
```

- Start Plone in foreground

```
./bin/instance fg
```

Note that Plone is based on Zope server and will not run as `root` user. If you intend to run it as `root` user. You must supply [effective-user directive](https://zope.readthedocs.io/en/2.12/SETUID.html). In order to do so add `effective-user <username>` line to `./parts/instance/etc/zope.conf`.

## ONLYOFFICE Document Server editions
## ONLYOFFICE Docs editions
ONLYOFFICE offers different versions of its online document editors that can be deployed on your own servers.
**ONLYOFFICE Document Server:**

* Community Edition (`onlyoffice-documentserver` package)
* Integration Edition (`onlyoffice-documentserver-ie` package)
* Enterprise Edition (`onlyoffice-documentserver-ie` package)
The table below will help you make the right choice.
| Pricing and licensing | Community Edition | Integration Edition |
| Pricing and licensing | Community Edition | Enterprise Edition |
| ------------- | ------------- | ------------- |
| | [Get it now](https://www.onlyoffice.com/download.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubPlone) | [Start Free Trial](https://www.onlyoffice.com/connectors-request.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubPlone) |
| Cost | FREE | [Go to the pricing page](https://www.onlyoffice.com/integration-edition-prices.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubPlone) |
| | [Get it now](https://www.onlyoffice.com/download.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubPlone) | [Start Free Trial](https://www.onlyoffice.com/enterprise-edition-free.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubPlone) |
| Cost | FREE | [Go to the pricing page](https://www.onlyoffice.com/enterprise-edition.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubPlone) |
| Simultaneous connections | up to 20 maximum | As in chosen pricing plan |
| Number of users | up to 20 recommended | As in chosen pricing plan |
| License | GNU AGPL v.3 | Proprietary |
| **Support** | **Community Edition** | **Integration Edition** |
| **Support** | **Community Edition** | **Enterprise Edition** |
| Documentation | [Help Center](https://helpcenter.onlyoffice.com/server/docker/opensource/index.aspx) | [Help Center](https://helpcenter.onlyoffice.com/server/integration-edition/index.aspx) |
| Standard support | [GitHub](https://github.com/ONLYOFFICE/DocumentServer/issues) or paid | One year support included |
| Premium support | [Buy Now](https://www.onlyoffice.com/support.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubPlone) | [Buy Now](https://www.onlyoffice.com/support.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubPlone) |
| **Services** | **Community Edition** | **Integration Edition** |
| **Services** | **Community Edition** | **Enterprise Edition** |
| Conversion Service | + | + |
| Document Builder Service | + | + |
| **Interface** | **Community Edition** | **Integration Edition** |
| **Interface** | **Community Edition** | **Enterprise Edition** |
| Tabbed interface | + | + |
| White Label | - | - |
| Integrated test example (node.js) | - | + |
| **Plugins & Macros** | **Community Edition** | **Integration Edition** |
| **Plugins & Macros** | **Community Edition** | **Enterprise Edition** |
| Plugins | + | + |
| Macros | + | + |
| **Collaborative capabilities** | **Community Edition** | **Integration Edition** |
| **Collaborative capabilities** | **Community Edition** | **Enterprise Edition** |
| Two co-editing modes | + | + |
| Comments | + | + |
| Built-in chat | + | + |
| Review and tracking changes | + | + |
| Display modes of tracking changes | + | + |
| Version history | + | + |
| **Document Editor features** | **Community Edition** | **Integration Edition** |
| **Document Editor features** | **Community Edition** | **Enterprise Edition** |
| Font and paragraph formatting | + | + |
| Object insertion | + | + |
| Adding Content control | - | + |
Expand All @@ -141,20 +172,23 @@ The table below will help you make the right choice.
| Table of contents | + | + |
| Navigation panel | + | + |
| Comparing Documents | - | +* |
| **Spreadsheet Editor features** | **Community Edition** | **Integration Edition** |
| **Spreadsheet Editor features** | **Community Edition** | **Enterprise Edition** |
| Font and paragraph formatting | + | + |
| Object insertion | + | + |
| Functions, formulas, equations | + | + |
| Table templates | + | + |
| Pivot tables | +** | +** |
| **Presentation Editor features** | **Community Edition** | **Integration Edition** |
| Pivot tables | + | + |
| Conditional formatting for viewing | +** | +** |
| Sheet views | - | + |
| **Presentation Editor features** | **Community Edition** | **Enterprise Edition** |
| Font and paragraph formatting | + | + |
| Object insertion | + | + |
| Animations | + | + |
| Presenter mode | + | + |
| Notes | + | + |
| | [Get it now](https://www.onlyoffice.com/download.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubPlone) | [Start Free Trial](https://www.onlyoffice.com/connectors-request.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubPlone) |
| | [Get it now](https://www.onlyoffice.com/download.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubPlone) | [Start Free Trial](https://www.onlyoffice.com/enterprise-edition-free.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubPlone) |
\* It's possible to add documents for comparison from your local drive and from URL. Adding files for comparison from storage is not available yet.
\** Changing style and deleting (Full support coming soon)
\** Support for all conditions and gradient. Adding/Editing capabilities are coming soon
107 changes: 107 additions & 0 deletions base.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
[buildout]
show-picked-versions = true
extensions =
mr.developer

index = https://pypi.python.org/simple/

parts =
instance
test
code-analysis
coverage
test-coverage
createcoverage
releaser
i18ndude
omelette
robot
plone-helper-scripts
develop = .


[instance]
recipe = plone.recipe.zope2instance
user = admin:admin
http-address = 8080
environment-vars =
zope_i18n_compile_mo_files true
eggs =
Plone
Pillow
plone.app.debugtoolbar
onlyoffice.connector [test]


[code-analysis]
recipe = plone.recipe.codeanalysis
directory = ${buildout:directory}/src/onlyoffice
return-status-codes = False


[omelette]
recipe = collective.recipe.omelette
eggs = ${instance:eggs}


[test]
recipe = zc.recipe.testrunner
eggs = ${instance:eggs}
initialization =
os.environ['TZ'] = 'UTC'
defaults = ['-s', 'onlyoffice.connector', '--auto-color', '--auto-progress']


[coverage]
recipe = zc.recipe.egg
eggs = coverage


[test-coverage]
recipe = collective.recipe.template
input = inline:
#!/bin/bash
export TZ=UTC
${buildout:directory}/bin/coverage run bin/test $*
${buildout:directory}/bin/coverage html
${buildout:directory}/bin/coverage report -m --fail-under=90
# Fail (exit status 1) if coverage returns exit status 2 (this happens
# when test coverage is below 100%.
output = ${buildout:directory}/bin/test-coverage
mode = 755


[createcoverage]
recipe = zc.recipe.egg
eggs = createcoverage


[robot]
recipe = zc.recipe.egg
eggs =
${test:eggs}
plone.app.robotframework[debug,reload]


[releaser]
recipe = zc.recipe.egg
eggs = zest.releaser


[i18ndude]
recipe = zc.recipe.egg
eggs = i18ndude

[plone-helper-scripts]
recipe = zc.recipe.egg
eggs =
Products.CMFPlone
${instance:eggs}
interpreter = zopepy
scripts =
zopepy
plone-compile-resources

[versions]
# Don't use a released version of onlyoffice.connector
onlyoffice.connector =
9 changes: 9 additions & 0 deletions buildout.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[buildout]

# use this extend one of the buildout configuration:
extends =
# -*- mrbob: extra extends -*-
# test_plone43.cfg
# test_plone50.cfg
# test_plone51.cfg
test_plone52.cfg
3 changes: 3 additions & 0 deletions constraints_plone52.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
-c https://dist.plone.org/release/5.2-latest/requirements.txt
# setuptools==40.2.0
# zc.buildout==2.12.2
Loading

0 comments on commit c2a4508

Please sign in to comment.