Last modified by Thomas Mortagne on 2023/10/13

Hide last authors
Thomas Mortagne 1.1 1 {{box cssClass="floatinginfobox" title="**Contents**"}}
2 {{toc/}}
3 {{/box}}
4
5 This is the release notes for [[XWiki Commons>>http://commons.xwiki.org]], [[XWiki Rendering>>http://rendering.xwiki.org]], [[XWiki Platform>>http://platform.xwiki.org]] and [[XWiki Enterprise>>http://enterprise.xwiki.org]]. They share the same release notes as they are released together and have the same version.
6
Guillaume Delhumeau 28.1 7 This is our last stabilization branch for the XWiki 7.x Cycle. It brings polishing and stabilization for the Nested Pages feature and the changes in UI that resulted from it. It is now possible to have template hierarchies, and to add an automatic redirect when a page is renamed.
Thomas Mortagne 1.1 8
9 = New and Noteworthy (since XWiki 7.4 Milestone 1) =
10
Thomas Mortagne 34.1 11 [[Full list of issues fixed and Dashboard for 7.4>>https://jira.xwiki.org/secure/Dashboard.jspa?selectPageId=13590]].
Thomas Mortagne 1.1 12
Eduard Moraru 19.2 13 == Support for template hierarchies ==
14
15 When creating a new document from template, if the template has descendent documents under its path, those documents will also be copied over to the new document's location, preserving the hierarchy, as it was under the template document.
16
17 The save operation will display progress and if it was a Save&View operation, the form will be disabled until the operation is complete.
18
Eduard Moraru 19.3 19 More details on the [[documentation page on document templates>>extensions:Extension.Administration Application||anchor="HUsingahierarchyofNestedDocumentsastemplate"]].
Eduard Moraru 19.2 20
Marius Dumitru Florea 20.1 21 {{image reference="savingNewDocumentWithTemplateHierarchy.png" width="50%"/}}
Eduard Moraru 19.3 22
Marius Dumitru Florea 26.2 23 == Automatic Redirect on Page Rename ==
Marius Dumitru Florea 25.1 24
Thomas Mortagne 35.1 25 The [[Rename Page>>Documentation.UserGuide.Features.DocumentLifecycle||anchor="HMove2FRename"]] action has a new option (selected by default) to create an automatic redirect from the old page location to the new one. This will ensure that the external links (e.g. the bookmarks) to the renamed page (and its children) will continue to work.
Marius Dumitru Florea 25.1 26
Guillaume Delhumeau 29.1 27 {{image reference="RenameConfirmFlamingo.png"/}}
Marius Dumitru Florea 25.1 28
Marius Dumitru Florea 23.1 29 == Database Search ==
30
Marius Dumitru Florea 23.2 31 The [[Database Search>>extensions:Extension.Search Application||anchor="HDatabaseSearch"]] UI has been modified to support nested pages.
Marius Dumitru Florea 23.1 32
33 {{image reference="databaseSearch.png"/}}
34
Thomas Mortagne 1.1 35 == Miscellaneous ==
36
Guillaume Delhumeau 9.1 37 * The "annotations" button in the "More Actions" menu has been moved in the same menu but with other actions and renamed "Annotate".(((
38 {{image reference="Annotate.png"/}}
39 )))
Thomas Mortagne 35.1 40 * The Create Page UI allows you to view and change the location of the new page (that is going to be created) even when you [[open directly the URL of a new page>>Documentation.UserGuide.Features.DocumentLifecycle||anchor="HByenteringdirectlytheURLofthenewpage"]].
Thomas Mortagne 1.1 41
Thomas Mortagne 34.1 42 See the [[full list of JIRA issues>>https://jira.xwiki.org/sr/jira.issueviews:searchrequest-printable/temp/SearchRequest.html?jqlQuery=project+in+%28XCOMMONS%2C+XRENDERING%2C+XWIKI%2C+XE%29+and+status+%3D+Closed+and+resolution+%3D+Fixed+and+fixVersion+%3D+%227.4-milestone-2%22&tempMax=1000]] fixed in this release.
Thomas Mortagne 1.1 43
44 = For Developers =
45
Thomas Mortagne 6.1 46 == New lifespan LRU Cache setup ==
Thomas Mortagne 1.1 47
Thomas Mortagne 6.1 48 It's now possible to define the maximum time to live since the entry is put in the cache. It used to be possible to set it only since the last time the value was used.
Thomas Mortagne 1.1 49
Thomas Mortagne 6.1 50 {{code language="java"}}
51 // Configure cache eviction policy
52 LRUEvictionConfiguration lru = new LRUEvictionConfiguration();
53 // Set maximum size of the cache as 1000 entries
54 lru.setMaxEntries(1000);
55 // Set the maximum time to live since when the entry is used to 1 hour
56 lru.setMaxIdle(3600)
57 // Set the maximum time to live since when the entry is put in the cache to 1 hour
58 lru.setLifespan(3600)
59 {{/code}}
60
Thomas Mortagne 35.1 61 [[Cache Macro>>extensions:Extension.Cache Macro]] and [[Rendering Cache>>Documentation.AdminGuide.Performances||anchor="HRenderingcache"]] are now based on this behavior.
Thomas Mortagne 7.1 62
Vincent Massol 19.4 63 == VFS API ==
Thomas Mortagne 1.1 64
Vincent Massol 19.4 65 {{warning}}
Thomas Mortagne 34.1 66 Right now the [[VFS API is missing authorization checks>>https://jira.xwiki.org/browse/XWIKI-12912]], meaning that you should use it only for public archives.
Vincent Massol 19.4 67 {{/warning}}
Thomas Mortagne 1.1 68
Vincent Massol 16.1 69 Replacement of the [[Zip Explorer Plugin>>extensions:Extension.ZIP Explorer Plugin]]. API to access the content of archives files (zip, jar, gzip, tar, etc) located as attachments in wiki pages or elsewhere (external URLs, file system, et).
Vincent Massol 15.1 70
Vincent Massol 16.1 71 In addition a new [[Velocity Tool>>extensions:Extension.Velocity Module||anchor="HVelocityTools"]] was added in order to be able to use a portion of the NIO2 API from Velocity: ##niotool##.
Vincent Massol 15.1 72
Vincent Massol 18.1 73 See [[VFS API>>extensions:Extension.VFS API]] and [[VFS Tree Macro>>extensions:Extension.VFS Tree Macro]] for more details. Some API examples:
Vincent Massol 16.1 74
Vincent Massol 15.1 75 {{code language="velocity"}}
76 {{velocity}}
77 ## Get the URL to access the content of a file inside a zip:
78 [[link to file in zip>>$services.vfs.url("attach:Sandbox.WebHome@vma.txt.zip/vma.txt")]]
79
80 ## Display inline an image from a zip attached to a wiki page:
81 [[image:path:$services.vfs.url("attach:Sandbox.WebHome@test.zip/test.png")]]
82
83 ## Read the content of a file inside a zip attached to a page:
84 $stringtool.toString($niotool.readAllBytes("attach:Sandbox.WebHome@vma.txt.zip/vma.txt"), "utf-8")
85
86 ## List all entries inside a zip attached to a page:
87 #set ($dirStream = $niotool.newDirectoryStream("attach:Sandbox.WebHome@vma.txt.zip/"))
88 #foreach ($entry in $dirStream)
89 * {{{$entry}}} - $niotool.isDirectory($entry)
90 #end
91 {{/velocity}}
92
93 {{vfsTree root="attach:Sandbox.WebHome@vma.txt.zip/"/}}
94 {{/code}}
95
Vincent Massol 18.1 96 Example of using the ##vfsTree## Macro:
97
98 {{code language="none"}}
99 {{vfsTree root="attach:Sandbox.WebHome@vma.txt.zip/"/}}
100 {{/code}}
101
102 Results in:
103
104 {{image reference="vfstree.png"/}}
105
Thomas Mortagne 1.1 106 == Miscellaneous ==
107
Vincent Massol 4.2 108 * [[WebJars URL format>>extensions:Extension.WebJars Integration||anchor="HURLFormat"]] now supports a ##wiki## query string parameter to specify the wiki in which the webjars resource is available. For example: {{code language="none"}}/xwiki/webjars/AjaxQ/0.0.2/ajaxq.js?wiki=mywiki{{/code}}
Marius Dumitru Florea 20.2 109 * The default link behaviour can be disabled for a tree node, when you use the [[Tree Widget>>extensions:Extension.Tree Widget]], by using the 'jstree-no-link' CSS class on the node anchor, which can be set from the node JSON:(((
Marius Dumitru Florea 20.1 110 {{code language="none"}}
111 {
112 ... (node JSON) ...
113 'a_attr': {
114 'class': 'jstree-no-link',
115 'href': 'some/url'
116 }
117 }
118 {{/code}}
119 )))
Marius Dumitru Florea 24.1 120 * The ##$regextool## [[Velocity Tool>>extensions:Extension.Velocity Module||anchor="HVelocityTools"]] has a new method:(((
121 {{code language="java"}}
122 /**
123 * @param content the content to parse
124 * @param regex the regular expression to look for in the passed content
125 * @return an empty list if the passed regular expression doesn't match the content, several {@link RegexResult}
126 * objects containing the matched position and matched content for all capturing groups and sub-groups
127 * otherwise
128 */
129 public List<List<RegexResult>> findAll(String content, String regex)
130 {{/code}}
Thomas Mortagne 1.1 131
Marius Dumitru Florea 24.1 132 We had to add a new method because the existing ##RegexTool#find(String, String)## returns information about only the first capturing group. Here's a test to show how the new method works:
133
134 {{code language="java"}}
135 @Test
136 public void findAll()
137 {
138 RegexTool tool = new RegexTool();
139 List<List<RegexResult>> result =
140 tool.findAll("one :two three (:four) five :six seven=:eight", ":(\\w+) (\\w+)");
141
142 Assert.assertEquals(2, result.size());
143 Assert.assertEquals(":two three", result.get(0).get(0).getGroup());
144 Assert.assertEquals(":six seven", result.get(1).get(0).getGroup());
145
146 Assert.assertEquals(3, result.get(0).size());
147 Assert.assertEquals("two", result.get(0).get(1).getGroup());
148 Assert.assertEquals("three", result.get(0).get(2).getGroup());
149
150 Assert.assertEquals(3, result.get(1).size());
151 Assert.assertEquals("six", result.get(1).get(1).getGroup());
152 Assert.assertEquals("seven", result.get(1).get(2).getGroup());
153 }
154 {{/code}}
155 )))
156
Vincent Massol 19.4 157 == Deprecated and Retired projects ==
158
159 * XML-RPC module have been moved to https://github.com/xwiki-contrib/xwiki-platform-xmlrpc
160
161 == Upgrades ==
162
163 The following dependencies have been upgraded:
164
Thomas Mortagne 34.1 165 * [[Batik 1.8>>https://jira.xwiki.org/browse/XWIKI-12904]]
166 * [[FOP 2.0>>https://jira.xwiki.org/browse/XWIKI-12871]]
167 * [[Jackson 2.6.4>>https://jira.xwiki.org/browse/XCOMMONS-893]]
168 * [[guava 19>>https://jira.xwiki.org/browse/XCOMMONS-894]]
169 * [[Less4j 1.15.4>>https://jira.xwiki.org/browse/XWIKI-12905]]
Vincent Massol 19.4 170
Thomas Mortagne 1.1 171 = Translations =
172
173 The following translations have been updated:
174
Thomas Mortagne 12.1 175 {{language codes="de, fr, zh"/}}
Thomas Mortagne 1.1 176
177 = Tested Browsers & Databases =
178
Ramona Conoro 32.1 179 {{include reference="TestReports.ManualTestReportSummaryXWiki74M2"/}}
Thomas Mortagne 1.1 180
181 {{comment}}
182 TODO: uncomment and update with proper link when the report is ready.
183 {{include reference="TestReports.ManualTestReportTemplateSummary"/}}
184 {{/comment}}
185
186 = Known issues =
187
Thomas Mortagne 34.1 188 * [[Bugs we know about>>https://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]]
Thomas Mortagne 1.1 189
190 = Backward Compatibility and Migration Notes =
191
192 == General Notes ==
193
194 When upgrading make sure you compare your ##xwiki.cfg##, ##xwiki.properties## and ##web.xml## files with the newest version since some configuration parameters may have been modified or 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.
195
196 == API Breakages ==
197
Guillaume Delhumeau 29.1 198 The following APIs were modified since XWiki 7.3:
Thomas Mortagne 1.1 199
Vincent Massol 33.1 200 * Job code was wrongly extending an internal class:(((
Ramona Conoro 32.1 201 {{code language="none"}}
202 org.xwiki.extension.job.history.ReplayJobStatus: Removed org.xwiki.job.internal.AbstractJobStatus from the list of superclasses
Guillaume Delhumeau 29.1 203 org.xwiki.extension.job.history.ReplayJobStatus: Removed org.xwiki.job.internal.DefaultJobStatus from the list of superclasses
204 org.xwiki.extension.xar.job.diff.DiffXarJobStatus: Removed org.xwiki.job.internal.AbstractJobStatus from the list of superclasses
205 org.xwiki.extension.xar.job.diff.DiffXarJobStatus: Removed org.xwiki.job.internal.DefaultJobStatus from the list of superclasses
206 org.xwiki.refactoring.job.EntityJobStatus: Removed org.xwiki.job.internal.AbstractJobStatus from the list of superclasses
Ramona Conoro 32.1 207 org.xwiki.refactoring.job.EntityJobStatus: Removed org.xwiki.job.internal.DefaultJobStatus from the list of superclasses
208 {{/code}}
Vincent Massol 33.1 209 )))
210 * Remove the XMLRPC module:(((
Ramona Conoro 32.1 211 {{code language="none"}}
212 com.xpn.xwiki.XWikiContext: Method 'public org.apache.xmlrpc.server.XmlRpcServer ajc$get$xmlRpcServer(com.xpn.xwiki.XWikiContext)' has been removed
Guillaume Delhumeau 29.1 213 com.xpn.xwiki.XWikiContext: Method 'public void ajc$set$xmlRpcServer(com.xpn.xwiki.XWikiContext, org.apache.xmlrpc.server.XmlRpcServer)' has been removed
214 com.xpn.xwiki.XWikiContext: Method 'public org.apache.xmlrpc.server.XmlRpcServer getXMLRPCServer()' has been removed
215 com.xpn.xwiki.XWikiContext: Method 'public void setXMLRPCServer(org.apache.xmlrpc.server.XmlRpcServer)' has been removed
216 com.xpn.xwiki.XWikiContextCompatibilityAspect: Method 'public org.apache.xmlrpc.server.XmlRpcServer ajc$interFieldGetDispatch$com_xpn_xwiki_XWikiContextCompatibilityAspect$com_xpn_xwiki_XWikiContext$xmlRpcServer(com.xpn.xwiki.XWikiContext)' has been removed
217 com.xpn.xwiki.XWikiContextCompatibilityAspect: Method 'public void ajc$interFieldInit$com_xpn_xwiki_XWikiContextCompatibilityAspect$com_xpn_xwiki_XWikiContext$xmlRpcServer(com.xpn.xwiki.XWikiContext)' has been removed
218 com.xpn.xwiki.XWikiContextCompatibilityAspect: Method 'public void ajc$interFieldSetDispatch$com_xpn_xwiki_XWikiContextCompatibilityAspect$com_xpn_xwiki_XWikiContext$xmlRpcServer(com.xpn.xwiki.XWikiContext, org.apache.xmlrpc.server.XmlRpcServer)' has been removed
219 com.xpn.xwiki.XWikiContextCompatibilityAspect: Method 'public org.apache.xmlrpc.server.XmlRpcServer ajc$interMethod$com_xpn_xwiki_XWikiContextCompatibilityAspect$com_xpn_xwiki_XWikiContext$getXMLRPCServer(com.xpn.xwiki.XWikiContext)' has been removed
220 com.xpn.xwiki.XWikiContextCompatibilityAspect: Method 'public void ajc$interMethod$com_xpn_xwiki_XWikiContextCompatibilityAspect$com_xpn_xwiki_XWikiContext$setXMLRPCServer(com.xpn.xwiki.XWikiContext, org.apache.xmlrpc.server.XmlRpcServer)' has been removed
221 com.xpn.xwiki.XWikiContextCompatibilityAspect: Method 'public org.apache.xmlrpc.server.XmlRpcServer ajc$interMethodDispatch1$com_xpn_xwiki_XWikiContextCompatibilityAspect$com_xpn_xwiki_XWikiContext$getXMLRPCServer(com.xpn.xwiki.XWikiContext)' has been removed
Ramona Conoro 32.1 222 com.xpn.xwiki.XWikiContextCompatibilityAspect: Method 'public void ajc$interMethodDispatch1$com_xpn_xwiki_XWikiContextCompatibilityAspect$com_xpn_xwiki_XWikiContext$setXMLRPCServer(com.xpn.xwiki.XWikiContext, org.apache.xmlrpc.server.XmlRpcServer)' has been removed
223 {{/code}}
Vincent Massol 33.1 224 )))

Get Connected