Wiki source code of Configuration

Version 170.2 by Pascal Bastien on 2017/08/30

Show last authors
1 {{box cssClass="floatinginfobox" title="**Contents**"}}
2 {{toc/}}
3 {{/box}}
4
5 Once you have XWiki [[installed>>Installation]] you'll want to configure it. Configuration can be done in 2 ways:
6
7 * by stopping the XWiki instance and editing either the ##xwiki/WEB-INF/xwiki.cfg## file or the ##xwiki/WEB-INF/xwiki.properties## one, and then restarting XWiki. Note that ##xwiki.cfg## was the historical file containing the configuration option but we're moving away from it and in due time all the XWiki configuration options will be found in ##xwiki.properties##
8 * by logging in as a user with admin rights and going to the administration page using the top level menu. You can also go directly to //{{{http://localhost:8080/xwiki/bin/admin/XWiki/XWikiPreferences}}}//. This allows to keep the server running while making the changes.(((
9 {{info}}
10 * Some configurations are only accessible from the ##xwiki.cfg## and ##xwiki.properties## files and have no equivalent on the administration page.
11 * If you're a developer and need to understand how Configuration works in XWiki, check the [[Configuration Module Documentation>>extensions:Extension.Configuration Module]].
12 {{/info}}
13 )))You can verify some basic settings of your XWiki installation (on Tomcat, MySQL) using the [[Check Config and Indexes application>>extensions:Extension.Check Config And Indexes Application]].
14
15 There are various things you can configure:
16
17 = Enable superadmin account =
18
19 Edit the ##xwiki.cfg## file and enable the ##xwiki.superadminpassword## property. For example:
20
21 {{code language="none"}}
22 # Enable to allow superadmin. It is disabled by default as this could be a security breach if
23 # it were set and you forgot about it.
24 xwiki.superadminpassword=system
25 {{/code}}
26
27 When logging in, the username will be "superadmin" and the password will be the one you set in the ##xwiki.superadminpassword## property.
28
29 = Language settings =
30
31 To define the default language for your wiki go to the administration page, click on "Localization", locate the "Default Language" field and enter the language code for the language you wish to use. For example: "en" for English, "fr" for French, "de" for German, etc.
32
33 In addition you can configure your wiki to be multilingual. See the [[I18 user page>>Features.I18N]] for more information.
34
35 Last, you can also force your wiki to display only in one of the languages specified in the settings, by editing your ##WEB-INF/xwiki.cfg## file. Search for the "Internationalization" section, and you should see two commented settings that you can uncomment and set to 1:
36
37 {{code language="none"}}
38 #-# By default, XWiki chooses the language specified by the client (browser) in the Accept-Language HTTP header. This
39 #-# allows to use the default language of the wiki when the user didn't manually choose a language.
40 # xwiki.language.preferDefault=0
41
42 #-# Force only one of the supported languages to be accepted.
43 # xwiki.language.forceSupported=0
44 {{/code}}
45
46 = Date format =
47
48 To define the date format used in the interfaces, go to //Wiki -> Administer Wiki -> Localization//, locate the "Date format" field and enter the date format you wish to use. Examples:
49
50 |=Format|=Result
51 |MMMM dd, HH:mm|January 27, 12:27
52 |yyyy/MM/dd, HH:mm|2009/01/27, 12:27
53 |dd/MM/yyyy, HH:mm|27/01/2009, 12:27
54
55 [[More information about date formatting>>http://docs.oracle.com/javase/1.5.0/docs/api/java/text/SimpleDateFormat.html]].
56
57 = Enabling/Disabling Statistics =
58
59 To disable [[the Statistics feature>>extensions:Extension.Statistics Application]] edit your //xwiki.cfg// file and replace the following properties as shown here (to enable statistics, change ##0## to ##1##):
60
61 {{code}}
62 xwiki.stats=0
63 xwiki.stats.default=0
64 {{/code}}
65
66 where:
67
68 * ##xwiki.stats## controls whether statistics are on or off
69 * ##xwiki.stats.default## controls whether statistics are on or off by default for the current Wiki. This is useful in [[Virtual Wiki mode>>AdminGuide.Virtualization]]. A wiki can decide whether statistics are on or off by setting the "statistics" field in ##XWiki.XWikiPreferences##. If no such field is defined then the default value //xwiki.stats.default// is used.(((
70 {{info}}
71 There's currently no UI to set the statistics on or off for a given subwiki. Thus at the moment you'll need to do 2 things:
72 * Edit ##XWiki.XWikiPreferences## to add a new boolean property to the class, by going to //{{{http://localhost:8080/xwiki/bin/edit/XWiki/XWikiPreferences?editor=class}}}//
73 * Set the ##statistics## property to true by going to //{{{http://localhost:8080/xwiki/bin/edit/XWiki/XWikiPreferences?editor=object}}}// and setting the ##statistics## property to ##true##
74 {{/info}}
75 )))
76
77 = Optional Store Features =
78
79 == Document versioning ==
80
81 One of the key features of a wiki engine is the ability to keep all the history of a document, giving users the ability to see the evolution of a document, but also to revert changes. However, the history of an active wiki continuously grows and is usually much larger than the current version of the data. It is possible to disable the versioning feature in XWiki, which means that less storage space will be used, although it will not be possible to revert the document in case of vandalism.
82
83 To disable versioning edit //xwiki.cfg// and add {{code}}xwiki.store.versioning=0{{/code}}.
84
85 [[Attachment versioning>>platform:AdminGuide.Attachments#HVersions]] is also available and turned on by default.
86
87 == Document recycle bin ==
88
89 By default deleted documents are not permanently removed, but are placed in a //recycle bin//, from which they can later be removed or restored. To disable it, edit //xwiki.cfg// and add {{code}}xwiki.recyclebin=0{{/code}}.
90
91 {{info}}
92 Disabling the recycle bin will make it impossible to restore a deleted document, unless a database backup is available.
93 {{/info}}
94
95 By default, a deleted document can be permanently deleted right away by administrators, and after 7 days by regular users. To change these limits, edit //xwiki.cfg// and add:
96
97 {{code}}
98 # Admins must wait 3 days before being allowed to permanently delete
99 xwiki.store.recyclebin.adminWaitDays=3
100 # Normal users must also wait 3 days
101 xwiki.store.recyclebin.waitDays=3
102 {{/code}}
103
104 [[Attachment recycle bin>>platform:AdminGuide.Attachments#HDeletion]] is similar.
105
106 = Customizing the Skin =
107
108 See the [[Skin Guide>>AdminGuide.Skins]].
109
110 = Security configuration =
111
112 See the [[Security Guide>>AdminGuide.Security]].
113
114 If the users will be accessing XWiki using SSL (https) then you will have to change the way links are created so that external links do not redirect users back to the http page. This is accomplished by setting the ##xwiki.url.protocol## property in //xwiki.cfg//.
115
116 = Customizing Menus =
117
118 The first thing to understand is that menus depend on the skin you're using. If you're using the 1.0 skin it's likely you're using the [[Panels Application>>extensions:Extension.Panels Application]] to provide the different menu panels you see on the left or right of your wikis. Check the [[Panels Application>>extensions:Extension.Panels Application]] to know more on how to configure/modify them.
119
120 = Encoding =
121
122 See the [[Encoding Guide>>AdminGuide.Encoding]].
123
124 = User Authentication =
125
126 See the [[Authentication Guide>>AdminGuide.Authentication]].
127
128 == Customizing the Verified Registration Page (Since 2.2M2) ==
129
130 The Verified Registration Page is part of the [[Administration Application>>extensions:Extension.Administration Application]] and allows you to require users to fill in a captcha and validates user input on both the server side and the client side using Javascript. The configuration allows you to add fields and validation constraints to the fields which are there.
131
132 Since version 2.3M1 in order to turn on captcha you simply go to the administration page, click "Registration" and you will find a checkbox for turning on captcha along with other registation page related settings.
133
134 For more information about configuring the registration page you can visit the page on the [[Administration Application>>extensions:Extension.Administration Application]].
135
136 = Initial Groups =
137
138 You can set the default groups which new users will automatically be added to by changing the ##xwiki.users.initialGroups## parameter in your [[xwiki.cfg>>#HSamplexwiki.cfg]] file. To make all new users be added to the groups **XWiki.CoolPeople** and **XWiki.CommunityMembers** you will have to set the ##initialGroups## parameter like this:
139
140 (((
141 {{code language="none"}}
142 xwiki.users.initialGroups=XWiki.CoolPeople, XWiki.CommunityMembers
143 {{/code}}
144 )))
145
146 * Current members will not be automatically be added to these groups, only new members.
147 * The groups have to be created before being specified as initial groups.
148
149 = Logging =
150
151 See the [[Logging page>>Logging]].
152
153 = Configuring Interwiki links =
154
155 [[Interwiki linking>>http://en.wikipedia.org/wiki/InterWiki]] is a short hand syntax for linking to pages on other websites. For example, you could link to http://en.wikipedia.org/wiki/InterWiki just by typing ~[~[InterWiki@WikiPedia]].
156
157 {{info}}
158 Note that different lists have to be maintained to support this function in XWiki Syntax 1.0 and 2.x.
159 {{/info}}
160
161 {{warning}}
162 The link notation for Interwiki links has changed in XWiki Syntax 2.1. Links should look like this in XWiki Syntax 2.1: ~[~[interwiki:WikiPedia:InterWiki~]~].
163 {{/warning}}
164
165 == Interwiki links (XWiki Syntax 1.0) ==
166
167 Since XWiki renders wiki syntax using the [[Radeox>>http://codemonkeyism.com/forking-radeox-a-new-wiki-render-engine/]] engine, it supports Interwiki links in [[much the same way as SnipSnap>>http://snipsnap.org/space/InterWiki+HowTo]].
168
169 To configure Interwiki links on your wiki:
170
171 * Create a file named ##[location from where you start your container]/conf/**intermap.txt**##
172 * Fill ##intermap.txt## with content like:(((
173 {{code}}
174 IMDB http://us.imdb.com/Title?
175 OpenWiki http://openwiki.com/?
176 SourceForge http://sourceforge.net/
177 TWiki http://twiki.org/cgi-bin/view/
178 Why http://clublet.com/c/c/why?
179 Wiki http://c2.com/cgi/wiki?
180 WikiPedia http://www.wikipedia.com/wiki/
181 {{/code}}
182 )))You can of course add your own entries.
183
184 {{warning}}
185 Radeox's parser for ##intermap.txt## is very fragile. A blank line at the bottom of the file is enough to make it fall over.
186 {{/warning}}
187
188 Restart XWiki (you'll need to restart XWiki every time you change ##intermap.txt##) and try out an Interwiki link. If it does not work, check your ##xwiki.log## file. You'll see if ##conf/intermap.txt## could not be found, or if there was an error parsing it.
189
190 == Interwiki links (XWiki Syntax 2.x) ==
191
192 In order to use Interwiki links in the XWiki Syntax 2.x it is necessary to configure the appropriate list in your ##xwiki.properties## file. Look for the following section:
193
194 {{code language="none"}}
195 #-# [Since 2.5M2]
196 #-# InterWiki definitions in the format alias=URL
197 #-# See http://en.wikipedia.org/wiki/Interwiki_links for a definition of an InterWiki link
198 # Some examples:
199 # rendering.interWikiDefinitions = wikipedia = http://en.wikipedia.org/wiki/
200 # rendering.interWikiDefinitions = definition = http://www.yourdictionary.com/
201 {{/code}}
202
203 = Setting the default editor to use (Wiki or WYSIWYG) =
204
205 Starting with XWiki Enterprise 3.0, which introduced a revamp of the Administration, you can choose the default editor from "Configuration > Edit Mode Settings" (see below). Starting with XWiki 8.2 you can also configure the default WYSIWYG editor.
206
207 {{image reference="DefaultEditorStarting30.png" width="45%"/}} {{image reference="default-wysiwyg-config.png" width="45%"/}}
208
209 = Configure the WYSIWYG editor =
210
211 See the [[WYSIWYG Editor Configuration>>extensions:Extension.CKEditor Integration.WebHome#HConfiguretheEditor]] page to find out how you can enable or disable editing features.
212
213 = Link URLs =
214
215 With parameters, you can specify what type of links will be made by XWiki.
216
217 == Reverse proxy setup ==
218
219 XWiki can and does run behind reverse proxies such as Apache mod_proxy. Usually the only thing needed is to have the ##x-forwarded-host## http header set to the external URL and XWiki will write links correctly.
220
221 Some reverse proxy software does not set this header and with XWiki Enterprise 3.0M3 or newer, you can use the ##xwiki.home## parameter in single wiki instances (non farm) to achieve the same result.
222
223 * **xwiki.home** - parameter in ##xwiki.cfg## will be used to make all links pointing to the main wiki on the server. If your main wiki is called "xwiki" but you want your users to access it by going to //www.yoursite.tld// instead of //xwiki.yoursite.tld//, you may set the ##xwiki.home## parameter to //{{{http://www.yoursite.tld/}}}//
224 Since XWiki Enterprise 3.0M3, this parameter will also work for single wiki instances and will be the final authority if the ##x-forwarded-host## parameter is not set.
225
226 * **xwiki.url.protocol** - with the ##xwiki.url.protocol## parameter in ##xwiki.cfg## you can explicitly specify the protocol as https. This is useful if you are running xwiki behind a reverse proxy which converts https into plain http so xwiki only sees http.
227
228 == Short URLs ==
229
230 It's possible to [[configure XWiki to use shorter URLs>>Main.ShortURLs]].
231
232 = Configure the names of database schemas =
233
234 {{info}}Since 1.6M1{{/info}} Sometimes, especially in enterprise environment, we need to control the names of database schemes, other than default.
235
236 * **xwiki.db**: name of database schema for the main wiki (including the name of the wiki in a non-virtual environment, otherwise the database name comes from the hibernate configuration file).
237 * **xwiki.db.prefix**: useful mainly for [[virtual wikis>>Virtualization]], where we have a separate database schema for each virtual wiki. This prefix is added to the database schema name after usual mapping between wiki names and schemas. Note that this is also applied to the main wiki database name.
238
239 = Turning off comments or attachments =
240
241 You need to change the ##XWiki.XWikiPreferences## class like this:
242
243 * Go to ##<server>/xwiki/bin/edit/XWiki/XWikiPreferences?editor=class##
244 * Add a new property called ##showcomments## (or ##showattachments## for turning off attachments) of type String Class
245 * Go to ##<server>/xwiki/bin/edit/XWiki/XWikiPreferences?editor=object&classname=XWiki.XWikiPreferences## and write no in the ##showcomments## (or ##showattachments##) field
246
247 That's it, the comments (or attachments) are gone. If you want to re-enable them, replace the "no" value with "yes".
248
249 If you wish to turn off comments/attachments/history/information tabs only for a single page you just need to [[define some properties in a script in the page>>platform:DevGuide.Scripting#HControllingWhichSectionstoDisplay]].
250
251 Last, if you wish to turn them off based on some programmatic rule (such as display them only for Administrators), you should define the properties in the ##layoutExtraVars.vm## template file from your XWiki installation. For example:
252
253 {{code language="none"}}
254 #if (!$hasAdmin)
255 #set($docextras = [])
256 #end
257 {{/code}}
258
259 = Configure "Version Summary" behavior =
260
261 When you're editing a page you can add a brief description of your changes in the "Version Summary" field by default (look at [[Features.PageEditing#HCommoneditactions]]). You can disable this feature by setting ##xwiki.editcomment=0## in ##xwiki.cfg##.
262
263 When the "Version Summary" feature is enabled, you can also set "Version Summary" to be mandatory by setting //xwiki.editcomment.mandatory=1// in //xwiki.cfg//. This will show a popup window with the request to write a short comment if there is no comment entered. It doesn't allow you to enter an empty comment. If you want a popup, but you also want to be able to enter an empty comment, set //xwiki.editcomment.suggested=1// in //xwiki.cfg//
264
265 If you set "Version Summary" as mandatory or suggested, you can also remove the "Version Summary" field and use only a popup window for writing a comment. Set //xwiki.editcomment.hidden=0// in //xwiki.cfg// to do this.
266
267 You can use the special fields in the //XWikiPreferences// object instead of editing //xwiki.cfg//. These fields are: //editcomment//, //editcomment_mandatory//, //editcomment_suggested// and //editcomment_hidden//.
268
269 = Configuring Directories =
270
271 XWiki uses the following directories:
272
273 * A Temporary directory. It's used for example to cache images after re-sizing them or store attachments after loading them out of the database.
274 * A Permanent directory. It's used for storing data such as extensions and [[filesystem attachments>>AdminGuide.Attachments#HFilesystemAttachmentStore28SinceXWikiEnterprise3.0M229]] which must not be deleted and search indexes which are replaceable but laborious to create.
275
276 To set the permanent directory, you have 2 options:
277
278 * Set the ##xwiki.data.dir## system property when starting the JVM (ie. the Servlet Container's JVM, specifically: ##-Dxwiki.data.dir=...##)
279 * Set the ##environment.permanentDirectory## property in your ##xwiki.properties## file
280
281 Make sure to choose a folder different from the XWiki home on which XWiki (which usually means whatever user running the application server in which XWiki is installed) has write access. For example the standard Debian package use ##/var/lib/xwiki/data## which is usually a good fit for many Linux distributions.
282
283 If the location points to a file or a directory to which XWiki does not have write access to, a warning will be printed in the log and the temporary directory will be used as a default. The temporary directory can be periodically cleaned and all its content deleted so it is critical that it is not used for anything else. Thus it's especially important to set the Permanent directory to not point to the temporary directory.
284
285 The temporary directory is taken from the Servlet Container's ##javax.servlet.context.tempdir## Servlet Context property and thus must be configured at that level. If it is pointed to a file or directory where XWiki cannot write, it will print a warning in the log and attempt to use [[java.io.tmpdir>>http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/System.html#getProperties()]]. If this is not a writable directory, an exception will be thrown.
286
287 = Configuring WebDAV (since 1.7) =
288
289 WebDAV support has been added to XWiki beginning with XWiki Enterprise 1.7. It is very important to note that WebDAV is enabled by default.
290
291 == Securing WebDAV Server ==
292
293 XWiki's WebDAV implementation only supports the [[Basic Access Authentication>>http://en.wikipedia.org/wiki/Basic_access_authentication]] scheme for authenticating WebDAV clients. Because of this reason it is highly recommended that you employ a transport level security mechanism like SSL to protect your clients. You may consult your web application container's documentation to see how this can be achieved.
294
295 == Disabling WebDAV ==
296
297 To disable WebDAV support in your XWiki server, simply edit your ##web.xml## file and remove the url-mapping element for mapping webdav requests. The url-mapping element for WebDAV looks like this:
298
299 {{code language="xml"}}
300 <servlet-mapping>
301 <servlet-name>webdav</servlet-name>
302 <url-pattern>/webdav/*</url-pattern>
303 </servlet-mapping>
304 {{/code}}
305
306 = Redirections =
307
308 XWiki supports defining redirections for incoming requests. To activate this feature modify your ##xwiki.cfg## file and set the following property: {{code}}xwiki.preferences.redirect=1{{/code}}.
309 Then for each redirection you want to add, add a ##XWiki.GlobalRedirect## object to your main wiki's ##XWiki.XWikiPreferences## document. The ##XWiki.GlobalRedirect## object has 2 fields: ##pattern## and ##destination##. The URL received is matched on ##pattern## and if there's a match it's replaced with the value from ##destination##. XWiki then redirects to the new URL.
310
311 = Customizing the PDF export Look & Feel =
312
313 {{info}}
314 In the future we'll want to rewrite the PDF/RTF exports as renderers in the new [[Rendering Module architecture>>extensions:Extension.Rendering Module]]. When this happens this section will be upgraded.
315 {{/info}}
316
317 Here's how the PDF and RTF exports currently work:
318 {{image reference="XWikiExport201010290119.png"/}}
319
320 As shown in the diagram you can customize 4 parts:
321
322 * The templates, pdf.vm and the referenced subparts, pdfhtmlheader.vm, pdfheader.vm, pdffooter.vm, pdftoc.vm, pdfcover.vm, which can be overridden by a copy located in a custom skin
323 * The CSS used to render the content as PDF/RTF. There is no pdf.css by default. It could be created in /templates or in a skin; a copy in a skin, override the one located in /templates
324 * The XHTML2FO XSL transformation. The default one, xhtml2fo.xsl, is packed in core jar.
325 * The FOP XSL transformation. The default one, fop.xsl, is also packed in core jar.
326
327 After the export request triggers XWiki ExportAction, the content of your document is parsed by Velocity to get the initial XHTML content. **[[JTidy>>http://jtidy.sourceforge.net/]]**, a HTML/XHTML syntax checker and pretty printer, will clean the initial XHTML to make it XHTML compliant. No customization is possible in this step.
328
329 In order to provide your own customization you need to start by tweaking the default templates (they can also be copied to a new skin) and/or by creating a new [[XWiki Class>>platform:DevGuide.DataModel]]. To do that simply create a new page called //XWiki.PDFClass// and edit it in class mode (for ex. //{{{http://yourserver.com/xwiki/bin/edit/XWiki/PDFClass?editor=class}}}//). Add the following "Text Area" properties as needed (they are all optional so you only need to define the ones you need to use):
330
331 * ##style##: contains the CSS information that will overwrite or complement the default ##pdf.css## values if they exist. **[[css4j>>http://www.informatica.info/projects/css/]]**, a CSS API implementation for the Java&trade platform, will take care of this
332 * ##xhtmlxsl##: contains the XHTML to FO XSL overriding the default one. It is processed by **[[Apache Xalan>>http://xml.apache.org/xalan-j/]]**, a XSLT processor for transforming XML documents into HTML, text, or other XML document types. Since version 3.0M2 (see issue [[XWIKI-5918>>https://jira.xwiki.org/browse/XWIKI-5918||title="Impossible to override XSLT documents used in the PDF export process"]]) this field needs to be the actual content of the customized ##xhtml2fo.xsl##. Note that you can also use velocity in this field (useful to get the content of an attached .xsl file, which comes in very handy when you need to fill in a big file, since the limit of textarea properties is of 60 000 characters)
333 * ##fopxsl##: contains the FOP to PDF/RTF XSL overriding the default one. It is processed by **[[Apache FOP>>http://xmlgraphics.apache.org/fop/]]**.
334
335 {{warning}}
336 The name of the class must be ##XWiki.PDFClass##.
337 {{/warning}}
338
339 The good thing about fop/xsl-fo is that the xsl-fo document is independent of the final result. So we can export the wiki documents into many formats.
340
341 Then create a new page (say ##XWiki.PDFTemplate##) and add the ##XWiki.PDFClass## object to it.
342
343 Last use that page when calling the PDF/RTF export using the ##pdftemplate## parameter as in //{{{http://yourserver/xwiki/bin/export/Space/Page?format=pdf&language=en&pdftemplate=XWiki.PDFTemplate}}}//.
344
345 {{warning}}
346 No template is used by default.
347 {{/warning}}
348
349 {{info}}
350 As mentioned the ##style## property stores CSS code. The field is parsed by the Velocity engine, so you can use the [[current color theme>>extensions:Extension.Color Theme Application#HUsingColorThemesvariables]] to style your PDF. For example:
351
352 {{code language=css}}
353 #template('colorThemeInit.vm')
354 h2 {
355 color: $theme.titleColor;
356 }
357
358 td {
359 border-color: $theme.borderColor;
360 }
361 {{/code}}
362 {{/info}}
363
364 = Override the PDF Templates =
365
366 == Customize the PDF Footer ==
367
368 By default, the PDF footer will display the page number, the last author and the date on which the last modification was performed. In order to also display a customized message, the template ##pdffooter.vm## must be overridden. To do that, edit the skin class (e.g. //{{{http://yourserver/xwiki/bin/edit/XWiki/XWikiSkins?editor=class}}}//) and add a "TextArea" object named ##pdffooter.vm##:
369
370 {{image reference="OverridePDFFooter.png"/}}
371
372 After adding the ##pdffooter.vm## you might want to edit it (clicking on it opens a detailed editor) and e.g. give it a "Pretty name". In this editor, also set the "Editor" property to "pure text" as otherwise the WYSIWYG-Editor will be used:
373
374 {{image reference="OverridePDFFooterEdit1.png"/}}
375
376 Next, edit the skin page (e.g. //{{{http://yourserver/xwiki/bin/edit/XWiki/DefaultSkin?editor=object}}}//) and add the following code to the ##pdffooter.vm## property:
377
378 {{code}}
379 $msg.Page <span class="page-number"></span> - $msg.get('lastmodifiedby')
380 $xwiki.getUserName($tdoc.author, false)
381 $msg.get('lastmodifiedon')
382 $!xwiki.formatDate($tdoc.date)
383 <div>
384 <p>CustomName SAS. All rights reserved. Confidential and proprietary document. Printed Copies are not controlled.</p>
385 </div>
386 {{/code}}
387
388 To see the changes, just export any wiki page:
389
390 {{image reference="OverridePDFFooterFinal.png"/}}
391
392 == Customize the PDF Cover ==
393
394 This could be useful when you want for instance to add the company's logo to the PDF cover. In order to do this, the template ##pdfcover.vm## must be overridden. Just like for the PDF header, a "TextArea" property named ##pdfcover.vm## must be added to the XWiki.XWikiSkins class (e.g. //{{{http://yourserver/xwiki/bin/view/XWiki/XWikiSkins?editor=class}}}//).
395
396 {{image reference="OverridePDFCover.png"/}}
397
398 Next, edit the skin page (e.g. //{{{http://yourserver/xwiki/bin/edit/XWiki/DefaultSkin?editor=object}}}//) and add the following code to the ##pdfcover.vm## property:
399
400 {{code}}
401 <img src="$xwiki.getSkinFile("logo.png")"/>
402
403 <div style="text-align: center; width: 100%;">
404 <h1>
405 #set($title = "$!pdfdoc.display('title', 'rendered')")
406 #if($title == '')
407 $escapetool.xml($!doc.displayTitle)
408 #else
409 $escapetool.xml($title)
410 #end
411 </h1>
412 <br />
413 <br />
414 $!xwiki.getUserName($tdoc.author, false)
415 <br />
416 $!xwiki.formatDate($tdoc.date)
417 </div>
418 {{/code}}
419
420 The last step consists of attaching the image "logo.png" to the skin:
421
422 {{image reference="OverridePDFCoverFinal.png"/}}
423
424 == Override the CSS rules ==
425
426 In order to use your own template when exporting a page as PDF, you need to create a class in the XWiki space and name it PDFClass. Next, edit the page in "Class" mode (e.g. //{{{http://yourserver/xwiki/bin/edit/XWiki/PDFClass?editor=class}}}//) and add the following TextArea properties:
427
428 * style which contains the CSS rules that will override the default ##pdf.css## values; by default, there won't be a ##pdf.css## file on your filesystem, but you can create it in the folder ##\webapps\xwiki\templates\## or specify it in your skin page
429 * xhtmlxsl which contains the XHTML2FO XSL transformation that will override the default one
430 * fopxsl which contains the FOP XSL transformation that will override the default one
431
432 {{image reference="CreatePDFClass.png"/}}
433
434 Then, create the wiki page for which your want to customize the PDF export (e.g. XWiki.PDFTemplate) and add a "XWiki.PDFClass" object to it.
435
436 Supposing your wiki page contains a table, you have to edit it in "Wiki" mode and add a style parameter as shown below:
437
438 {{code}}
439 (% class="mytable" %)
440 |=Column 1|=Column 2
441 | data|data
442 {{/code}}
443
444 Next, edit the page in "Objects" mode and write your own CSS rules in the "style" property:
445
446 {{image reference="CreatePDFTemplate.png"/}}
447
448 Because no template is used by default, you need to specify the ##pdftemplate## parameter in the URL in order to use your own template: //{{{http://yourserver/xwiki/bin/export/XWiki/PDFTemplate?format=pdf&pdftemplate=XWiki.PDFTemplate}}}//.
449
450 {{image reference="CustomizedPDF.png"/}}
451
452 {{info}}
453 Even though RTF export is expected to work the same way, there are still some isues to be solved affecting how CSS properties control the final layout.
454 {{/info}}
455
456 == Override the xhtml2fo.xsl rules ==
457
458 As explained above, the entire code of [[xhtml2fo.xsl>>https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-oldcore/src/main/resources/xhtml2fo.xsl]] needs to be copied in the xhtmlxsl textarea and then customized.
459
460 For example, to disable the generation of clickable URLs in the PDF, modify the following section:
461 {{code}} <xsl:template match="html:a[@href]" mode="transform">
462 <fo:basic-link xsl:use-attribute-sets="a-link">
463 <xsl:call-template name="process-a-link"/>
464 </fo:basic-link>
465 </xsl:template>{{/code}}
466 as
467 {{code}} <xsl:template match="html:a[@href]" mode="transform">
468 <fo:inline>
469 <xsl:call-template name="process-a-link"/>
470 </fo:inline>
471 </xsl:template>{{/code}}
472
473 == Debugging PDF export ==
474
475 To inspect contents of created XHTML file (and be able to style it) - turn on logging <xwiki>/xwiki/bin/view/AdminGuide/Logging and set //com.xpn.xwiki// level to //DEBUG//. After PDF export action, xwiki log file containing intermediates states XHTML code after theses lines:
476
477 {{code language="none"}}
478 DEBUG c.x.x.p.i.PdfExportImpl - Cleaning HTML: //(show XHTML code without style)//
479 DEBUG c.x.x.p.i.PdfExportImpl - Cleaned XHTML:
480 DEBUG c.x.x.p.i.PdfExportImpl - Applying the following CSS: //(show CSS properties)//
481 DEBUG c.x.x.p.i.PdfExportImpl - HTML with CSS applied: //(show HTML code with CSS properties merged in tag with "style=" )//
482 DEBUG c.x.x.p.i.PdfExportImpl - Final XHTML for export:
483 DEBUG c.x.x.p.i.PdfExportImpl - Intermediary XSL-FO: //(show document with eXtensible Stylesheet Language - Formatting Objects used to generate PDF files)//
484 DEBUG c.x.x.p.i.PdfExportImpl - Final XSL-FO source:
485 and finally DEBUG c.x.x.p.i.PdfExportImpl - PageSequence x-page-sequence generated 3 pages.
486 {{/code}}
487
488 = Configuring Wiki Syntaxes and default Syntax =
489
490 To know how to configure the [[Wiki syntaxes>>platform:Main.XWikiSyntax]] that are available to the user when writing wiki pages, check the [[Rendering Administration Application>>extensions:Extension.Rendering Administration Application]].
491
492 = Title behavior =
493
494 The following configuration parameters (found in ##xwiki.cfg##) can be used to control title behavior:
495
496 {{code language="none"}}
497 #-# Defines whether title handling should be using the compatibility mode or not. When the compatibility
498 #-# mode is active, XWiki will try to extract a title from the document content.
499 #-# If the document's content first header (level 1 or level 2) matches the document's title
500 #-# the first header is stripped.
501 #-# The default value is 0.
502 # xwiki.title.compatibility=1
503
504 #-# Defines the maximum header depth to look for when computing a document's title from its content. If no header
505 #-# equal or lower to the specified depth is found then the computed title falls back to the document name.
506 #-# The default value is 2.
507 # xwiki.title.headerdepth=2
508
509 #-# Defines if setting the title field must be mandatory in the WYSIWYG and Wiki editors. It is mandatory when this
510 #-# property is set to 1. The default value is 0 (not mandatory).
511 # xwiki.title.mandatory=0
512 {{/code}}
513
514 = Link Label Generation =
515
516 Starting with XWiki Syntax 2.0 it's possible to configure how labels are generated by the system when the user doesn't provide one (e.g. ##[[Main.WebHome]]##).
517
518 Her's an extract from the ##xwiki.properties## file which is where this feature is configurable:
519
520 {{code language="none"}}
521 #-# [Since 1.8RC2]
522 #-# Specifies how links labels are displayed when the user doesn't specify the label explicitly.
523 #-# Valid values:
524 #-# %w: wiki name
525 #-# %s: full space name (e.g. space1.space2)
526 #-# Note: Prior to 7.4.2/8.0M2 this was only displaying the last space name
527 #-# %ls: last space name. New in 7.4.2/8.0M2
528 #-# %p: page name
529 #-# %np: nested page name (i.e. will display the space name for Nested Pages). New in 7.4.2/8.0M2
530 #-# %P: page name with spaces between camel case words, i.e. "My Page" if the page name is "MyPage"
531 #-# %NP: nested page name with spaces between camel case words, i.e. "My Page" if the page name is "MyPage".
532 #-# New in 7.4.2/8.0M2
533 #-# %t: page title
534 #-#
535 #-# Note that if the page title is empty or not defined then it defaults to %np. This is also the case
536 #-# if the title cannot be retrieved for the document.
537 #-#
538 #-# The default is "%np". Some examples: "%s.%p", "%w:%s.%p".
539 # rendering.linkLabelFormat = %np
540 {{/code}}
541
542 = Rendering Cache =
543
544 See the [[Performance page>>platform:AdminGuide.Performances#HRenderingcache]].
545
546 = Allowed Pages for Inactive Users =
547
548 The //xwiki.cfg// configuration file includes a property called ##xwiki.inactiveuser.allowedpages##. This property can be used to build a whitelist of pages that can be read by inactive users. The format that should be used is a comma-separated list of pages that users that are marked as inactive are allowed to see.
549
550 This property is needed due to the fact that in XWiki, some users can be marked as inactive, for example when enabling user email verification in the administration. An inactive user has an account, but the account needs to be validated in order for the user to be able to access the wiki. Access rights do not apply to inactive users (they are recognized neither as XWikiGuest nor as members of XWikiAllGroup).
551
552 {{info}}
553 Inactive users are always allowed to see the //XWiki.AccountValidation// page in order to validate their account.
554 {{/info}}
555
556 = Rendering Transformations =
557
558 You can control which [[Transformations>>rendering:Main.Architecture]] are active (by default the [[Macro>>rendering:Main.Architecture]] and [[Icon>>rendering:Main.Transformations#HIconTransformation]] ones are active by default) by editing ##xwiki.properties##:
559
560 {{code language="none"}}
561 #-# [Since 2.6RC1]
562 #-# Controls what transformations will be executed when rendering content.
563 #-# A transformation modifies the parsed content. For example the Icon transformation replaces some characters with
564 #-# icons, a WikiWord transformation will automatically create links when it finds wiki words, etc.
565 #-# Note that the Macro transformation is a special transformation that replaces macro markers by the result of the
566 #-# macro execution. If you don't list it, macros won't get executed.
567 #-# The default value is: rendering.transformations = macro, icon
568 {{/code}}
569
570 For example if you wish to turn off the Icon Transformation in order to not render emoticons, you'd have to define the following property: {{code language="none"}}rendering.transformations = macro{{/code}}.
571
572 = Securing Groovy Scripts =
573
574 See:
575
576 * The [[Commons Groovy Module>>extensions:Extension.GroovyModuleCommons]]
577 * The [[Platform Groovy Module>>extensions:Extension.GroovyModulePlatform]]
578
579 = Sample xwiki.cfg =
580
581 See {{scm path="xwiki-platform-tools/xwiki-platform-tool-configuration-resources/src/main/resources/xwiki.cfg.vm"}}xwiki.cfg.vm{{/scm}}
582
583 Note that we generate the default ##xwiki.cfg## file from this template file by applying Velocity on it during the build, so all ##$<something>## properties that you see in this file are replaced at build time.
584
585 = Sample xwiki.properties =
586
587 See {{scm path="xwiki-platform-tools/xwiki-platform-tool-configuration-resources/src/main/resources/xwiki.properties.vm"}}xwiki.cfg.vm{{/scm}}
588
589 Note that we generate the default ##xwiki.cfg## file from this template file by applying Velocity on it during the build, so all ##$<something>## properties that you see in this file are replaced at build time.

Get Connected