Changes Report
Syntax highlighting by default in the wiki editor


The Syntax Highlighting Application is now bundled and enabled by default.
Gadget Wizard Update


The Gadget Wizard used to insert and edit the gadgets from the Dashboard has been updated to use the new Macro Wizard from the CKEditor.
Extracted the $displayContentFooter layout variable from $displayDocExtra

A new $displayContentFooter layout variable is available to control the display of the section after the document content but before the docextra tabs; i.e. tags, creator and creation date.
Now, $displayDocExtra controls only the display of the docextra tabs, without affecting the content footer section, individualized above.
Office Import from CKEditor


We upgraded CKEditor Integration to its latest version which brings support for importing office files directly from the CKEditor. There's a dedicated button on the tool bar that opens a dialog where you can select the office file to import and you can choose to filter the styles or to use the Office Viewer macro. Checkout the CKEditor Integration documentation for more information.
Live Table User Filter

Filtering the Live Table rows by a column that display users should be easier now with the new suggest filter.
Easier Flamingo Skin customizations
![]()
We now provide a default less/custom.less file that can be overwritten for your custom Flamingo Skin. You don't longer need to manually overwrite less/style.less.vm in order to add your custom code. This will make the upgrade to a newer version of the skin much smoother.
Enhanced notification filters AST (Abstract Syntax Tree)
![]()
In XWiki 9.7RC1, we have introduced an Abstract Syntax Tree (AST) to generate the query that fetch the events we want to display as notifications.
This AST has been created for 2 reasons:
- in the future, the events might be stored in a different way, and the current HQL query might be not effective on a different storage (such as NoSQL). This AST abstracts the language so the query could still be effective, as soon as we have a translator for the target language.
- it's easier for developers to write a NotificationFilter by generating an AST than generating a good HQL query that must escape its values and co-exists with other filters...
In this release, we have rewritten the whole internal query, and we had to introduce new types of ExpressionNode to handle all use-cases. This new nodes are:
- BooleanValueNode to handle a boolean value
- DateValueNode to handle a date
- EntityReferenceNode to handle an EntityReference without manual serialization
- GreaterThanNode to handle >= comparison
- InNode to check if a property or a value is contained in a list
- LesserThanNode to handle <= comparison
- StartsWith to check if a value or a property starts with some other value
Since theses nodes have been created for our own implementation needs, please open a JIRA issue if you wish to have more.
Extension Manager improvements
![]()
- new API in ExtensionManagerConfiguration to get a recommended version for a passed Extension id
- various optimizations
- speed resolve when the range contains only one version (don't ask all versions anymore)
- better merge of version constraint ranges to only keep most specific ranges
New HQL safe select columns
![]()
Some new allowed query select columns have been added:
- XWikiDeletedDocument
- id
- fullname
- language
- DeletedAttachment
- id
- filename
Improved Suggest Input for Database List Properties

The edit mode display for Database List properties that have "input" display type and "Use suggest" enabled in their definition has been improved by integrating selectize.js. The new widget handles both single selection and multiple selection properties. See the XWiki Data Model for more information on class properties.
Notifications Filters Settings revamped


We have changed the way we display Notification Filters in the Notification Settings page. All filters are listed in a single table so that it is easier to manage (adding, disabling, removing from the same place).
Watched Locations Enhanced


The notifications toggles now take into account the preferences that you have enabled. Events that have not been enabled first will not be displayed anymore, even if you watch a location where these events happen.
The server is now able to check for its new versions
![]()
The server can now check if a new version of its distribution is available but this feature is not active by default and the information about new versions are not displayed anywhere yet. In the near future, we'll add a new notification visible to administrators when a new version is found.
The version check can be enabled through the parameter extension.versioncheck.environment.enabled in xwiki.properties.
Response implementations can now be marked as redirectable
![]()
A Response implementation can now implement the decorator RedirectResponse in order to be marked as "redirectable" (being able to send HTTP redirections to the client).
For more informations, please check out the Container Module documentation.
![]()
You can now disable the WatchList Application without uninstalling it thanks to a new option.
Improved default look and feel of PDF export

The look and feel of the default PDF export was slightly improved: sans serif font is now used by default and some graphic elements were added to better separate the regions of the page (header, footer, etc.).
Script API to access the macro descriptor
![]()
The rendering script service has been extended with APIs to resolve a macro id and to access the macro descriptor:
#set ($macroId = $services.rendering.resolveMacroId('info/xwiki/2.1'))
#set ($macroDescriptor = $services.rendering.getMacroDescriptor($macroId))Check the Rendering Module documentation for more information.
Execute JavaScript Inside Editing Area

The CKEditor has a new configuration option to enable the loading of the JavaScript Skin Extensions inside the editing area. This can improve the way macros are displayed inside the editor, if they require JavaScript, but it has some downsides. Check the CKEditor Integration documentation for more information.
Mark the scripts that are safe to be executed inside the WYSIWYG editor
![]()
The WYSIWYG editor doesn't execute the JavaScript code inside the editing area by default. If you need this then you need to:
- Enable the loading of the JavaScript Skin Extensions from the WYSIWYG editor administration section
- Mark the scripts that are safe to be loaded inside the editing area:
#set ($discard = $xwiki.jsx.use('Path.To.MyMacro', {'wysiwyg': true}))
Check the CKEditor Integration documentation for more information.
New parameter in the generic page picker
![]()
We have added a parameter to restrict the suggestions of a page picker to a page and its children.