Release Notes for XWiki 11.5-rc-1

Last modified by Marius Dumitru Florea on 2019/06/24

This is the release notes for XWiki Commons, XWiki Rendering and XWiki Platform. They share the same release notes as they are released together and have the same version.

This release continue the work on improving concurrent editing of documents, introduce new page and attachment pickers for macros. The code macro get a new layout to display line numbers. Inline editing support for wiki macro also been greatly improved.

New and Noteworthy (since XWiki 11.4)

Full list of issues fixed and Dashboard for 11.5.

For Users

Merge on save

 
Continuing the work started on XWiki 11.1 to warn users when performing conflicting edits on the same page, we finally implemented a merge on save mechanism.

This means that in case of conflict edition (two users saving the same document at the same time), instead of always displaying a window to the user asking what to do, we first try to perform a merge of both document. If the changes concerned two very different parts of the document (two different sections, an edit performed on an object against an edit of the content, etc) the user won't notice that a merge has been performed.

Now, some conflicts might still occur if both users tried to edit the same part of the document. In that case, a new window is displayed asking the user what to do.
The user will now have three different choices:

  • Merge the document and fix conflict with his/her own changes: this means that as much as possible, we try to merge the changes. Only for the part that are conflicting, we only kept the changes from the last user. This is the recommended choice.
  • Force save the document: this means no merge at all will be performed. Only the changes performed by the last user will be saved. It basically discards the changes made by the previous user.
  • Reload the editor: this choice might be taken very carefully as it might cause a loss of data. It means that the current changes performed on the document will be completely lost and the editor will be reloaded with the last changes.

The conflict window now display the changes that will be performed for each choices. Be careful with the parts in red since it shows what part of the document will be lost during the operation. Note that it's also possible to select two specific versions of the document to perform a comparison before making a choice.

Page Picker for Macro Parameters

 
Macro parameters that expect a page reference can now use the Page Picker to help the users select the page without having to know the reference syntax. You can see this in action when inserting the Include, Display, Table of Contents, Dashboard and Context macros from the WYSIWYG editor.

Attachment Picker for Macro Parameters

 
Macro parameters that expect an attachment reference can now use the Attachment Picker to help the users select or upload a file without having to know the reference syntax. You can see this in action when inserting the Office Macro from the WYSIWYG editor.

Line numbers in code macro

 
A new parameter has been introduced to enable line number display in the code macro. See Code Macro for more details.

Miscellaneous

  • The deleter of a document is now allowed to restore it even without admin right (provided the user have enough right to create a document at this location).

For Admins

  • Display content in restricted mode: A new URL parameter is available for viewing pages in restricted mode.
    You can now use restricted parameter, with the following values:

    • false (default): the macro transformations are normally executed
    • true: macro transformations are executed in degraded mode or not executed at all, depending on the macro implementation.

    In particular, various scripting macro such as Velocity Macro or Groovy Macro are not executed in restricted mode.
    This parameter might be then use to check if a page is well displayed for user who cannot execute those scripts for example.

For Developers

Attachment Picker Widget

 
A new widget is available to help users select or upload attachments. Here's how you can use it:

{{velocity}}
{{html clean="false"}}
#set ($attachmentPickerParams = {
  'name': 'attachment',
  'value': '[email protected]',
  'data-upload-allowed': $services.security.authorization.hasAccess('edit'),
  'data-accept': 'image/,.mp4,.pdf',
  'multiple': 'multiple',
  'placeholder': 'Select attachment'
})
#attachmentPicker($attachmentPickerParams)
{{/html}}
{{/velocity}}

Checkout the Suggest Widget documentation for more information.

Inline editing of wikimacro parameters

 
It is now possible to use a dedicated macro to output a wikimacro parameter so that it can be edited inline from the WYSIWYG editor.

You can use for instance the following macro code:

Here's the value of my macro parameter **foo**:

{{wikimacroparameter name="foo" /}}

The value of the macro parameter will be displayed and will be editable inline from the WYSIWYG editor.

Wikimacro Content Type

 
It is now possible to specify the content type of a wikimacro when creating it. A new field Macro Content Type is available for this purpose.
Before 11.5RC1 release, a field Macro Content Type was existing and have been renamed Macro content availability in this release.

The Macro content type field will be used in the future to propose the right editor depending on the content type. It currently proposes two values: WIKI to specify that the content should be edited with an editor for wiki content, or UNKNOWN to specify it should be edited with a plain text editor.
Note that it also accepts any kind of custom Java values, such as java.util.List<java.lang.String>.

If left blank, the default value would be UNKWOWN. This is also the value for macro created before 11.5RC1.

Miscellaneous

  • Allow to create Static List class with value suggestion: It is now possible to create a Static List class that will display a suggest picker for the values that are entered.
    Note that the displayer is only available when using the input display type.

  • Allow to store a StaticList value in a large string: When creating a Static List class, it is now possible to choose to  Allow large string. This can be useful if this list aims at storing large values. 

Upgrades

The following runtime dependencies have been upgraded (they have a different release cycle than XWiki Commons, XWiki Rendering and XWiki Platform):

Translations

The following translations have been updated: 

Tested Browsers & Databases

Here is the list of browsers we support and how they have been tested for this release:

 BrowserTests performed and results
Chrome30.pngGoogle Chrome 75Not Tested
Firefox30.pngMozilla Firefox 67New and Noteworthy Features + Jira Tickets Marked as Fixed in the Release Notes
Edge30.pngMicrosoft Edge 18Not Tested
IE30.pngInternet Explorer 11Not Tested
Safari30.pngSafari 12Not Tested

Here is the list of databases we support and how they have been tested for this release:

 DatabaseTests performed and results
hypersql.pngHyperSQL 2.5.0Not Tested
mysql.pngMySQL 5.7Not Tested
oracle.pngOracle 12cNot Tested
postgresql.pngPostgreSQL 11New and Noteworthy Features + Jira Tickets Marked as Fixed in the Release Notes

Here is the list of Servlet Containers we support and how they have been tested for this release:

 Servlet ContainerTests performed and results
tomcat-icon.pngTomcatNot Tested
jetty-icon.pngJetty (XWiki Standalone packaging)New and Noteworthy Features + Jira Tickets Marked as Fixed in the Release Notes
jetty-icon.pngJettyNot Tested

Known issues

Backward Compatibility and Migration Notes

General Notes

  • When upgrading make sure you compare and merge the following XWiki configuration files since some parameters may have been modified, removed or added:
    • xwiki.cfg
    • xwiki.properties
    • web.xml
    • hibernate.cfg.xml
  • Add xwiki.store.migration=1 in xwiki.cfg so that XWiki will attempt to automatically migrate your current database to any new schema. Make sure you backup your Database before doing anything.

Issues specific to XWiki 11.5RC1

Renaming of WikiMacro field

The field Macro content type has been renamed Macro content availability in WikiMacroClass UI.

XWiki now requires JDBC 4.2

In practice it just means you need to make sure the database connector you are using is not too old (JDBC 4.2 came with Java 8 so you should be fine if you downloaded the connector in recent years).

Hibernate 5.4.3 upgrade

Hibernate has (finally) been upgraded to the very last version. While it means you will benefit from bugfix/improvement/new features it's also a huge jump (previous version was close to 10 years old) and you will probably have issues if you are directly manipulating Hibernate APIs or some library expecting a much older version of Hibernate. You can find the details on https://github.com/hibernate/hibernate-orm/wiki/Migration-Guides but here is an extract from XWiki point of view:

  • HQL '?'-based wildcards are not supported anymore at all by Hibernate. We added an automatic converter (to '?1' JPQL style) which seems to work well but it might not be perfect and it's producing a deprecating warning log
  • You might need to update your hibernate.cfg.xml file
  • Various Hibernate classes have been removed or moved to different Java packages
  • Various Hibernate methods have been removed from the APIs or not having any effect anymore even if still here and deprecated

HTML head extension point identifier update

The identifier of the HTML header extension point allowing to inject HTML in the pages head tag has been changed from org.xwiki.platform.head to org.xwiki.platform.html.head. Update your UI Extension Points if you were using the old id. This was done to disambiguate between HTML head and page head.
{{/gallery}}

API Breakages

The following APIs were modified since XWiki 11.4:

  • Not an API breakage (Added a new query string parameter to a REST resource that shouldn't be called directly from Java)
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method org.xwiki.rest.model.jaxb.Attachments org.xwiki.rest.resources.attachments.AttachmentsResource::getAttachments(java.lang.String, java.lang.String, java.lang.String, java.lang.Integer, java.lang.Integer, java.lang.Boolean) throws org.xwiki.rest.XWikiRestException

      ## New:
      method org.xwiki.rest.model.jaxb.Attachments org.xwiki.rest.resources.attachments.AttachmentsResource::getAttachments(java.lang.String, java.lang.String, java.lang.String, java.lang.Integer, java.lang.Integer, java.lang.Boolean, java.lang.String, java.lang.String, java.lang.String) throws org.xwiki.rest.XWikiRestException
  • Not an API breakage (Added a new query string parameter to a REST resource that shouldn't be called directly from Java)
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method javax.ws.rs.core.Response org.xwiki.rest.resources.attachments.AttachmentsResource::addAttachment(java.lang.String, java.lang.String, java.lang.String, javax.mail.Multipart) throws org.xwiki.rest.XWikiRestException

      ## New:
      method javax.ws.rs.core.Response org.xwiki.rest.resources.attachments.AttachmentsResource::addAttachment(java.lang.String, java.lang.String, java.lang.String, javax.mail.Multipart, java.lang.Boolean) throws org.xwiki.rest.XWikiRestException
  • Not an API breakage (Added a new query string parameter to a REST resource that shouldn't be called directly from Java)
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method javax.ws.rs.core.Response org.xwiki.rest.resources.attachments.AttachmentsResource::addAttachment(java.lang.String, java.lang.String, java.lang.String, javax.mail.Multipart) throws org.xwiki.rest.XWikiRestException

      ## New:
      method javax.ws.rs.core.Response org.xwiki.rest.resources.attachments.AttachmentsResource::addAttachment(java.lang.String, java.lang.String, java.lang.String, javax.mail.Multipart, java.lang.Boolean, java.lang.Boolean) throws org.xwiki.rest.XWikiRestException

Credits

The following people have contributed code and translations to this release (sorted alphabetically):

  • Adel Atallah
  • Alex Cotiugă
  • Anca Luca
  • carlosame
  • Clément Aubin
  • Ecaterina Moraru (Valica)
  • Guillaume Delhumeau
  • Jarle Sandmo
  • JSDennebouy
  • Marius Dumitru Florea
  • Pyungkyu Moon
  • Simon Urli
  • slauriere
  • Thomas Mortagne
  • ttzn
  • Vincent Massol
    {{/gallery}}
Tags:
   

Get Connected