XWiki Enterprise 3.0 Milestone 3

Version 21.2 by Anca Luca on 2011/03/11

Third milestone of the XWiki Enterprise 3.0 version (Roadmap).

New and Noteworthy (since XWiki Enterprise 3.0 Milestone 2)

Dashboard Editing

XWIKI-5938: Modify the dashboard macro to store the gadgets in objects

In the spirit of the XWiki model, the dashboard gadgets are now stored in the objects in a page, and the dashboard is rendered by using the dashboard macro in the page where the dashboard should be displayed. Any content can be added as a gadget in a dashboard, as long as an object is added with the appropriate content. This model also fixes XWIKI-5903

Because of this change, when upgrading from 2.x to 3.0, if the dashboard macro was used in its form from 2.5 (with the macro calls in the source of the page), it needs to be manually converted to the objects form.

Also, a visual editor for the dashboards was implemented, accessible in the "Inline Form" edit mode of a page that contains a dashboard. It implements the following features:

  • XWIKI-5939: Allow to edit the positions of gadgets on a dashboard with drag & drop
    Gadgets can be dragged by their title bar and moved around in different columns of the dashboard.
    ErrorTODO
    image
  • XWIKI-5940: Allow to add a new gadget on a dashboard, by selecting it from a simple list of available macros in the wiki
    A new gadget can be added by choosing from the macros in the wiki, using a dialog similar to the WYSIWYG editor macro dialog.
    ErrorTODO
    image
  • XWIKI-5941: Allow to remove a gadget from a dashboard
    A gadget can be removed from the dashboard using the gadget settings action.
    ErrorTODO
    image

Gallery macro and office presentation viewer based on it

The Gallery Macro helps you create a simple image gallery where images are displayed using a slide-show view. You can use images from any source, both internal (attached to a wiki page) and external. The gallery macro collects all the images it finds in the macro content. The Office Macro has been improved to use the gallery macro when displaying office presentations:

presentation.png

Instant search

  • [XASEARCH-22] Support for multi-sources live suggestions when typing in the search box
  • [XWIKI-6040] New suggest widget with support for multiple source of suggestions
Error

TODO

Jerome?

User status

  • [XWIKI-6047] New EventStream component
  • [XAADMINISTRATION-233] Add the ability to "follow" users
  • [XE-770] Friends and Status feature
Error

TODO

Sergiu?

XWiki Query Generator

  • [XWIKI-1090] XWiki Query Generator
Error

TODO

Ludovic?

Programming Rights Status

  • [XAADMINISTRATION-220] Provide a UI in the programming section that shows status of document that declare requiring rights (and when needed a way to fix missing rights)
  • [XE-831] Provide a XClass that allow to mark pages that require to be saved by a user with certain rights
  • [XE-832] Add XWiki.RequiredRightClass to XE documents that require to be saved with certain rights
Error

TODO

Jerome?

Improved macro support in the WYSIWYG content editor

In order to fix XWIKI-5691 and a few related bugs we had to refactor the way macros are displayed inside the rich text area of the WYSIWYG content editor. Along with this we introduced a few improvements in the way users interact with macros. Here's a list of changes:

  • Macros are displayed now 100% like in view mode. Previously we were using a button HTML element to protect the macro output which gave macro output an inherent box layout. This was noticeable especially for multi-line in-line macros. This is fixed now:

    inLineMacro.png

  • Macros that have output are emphasized only when hovered or selected.
  • You can navigate the macro output with the arrow keys. The macro output feels like the rest of the content except that you can't edit it in place.
  • You can copy content from the macro output.
  • Press Enter to edit macro.
  • Press Space to toggle between collapsed and expanded state.
  • Ctrl + Shift + R reloads the macros.
  • Ctrl + Shift + E expands all/selected macros.
  • Ctrl + Shift + C collapses all/selected macros.
  • Ctrl + Shift + M to open the insert macro wizard.

Known issues that we'd like to fix for 3.0 final:

  • You can cut text from macro output.
  • You can drag text into/from macro output.
  • Placing the caret before/after a macro is still tricky.

Rendering and Commons top level projects

Miscellaneous

  • UI improvements
    • XWIKI-5993: Align Copy Page UI on other action features

      copyPage.png

    • XWIKI-5990: Make User Account Activation form conform to the inline form standard
  • Object editor bug fixes
    • XWIKI-5832: Cannot create groups or add members to existing groups using the object editor
  • More PDF export bug fixes
    • XWIKI-5112: Anchor in title breaks PDF export
    • XWIKI-6046: Wiki markup in document titles ends up as visible XML in exported PDFs
  • WYSIWYG content editor bug fixes and improvements
  • Proper rights check for copy page feature. The Copy menu item is now available on any page you have view access. In order to copy the page you must have edit rights on the target space and if the target page already exists you must have delete right on it.
  • Include macro improvements
  • Improved syntax guide
    • XE-839: Add XWiki Syntax 2.1 link specifications to syntax guide
  • Improved extension manager

Translations

  • The following translations have been updated: de, es, fr, nl, ru, sv.

Known issues

Test Report

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

Backward Compatibility and Migration Notes

General Notes

Warning

If you're running in a multiwiki setup you'll also need to define the property xwiki.store.migration.databases=all to your xwiki.cfg file or explicitly name all databases to be migrated as in xwiki.store.migration.databases=db1,db2,....

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

Warning

Always make sure you compare your xwiki.cfg file with the newest version since some configuration parameters were added. Note 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 xwiki-core APIs were modified since XWiki Enterprise 2.7 (API breakages in modules that were moved to Rendering or Commons top level projects are not included):

ERROR: 7002: com.xpn.xwiki.api.XWiki: Method 'public java.lang.Object getExoPortalService(java.lang.String)' has been removed
ERROR: 7002: com.xpn.xwiki.api.XWiki: Method 'public java.lang.Object getExoService(java.lang.String)' has been removed
ERROR: 7002: com.xpn.xwiki.api.XWiki: Method 'public java.lang.Object getPortalService(java.lang.String)' has been removed
ERROR: 7002: com.xpn.xwiki.api.XWiki: Method 'public java.lang.Object getService(java.lang.String)' has been removed
ERROR: 7002: com.xpn.xwiki.api.XWikiCompatibilityAspect: Method 'public java.lang.Object ajc$interMethod$com_xpn_xwiki_api_XWikiCompatibilityAspect$com_xpn_xwiki_api_XWiki$getPortalService(com.xpn.xwiki.api.XWiki, java.lang.String)' has been removed
ERROR: 7002: com.xpn.xwiki.api.XWikiCompatibilityAspect: Method 'public java.lang.Object ajc$interMethod$com_xpn_xwiki_api_XWikiCompatibilityAspect$com_xpn_xwiki_api_XWiki$getService(com.xpn.xwiki.api.XWiki, java.lang.String)' has been removed
ERROR: 7002: com.xpn.xwiki.api.XWikiCompatibilityAspect: Method 'public java.lang.Object ajc$interMethodDispatch1$com_xpn_xwiki_api_XWikiCompatibilityAspect$com_xpn_xwiki_api_XWiki$getPortalService(com.xpn.xwiki.api.XWiki, java.lang.String)' has been removed
ERROR: 7002: com.xpn.xwiki.api.XWikiCompatibilityAspect: Method 'public java.lang.Object ajc$interMethodDispatch1$com_xpn_xwiki_api_XWikiCompatibilityAspect$com_xpn_xwiki_api_XWiki$getService(com.xpn.xwiki.api.XWiki, java.lang.String)' has been removed
ERROR: 7002: com.xpn.xwiki.pdf.api.PdfExport: Method 'public byte[] convertToStrictXHtml(byte[], com.xpn.xwiki.XWikiContext)' has been removed
ERROR: 7002: com.xpn.xwiki.pdf.api.PdfExport: Method 'public java.lang.String convertToStrictXHtml(java.lang.String)' has been removed
ERROR: 7002: com.xpn.xwiki.pdf.api.PdfExport: Method 'public byte[] convertXHtmlToXMLFO(byte[], com.xpn.xwiki.XWikiContext)' has been removed
ERROR: 7002: com.xpn.xwiki.pdf.api.PdfExport: Method 'public java.lang.String convertXHtmlToXMLFO(java.lang.String, com.xpn.xwiki.XWikiContext)' has been removed
ERROR: 7005: com.xpn.xwiki.pdf.api.PdfExport: Parameter 3 of 'public void export(com.xpn.xwiki.doc.XWikiDocument, java.io.OutputStream, int, com.xpn.xwiki.XWikiContext)' has changed its type to com.xpn.xwiki.pdf.api.PdfExport$ExportType
ERROR: 7005: com.xpn.xwiki.pdf.api.PdfExport: Parameter 3 of 'public void exportHtml(java.lang.String, java.io.OutputStream, int, com.xpn.xwiki.XWikiContext)' has changed its type to com.xpn.xwiki.pdf.api.PdfExport$ExportType
ERROR: 7002: com.xpn.xwiki.pdf.api.PdfExport: Method 'public void exportXHtml(byte[], java.io.OutputStream, int, com.xpn.xwiki.XWikiContext)' has been removed
ERROR: 7002: org.xwiki.container.Request: Method 'public org.xwiki.url.XWikiURL getURL()' has been removed
ERROR: 7012: org.xwiki.bridge.DocumentModelBridge: Method 'public org.xwiki.rendering.syntax.Syntax getSyntax()' has been added to an interface
ERROR: 7012: org.xwiki.bridge.DocumentModelBridge: Method 'public org.xwiki.rendering.block.XDOM getXDOM()' has been added to an interface
ERROR: 8001: org.xwiki.officeimporter.OfficeImporter: Class org.xwiki.officeimporter.OfficeImporter removed
ERROR: 8001: org.xwiki.officeimporter.OfficeImporterFilter: Class org.xwiki.officeimporter.OfficeImporterFilter removed
ERROR: 7002: org.xwiki.officeimporter.OfficeImporterVelocityBridge: Method 'public java.lang.String getLastErrorMessage()' has been removed
ERROR: 7002: org.xwiki.officeimporter.OfficeImporterVelocityBridge: Method 'public boolean importDocument(byte[], java.lang.String, java.lang.String, java.util.Map)' has been removed
ERROR: 7002: org.xwiki.officeimporter.builder.PresentationBuilder: Method 'public org.xwiki.officeimporter.document.XDOMOfficeDocument build(java.io.InputStream, java.lang.String)' has been removed
ERROR: 7002: org.xwiki.officeimporter.builder.PresentationBuilder: Method 'public org.xwiki.officeimporter.document.XDOMOfficeDocument build(byte[])' has been removed
ERROR: 7002: org.xwiki.officeimporter.builder.XDOMOfficeDocumentBuilder: Method 'public org.xwiki.officeimporter.document.XDOMOfficeDocument build(byte[], org.xwiki.bridge.DocumentName, boolean)' has been removed
ERROR: 7002: org.xwiki.officeimporter.builder.XHTMLOfficeDocumentBuilder: Method 'public org.xwiki.officeimporter.document.XHTMLOfficeDocument build(byte[], org.xwiki.bridge.DocumentName, boolean)' has been removed
ERROR: 7012: org.xwiki.officeimporter.openoffice.OpenOfficeConverter: Method 'public boolean isMediaTypeSupported(java.lang.String)' has been added to an interface
ERROR: 8001: org.xwiki.officeimporter.openoffice.OpenOfficeDocumentConverter: Class org.xwiki.officeimporter.openoffice.OpenOfficeDocumentConverter removed
ERROR: 7002: org.xwiki.officeimporter.openoffice.OpenOfficeManager: Method 'public org.artofsolving.jodconverter.OfficeDocumentConverter getDocumentConverter()' has been removed
ERROR: 7002: org.xwiki.officeimporter.splitter.XDOMOfficeDocumentSplitter: Method 'public java.util.Map split(org.xwiki.officeimporter.document.XDOMOfficeDocument, int[], java.lang.String, org.xwiki.bridge.DocumentName)' has been removed
ERROR: 7012: org.xwiki.extension.CoreExtension: Method 'public boolean isGuessed()' has been added to an interface
ERROR: 7006: org.xwiki.extension.Extension: Return type of method 'public java.lang.String getId()' has been changed to org.xwiki.extension.ExtensionId
ERROR: 7002: org.xwiki.extension.Extension: Method 'public java.lang.String getVersion()' has been removed
ERROR: 7002: org.xwiki.extension.ExtensionManager: Method 'public int coundAvailableExtensions()' has been removed
ERROR: 7002: org.xwiki.extension.ExtensionManager: Method 'public int coundInstalledExtensions()' has been removed
ERROR: 7002: org.xwiki.extension.ExtensionManager: Method 'public java.util.List getAvailableExtensions(int, int)' has been removed
ERROR: 7002: org.xwiki.extension.ExtensionManager: Method 'public java.util.List getInstalledExtensions(int, int)' has been removed
ERROR: 7002: org.xwiki.extension.ExtensionManager: Method 'public org.xwiki.extension.LocalExtension installExtension(org.xwiki.extension.ExtensionId)' has been removed
ERROR: 7004: org.xwiki.extension.ExtensionManager: In method 'public org.xwiki.extension.Extension resolveExtension(org.xwiki.extension.ExtensionId)' the number of arguments has changed
ERROR: 7002: org.xwiki.extension.ExtensionManager: Method 'public void uninstallExtension(java.lang.String)' has been removed
ERROR: 7012: org.xwiki.extension.LocalExtension: Method 'public java.util.Collection getNamespaces()' has been added to an interface
ERROR: 7002: org.xwiki.extension.LocalExtension: Method 'public boolean isEnabled()' has been removed
ERROR: 7012: org.xwiki.extension.LocalExtension: Method 'public boolean isInstalled()' has been added to an interface
ERROR: 7012: org.xwiki.extension.LocalExtension: Method 'public boolean isInstalled(java.lang.String)' has been added to an interface
ERROR: 7004: org.xwiki.extension.handler.ExtensionHandler: In method 'public void install(org.xwiki.extension.LocalExtension)' the number of arguments has changed
ERROR: 7004: org.xwiki.extension.handler.ExtensionHandler: In method 'public void uninstall(org.xwiki.extension.LocalExtension)' the number of arguments has changed
ERROR: 7004: org.xwiki.extension.handler.ExtensionHandler: In method 'public void upgrade(org.xwiki.extension.LocalExtension, org.xwiki.extension.LocalExtension)' the number of arguments has changed
ERROR: 7004: org.xwiki.extension.handler.ExtensionHandlerManager: In method 'public void install(org.xwiki.extension.LocalExtension)' the number of arguments has changed
ERROR: 7004: org.xwiki.extension.handler.ExtensionHandlerManager: In method 'public void uninstall(org.xwiki.extension.LocalExtension)' the number of arguments has changed
ERROR: 7004: org.xwiki.extension.handler.ExtensionHandlerManager: In method 'public void upgrade(org.xwiki.extension.LocalExtension, org.xwiki.extension.LocalExtension)' the number of arguments has changed
ERROR: 7006: org.xwiki.extension.repository.CoreExtensionRepository: Return type of method 'public java.util.List getCoreExtensions()' has been changed to java.util.Collection
ERROR: 7006: org.xwiki.extension.repository.ExtensionRepository: Return type of method 'public java.util.List getExtensions(int, int)' has been changed to java.util.Collection
ERROR: 7004: org.xwiki.extension.repository.LocalExtensionRepository: In method 'public java.util.List getBackwardDependencies(java.lang.String)' the number of arguments has changed
ERROR: 7006: org.xwiki.extension.repository.LocalExtensionRepository: Return type of method 'public java.util.List getBackwardDependencies(java.lang.String)' has been changed to java.util.Collection
ERROR: 7012: org.xwiki.extension.repository.LocalExtensionRepository: Method 'public org.xwiki.extension.LocalExtension getInstalledExtension(java.lang.String, java.lang.String)' has been added to an interface
ERROR: 7012: org.xwiki.extension.repository.LocalExtensionRepository: Method 'public java.util.Collection getInstalledExtensions(java.lang.String)' has been added to an interface
ERROR: 7012: org.xwiki.extension.repository.LocalExtensionRepository: Method 'public java.util.Collection getInstalledExtensions()' has been added to an interface
ERROR: 7002: org.xwiki.extension.repository.LocalExtensionRepository: Method 'public org.xwiki.extension.LocalExtension getLocalExtension(java.lang.String)' has been removed
ERROR: 7006: org.xwiki.extension.repository.LocalExtensionRepository: Return type of method 'public java.util.List getLocalExtensions()' has been changed to java.util.Collection
ERROR: 7004: org.xwiki.extension.repository.LocalExtensionRepository: In method 'public org.xwiki.extension.LocalExtension installExtension(org.xwiki.extension.Extension, boolean)' the number of arguments has changed
ERROR: 7004: org.xwiki.extension.repository.LocalExtensionRepository: In method 'public void uninstallExtension(org.xwiki.extension.LocalExtension)' the number of arguments has changed

The following XWiki GWT APIs were modified since XWiki Enterprise 2.7:

ERROR: 6004: org.xwiki.gwt.dom.client.Style: Changed type of field BACKGROUND_COLOR from java.lang.String to org.xwiki.gwt.dom.client.Property
ERROR: 6011: org.xwiki.gwt.user.client.ui.rta.RichTextArea: Field DISABLED has been removed, but it was previously a constant
ERROR: 7002: org.xwiki.gwt.wysiwyg.client.RichTextEditorController: Method 'protected void initTextArea()' has been removed
ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String gadget()' has been added to an interface
ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String gadgetInsertActionLabel()' has been added to an interface
ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String gadgetInsertDialogCaption()' has been added to an interface
ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String gadgetInsertDialogTitle()' has been added to an interface
ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String gadgetNoGadgetSelected()' has been added to an interface
ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String gadgetTitleDescription()' has been added to an interface
ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String gadgetTitleLabel()' has been added to an interface
ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String macroCollapseAllShortcutKeyLabel()' has been added to an interface
ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String macroCollapseShortcutKeyLabel()' has been added to an interface
ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String macroEditShortcutKeyLabel()' has been added to an interface
ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String macroExpandAllShortcutKeyLabel()' has been added to an interface
ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String macroExpandShortcutKeyLabel()' has been added to an interface
ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String macroInsertShortcutKeyLabel()' has been added to an interface
ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String macroRefreshShortcutKeyLabel()' has been added to an interface
ERROR: 6011: org.xwiki.gwt.wysiwyg.client.plugin.color.ColorCell: Field SELECTED_STYLE_NAME has been removed, but it was previously a constant
ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.color.ColorPicker: Method 'public java.lang.String convertToHex(java.lang.String)' has been removed
ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.color.ColorPlugin: Method 'protected org.xwiki.gwt.user.client.ui.rta.cmd.Executable getBackColorExecutable()' has been removed
ERROR: 8001: org.xwiki.gwt.wysiwyg.client.plugin.color.MozillaColorPlugin: Class org.xwiki.gwt.wysiwyg.client.plugin.color.MozillaColorPlugin removed
ERROR: 8001: org.xwiki.gwt.wysiwyg.client.plugin.color.exec.BackColorExecutable: Class org.xwiki.gwt.wysiwyg.client.plugin.color.exec.BackColorExecutable removed
ERROR: 8001: org.xwiki.gwt.wysiwyg.client.plugin.color.exec.HiliteColorExecutable: Class org.xwiki.gwt.wysiwyg.client.plugin.color.exec.HiliteColorExecutable removed
ERROR: 7004: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroDisplayer: In method 'public MacroDisplayer()' the number of arguments has changed
ERROR: 7004: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroDisplayer: In method 'protected org.xwiki.gwt.dom.client.Element createReadOnlyBox()' the number of arguments has changed
ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroDisplayer: Method 'protected java.lang.String getMacroContainerTagName()' has been removed
ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroDisplayer: Method 'public void setTextArea(org.xwiki.gwt.user.client.ui.rta.RichTextArea)' has been removed
ERROR: 4001: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroPlugin: Removed com.google.gwt.event.dom.client.DoubleClickHandler from the set of implemented interfaces
ERROR: 4001: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroPlugin: Removed com.google.gwt.event.shared.EventHandler from the set of implemented interfaces
ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroPlugin: Method 'public void onDoubleClick(com.google.gwt.event.dom.client.DoubleClickEvent)' has been removed
ERROR: 4001: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroSelector: Removed com.google.gwt.event.dom.client.MouseDownHandler from the set of implemented interfaces
ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroSelector: Method 'public void onMouseDown(com.google.gwt.event.dom.client.MouseDownEvent)' has been removed
ERROR: 8001: org.xwiki.gwt.wysiwyg.client.plugin.submit.exec.EnableExecutable: Class org.xwiki.gwt.wysiwyg.client.plugin.submit.exec.EnableExecutable removed
ERROR: 8001: org.xwiki.gwt.wysiwyg.client.plugin.submit.exec.ResetExecutable: Class org.xwiki.gwt.wysiwyg.client.plugin.submit.exec.ResetExecutable removed

Get Connected