Wiki source code of ReleaseNotesXWikiEnterprise32
Version 1.1 by Sergiu Dumitriu on 2011/10/11
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | {{velocity}} | ||
2 | $xwiki.ssx.use("ReleaseNotesXWikiEnterprise30M3") | ||
3 | {{/velocity}} | ||
4 | |||
5 | {{box cssClass="floatinginfobox" title="**Contents**"}}{{toc/}}{{/box}} | ||
6 | |||
7 | This is the third release of the [[3.x>>enterprise:Main.Roadmap]] [[cycle>>dev:Community.VersioningAndReleasePractices#HReleaseCyclesandReleaseStrategy]]. Following the [[goals established for the 3.x cycle>>enterprise:Main.Roadmap#HXWikiEnterprise3.xCycle]], this release pushes forward in the directions of the Application Within Minutes and Extension Manager features. The highlights of this release are: | ||
8 | |||
9 | * many **extension manager improvements** | ||
10 | * new implementation of the **sheet system** making it more easy to bind sheets to objects, while freeing the document content and title fields for better usage | ||
11 | * **user dashboards** giving each user the possibility to configure their own home page | ||
12 | * converted the **panels application** to the new XWiki syntax | ||
13 | * improved **search results** scoring | ||
14 | * **storage improvements**, bringing in numerous performance and compatibility improvements | ||
15 | * easier activation and configuration of **Google Analytics** | ||
16 | * **wiki workspaces** as a more collaborative way of managing an XWiki virtual farm | ||
17 | * **CSRF prevention** is enabled by default | ||
18 | |||
19 | And on the developers' front: | ||
20 | |||
21 | * ##xwiki-commons## and ##xwiki-rendering## are now **published on the central Maven2 repository** | ||
22 | * some major **code cleanup** due to the retirement of some very old plugins and the move of legacy/deprecated code into separate modules | ||
23 | |||
24 | We've setup a [[Jira dashboard>>http://jira.xwiki.org/secure/Dashboard.jspa?selectPageId=10581]] to present the work done for the whole 3.2 release. In summary, 341 issues have been closed by 12 committers (and other contributors providing patches), out of which 150 are fixed bugs. | ||
25 | |||
26 | = New and Noteworthy (since XWiki Enterprise 3.1) = | ||
27 | |||
28 | == Extension Manager improvements == | ||
29 | |||
30 | == New implementation of the sheet system == | ||
31 | |||
32 | In preparation for the //Application Within Minutes// major feature, this release introduces a new way of associating objects with the sheets used for displaying them. Whereas until now the content of the document had to explicitly contain an ##{~{include}~}## statement in order to display an attached object, an object can pull its sheet automatically. This frees up the document content for a more useful purpose. | ||
33 | |||
34 | The new sheet detection mechanism allows for more flexibility, since sheets can not only be bound to a specific document, as with the old ##{~{include}~}## mechanism, or globally on a class, but can also be differentiated on a specific action (allowing to use different sheets for //view//, //edit// or //export//), for different users or groups, or forced explicitly via request parameters. | ||
35 | |||
36 | The ##/inline/## action has been deprecated too, since form editing can also be performed using the ##/edit/## action, either automatically for documents containing sheet-bound objects, or explicitly forced using the ##editor=inline## request parameter. | ||
37 | |||
38 | Most of the classes/sheets included in the XWiki Enterprise package have been updated already to use the new mechanism. Upgraded wiki instances containing documents using the old sheet inclusion mechanism will continue to work, but it's recommended to update them. | ||
39 | |||
40 | You can read more about this feature on the [[Sheet Module>>extensions:Extension.Sheet Module]] documentation page. | ||
41 | |||
42 | == User Dashboards == | ||
43 | |||
44 | After wiki- and space-wide dashboards, this milestone brings support for personal dashboards. Each user can define their own dashboard in their profile document, which they can either view in their profile document, or display instead of the homepage default dashboard. | ||
45 | |||
46 | [[image:ReleaseNotes.ReleaseNotesXWikiEnterprise32M2@userdashboard.png||class="screenshot"]] | ||
47 | |||
48 | == Converted the Panels application to the new XWiki syntax == | ||
49 | |||
50 | Although only a rewrite, with no new features, this makes it easier to edit panels. Several panels have also been cleaned up and optimized, minimizing the use of inline HTML, relying on wiki markup instead. | ||
51 | |||
52 | == Improved search results scoring == | ||
53 | |||
54 | An old complaint has been the fact that the search results returned by the Lucene plugin were rarely useful, with the desired document far from the top of the returned list. This has now been improved, and results are scored differently depending on the field where the search query matches them. A hit on the document title will ensure that the document will be among the first results, while a hit on the owner document's name of an attached image will place the image towards the end. | ||
55 | |||
56 | [[image:ReleaseNotes.ReleaseNotesXWikiEnterprise32M3@search.png||class="screenshot"]] | ||
57 | |||
58 | == Storage improvements == | ||
59 | |||
60 | The version of [[Hibernate>>http://hibernate.org]] used by XWiki has been upgraded to 3.6.7, bringing in numerous performance and compatibility improvements. The mapping and configuration files have also been reviewed, upgraded and simplified. Now InnoDB is used by default when creating a new database or table in MySQL (this used to be a recommendation only, now it's the default). Further performance enhancements for default installations come from the fact that the proper indexes needed for efficient database access are now auto-created at startup, eliminating the need for manual configuration. | ||
61 | |||
62 | == Easier activation and configuration of Google Analytics == | ||
63 | |||
64 | In older versions XWiki did provide a velocity template that could be edited to enable Google Analytics. Still, this required either access to the server or overriding a template in the skin document, which was not that easy to discover. Starting with this version, there's a custom section in the wiki Administration which makes it extremely easy to enable Google Analytics tracking. | ||
65 | |||
66 | [[image:ReleaseNotes.ReleaseNotesXWikiEnterprise32M3@analytics.png||style="border: 1px solid black"]] | ||
67 | |||
68 | The new implementation also allows to define different tracking accounts for each wiki, and also to use more than one tracking account per wiki. | ||
69 | |||
70 | == Wiki Workspaces == | ||
71 | |||
72 | We have adopted the [[extensions:Extension.Workspace Application]] as an XWiki platform project. In a few words, the //Workspace Application// allows regular users to create workspaces where they can collaborate on a specific topic. A workspaces is, in essence, a regular subwikis that is to be used by a group of global users. It allows global users to join or be invited and to easily navigate through the available workspaces and back to the main wiki. | ||
73 | |||
74 | The //Workspace Application// suits best for intranets or any other use case that involves having only global users and going back and forward through projects or departments that are separated in subwikis. On the other hand, the //Workspace Application// is not intended to be used in environments such as wiki farms, where each subwiki is a bubble, having it's own users and not knowing/caring about other subwikis or the main wiki. This later use case is better served by [[XWiki Enterprise Manager>>manager:Main.WebHome]]. | ||
75 | |||
76 | [[image:ReleaseNotes.ReleaseNotesXWikiEnterprise32RC1@create-workspace-entry.png||alt="Create workspace button" class="screenshot"]] | ||
77 | [[image:ReleaseNotes.ReleaseNotesXWikiEnterprise32RC1@main-wiki-section-in-a-workspace.png||alt="Main wiki section displayed in top menu while in a workspace" class="screenshot"]] | ||
78 | [[image:ReleaseNotes.ReleaseNotesXWikiEnterprise32RC1@workspace-administration-workspaceusers-section.png||alt="Workspace Users section in the workspace's administration section replacing 'Registration' and 'Users'" class="screenshot"]] | ||
79 | [[image:ReleaseNotes.ReleaseNotesXWikiEnterprise32RC1@workspaceDirectory.png||alt="Workspace Directory listing available workspaces and available actions" class="screenshot"]] | ||
80 | |||
81 | The //Workspace Application// is not bundled by default with any XWiki product, but it can be installed as an extension. | ||
82 | |||
83 | == Various == | ||
84 | |||
85 | Support for OpenOffice 3.3 | ||
86 | |||
87 | = For Developers = | ||
88 | |||
89 | == CSRF prevention is enabled by default == | ||
90 | |||
91 | [[Cross-site request forgery>>https://secure.wikimedia.org/wikipedia/en/wiki/CSRF]] is an exploit done via JavaScript, which allows a malicious/broken site to include javascript that performs actions on another site on behalf of the currently logged in user. Starting with 3.2, XWiki comes with a prevention mechanism enabled by default. Although it was introduced earlier, in [[2.5>>ReleaseNotes.ReleaseNotesXWikiEnterprise25#HTestingCSRFprotection]], it wasn't enabled by default since several actions were broken by this change. Now almost everything should work fine, please [[report>>http://jira.xwiki.org/jira/secure/Dashboard.jspa]] any actions that are still broken. | ||
92 | |||
93 | {{warning}}This feature can break custom applications that don't use the standard form edition mode and instead implement their own forms or form handling mechanism.{{/warning}} | ||
94 | |||
95 | If your application has been broken by this change, usually all it takes to make it compatible with the CSRF prevention mechanism is to add a hidden field inside the submitted forms, or to add a request parameter to the data-altering URLs: | ||
96 | |||
97 | {{code language="none"}} | ||
98 | Inside forms: | ||
99 | <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" /> | ||
100 | |||
101 | Inside URLs: | ||
102 | $doc.getURL('action', "parameters=values&form_token=$!{services.csrf.getToken()}") | ||
103 | $xwiki.getURL('Some.Document', 'action', "parameters=values&form_token=$!{services.csrf.getToken()}") | ||
104 | {{/code}} | ||
105 | |||
106 | == Improvements to the Suggestion and Spotlight Search widgets == | ||
107 | |||
108 | Suggest widget option to support injection of content after or before a source of suggestions | ||
109 | Support "center" as alignment option for the suggest widget (relatively to its input field) | ||
110 | Support displaying a hint next to suggest display values (for example a category, etc.) | ||
111 | Use the unified loading indicator in search suggest widget | ||
112 | Suggest key navigation is not working properly when in multi-source mode and using shownoresult=false | ||
113 | Suggest widget should never show results once the suggest field has been blurred | ||
114 | |||
115 | == New JavaScript testing framework == | ||
116 | |||
117 | Unit tests for JavaScript code can now be written using the [[Jasmine framework>>http://pivotal.github.com/jasmine/]] for behavioral-driven development. | ||
118 | |||
119 | Example [[tests>>https://github.com/xwiki/xwiki-platform/blob/xwiki-platform-3.2-rc-1/xwiki-platform-core/xwiki-platform-web/src/test/javascript/spec/suggest.js]] for the [[input suggestions widget>>https://github.com/xwiki/xwiki-platform/blob/xwiki-platform-3.2-rc-1/xwiki-platform-core/xwiki-platform-web/src/main/webapp/resources/uicomponents/suggest/suggest.js]]: | ||
120 | |||
121 | {{code language="javascript"}} | ||
122 | describe("Suggest", function() { | ||
123 | describe("Emphasis Matcher", function() { | ||
124 | it("emphasizes a single match", function() { | ||
125 | var result = XWiki.widgets.Suggest.prototype.emphasizeMatches("Typed", "Value with Typed word"); | ||
126 | expect("Value with <em>Typed</em> word").toEqual(result); | ||
127 | }); | ||
128 | |||
129 | it("emphasizes several matches", function() { | ||
130 | var result = XWiki.widgets.Suggest.prototype.emphasizeMatches("Words Typed", "A Selection Of Words Been Typed"); | ||
131 | expect("A Selection Of <em>Words</em> Been <em>Typed</em>").toEqual(result); | ||
132 | }); | ||
133 | |||
134 | it("emphasizes repeated matches", function() { | ||
135 | var result = XWiki.widgets.Suggest.prototype.emphasizeMatches("To Be", "To Be, Or Not To Be"); | ||
136 | expect("<em>To</em> <em>Be</em>, Or Not <em>To</em> <em>Be</em>").toEqual(result); | ||
137 | }); | ||
138 | |||
139 | it("preserves original case", function() { | ||
140 | var result = XWiki.widgets.Suggest.prototype.emphasizeMatches("wOrDs TypEd By An eMo kID", "Words Typed By John Doe"); | ||
141 | expect("<em>Words</em> <em>Typed</em> <em>By</em> John Doe").toEqual(result); | ||
142 | }); | ||
143 | |||
144 | it("is neutral when there are no match", function() { | ||
145 | var result = XWiki.widgets.Suggest.prototype.emphasizeMatches("Rock'n'roll", "Bring me A bowl of coffee before I turn into a goat"); | ||
146 | expect("Bring me A bowl of coffee before I turn into a goat").toEqual(result); | ||
147 | }); | ||
148 | }); | ||
149 | }); | ||
150 | {{/code}} | ||
151 | |||
152 | == Named parameters for the event stream == | ||
153 | |||
154 | The new [[event stream module>>extensions:Extension.Event Stream Module]] now has support for arbitrary named parameters to be associated with the stored events. This is a better way of dealing with extra parameters than the old up to 5 numbered parameters supported by the old ActivityStream plugin. The limitation is that both the name and the value must be strings of at most 255 characters. Read more about the event stream module and how to use these named parameters in [[the module's documentation>>extensions:Extension.Event Stream Module]]. | ||
155 | |||
156 | == GPG signed artifacts == | ||
157 | |||
158 | From now on, all build artifacts will be signed by one of the XWiki developers using a PGP signature. Such signatures are available in [[our maven repository>>http://maven.xwiki.org/releases/org/]] as ##.asc## files next to each artifact. We advise you to check the signatures of the files you download to make sure there are no problems with them. | ||
159 | |||
160 | To check the signatures, you should: | ||
161 | |||
162 | # Install GPG, if it's not already installed on your system | ||
163 | # Download both the artifact and its ##.asc## counterpart | ||
164 | # Run ##gpg -~-verify -~-keyserver-options auto-key-retrieve=true //artifact-file.jar.asc//## | ||
165 | |||
166 | == ##xwiki-commons## and ##xwiki-rendering## published on the central maven repository == | ||
167 | |||
168 | Starting with this version, [[##xwiki-commons##>>http://repo1.maven.org/maven2/org/xwiki/commons/]] and [[##xwiki-rendering##>>http://repo1.maven.org/maven2/org/xwiki/rendering/]] are deployed on the central maven repository, which makes it easier to reuse modules from these projects inside a third party application, unrelated to XWiki. | ||
169 | |||
170 | == Moved legacy code into separate modules == | ||
171 | |||
172 | By default, the platform is now free of legacy code. Deprecated features have been officially removed, but are still included via aspects for backwards compatibility in the final distribution packages. For each module that had legacy code, there's a corresponding module in ##xwiki-commons-legacy## or ##xwiki-platform-legacy## that generates an extended ##jar## containing the deprecated classes or methods on top of the clean code. | ||
173 | |||
174 | == New location for storing persistent data == | ||
175 | |||
176 | Due to a [[bug>>http://jira.xwiki.org/browse/XWIKI-6959]] in the old core, it was very hard to configure a directory where data could be safely stored. Now, this bug has been fixed, a new [[API>>http://jira.xwiki.org/browse/XWIKI-6957]] for accessing this directory has been introduced, a few components have been updated to use this location, and in the default standalone distribution a new ##data/## directory is configured to store permanent data. | ||
177 | |||
178 | == Deprecated and Retired projects == | ||
179 | |||
180 | The swizzle-based plugin for interacting with Jira has been replaced by a new [[jira module>>extensions:Extension.JIRA Module]] which uses the new REST APIs offered by Jira instead of the deprecated XML-RPC services. | ||
181 | |||
182 | Some deprecated classes/methods have been moved into legacy modules: | ||
183 | |||
184 | * the old [[XWikiCache API>>https://github.com/xwiki/xwiki-platform/tree/xwiki-platform-3.2-rc-1/xwiki-platform-core/xwiki-platform-legacy/xwiki-platform-legacy-oldcore/src/main/java/com/xpn/xwiki/cache]], replaced by the [[cache module>>extensions:Extension.Cache Module]] | ||
185 | * the old [[notification system>>https://github.com/xwiki/xwiki-platform/tree/xwiki-platform-3.2-rc-1/xwiki-platform-core/xwiki-platform-legacy/xwiki-platform-legacy-oldcore/src/main/java/com/xpn/xwiki/notify]], replaced by the [[observation module>>extensions:Extension.Observation Module]] | ||
186 | |||
187 | Several very old and unmaintained projects have been retired: | ||
188 | |||
189 | * [[adwords plugin>>https://github.com/xwiki-contrib/plugin-adwords]] | ||
190 | * [[Albatross skin>>https://github.com/xwiki-contrib/skin-albatross]] | ||
191 | * [[alexa plugin>>https://github.com/xwiki-contrib/plugin-alexa]] | ||
192 | * [[calendar plugin and application>>https://github.com/xwiki-contrib/plugin-calendar]] | ||
193 | * [[exoplatform plugin>>https://github.com/xwiki-contrib/plugin-exoplatform]] | ||
194 | * [[photo album application>>https://github.com/xwiki-contrib/application-photoalbum]] | ||
195 | * [[S5 presentation application>>https://github.com/xwiki-contrib/application-s5]] | ||
196 | * [[workstream application>>https://github.com/xwiki-contrib/application-workstream]] | ||
197 | |||
198 | == Upgrades == | ||
199 | |||
200 | The following dependencies have been upgraded: | ||
201 | |||
202 | * Aether 1.13 | ||
203 | * batik-rasterizer 1.7 | ||
204 | * commons-configuration 1.7 | ||
205 | * commons-lang 3.0.1 | ||
206 | * Doxia 1.2 | ||
207 | * Groovy 1.8.2 | ||
208 | * Hibernate 3.6.7 Final (and related dependencies) | ||
209 | * HTML Cleaner 2.2 | ||
210 | * Jetty 7.4.5 | ||
211 | * jruby 1.6.3 | ||
212 | * Logback 0.9.30 | ||
213 | * Lucene 3.4 | ||
214 | * Reflections 0.9.5 | ||
215 | * Selenium 2.7.0 | ||
216 | * slf4j 1.6.2 | ||
217 | |||
218 | == Miscellaneous == | ||
219 | |||
220 | Besides the major features described above this release brings lots of bug fixes as well as improvements in various domains of XWiki, including the Spotlight search, color theme usage and refreshing. See the release notes for 3.2 [[Milestone 1>>ReleaseNotesXWikiEnterprise32M1]], [[Milestone 2>>ReleaseNotesXWikiEnterprise32M2]], [[Milestone 3>>ReleaseNotesXWikiEnterprise32M3]] and [[Release Candidate 1>>ReleaseNotesXWikiEnterprise32RC1]] for details. | ||
221 | |||
222 | == Translations == | ||
223 | |||
224 | * The following translations have been updated: ##de##, ##fr##, ##it##, ##lv##, ##nl##, ##sv##, ##zh## | ||
225 | |||
226 | = Known issues = | ||
227 | |||
228 | * [[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]] | ||
229 | |||
230 | = Test Report = | ||
231 | |||
232 | You can check the [[manual test report>>TestReports.WebHome#HVersions3.2.x]] to learn about what was tested and the results on various browsers. | ||
233 | |||
234 | = Backward Compatibility and Migration Notes = | ||
235 | |||
236 | == General Notes == | ||
237 | |||
238 | {{warning}} | ||
239 | If you're running in a multiwiki setup you'll also need to define the property //xwiki.store.migration.databases=all// to your //xwiki.cfg// file or explicitly name all databases to be migrated as in //xwiki.store.migration.databases=db1,db2,...//. | ||
240 | {{/warning}} | ||
241 | |||
242 | You may also want to [[import the default wiki XAR>>Main.Download]] in order to benefit from the improvements listed above. | ||
243 | |||
244 | {{warning}} | ||
245 | Always make sure you compare your //xwiki.cfg// file with the newest version since some configuration parameters were added. Note you should add //xwiki.store.migration=1// so that XWiki will attempt to automatically migrate your current database to the new schema. Make sure you backup your Database before doing anything. | ||
246 | {{/warning}} | ||
247 | |||
248 | == Migration Notes == | ||
249 | |||
250 | * removed oscache from the default distribution | ||
251 | |||
252 | == API Breakages == | ||
253 | |||
254 | The following xwiki-core APIs were modified since XWiki Enterprise 3.1: | ||
255 | |||
256 | {{code language="none"}} | ||
257 | TODO | ||
258 | {{/code}} |