Changes Report
Filters for Static List properties in Live Data
![]()
The suggestions in the Live Data Macro's column filters now display labels or translations (if there are any) of the values of Static List properties instead of the plain values. The search for suggestions considers both the displayed label and the underlying value.
SecurityEntryReaderExtra in extensions
![]()
It's now possible to contribute a org.xwiki.security.authorization.SecurityEntryReaderExtra component in an installed extension.
Bulletproofed NumberProperty
![]()
NumberProperty now accept any kind of Number in input and will automatically convert it to the right type instead of crash at save.
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 = 0New URL resource scheme for Reset password
![]()
The reset password and retrieve username features have been refactored to stop using wiki pages to work. The rationale is that these pages needed to be viewable by the guest user to work, thus making it impossible to protect the full wiki to guests (among other problems related to rights on these pages). Thus they have been re-implemented using dedicated URL schemes and components, and thus have had their URLs changed:
- Reset password:
- New URL: /xwiki/authenticate/reset
- Old URL: /xwiki/bin/view/XWiki/ResetPassword
- Retrieve username:
- New URL: /xwiki/authenticate/forgot
- Old URL: /xwiki/bin/view/XWiki/ForgotUsername
The old XWiki.ResetPassword and XWiki.ForgotUsername wiki pages must not be used anymore, and any custom change perform in those pages won't be taken into account (you'll need to port your changes to Java since the new feature is coded in Java). However, the pages have been kept to ensure that using the old URLs will keep working for the time being: the pages now redirect to the new URLs.
Controlling Transformations
![]()
It's now possible to control exactly which Rendering Transformations to execute when viewing a page. For example to execute only the macro transformation: http://localhost:8080/xwiki/bin/view/Sandbox/WebHome?transformations=macro.
Raw Macro
![]()
When content is parsed, an XDOM tree is created. Sometimes you don't have any way to express the content you wish in that XDOM tree and you only wish that your content is output as is, when the XDOM is then rendered in a given syntax. You can use the raw macro for this need.
Example:
{{raw syntax="latex/1.0"}}
\loadglsentries{glossary}
\makeglossaries
{{/raw}}Allow to log deprecation warning in scripts
![]()
It's possible to log automatically a deprecation warning in a script, to inform users that some scripts might be removed in the future. This method checks the deprecation warnings configuration to only display the message if it is enabled.
You can use it like this:
## First argument is the logger name, second is the message.
$services.logging.deprecate("MyScript", "The script [MyScript] should not be used anymore")The output warning is displayed with a [DEPRECATED] prefix.
Empty Content Placeholder in WYSIWYG Editor

The WYSIWYG Editor shows a placeholder text when the edited content is empty and the text area is not focused. See the CKEditor Integration documentation for more information.
Extension Manager UI improvements

The more advanced search features of the Extension Manager are now hidden under a More button by default and more explanation was added to the shown informations.
User Authentication Event
![]()
The classic Form and Basic Authentication mechanisms now trigger a UserAuthenticatedEvent event whenever a user is authenticated. As a new best practice, custom authenticator authors are advised to implement this new event.
Less files in WebJar can be compiled to css
![]()
Less code packaged in WebJars can now be compiled to CSS when requested. When Less files are compiled to CSS, the less variables defined in the current skin are available and will be resolved to their current values.
Usage examples:
// Returns the raw content of test.less
$services.webjars.url('org.xwiki.platform:xwiki-platform-example', 'test.less')
// Returns the content of test.less compiled to css.
$services.webjars.url('org.xwiki.platform:xwiki-platform-example', 'test.less', {'evaluate': true})Localization REST API
![]()
The localization module is now providing a REST API. This API allows to request the raw source from a set of translation keys.
For instance:
# Request of a single translation, the locale is the default one.
curl -H 'Accept: application/json' http://localhost:8080/xwiki/rest/wikis/xwiki/localization/translations?key=administration.section.users.deleteUser.newAuthor.error
# {"translations":[{"key":"administration.section.users.deleteUser.newAuthor.error","rawSource":"The selected user doesn''t have {0} rights!"}]}Empty string in Static List
![]()
It is now possible to specify empty string values in a Static list by repeating twice the same separator. For example, using the default separators (|, , and space), the Foo||Bar string will be parsed as containing three values (Foo, empty string, and Bar), while Foo, Bar will be parsed as only two values (Foo and Bar), even if two separators (, and space) are used.
Syntax Registry
![]()
There's now the concept of a Syntax Registry and new Syntaxes are expected to register themselves in that registry.
You can list all registered syntaxes using:
@Inject
private SyntaxRegistry registry;
...
List<Syntax> syntaxes = registry.getSyntaxes();You can also get a Syntax object from a Syntax id string using (for example):
@Inject
private SyntaxRegistry registry;
...
Optional<Syntax> syntax = registry.getSyntax("xwiki/2.1");Icon REST API
![]()
The Icon Theme Application is now providing a REST API. This API allows requesting the icons' metadata of the provided icon themes.
For instance:
# Request two icons from the current theme:
curl -H 'Accept: application/json' http://localhost:8080/xwiki/rest/wikis/xwiki/iconThemes/icons?name=add&name=home
# # {"icons":[{"name":"add","iconSetType":"FONT","iconSetName":"Font Awesome","cssClass":"fa fa-plus","url":null},{"name":"home","iconSetType":"FONT","iconSetName":"Font Awesome","cssClass":"fa fa-home","url":null}],"missingIcons":[]}Likes list in the user profile
![]()
The list of likes of a user are now displayed using the Live Data Macro.
Wikis lists
![]()
The lists of wikis and wiki templates of the Wiki Application are now displayed using the Live Data Macro.