Wiki source code of Release Notes for XWiki Enterprise 2.4
Last modified by Thomas Mortagne on 2023/10/13
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | = XWiki Enterprise 2.4 Release Notes = | ||
2 | |||
3 | {{box cssClass="floatinginfobox" title="**Contents**"}} | ||
4 | {{toc/}} | ||
5 | {{/box}} | ||
6 | |||
7 | = New and Noteworthy = | ||
8 | |||
9 | == Search == | ||
10 | |||
11 | === Changed default search engine === | ||
12 | |||
13 | Lucene Search is promoted as default search. While there might still be problems, which are normally resolved by rebuilding the index, Lucene allows more powerful searches, and better ordering of the results. | ||
14 | |||
15 | image:searchlucene.png | ||
16 | |||
17 | To read about the benefits of using Lucene search over Database search go to the [[search application page>>extensions:Extension.Search Application]]. | ||
18 | |||
19 | Starting with the 2.4 release you can select the wikis where to search in using the LuceneSearch page. | ||
20 | |||
21 | [[image:wikiselection.png||style="border:1px solid black;"]] | ||
22 | |||
23 | === New search configuration UI === | ||
24 | |||
25 | image:searchadministration.png | ||
26 | |||
27 | The Search Application now has a dedicated section in the wiki administration section from which you can: | ||
28 | |||
29 | * Choose the default engine (Lucene or Database). | ||
30 | * See the status for the Lucene Search: the number of indexed elements and the number of elements waiting in the queue. | ||
31 | * Control the Lucene index by indexing the whole farm, indexing the wiki or customizing the index to your specific preferences. | ||
32 | |||
33 | For more information check out the [[documentation page>>extensions:Extension.Search Application]]. | ||
34 | |||
35 | == New Template-based page creation == | ||
36 | |||
37 | Starting with XWiki Enterprise 2.4 users and applications can provide documents that can be used as template when creating new pages. The new document (content, objects and other metadata) will be replicated from the template. | ||
38 | |||
39 | * After you have [[created the template and the template provider>>extensions:Extension.Administration Application#HEasyTemplatesCreationandAdministration28StartingwithXWikiEnterprise2.4M229]] you can then start creating pages from this template: | ||
40 | |||
41 | image:1gcreatedocument.jpg | ||
42 | |||
43 | * "Wanted Links" also offers the choice to create the new document from the available templates ( "My Template" template in the image below): | ||
44 | |||
45 | image:1ipopup.jpg | ||
46 | |||
47 | Find more details about the template creation and administration on the [[documentation page>>extensions:Extension.Administration Application#HEasyTemplatesCreationandAdministration28StartingwithXWikiEnterprise2.4M229]]. | ||
48 | |||
49 | == New Invitation Manager application == | ||
50 | |||
51 | The Invitation Manager application allows users to send emails, inviting friends and colleagues to join a wiki. You will be able to configure your wiki to send emails through an open mail relay on the server or through an email account of your choosing. | ||
52 | |||
53 | image:InvitationSending.png | ||
54 | |||
55 | Read more about this application and learn how to configure it by visiting the [[application page>>extensions:Extension.Invitation Application]]. | ||
56 | |||
57 | == WYSIWYG improvements == | ||
58 | |||
59 | === Insert external image === | ||
60 | |||
61 | You can now insert an external image in the edited page while in WYSIWYG mode. The external image is specified by its location on the web, i.e. its URL. To do this go to //Image > Insert Image...// menu and select the //External// tab: | ||
62 | |||
63 | image:XWIKI-5202.png | ||
64 | |||
65 | === Insert macros === | ||
66 | |||
67 | You may insert macros with a single click from the tool bar: | ||
68 | |||
69 | [[image:insertMacroFromToolBar.png]] | ||
70 | |||
71 | === Paste with filtered styles === | ||
72 | |||
73 | A //paste with filtered styles// button has also been added to the tool bar: | ||
74 | |||
75 | [[image:pasteIconOnToolBar.png]] | ||
76 | |||
77 | The Wysiwyg editor import from office feature now filters style by default. | ||
78 | |||
79 | == Objects and classes editor improvements == | ||
80 | |||
81 | The object and class editor are now fully panel-less, which among other things means that you have the full object/class editors UI even in an empty wiki without having to import the needed XE xar. | ||
82 | |||
83 | [[image:objecteditor.png||style="border:1px solid black;" width="500"]] | ||
84 | |||
85 | Adding objects or class properties is done with AJAX calls, which means faster response times, no interruptions, no data loss. | ||
86 | |||
87 | The class editor also adds better refactoring capabilities: | ||
88 | |||
89 | * Reorder class properties | ||
90 | * Delete a class property | ||
91 | * Selectively disable and re-enable class properties, which allows making pseudo-read-only properties | ||
92 | |||
93 | [[image:classeditor.png||style="border:1px solid black;" width="500"]] | ||
94 | |||
95 | There are also many other small ergonomics improvements to discover. | ||
96 | |||
97 | == JMX Administration Console == | ||
98 | |||
99 | * XWiki is now using [[JMX to provide runtime Monitoring information>>Documentation.AdminGuide.Monitoring]]. | ||
100 | * The first usage implemented is about monitoring the JBoss cache and the Velocity Macro caches, as shown below: | ||
101 | |||
102 | image:Documentation.AdminGuide.Monitoring@jconsole1.png | ||
103 | |||
104 | == Watchlist improvements == | ||
105 | |||
106 | * Allow to remove elements in the watchlist from the user profile | ||
107 | * In virtual mode, added a wikis section in //elements in your watchlist// | ||
108 | |||
109 | [[image:watchlist.png||style="border:1px solid black;"]] | ||
110 | |||
111 | == Rendering cache == | ||
112 | |||
113 | You can now provide a list of pages for which to cache the result. See the ##core.renderingcache.*## properties in ##xwiki.properties## to control it. | ||
114 | |||
115 | It's also possible to force a page to refresh by using ##refresh=1## parameter in the URL. | ||
116 | |||
117 | == New Code macro configuration == | ||
118 | |||
119 | It's now possible to indicate which Pygments style to use with the default highlighter based on Pygments. | ||
120 | |||
121 | See [[the code macro documentation>>extensions:Extension.Code Macro]] for more details. | ||
122 | |||
123 | == Security improvements == | ||
124 | |||
125 | * Added support for HttpOnly flag for session cookies (XSS protection measure) | ||
126 | * Fixed some XSS issues | ||
127 | * Improved file access sandboxing | ||
128 | |||
129 | == Performance improvements == | ||
130 | |||
131 | * Scripts are //defered// by default, which means that ##<script>## tags will no longer block the page loading until the scripts are downloaded and executed, but will be downloaded in parallel and executed after the full DOM was loaded, right before the document becomes //ready//. | ||
132 | |||
133 | {{warning}}This is an important change which might break the functionality of custom scripts. Since pulled scripts are executed after the full DOM was loaded, scripts that expect to be executed in place, for example scripts that use ##document.write##, or inline scripts which expect a JS library to be loaded, will fail, or might even make the document unusable. You can instruct the skin extension manager not to ##defer## problematic scripts, using, for example. ##$xwiki.ssx.use('Some.Extension', {'defer': false}##, but a better solution is to fix the code so that it works when being defered.{{/warning}} | ||
134 | |||
135 | == Chart macro improvements == | ||
136 | |||
137 | * Chart macro now supports more than 26 columns. | ||
138 | |||
139 | == Script improvements == | ||
140 | |||
141 | * Make the Query Manager use the Script Service to expose services to scripts. See [[Query Guide>>Documentation.DevGuide.QueryGuide]] for more details. | ||
142 | * Make possible to directly return the Block based result of a script macro. It's supported for all JSR 223 macro which means all script macro script Velocity macro for now. See [[Script Macro>>extensions:Extension.Script Macro]] for more details. | ||
143 | * Prevent nested script macros by default: It's now impossible for the output of a script macro to become another script macro for security reasons. See [[Script Macro>>extensions:Extension.Script Macro]] for more details. | ||
144 | * Provide a way to escape regexp literal string from velocity | ||
145 | {{code language="none"}}$regextool.quote("some[literal]text"){{/code}} | ||
146 | |||
147 | == Javascript improvements == | ||
148 | |||
149 | * Start writing a Javascript mirror of the XWiki data model: ##Document.getURL## | ||
150 | * New ##suggestDocuments## behavior for input fields | ||
151 | |||
152 | == REST improvements == | ||
153 | |||
154 | * Isolate REST API JAXB model classes in a separate module | ||
155 | |||
156 | == Dependencies upgrade == | ||
157 | |||
158 | * Doxia 1.1.3 | ||
159 | * JODConverter 3.0 beta3 | ||
160 | * JBossCache 3.2.5.GA | ||
161 | * Groovy 1.7.3 | ||
162 | * Script.aculo.us 1.8.3 | ||
163 | * Jython 2.5.2b1 | ||
164 | * Hibernate Validator 4.0.2 | ||
165 | * JGroups 2.8 | ||
166 | * JFreeChart 1.0.13 | ||
167 | |||
168 | == Translations == | ||
169 | |||
170 | * WYSIWYG newly supported language: Russian | ||
171 | * All the translations have been updated | ||
172 | |||
173 | = Known issues = | ||
174 | |||
175 | * [[Bugs we know about>>https://jira.xwiki.org/secure/IssueNavigator.jspa?reset=true&jqlQuery=category+in+%28%22XWiki.org+Top+Level+Projects%22%2C+%22XWiki+Plugins%2C+Applications+%26+Skins%22%29+AND+issuetype+%3D+Bug+AND+resolution+%3D+Unresolved+ORDER+BY+updated+DESC]] | ||
176 | |||
177 | = Backward Compatibility and Migration Notes = | ||
178 | |||
179 | == Important non-compatible changes == | ||
180 | |||
181 | {{warning}} | ||
182 | ERROR: org.xwiki.bridge.DocumentAccessBridge: Method 'public void setCurrentUser(java.lang.String)' has been added to an interface | ||
183 | ERROR: org.xwiki.officeimporter.openoffice.OpenOfficeManager: Return type of method 'public net.sf.jodconverter.OfficeDocumentConverter getDocumentConverter()' has been changed to org.artofsolving.jodconverter.OfficeDocumentConverter | ||
184 | ERROR: org.xwiki.query.xwql.AliasGenerator: Class org.xwiki.query.xwql.AliasGenerator removed | ||
185 | ERROR: org.xwiki.query.xwql.InvalidQueryException: Class org.xwiki.query.xwql.InvalidQueryException removed | ||
186 | ERROR: org.xwiki.query.xwql.QueryAnalizer: Class org.xwiki.query.xwql.QueryAnalizer removed | ||
187 | ERROR: org.xwiki.query.xwql.QueryContext: Class org.xwiki.query.xwql.QueryContext removed | ||
188 | ERROR: org.xwiki.query.xwql.QueryContext$DocumentInfo: Class org.xwiki.query.xwql.QueryContext$DocumentInfo removed | ||
189 | ERROR: org.xwiki.query.xwql.QueryContext$ObjectInfo: Class org.xwiki.query.xwql.QueryContext$ObjectInfo removed | ||
190 | ERROR: org.xwiki.query.xwql.QueryContext$PropertyInfo: Class org.xwiki.query.xwql.QueryContext$PropertyInfo removed | ||
191 | ERROR: org.xwiki.query.xwql.QueryTranslator: Class org.xwiki.query.xwql.QueryTranslator removed | ||
192 | ERROR: org.xwiki.query.xwql.XWQLQueryExecutor: Class org.xwiki.query.xwql.XWQLQueryExecutor removed | ||
193 | ERROR: org.xwiki.query.xwql.hql.ObjectPrinter: Class org.xwiki.query.xwql.hql.ObjectPrinter removed | ||
194 | ERROR: org.xwiki.query.xwql.hql.Printer: Class org.xwiki.query.xwql.hql.Printer removed | ||
195 | ERROR: org.xwiki.query.xwql.hql.PropertyPrinter: Class org.xwiki.query.xwql.hql.PropertyPrinter removed | ||
196 | ERROR: org.xwiki.query.xwql.hql.TreePrinter: Class org.xwiki.query.xwql.hql.TreePrinter removed | ||
197 | ERROR: org.xwiki.query.xwql.hql.XWQLtoHQLTranslator: Class org.xwiki.query.xwql.hql.XWQLtoHQLTranslator removed | ||
198 | ERROR: org.xwiki.query.jpql.JPQLParser: Class org.xwiki.query.jpql.JPQLParser removed | ||
199 | ERROR: org.xwiki.velocity.VelocityEngine: Method 'public void clearMacroNamespace(java.lang.String)' has been added to an interface | ||
200 | ERROR: org.xwiki.velocity.VelocityEngine: Method 'public void startedUsingMacroNamespace(java.lang.String)' has been added to an interface | ||
201 | ERROR: org.xwiki.velocity.VelocityEngine: Method 'public void stoppedUsingMacroNamespace(java.lang.String)' has been added to an interface | ||
202 | ERROR: org.xwiki.model.ModelContext: Method 'public void setCurrentEntityReference(org.xwiki.model.reference.EntityReference)' has been added to an interface | ||
203 | ERROR: org.xwiki.rendering.scaffolding.RenderingTestCase: In method 'public RenderingTestCase(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, boolean)' the number of arguments has changed | ||
204 | ERROR: org.xwiki.rendering.listener.DefaultAttachement: Class org.xwiki.rendering.listener.DefaultAttachement removed | ||
205 | ERROR: org.xwiki.rendering.transformation.MacroTransformationContext: Method 'public org.xwiki.rendering.internal.transformation.MacroTransformation getMacroTransformation()' has been removed | ||
206 | ERROR: org.xwiki.rendering.transformation.MacroTransformationContext: Method 'public void setMacroTransformation(org.xwiki.rendering.internal.transformation.MacroTransformation)' has been removed | ||
207 | ERROR: org.xwiki.rendering.transformation.Transformation: Method 'public void transform(org.xwiki.rendering.block.Block, org.xwiki.rendering.transformation.TransformationContext)' has been added to an interface | ||
208 | ERROR: org.xwiki.rendering.transformation.TransformationManager: Method 'public void performTransformations(org.xwiki.rendering.block.Block, org.xwiki.rendering.transformation.TransformationContext)' has been added to an interface | ||
209 | ERROR: org.xwiki.rendering.macro.script.AbstractJSR223ScriptMacro: Method 'protected java.lang.String evaluate(org.xwiki.rendering.macro.script.JSR223ScriptMacroParameters, java.lang.String, org.xwiki.rendering.transformation.MacroTransformationContext)' has been removed | ||
210 | {{/warning}} | ||
211 | |||
212 | === Pulled scripts are defered by default === | ||
213 | |||
214 | This might break custom scripts, please check the correct behavior before upgrading a production server. Use Firebug in Firefox to catch errors, watch the error console, configure IE to notify all script errors. | ||
215 | |||
216 | === Nested script macros are forbidden === | ||
217 | |||
218 | Now it's impossible to nest scripting macros, which is a good protection against many potential attacks. While the obvious case of direct nesting is easy to notice, there are other cases which are not as obvious: | ||
219 | |||
220 | {{code}} | ||
221 | {{velocity}} | ||
222 | {{include document="Some Document With Scripts" /}} | ||
223 | {{/velocity}} | ||
224 | {{/code}} | ||
225 | |||
226 | If the included document contains script macros, they will no longer be executed. | ||
227 | |||
228 | {{code}} | ||
229 | {{velocity}} | ||
230 | $doc.display('someProperty') | ||
231 | {{/velocity}} | ||
232 | {{/code}} | ||
233 | |||
234 | If the property contains script macros, for example in the content of a blog post, they will no longer be executed. | ||
235 | |||
236 | == General Notes == | ||
237 | |||
238 | {{warning}} | ||
239 | 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. | ||
240 | {{/warning}} |