Last modified by Thomas Mortagne on 2017/03/24

Hide last authors
Marius Dumitru Florea 1.1 1 {{box cssClass="floatinginfobox" title="**Contents**"}}
2 {{toc/}}
3 {{/box}}
4
5 This is the release notes for [[XWiki Commons>>http://commons.xwiki.org]], [[XWiki Rendering>>http://rendering.xwiki.org]], [[XWiki Platform>>http://platform.xwiki.org]] and [[XWiki Enterprise>>http://enterprise.xwiki.org]]. They share the same release notes as they are released together and have the same version.
6
Marius Dumitru Florea 40.4 7 This release comes with a simplified Wiki Creation Wizard and the ability to organize and filter extensions by category in the Extension Repository. The install date and the user that performed the install are now available in the extension details, and the extensions that were installed explicitly are now displayed distinctly. A stronger confirmation should prevent users from deleting wikis by mistake from now on. The developers may be interested by the API improvements made to the Mail Sender and Extension Manager modules.
Marius Dumitru Florea 1.1 8
9 = New and Noteworthy (since XWiki 7.0 Milestone 1) =
10
Thomas Mortagne 41.1 11 [[Full list of issues fixed and Dashboard for 7.0>>https://jira.xwiki.org/secure/Dashboard.jspa?selectPageId=13092]].
Marius Dumitru Florea 1.1 12
Guillaume Delhumeau 15.1 13 == Wiki Creation ==
Marius Dumitru Florea 1.1 14
Guillaume Delhumeau 15.1 15 * During the wiki creation, Distribution Wizard is not triggered anymore. Instead, the whole wiki creation process has been moved into a job, and everything happens inside the Wiki Creation Wizard (with a progress bar and a logging area):(((
16 {{image reference="WikiCreationStep.png" width="45%"/}} {{image reference="WikiCreationStepEnd.png" width="45%"/}}
17 )))
18 * The Wiki Provisioning Step has been integrated into the job too.
19 * When a wiki is created from a template, we now have a message in the logs that displays which document is copied.
Marius Dumitru Florea 1.1 20
Thomas Mortagne 28.1 21 == Extension categories ==
22
Thomas Mortagne 31.1 23 It's now possible to indicate a predefined category for each extension in the repository:
Thomas Mortagne 28.1 24
25 {{image reference="category.png"/}}
Thomas Mortagne 31.1 26
27 It's also possible to filter and order extension by category:
28
Thomas Mortagne 28.1 29 {{image reference="categorylivetable.png"/}}
30
Marius Dumitru Florea 36.1 31 == Extension Manager Improvements ==
32
33 You can now distinguish between the extensions that have been installed directly (by you or a different user) and the extensions that have been installed as transitive dependencies, when looking at the list of installed extensions.
34
Thomas Mortagne 37.1 35 {{image reference="EM-extensionDescription.png"/}}
Marius Dumitru Florea 36.1 36
37 Also, the details of an installed extension now include the install date and the user that installed that extension. This information will be available only for extensions that are installed or upgraded from now on (directly or indirectly). Extensions that are already installed have this information only if they were installed directly (not as dependency).
38
Marius Dumitru Florea 1.1 39 == Miscellaneous ==
40
Marius Dumitru Florea 7.1 41 * The user/group displayer is now showing the wiki for local users/groups in edit mode too (the wiki was shown only in view mode previously).(((
Eduard Moraru 8.2 42 {{image reference="userDisplayer-editMode-wiki.png"/}}
Marius Dumitru Florea 7.1 43 )))
Clemens Robbenhaar 10.1 44 * When deleting a wiki the confirmation page now asks to type in the wiki identifier to prevent accidental deletion.(((
45 {{image reference="delete-wiki-confirm-screen.png"/}}
46 )))
Vincent Massol 34.1 47 * The ##Main.RssFeeds## documentation page has been removed since it wasn't linked from anywhere, provided little value in itself and wasn't dynamic (the RSS features for each extensions depends on the extension being installed and if the extension is not installed or uninstalled the ##RssFeeds## page gets broken links).
Marius Dumitru Florea 1.1 48
Thomas Mortagne 41.1 49 See the [[full list of JIRA issues>>https://jira.xwiki.org/sr/jira.issueviews:searchrequest-printable/temp/SearchRequest.html?jqlQuery=project+in+%28XCOMMONS%2C+XRENDERING%2C+XWIKI%2C+XE%29+and+status+%3D+Closed+and+resolution+%3D+Fixed+and+fixVersion+%3D+%227.0-milestone-2%22&tempMax=1000]] fixed in this release.
Marius Dumitru Florea 1.1 50
51 = For Developers =
52
Vincent Massol 5.2 53 == Mail Sender API Improvements ==
Marius Dumitru Florea 1.1 54
Vincent Massol 5.1 55 The [[Mail Sender API>>extensions:Extension.Mail Sender API]] has been improved to allow sending mails to a list of users, a list of groups and a list of email addresses, all at once. It also supports excluding users, groups and email addresses. Last, it ensures that recipients don't get duplicate mails. Before 6.4.2/7.0M2, you could send a mail either to a list of users or to a group (and to an email address) but you had to use several API calls for that and you had to handle yourself potential mail duplication (if a user was inside your user list and inside the group you were sending to for example).
Marius Dumitru Florea 1.1 56
Vincent Massol 5.1 57 Using the new API, the following example will send a template email to all the users in the ##XWiki.MyGroup## group, to the ##XWiki.User1## and ##XWiki.User2## users + to the ##[email protected]## email address.
58
Vincent Massol 6.1 59 Also note that contrary to the previous API to send email to a group, the new API handles nested groups (i.e. if the ##XWiki.MyGroup## group contains other groups, all users of those other groups will also receive the template email)!
60
Vincent Massol 5.1 61 {{code language="none"}}
62 {{velocity}}
63 ## Parameters for the 'template' MimeMessageFactory
64 #set ($templateParameters = {'language' : $xcontext.language, 'velocityVariables' : { 'var1' : 'value1' }})
65
66 #set ($templateReference = $services.model.createDocumentReference('', 'Space', 'MailTemplatePage'))
67 #set ($parameters = {'hint' : 'template', 'parameters' : $templateParameters, 'source' : $templateReference})
68
69 #set ($groupReference = $services.model.createDocumentReference('', 'XWiki', 'MyGroup'))
70 #set ($user1Reference = $services.model.createDocumentReference('', 'XWiki', 'User1'))
71 #set ($user2Reference = $services.model.createDocumentReference('', 'XWiki', 'User2'))
72
73 #set ($source = {'groups' : [$groupReference], 'users' : [$user1Reference, $user2Reference], 'emails' : ['[email protected]']})
74
75 #set ($messages = $services.mailsender.createMessages('usersandgroups', $source, $parameters))
76 #set ($mailResult = $services.mailsender.send($messages, 'database'))
77 {{/velocity}}
78 {{/code}}
79
Vincent Massol 17.1 80 == Group Member Iterator ==
81
82 A new ##ReferenceUserIterator## iterator has been introduced to iterate over all the users found in a list of users/groups. It supports the following:
Thomas Mortagne 19.1 83
Vincent Massol 17.1 84 * Ability to iterate over a list of references (either group or user) or a single user/group
85 * Handles nested groups
86 * Ability to return user data (e.g. user's email) and to programatically skip some entries based on programmatic condition
87 * Ability to exclude users/groups
88
Vincent Massol 18.1 89 Notes:
Thomas Mortagne 19.1 90
Vincent Massol 18.1 91 * Right now duplication is not handled at the level of ##UserIterator## (thus for example if a user is a member of several groups it'll be returned several times).
Thomas Mortagne 41.1 92 * This code is not performant as it will load one document per group and per user found. There's [[currently no way of handling this in a performant way>>https://jira.xwiki.org/browse/XWIKI-10377]].
Vincent Massol 17.3 93
Vincent Massol 17.1 94 Example 1: List all users of a group by returning references
95
Vincent Massol 17.2 96 {{code language="groovy"}}
Vincent Massol 17.1 97 {{groovy}}
98 import com.xpn.xwiki.internal.plugin.rightsmanager.*
99 import org.xwiki.model.reference.*
100 import org.xwiki.context.*
101
102 def groupReference = new DocumentReference("xwiki", "XWiki", "XWikiAllGroup")
103 def resolver = services.component.getInstance(DocumentReferenceResolver.TYPE_STRING, "explicit")
104 def execution = services.component.getInstance(Execution.class)
105 def iterator = new ReferenceUserIterator(groupReference, resolver, execution)
106 iterator.each() {
107 println "* ${it}"
108 }
109 {{/groovy}}
110 {{/code}}
111
112 Example 2: Get all emails from all users inside the passed groups
113
Vincent Massol 17.2 114 {{code language="groovy"}}
Vincent Massol 17.1 115 {{groovy}}
116 import com.xpn.xwiki.doc.*
117 import com.xpn.xwiki.objects.*
118 import com.xpn.xwiki.internal.plugin.rightsmanager.*
119 import org.xwiki.model.reference.*
120 import org.xwiki.context.*
121
122 def group1Reference = new DocumentReference("xwiki", "XWiki", "XWikiAllGroup")
123 def group2Reference = new DocumentReference("xwiki", "XWiki", "XWikiAdminGroup")
124 def resolver = services.component.getInstance(DocumentReferenceResolver.TYPE_STRING, "explicit")
125 def execution = services.component.getInstance(Execution.class)
126
127 class EmailUserDataExtractor implements UserDataExtractor<String>
128 {
129 public String extractFromSuperadmin(DocumentReference reference)
130 {
131 return null
132 }
133
134 public String extractFromGuest(DocumentReference reference)
135 {
136 return null
137 }
138
139 public String extract(DocumentReference reference, XWikiDocument document, BaseObject userObject)
140 {
141 return userObject.getStringValue("email")
142 }
143 }
144
145 def iterator = new UserIterator([group1Reference, group2Reference], [], new EmailUserDataExtractor(), resolver, execution)
146 iterator.each() {
147 println "* ${it}"
148 }
149 {{/groovy}}
150 {{/code}}
151
Thomas Mortagne 23.1 152 == Extensions improvement and new features ==
153
Thomas Mortagne 24.1 154 === Extension category ===
155
156 Each extension can now expose a category (flavor, application, macro...).
157
Thomas Mortagne 23.1 158 === Advanced extensions search ===
159
Thomas Mortagne 26.1 160 A new ##org.xwiki.extension.repository.search.AdvancedSearchable## extending ##org.xwiki.extension.repository.search.Searchable## provide field based filtering and ordering to extensions search. It's implemented by default core, local, installed, xar extensions repositories.
Thomas Mortagne 23.1 161
Thomas Mortagne 26.1 162 === Advanced extensions search in REST protocol ===
163
164 Support for advanced filtering and ordering or extensions search result has been added XWiki Repository protocol and client. See [[extensions:Extension.Repository Module||anchor="H2Fsearch"]].
165
Thomas Mortagne 24.1 166 === Custom properties in REST protocol ===
Thomas Mortagne 23.1 167
Thomas Mortagne 25.1 168 Support for missing custom properties has been added to the XWiki Repository REST protocol. See [[extensions:Extension.Repository Module||anchor="HREST"]]. Only String properties are supported for now.
Thomas Mortagne 23.1 169
Marius Dumitru Florea 1.1 170 == Miscellaneous ==
171
Vincent Massol 40.5 172 * ##$datetool## has a new method to access the [[DateFormatSymbols>>http://docs.oracle.com/javase/7/docs/api/java/text/DateFormatSymbols.html]]:(((
Marius Dumitru Florea 2.1 173 {{code language="none"}}
174 {{velocity}}
175 #set ($currentLocale = $services.localization.currentLocale)
176 #set ($dateFormatSymbols = $datetool.getDateFormatSymbols($currentLocale))
177 $jsontool.serialize($dateFormatSymbols.shortMonths)
Marius Dumitru Florea 1.1 178
Marius Dumitru Florea 2.1 179 ## Output for French locale:
180 ## ["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc.",""]
181 {{/velocity}}
182 {{/code}}
183 )))
Vincent Massol 4.1 184 * Message Stream script service now offers a ##getLastError()## method to get the last error.
Thomas Mortagne 41.1 185 * "input" displayed Static and Database Lists separators handling has been improved to properly allow using multiple separators at once for entering data (including escaped separators inside list values). More importantly, when displaying an existing list inside an input, the existing values will always be separated using the first separator specified in the object's class for the edited object property. For non-relationally stored properties, the value that is stored in the database as a LargeStringProperty will always be separated using the default pipe ("|") separator. See [[XWIKI-10098>>https://jira.xwiki.org/browse/XWIKI-10098]] for more details.
186 * The ##/deleteversions/## action now supports the "latest" and "previous" pseudoversions and the ##/rollback/## action now supports the "previous" pseudoversion. See [[XWIKI-11841>>https://jira.xwiki.org/browse/XWIKI-11841]] for more information.
Marius Dumitru Florea 2.1 187
Vincent Massol 40.6 188 == Upgrades ==
189
190 The following dependencies have been upgraded:
191
Thomas Mortagne 41.1 192 * [[Selenium 2.44.0>>https://jira.xwiki.org/browse/XCOMMONS-753]]
193 * [[Arquilian Phantom JS Driver 1.1.3.Final>>https://jira.xwiki.org/browse/XWIKI-11832]]
194 * [[Groovy 2.4.1>>https://jira.xwiki.org/browse/XCOMMONS-755]]
195 * [[JGroups 3.6.2>>https://jira.xwiki.org/browse/XWIKI-11848]]
196 * [[Jython 2.7-b4>>https://jira.xwiki.org/browse/XWIKI-11850]]
197 * [[DBCP 2.1>>https://jira.xwiki.org/browse/XCOMMONS-756]]
198 * [[Pygments 2.0.2>>https://jira.xwiki.org/browse/XWIKI-11864]]
199 * [[jdom 2.0.6>>https://jira.xwiki.org/browse/XCOMMONS-760]]
200 * [[XStream 1.4.8>>https://jira.xwiki.org/browse/XCOMMONS-761]]
201 * [[Maven 3.2.5 and Aether 1.0.2.v20150114>>https://jira.xwiki.org/browse/XCOMMONS-711]]
Vincent Massol 40.6 202
Marius Dumitru Florea 1.1 203 = Translations =
204
205 The following translations have been updated:
206
Marius Dumitru Florea 39.1 207 {{language codes="de,fr,lv,ro"/}}
Marius Dumitru Florea 1.1 208
209 = Tested Browsers & Databases =
210
Manuel Smeria 16.1 211 {{include reference="TestReports.ManualTestReportSummaryXWiki70M2"/}}
Marius Dumitru Florea 1.1 212
213 = Known issues =
214
Thomas Mortagne 41.1 215 * [[Bugs we know about>>https://jira.xwiki.org/secure/IssueNavigator.jspa?reset=true&jqlQuery=category+%3D+%22Top+Level+Projects%22+AND+issuetype+%3D+Bug+AND+resolution+%3D+Unresolved+ORDER+BY+updated+DESC]]
Marius Dumitru Florea 1.1 216
217 = Backward Compatibility and Migration Notes =
218
219 == General Notes ==
220
221 When upgrading make sure you compare your ##xwiki.cfg##, ##xwiki.properties## and ##web.xml## files with the newest version since some configuration parameters may have been modified or added. Note that you should add ##xwiki.store.migration=1## so that XWiki will attempt to automatically migrate your current database to the new schema. Make sure you backup your Database before doing anything.
222
Eduard Moraru 8.4 223 == Issues specific to XWiki 7.0M2 ==
Marius Dumitru Florea 1.1 224
Thomas Mortagne 41.1 225 * The Watchlist class and its objects have been migrated to use relationally stored DBList properties instead of TextArea properties in order to solve scalability issues that occurred when too many elements were being watched by a user. See [[XWIKI-7339>>https://jira.xwiki.org/browse/XWIKI-7339]].
Vincent Massol 40.10 226 * The upgrade to DBCP 2.1 has caused to **require a JDBC 4 driver** and some Hibernate configuration properties have been removed and new ones created. The following properties have been removed:(((
Vincent Massol 22.1 227 * ##dbcp.maxActive## replaced by ##dbcp.maxTotal##
228 * ##dbcp.maxWait## replaced by ##dbcp.maxWaitMillis##
Marius Dumitru Florea 1.1 229
Vincent Massol 22.1 230 Note that we've kept backward compatibility support for the old properties so that you don't need to immediately modify your ##hibernate.cfg## file (although we recommend you do that!).
231
232 Also note that even though the following properties were defined in ##hibernate.cfg## they were not handled by XWiki's code (nor by DBCP 1.3 - which was the version we were using prior to moving to 2.1). Since they had no effect they've now been removed:
Thomas Mortagne 24.1 233
Vincent Massol 22.1 234 * ##dbcp.whenExhaustedAction##. Note that the default action is BLOCK in Commons Pool (used by DBCP)
235 * ##dbcp.ps.whenExhaustedAction##
236 * ##dbcp.ps.maxWait##
237 * ##dbcp.ps.maxIdle##
238 )))
239
Marius Dumitru Florea 1.1 240 == API Breakages ==
241
Marius Dumitru Florea 38.1 242 The following APIs were modified since XWiki 6.4.2:
Marius Dumitru Florea 1.1 243
Vincent Massol 40.8 244 * Add support for categories to extension. It should not be an issue for most Extension implementations which are supposed to extend ##AbstractExtension##
Marius Dumitru Florea 40.2 245
Marius Dumitru Florea 1.1 246 {{code language="none"}}
Marius Dumitru Florea 40.1 247 org.xwiki.extension.Extension: Method 'public java.lang.String getCategory()' has been added to an interface
Marius Dumitru Florea 1.1 248 {{/code}}
Marius Dumitru Florea 40.2 249
Marius Dumitru Florea 40.1 250 * Added a method to get the date when an extension was installed.
Marius Dumitru Florea 40.2 251
Marius Dumitru Florea 40.1 252 {{code language="none"}}
253 org.xwiki.extension.InstalledExtension: Method 'public java.util.Date getInstallDate(java.lang.String)' has been added to an interface
254 {{/code}}
Marius Dumitru Florea 40.2 255
Marius Dumitru Florea 40.1 256 * Added support for associating custom install properties (e.g. the user that triggers the install) to the namespace where the extension is installed.
Marius Dumitru Florea 40.2 257
Marius Dumitru Florea 40.1 258 {{code language="none"}}
259 org.xwiki.extension.InstalledExtension: Method 'public java.lang.Object getNamespaceProperty(java.lang.String, java.lang.String)' has been added to an interface
260 org.xwiki.extension.repository.InstalledExtensionRepository: Method 'public org.xwiki.extension.InstalledExtension installExtension(org.xwiki.extension.LocalExtension, java.lang.String, boolean, java.util.Map)' has been added to an interface
261 {{/code}}
Marius Dumitru Florea 40.2 262
Marius Dumitru Florea 40.1 263 * Added support for advanced installed extensions search.
Marius Dumitru Florea 40.2 264
Marius Dumitru Florea 40.1 265 {{code language="none"}}
266 org.xwiki.extension.repository.InstalledExtensionRepository: Method 'public org.xwiki.extension.repository.result.IterableResult searchInstalledExtensions(java.lang.String, org.xwiki.extension.repository.search.ExtensionQuery)' has been added to an interface
267 {{/code}}
Marius Dumitru Florea 40.3 268
Vincent Massol 40.9 269 * Using String instead of JRCS Version for better flexibility. Probably should not have been public from the start.
Marius Dumitru Florea 40.3 270
271 {{code language="none"}}
272 com.xpn.xwiki.web.DeleteVersionsForm: Return type of method 'public org.suigeneris.jrcs.rcs.Version getRev()' has been changed to java.lang.String
273 com.xpn.xwiki.web.DeleteVersionsForm: Return type of method 'public org.suigeneris.jrcs.rcs.Version getRev1()' has been changed to java.lang.String
274 com.xpn.xwiki.web.DeleteVersionsForm: Return type of method 'public org.suigeneris.jrcs.rcs.Version getRev2()' has been changed to java.lang.String
275 {{/code}}

Get Connected