Release Notes for XWiki 5.0 Milestone 1

Last modified by Thomas Mortagne on 2023/10/13

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 is the first release for the 5.x cycle with a new Release application and contains various Extension Manager and Distribution Wizard improvements.

New and Noteworthy (since XWiki 4.5.1)

Full list of issues fixed and Dashboard for 5.0.

Release Application

A new Release application is available to help you in releasing software projects.

release1.png

Office Import using the Office Macro

We added an option to the WYSIWYG Editor's Import Office Document dialog to allow you to import an office file using the Office Macro. This is useful if you don't plan to edit the content of the office file after the import or if you don't want to mix the content of the office file with the content of the wiki page.

xwe-importOfficeDocumentDialog.png

The generated wiki syntax looks like this:

{{office attachment="presentation.odp"/}}

Of course, you need to have the Office server connected in order to use this feature.

Extension Manager improvements

We added more information to the Description section and we added the ability to retrieve the list of stable versions that are available in the configured extension repositories.

EM-extensionDescription.png

We also grouped the action buttons (e.g. Install and Install of farm) as you can see in the image above. This allowed us to move the Apply button that you had to click to confirm an extension action like install from the bottom of the Progress section to the extension actions section. The Install and Install of farm buttons are still available in the drop down menu to allow you recompute the install plan if you want to.

EM-continueInstall.png

See the Extension Manager Application documentation for more information.

Distribution Wizard improvements

We fixed an important bug in Distribution Wizard () that was preventing you from properly upgrading the installed extensions in the last step. We now list extensions by the namespace (wiki) where they have been installed. For now you have to review and upgrade each extension individually. We hope to improve this soon by allowing you upgrade more extensions at once.

DW-upgradeExtensions.png

Miscellaneous

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

For Developers

Button Group Widget

We added a small widget to group form buttons.

buttonGroup.png

It can be used either with a static list of buttons, when you know beforehand that you have more than 1 button and you know the main one, or with a dynamic list of buttons, if you want the buttons to be grouped on the client side if there are more than one.

The static button group works even with JavaScript disabled (in a modern browser):

<p class="buttons">
  <span class="buttonwrapper button-group">
    <button>Action</button><a href="#foo" class="dropdown-toggle" tabindex="0"><span/></a>
    <span id="foo" class="dropdown-menu">
      <button>First item</button>
      <input type="submit" value="Second item" class="button" />
      <a href="#third">Third item</a>
    </span>
  </span>
</p>

The dynamic group obviously requires JavaScript. The first button found in the group is considered the main one. The buttons are grouped only if there are more than one. If the main button is secondary then the button group is styled as a secondary button.

<span class="dynamic-button-group">
  <span class="buttonwrapper">
    <button>One</button>
  </span>
  <span class="buttonwrapper">
    <input type="submit" class="button secondary" value="Two" />
  </span>
  <span class="buttonwrapper">
    <a href="#three" class="secondary">Three</a>
  </span>
</span>

In both cases you need to include the widget resources:

#set ($discard = $xwiki.ssfx.use('uicomponents/widgets/buttonGroup.css', true))
#set ($discard = $xwiki.jsfx.use('uicomponents/widgets/buttonGroup.js'))

Deprecated and Retired projects

No project were deprecated nor retired.

Upgrades

The following dependencies have been upgraded:

Miscellaneous

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:

BrowserTestedDetails
Chrome30.pngGoogle Chrome 25Not Tested
Firefox30.pngMozilla Firefox 19PartiallyManual Test Report for XWiki 5.0 M1
IE30.pngInternet Explorer 8PartiallyTested the SOLR search engine
IE30.pngInternet Explorer 9PartiallyTested the SOLR search engine

Here's the list of databases we support and how they've been tested specifically for this release:

DatabaseTestedDetails
hypersql.pngHyperSQL 2.2.9Partially
mysql.pngMySQL 5.5.29Not Tested
oracle.pngOracle 11.2Not Tested
postgresql.pngPostgreSQL 9.1.3Not Tested

Known issues

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.

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.

Issues specific to XWiki 5.0 Milestone 1

  • the default resolver used by the model script service moved from currentmixed to current. In practice it means $services.model.resolveDocument('') will now return a document reference with currentwiki:currentspace.currentdocument instead of currentwiki:currentspace.WebHome. See XWIKI-8834 for more details.

API Breakages

The following APIs were modified since XWiki 4.5.1:

  • Made public by mistake:
org.xwiki.job.AbstractJob: Class org.xwiki.job.AbstractJob removed
  • Added support for any kind of source:
org.xwiki.localization.Translation: Return type of method 'public java.lang.String getRawSource()' has been changed to java.lang.Object
  • Added new translation keys:
org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String importOfficeContentFilterStylesCheckBoxHint()' has been added to an interface
org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String importOfficeFileUseOfficeViewerCheckBoxHint()' has been added to an interface
org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String importOfficeFileUseOfficeViewerCheckBoxLabel()' has been added to an interface
  • Remove dependency on Portlet API from old core:
com.xpn.xwiki.web.XWikiForm: Method 'public void reset(org.apache.struts.action.ActionMapping, javax.portlet.RenderRequest)' has been removed
com.xpn.xwiki.web.XWikiForm: Method 'public void setRequest(javax.portlet.PortletRequest)' has been removed
com.xpn.xwiki.web.XWikiPortlet: Class com.xpn.xwiki.web.XWikiPortlet removed
com.xpn.xwiki.web.XWikiPortletContext: Class com.xpn.xwiki.web.XWikiPortletContext removed
com.xpn.xwiki.web.XWikiPortletRequest: Class com.xpn.xwiki.web.XWikiPortletRequest removed
com.xpn.xwiki.web.XWikiPortletResponse: Class com.xpn.xwiki.web.XWikiPortletResponse removed
com.xpn.xwiki.web.XWikiPortletURLFactory: Class com.xpn.xwiki.web.XWikiPortletURLFactory removed
com.xpn.xwiki.web.XWikiRequest: Removed javax.portlet.ActionRequest from the set of implemented interfaces
com.xpn.xwiki.web.XWikiRequest: Removed javax.portlet.PortletRequest from the set of implemented interfaces
com.xpn.xwiki.web.XWikiRequest: Removed javax.portlet.RenderRequest from the set of implemented interfaces
com.xpn.xwiki.web.XWikiResponse: Removed javax.portlet.ActionResponse from the set of implemented interfaces
com.xpn.xwiki.web.XWikiResponse: Removed javax.portlet.PortletResponse from the set of implemented interfaces
com.xpn.xwiki.web.XWikiResponse: Removed javax.portlet.RenderResponse from the set of implemented interfaces
com.xpn.xwiki.web.XWikiServletRequest: Removed javax.portlet.ActionRequest from the set of implemented interfaces
com.xpn.xwiki.web.XWikiServletRequest: Removed javax.portlet.PortletRequest from the set of implemented interfaces
com.xpn.xwiki.web.XWikiServletRequest: Removed javax.portlet.RenderRequest from the set of implemented interfaces
com.xpn.xwiki.web.XWikiServletRequest: Method 'public javax.portlet.PortalContext getPortalContext()' has been removed
com.xpn.xwiki.web.XWikiServletRequest: Method 'public java.io.InputStream getPortletInputStream()' has been removed
com.xpn.xwiki.web.XWikiServletRequest: Method 'public javax.portlet.PortletMode getPortletMode()' has been removed
com.xpn.xwiki.web.XWikiServletRequest: Method 'public javax.portlet.PortletSession getPortletSession()' has been removed
com.xpn.xwiki.web.XWikiServletRequest: Method 'public javax.portlet.PortletSession getPortletSession(boolean)' has been removed
com.xpn.xwiki.web.XWikiServletRequest: Method 'public javax.portlet.PortletPreferences getPreferences()' has been removed
com.xpn.xwiki.web.XWikiServletRequest: Method 'public java.util.Enumeration getProperties(java.lang.String)' has been removed
com.xpn.xwiki.web.XWikiServletRequest: Method 'public java.lang.String getProperty(java.lang.String)' has been removed
com.xpn.xwiki.web.XWikiServletRequest: Method 'public java.util.Enumeration getPropertyNames()' has been removed
com.xpn.xwiki.web.XWikiServletRequest: Method 'public java.lang.String getResponseContentType()' has been removed
com.xpn.xwiki.web.XWikiServletRequest: Method 'public java.util.Enumeration getResponseContentTypes()' has been removed
com.xpn.xwiki.web.XWikiServletRequest: Method 'public javax.portlet.WindowState getWindowState()' has been removed
com.xpn.xwiki.web.XWikiServletRequest: Method 'public boolean isPortletModeAllowed(javax.portlet.PortletMode)' has been removed
com.xpn.xwiki.web.XWikiServletRequest: Method 'public boolean isWindowStateAllowed(javax.portlet.WindowState)' has been removed
com.xpn.xwiki.web.XWikiServletRequestStub: Removed javax.portlet.ActionRequest from the set of implemented interfaces
com.xpn.xwiki.web.XWikiServletRequestStub: Removed javax.portlet.PortletRequest from the set of implemented interfaces
com.xpn.xwiki.web.XWikiServletRequestStub: Removed javax.portlet.RenderRequest from the set of implemented interfaces
com.xpn.xwiki.web.XWikiServletRequestStub: Method 'public javax.portlet.PortalContext getPortalContext()' has been removed
com.xpn.xwiki.web.XWikiServletRequestStub: Method 'public java.io.InputStream getPortletInputStream()' has been removed
com.xpn.xwiki.web.XWikiServletRequestStub: Method 'public javax.portlet.PortletMode getPortletMode()' has been removed
com.xpn.xwiki.web.XWikiServletRequestStub: Method 'public javax.portlet.PortletSession getPortletSession()' has been removed
com.xpn.xwiki.web.XWikiServletRequestStub: Method 'public javax.portlet.PortletSession getPortletSession(boolean)' has been removed
com.xpn.xwiki.web.XWikiServletRequestStub: Method 'public javax.portlet.PortletPreferences getPreferences()' has been removed
com.xpn.xwiki.web.XWikiServletRequestStub: Method 'public java.util.Enumeration getProperties(java.lang.String)' has been removed
com.xpn.xwiki.web.XWikiServletRequestStub: Method 'public java.lang.String getProperty(java.lang.String)' has been removed
com.xpn.xwiki.web.XWikiServletRequestStub: Method 'public java.util.Enumeration getPropertyNames()' has been removed
com.xpn.xwiki.web.XWikiServletRequestStub: Method 'public java.lang.String getResponseContentType()' has been removed
com.xpn.xwiki.web.XWikiServletRequestStub: Method 'public java.util.Enumeration getResponseContentTypes()' has been removed
com.xpn.xwiki.web.XWikiServletRequestStub: Method 'public javax.portlet.WindowState getWindowState()' has been removed
com.xpn.xwiki.web.XWikiServletRequestStub: Method 'public boolean isPortletModeAllowed(javax.portlet.PortletMode)' has been removed
com.xpn.xwiki.web.XWikiServletRequestStub: Method 'public boolean isWindowStateAllowed(javax.portlet.WindowState)' has been removed
com.xpn.xwiki.web.XWikiServletResponse: Removed javax.portlet.ActionResponse from the set of implemented interfaces
com.xpn.xwiki.web.XWikiServletResponse: Removed javax.portlet.PortletResponse from the set of implemented interfaces
com.xpn.xwiki.web.XWikiServletResponse: Removed javax.portlet.RenderResponse from the set of implemented interfaces
com.xpn.xwiki.web.XWikiServletResponse: Method 'public void addProperty(java.lang.String, java.lang.String)' has been removed
com.xpn.xwiki.web.XWikiServletResponse: Method 'public javax.portlet.PortletURL createActionURL()' has been removed
com.xpn.xwiki.web.XWikiServletResponse: Method 'public javax.portlet.PortletURL createRenderURL()' has been removed
com.xpn.xwiki.web.XWikiServletResponse: Method 'public java.lang.String getNamespace()' has been removed
com.xpn.xwiki.web.XWikiServletResponse: Method 'public java.io.OutputStream getPortletOutputStream()' has been removed
com.xpn.xwiki.web.XWikiServletResponse: Method 'public void setPortletMode(javax.portlet.PortletMode)' has been removed
com.xpn.xwiki.web.XWikiServletResponse: Method 'public void setProperty(java.lang.String, java.lang.String)' has been removed
com.xpn.xwiki.web.XWikiServletResponse: Method 'public void setRenderParameter(java.lang.String, java.lang.String)' has been removed
com.xpn.xwiki.web.XWikiServletResponse: Method 'public void setRenderParameter(java.lang.String, java.lang.String[])' has been removed
com.xpn.xwiki.web.XWikiServletResponse: Method 'public void setRenderParameters(java.util.Map)' has been removed
com.xpn.xwiki.web.XWikiServletResponse: Method 'public void setTitle(java.lang.String)' has been removed
com.xpn.xwiki.web.XWikiServletResponse: Method 'public void setWindowState(javax.portlet.WindowState)' has been removed
com.xpn.xwiki.web.XWikiServletResponseStub: Removed javax.portlet.ActionResponse from the set of implemented interfaces
com.xpn.xwiki.web.XWikiServletResponseStub: Removed javax.portlet.PortletResponse from the set of implemented interfaces
com.xpn.xwiki.web.XWikiServletResponseStub: Removed javax.portlet.RenderResponse from the set of implemented interfaces
com.xpn.xwiki.web.XWikiServletResponseStub: Method 'public void addProperty(java.lang.String, java.lang.String)' has been removed
com.xpn.xwiki.web.XWikiServletResponseStub: Method 'public javax.portlet.PortletURL createActionURL()' has been removed
com.xpn.xwiki.web.XWikiServletResponseStub: Method 'public javax.portlet.PortletURL createRenderURL()' has been removed
com.xpn.xwiki.web.XWikiServletResponseStub: Method 'public java.lang.String getNamespace()' has been removed
com.xpn.xwiki.web.XWikiServletResponseStub: Method 'public java.io.OutputStream getPortletOutputStream()' has been removed
com.xpn.xwiki.web.XWikiServletResponseStub: Method 'public void setPortletMode(javax.portlet.PortletMode)' has been removed
com.xpn.xwiki.web.XWikiServletResponseStub: Method 'public void setProperty(java.lang.String, java.lang.String)' has been removed
com.xpn.xwiki.web.XWikiServletResponseStub: Method 'public void setRenderParameter(java.lang.String, java.lang.String)' has been removed
com.xpn.xwiki.web.XWikiServletResponseStub: Method 'public void setRenderParameter(java.lang.String, java.lang.String[])' has been removed
com.xpn.xwiki.web.XWikiServletResponseStub: Method 'public void setRenderParameters(java.util.Map)' has been removed
com.xpn.xwiki.web.XWikiServletResponseStub: Method 'public void setTitle(java.lang.String)' has been removed
com.xpn.xwiki.web.XWikiServletResponseStub: Method 'public void setWindowState(javax.portlet.WindowState)' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Removed javax.portlet.ActionRequest from the set of implemented interfaces
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Removed javax.portlet.PortletRequest from the set of implemented interfaces
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Removed javax.portlet.RenderRequest from the set of implemented interfaces
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Method 'public javax.portlet.PortalContext getPortalContext()' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Method 'public java.io.InputStream getPortletInputStream()' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Method 'public javax.portlet.PortletMode getPortletMode()' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Method 'public javax.portlet.PortletSession getPortletSession()' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Method 'public javax.portlet.PortletSession getPortletSession(boolean)' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Method 'public javax.portlet.PortletPreferences getPreferences()' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Method 'public java.util.Enumeration getProperties(java.lang.String)' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Method 'public java.lang.String getProperty(java.lang.String)' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Method 'public java.util.Enumeration getPropertyNames()' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Method 'public java.lang.String getResponseContentType()' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Method 'public java.util.Enumeration getResponseContentTypes()' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Method 'public javax.portlet.WindowState getWindowState()' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Method 'public boolean isPortletModeAllowed(javax.portlet.PortletMode)' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletRequestStub: Method 'public boolean isWindowStateAllowed(javax.portlet.WindowState)' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletResponseStub: Removed javax.portlet.ActionResponse from the set of implemented interfaces
com.xpn.xwiki.plugin.scheduler.XWikiServletResponseStub: Removed javax.portlet.PortletResponse from the set of implemented interfaces
com.xpn.xwiki.plugin.scheduler.XWikiServletResponseStub: Removed javax.portlet.RenderResponse from the set of implemented interfaces
com.xpn.xwiki.plugin.scheduler.XWikiServletResponseStub: Method 'public void addProperty(java.lang.String, java.lang.String)' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletResponseStub: Method 'public javax.portlet.PortletURL createActionURL()' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletResponseStub: Method 'public javax.portlet.PortletURL createRenderURL()' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletResponseStub: Method 'public java.lang.String getNamespace()' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletResponseStub: Method 'public java.io.OutputStream getPortletOutputStream()' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletResponseStub: Method 'public void setPortletMode(javax.portlet.PortletMode)' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletResponseStub: Method 'public void setProperty(java.lang.String, java.lang.String)' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletResponseStub: Method 'public void setRenderParameter(java.lang.String, java.lang.String)' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletResponseStub: Method 'public void setRenderParameter(java.lang.String, java.lang.String[])' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletResponseStub: Method 'public void setRenderParameters(java.util.Map)' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletResponseStub: Method 'public void setTitle(java.lang.String)' has been removed
com.xpn.xwiki.plugin.scheduler.XWikiServletResponseStub: Method 'public void setWindowState(javax.portlet.WindowState)' has been removed
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Removed javax.portlet.ActionRequest from the set of implemented interfaces
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Removed javax.portlet.PortletRequest from the set of implemented interfaces
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Removed javax.portlet.RenderRequest from the set of implemented interfaces
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Method 'public javax.portlet.PortalContext getPortalContext()' has been removed
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Method 'public java.io.InputStream getPortletInputStream()' has been removed
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Method 'public javax.portlet.PortletMode getPortletMode()' has been removed
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Method 'public javax.portlet.PortletSession getPortletSession()' has been removed
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Method 'public javax.portlet.PortletSession getPortletSession(boolean)' has been removed
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Method 'public javax.portlet.PortletPreferences getPreferences()' has been removed
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Method 'public java.util.Enumeration getProperties(java.lang.String)' has been removed
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Method 'public java.lang.String getProperty(java.lang.String)' has been removed
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Method 'public java.util.Enumeration getPropertyNames()' has been removed
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Method 'public java.lang.String getResponseContentType()' has been removed
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Method 'public java.util.Enumeration getResponseContentTypes()' has been removed
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Method 'public javax.portlet.WindowState getWindowState()' has been removed
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Method 'public boolean isPortletModeAllowed(javax.portlet.PortletMode)' has been removed
com.xpn.xwiki.gwt.api.server.XWikiRequestWrapper: Method 'public boolean isWindowStateAllowed(javax.portlet.WindowState)' has been removed

Get Connected