Changes Report

Last modified by Vincent Massol on 2026/09/02 19:04

Attachments content

It's now possible to indicate in input the list of attachment for which the content should be taken into account (when serializing a document, for example). It used to be all (generally used when exporting a XAR) or nothing (in the case of the document history).

Live Data performance improvements

The rendering time of the Live Data Macro has been improved. The performance is now comparable to the Livetable Macro.

For instance, taking the loading time of the Panels table with 30 rows, the rendering time is now of 2s 180ms with the optimization, and was 3s 50ms before the optimizations, and 2s 250ms with the Livetable Macro. In addition, when the Less style is not yet cached, the rendering time is improved by about 12 seconds.

New event query helper

SimpleEventQuery now have helpers to manipulate custom event properties. It's done by calling parameter() to "switch" the next comparison to be about custom parameters instead of standard Event fields. See Event Stream Module for more details.

Less strict code verification in the reset password system

We allow to relax a bit the reset password email link security mechanism to avoid it being revoked at first access, in order to avoid issues with software that checks email links. This mechanism can be used by changing a property in xwiki.properties:

#-# [Since 13.10.1]
#-# [Since 14.0RC1]
#-# Define the lifetime of the token used for resetting passwords in minutes. Note that this value is only used after
#-# first access.
#-# Default value is 0 meaning that the token is immediately revoked when first accessed.
#-# Use a different value if the reset password email link might be accessed several times (e.g. in case of using an
#-# email link verification system): in such case the user will have the defined lifetime to use again the email link.
#-#
#-# The default is:
# security.authentication.resetPasswordTokenLifetime = 0

It is now possible to provide new redirection strategies

The RedirectionFilter role allows developers to define domain specific redirection logic.

HTML cleaner supports HTML5

The HTML cleaner in the XML Module now supports cleaning HTML 5 into XHTML 5 when setting the HTML version parameter.

In-place editing supports creating objects

The in-place editor for object properties now also supports creating objects by specifying data-object-policy="updateOrCreate" in the <dt>-tag. The also-introduced velocity macro #createObjectAndPropertyIfMissing allows to (temporarily) add an object and a property to the current document using a reference to the property like "Some.UsefulClass[5].status" which is useful for displaying the default value of the property when the object doesn't exist in the document. This can be used to introduce new properties in a docextra tab, see this example.

Inline template execution

It's now possible to execute a template inline. There was nothing previously in the TemplateManager to indicate that the template was meant to be inserted in an inline content, and it was not really working properly for the template macro. See Template Module for more details on how to use the TemplateManager.

Add original metadata author to XWikiDocument

A new concept of author has been introduced and the way authors are managed in XWikiDocument have been refactored to rely on a unique interface DocumentAuthors.

We now distinguish 4 different kind of authors information:

  • the creator: there's no ambiguity it's the user who created the document
  • the content author: it's the author who performed a change in the content of the document, by opposition with changing a metadata of the document such as an xobject, or an attachment. We distinguish it for security reason since the content of the document might contain scripts that are executed when viewing the document
  • the effective metadata author: it's the author which has been used to save any change in the document, content or not. So changing the content of the document will update both this author, and the content author. However, updating an attachment of a document will only update this author, not the content author. 
  • the original metadata author: it's finally the author you see displayed in the interface, it's most of the time the same as the effective metadata author but in some usecases it might be different. For example when a script wants to allow a user to perform a save without changing the effective author for security reasons, but wants to display the author who actually triggers the save.

Only the original metadata author has been introduced in this release, but all authors have been renamed and now relies on UserReference.

Table of contents is easier to style

The ordered or unordered list element at the root of the table of contents macro now has the wikitoc class attribute such that it is easier to style via CSS.

Breadcrumbs on Copy, Delete and Rename Operations

When a delete, copy or rename operation is started or its progress is displayed, the breadcrumbs are now visible at the top of the page. This makes it easier to navigate from a deleted, copied or renamed page.

PDF Export Limits

The PDF Export Application can now be configured to:

  • limit the amount of content that can be included in a single PDF export; this can be done either from the PDF Export wiki administration section using the "Maximum content size" property or, globally, from xwiki.properties
    # [Since 14.10]
    # The maximum content size, in kilobytes (KB), an user is allowed to export to PDF; in order to compute the content size
    # we sum the size of the HTML rendering for each of the XWiki documents included in the export; the size of external
    # resources, such as images, style sheets, JavaScript code is not taken into account; 0 means no limit;
    export.pdf.maxContentSize=100
  • limit the number of PDF exports that can be done in parallel; this can be specified only globally, from xwiki.properties
    # [Since 14.10]
    # The maximum number of PDF exports that can be executed in parallel (each PDF export needs a separate thread).
    export.pdf.threadPoolSize=3

Export Without Paged.js

If you're getting a timeout while doing a PDF export and the exported content is not too big then you probably hit a Paged.js bug. Paged.js is the JavaScript library we use to layout the exported content in print pages. You can overcome this by unchecking the Table of Contents, Header and Footer from the PDF Export Options modal and then triggering the export again. This time the export will be done without Paged.js, relying solely on the web browser, which shouldn't pose any problems. Of course, the downside is that you loose the Table of Contents, Header and Footer. Fortunately Paged.js is under active development so we hope its bugs will be fixed soon.

Parameterized and translatable exceptions

A org.xwiki.logging.AbstractMessageException is provided to make easier to create exceptions with the same features as org.xwiki.logging.Message. See https://extensions.xwiki.org/xwiki/bin/view/Extension/Logging%20Module#HParameterizedandtranslatableexceptions for more details.

Forced default image style

The default image style can now be forced, meaning that it will be used by default and a style must be selected.

User-scope translations require script right

Translations with user scope require script right now. A new configuration option allows disabling this check.

Extension previous identifiers

It's now possible to explicitly indicate a list of previous identifier (or an empty list) if you don't want to import all the features along with the extension in the Repository Application. See Maven for more details.

New script service for HTML operations

A new HTML script service has been introduced allowing to use the recently introduced HTMLElementSanitizer in scripts. It can be used in velocity with $services.html.xxx.

Cluster members are uniquely identified

Each member of a cluster is now uniquely identified. The id is automatically generated once at startup and stored in the permanent directory.

HTML 5 support in the HTML Macro

The HTML macro supports HTML 5 and switches to HTML 5 whenever the content is output as HTML 5. This means that in most cases (for example, when using the default Flamingo Skin), the HTML macro can be used to insert new HTML tags like the <video>-tag into the content of a page while having the clean-parameter enabled.

Get Connected