Version 27.1 by Vincent Massol on 2012/04/05

Hide last authors
Thomas Mortagne 1.1 1 (% style="font-size:x-large;" %)
2 {{warning}}Before upgrading to this version, be sure to have a working backup of your database(s).{{/warning}}
3
4 {{box cssClass="floatinginfobox" title="**Contents**"}}
5 {{toc/}}
6 {{/box}}
7
Thomas Mortagne 19.1 8 This is the second and last milestone of the XWiki Enterprise 4.0 version ([[Roadmap>>Main.Roadmap]]). This version mainly introduces various ways of customizing users directory and profiles and it also bring all comments features to annotation (answer, threaded annotation, etc.) by merging the two concepts in one comment with optional precise location.
Thomas Mortagne 1.1 9
Thomas Mortagne 3.1 10 = New and Noteworthy (since XWiki Enterprise 4.0 Milestone 2 version) =
Thomas Mortagne 1.1 11
12 == Extension Manager improvements ==
13
Thomas Mortagne 2.1 14 {{todo/}}
Thomas Mortagne 1.1 15
Eduard Moraru 4.2 16 == Annotations merged with Comments by default ==
17
18 Starting with version 4.0M2, annotations have been merged by default with comments. More specifically, this means:
19
Vincent Massol 25.1 20 * You can now reply to an Annotation (threaded annotations)
21 * The Annotations tab has been removed and annotations are now located in the Comments tab where you can see both annotations and comments
22 * The default annotation class is now ##XWiki.XWikiComments## instead of AnnotationCode.AnnotationClass. It also means we've modified the ##XWiki.XWikiComments## class by adding new fields to support annotations (See [[Migration Notes>>||anchor="HAnnotationsApplication]] below).
Eduard Moraru 4.2 23
Thomas Mortagne 15.1 24 {{image reference="annotations-merged-with-comments-screenshot.png"/}}
Eduard Moraru 10.2 25
Eduard Moraru 12.4 26 == User profile customization ==
27
Vincent Massol 27.1 28 An admin can now configure which information is displayed in the user profile (the "Profile" tab of a user's profile page). A new section has been added in the Administration where an admin can configure which fields of the ##XWiki.XWikiUsers## class to display. The admin still has to add the new fields to the class the old way, using the class editor for the page ##XWiki.XWikiUsers##, but he no longer needs to write any code.
Eduard Moraru 12.4 29
Thomas Mortagne 15.1 30 {{image reference="userProfileCustomizer-screenshot.png"/}}
Eduard Moraru 12.4 31
32 == User directory improvements and user customized view ==
33
Vincent Massol 27.1 34 The User Directory can now display, as columns, filterable and sortable properties of users, as opposed to the previous version where you just had a fixed column that displayed a composed name in the form "first_name last_name (profilePageID)".
Eduard Moraru 12.4 35
Vincent Massol 27.1 36 In addition, each user can now customize his view over the User Directory by adding or removing columns, or resetting it to the default columns.
Eduard Moraru 12.4 37
38 The default displayed columns are "first_name" and "last_name", and the unmodifiable columns (that will always be displayed as first columns) are "_avatar" and "doc.fullName".
39
Thomas Mortagne 15.1 40 {{image reference="customizableUserDirectory-customize.png"/}}
Eduard Moraru 12.4 41
Vincent Massol 27.1 42 {{info}}In the near future, we're planning to allow Admins to customize globally the User Directory for all users too.{{/info}}
43
Thomas Mortagne 3.2 44 == New Velocity tool to serialize Java objects to JSON format ==
45
Marius Dumitru Florea 20.1 46 We introduced a new Velocity tool to be able to serialize Java objects to the JSON format. Checkout the [[documentation>>doc:extensions:Extension.Velocity Module||anchor="HJSONTool"]]. Here's an example that shows how to serialize a Map object:
Thomas Mortagne 3.2 47
Thomas Mortagne 23.1 48 {{code}}
Marius Dumitru Florea 20.1 49 {{velocity}}
50 #set($map = {'name': 'xwiki', 'values': [1, 2, 3], 'enabled': true})
51 $jsontool.serialize($map)
52 {{/velocity}}
53 {{/code}}
54
55 The result is:
56
57 {{code language="none"}}
58 {"name":"xwiki","values":[1,2,3],"enabled":true}
59 {{/code}}
60
61 We also refactored ##XWiki.LiveTableResultsMacros## page to generate the live table JSON in memory using a Map, which is serialized in the end using the new JSON tool. This makes it easier to customize the live table JSON. For example this is how the JSON for the AppWithinMinutes applications live table is generated:
62
Thomas Mortagne 24.1 63 {{code}}
Marius Dumitru Florea 20.1 64 {{include document="XWiki.LiveTableResultsMacros" /}}
65
Thomas Mortagne 23.1 66 {{velocity}}
Marius Dumitru Florea 20.1 67 #if($xcontext.action == 'get' && "$!{request.outputSyntax}" == 'plain')
68 $response.setContentType('application/json')
69 #set($map = {})
70 #gridresult_buildJSON("$!request.classname" $request.collist.split(',') $map)
71 ## Change the URL and permission for the edit and delete actions:
72 ## * edit action must trigger the AppWithinMinutes wizard.
73 ## * delete action must delete the application space.
74 #foreach($row in $map.get('rows'))
75 #set($editQueryString = "appName=$escapetool.url($row.get('doc_space'))")
76 #set($discard = $row.put('doc_edit_url', $xwiki.getURL('AppWithinMinutes.CreateApplication', 'view', $editQueryString)))
77 #if($row.get('doc_hasdelete'))
78 ## Deleting an application requires space administration rights.
79 #set($discard = $row.put('doc_hasdelete', $xwiki.hasAccessLevel('admin', $xcontext.user, "${row.get('doc_space')}.WebPreferences")))
80 #end
81 #set($rowDocRef = $services.model.createDocumentReference($row.get('doc_wiki'), $row.get('doc_space'), $row.get('doc_name')))
82 #set($discard = $row.put('doc_delete_url', $xwiki.getURL($rowDocRef, 'deletespace', '')))
83 #end
84 $jsontool.serialize($map)
85 #end
86 {{/velocity}}
87 {{/code}}
88
Ecaterina Moraru (Valica) 6.1 89 == ColorThemes gradients customizable from ColorTheme Wizard ==
90
91 In version [[3.4>>xwiki:ReleaseNotes.ReleaseNotesXWikiEnterprise34]] we deprecated the old default bundled ColorThemes (because of incompatible variable mix). In version 4.0 this is no longer the case, old default bundled ColorThemes (like [[Bordo>>extensions:Extension.Bordo ColorTheme]], [[Nature>>extensions:Extension.Nature ColorTheme]], etc.) are now being compatible with the 3.4 Colibri Skin changes. We fixed this by adding new gradient ColorThemes variables. All these gradient ColorTheme variables are now changeble from the ColorTheme Wizard.
92
93 {{image reference="ColorThemeWizard.png"/}}
94
Thomas Mortagne 1.1 95 = Bug fixes and improvements =
96
Ecaterina Moraru (Valica) 9.1 97 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%2C+XEM%29+and+status+%3D+Closed+and+resolution+%3D+Fixed+and+fixVersion+%3D+%224.0-milestone-2%22&tempMax=1000]] fixed in this release.
Thomas Mortagne 1.1 98
99 = For Developers =
100
Thomas Mortagne 15.1 101 == Class reference always local ==
Thomas Mortagne 1.1 102
Thomas Mortagne 15.1 103 The class reference is now stored as a local reference in the BaseObject/BaseCollection which means that like in the storage you can't assign a class coming from another wiki to an xobject which was causing some issue when copying wikis. You can still provide absolute reference but the wiki reference will be automatically removed.
104
Thomas Mortagne 1.1 105 == Upgrades ==
106
107 The following dependencies have been upgraded:
108
Thomas Mortagne 3.2 109 * Json-lib 2.4
110
Thomas Mortagne 1.1 111 = Tested Browsers =
112
113 Here's the list of browsers tested with this version (i.e. browsers that we've tested as working - Check the list of [[supported browsers>>dev:Community.BrowserSupportStrategy]]):
114
Thomas Mortagne 15.1 115 {{browser name="firefox" version="11.0"/}}
Thomas Mortagne 1.1 116
Thomas Mortagne 15.1 117 {{browser name="chrome" version="18"/}}
Thomas Mortagne 1.1 118
119 = Known issues =
120
121 * [[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]]
122
123 = Test Report =
124
Sorin Burjan 12.2 125 You can check the [[manual test report>>TestReports.ManualTestReportXE40M2]] to learn about what was tested and the results on various browsers.
Thomas Mortagne 1.1 126
127 = Backward Compatibility and Migration Notes =
128
129 == General Notes ==
130
131 {{info}}
132 If you're running in a multiwiki setup you'll also need to define the property //xwiki.store.migration.databases// in your //xwiki.cfg// file if you want to explicitly name some databases to be migrated as the default is now to migrate all databases. Database that are not migrated could not be accessed.
133 {{/info}}
134
135 You may also want to [[import the default wiki XAR>>Main.Download]] in order to benefit from all the improvements listed above.
136
137 {{warning}}
138 Always make sure you compare your ##xwiki.cfg## and ##xwiki.properties## files with the newest version since some configuration parameters were added. Note that you should add ##xwiki.store.migration=1## so that XWiki will attempt to automatically migrate your current database to the new schema. Make sure you backup your Database before doing anything.
139 {{/warning}}
140
Eduard Moraru 5.1 141 == Annotations Application ==
142
143 If you were/are using a custom annotations class, other than the previously default AnnotationsCode.AnnotationsClass, in the annotations configuration then the merging-with-comments feature will not be available to you. What you can do is to enable back the Annotations tab by going to the Administration > Look and Feel > Page Elements and changing the value of "Show document annotations " from "No" to "Yes". Now you will still be able to use your custom annotations without being affected by the changes.
144
145 Also, a migration script will automatically convert all your existing default annotations (that are using the default AnnotationCode.AnnotationClass) to the new default class (XWiki.XWikiComments). After the migration, the new database version will be 40001.
146
Eduard Moraru 13.1 147 == User profile customization ==
148
149 If you have a customized user profile tab (you have edited the "XWiki.XWikiUserProfileSheet" page), pay attention when importing the default XAR. If you want keep your customization and don't use the new User Profile Customization UI, just skip the "XWiki.XWikiUserProfileSheet" page. Also, if you do so, the new "User Profile" section in Administration will be useless.
150
Thomas Mortagne 1.1 151 == API Breakages ==
152
153 The following APIs were modified since version 3.5:
154
155 {{code language="none"}}
Thomas Mortagne 14.1 156 ERROR: 7012: org.xwiki.component.descriptor.ComponentRole: Method 'public java.lang.reflect.Type getRoleType()' has been added to an interface
157 ERROR: 7012: org.xwiki.component.manager.ComponentManager: Method 'public org.xwiki.component.descriptor.ComponentDescriptor getComponentDescriptor(java.lang.reflect.Type, java.lang.String)' has been added to an interface
158 ERROR: 7012: org.xwiki.component.manager.ComponentManager: Method 'public java.util.List getComponentDescriptorList(java.lang.reflect.Type)' has been added to an interface
159 ERROR: 7012: org.xwiki.component.manager.ComponentManager: Method 'public boolean hasComponent(java.lang.reflect.Type)' has been added to an interface
160 ERROR: 7012: org.xwiki.component.manager.ComponentManager: Method 'public boolean hasComponent(java.lang.reflect.Type, java.lang.String)' has been added to an interface
161 ERROR: 7012: org.xwiki.component.manager.ComponentManager: Method 'public java.lang.Object lookupComponent(java.lang.reflect.Type)' has been added to an interface
162 ERROR: 7012: org.xwiki.component.manager.ComponentManager: Method 'public java.lang.Object lookupComponent(java.lang.reflect.Type, java.lang.String)' has been added to an interface
163 ERROR: 7012: org.xwiki.component.manager.ComponentManager: Method 'public java.util.List lookupList(java.lang.reflect.Type)' has been added to an interface
164 ERROR: 7012: org.xwiki.component.manager.ComponentManager: Method 'public java.util.Map lookupMap(java.lang.reflect.Type)' has been added to an interface
165 ERROR: 7012: org.xwiki.component.manager.ComponentManager: Method 'public void unregisterComponent(java.lang.reflect.Type, java.lang.String)' has been added to an interface
166 ERROR: 7012: org.xwiki.component.manager.ComponentManager: Method 'public void unregisterComponent(org.xwiki.component.descriptor.ComponentDescriptor)' has been added to an interface
167 ERROR: 7002: org.xwiki.component.annotation.DefaultComponentDependencyFactory: Method 'protected java.lang.Class getFieldRole(java.lang.reflect.Field)' has been removed
168 ERROR: 8001: org.xwiki.bridge.AttachmentName: Class org.xwiki.bridge.AttachmentName removed
169 ERROR: 7002: org.xwiki.bridge.DocumentAccessBridge: Method 'public java.io.InputStream getAttachmentContent(org.xwiki.bridge.AttachmentName)' has been removed
170 ERROR: 7002: org.xwiki.bridge.DocumentAccessBridge: Method 'public java.lang.String getAttachmentURL(org.xwiki.bridge.AttachmentName, boolean)' has been removed
171 ERROR: 7002: org.xwiki.bridge.DocumentAccessBridge: Method 'public java.util.List getAttachmentURLs(org.xwiki.bridge.DocumentName, boolean)' has been removed
172 ERROR: 7002: org.xwiki.bridge.DocumentAccessBridge: Method 'public java.util.List getAttachments(org.xwiki.bridge.DocumentName)' has been removed
173 ERROR: 7002: org.xwiki.bridge.DocumentAccessBridge: Method 'public org.xwiki.bridge.DocumentName getCurrentDocumentName()' has been removed
174 ERROR: 7002: org.xwiki.bridge.DocumentAccessBridge: Method 'public org.xwiki.bridge.DocumentModelBridge getDocument(org.xwiki.bridge.DocumentName)' has been removed
175 ERROR: 7002: org.xwiki.bridge.DocumentAccessBridge: Method 'public org.xwiki.bridge.DocumentName getDocumentName(java.lang.String)' has been removed
176 ERROR: 7002: org.xwiki.bridge.DocumentModelBridge: Method 'public org.xwiki.bridge.DocumentName getDocumentName()' has been removed
177 ERROR: 8001: org.xwiki.bridge.DocumentName: Class org.xwiki.bridge.DocumentName removed
178 ERROR: 4001: org.xwiki.gwt.user.client.ui.ListBox: Removed com.google.gwt.event.dom.client.KeyDownHandler from the set of implemented interfaces
179 ERROR: 4001: org.xwiki.gwt.user.client.ui.ListBox: Removed com.google.gwt.event.dom.client.KeyPressHandler from the set of implemented interfaces
180 ERROR: 4001: org.xwiki.gwt.user.client.ui.ListBox: Removed com.google.gwt.event.dom.client.KeyUpHandler from the set of implemented interfaces
181 ERROR: 7002: org.xwiki.gwt.user.client.ui.ListBox: Method 'public void onKeyDown(com.google.gwt.event.dom.client.KeyDownEvent)' has been removed
182 ERROR: 7002: org.xwiki.gwt.user.client.ui.ListBox: Method 'public void onKeyPress(com.google.gwt.event.dom.client.KeyPressEvent)' has been removed
183 ERROR: 7002: org.xwiki.gwt.user.client.ui.ListBox: Method 'public void onKeyUp(com.google.gwt.event.dom.client.KeyUpEvent)' has been removed
184 ERROR: 7006: org.xwiki.test.ui.browser.IgnoreBrowser: Return type of method 'public java.lang.String[] value()' has been changed to java.lang.String
185 ERROR: 7012: org.xwiki.test.ui.browser.IgnoreBrowser: Method 'public java.lang.String version()' has been added to an interface
186 ERROR: 7002: org.xwiki.test.ui.po.CommentsTab: Method 'public void clickAddComment()' has been removed
187 ERROR: 7002: org.xwiki.test.ui.po.CommentsTab: Method 'public void clickSaveComment()' has been removed
188 ERROR: 7002: org.xwiki.test.ui.po.CommentsTab: Method 'public void setCommentContent(java.lang.String)' has been removed
189 ERROR: 8001: org.xwiki.test.ui.po.DeleteConfirmationPage: Class org.xwiki.test.ui.po.DeleteConfirmationPage removed
190 ERROR: 8001: org.xwiki.test.ui.po.DeletePage: Class org.xwiki.test.ui.po.DeletePage removed
191 ERROR: 7006: org.xwiki.test.ui.po.ViewPage: Return type of method 'public org.xwiki.test.ui.po.DeletePage delete()' has been changed to org.xwiki.test.ui.po.ConfirmationPage
192 ERROR: 4001: org.xwiki.gwt.wysiwyg.client.plugin.line.IELinePlugin: Removed com.google.gwt.event.dom.client.KeyDownHandler from the set of implemented interfaces
193 ERROR: 4001: org.xwiki.gwt.wysiwyg.client.plugin.line.IELinePlugin: Removed com.google.gwt.event.dom.client.KeyPressHandler from the set of implemented interfaces
194 ERROR: 4001: org.xwiki.gwt.wysiwyg.client.plugin.line.IELinePlugin: Removed com.google.gwt.event.dom.client.KeyUpHandler from the set of implemented interfaces
195 ERROR: 4001: org.xwiki.gwt.wysiwyg.client.plugin.line.IELinePlugin: Removed com.google.gwt.event.shared.EventHandler from the set of implemented interfaces
196 ERROR: 4001: org.xwiki.gwt.wysiwyg.client.plugin.line.LinePlugin: Removed com.google.gwt.event.dom.client.KeyDownHandler from the set of implemented interfaces
197 ERROR: 4001: org.xwiki.gwt.wysiwyg.client.plugin.line.LinePlugin: Removed com.google.gwt.event.dom.client.KeyPressHandler from the set of implemented interfaces
198 ERROR: 4001: org.xwiki.gwt.wysiwyg.client.plugin.line.LinePlugin: Removed com.google.gwt.event.dom.client.KeyUpHandler from the set of implemented interfaces
199 ERROR: 4001: org.xwiki.gwt.wysiwyg.client.plugin.line.LinePlugin: Removed com.google.gwt.event.shared.EventHandler from the set of implemented interfaces
200 ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.line.LinePlugin: Method 'public void onKeyDown(com.google.gwt.event.dom.client.KeyDownEvent)' has been removed
201 ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.line.LinePlugin: Method 'public void onKeyPress(com.google.gwt.event.dom.client.KeyPressEvent)' has been removed
202 ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.line.LinePlugin: Method 'public void onKeyUp(com.google.gwt.event.dom.client.KeyUpEvent)' has been removed
203 ERROR: 7004: org.xwiki.gwt.wysiwyg.client.plugin.list.ListBehaviorAdjuster: In method 'public ListBehaviorAdjuster()' the number of arguments has changed
204 ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.list.ListBehaviorAdjuster: Method 'protected void dispatchKey(com.google.gwt.user.client.ui.Widget, int, org.xwiki.gwt.dom.client.Event)' has been removed
205 ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.list.ListBehaviorAdjuster: Method 'public org.xwiki.gwt.user.client.ui.rta.RichTextArea getTextArea()' has been removed
206 ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.list.ListBehaviorAdjuster: Method 'public void setTextArea(org.xwiki.gwt.user.client.ui.rta.RichTextArea)' has been removed
207 ERROR: 7004: org.xwiki.gwt.wysiwyg.client.plugin.macro.exec.InsertExecutable: In method 'public InsertExecutable(org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroSelector)' the number of arguments has changed
208 ERROR: 7012: org.xwiki.wysiwyg.server.WysiwygEditorConfiguration: Method 'public java.lang.Integer getHistorySize()' has been added to an interface
Thomas Mortagne 1.1 209 {{/code}}

Get Connected