Changes Report

Last modified by Vincent Massol on 2026/09/10 13:54

Provide Raw content filtering mechanism for macros

A new rendering transformation component is now provided for macros to allow perform filtering of RawBlocks. A new API is provided, RawBlockFilter, with a first implementation for HTML raw blocks, used in html macro.

Indexing User

A new section to define a dedicated indexing user has been added in the "Search" category in the wiki administration.

The search index usually runs without a dedicated user. In some cases this creates minor issues when indexing the title of pages, e.g. in case of a closed wiki, where one cannot access as guest user the sheet that computes the user profile pages title as "Profile of «firstname» «lastname»". This is not possible unless the indexer is associated with a user that has access to the corresponding sheet. A new section in the "Search"  category of the wiki administration allows to set an "indexing user", which is used to access the sheets which might be used to compute page titles.

If this setting is left empty, the stored plain title of the page name is shown as title of the search result for affected pages.

Please read the description and especially about the security implications before setting an indexing user.

Configurable hidden macros categories 

The list of categories hidden by default, previously hard-coded to Internal and Deprecated, can now be configured using the rendering.transformation.macro.hiddenCategories property in xwiki.properties.

#-# [Since 14.8RC1]
#-# Override the default hidden macro categories.
#-# Note: the categories are case sensitive.
#-#
#-# The default value is:
# rendering.transformation.macro.hiddenCategories = Internal,Deprecated
#-#
#-# For instance, to make the "Development" category hidden by default, in addition to the "Internal" and
#-# "Deprecated" categories, you'd use:
# rendering.transformation.macro.hiddenCategories = Development,Internal,Deprecated

Hidden macro categories API

The MacroCategoryManager role gives access to the list of hidden macro categories.

@Role
public interface MacroCategoryManager
{
    // [...]

    /**
     * @return the set of hidden categories (e.g., "Deprecated, Internal")
     * @since 14.8RC1
     */
    @Unstable
    default Set<String> getHiddenCategories()
    {
        return Set.of();
    }
}

PDF File Name

The file name suggested by the web browser when downloading a PDF generated by the PDF Export Application is now, by default, the title of the wiki page from where the export was triggered (instead of the Java UUID used for the temporary resource name). Checkout the documentation for more information.

Enable the lightbox view for images by default

The lighbox feature is now enabled by default.

Restricted context macro

A new restricted parameter has been introduced in the context macro to allow executing content in a restricted content. See Context Macro for more details.

Extension plan in isolation

It's now much easier to run extension jobs isolated from the current instance. The following two new properties has been added to ExtensionRequest:

  • coreExtensionRepository: a custom repository to use to find available core extension
  • installedIgnored: true if already-installed extensions should not be taken into account while resolving the install plan

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.

Filter for testing for restricted HTML cleaning

A new filter for HTML cleaning allows testing if HTML content would be affected by restricted cleaning, allowing to determine automatically if HTML content could also be used with restricted cleaning without risking any breakage.

More required rights analyzers

Even more required rights analyzers have been added in XWiki 15.10, now analyzing HTML Macros, translation documents, gadgets, icon sets, and configurable sections.

Pre-edit check can be cached

When editing a page, once a pre-edit check result is presented to the user, it will not be presented again unless something changed. For instance, once a user chooses to edit a page owned by an extension, he or she will not be warned again. However, if a page is locked twice by different users, they will be warned at each edit attempt.

Pre-edit check can be cached

It is now possible to define a caching strategy for pre-edit checks, allowing to define when to re-display the results of a check to the user if they have been previously forced.

New API for macro required rights analyzers

A new API for required rights analyzers for macros has been introduced that makes it simpler to introduce a required rights analyzer for a macro. Such an analyzer is necessary for all macros that support wiki syntax outside the content (e.g., in a parameter) or any kind of script or other content that uses the author's rights.

Added keyboard support to the drawer. The focus will not go in the drawer when it's closed. The drawer can be closed by pressing `Escape` and a new button is added to make it easy to close the drawer.

Refactored tips panel extension point

The tips panel extension point has been refactored to be safer and easier to use. See the "Add Tip to Tips Panel" extension point for more details on how to define a tip in 15.1+. Note that any custom tip you may have will continue to work as is, but we encourage you to move the tip definitions from the UIXP parameter to the UIXP content as the old way is now deprecated and will be removed one day (and it's also safer to use the new way).

Limit parameter in tag cloud

The tag cloud macro supports a new parameter to limit the number of tags to the n most occurring tags.

Tags are hidden when there are none

When there aren't any tags assigned to a page, the text “Tags:” is no longer displayed at the bottom of the page unless the user has edit rights.

What's New API

New experimental API to gather external news related to XWiki.

Example to get news items from a xwikiblog source, for a given user, filtered by a category:

@Inject
@Named("xwikiblog")
private NewsSourceFactory factory;

@Inject
@Named("xwikiblog")
private NewsConfiguration configuration;

...
List<NewsSourceDescriptor> descriptors = this.configuration.getNewsSourceDescriptors();
NewsSourceDescriptor descriptor = descriptors.get(0);
List<NewsSourceItem> items = this.factory.create(descriptor.getParameters())
  .forUser(...)
  .forCategories(...)
  .build()
NewsContent content = items.get(0).getDescription().get();
String itemDescription = content.getContent();
Syntax itemSyntax = content.getSyntax();
...

Velocity macro for sanitizing URLs

A new velocity macro has been provided to allow getting sanitized URLs from request parameters to be used in HTML.

Get Connected