Version 6.4 by Sergiu Dumitriu on 2011/01/21

Show last authors
1 {{box cssClass="floatinginfobox" title="**Contents**"}}
2 {{toc/}}
3 {{/box}}
4
5 First milestone of the XWiki Enterprise 3.0 version ([[Roadmap>>Main.Roadmap]]).
6
7 = New and Noteworthy (since XWiki Enterprise 2.7) =
8
9 == ColorTheme improvements ==
10
11 "Add" menu entry can now be customizable from the ColorTheme wizard and has it's own variable.
12
13 [[image:AddCustomization.png||style="border:1px solid black"]]
14
15 Also, info, success, warning and error message colors can now be changed through ColorThemes variables.
16
17 == General UI improvements ==
18
19 Several XWiki forms have been modified in order to be consistent with our [[Vertical Layout Usage Form Standard>>platform:DevGuide.VerticalForms]]
20
21 [[image:copy.png||style="border:1px solid black"]]
22
23 * Standardized vertical navigation menu layout, which will be used in M2 in administration, user profiles, and in the wiki index
24 * Colibri is now the default base skin instead of Albatross
25 * XWIKI-5859: Ability to have different panels in wiki and WYSIWYG edit modes
26
27 == WYSIWYG content editor improvements ==
28
29 * Better support for Opera, Chrome and Safari
30 * Fixed several usability bugs
31
32 == PDF export improvements ==
33
34 * XWIKI-5782: PDF export ordered lists are not numbered in the same way as the wiki lists
35 * XWIKI-5799: Underlined text has some additional white space before it when export to PDF
36 * XWIKI-5844: PDF export sometimes broken when copy/pasting content from MS Office
37
38 == Miscellaneous ==
39
40 * Lucene search improvements
41 * Enable preview office feature for all formats supporting by OpenOffice (especially docx, xlsx, pdf, pptx, odf, ods, odp)
42 * Activity stream performance improvements and bug fixes
43 * XAR import improvements (XWIKI-5845, XWIKI-5846)
44 * Several macros transformed into Gadgets
45
46 == For developers ==
47
48 * XWIKI-2496: Specialized AppServerTrusted authenticator handling Kerberos principals
49 * XWIKI-5758: Remove logging to the xwiki.log file in the log4j default configuration
50 * XWIKI-5868: Add API for manipulating skin extensions as components
51 * XWIKI-5810: Allow skin customization based on the current space name
52 * XWIKI-5815: Add a Context macro
53 * XWIKI-5900: Generic macro for displaying vertical navigation menus
54 * XWIKI-5874: Add API to display document's titles in plain text without any markup
55 * XWIKI-5819: Now the limit for nested macro calls is 100 instead of the default 20 (affects the limit of chained comment replies)
56 * Various upgrades: Velocity 1.7, Prototype.js 1.7, Jython 2.5.2rc2, Groovy 1.7.6, GWT 2.1.1, JRuby 1.5.6
57
58 == Translations ==
59
60 * The following translations have been updated: ##de##, ##fr##, ##lv##, ##ru##, ##sv##
61
62 = Known issues =
63
64 * [[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]]
65
66 = Backward Compatibility and Migration Notes =
67
68 == The Velocity engine was updated to version 1.7 ==
69
70 {{warning}}
71 We upgraded Velocity to version 1.7 which brings several changes that are not backwards compatible.
72 {{/warning}}
73
74 We had to fix the following problems on the velocity code bundled with XWiki Enteprise:
75
76 * Escape quotes in interpolated strings (both ' and ") by doubling them ('' and "") (See [[VELOCITY-555>>https://issues.apache.org/jira/browse/VELOCITY-555]])
77 * [[XABLOG-117>>http://jira.xwiki.org/jira/browse/XABLOG-117]]: Blog application broken under Velocity 1.7
78 * [[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")
79 * [[XE-806>>http://jira.xwiki.org/jira/browse/XE-806]]: Upgrade activity macro to work with velocity 1.7
80
81 === Macro evaluation strategy ===
82
83 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.
84
85 To better understand the kind of code that doesn't work, take this example:
86
87 {{code language="none}}
88 #macro(callBySharing $x)
89 #set($x = 'a')
90 #end
91 #set($y = 'y')
92 #callBySharing($y)
93
94 $y -> 'y' in 1.7
95 $y -> 'a' in 1.6.2, 1.6.0 and before)
96 {{/code}}
97
98 But:
99
100 {{code language="none"}}
101 #set($x = 'x')
102 #callBySharing($x)
103
104 $x -> 'a' in all versions
105 {{/code}}
106
107 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:
108
109 {{code language="none"}}
110 #macro(computeSomething $fromValue1 $fromValue2 $putResultHere)
111 {{/code}}
112
113 The only macro in the global ##macros.vm## that was broken by this change was ###setVariableFromRequest##, which is already fixed in the released version.
114
115 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:
116
117 Suppose you had a macro like this:
118
119
120 {{code language="none"}}
121 #macro(isBlogGlobal $blogDoc $isGlobal)
122 #set($isGlobal = false)
123 #getBlogProperty($blogDoc 'blogType' '' $discard)
124 #if($discard == 'global')
125 #set($isGlobal = true)
126 #end
127 #end
128 {{/code}}
129
130 Here ##$isGlobal## is the output variable which now doesn't always work. The updated version of the macro can be written as:
131
132 {{code language="none"}}
133 #macro(isBlogGlobal $blogDoc $isGlobal)
134 #set ($result = false)
135 #getBlogProperty($blogDoc 'blogType' '' $discard)
136 #if($discard == 'global')
137 #set($result = true)
138 #end
139 #set ($isGlobal = $util.null)
140 #setVariable ("$isGlobal" $result)
141 #end
142 {{/code}}
143
144 Pay attention to the last two lines in the macro.
145
146 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.
147
148 ###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.
149
150 When calling ###setVariable ("$isGlobal" $result)##, the first parameter will contain the name of the actual parameter used when calling ###isBlogGlobal##.
151
152 Inside the ###setVariable## macro, the wanted variable is assigned using ###evaluate##.
153
154 === Quotes and apostrophes inside strings ===
155
156 The second change is the escape syntax used inside strings for quotes and apostrophes. While before this used to work:
157
158 {{code language="none"}}
159 {{velocity}}
160 #set ($a = "He said \"maybe\"")
161 $a => He said \"maybe\"
162 {{/velocity}}
163 {{/code}}
164
165 now this snippet would throw an exception. Trying to escape an apostrophe inside an apostrophe-delimited string would have failed even before.
166
167 In Velocity 1.7 it is possible to place both single and double quotes inside a string, by doubling that character. For example:
168
169 {{code language="none"}}
170 {{velocity}}
171 #set ($a = "He said ""maybe""")
172 $a => He said "maybe"
173
174 #set ($b = 'that''s funny')
175 $b => that's funny
176 {{/velocity}}
177 {{/code}}
178
179 == General Notes ==
180
181 {{warning}}
182 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,...//.
183 {{/warning}}
184
185 You may also want to [[import the default wiki XAR>>Main.Download]] in order to benefit from the improvements listed above.
186
187 {{warning}}
188 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.
189 {{/warning}}
190
191 == API Breakages ==
192
193 The following APIs were modified since XWiki Enterprise 2.7:
194
195 {{code language="none"}}
196 ERROR: 7006: org.xwiki.rendering.macro.box.AbstractBoxMacro: Return type of method 'protected org.xwiki.rendering.internal.macro.box.MacroContentParser getMacroContentParser()' has been changed to org.xwiki.rendering.internal.macro.MacroContentParser
197 ERROR: 8001: org.xwiki.rendering.block.AbstractFatherBlock: Class org.xwiki.rendering.block.AbstractFatherBlock removed
198 ERROR: 7012: org.xwiki.rendering.block.Block: Method 'public java.lang.String getParameter(java.lang.String)' has been added to an interface
199 ERROR: 7012: org.xwiki.rendering.block.Block: Method 'public java.util.Map getParameters()' has been added to an interface
200 ERROR: 7012: org.xwiki.rendering.block.Block: Method 'public void setParameter(java.lang.String, java.lang.String)' has been added to an interface
201 ERROR: 7012: org.xwiki.rendering.block.Block: Method 'public void setParameters(java.util.Map)' has been added to an interface
202 ERROR: 4001: org.xwiki.rendering.block.BulletedListBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
203 ERROR: 5001: org.xwiki.rendering.block.BulletedListBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
204 ERROR: 4001: org.xwiki.rendering.block.DefinitionDescriptionBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
205 ERROR: 5001: org.xwiki.rendering.block.DefinitionDescriptionBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
206 ERROR: 4001: org.xwiki.rendering.block.DefinitionListBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
207 ERROR: 5001: org.xwiki.rendering.block.DefinitionListBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
208 ERROR: 4001: org.xwiki.rendering.block.DefinitionTermBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
209 ERROR: 5001: org.xwiki.rendering.block.DefinitionTermBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
210 ERROR: 8001: org.xwiki.rendering.block.FatherBlock: Class org.xwiki.rendering.block.FatherBlock removed
211 ERROR: 4001: org.xwiki.rendering.block.FormatBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
212 ERROR: 5001: org.xwiki.rendering.block.FormatBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
213 ERROR: 4001: org.xwiki.rendering.block.GroupBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
214 ERROR: 5001: org.xwiki.rendering.block.GroupBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
215 ERROR: 4001: org.xwiki.rendering.block.HeaderBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
216 ERROR: 5001: org.xwiki.rendering.block.HeaderBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
217 ERROR: 4001: org.xwiki.rendering.block.LinkBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
218 ERROR: 5001: org.xwiki.rendering.block.LinkBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
219 ERROR: 4001: org.xwiki.rendering.block.ListItemBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
220 ERROR: 5001: org.xwiki.rendering.block.ListItemBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
221 ERROR: 4001: org.xwiki.rendering.block.MacroMarkerBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
222 ERROR: 5001: org.xwiki.rendering.block.MacroMarkerBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
223 ERROR: 4001: org.xwiki.rendering.block.NumberedListBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
224 ERROR: 5001: org.xwiki.rendering.block.NumberedListBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
225 ERROR: 4001: org.xwiki.rendering.block.ParagraphBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
226 ERROR: 5001: org.xwiki.rendering.block.ParagraphBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
227 ERROR: 4001: org.xwiki.rendering.block.QuotationBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
228 ERROR: 5001: org.xwiki.rendering.block.QuotationBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
229 ERROR: 4001: org.xwiki.rendering.block.QuotationLineBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
230 ERROR: 5001: org.xwiki.rendering.block.QuotationLineBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
231 ERROR: 4001: org.xwiki.rendering.block.SectionBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
232 ERROR: 5001: org.xwiki.rendering.block.SectionBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
233 ERROR: 4001: org.xwiki.rendering.block.TableBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
234 ERROR: 5001: org.xwiki.rendering.block.TableBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
235 ERROR: 4001: org.xwiki.rendering.block.TableCellBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
236 ERROR: 5001: org.xwiki.rendering.block.TableCellBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
237 ERROR: 4001: org.xwiki.rendering.block.TableHeadCellBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
238 ERROR: 5001: org.xwiki.rendering.block.TableHeadCellBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
239 ERROR: 4001: org.xwiki.rendering.block.TableRowBlock: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
240 ERROR: 5001: org.xwiki.rendering.block.TableRowBlock: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
241 ERROR: 4001: org.xwiki.rendering.block.XDOM: Removed org.xwiki.rendering.block.FatherBlock from the set of implemented interfaces
242 ERROR: 5001: org.xwiki.rendering.block.XDOM: Removed org.xwiki.rendering.block.AbstractFatherBlock from the list of superclasses
243 ERROR: 7002: org.xwiki.rendering.syntax.SyntaxType: Method 'public java.lang.String toIdString()' has been removed
244 ERROR: 7012: org.xwiki.bridge.DocumentModelBridge: Method 'public org.xwiki.rendering.syntax.Syntax getSyntax()' has been added to an interface
245 ERROR: 7005: org.xwiki.properties.ConverterManager: Parameter 1 of 'public java.lang.Object convert(java.lang.Class, java.lang.Object)' has changed its type to java.lang.reflect.Type
246 ERROR: 7012: org.xwiki.properties.PropertyDescriptor: Method 'public java.lang.reflect.Type getPropertyType()' has been added to an interface
247 ERROR: 7005: org.xwiki.properties.converter.AbstractConverter: Parameter 1 of 'public java.lang.Object convert(java.lang.Class, java.lang.Object)' has changed its type to java.lang.reflect.Type
248 ERROR: 7005: org.xwiki.properties.converter.Converter: Parameter 1 of 'public java.lang.Object convert(java.lang.Class, java.lang.Object)' has changed its type to java.lang.reflect.Type
249 ERROR: 7012: org.xwiki.officeimporter.openoffice.OpenOfficeConverter: Method 'public boolean isMediaTypeSupported(java.lang.String)' has been added to an interface
250 {{/code}}

Get Connected