Summary of the XWiki 9.x Cycle
- Work Done
- Top User Features
- Table of content in the notifications email
- Notifications
- Restore a batch of deleted documents
- Improved Attachment Index
- Improved Code Viewer with Blame View
- The old WYSIWYG editor based on Google WebToolkit has been removed
- System and Extension pages are now protected against accidental deletion
- Improved Notifications email layout
- Improved Notifications UI
- Watchlist to be replaced by Notifications
- Watched Locations Enhanced
- Attachment Icons use the Icon Theme
- Image Attachment Preview
- See your own activity in notifications
- Confirmation before clearing notifications
- New RSS feed for Notifications
- Administration Improvements
- Generate TOC for another page
- CKEditor Integration Improvements
- Live email notifications
- Improvements of the Menu Application on Mobile
- Gadget Wizard Update
- New default notification filters
- Notifications Preferences
- Help Center Application bundled by default
- Content menu usability improvements
- Grouping of similar Notifications
- Standard version of the document in the history
- Menu Application bundled by default
- CKEditor Integration Improvements
- Include and exclude Notification filters
- Recommended Templates when creating pages
- Office Import from CKEditor
- Live Table User Filter
- Notifications can now be received by emails
- Filter users in notifications
- Date filter in Livetables
- Improved Suggest Input for Database List Properties
- Notifications Filters Settings revamped
- Notification Filters
- Notification email details
- Replace attachment with Attachment Selector
- Breadcrumbs in the notifications email
- Encoding parameter for RSS Macro
- Menu application visibility change
- Wiki Links with Auto-Generated Label in CKEditor
- Mail resending at startup
- Clickable versions in the changes view
- Disabling emoticons
- CKEditor Upgrade
- Macro List in Syntax Help
- Deprecated and Internal Macros Hidden by Default
- Improvements when viewing a document version
- Annotation toggle on click
- Layout Macro Category
- Notifications for comments
- Notifications sent by emails now contains a diff for each event
- Restore document and translations
- Display extension id
- Attachment Selector can set a version summary
- WYSIWYG Editor Paste Filter
- Live Table Database List Filter
- Visual separation for page tabs
- Multilists are filterable
- Notifications are loaded on demand
- Top Admin Features
- XWiki Enterprise is dead, long live XWiki Standard!
- Flavors search optimization
- New filesystem recycle bin
- Improved HTML Export
- Filesystem attachment improvements
- Set the default level of details for the notification emails
- Configuration in /etc/xwiki
- Live Search in Administration
- Reset Extension changes
- Disable notifications emails
- Partial import of Extensions
- Simplified adding a logo to a Flamingo Theme
- Menus use the Icon Theme
- Optional Standard Flavor dependencies
- Grace time for Live notifications
- Extension Manager improvements
- Added support for attachments bigger than 2GB
- Non interactive mode in distribution job
- Extension Manager improvements
- Implicit XWikiAllGroup handling improved
- Admin user as a Simple user
- Support selecting and uploading SVG logos when editing a skin
- Find where to change the logo
- Active Installs now sends java specification version
- Gathering of extensions features
- Top Developer Features
- Filesystem templates now have programming right by default
- Jobs improvements
- Optional extension dependencies
- Ability to store events in the event stream and display them as notifications
- Safe escaping when querying
- Runtime injection of REST resources
- Better handling of webjar extensions
- XAR export/import changes
- New API for in-page component instantiation
- Option to use custom temporary file name for download
- Solr search without programming right
- Recommended versions
- Notification templates override through XObjects
- New XObject type for in-page event definition
- Notification emails embed images present on the mail template
- Shortcuts are now handled by the Keypress JS library
- The Event Stream can now send events
- New super secret developers shortcuts
- Hints for class properties
- Jobs REST API improvements
- Jobs improvements
- Syntax highlighting by default in the wiki editor
- Filer Stream improvements
- Link document to corresponding extensions
- Extracted the $displayContentFooter layout variable from $displayDocExtra
- Content Menu UIXP
- Filtering Query parameters
- Enhanced notification filters AST (Abstract Syntax Tree)
- New HQL safe select columns
- Easier Flamingo Skin customizations
- Extension Manager improvements
- Mandatory documents improvements
- The server is now able to check for its new versions
- Notifications Email Renderer
- New icons
- Close wrapped source/target Reader/Writer
- It is possible to create custom Notification Filters
- Reduce noise in job log
- Match ExtensionId with empty version
- New API to access wiki macro descriptor
- More configurable extension install
- New typed extensions of Namespace
- Script Service API to get Macro descriptors
- Extension Manager improvements
- Refactored notifications module
- Viewers in the more actions menu are no longer affected when customizing the docextra section
- REST Resource to Retrieve Property Values
- Minor Job API improvement
- New Recycle Bin API methods for batch operations
- Delete all mails
- New Syntax#valueOf(String) API
- Recycle Bin API Improvements
- Multiple sources for documents versions
- Localization script service specific locale
- Automatic conversion support for Namespace
- Known incompatible flavors
- New Namespace class
- Detailed Release Notes
This is a summary of the release notes for XWiki Commons, XWiki Rendering and XWiki Platform, for the whole 9.x cycle (i.e. the whole year 2017). They share the same release notes as they are released together and have the same version.
New Notifications (grouping, templates, by mail, filters, diff)
Administration reorganization
HTML export
Protection against accidental deletion of important pages
We continued improving the CKEditor integration
Attachment improvements like better handling of bigger attachments and preview.
Work Done
The work is organised using JIRA and here are some JIRA stats of what happened during the 9.x cycle:
- 1003 issues were closed (See the full JIRA issue list)
- 480 bugs closed, 254 improvements, 53 new features and more:
- And the top JIRA participants (those contributing to more than 1% of the total jira issue number):
Congrats to all who participated!
Top 10 Features
Here are the top 10 features that we wish to mention (arbitrarily hand-picked; it's hard to pick 10 out of 307 improvements and new features):
- Flavors
- Notifications
- CKEditor Integration Improvements
- Administration reorganization
- Protection against accidental deletion
- Restore a batch of deleted pages
- Attachments Preview improvements
- Blame View and Syntax Highlighting
- More filters
- Other usability improvements
Flavors
We switched from the old "XWiki Enterprise" package and we now provide the "XWiki Standard" flavor. When creating a new wiki, Administrators can choose which flavor they want.
In XWiki, a flavor is simply a bundle of extensions that serve a particular usage. We expect in the future that the community members will provide additional flavors built on top of XWiki. Imagine a flavor for application development, one for documentation, one for procedures or even a flavor created especially for your team. Using flavors you can customize your XWiki to the smallest details.
Notifications
Notifications is our new major feature for this cycle.
You can subscribe to be notified about events happening in your wiki. You control the level of details you want to receive and what applications and pages are interesting for you. For example you can decide to receive Notifications when Comments are created but only on the Blog page and its children.
Notifications can be received in the UI or by email. The emails are sent periodically and according to you preferences: hourly, daily, weekly or live. An user can now define notification filters that are either inclusive or exclusive, and can even black list some users.
The Watchlist feature has been replaced.
CKEditor Integration Improvements
In 8.x we added the CKEditor. Since then we improved even more the integration by preventing the editor from generating content that cannot be saved as wiki syntax, adding more styles supported by XWiki, creating dedicated Insert Macro buttons, importing office files directly from the CKEditor, etc. The support for wiki rendering macros has also been improved. Inserting a block-level macro in-line will split the paragraph, avoiding the "macro cannot be used inline" error.
We also upgraded the editor to the 4.7.3 version which brings a couple of improvements and bug fixes.
We also finally removed the old WYSIWYG editor based on Google WebToolkit.
Administration reorganization
The Administration has been reorganized. Most of the administration sections from the "Applications" group have been moved to existing or new groups. We applied a consistent style across all the administration sections and we added more hints for the configuration options. The administration menu is now implemented using a collapsible accordion.
Protection against accidental deletion
System and Extension pages are now protected against accidental deletion. When you try to delete such pages, XWiki will now ask you to confirm the operation, and list all concerned pages.
Restore a batch of deleted pages
If you have performed an operation that deletes multiple pages at the same time (like delete with children or delete space), it is now possible to restore all the deleted pages together, to their original state and location. For each deleted page, you can now also choose to see the batch where it was deleted from and if you want to restore just one page or the entire batch.
Attachments Preview improvements
Preview of attachments are displayed in the attachments tab at the bottom of the page.
We improved also the Attachments tab from the Page Index by providing a thumbnail preview for image attachments, allowing filtering by attachment type, file size, date, etc.
Blame View and Syntax Highlighting
Working with the syntax has become easier.
A new Blame View was also added to the code viewer (More Actions > View Source). In this mode, each line of the page's content is annotated with the last author that modified it and the revision in which this modification was introduced. The blame view also works when viewing the source of a page revision (other than the latest one) so it can be accessed at any point in the history of a page.
More filters
We added new user suggest filters for our LiveTables.
Other usability improvements
We are slowly improving usability across the interface. From improving the grouping and naming of our menus, to bundling more useful applications for newcomers, like the Help Center and the Menu Application.
We also improved the way we recommend Templates when creating pages. Example: When going to the Blog home page or when on any Blog post, if you try to create a page, you will see that the Blog Post Template will be displayed first in the list and it will be pre-selected.
Top User Features
For our users, here are the top features that we wish to highlight:
- Table of content in the notifications email
- Notifications
- Restore a batch of deleted documents
- Improved Attachment Index
- Improved Code Viewer with Blame View
- The old WYSIWYG editor based on Google WebToolkit has been removed
- System and Extension pages are now protected against accidental deletion
- Improved Notifications email layout
- Improved Notifications UI
- Watchlist to be replaced by Notifications
- Watched Locations Enhanced
- Attachment Icons use the Icon Theme
- Image Attachment Preview
- See your own activity in notifications
- Confirmation before clearing notifications
- New RSS feed for Notifications
- Administration Improvements
- Generate TOC for another page
- CKEditor Integration Improvements
- Live email notifications
- Improvements of the Menu Application on Mobile
- Gadget Wizard Update
- New default notification filters
- Notifications Preferences
- Help Center Application bundled by default
- Content menu usability improvements
- Grouping of similar Notifications
- Standard version of the document in the history
- Menu Application bundled by default
- CKEditor Integration Improvements
- Include and exclude Notification filters
- Recommended Templates when creating pages
- Office Import from CKEditor
- Live Table User Filter
- Notifications can now be received by emails
- Filter users in notifications
- Date filter in Livetables
- Improved Suggest Input for Database List Properties
- Notifications Filters Settings revamped
- Notification Filters
- Notification email details
- Replace attachment with Attachment Selector
- Breadcrumbs in the notifications email
- Encoding parameter for RSS Macro
- Menu application visibility change
- Wiki Links with Auto-Generated Label in CKEditor
- Mail resending at startup
- Clickable versions in the changes view
- Disabling emoticons
- CKEditor Upgrade
- Macro List in Syntax Help
- Deprecated and Internal Macros Hidden by Default
- Improvements when viewing a document version
- Annotation toggle on click
- Layout Macro Category
- Notifications for comments
- Notifications sent by emails now contains a diff for each event
- Restore document and translations
- Display extension id
- Attachment Selector can set a version summary
- WYSIWYG Editor Paste Filter
- Live Table Database List Filter
- Visual separation for page tabs
- Multilists are filterable
- Notifications are loaded on demand
Table of content in the notifications email
Now, the events described in the notification emails are ordered by pages, and then by dates. To have a quick view of all the changes, a table of content is now displayed at the beginning of the mail.
Notifications
We have introduced a list of notifications in the top menu, that list some events that have occurred in the wiki recently: a page has been created, a new blog post has been published, etc...
See the Notifications Application's page to have more infos.
Restore a batch of deleted documents
If you have performed an operation that deletes multiple documents at the same time (like delete with children or delete space), it is now possible to restore all the deleted documents together, to their original state and location.
This is achieved by assigning a common batch ID to the deleted documents in the recycle bin. You can now browse the deleted documents and group them by batch.
For each deleted document, you can now also choose to see the batch where it was deleted from and if you want to restore just one document or the entire batch.
Check the documentation for more details.
Improved Attachment Index
The Attachments tab from the Page Index has been improved:
- the Space and Page columns have been replaced with the Location column
- the Type column is now the first column and you can sort and filter attachments by file type
- the Type column uses the Icon Theme and shows a thumbnail preview for image attachments
- there's a new column that displays the attachment file size, with support for sorting and filtering the attachments by their file size
- attachments can be filtered by date using the new date range picker
We also fixed two important bugs:
- the sort was not working correctly
- attachments from hidden pages were displayed even if hidden pages were not visible
Improved Code Viewer with Blame View
The code viewer (More Actions > View Source) has been improved to look nicer and have proper line numbers that support highlighting and linking.
A new Blame View was also added to the code viewer. In this mode, each line of the document's content is annotated with the last author that modified it and the revision in which this modification was introduced. The blame view also works when viewing the source of a document revision (other than the latest one) so it can be accessed at any point in the history of a document. See the documentation for more details.
The old WYSIWYG editor based on Google WebToolkit has been removed
In XWiki 8.2RC1 we made CKEditor the default WYSIWYG editor but the users could still use the old Google WebToolkit (GWT) editor by enabling it in the wiki administration. Starting with this version the old WYSIWYG editor is no longer available. CKEditor remains the only WYSIWYG editor option available in XWiki by default.
System and Extension pages are now protected against accidental deletion
You will no longer accidentally erase system or extensions pages and break your wiki! When you try to delete such pages, XWiki will now ask you to confirm the operation, and list all concerned pages.
Improved Notifications email layout
The email layout for notifications has been totally redesigned.
Improved Notifications UI
The notifications menu is more clear now, and a link to see what has changed is available in the details of each event, when you click on the date.
Watchlist to be replaced by Notifications
At the end of the 9.x cycle, we plan to remove the Watchlist Application from XWiki Standard. Before being able to do this, we need that the Notifications Application be able to propose the same features (and even more possibilities).
In this version, you can now receive notifications concerning a watched location (ie: a page, a page and its children, a wiki..), without enabling any specific type of events in the preferences.
Watched Locations Enhanced
The notifications toggles now take into account the preferences that you have enabled. Events that have not been enabled first will not be displayed anymore, even if you watch a location where these events happen.
Attachment Icons use the Icon Theme
The attachment icons displayed on the attachments tab at the bottom of the page is now using the configured Icon Theme.
Image Attachment Preview
The attachments tab at the bottom of the page is now displaying a preview for image attachments.
See your own activity in notifications
It's now possible to see your own activity in the notifications (either in the "alert" menu or in the emails). By default, your activity is hidden, but you have the ability to disable this filter in the "advanced filtering options" section of your notification settings.
Confirmation before clearing notifications
Now a confirmation is asked before clearing all notifications.
New RSS feed for Notifications
It is now possible to get the notifications occurring on a farm through a RSS feed. The user can access their RSS feeds through two links in the notifications center and in the notifications tray.
Administration Improvements
The Administration has been reorganized. Most of the administration sections from the "Applications" group have been moved to existing or new groups. We applied a consistent style across all the administration sections and we added more hints for the configuration options. The administration menu is now implemented using a collapsible accordion.
Generate TOC for another page
It's now possible to generate a table of contents for another page with the introduction of the reference parameter.
CKEditor Integration Improvements
The integration with the CKEditor has been improved to support putting dedicated Insert Macro buttons on the tool bar. We enabled the native (in-browser) spellchecker and we fixed a few bugs.
Live email notifications
A user can now receive live notifications when some events are triggered in the wiki.
Depending on the platform configuration, when an event that should trigger a live notification is sent, the platform will wait X minutes before sending the notification email. If during this period, new events of the same kind are sent, they will be grouped in the same email. You can get more informations in the Notifications Application documentation.
Improvements of the Menu Application on Mobile
The space taken by the horizontal menus created with the Menu Application has been reduced by introducing menu burgers on Mobile display. The burgers are placed on the left side of the page, to avoid confusion between the Drawer menu and the horizontal menus.
New default notification filters
Default notification filters can now be created.
When a default notification filter is created, it appears as activated on every profile of every user. Each user can then choose to disable it (or re-enable it) by clicking on the "Advanced filtering options" link in its notification center.
In this version, only one default filter is provided (called "System Filter") and allows each user to hide (or not) notifications coming from the system user of XWiki.
Notifications Preferences
It is now possible to enable or disable all the notifications sent by an application.
Help Center Application bundled by default
The Help Center Application has been bundled with the default XE flavor (on the main wiki only) in order to help new users get familiar with XWiki faster. It can be easily accessed from the Applications panel.
Content menu usability improvements
We've had various reports that people new to XWiki were struggling to find the content menu (edit, create, etc.) so after some discussions, we've decided to try to make it a bit clearer and user-friendly.
The main changes include:
- adding labels and backgrounds to each menu button to make it clearer that users could/should interact with them
- merging the 2 action menus into a single one ("More Actions") to address issues with understanding what is the difference between them and also the "fear of the cog" icon, which was confusing some users.
Grouping of similar Notifications
Similar notifications (for example a page has been updated by the same user several time in a row) are now grouped together and the details of all activities is displayed in the "details" section.
Standard version of the document in the history
It's now possible to see/compare/revert to the standard version of a document (the one coming from the installed extension) right from the document history view.
Menu Application bundled by default
The Menu Application has been bundled with the default XE flavor (on the main wiki only) in order to allow admins to easily setup and display a horizontal menu. It can be easily accessed from the Applications panel by admins (members of the XWiki.AdminGroup) only.
In the past, when several long running actions were happening on your wiki (page deletions, copies, subwiki creation, etc), an action had to be finished before the next one could be triggered. This is no longer the case and they run in parallel. If there are common pages affected by the various actions then a wait will still occur.
CKEditor Integration Improvements
CKEditor has been upgraded to the latest version 4.6.2 which brings a couple of improvements and bug fixes. The XWiki integration has been improved by enabling and configuring the Advanced Content Filter for the XWiki 2.1 syntax. This should prevent the editor from generating content that cannot be saved as wiki syntax. The filter disables automatically the editor features that generate such content. Another improvement concerns the Styles drop down from the tool bar. We removed the styles that were not supported by XWiki and we added some new styles that we hope you will like. The support for wiki rendering macros has also been improved. Inserting a block-level macro in-line will split the paragraph, avoiding the "macro cannot be used inline" error. Besides these improvements, there are a couple of integration bugs that have been fixed.
Include and exclude Notification filters
A user can now define notification filters that are either inclusive or exclusive.
Notifications that come from a document that matches an exclusive filter will then be discarded.
Recommended Templates when creating pages
Depending on the location, when creating a page, the page type could "promote" several Templates and the first one might be automatically selected. This promotion occurs for Templates that have a "creation restriction" matching the current location (or a parent of the current location).
Example: When going to the Blog home page or when on any Blog post, if you try to create a page, you will see that the Blog Post Template will be displayed first in the list and it will be pre-selected. The same thing will happen for applications created with App Within Minutes.
More details in the documentation.
Office Import from CKEditor
We upgraded CKEditor Integration to its latest version which brings support for importing office files directly from the CKEditor. There's a dedicated button on the tool bar that opens a dialog where you can select the office file to import and you can choose to filter the styles or to use the Office Viewer macro. Checkout the CKEditor Integration documentation for more information.
Live Table User Filter
Filtering the Live Table rows by a column that display users should be easier now with the new suggest filter.
Notifications can now be received by emails
It is now possible to receive notifications by email. The feature is still quite new and the displayed content will be polished in future versions, but you can already use it.
All you need is to select, on your user settings, the types of notifications you are interested in. The emails are sent periodically and according to you preferences: hourly, daily or weekly.
This feature will progressively replace the Watchlist application that has been available in XWiki for several years now.
Filter users in notifications
You now have the ability to black list some users in the notifications you receive (by default you follow everyone).
Date filter in Livetables
You can now filter by date in the livetable.
Improved Suggest Input for Database List Properties
The edit mode display for Database List properties that have "input" display type and "Use suggest" enabled in their definition has been improved by integrating selectize.js. The new widget handles both single selection and multiple selection properties. See the XWiki Data Model for more information on class properties.
Notifications Filters Settings revamped
We have changed the way we display Notification Filters in the Notification Settings page. All filters are listed in a single table so that it is easier to manage (adding, disabling, removing from the same place).
Notification Filters
When configuring Notifications, it is now possible to control the locations you are interested in. This allows to limit the number of Notifications you receive or only receive specific ones. For example you can decide to receive Notifications when Comments are created but only on the Blog page and its children.
Notification email details
It's now possible to configure what kind of information is displayed in the "details" section of the notification emails. Currently, there are 2 levels:
- None, if you don't want to see change details and only get links to changes
- Standard to display the change details as diffs.
Replace attachment with Attachment Selector
When uploading a new file from the Attachment Selector you now have the option to replace the selected attachment.
Breadcrumbs in the notifications email
The notification emails now display breadcrumbs for each page-related change, providing a better understanding of the locations of these pages in the wiki.
Encoding parameter for RSS Macro
The RSS Macro now supports an optional parameter named encoding that allows forcing an encoding to use when reading the RSS feed. To be used for cases when the guessed encoding is not correct. Example:
Menu application visibility change
The Menu application is configured to only allow Administrators to see it (this can be changed through permissions). However all Menu entries created with the application are viewable by everyone by default (provided the visibility scope used when creating the entry allows it; for example selecting a "Current User" visibility makes the created menu only visible for the current user).
Wiki Links with Auto-Generated Label in CKEditor
We upgraded CKEditor Integration to the latest version which brings support for creating wiki links with auto-generated label. The XWiki Rendering supports these type of links since a long time. They look like this in wiki syntax:
As you can see the link label is missing and so it is generated automatically when the page is rendered. The way the labels are generated can be configured. The new version of CKEditor Integration adds support for creating such links, but it's not enabled by default. You can enable it using the following in the Advanced configuration:
config['xwiki-link'].autoGenerateLabels = true;
The reason we disabled this feature by default in CKEditor is because XWiki uses the page name (not the page title) for auto-generated link labels by default at the moment, which can confuse the users because we display the page title in the page tree and in the page suggest. But if you change the way the link labels are generated then you may want to enable this feature.
Mail resending at startup
At startup, mails that weren't sent yet are now resent automatically.
Clickable versions in the changes view
When viewing the changes introduced between 2 document versions (diff), the compared versions are now clickable so that the document can be viewed at those specific revisions.
Disabling emoticons
It's now possible to disable default emoticons by editing xwiki.properties and overriding the mapping with an empty value. For example to disable (n) you'd add:
CKEditor Upgrade
The CKEditor has been upgraded from version 4.6.2 to 4.7.2. This brings a lot of bug fixes and some improvements:
- select and manipulate arbitrary rectangular table fragments (a few cells, a row or a column)
- paste from Microsoft Excel
- improved paste from Word
- new color picker
See the CKEditor release notes for more information.
Macro List in Syntax Help
The Syntax Help page now displays the list of all the macros available in your wiki. This was previously covered by the XWiki.WikiMacros page which has now been removed.
Deprecated and Internal Macros Hidden by Default
When inserting a macro, the WYSIWYG Editor (CKEditor) is now hiding the deprecated and internal macros from the "All Macros" category that is selected by default. In order to insert a deprecated or internal macro you need to explicitly select the corresponding category from the list. The following macros have been moved to the Deprecated category: Spaces, SpacesIndex and Workspaces.
Improvements when viewing a document version
When viewing a document revision (other than the last one), we're now showing the version information in the "last modified" section. Also, the "More actions" options are now displayed and the "view source" option will work on the currently displayed revision (instead of working on the latest version). Read more about document versioning in the documentation.
Annotation toggle on click
We changed the way the annotation popup is shown: instead of hovering over the annotation icon you now have to click on the annotation icon. This new behavior is more mobile friendly.
Layout Macro Category
A new Layout Macro category was added and the following macros were moved to it: Dashboard, Container and Gallery.
Notifications for comments
A notification is now displayed when a comment is posted on a page (if you enable it in your settings).
Notifications sent by emails now contains a diff for each event
Previously only a link was displayed.
Restore document and translations
When deleting the final revision of a document, from the History tab, the original document and all its translations may get deleted. To avoid having to restore them one by one, they are now all grouped in the same batch so they can be restored together.
Display extension id
The extension id is now also displayed in the Dependencies section of the Repository Application.
Attachment Selector can set a version summary
When using the Attachment Selector macro the user can now specify a version summary that will be recorded in the history. This is disabled by default but you can enabled it by setting the versionSummary parameter to true.
WYSIWYG Editor Paste Filter
The WYSIWYG content editor has a more strict paste filter that removes non-semantic styles (e.g. font size, text color). This means that the content you paste into the editing area will inherit the styles of your wiki, leading to a more consistent look & feel. The PDF export also benefits from this change because some of the filtered styles were causing problems.
Live Table Database List Filter
Filtering the Live Table rows by a column that corresponds to a Database List property should be easier now with the new suggest filter.
Visual separation for page tabs
The page tabs are now visually separated from the page content.
Multilists are filterable
We can now filter multiselect lists.
Notifications are loaded on demand
To speed up page rendering, we load the content of the notifications only when the user opens the notifications menu (lazy-loading).
During the load of the content, the user will see a spinning whee as on the following picture.
In addition, we now display 10 notifications instead of 5.
Top Admin Features
For our admins, here are the top features that we wish to highlight:
- XWiki Enterprise is dead, long live XWiki Standard!
- Flavors search optimization
- New filesystem recycle bin
- Improved HTML Export
- Filesystem attachment improvements
- Set the default level of details for the notification emails
- Configuration in /etc/xwiki
- Live Search in Administration
- Reset Extension changes
- Disable notifications emails
- Partial import of Extensions
- Simplified adding a logo to a Flamingo Theme
- Menus use the Icon Theme
- Optional Standard Flavor dependencies
- Grace time for Live notifications
- Extension Manager improvements
- Added support for attachments bigger than 2GB
- Non interactive mode in distribution job
- Extension Manager improvements
- Implicit XWikiAllGroup handling improved
- Admin user as a Simple user
- Support selecting and uploading SVG logos when editing a skin
- Find where to change the logo
- Active Installs now sends java specification version
- Gathering of extensions features
XWiki Enterprise is dead, long live XWiki Standard!
The XWiki Enterprise distribution of XWiki has been abandoned and replaced in 9.5 by a new XWiki Standard flavor.
Here are the main changes in 9.5 related to distribution packages and flavors:
- XWiki Enterprise does not exist anymore
- A new XWiki Standard flavor has been introduced (actually two: one for the main wiki and one for sub wikis like XWiki Enterprise had)
- Administrators now install XWiki and get to choose which flavor they want (at the time of 9.5 release only XWiki Standard is available but there will be many more as contributors add new ones on http://extensions.xwiki.org) to install on top of it
- A XIP package is provided to help with offline install use case
- Graphical installers have been abandoned, too hard to maintain (and not working very well anyway) and not providing much value for something that was unusable in production
Flavors search optimization
Speed up display of flavors mostly containing core dependencies (when resolving flavors dependencies, just assume those with know recommended versions are valid).
New filesystem recycle bin
To work around database limitation when deleting documents with a lot of attachments a new file recycle bin component has been introduced.
You can enable in xwiki.cfg configuration file with the following:
Improved HTML Export
The HTML export has been improved to better scale with the Nested Pages concept. The exported pages are now located in directories named after the parent pages in which they are located. In addition a basic HTML index page (index.html) is now generated at the root listing and linking to all exported pages.
Filesystem attachment improvements
A few of the long standing issues in the filesystem attachments storage have been fixed:
- Deleted attachments are now available on the "Deleted Attachments" tab of the Page Index
- The attachment porter script is not needed anymore (XWiki supports mixed attachment storage which means database attachment will stay in the database and keep working after changing the default store)
- Various other bugfixes
Set the default level of details for the notification emails
The administrator can decide what is the default value when the users don't touch their settings. The following screen is available in the "Notifications" section in the Administration.
Configuration in /etc/xwiki
XWiki will now try to find xwiki.cfg and xwiki.properties in /etc/xwiki/ on file system before looking in the webapp resources.
Live Search in Administration
The administration menu now has a search input at the top that can be used to filter the administration categories and sections. At the moment the live search matches only the category/section name and description.
Reset Extension changes
It's now possible to reset changes listed in the Extension diff.
Disable notifications emails
You can disable the new notifications emails feature with the option notifications.emails.enabled on xwiki.properties.
Partial import of Extensions
By default only the extension file is proxied from external source. Since XWiki 9.5RC1 you can bump proxy level up and proxy also previous extension versions and their dependency information. After update of extensions this information will no longer be kept in document objects but, when requested, proxied from external source. This may be enabled by setting Proxy Level attribute of ExtensionProxy XObject to File and Previous Versions. The point of bumping up proxying level is to save space in XWiki database.
Simplified adding a logo to a Flamingo Theme
Adding a logo to a flamingo theme used to require you to first go into view mode on the theme page and attach the new logo image file before you would be able to see it in edit mode, as an option. Now, we have integrated the attachment selector so that you can upload and select a new logo image directly from edit mode, removing the extra steps. More details in the documentation.
Menus use the Icon Theme
Before all Icon themes shared the same menu icons (coming from Bootstrap's Glyphicon). Now the Icon themes affect also the icons from the content menu and drawer.
Optional Standard Flavor dependencies
The following dependencies are now optional, which means that they can now be uninstalled easily (before, uninstalling them would uninstall the Flavor too!):
- xwiki-platform-logging-ui
- xwiki-platform-user-directory-ui
- xwiki-platform-scheduler-ui
- xwiki-platform-help-ui
- xwiki-platform-flamingo-theme-bootswatch
- xwiki-platform-search-solr-ui
- xwiki-platform-search-ui
- xwiki-platform-office-ui
- xwiki-platform-invitation-ui
- xwiki-platform-appwithinminutes-ui
- xwiki-platform-linkchecker-ui
- xwiki-platform-sandbox
- xwiki-platform-sharepage-ui
- xwiki-platform-distribution-flavor-tour
- application-templates-ui
- editor-tool-highlighting-ui
- xwiki-platform-wiki-ui-mainwiki
- xwiki-platform-wiki-ui-wiki
- xwiki-platform-menu-ui
- application-help-center
Grace time for Live notifications
The grace time of the live email notifications sent by the platform to the users can be configured in xwiki.properties. You can get more informations in the Notifications Application documentation.
Extension Manager improvements
Extensions installed as dependencies but which don't have any backward dependencies anymore are now taken into account by the upgrade job.
Added support for attachments bigger than 2GB
Attachment sized used to be limited by the size of a Java integer (2,147,483,647), the size is now a long (9,223,372,036,854,775).
Non interactive mode in distribution job
The Distribution Job (on which Distribution Wizard is based) now support non interactive mode. For example if you want to fully automate an XWiki install and not get the Distribution Wizard you can use the the new Job REST API to start distribution job in non interactive mode before opening the instance to the public.
Extension Manager improvements
Extension Manager now gives a chance to users requesting it in their profile configure default conflict resolution behavior at the beginning of the install/upgrade/uninstall.
Implicit XWikiAllGroup handling improved
The default value of xwiki.users.initialGroups now depends on xwiki.authentication.group.allgroupimplicit value (users are not added to XWikiAllGroup anymore when xwiki.authentication.group.allgroupimplicit is enabled).
Admin user as a Simple user
When using the Jetty/HSQLDB demo packaging, the Admin user used to be an Advanced user, and this was troubling for users discovering XWiki since they were seing advanced features from the onset. The Admin user is now a Simple user, matching what you get in other packagings in which the admin user is created in the Distribution Wizard when XWiki is executed the first time.
Notifications can be disabled with a property in xwiki.properties.
Support selecting and uploading SVG logos when editing a skin
Added support for uploading and selecting SVG images as logos when editing a skin. Previously, the attachment selector would not accept SVG files.
Find where to change the logo
Filtering for "logo" or "skin" in the Administration menu will now list Look & Feel > Themes as the place to customize them.
Active Installs now sends java specification version
The Active Installs now sends the java specification version in its pings to extension.xwiki.org.
See the documentation of the active installs for more informations.
The Active Installs pings are now sent over HTTP using a User Agent of XWikiActiveInstalls. This is important since some servers (such as CloudFlare) consider requests that don't have a User Agent set as being "spammy" request and blocks them. This makes the Active Installs ping module a better citizen.
Gathering of extensions features
Features of extensions are now sent by active install. These are the various extension ids under which a given extension is known. Usually used to relocate extensions under a new extension id.
Top Developer Features
For our developers, here are the top features that we wish to highlight:
- Filesystem templates now have programming right by default
- Jobs improvements
- Optional extension dependencies
- Ability to store events in the event stream and display them as notifications
- Safe escaping when querying
- Runtime injection of REST resources
- Better handling of webjar extensions
- XAR export/import changes
- New API for in-page component instantiation
- Option to use custom temporary file name for download
- Solr search without programming right
- Recommended versions
- Notification templates override through XObjects
- New XObject type for in-page event definition
- Notification emails embed images present on the mail template
- Shortcuts are now handled by the Keypress JS library
- The Event Stream can now send events
- New super secret developers shortcuts
- Hints for class properties
- Jobs REST API improvements
- Jobs improvements
- Syntax highlighting by default in the wiki editor
- Filer Stream improvements
- Link document to corresponding extensions
- Extracted the $displayContentFooter layout variable from $displayDocExtra
- Content Menu UIXP
- Filtering Query parameters
- Enhanced notification filters AST (Abstract Syntax Tree)
- New HQL safe select columns
- Easier Flamingo Skin customizations
- Extension Manager improvements
- Mandatory documents improvements
- The server is now able to check for its new versions
- Notifications Email Renderer
- New icons
- Close wrapped source/target Reader/Writer
- It is possible to create custom Notification Filters
- Reduce noise in job log
- Match ExtensionId with empty version
- New API to access wiki macro descriptor
- More configurable extension install
- New typed extensions of Namespace
- Script Service API to get Macro descriptors
- Extension Manager improvements
- Refactored notifications module
- Viewers in the more actions menu are no longer affected when customizing the docextra section
- REST Resource to Retrieve Property Values
- Minor Job API improvement
- New Recycle Bin API methods for batch operations
- Delete all mails
- New Syntax#valueOf(String) API
- Recycle Bin API Improvements
- Multiple sources for documents versions
- Localization script service specific locale
- Automatic conversion support for Namespace
- Known incompatible flavors
- New Namespace class
Filesystem templates now have programming right by default
It was decided to give filesystem template programming right by default. The used to be executed with the right of the current document.
Jobs improvements
- org.xwiki.job.event.status.JobStatus#ask now allows passing a timeout as parameter
- a new REST API is available to start any job, see Job REST API (require programming right)
- the existing REST API to get the job status has been improved to also get the request and the log all at once
Optional extension dependencies
It's now possible for Extension authors to define which of the dependencies are mandatory and which are optional. The Extension Manager will install all of them by default but optional dependencies won't have any impact on the validity of the extension:
- if the optional dependency install plan fail, the extension is installed without it
- if the optional dependency is uninstalled, it won't uninstall the extension
- if the optional dependency is missing at startup, it won't make the extension invalid
Ability to store events in the event stream and display them as notifications
It is now possible to say to the Event Stream Module that some events, sent with the Observation Module, should be stored.
In addition, this events can be displayed in the notifications menu of users. See the tutorial: How to send notifications.
Safe escaping when querying
When writing XWQL or HQL, it's easy to forget to escape the %, _ or even the [ character in LIKE clauses. It's also easy to forget that MySQL considers the default escape character to be \ and thus when you have a serialized Entity Reference in a LIKE you need to change the escape character as otherwise pages with dots (.) in their names won't match!
To avoid bother we're introducing a new Query Manager API when binding a value.
Example usage:
Runtime injection of REST resources
- It's now possible to install/uninstall/upgrade REST resources dynamically (it used to require a restart of XWiki)
- Upgrading/uninstalling a JAR extension doesn't break REST resources coming from extensions anymore
Better handling of webjar extensions
A new webjars Maven extension is now available to package webjar extensions the "standard" way. It automate a bit of plumbing when producing webjar artifact with Maven and more importantly it explicitly indicate that those are webjar so that Extension Manager apply special handling for them (which usually means not requiring programming right to install them).
See WebJAR Maven Handler for more informations about the Maven plugin.
If you can't depend on 9.0 yet you can also use <xwiki.extension.jar.type>webjar</xwiki.extension.jar.type> Maven property which have pretty much the same effect from Extension Manager point of view (for someone installing your extension on 9.0+ of course).
XAR export/import changes
- The XML produced in XAR files is now following the XML 1.1 specification (instead of 1.0). Since it's mostly about supporting thing that were simply not working before there should not be any retro compatibility issues.
- All from/toXML methods located in classes like XWikiDocument, BaseObject, BaseClass, etc. are now based on Filter modules which became the only way to produce XAR XML format. The only difference remaining when using xwiki.action.export.xar.usefilter and xwiki.action.import.xar.usefilter properties in xwiki.cfg configuration file is the handling of the XAR packaging.
New API for in-page component instantiation
The Wiki Component API offers a new interface called WikiObjectComponentBuilder that allows to instantiate new components using defined XObjects. For more informations, see the Wiki Component API documentation
Option to use custom temporary file name for download
The temp action supports a new parameter (force-filename) to indicate the file to pass to the browser when force-download is enabled. See Standard URL Format for more.
Solr search without programming right
It's now possible to do Solr request without programming right. In such a case the result will be filtered based on current script author right.
Recommended versions
It's now possible in the build or in the xwiki.properties file to indicate a set of extension for which you want to use a specific version when they are installed as dependencies. By default all commons/rendering/platform extension have a recommended version synchronized with the version of the distribution or XWiki you installed.
Notification templates override through XObjects
A wiki administrator can now create custom NotificationDisplayerClass XObjects in order to override default templates used in the notifications tray. For more informations, please refer to the Notifications API documentation.
New XObject type for in-page event definition
Custom events can now be defined directly in wiki pages through XObjects ; more information about this feature can be found in the Event Stream Module documentation.
Notification emails embed images present on the mail template
The notification emails are based on a template (XWiki.Notifications.MailTemplate) that you can customize. Now it is possible to attach images to that templates, and they will be embedded in the notifications email.
To display them in the email, you need to use the syntax <img src="cid:myImage.png" />.
Shortcuts are now handled by the Keypress JS library
We now handle keyboard shortcuts using the Keypress JS library.
The old API for declaring and managing shortcuts has been kept (XWiki.shortcuts). However, some parameters such as propagate or type are now handled differently.
Please refer to the API to learn more.
The Event Stream can now send events
The Event Stream now sends EventStreamAddedEvent and EventStreamDeletedEvent events when an event is added or removed from the Event Stream. You can find more informations in the Event Stream documentation.
New super secret developers shortcuts
We are now providing the following developer shortcuts:
- The key sequence X, X, X, A toggles the "advanced user mode" for the currently logged in user. Performing this sequence as an advanced user will switch it back to the "simple user mode" (the default).
- The key sequence X, X, X, H toggles the "show hidden pages" option for the currently logged in user. Performing this sequence while already viewing hidden pages will switch back to hiding hidden pages (the default).
Get the complete list of developer shortcuts here.
Hints for class properties
It is now possible, for developers, to add an hint in a class property. Then this hint is displayed in the object editor.
Jobs REST API improvements
Fail job started with async=false now return an error code 500. A serialized error message with complete stack trace is also provided in the Job status.
Jobs improvements
- The JobStatus now indicates the job type. There is nothing to do for Job extending AbstractJob but other will have to properly support it in the their JobStatus.
- The Job REST API now automatically injects context information (current user, current caller, current wiki, current document, current secure document, the request URL and parameters) in the job thread.
Syntax highlighting by default in the wiki editor
The Syntax Highlighting Application is now bundled and enabled by default.
Filer Stream improvements
Instance Filter output stream now support xobjects without class definition so input filters don't have to generate events for it. It automatically fallback on the xclass located in the current wiki.
Link document to corresponding extensions
A new set of scripting APIs have been introduced to link documents from the database to the corresponding installed extension.
Extracted the $displayContentFooter layout variable from $displayDocExtra
A new $displayContentFooter layout variable is available to control the display of the section after the document content but before the docextra tabs; i.e. tags, creator and creation date.
Now, $displayDocExtra controls only the display of the docextra tabs, without affecting the content footer section, individualized above.
Content Menu UIXP
You are now able to contribute new content menu buttons, in addition to the existing Edit, Add, Admin and More Actions by implementing the org.xwiki.plaftorm.menu.content UI Extension Point and specifying the order.
Filtering Query parameters
It's now possible to filter not only Query statements but also Query parameters or in general any value returned by a Query object. This is achieved through a new method in QueryFilter. See the Query Module for more details. Example:
@Named("myfilter")
@Singleton
public class MyQueryFilter implements QueryFilter
{
...
@Override
public Query filterQuery(Query query)
{
return new WrappingQuery(query)
{
@Override
public String getStatement()
{
return ... modified statement here...
}
};
}
}
Enhanced notification filters AST (Abstract Syntax Tree)
In XWiki 9.7RC1, we have introduced an Abstract Syntax Tree (AST) to generate the query that fetch the events we want to display as notifications.
This AST has been created for 2 reasons:
- in the future, the events might be stored in a different way, and the current HQL query might be not effective on a different storage (such as NoSQL). This AST abstracts the language so the query could still be effective, as soon as we have a translator for the target language.
- it's easier for developers to write a NotificationFilter by generating an AST than generating a good HQL query that must escape its values and co-exists with other filters...
In this release, we have rewritten the whole internal query, and we had to introduce new types of ExpressionNode to handle all use-cases. This new nodes are:
- BooleanValueNode to handle a boolean value
- DateValueNode to handle a date
- EntityReferenceNode to handle an EntityReference without manual serialization
- GreaterThanNode to handle >= comparison
- InNode to check if a property or a value is contained in a list
- LesserThanNode to handle <= comparison
- StartsWith to check if a value or a property starts with some other value
Since theses nodes have been created for our own implementation needs, please open a JIRA issue if you wish to have more.
New HQL safe select columns
Some new allowed query select columns have been added:
- XWikiDeletedDocument
- id
- fullname
- language
- DeletedAttachment
- id
- filename
Easier Flamingo Skin customizations
We now provide a default less/custom.less file that can be overwritten for your custom Flamingo Skin. You don't longer need to manually overwrite less/style.less.vm in order to add your custom code. This will make the upgrade to a newer version of the skin much smoother.
Extension Manager improvements
- new API in ExtensionManagerConfiguration to get a recommended version for a passed Extension id
- various optimizations
- speed resolve when the range contains only one version (don't ask all versions anymore)
- better merge of version constraint ranges to only keep most specific ranges
Mandatory documents improvements
- AbstractMandatoryDocumentInitializer have been made public (and improved a bit). It's very useful to initialize documents/classes required by an extension and there is no reason to forbid contrib extensions to use it.
- An AbstractMandatoryClassInitializer base class have also been added to help class related mandatory initializers to concentrate on how they want the class to look like and not deal with how to migrate it anymore. Just need to implement createClass.
The server is now able to check for its new versions
The server can now check if a new version of its distribution is available but this feature is not active by default and the information about new versions are not displayed anywhere yet. In the near future, we'll add a new notification visible to administrators when a new version is found.
The version check can be enabled through the parameter extension.versioncheck.environment.enabled in xwiki.properties.
Notifications Email Renderer
You can override the way notifications emails are generated for each individual event type. See Notifications API.
New icons
We added new mappings for the menu, more-vertical, edit, copy, move, download, log-in, log-out, th icons. They can be used using the Icon Themes service and they have equivalent in both Silk and FontAwesome themes.
Also with the upgrade to Font Awesome 4.7.0 we improved the mapping for the basket, bell_delete, book_addresses, cake, calendar_add, calendar_delete, cart_add, chart_curve, cursor, emoticon_smile, hourglass, newspaper, note, paintbrush, shape_group, shape_ungroup, sitemap, television, thumb_down, thumb_up, tick, user_add, user_delete, weather_snow icons.
Close wrapped source/target Reader/Writer
DefaultReaderInputSource and DefaultWriterOutputTarget now support closing the wrapped Reader/Writer.
It is possible to create custom Notification Filters
see the documentation.
Reduce noise in job log
Beginning and ending of job is not logged anymore if the verbose is false in the job request.
Match ExtensionId with empty version
It's now possible to "match" an ExtensionId with another ExtensionId having a null version. For example extension group:id will match group:id/version considering the first one as "all the version of the extension with id group:id".
A new method refresh() has been added to XWiki.widgets.LiveTable (javascript) to dynamically refresh a livetable.
New API to access wiki macro descriptor
Wiki macros can now access current macro descriptor using $xcontext.macro.descriptor binding.
More configurable extension install
In some cases Extension Manager is able to propose to uninstall incompatible existing extension when installing/upgrading an extension. It's possible to force Extension Manager to fail the install plan in such a case to avoid any surprise. Note that it means that if an extension id changed it will fail to upgrade.
New typed extensions of Namespace
Each supported type of namespace now have a corresponding typed extension of org.xwiki.component.namespace.Namespace. See Component Module.
Script Service API to get Macro descriptors
Example of usage: #set ($macroDescriptors = $services.rendering.getMacroDescriptors('xwiki/2.1'). Returns a List<MacroDescriptor>. More information in the Rendering Script Service documentation.
Extension Manager improvements
Extension Manager now generate events just before starting to install/uninstall/upgrade an extension.
Refactored notifications module
For this release, we refactored the xwiki-platform-notifications modules by splitting it into multiple submodules. Some young APIs have been moved to sub packages.
See XWIKI-14575.
Viewers in the more actions menu are no longer affected when customizing the docextra section
The viewers entries in the content menu now listen to the $displayShortcuts layout variable (as intended) and are no longer affected by the usage of the $docextras variable. For example, to remove all tabs and all shortcuts for the current page, you could write in a Velocity script in the page:
#set($displayShortcuts = false)
REST Resource to Retrieve Property Values
A new REST resource is available to retrieve the list of values of an XWiki class property. It currently works only with Database List (DBList) properties but we plan to add support for List of Users properties soon. The main use case for this new resource is to provide suggestions when editing object properties. See the REST API documentation for more details.
Minor Job API improvement
Added a "canceled" flag to AbstractJobStatus to simplify writing cancelable jobs.
Add some missing CSS class iD : for "children", "comments", "attachments", "history" and "information" menu entries of flamingo flavor like the others menu entries.
New Recycle Bin API methods for batch operations
Added new methods that allow setting a batch ID to a deleted document and retrieving deleted documents for a given batch.
Delete all mails
There's now a script API to delete all messages having a status in the database and their serialized messages on the file system.
New Syntax#valueOf(String) API
SyntaxFactory is now deprecated and replaced by the static Syntax#valueOf(String).
Recycle Bin API Improvements
Updated the Recycle Bin and Deleted Documents API to make it easier to work with.
Multiple sources for documents versions
XWiki#getDocument(..., String revision) now supports a syntax to get document from other sources (installed XAR extension, deleted document, etc.).
Localization script service specific locale
Localization Script service allow passing the Locale to search for (instead of current Locale).
Automatic conversion support for Namespace
A property converter was added for org.xwiki.component.namespace.Namespace. This means among other things that it can be used as Macro parameter and it's now supported by automatic method parameters conversion in Velocity.
Known incompatible flavors
It's now possible to indicate flavors known to be incompatible with a distribution package. See Flavor Module for more details.
New Namespace class
A new org.xwiki.component.namespace.Namespace has been introduced to help manipulate namespace in components and extensions world. It's mostly a helper for now but will probably be used more and more in APIs.
Detailed Release Notes
If you wish to see the full details of all features and improvements you can check each release note.
Failed to execute the [velocity] macro. Cause: [The execution of the [velocity] script macro is not allowed in [xwiki:ReleaseNotes.Code.ReleaseNotesArchiveMacro.WebHome]. Check the rights of its last author or the parameters if it's rendered from another script.]. Click on this message for details.
Failed to execute the [velocity] macro. Cause: [The execution of the [velocity] script macro is not allowed in [xwiki:ReleaseNotes.ReleaseNotesXWiki9x.WebHome]. Check the rights of its last author or the parameters if it's rendered from another script.]. Click on this message for details.
Failed to execute the [velocity] macro. Cause: [The execution of the [velocity] script macro is not allowed in [xwiki:ReleaseNotes.ReleaseNotesXWiki9x.WebHome]. Check the rights of its last author or the parameters if it's rendered from another script.]. Click on this message for details.