Version 8.1 by Marius Dumitru Florea on 2011/03/29

Show last authors
1 {{velocity}}
2 $xwiki.ssx.use("ReleaseNotesXWikiEnterprise30M3")
3 {{/velocity}}
4
5 {{box cssClass="floatinginfobox" title="**Contents**"}}
6 {{toc/}}
7 {{/box}}
8
9 = New and Noteworthy (since XWiki Enterprise 2.7) =
10
11 == Redesign of the Administation Application ==
12
13 == Message Stream ==
14
15 == Dashboard Editing ==
16
17 == Search Live Suggestions ==
18
19 == Gallery Macro and Office Presentation Viewer ==
20
21 == Attachment Selector Macro ==
22
23 == Improved Macro Support in the WYSIWYG Content Editor ==
24
25 == Experimental Filesystem Attachment Storage ==
26
27 == Experimental Extension Manager ==
28
29 == Rendering and Commons Top Level Projects ==
30
31 == Miscellaneous ==
32
33 {{todo}}todo{{/todo}}
34
35 == Translations ==
36
37 * The following translations have been updated: ##ca##, ##cs##, ##de##, ##es##, ##fr##, ##gl##, ##hi##, ##hr##, ##it##, ##lv##, ##nl##, ##no##, ##pl##, ##pt##, ##ro##, ##ru##, ##sk##, ##sv##, ##uk##, ##vi##, ##zh##, ##zh_TW##.
38
39 = Known issues =
40
41 * [[Bugs we know about>>http://jira.xwiki.org/jira/secure/IssueNavigator.jspa?reset=true&&type=1&pid=10010&resolution=-1&sorter/field=updated&sorter/order=DESC]]
42
43 = Test Report =
44
45 You can check the [[manual test report>>TestReports.ManualTestReportXE30]] to learn about what was tested and the results on various browsers.
46
47 = Backward Compatibility and Migration Notes =
48
49 == General Notes ==
50
51 {{warning}}
52 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,...//.
53 {{/warning}}
54
55 You may also want to [[import the default wiki XAR>>Main.Download]] in order to benefit from the improvements listed above.
56
57 {{warning}}
58 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.
59 {{/warning}}
60
61 == Migration Notes ==
62
63 === The Velocity engine was updated to version 1.7 ===
64
65 {{warning}}
66 We upgraded Velocity to version 1.7 which brings several changes that are not backwards compatible.
67 {{/warning}}
68
69 We had to fix the following problems on the velocity code bundled with XWiki Enteprise:
70
71 * Escape quotes in interpolated strings (both ' and ") by doubling them ('' and "") (See [[VELOCITY-555>>https://issues.apache.org/jira/browse/VELOCITY-555]])
72 * [[XABLOG-117>>http://jira.xwiki.org/jira/browse/XABLOG-117]]: Blog application broken under Velocity 1.7
73 * [[XAADMINISTRATION-200>>http://jira.xwiki.org/jira/browse/XAADMINISTRATION-200]]: Configurable sections are broken ("configuration cannot be displayed because it was last edited by Admin who doesn't have permission to edit this page")
74 * [[XE-806>>http://jira.xwiki.org/jira/browse/XE-806]]: Upgrade activity macro to work with velocity 1.7
75
76 ==== Macro evaluation strategy ====
77
78 The main change is that Velocity 1.7 changed the way macro evaluations work. While before it was more flexible with many possible outcomes depending on what parameters were passed, and how they were used inside the macro, the current version simplified a lot the internal logic of variable assignments inside macros, which resulted in a critical regression for us. The same change was introduced between 1.6.0 and 1.6.1, but was reverted in 1.6.2 when we notified them of the regression, with the decision to go further with the change in 1.7.
79
80 To better understand the kind of code that doesn't work, take this example:
81
82 {{code language="none}}
83 #macro(callBySharing $x)
84 #set($x = 'a')
85 #end
86 #set($y = 'y')
87 #callBySharing($y)
88
89 $y -> 'y' in 1.7
90 $y -> 'a' in 1.6.2, 1.6.0 and before)
91 {{/code}}
92
93 But:
94
95 {{code language="none"}}
96 #set($x = 'x')
97 #callBySharing($x)
98
99 $x -> 'a' in all versions
100 {{/code}}
101
102 This means that only macros that are supposed to assign and return a value in one of its formal parameters will stop working, and only when the formal and actual parameters have different names. Macros with signatures like:
103
104 {{code language="none"}}
105 #macro(computeSomething $fromValue1 $fromValue2 $putResultHere)
106 {{/code}}
107
108 The only macro in the global ##macros.vm## that was broken by this change was ###setVariableFromRequest##, which is already fixed in the released version.
109
110 Now there's also a generic ###setVariable ("variableName" $value)## macro which can be used to emulate the call by sharing behavior in custom macros. How to use it:
111
112 Suppose you had a macro like this:
113
114
115 {{code language="none"}}
116 #macro(isBlogGlobal $blogDoc $isGlobal)
117 #set($isGlobal = false)
118 #getBlogProperty($blogDoc 'blogType' '' $discard)
119 #if($discard == 'global')
120 #set($isGlobal = true)
121 #end
122 #end
123 {{/code}}
124
125 Here ##$isGlobal## is the output variable which now doesn't always work. The updated version of the macro can be written as:
126
127 {{code language="none"}}
128 #macro(isBlogGlobal $blogDoc $isGlobal)
129 #set ($result = false)
130 #getBlogProperty($blogDoc 'blogType' '' $discard)
131 #if($discard == 'global')
132 #set($result = true)
133 #end
134 #set ($isGlobal = $util.null)
135 #setVariable ("$isGlobal" $result)
136 #end
137 {{/code}}
138
139 Pay attention to the last two lines in the macro.
140
141 In Velocity, when rendering ##$variable##, where ##$variable## is ##undefined## or ##null##, will cause the variable name to be printed instead. As it happens, when inside a macro, what gets printed is the name of the actual parameter (the one passed in the macro call), and not the formal one (the one declared in the macro definition). So, whenever ##$isGlobal## is rendered as a string, the name of the actual parameter is obtained.
142
143 ###set ($isGlobal = $util.null)## will make sure that no matter what the previous value of the variable was, ##$isGlobal## will be ##null## from this point forward, and ##"$isGlobal"## will output the name of the actual parameter.
144
145 When calling ###setVariable ("$isGlobal" $result)##, the first parameter will contain the name of the actual parameter used when calling ###isBlogGlobal##.
146
147 Inside the ###setVariable## macro, the wanted variable is assigned using ###evaluate##.
148
149 ==== Quotes and apostrophes inside strings ====
150
151 The second change is the escape syntax used inside strings for quotes and apostrophes. While before this used to work:
152
153 {{code language="none"}}
154 {{velocity}}
155 #set ($a = "He said \"maybe\"")
156 $a => He said \"maybe\"
157 {{/velocity}}
158 {{/code}}
159
160 now this snippet would throw an exception. Trying to escape an apostrophe inside an apostrophe-delimited string would have failed even before.
161
162 In Velocity 1.7 it is possible to place both single and double quotes inside a string, by doubling that character. For example:
163
164 {{code language="none"}}
165 {{velocity}}
166 #set ($a = "He said ""maybe""")
167 $a => He said "maybe"
168
169 #set ($b = 'that''s funny')
170 $b => that's funny
171 {{/velocity}}
172 {{/code}}
173
174 === Update dashboard macro calls ===
175
176 Because of the implementation of [[XWIKI-5938>>http://jira.xwiki.org/jira/browse/XWIKI-5938]], when upgrading from 2.x to 3.0, if the dashboard macro was used in its form from 2.5 (with the macro calls in the source of the page), it needs to be manually converted to the objects form.
177
178 {{todo}}Anca, please give more details about the update steps.{{/todo}}
179
180 === Update web.xml ===
181
182 Due to the package rename done for [[XWIKI-6158>>http://jira.xwiki.org/jira/browse/XWIKI-6158]] when upgrading from 2.x to 3.0 you must edit your ##web.xml## file and replace all occurrences of ##com.xpn.xwiki.wysiwyg## with ##org.xwiki.wysiwyg##.
183
184 == API Breakages ==
185
186 The following xwiki-core APIs were modified since XWiki Enterprise 2.7 (API breakages in modules that were moved to Rendering or Commons top level projects are not included):
187
188 {{code language="none"}}
189 ERROR: 8001: org.xwiki.officeimporter.OfficeImporter: Class org.xwiki.officeimporter.OfficeImporter removed
190 ERROR: 8001: org.xwiki.officeimporter.OfficeImporterFilter: Class org.xwiki.officeimporter.OfficeImporterFilter removed
191 ERROR: 7002: org.xwiki.officeimporter.OfficeImporterVelocityBridge: Method 'public java.lang.String getLastErrorMessage()' has been removed
192 ERROR: 7002: org.xwiki.officeimporter.OfficeImporterVelocityBridge: Method 'public boolean importDocument(byte[], java.lang.String, java.lang.String, java.util.Map)' has been removed
193 ERROR: 7002: org.xwiki.officeimporter.builder.PresentationBuilder: Method 'public org.xwiki.officeimporter.document.XDOMOfficeDocument build(java.io.InputStream, java.lang.String)' has been removed
194 ERROR: 7002: org.xwiki.officeimporter.builder.PresentationBuilder: Method 'public org.xwiki.officeimporter.document.XDOMOfficeDocument build(byte[])' has been removed
195 ERROR: 7002: org.xwiki.officeimporter.builder.XDOMOfficeDocumentBuilder: Method 'public org.xwiki.officeimporter.document.XDOMOfficeDocument build(byte[], org.xwiki.bridge.DocumentName, boolean)' has been removed
196 ERROR: 7002: org.xwiki.officeimporter.builder.XHTMLOfficeDocumentBuilder: Method 'public org.xwiki.officeimporter.document.XHTMLOfficeDocument build(byte[], org.xwiki.bridge.DocumentName, boolean)' has been removed
197 ERROR: 7012: org.xwiki.officeimporter.openoffice.OpenOfficeConverter: Method 'public boolean isMediaTypeSupported(java.lang.String)' has been added to an interface
198 ERROR: 8001: org.xwiki.officeimporter.openoffice.OpenOfficeDocumentConverter: Class org.xwiki.officeimporter.openoffice.OpenOfficeDocumentConverter removed
199 ERROR: 7002: org.xwiki.officeimporter.openoffice.OpenOfficeManager: Method 'public org.artofsolving.jodconverter.OfficeDocumentConverter getDocumentConverter()' has been removed
200 ERROR: 7002: org.xwiki.officeimporter.splitter.XDOMOfficeDocumentSplitter: Method 'public java.util.Map split(org.xwiki.officeimporter.document.XDOMOfficeDocument, int[], java.lang.String, org.xwiki.bridge.DocumentName)' has been removed
201 ERROR: 7012: org.xwiki.bridge.DocumentModelBridge: Method 'public org.xwiki.rendering.syntax.Syntax getSyntax()' has been added to an interface
202 ERROR: 7012: org.xwiki.bridge.DocumentModelBridge: Method 'public org.xwiki.rendering.block.XDOM getXDOM()' has been added to an interface
203 ERROR: 7002: org.xwiki.container.Request: Method 'public org.xwiki.url.XWikiURL getURL()' has been removed
204 ERROR: 7002: com.xpn.xwiki.api.XWiki: Method 'public java.lang.Object getExoPortalService(java.lang.String)' has been removed
205 ERROR: 7002: com.xpn.xwiki.api.XWiki: Method 'public java.lang.Object getExoService(java.lang.String)' has been removed
206 ERROR: 7002: com.xpn.xwiki.api.XWiki: Method 'public java.lang.Object getPortalService(java.lang.String)' has been removed
207 ERROR: 7002: com.xpn.xwiki.api.XWiki: Method 'public java.lang.Object getService(java.lang.String)' has been removed
208 ERROR: 7002: com.xpn.xwiki.api.XWikiCompatibilityAspect: Method 'public java.lang.Object ajc$interMethod$com_xpn_xwiki_api_XWikiCompatibilityAspect$com_xpn_xwiki_api_XWiki$getPortalService(com.xpn.xwiki.api.XWiki, java.lang.String)' has been removed
209 ERROR: 7002: com.xpn.xwiki.api.XWikiCompatibilityAspect: Method 'public java.lang.Object ajc$interMethod$com_xpn_xwiki_api_XWikiCompatibilityAspect$com_xpn_xwiki_api_XWiki$getService(com.xpn.xwiki.api.XWiki, java.lang.String)' has been removed
210 ERROR: 7002: com.xpn.xwiki.api.XWikiCompatibilityAspect: Method 'public java.lang.Object ajc$interMethodDispatch1$com_xpn_xwiki_api_XWikiCompatibilityAspect$com_xpn_xwiki_api_XWiki$getPortalService(com.xpn.xwiki.api.XWiki, java.lang.String)' has been removed
211 ERROR: 7002: com.xpn.xwiki.api.XWikiCompatibilityAspect: Method 'public java.lang.Object ajc$interMethodDispatch1$com_xpn_xwiki_api_XWikiCompatibilityAspect$com_xpn_xwiki_api_XWiki$getService(com.xpn.xwiki.api.XWiki, java.lang.String)' has been removed
212 ERROR: 7002: com.xpn.xwiki.pdf.api.PdfExport: Method 'public byte[] convertToStrictXHtml(byte[], com.xpn.xwiki.XWikiContext)' has been removed
213 ERROR: 7002: com.xpn.xwiki.pdf.api.PdfExport: Method 'public java.lang.String convertToStrictXHtml(java.lang.String)' has been removed
214 ERROR: 7002: com.xpn.xwiki.pdf.api.PdfExport: Method 'public byte[] convertXHtmlToXMLFO(byte[], com.xpn.xwiki.XWikiContext)' has been removed
215 ERROR: 7002: com.xpn.xwiki.pdf.api.PdfExport: Method 'public java.lang.String convertXHtmlToXMLFO(java.lang.String, com.xpn.xwiki.XWikiContext)' has been removed
216 ERROR: 7005: com.xpn.xwiki.pdf.api.PdfExport: Parameter 3 of 'public void export(com.xpn.xwiki.doc.XWikiDocument, java.io.OutputStream, int, com.xpn.xwiki.XWikiContext)' has changed its type to com.xpn.xwiki.pdf.api.PdfExport$ExportType
217 ERROR: 7005: com.xpn.xwiki.pdf.api.PdfExport: Parameter 3 of 'public void exportHtml(java.lang.String, java.io.OutputStream, int, com.xpn.xwiki.XWikiContext)' has changed its type to com.xpn.xwiki.pdf.api.PdfExport$ExportType
218 ERROR: 7002: com.xpn.xwiki.pdf.api.PdfExport: Method 'public void exportXHtml(byte[], java.io.OutputStream, int, com.xpn.xwiki.XWikiContext)' has been removed
219 {{/code}}
220
221 The following XWiki GWT APIs were modified since XWiki Enterprise 2.7:
222
223 {{code language="none"}}
224 ERROR: 6011: org.xwiki.gwt.user.client.ui.rta.RichTextArea: Field DISABLED has been removed, but it was previously a constant
225 ERROR: 7002: org.xwiki.gwt.wysiwyg.client.RichTextEditorController: Method 'protected void initTextArea()' has been removed
226 ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String gadget()' has been added to an interface
227 ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String gadgetEditDialogCaption()' has been added to an interface
228 ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String gadgetInsertActionLabel()' has been added to an interface
229 ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String gadgetInsertDialogCaption()' has been added to an interface
230 ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String gadgetInsertDialogTitle()' has been added to an interface
231 ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String gadgetNoGadgetSelected()' has been added to an interface
232 ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String gadgetTitleDescription()' has been added to an interface
233 ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String gadgetTitleLabel()' has been added to an interface
234 ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String macroCollapseAllShortcutKeyLabel()' has been added to an interface
235 ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String macroCollapseShortcutKeyLabel()' has been added to an interface
236 ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String macroEditShortcutKeyLabel()' has been added to an interface
237 ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String macroExpandAllShortcutKeyLabel()' has been added to an interface
238 ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String macroExpandShortcutKeyLabel()' has been added to an interface
239 ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String macroInsertShortcutKeyLabel()' has been added to an interface
240 ERROR: 7012: org.xwiki.gwt.wysiwyg.client.Strings: Method 'public java.lang.String macroRefreshShortcutKeyLabel()' has been added to an interface
241 ERROR: 8001: org.xwiki.gwt.wysiwyg.client.plugin.Plugin: Class org.xwiki.gwt.wysiwyg.client.plugin.Plugin removed
242 ERROR: 8001: org.xwiki.gwt.wysiwyg.client.plugin.PluginFactory: Class org.xwiki.gwt.wysiwyg.client.plugin.PluginFactory removed
243 ERROR: 8001: org.xwiki.gwt.wysiwyg.client.plugin.PluginFactoryManager: Class org.xwiki.gwt.wysiwyg.client.plugin.PluginFactoryManager removed
244 ERROR: 8001: org.xwiki.gwt.wysiwyg.client.plugin.PluginManager: Class org.xwiki.gwt.wysiwyg.client.plugin.PluginManager removed
245 ERROR: 8001: org.xwiki.gwt.wysiwyg.client.plugin.UIExtension: Class org.xwiki.gwt.wysiwyg.client.plugin.UIExtension removed
246 ERROR: 6011: org.xwiki.gwt.wysiwyg.client.plugin.color.ColorCell: Field SELECTED_STYLE_NAME has been removed, but it was previously a constant
247 ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.color.ColorPicker: Method 'public java.lang.String convertToHex(java.lang.String)' has been removed
248 ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.color.ColorPlugin: Method 'protected org.xwiki.gwt.user.client.ui.rta.cmd.Executable getBackColorExecutable()' has been removed
249 ERROR: 8001: org.xwiki.gwt.wysiwyg.client.plugin.color.MozillaColorPlugin: Class org.xwiki.gwt.wysiwyg.client.plugin.color.MozillaColorPlugin removed
250 ERROR: 8001: org.xwiki.gwt.wysiwyg.client.plugin.color.exec.BackColorExecutable: Class org.xwiki.gwt.wysiwyg.client.plugin.color.exec.BackColorExecutable removed
251 ERROR: 8001: org.xwiki.gwt.wysiwyg.client.plugin.color.exec.HiliteColorExecutable: Class org.xwiki.gwt.wysiwyg.client.plugin.color.exec.HiliteColorExecutable removed
252 ERROR: 7004: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroDisplayer: In method 'public MacroDisplayer()' the number of arguments has changed
253 ERROR: 7004: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroDisplayer: In method 'protected org.xwiki.gwt.dom.client.Element createReadOnlyBox()' the number of arguments has changed
254 ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroDisplayer: Method 'protected java.lang.String getMacroContainerTagName()' has been removed
255 ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroDisplayer: Method 'public void setTextArea(org.xwiki.gwt.user.client.ui.rta.RichTextArea)' has been removed
256 ERROR: 4001: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroPlugin: Removed com.google.gwt.event.dom.client.DoubleClickHandler from the set of implemented interfaces
257 ERROR: 4001: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroPlugin: Removed com.google.gwt.event.shared.EventHandler from the set of implemented interfaces
258 ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroPlugin: Method 'public void onDoubleClick(com.google.gwt.event.dom.client.DoubleClickEvent)' has been removed
259 ERROR: 4001: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroSelector: Removed com.google.gwt.event.dom.client.MouseDownHandler from the set of implemented interfaces
260 ERROR: 7002: org.xwiki.gwt.wysiwyg.client.plugin.macro.MacroSelector: Method 'public void onMouseDown(com.google.gwt.event.dom.client.MouseDownEvent)' has been removed
261 ERROR: 8001: org.xwiki.gwt.wysiwyg.client.plugin.submit.exec.EnableExecutable: Class org.xwiki.gwt.wysiwyg.client.plugin.submit.exec.EnableExecutable removed
262 ERROR: 8001: org.xwiki.gwt.wysiwyg.client.plugin.submit.exec.ResetExecutable: Class org.xwiki.gwt.wysiwyg.client.plugin.submit.exec.ResetExecutable removed
263 ERROR: 7004: org.xwiki.gwt.wysiwyg.client.wiki.WikiService: In method 'public java.util.List getMatchingPages(java.lang.String, int, int)' the number of arguments has changed
264 ERROR: 7004: org.xwiki.gwt.wysiwyg.client.wiki.WikiService: In method 'public java.util.List getRecentlyModifiedPages(int, int)' the number of arguments has changed
265 ERROR: 7004: org.xwiki.gwt.wysiwyg.client.wiki.WikiServiceAsync: In method 'public void getMatchingPages(java.lang.String, int, int, com.google.gwt.user.client.rpc.AsyncCallback)' the number of arguments has changed
266 ERROR: 7004: org.xwiki.gwt.wysiwyg.client.wiki.WikiServiceAsync: In method 'public void getRecentlyModifiedPages(int, int, com.google.gwt.user.client.rpc.AsyncCallback)' the number of arguments has changed
267 ERROR: 7004: org.xwiki.gwt.wysiwyg.client.wiki.WikiServiceAsyncCacheProxy: In method 'public void getMatchingPages(java.lang.String, int, int, com.google.gwt.user.client.rpc.AsyncCallback)' the number of arguments has changed
268 ERROR: 7004: org.xwiki.gwt.wysiwyg.client.wiki.WikiServiceAsyncCacheProxy: In method 'public void getRecentlyModifiedPages(int, int, com.google.gwt.user.client.rpc.AsyncCallback)' the number of arguments has changed
269 ERROR: 6004: org.xwiki.gwt.dom.client.Style: Changed type of field BACKGROUND_COLOR from java.lang.String to org.xwiki.gwt.dom.client.Property
270 {{/code}}

Get Connected