Release Notes for XWiki 5.1
This is the release notes for XWiki Platform, XWiki Enterprise and XWiki Enterprise Manager. They share the same release notes as they are released together and have the same version.
This release comes with Solr search enabled by default. The search UI has been redesigned and the search backend has been greatly improved. A new Menu application is now avaible to help you create navigation menus that ca be placed after the header or in a side panel. Beside this, a lot of bug fixes (124) and small improvements (53) make this release worth trying.
New and Noteworthy (since XWiki 5.0.3)
Full list of issues fixed and Dashboard for 5.1.
Solr is the default search engine
We have redesigned the Solr search page to include faceted search and we improved the display of the advanced search options and the search results.
The Solr search module now automatically indexes all modifications made to the wiki. A synchronization background job is started at each XWiki startup to make sure the solr index and the database are in sync (only updates what needs to be updated). The manual indexing in the administration UI should also be a lot more stable since all the actual reading of wiki documents and their indexing is now done in a safe background thread.
Entities are now indexed with the list of supported locales (among the available locales). This means that if your current locale is "fr_FR" you will find all entities that you would have seen when the current locale is "fr_FR". For example if a document does not have any "fr_FR" explicit version you will still find the version you would have seen when going to that document (generally the default version of the document or the "fr" version of the document if any since the parent locale of "fr_FR" is "fr"). We call it locale inheritance.
See the documentation for the Solr Search Application for more details.
Menu Application
We have rewritten the Navigation Menu Wiki Macro and the Navigation Menu Config Application into a single application that can help you create navigation menus to be displayed either horizontally as a top bar after the page header or vertically in a side panel. See the documentation page of the new Menu Application for details.
Miscellaneous
- When an user wants to change his password, he now has to enter his current password for more security. Live validation of his new password validity (length) has also been added.
- The attachment upload input now remains visible after uploading one or more files:
- The "Send to" input from the Share page dialog displays a scope toggle when you are in a subwiki (or an workspace) that allows you to control whether the suggested users are local or global.
- We changed the dashboard to display the gadget actions when hovering the gadget.
- Moved the User Directory feature to an application on its own.
- Moved the XWiki Syntax Help feature to an application on its own.
- More documents marked as hidden by default: Blog.News, Blog.Other, Blog.Personal, Main.Activity, Main.MessageSenderMacro, Main.Tags, Sandbox.WebPreferences, XWiki.WebHome, XWiki.XWikiAdminGroup, XWiki.XWikiAllGroup, XWiki.SearchConfig
- Added support for new Google Analytics "Universal" tracking method.
See the full list of JIRA issues fixed in this release.
For Developers
Merging WARs with Packager plugin
We added a contextPathMapping configuration parameter to the Packager Maven plugin to allow us to bind WAR artifact IDs to the context path where they should be extracted. Here's an example:
<groupId>org.xwiki.platform</groupId>
<artifactId>xwiki-platform-tool-packager-plugin</artifactId>
...
<configuration>
<contextPathMapping>
<!-- Merge the WYSIWYG editor WAR with the platform web WAR. -->
<xwiki-platform-wysiwyg-war>xwiki</xwiki-platform-wysiwyg-war>
</contextPathMapping>
</configuration>
</plugin>
The Packager plugin looks for WAR artifacts in the list of dependencies. If no WAR-type dependencies are found then the following WARs are used, with the corresponding default context path binding:
xwiki-platform-tool-rootwebapp: root
If more WARs share the same context path then they are merged. Of course, in this case the order in the list of dependencies is important because the last WAR can overwrite files from the previous ones. When no mapping is defined for a WAR, its artifact id is used instead as context path.
Upgrades
The following dependencies have been upgraded:
- commons-compress 1.5
- commons-codec 1.8
- diffutils 1.3
- Doxia 1.4
- Groovy 2.1.5
- HTMLCleaner 2.5
- httpclient 4.2.5
- JGroups 3.3
- jQuery 1.10.1
- logback 1.0.13
- Lucene and Solr 4.3
- Require.js 2.1.6
Miscellaneous
Client side:
- We added a new special CSS class name, useTitleAsTip, that, combined with withTip, will allow you to have a tip (place-holder) different than the initial value of the text input.
- A new URL parameter has been added to reference non aggregated JavaScript files: ?minify=false. See the Debugging Guide.
- A new 'jQueryNoConflict' module is available. All it does is calling jQuery.noConflict(false) to prevent conflicts with Prototype.js (with respect to $ global variable):require(['jQueryNoConflict'], function($) {
// Your code here.
})
Scripting:
- A new UI extension point is available: org.xwiki.platform.template.header.after. See the list of available UIXs for more information.
- Added API to easily create a DocumentReference from a LocalDocumentReference
DocumentReference documentReference = new DocumentReference(localReference, wikiReference); - A new Velocity macro is available to display the title of a sheet. Most of the times when you have a sheet you want to display some text when the user visits the sheet page and something different when the user visits a page where the sheet is applied. Up until now the solution was to write an if in the sheet title to check if the current document is the sheet. E.g.:
#if ($doc.fullName == 'AppWithinMinutes.LiveTableViewSheet')LiveTable View Sheet#{else}#evaluate($doc.title)#end
This can now be written as:
#sheetTitle('LiveTable View Sheet' $doc.fullName.equals('AppWithinMinutes.LiveTableViewSheet'))
or, if the sheet has an object of type XWiki.SheetDescriptorClass:
#sheetTitle('LiveTable View Sheet') - Add render method in Localization module taking syntax without parameters:$services.localization.render('some.key', 'xhtml/1.0')
- Added new language and currentlanguage Query Filters
REST:
- All REST responses now specify the version of XWiki running on the server in the XWiki-Version HTTP header, and the current user in the XWiki-User header.
- You can now provide a version summary (comment) when updating a page using REST. You can retrieve the version summary either by getting the page or by getting the page history, in which case you get the summary for each page revision.
Backend:
- A new method to add a custom Job to the JobManager:Job myjob = new MyJob();
this.jobManager.addJob(myjob); - Jobs don't share the same ExecutionContext anymore.
- A new Runnable wrapper to initialize and dispose ExecutionContext:Thread thread = new Thread(new ExecutionContextRunnable(runnable, componentManger));
thread.start(); - It's now possible to write Rendering Integration tests using Mockito. For example:@RunWith(RenderingTestSuite.class)
@RenderingTestSuite.Scope("wiki")
@AllComponents
public class WikiIntegrationTests
{
@RenderingTestSuite.Initialized
public void initialize(MockitoComponentManager componentManager) throws Exception
{
componentManager.registerComponent(MockWikiModel.getComponentDescriptor());
// Add InterWiki Definition for links28 test
DefaultRenderingConfiguration renderingConfiguration =
(DefaultRenderingConfiguration) componentManager.getInstance(RenderingConfiguration.class);
renderingConfiguration.addInterWikiDefinition("knownalias", "http://server/common/url/");
}
}
Other:
- The WYSIWYG editor administration section has been moved from the Administration Application to its own module under xwiki-platform-wysiwyg.
Translations
The following translations have been updated:
Tested Browsers & Databases
Here's the list of browsers we support and how they've been tested specifically for this release:
Browser | Tested | Details | |
---|---|---|---|
Google Chrome 27 | Partially | Jira Tickets Marked as Fixed in the Release Notes, migrations from 5.0.3 and from 5.1RC1 | |
Mozilla Firefox 22 | Not Tested | ||
Internet Explorer 8 | Not Tested | ||
Internet Explorer 9 | Not Tested |
Here's the list of databases we support and how they've been tested specifically for this release:
Database | Tested | Details | |
---|---|---|---|
HyperSQL 2.2.9 | Partially | Jira Tickets Marked as Fixed in the Release Notes, migrations from 5.0.3 and from 5.1RC1 | |
MySQL 5.6.10 | Not Tested | ||
Oracle 11.2 | Not Tested | ||
PostgreSQL 9.1.3 | Partially | Migrations from 5.0.3 |
Known issues
- Bugs we know about
- If you're migrating an XWiki instance using PostgreSQL or Oracle you may get this error (fixed in XWiki 5.2). The workaround is to remove the hibernate_sequence sequence prior to starting XWiki (for the main wiki and all subwikis).
Backward Compatibility and Migration Notes
General Notes
You may also want to import the default wiki XAR in order to benefit from all the improvements listed above.
GIF Silk icon set no longer available
The Silk icon set has always been officially provided in PNG format. However, since they use Alpha transparency, a feature not supported by Internet Explorer 6, we provided our own GIF version of the icon set, with simple transparency. Once we dropped support for IE6, we also included the official PNG version, with the goal of transitioning from the jagged GIF version to the nicer looking PNGs. The time has come to deprecate the GIF icons, so they are no longer available in the non-legacy builds of XWiki Enterprise. However, the official releases will still have the icons included for a while, so it's unlikely that this deprecation will break custom applications.
However, an update of the documents that still use the GIF icons is recommended. Since the base icon name is the same, all that's required is to change the extension from .gif to .jpg to use the right icons.
User email
The data type of the 'email' property from the user profile has changed from String to Email, a specialized type introduced in 4.2. Unfortunately this change doesn't apply automatically when you upgrade from an older version so you have to do it your self:
- edit XWiki.XWikiUsers with the class editor
- delete the 'email' property
- add a new property of type Email named 'email' with 'e-Mail' as pretty name
- save
The values of both String and Email data types are stored in the same database table so there souldn't be any migration issues for existing users.
API Breakages
The following APIs were modified since XWiki 5.0.3:
- Young API: New method to separate job setup from job start to put real jobs in queue.org.xwiki.job.Job: Method 'public void initialize(org.xwiki.job.Request)' has been added to an interface
- Young API: New method to add a custom Job to the queue.org.xwiki.job.JobManager: Method 'public void addJob(org.xwiki.job.Job)' has been added to an interface
- Needed to fix XWIKI-9251 and the IRC Bot API is still relatively new and not a mainstream API used by lots of people.org.xwiki.ircbot.IRCBot: Method 'public java.lang.String getWikiId()' has been added to an interface
- Young API: The URL module has never been finished and we started working on it again.org.xwiki.url.InvalidURLException: Class org.xwiki.url.InvalidURLException removed