Release Notes for XWiki 6.1

Last modified by Thomas Mortagne on 2017/03/24

This is the release notes for XWiki Commons, XWiki Rendering, XWiki Platform and XWiki Enterprise. They share the same release notes as they are released together and have the same version.

A lot of work has been done for the new Flamingo skin and we hope to make it the default in 6.2. This version also comes with many improvements but also introduce many new APIs and tool for developers like the integration of LESS preprocessor, a new authorization API taking care of the context and its associated script service, a new experimental Mail API, the support of grouped and asynchronous jobs in default job module executor, the possibility to log from any script, a new converter to make easier to manipulate XDOM in Velocity, and many others.

New and Noteworthy (since XWiki 6.0.1)

Full list of issues fixed and Dashboard for 6.1.

Flamingo Skin improvements

  • Flamingo skin CSS is now computed at the runtime, using the LESS Module.
  • Thanks to this, we have introduced a compatibility between this skin and the old color themes:
    flamingo-default.png flamingo-dusk.png flamingo-mint.png flamingo-ruby.png flamingo-nocolortheme.png
  • Flamingo has a simplified Add menu
    flamingo-menu.png
  • Annotations are back!

    flamingo-annotations.png

  • The Annotations enabler is now located in the "More Actions" menu:

    flamingo-annotations-menu.png

  • The global menu entries have now double functionality (navigation, menu) again :

    flamingo-separation.png

  • The log-in form has been improved:

    login-flamingo.png

  • The skin can now be seen on a smartphone, but it is only a first step to have a fully-usable wiki on mobile phones:

    flamingo-phone.png

  • Still for mobiles, we have improved the annotation settings panel:

    annotations-phone.png

  • The preview action has been implemented:

    preview.png

  • The user's avatar is now displayed in the main menu:

    navbar.png

  • 'Share by email' menu entry is moved from 'Page' submenu to 'More actions' submenu:

    moreActions.png

  • Buttons have now gradients:

    gradients.png

  • To ensure the compatibility with Internet Explorer 8, the Flamingo skin uses Respond.js and HTML5Shiv. It enables CSS3 media queries and HTML5 tags.
  • A lot of polishing have been made too, in order to have a skin usable in production.

Applications Panel improvements

  • It is now possible to change the width of the panel columns:

panelWizard.png

  • Inside a panel, you can know the current width with the $xwikiPanelWidth variable.
  • The applications panel has been modified to adapt itself to the panel column width. The design is different when the size is small, to look closer to a "dock" bar:
    appbar.png (on this screenshot you can see the small version on the left, and the normal version on the right).

Extension Manager improvements

  • Extension-related jobs (install, uninstall, install plan calculation, etc.) which are not executing on the same namespace can now be run concurrently. You won't be stuck anymore, trying to install an extension when someone else is doing the same thing somewhere else on a farm.
  • XWiki now support resolving a Maven extension with a parent from a different Maven repository

Active Installs improvements

The Active Installs feature has been improved a lot and a new data format has been set up in order to be able to provide more information, namely:

  • Graphing of Active Installs counter over time
  • Display pie charts of XWiki versions, Java versions, Servlet Containers and Databases used for Active Installs

as-dashboard

In addition it's now registered in the Applications Panel:

activeinstallsentry.png

Miscellaneous

  • The user directory is now displaying the user id (alias) instead of the full user document reference which is too technical:

    userDirectory.png

  • Added ability to configure Pie Chart labels using the pie_label_format property. For example using pie_label_format:{0} - {2} would give:

    pielabel.png

  • More HTTP cache settings, configurable using xwiki.httpheaders.cache in xwiki.cfg or headers_nocache in XWiki.XWikiPreferences:
    • 0: no Cache-Control header sent, use the browser's defaults. RFC 2616 only specifies optional behavior in this case
    • 1 (default): no-cache; caches must not serve this response in a subsequent response, but the page is stored for the bf-cache
    • 2: no-store, no-cache and max-age=0; the response will never be reused, not even for bf-cache; note that unsaved changes may be lost
    • 3: private; the response will be cached by personal caches, such as a browser cache
    • 4: public; the response may be cached by both personal and shared caches
  • "Human" requests like view or edit are not waiting XWiki initialization forever and display a waiting page with initialization progress instead: init.png
  • SpaceIndex Macro has now a new parameter to sort the document by creation date, modification date, or by name.
  • User Profile page display email hyperlink (if the email is not obfuscated) on view and preview mode.
  • The SOLR index synchronization which is automatically run at XWiki startup can now be disabled using solr.synchronizeAtStartup property in xwiki.properties file

See the full list of JIRA issues fixed in this release.

For Developers

LESS integration

  • We are happy to propose the ability of using the LESS preprocessor directly in XWiki. Right now, it is only able to compile some files located in the skin directory in the WAR. See LESS Module.
  • The LESS Compiler compress the generated CSS.
  • A new component has been added to compute a Color Theme compatible with Color Theme Application from a LESS file.

New Mail module (Experimental)

Allows to send mails in Java and from wiki pages.

See Mail Sender API for all details (it's not installed by default and you'll need to install it through the Extension Manager for example if you wish to try it out. Its extension id is org.xwiki.platform:xwiki-platform-mail-send-default).

Example to send an email from a wiki page:

{{velocity}}
#set ($message = $services.mailsender.createMessage("localhost@xwiki.org", "john@doe.com", "subject"))
#set ($discard = $message.addPart("text/plain", "text content"))
#set ($discard = $message.send())
#set ($discard = $message.waitTillSent(10000))
#foreach ($error in $message.getErrors())
* $error.message
#end
{{/velocity}}

Job module improvements

  • Introduced job progress helper API, see Job Module for more details.
  • A new org.xwiki.job.JobExecutor component has been introduce to replace org.xwiki.job.JobManager (which is now deprecated). This component adds support for parallel execution of jobs and also support grouping jobs that need to be executed in the same thread.

See Job Module for more details.

Log from a script

A new API to get a SLF4J Logger has been added to the logging script service.

$services.logging.getLogger('My script').info('Hello {}', 'world')

New contextual authorization manager role

A new role is now available to ease the replacement of the old Right Service (com.xpn.xwiki.user.api.XWikiRightService).
Compared to the old service, the component does not manage authentication which should have been ensured previously if needed. (No redirection to login is ever done)
The new component has a similar interface to the AuthorizationManager, but it take care of all external context aspects, like the currently executed macro block, the rendering context restrictions, the dropping of rights, etc...
This new role should be used from now on by any component that needs to check rights for the current user, in the current context.

New security authorization script service

A new script service is now available to access the default AuthorizationManager and the ContextualAuthorizationManager.

Here is some sample:

#if ($services.security.authorization.hasAccess("edit"))
... show some UI that require edit access on the current document by the current user ...
#end
#if ($services.security.authorization.hasAccess("edit", "xwiki:Sandbox.TestPage1"))
... show some UI that require edit access on Sandbox.TestPage1 document by the current user ...
#end
#if ($services.security.authorization.hasAccess("edit", "xwiki:XWiki.User1", "xwiki:Sandbox.TestPage1"))
... show some UI that require edit access on Sandbox.TestPage1 document by XWiki.User1 ...
#end
$services.security.authorization.checkAccess("edit")
... do some task that require edit access ...

In this second sample, the macro will fail with an AccessDeniedException if the right is not allowed.

Easier XDOM manipulation from Velocity

To be able to use the Block.getBlocks(BlockMatcher, Block.Axes) method on the rendering blocks in the documents XDOM from velocity, a converter has been introduced that maps string expressions to BlockMatcher objects. The current implementation only supports mapping to ClassBlockMatchers, and allows to get all blocks of a given type from the XDOM.

#foreach($headerBlock in $doc.getDocument().getXDOM().getBlocks("class:HeaderBlock", "DESCENDANT"))
   ... do something with the header block ...

Upgrades

The following dependencies have been upgraded:

Miscellaneous

  • XCOMMONS-582: $escapetool.json should be used instead of $escapetool.javascript for escaping manually constructed JSON; $jsontool.serialize should be used for generating JSON, though, since it is safer.
  • All component related API of com.xpn.xwiki.web.Utils are now using the context ComponentManager by default.
  • We added a new method to the component script service to access the component manager corresponding to a specific namespace:
    {{groovy}}
    def instanceForTestWiki = services.component.getComponentManager("wiki:test").getInstance(SomeRole.class)
    {{/groovy}}
  • xwiki.cfg file properties are now accessible through org.xwiki.configuration.ConfigurationSource component with role hint xwikicfg
  • Complete refactoring of the Resource module. Note that the Action module has been removed and folded into the new Resource module.
  • The getInstance methods in the Component Script Service are now public and return null if the Component cannot be looked up. A getLastError() method was also added to get the last exception.
  • New converter for java.lang.refect.Type which allows converting from String to Type and opposite in Velocity and wiki macros parameters for example.
  • The wiki manager API always returns a descriptor for the main wiki, and if there is no descriptor document it returns a "virtual" one that can be saved. Basically it now means that if a wiki exists there is always a corresponding descriptor, even for the main wiki.
  • The "skin" parameter in the URL is now taken into account when generating the links to the skin CSS (see: XWIKI-10426).
  • Filesystem Attachment Storage now allows you to disable cleaning of empty directories on startup since on a large installation this may take considerable time. (see: XWIKI-10431)
  • Start of implementation of the Resource Reference Serializer notion, still need more work.

Translations

The following translations have been updated: 

Tested Browsers & Databases

Failed to execute the [velocity] macro. Cause: [The execution of the [velocity] script macro is not allowed in [xwiki:TestReports.ManualTestReportXWiki61Summary]. Check the rights of its last author or the parameters if it's rendered from another script.]. Click on this message for details.

Here is the list of browsers we support and how they have been tested for this release:

BrowserStatus
Chrome30.pngGoogle Chrome 35Jira Tickets Marked as Fixed in the Release Notes Smoke testing
Firefox30.pngMozilla Firefox 30Smoke testing
IE30.pngInternet Explorer 8Not Tested
IE30.pngInternet Explorer 9Not Tested
IE30.pngInternet Explorer 11Smoke testing

Here is the list of databases we support and how they have been tested for this release:

DatabaseStatus
hypersql.pngHyperSQL 2.3.2Smoke testing, Jira Tickets Marked as Fixed in the Release Notes
mysql.pngMySQL 5.6.17Not Tested
oracle.pngOracle 11.2Not Tested
postgresql.pngPostgreSQL 9.3.4Not Tested

For the full list of tests see this page.

Known issues

Backward Compatibility and Migration Notes

General Notes

When upgrading make sure you compare your xwiki.cfg, xwiki.properties and web.xml files with the newest version since some configuration parameters may have been modified or 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.

API Breakages

The following APIs were modified since XWiki 6.0:

  • Young APIs
org.xwiki.activeinstalls.server.DataManager: Method 'public com.google.gson.JsonObject countInstalls(java.lang.String, java.lang.String, java.util.Map)' has been added to an interface
org.xwiki.activeinstalls.server.DataManager: Method 'public long getInstallCount(java.lang.String)' has been removed
org.xwiki.activeinstalls.server.DataManager: Method 'public com.google.gson.JsonObject searchInstalls(java.lang.String, java.lang.String, java.util.Map)' has been added to an interface
org.xwiki.activeinstalls.server.script.ActiveInstallsScriptService: Method 'public long getInstallCount(java.lang.String)' has been removed
org.xwiki.crypto.store.CertificateStore: Class org.xwiki.crypto.store.CertificateStore removed
org.xwiki.crypto.store.CertificateStoreException: Class org.xwiki.crypto.store.CertificateStoreException removed
org.xwiki.crypto.store.KeyStore: Class org.xwiki.crypto.store.KeyStore removed
org.xwiki.crypto.store.KeyStoreException: Class org.xwiki.crypto.store.KeyStoreException removed
  • Not supposed to be public
com.xpn.xwiki.store.XWikiHibernateBaseStore: In method 'protected void createHibernateSequenceIfRequired(java.lang.String, org.hibernate.Session)' the number of arguments has changed
com.xpn.xwiki.render.XWikiMacrosMappingRenderer: Removed org.xwiki.observation.EventListener from the set of implemented interfaces
com.xpn.xwiki.render.XWikiMacrosMappingRenderer: Method 'public java.util.List getEvents()' has been removed
com.xpn.xwiki.render.XWikiMacrosMappingRenderer: Method 'public java.lang.String getName()' has been removed
com.xpn.xwiki.render.XWikiMacrosMappingRenderer: Method 'public void onEvent(org.xwiki.observation.event.Event, java.lang.Object, java.lang.Object)' has been removed

Get Connected