Release Notes for XWiki Enterprise 3.4

Last modified by Thomas Mortagne on 2023/10/13

XWiki Enterprise 3.4 is a stabilization release as we're approaching the end of the 3.x cycle so its main goal was to improve the Extension Manager and App Within Minutes features. However, this release also comes with a new look and a new default wiki page syntax.

New and Noteworthy (since XWiki Enterprise 3.3 version)

Checkout the full unabridged list of issues fixed in this release and, if you're interested in statistics, the JIRA dashboard.

New color themes

XWiki Enterprise 3.4 comes with a new default color theme and other three (Mint, Ruby and Dusk) that you can choose from. All four use CSS3 rules and new color variables in order to be able to have gradients. All color themes that were previously available are now considered deprecated and have been published as extensions: Default, Bordo, Nature, BlueSky, Inner Dark, Nightfall and Peach.

This means that custom build color themes or skins build on top of Colibri may not be compatible with the recent changes when doing an upgrade.

In order to solve this problem you have two solutions: adjust your custom color themes with the new changes or don't upgrade the following wiki pages when upgrading the XAR: ColorThemes.DefaultColorTheme, ColorThemes.ColorThemeTemplate, XWiki.AdminSheet, colorThemeInit.vm and the following CSS files from Colibri skin: colibri.css and ie-all.css.

If you were using one of the deprecated colorthemes, please change the colortheme to one of the new bundled compatible ColorThemes: Default, Mint, Ruby or Dusk.

colorthemes34.png

XWiki Syntax 2.1 is the default page syntax

Even though the XWiki Syntax 2.1 has been available for a long time already, it was marked experimental. We've now made it final which means no more changes will be brought to the XWiki Syntax 2.1 (any new change will be made in a new XWiki Syntax 2.2).

What it also means is that when you create a new page from now on, it'll be created in XWiki Syntax 2.1 syntax by default (you can still choose another syntax using the Syntax chooser in edit mode, see Page Editing).

As a reminder here are below the differences between XWiki Syntax 2.0 and XWiki Syntax 2.1.

Changes to the link syntax from XWiki Syntax 2.0

The query string and the anchor (URL fragment) are no longer specified in the reference section of the link syntax:

[[Link Specification>>platform:Main.XWikiSyntax||queryString="foo=bar" anchor="HXWikiSyntax2.1LinkSpecification"]]

links to:

http://platform.xwiki.org/xwiki/bin/view/Main/XWikiSyntax?foo=bar#HXWikiSyntax2.1LinkSpecification

The canonical representation of a link reference is prefixed with the reference type:

[[Source repository>>url:https://github.com/organizations/xwiki]]
[[Syntax Help>>doc:platform:Main.XWikiSyntax]]

InterWiki links have a dedicated reference type:

[[XWiki on Wikipedia>>interwiki:wikipedia:XWiki]]

Two new reference types: relative path and UNC (Universal Naming Convention).

[[Edit this page>>path:$doc.getURL('edit')]]
[[File system access>>unc:\\myserver\path\to\file.txt]]

See the full link specification for more details.

Changes to the image syntax from XWiki Syntax 2.0

You can pass the query string of the image URL as a special image parameter:

[[image:[email protected]||queryString="parameter=value"]]

You can use a relative path as the image reference. This is useful to display images from the skin:

image:path:$xwiki.getSkinFile('logo.png')

It is now possible to reference an icon from the XWiki Icon Set:

image:icon:chart_pie

See the full image specification for more details.

Delete space menu

You can now delete an entire space using the Space menu. This will move all the pages from that space to the recycle bin. Note that in case you want to restore the space you have to restore each page individually from the recycle bin. We're hoping to offer a way to easily restore the space in the next versions.

DeleteSpaceMenu.png

Simple space templates

You can now create simple space templates. If you go to Templates section of the wiki administration and create a new template provider you'll notice that you can choose the template type. "Space homepage" templates are used to create new spaces.

SpaceTemplateProvider.png

All the available space templates are listed on the Create Space dialog that you can access from the Add > Space menu.

CreateSpace.png

XWiki Enterprise comes by default with a space dashboard template which can be used to create a new space whose home page is a dashboard.

Special characters in attachment name

Starting with this version, non-ASCII characters are not filtered anymore from the file name when uploading an attachment.

Minimized action menu

The action menu is now minimized when the page is scrolled. You can access it by hovering the top of the browser window.

MinimizedActionMenu.png

Display macro

New display macro to replace include macro with context=new. See Display Macro for more details.

Bug fixes and improvements

  • Tree view from document index should work fine in Internet Explorer 9.
  • Adding users to a group through the administration should work fine in Internet Explorer 9.
  • Extension manager UI has been polished.
  • Created workspaces should now be stabilized and no longer report errors after an XWiki restart or in the Administration section.

For Developers

  • Component manager bug fixes and improvements (including an important optimization which should bring a significant speed improvement)
  • StringUtils can be accessed in Velocity using $stringtool
  • #stop Velocity directive is working again
  • You can now stop the execution of a Velocity macro or template using #break($macro) and #break($template) respectively. $template can also be used to find the name of the current Velocity name space (usually the name of the current Velocity template).
  • Markdown syntax support added.
  • The database migration code has been fully rewritten:
    • XWIKI-7006 Accessing a store that is not migrated to the lastest data version should not be allowed
    • XWIKI-1859 Do not start migrations on a clean installation of XWiki
  • Oracle support improved
    • XWIKI-6368 - Exception "inconsistent datatypes" on VisitStats in Oracle 10g
    • XWIKI-7278 - Virtual mode fails on Oracle with "ORA-01435: user does not exist"
  • Skin changes:
    • new .disabled CSS class to mark disabled inputs, see documentation.
    • new .hasIcon class to be used for elements that have a background-icon attached. The class works in pair with other classes that specify the icon that will be used (e.g. .iconRSS, .tmEdit etc.). Checkout the documentation for other general purpose CSS classes.
    • in order to write more easily all the proprietary declarations for CSS3 background gradients and box-sizing properties you can use the following macros: #css3_backgroundLinearGradient, #css3_backgroundIconAndLinearGradient and #css3_boxSizing.
    • you can use the .png version for the icons in the Silk icons set (the .gif versions will gradually be replaced).

Upgrades

The following dependencies have been upgraded:

  • AETHER 1.13.1
  • Groovy 1.8.5
  • Hibernate 3.6.9
  • jdeb 0.9
  • Restlet 2.0.11
  • Selenium 2.17
  • Selenium Maven Plugin 2.2
  • SmartGWT 3.0

Translations

The following translations have been updated:

Tested Browsers

Here's the list of browsers tested with this version (i.e. browsers that we've tested as working - Check the list of supported browsers):

Firefox
9.0.1
Chrome
16

Test Report

You can check the manual test report to learn about what was tested and the results on various browsers.

Known issues

Backward Compatibility and Migration Notes

General Notes

If you're running in a multiwiki setup you'll also need to define the property xwiki.store.migration.databases in your xwiki.cfg file if you want to explicitly name some databases to be migrated as the default is now to migrate all databases. Database that are not migrated could not be accessed.

You may also want to import the default wiki XAR in order to benefit from all the improvements listed above.

Always make sure you compare your xwiki.cfg and xwiki.properties files with the newest version since some configuration parameters were added. Note that you should add xwiki.store.migration=1 so that XWiki will attempt to automatically migrate your current database to the new schema. Make sure you backup your Database before doing anything.

Upgrading may lead to style/display problems for custom build color themes or skins build on top of Colibri, since they may not be compatible with the recent colorthemes/skin changes read more

Issues specific to XWiki Enterprise 3.4

Default wiki access method changed to path-based

In virtual mode, XWiki can work in two ways: based on domain names, where each virtual wiki is accessed from a different DNS domain, like wikiname.myfarm.net, and path-based, where each virtual wiki is accessed on a different path of the same domain, like www.myfarm.net/wikis/wikiname/. Since the former mode is harder to set up, since it requires a custom DNS server, we have enabled the second mode by default in this release.

When merging the xwiki.cfg for the migration process, keep in mind that the value of 'xwiki.virtual.usepath' has been changed to a default of 1 instead of 0. If your wiki is set to virtual mode and is using subdomains to access subwikis, make sure to set 'xwiki.virtual.usepath' to 0.

API Breakages

The following APIs were modified since version 3.3:

org.xwiki.rest.XWikiAuthentication: Removed org.restlet.Filter from the list of superclasses
org.xwiki.rest.XWikiAuthentication: Removed org.restlet.Guard from the list of superclasses
org.xwiki.rest.XWikiAuthentication: Removed org.restlet.Uniform from the list of superclasses
org.xwiki.rest.XWikiAuthentication: In method 'public int authenticate(org.restlet.data.Request)' the number of arguments has changed
org.xwiki.rest.XWikiAuthentication: Return type of method 'public int authenticate(org.restlet.data.Request)' has been changed to boolean
org.xwiki.rest.XWikiAuthentication: Method 'public boolean checkSecret(org.restlet.data.Request, java.lang.String, char[])' has been removed
org.xwiki.rest.XWikiRestletJaxRsApplication: Removed org.restlet.Uniform from the list of superclasses
org.xwiki.rest.XWikiRestletServlet: Removed com.noelios.restlet.ext.servlet.ServerServlet from the list of superclasses
org.xwiki.rest.XWikiSetupCleanupFilter: Removed org.restlet.Filter from the list of superclasses
org.xwiki.rest.XWikiSetupCleanupFilter: Removed org.restlet.Uniform from the list of superclasses
org.xwiki.rest.XWikiSetupCleanupFilter: Parameter 1 of 'protected void afterHandle(org.restlet.data.Request, org.restlet.data.Response)' has changed its type to org.restlet.Request
org.xwiki.rest.XWikiSetupCleanupFilter: Parameter 2 of 'protected void afterHandle(org.restlet.data.Request, org.restlet.data.Response)' has changed its type to org.restlet.Response
org.xwiki.rest.XWikiSetupCleanupFilter: Parameter 1 of 'protected int beforeHandle(org.restlet.data.Request, org.restlet.data.Response)' has changed its type to org.restlet.Request
org.xwiki.rest.XWikiSetupCleanupFilter: Parameter 2 of 'protected int beforeHandle(org.restlet.data.Request, org.restlet.data.Response)' has changed its type to org.restlet.Response
org.xwiki.rest.XWikiSetupCleanupFilter: Parameter 1 of 'protected javax.servlet.http.HttpServletRequest getHttpRequest(org.restlet.data.Request)' has changed its type to org.restlet.Request
org.xwiki.rest.resources.BrowserAuthenticationResource: Removed org.restlet.Handler from the list of superclasses
org.xwiki.rest.resources.BrowserAuthenticationResource: Removed org.restlet.resource.Resource from the list of superclasses
org.xwiki.rest.resources.BrowserAuthenticationResource: Parameter 2 of 'public BrowserAuthenticationResource(org.restlet.Context, org.restlet.data.Request, org.restlet.data.Response)' has changed its type to org.restlet.Request
org.xwiki.rest.resources.BrowserAuthenticationResource: Parameter 3 of 'public BrowserAuthenticationResource(org.restlet.Context, org.restlet.data.Request, org.restlet.data.Response)' has changed its type to org.restlet.Response

Get Connected