How to configure nuxeo-wopi to use wopi apps other than Ms Office Online?

Our company, Collabora Productivity, one of the leading contributors to LibreOffice, develops a WOPI app - similar to MS Office Online - called Collabora Online [1].

We started to evaluate if Nuxeo platform is a compatible WOPI host, to allow our customers to integrate Collabora Online with Nuxeo. We learned that Nuxeo has own WOPI module [2], [3], [4], and rolled out a test Nuxeo server (self-built from master according to [5]) to try to connect it with Collabora Online.

We could set the server up, and could make necessary changes to configuration as per documentation [3]. Namely, nuxeo.jwt.secret and nuxeo.wopi.discoveryURL had to be specified in nuxeo.conf. Our testing environment doesn't use https to make testing simpler, so no special configuration of that was necessary; nor configuring base URL.

But that wasn't enough to allow Nuxeo recognize the WOPI app, and suggest corresponding buttons/links when working with document types that Collabora Online supports (there are more than 80 of them).

It turned out that Nuxeo had filtered out all apps that Collabora Online was advertising in its discovery. It appears that nuxeo-wopi module uses own configuration contrib:

modules/platform/nuxeo-wopi/src/main/resources/OSGI-INF/properties-contrib.xml,

used for filtering the apps from discovery (WOPIServiceImpl.loadDiscovery), which only includes apps advertised by MS discovery: Word, Excel, PowerPoint, and WopiTest. And we found no documentation on how could we extend the list without modifying the XML inside the JAR. That was my first question: how to allow users to configure app filter list beyond what is pre-defined by Nuxeo? (Of course, we could modify it locally; but that doesn't look sane to suggest doing that to users.)

After our modification of properties-contrib.xml inside nuxeo-wopi JAR, Nuxeo started to recognize our WOPI app, and allowed us to open/edit/save the documents successfully. But the links it provided shown broken images: see badButtonIcons.png (attached). Turns out that Nuxeo assumes that all apps have such names so that there are appropriate

On [3], there is a sign that connecting WOPI apps other than MS is supported:

If you target a WOPI client other than Office Online, just set its discovery URL instead of the Office Online one.

Thus we think that addressing these two issues could help actually implement such connection, and improve the integration of the two products, to our mutual interest.

Hope this makes sense; hope to hear from you soon.

[1] https://www.collaboraoffice.com/

[2] https://jira.nuxeo.com/browse/NXP-23174

[3] https://doc.nuxeo.com/nxdoc/next/nuxeo-office-online-integration/

[4] https://connect.nuxeo.com/nuxeo/site/marketplace/package/nuxeo-wopi

[5] https://doc.nuxeo.com/corg/

0 votes

2 answers

1338 views

ANSWER

I don't see the "badButtonIcons.png" file.
07/30/2020

Thanks - added the missing file; sorry for that.
07/30/2020



Hello,

You can already configure new apps directly in your own module that you deploys inside Nuxeo Server, or through a configuration file inside $NUXEO_HOME/nxserver/config.

For instance, adding a new file collaboraoffice-config.xml in $NUXEO_HOME/nxserver/config where you can add new apps:

<?xml version="1.0"?>
<component name="com.collaboraoffice.wopi.properties">

  <require>org.nuxeo.wopi.properties</require>

  <extension target="org.nuxeo.runtime.ConfigurationService" point="configuration">
    <property name="org.nuxeo.wopi.supportedAppNames">YouApp1</property>
    <property name="org.nuxeo.wopi.supportedAppNames">YouApp2</property>
    <property name="org.nuxeo.wopi.supportedAppNames">YouApp3</property>
  </extension>

</component>

The <require>org.nuxeo.wopi.properties</require> is used to append apps to the existing ones defined inside Nuxeo.

1 votes



Thank you for information! That's great. Now only icon question remains.
07/30/2020

Tested and confirmed that it works. Thanks again! Voted; didn't (yet) accept, because don't know if this site allows several accepted answers; and the question still needs an answer to its second part (icons).
07/30/2020


The images used in the WebUI are taken from ${env.home}/nuxeo.war/ui/images, named like appname.png (the code is in nuxeo-wopi-link.js). This allows to install these images in own module, using copy scripting command like this:

<install>
  <copy file="${package.root}/install/images/appname.png" todir="${env.home}/nuxeo.war/ui/images" />
</install>
0 votes