Realtime WYSIWYG Editor

Last modified by Admin on 2024/05/11 01:14

pencilAdds support for real-time WYSIWYG (rich-text) editing in XWiki.
TypeXAR
CategoryOther
Developed by

XWiki Development Team

Active Installs12
Rating
0 Votes
LicenseGNU Lesser General Public License 2.1
Bundled With

XWiki Standard (16.2.0RC1+)

Compatibility

Since 13.9RC1

Installable with the Extension Manager

Description

Adds support for real-time WYSIWYG (rich-text) editing in XWiki. This module is still experimental, so please use with care. It provides a CKEditor plugin that, when enabled, performs real-time synchronization of the edited content between the users editing the same wiki page.

realtimeWysiwygEditor.png

The editor is using the Netflux API for real-time communication between the users participating in the editing session, and the ChainPad algorithm to ensure convergence between the changes made by each user. The actual rich text editing is done with the help of the CKEditor Integration.

This editor supersedes the Visual Realtime Collaborative Editor extension.

Usage

XWiki <16.2.0 The Realtime WYSIWYG Editor was initially implemented as a separate editor that you had to bind to the wiki syntax data type in order to use it. You could do that from the "Editing / WYSIWYG Editor" administration section by changing the "Default WYSIWYG Editor".

XWiki 16.2.0+ Real-time WYSIWYG editing is now implemented as a CKEditor plugin that is bundled in XWiki Standard, but disabled by default. To enabled it you have to uncheck the "xwiki-realtime" plugin from the list of "Disabled Plugins" in the CKEditor administration section, and save.

Rendering Macros

XWiki 16.2.0+

Rendering macro output is not synchronized between editors because it may differ from user to user (e.g. based on the current user access rights). We synchronize the macro parameters (and content) and the macro is re-rendered (server-side) whenever they change. In other words, when a remote change is received:

  • if it inserts a new macro call or if it modifies any of the existing macro parameters (including content) that are not editable inline then we re-render the entire content
  • otherwise we just apply the change client-side

Note that modifying macro parameters inline doesn't trigger a re-render of the content. On the other hand, modifying macro parameters through the Macro Wizard modal will trigger a re-render for all the other users participating in the realtime session.

Limitations

Here's a list of known limitations:

  • You currently have to force the edit lock when joining an existing real-time editing session.
  • Editing directly the source wiki syntax is disabled for now as it can create problems. We plan to fix this later.
  • The WYSIWYG editor can become slow or even unresponsive when the content edited in realtime is large.
  • Changes made outside the real-time session can lead to a merge conflict when auto-save is performed, which sometimes needs to be fixed manually.
  • Auto-save can create lots of document revisions.
  • Custering is not supported.

Prerequisites & Installation Instructions

We recommend using the Extension Manager to install this extension (Make sure that the text "Installable with the Extension Manager" is displayed at the top right location on this page to know if this extension can be installed with the Extension Manager). Note that installing Extensions when being offline is currently not supported and you'd need to use some complex manual method.

You can also use the following manual method, which is useful if this extension cannot be installed with the Extension Manager or if you're using an old version of XWiki that doesn't have the Extension Manager:

  1. Log in the wiki with a user having Administration rights
  2. Go to the Administration page and select the Import category
  3. Follow the on-screen instructions to upload the downloaded XAR
  4. Click on the uploaded XAR and follow the instructions
  5. You'll also need to install all dependent Extensions that are not already installed in your wiki

Dependencies

Dependencies for this extension (org.xwiki.platform:xwiki-platform-realtime-wysiwyg-ui 16.3.1):

Get Connected