Changes Report

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

Attachment Move

A new button is now available in the attachments pane, allowing to move or rename an attachment. It is possible to change the name or the location of the attachments. Optionally, a redirection action is proposed, allowing to automatically redirect requests to the old location of an attachment to the new one.

UI Extension improvements

  • New uiextension and uiextensions macros have been introduced to ease the creation of extension points and display of insertion UI extensions in general in a wiki content.
  • UI extensions now support inline execution. UI extension API used to only allow standalone content, but it's now possible to tell them that they should produce content to insert inline.
  • The default UIExtensionManager component now also check if a specific UIExtensionManager exist for the given extension point identifier.

See UIExtension Module for more about UI extensions.

Rendering error reporting improvements

All rendering error (missing macro, etc.) used to be hardcoded. It's now translatable and customization thanks to various extension points. See Rendering Error Reporting for more details about this new system.

Suggestions for missing macros

When a macro does not exist, you get an error in the page where it's used. If that macro exists in an available extension and you're an Admin user, you will get a link to this extension to install it using the Extension Manager, right in the error message description.

Extension points for document information

New extension points in the document information panel and the information docextra allow to add extra settings or information that is directly related to a document's content and should thus be easily accessible together with the document in view or edit mode.

Email notification default frequency

It is now possible to configure globally the default frequency used for email notifications, in the administration section of the Notification Application.

Attachment can be restricted based on their mimetypes

It is now possible to limit the attachments uploaded on a space based on their mimetypes. This attachment validation is now applied on attachment upload using the attachment pane, the REST API, and CKEditor image dialog.

The configuration can be done at farm level with xwiki.properties (see below), at wiki level in the administration, in the Attachments Restriction section, or at space level using the page administration.

#-# [Since 14.10RC1]
#-# Define the list of allowed attachment mimetypes. By default, this list is empty, but you can specify a 
#-# comma-separated list of allowed mimetypes. Note that a joker (*) can be used to accept any media type. Once this
#-# list is not empty, any attachment with an unlisted mimetype will be rejected.
#-# For instance, if you want to only accept plain text and any kind of images, you can set the list to:
#-# text/plain,image/*
# attachment.upload.allowList=

#-# [Since 14.10RC1]
#-# Define the list of blocked attachment mimetypes. By default, this list is empty, but you can specify a 
#-# comma-separated list of blocked mimetypes. Note that a joker (*) can be used to accept any media type. Once this 
#-# list is not empty, any attachment matching one of the listed mimetype will be rejected.
#-# For instance, if you want to reject plain text and any kind of images, you can set the list to:
#-# text/plain,image/*
#-#
# attachment.upload.blockList=

 

Restricted TextArea

It's now possible to indicate in the configuration of a TextArea property if you want the content to be executed in a restricted context. See TextArea for more details.

This new property is now used in comments objects, which means you can display a comment content as any other textarea property without the need to make the context restricted.

The new CKEditor Image Dialog is now the default

The new CKEditor Image Dialog is now activated by default. On new instances, or when CKEditor.Config does not exists the change is automatic. Otherwise, activating the new image dialog must be done by removing xwiki-image from the disabled plugins list in the WYSIWYG Editor section of the Administration.

Export Formats Extension Point

A new UI extension point org.xwiki.platform.template.exportFormats is available to add export formats to the Export Modal. If you were using the old org.xwiki.plaftorm.menu.export.buttons extension point then we highly recommend updating your code to use this new extension point instead. Checkout the documentation for more information.

Attachment gallery picker scope selection toggle

The attachment gallery picker allows to define a search scope, either the current page only, or all viewable pages. In addition, a warning is displayed to the user when the selected attachment is not from the current page.

Template requirements

It's now possible to express, through template properties, requirements that must be met before the template is executed. By default, the possibility to express a requirement on the context action is supported but any extension can provide its own requirements types. See Template Module for more details.

Code Macro Source

The code macro now have an alternative way to indicate the content to highlight, which allows highlighting a script value or the content of an entity stored in the XWiki database. See Code Macro for more details.

Include Macro Author

It's now possible to control which author should be used to execute the target of include macro. See Include Macro for more details.

Split Office Content into Nested Pages

The Office Importer Application has been improved to generate (by default) non-terminal (nested) pages when the "Split document" option is selected, if the target wiki page is also non-terminal. The following strategy was implemented:

  • if the target wiki page is terminal then the "child" pages created by the split operation are also terminal
  • if the target wiki page is nested (non-terminal) then:
    • the "child" pages are also nested, if the current user is simple
    • advanced users have a checkbox to control whether the "child" pages are terminal or not, but by default they are not

Besides this, we also did a couple of small improvements to the office import form to:

  • filter office files based on media type (when browsing the local file system)
  • improve existing field labels and hints, adding missing hints
  • hide UI elements that are not relevant for the office import operation
  • perform the office import asynchronously and redirect the user directly to the imported page after a successful import operation

New tags right check strategy configuration

It is now possible to configure the algorithm used when checking view rights on tags (returned by the Tags API) by editing xwiki.properties.

#-# [Since 14.4.8, 14.10.4, 15.0RC1]
#-# Configure the tag selection algorithm to use.
#-# The default algorithm is "exhaustive", which check all elements (documents and tags) for view right before returning
#-# them. This exhaustive check can lead to tag clouds and tag lists being slow to compute on instances with very large 
#-# amounts of tags or tagged documents (more than 5000 of elements).   
#-# Note that it is advised to keep using the default implementation as much as possible, and to switch to the "unsafe"
#-# option only when all performance improvements options have been exhausted 
#-# (see https://www.xwiki.org/xwiki/bin/view/Documentation/AdminGuide/Performances/)
#-# The "unsafe" algorithm does not perform any right checks. It is approximately 10 times faster than "exhaustive"
#-# but does not provide any guarantee that the current user won't be able to view a tag he/she is not allowed to. 
#-# Therefore, we cannot recommend to use it unless tags performance is critical AND tags and document references are 
#-# not considered as critical information.
# tag.rightCheckStrategy.hint=exhaustive
# tag.rightCheckStrategy.hint=unsafe

New script service for URL security operations

A new script service has been introduced to allow performing security checks on URL. The script service currently provides a single method which can be used like that:

{{velocity}}
#set ($myURL = "http://xwiki.org")
#set ($safeURI = $services.security.url.parseToSafeURI($myURL))
## The URI is null if not safe.
#if ($safeURI)
  ## use it as an URI object. 
#end
{{/velocity}}

Asynchronous document static analysis

A new asynchronous document static analysis API is now available in theĀ Index Application. This API allows to queue and consume persistent document analysis tasks. This API is used in this release as an underlying implementation of the mentions analysis, and will be used soon to perform the analysis of the backlinks of the pages.

Image Captions

The XWiki 2.0 and 2.1 syntax now supports captioned images. The syntax:

[[Caption content>>image:some_image.png]]

is rendered as an image with "Caption content" as caption when the image is alone in a paragraph (e.g. the image syntax is surrounded by blank lines). The caption content supports full XWiki syntax. If you want to use nested links you need to escape the link syntax with a single escape character. For instance, the following syntax:

[[~[~[xwiki.org~>~>https://www.xwiki.org~]~]>>image:some_image.png]]

generates an image with a link to xwiki.org in the caption.

Image captions are also supported in the WYSIWYG editor. In the image dialog the checkbox "Captioned image" can be used to add/remove the caption of an image. The caption can be edited directly below the image.

Document Analysis progress page

A page is now available in the administration to monitor the progress of the document analysis queue. The page displays the number of remaining tasks, grouped by task type.

Get Connected