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.