Show last authors
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
7 <insert description of release here>
8
9 = New and Noteworthy (since XWiki 7.0 Milestone 1) =
10
11 [[Full list of issues fixed and Dashboard for 7.0>>http://jira.xwiki.org/secure/Dashboard.jspa?selectPageId=13092]].
12
13 == Wiki Creation ==
14
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.
20
21 == Extension categories ==
22
23 It's now possible to indicate a predefined category for each extension in the repository:
24
25 {{image reference="category.png"/}}
26
27 It's also possible to filter and order extension by category:
28
29 {{image reference="categorylivetable.png"/}}
30
31 == Miscellaneous ==
32
33 * 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).(((
34 {{image reference="userDisplayer-editMode-wiki.png"/}}
35 )))
36 * When deleting a wiki the confirmation page now asks to type in the wiki identifier to prevent accidental deletion.(((
37 {{image reference="delete-wiki-confirm-screen.png"/}}
38 )))
39
40 See the [[full list of JIRA issues>>http://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.
41
42 = For Developers =
43
44 == Mail Sender API Improvements ==
45
46 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).
47
48 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 ##john@doe.com## email address.
49
50 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)!
51
52 {{code language="none"}}
53 {{velocity}}
54 ## Parameters for the 'template' MimeMessageFactory
55 #set ($templateParameters = {'language' : $xcontext.language, 'velocityVariables' : { 'var1' : 'value1' }})
56
57 #set ($templateReference = $services.model.createDocumentReference('', 'Space', 'MailTemplatePage'))
58 #set ($parameters = {'hint' : 'template', 'parameters' : $templateParameters, 'source' : $templateReference})
59
60 #set ($groupReference = $services.model.createDocumentReference('', 'XWiki', 'MyGroup'))
61 #set ($user1Reference = $services.model.createDocumentReference('', 'XWiki', 'User1'))
62 #set ($user2Reference = $services.model.createDocumentReference('', 'XWiki', 'User2'))
63
64 #set ($source = {'groups' : [$groupReference], 'users' : [$user1Reference, $user2Reference], 'emails' : ['john@doe.com']})
65
66 #set ($messages = $services.mailsender.createMessages('usersandgroups', $source, $parameters))
67 #set ($mailResult = $services.mailsender.send($messages, 'database'))
68 {{/velocity}}
69 {{/code}}
70
71 == Group Member Iterator ==
72
73 A new ##ReferenceUserIterator## iterator has been introduced to iterate over all the users found in a list of users/groups. It supports the following:
74
75 * Ability to iterate over a list of references (either group or user) or a single user/group
76 * Handles nested groups
77 * Ability to return user data (e.g. user's email) and to programatically skip some entries based on programmatic condition
78 * Ability to exclude users/groups
79
80 Notes:
81
82 * 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).
83 * 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>>http://jira.xwiki.org/browse/XWIKI-10377]].
84
85 Example 1: List all users of a group by returning references
86
87 {{code language="groovy"}}
88 {{groovy}}
89 import com.xpn.xwiki.internal.plugin.rightsmanager.*
90 import org.xwiki.model.reference.*
91 import org.xwiki.context.*
92
93 def groupReference = new DocumentReference("xwiki", "XWiki", "XWikiAllGroup")
94 def resolver = services.component.getInstance(DocumentReferenceResolver.TYPE_STRING, "explicit")
95 def execution = services.component.getInstance(Execution.class)
96 def iterator = new ReferenceUserIterator(groupReference, resolver, execution)
97 iterator.each() {
98 println "* ${it}"
99 }
100 {{/groovy}}
101 {{/code}}
102
103 Example 2: Get all emails from all users inside the passed groups
104
105 {{code language="groovy"}}
106 {{groovy}}
107 import com.xpn.xwiki.doc.*
108 import com.xpn.xwiki.objects.*
109 import com.xpn.xwiki.internal.plugin.rightsmanager.*
110 import org.xwiki.model.reference.*
111 import org.xwiki.context.*
112
113 def group1Reference = new DocumentReference("xwiki", "XWiki", "XWikiAllGroup")
114 def group2Reference = new DocumentReference("xwiki", "XWiki", "XWikiAdminGroup")
115 def resolver = services.component.getInstance(DocumentReferenceResolver.TYPE_STRING, "explicit")
116 def execution = services.component.getInstance(Execution.class)
117
118 class EmailUserDataExtractor implements UserDataExtractor<String>
119 {
120 public String extractFromSuperadmin(DocumentReference reference)
121 {
122 return null
123 }
124
125 public String extractFromGuest(DocumentReference reference)
126 {
127 return null
128 }
129
130 public String extract(DocumentReference reference, XWikiDocument document, BaseObject userObject)
131 {
132 return userObject.getStringValue("email")
133 }
134 }
135
136 def iterator = new UserIterator([group1Reference, group2Reference], [], new EmailUserDataExtractor(), resolver, execution)
137 iterator.each() {
138 println "* ${it}"
139 }
140 {{/groovy}}
141 {{/code}}
142
143 == Extensions improvement and new features ==
144
145 === Extension category ===
146
147 Each extension can now expose a category (flavor, application, macro...).
148
149 === Advanced extensions search ===
150
151 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.
152
153 === Advanced extensions search in REST protocol ===
154
155 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"]].
156
157 === Custom properties in REST protocol ===
158
159 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.
160
161 == Deprecated and Retired projects ==
162
163 <description of deprecated and retired projects>
164
165 == Upgrades ==
166
167 The following dependencies have been upgraded:
168
169 * [[Selenium 2.44.0>>http://jira.xwiki.org/browse/XCOMMONS-753]]
170 * [[Arquilian Phantom JS Driver 1.1.3.Final>>http://jira.xwiki.org/browse/XWIKI-11832]]
171 * [[Groovy 2.4.1>>http://jira.xwiki.org/browse/XCOMMONS-755]]
172 * [[JGroups 3.6.2>>http://jira.xwiki.org/browse/XWIKI-11848]]
173 * [[Jython 2.7-b4>>http://jira.xwiki.org/browse/XWIKI-11850]]
174 * [[DBCP 2.1>>http://jira.xwiki.org/browse/XCOMMONS-756]]
175 * [[Pygments 2.0.2>>http://jira.xwiki.org/browse/XWIKI-11864]]
176 * [[jdom 2.0.6>>http://jira.xwiki.org/browse/XCOMMONS-760]]
177
178 == Miscellaneous ==
179
180 * $datetool has a new method to access the [[DateFormatSymbols>>http://docs.oracle.com/javase/7/docs/api/java/text/DateFormatSymbols.html]]:(((
181 {{code language="none"}}
182 {{velocity}}
183 #set ($currentLocale = $services.localization.currentLocale)
184 #set ($dateFormatSymbols = $datetool.getDateFormatSymbols($currentLocale))
185 $jsontool.serialize($dateFormatSymbols.shortMonths)
186
187 ## Output for French locale:
188 ## ["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc.",""]
189 {{/velocity}}
190 {{/code}}
191 )))
192 * Message Stream script service now offers a ##getLastError()## method to get the last error.
193 * "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>>http://jira.xwiki.org/browse/XWIKI-10098]] for more details.
194 * The ##/deleteversions/## action now supports the "latest" and "previous" pseudoversions and the ##/rollback/## action now supports the "previous" pseudoversion. See [[XWIKI-11841>>http://jira.xwiki.org/browse/XWIKI-11841]] for more information.
195
196 = Translations =
197
198 The following translations have been updated:
199
200 {{language codes="none, none"/}}
201
202 = Tested Browsers & Databases =
203
204 {{include reference="TestReports.ManualTestReportSummaryXWiki70M2"/}}
205
206 = Performances tests compared to <last super stable version> =
207
208 <a summary of the comparison with latest super stable version>
209
210 More details on <link to the test report>.
211
212 = Known issues =
213
214 * [[Bugs we know about>>http://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]]
215
216 = Backward Compatibility and Migration Notes =
217
218 == General Notes ==
219
220 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.
221
222 == Issues specific to XWiki 7.0M2 ==
223
224 * 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>>http://jira.xwiki.org/browse/XWIKI-7339]].
225 * The upgrade to DBCP 2.1 has caused some Hibernate configuration properties to have been removed and new ones created. The following properties have been removed:(((
226 * ##dbcp.maxActive## replaced by ##dbcp.maxTotal##
227 * ##dbcp.maxWait## replaced by ##dbcp.maxWaitMillis##
228
229 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!).
230
231 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:
232
233 * ##dbcp.whenExhaustedAction##. Note that the default action is BLOCK in Commons Pool (used by DBCP)
234 * ##dbcp.ps.whenExhaustedAction##
235 * ##dbcp.ps.maxWait##
236 * ##dbcp.ps.maxIdle##
237 )))
238
239 == API Breakages ==
240
241 The following APIs were modified since XWiki 6.4.1:
242
243 {{code language="none"}}
244 <clirr output here>
245 {{/code}}

Get Connected