WEBVTT

00:00.000 --> 00:21.500
Hello, my name is Lafina, I am a software development engineer at Lauderd, and I am a software

00:21.500 --> 00:33.020
development engineer in Lauderd, and today I will talk about Libra Office based

00:33.020 --> 00:46.700
document editing in Lauderd, using Columbo online, and I will show you quickly how the integration

00:46.700 --> 00:53.700
actually is looking, and I will go through some technical details about how the integration

00:53.700 --> 00:59.940
was done. To say a few words about XWiki, XWiki, it is a Wikipedia-based collaborative tool

00:59.940 --> 01:16.660
that enables collaboration. It is a light and a powerful platform that allows you to

01:16.660 --> 01:23.660
have a bit nervous. It is my first time, it is my first presentation.

01:23.660 --> 01:36.660
I know you can customize your Wiki based on your needs, relying on this, you can develop

01:36.660 --> 01:45.660
and install extensions, so we did such an extension for integrating with Columbo.

01:45.660 --> 01:52.660
I will show you a little bit how it looks, so starting from a basic Wikipedia page, you can

01:52.660 --> 02:00.660
go through the attachment section where you can either edit existing office attachments using

02:00.660 --> 02:07.660
the Columbo robot, or you can create new office files that will be attached to this page.

02:07.660 --> 02:14.660
This is the form for creating a new office document, and this is how it looks when you are

02:14.660 --> 02:24.660
editing to a page to edit the file using Columbo. This enables all the Columbo online features.

02:24.660 --> 02:31.660
You can also, for example, see the fact that you can edit Columbo relatively, like you

02:31.660 --> 02:38.660
have many people on the same file.

02:38.660 --> 02:43.660
On the integration, first I want to thank Columbo because the integration was pretty smoothly.

02:43.660 --> 02:48.660
Went pretty smoothly, and the documentation was really helpful.

02:48.660 --> 02:55.660
So integrate with Columbo, you need to rely on the Wiki protocol.

02:55.660 --> 03:04.660
This is an open standard for that allows web-based application to integrate with

03:04.660 --> 03:13.660
the online office server. To set it, you need to first set the actual Wiki protocol.

03:13.660 --> 03:19.660
There are some rest endpoints for exposing the information about the file you want to edit.

03:19.660 --> 03:27.660
Then is the Wiki discovery step. There is a discovery XML file that provides information about

03:27.660 --> 03:33.660
the capabilities, the web application exposes. This is provided by Columbo online.

03:33.660 --> 03:39.660
You need to set up the host page, which is the UI, the user actually sees.

03:39.660 --> 03:43.660
It's an I-frame that about this Columbo run.

03:43.660 --> 03:50.660
There's also the post message API, which is needed for interacting with the I-frame.

03:50.660 --> 03:54.660
This is optional. You might not need it.

03:54.660 --> 04:00.660
For the Wiki protocol, there are many rest endpoints, but for integrating Columbo,

04:00.660 --> 04:06.660
we only need it this far. Get file for retrieving the file, the execute attachment.

04:06.660 --> 04:10.660
Put file for updating the file binary content content.

04:10.660 --> 04:18.660
Put Relative file, which is needed for the save as action, to create a new file based on one existing.

04:18.660 --> 04:24.660
Check file info that returns information about the file, such as the names,

04:24.660 --> 04:28.660
or if you want to disable some UI.

04:29.660 --> 04:33.660
Authentication. This is the most important part of the integration.

04:33.660 --> 04:41.660
XWiki has to have the secure way of editing and viewing the files.

04:41.660 --> 04:45.660
You need to use an access token.

04:45.660 --> 04:54.660
The tokens are managed by XWiki, so we have to create a unique token for each user.

04:55.660 --> 05:03.660
This token expire, and you are denied access to the file if it's a wrong token, of course.

05:03.660 --> 05:15.660
The post message API, the web message protocol, let's collaborate, webframe communicate with the parent's host page,

05:15.660 --> 05:21.660
and reach a versa. This is the structure of the message that is sent.

05:22.660 --> 05:29.660
The post message API enables things like querying the iFrame for certain information.

05:29.660 --> 05:35.660
You can know when certain events happen, like when a user went idle,

05:35.660 --> 05:42.660
when a save action was performed, but you can also send messages like, I don't know,

05:42.660 --> 05:48.660
maybe you want to customize the UI, you want to insert the button, or other UI things.

05:49.660 --> 05:53.660
Or you can also perform a save action yourself.

05:53.660 --> 06:02.660
These are some new cases when we actually needed to use the post message API to show you how it works.

06:02.660 --> 06:09.660
As I said, XWiki is the one responsible for managing the tokens for editing security files.

06:09.660 --> 06:19.660
So every time you save a document, we are looking at the documentified status message that we get,

06:19.660 --> 06:27.660
we check if the token wasn't actually, isn't expired, actually, because it has a lifetime.

06:27.660 --> 06:35.660
If the token is expired, we renew it on our side, and then we continue the editing.

06:36.660 --> 06:44.660
Other use case, when we needed to use the post message API is for doing some UI changes,

06:44.660 --> 06:50.660
we wanted to integrate the save and exit and close editor buttons.

06:50.660 --> 06:57.660
This is still working progress, we haven't released it, but I thought it's interesting to show it.

06:58.660 --> 07:07.660
Future work that needs to be done on this application, the application is already pretty mature, but there are still some things for the future.

07:07.660 --> 07:17.660
One is what I already mentioned about the save and exit buttons, but also we also want to have a better token management.

07:17.660 --> 07:25.660
Right now, this tokens are saved in memory, and there are some use cases when the tokens might be lost.

07:25.660 --> 07:30.660
We have ways to recover them, but we need something better.

07:30.660 --> 07:34.660
This was it, thank you.

