Show last authors
1 {{box cssClass="floatinginfobox" title="**Contents**"}}
2 {{toc/}}
3 {{/box}}
4
5 Once you have XWiki [[installed>>Documentation.AdminGuide.Installation.WebHome]] 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 select the language you wish to use.
32
33 In addition you can configure your wiki to be multilingual. See the [[I18 user page>>platform: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 to fix their value (1 means true, 0 false).
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. Default is true.
43 # xwiki.language.forceSupported=1
44 {{/code}}
45
46 {{warning}}
47 Starting with XWiki {{info}}11.2RC1{{/info}} the option ##xwiki.language.forceSupported## is by default set to true. The option was by default set to false on prior versions.
48 {{/warning}}
49
50 == Algorithm ==
51
52 The algorithm to find the locale to use is the following, in this order:
53
54 * If the wiki is not multilingual use the wiki default locale (##default_language## xproperty in ##XWikiPreferences## xobject or English if not found).
55 * If the wiki is multilingual
56 ** Try to get the locale passed in the request (looking for a ##language## query string parameter).
57 ** If the language value is ##default## use the wiki default locale. If a parameter is found sets a ##language## cookie to remember the language in use.
58 ** Try to get the locale from the ##language## cookie
59 ** If the default language is preferred (##xwiki.language.preferDefault## from ##xwiki.cfg## or ##preferDefaultLanguage## property from the space preferences (##WebPreferences## xobject) or wiki preferences (##XWikiPreferences## xobject})), and since the user didn't explicitly ask for a language already, then use the wiki default locale.
60 ** Try to use the browser's ##Accept-Language## header sent in HTTP request.
61 ** Fallback to the wiki default locale
62
63 In addition the ##xwiki.language.forceSupported## configuration property (editable in ##xwiki.cfg##) is enabled by default and means that if at any step above the locale found is not in the list of supported locales, then the locale is not set and the algorithm moves to the next step.
64
65 = Date format =
66
67 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:
68
69 |=Format|=Result
70 |MMMM dd, HH:mm|January 27, 12:27
71 |yyyy/MM/dd, HH:mm|2009/01/27, 12:27
72 |dd/MM/yyyy, HH:mm|27/01/2009, 12:27
73
74 [[More information about date formatting>>http://docs.oracle.com/javase/1.5.0/docs/api/java/text/SimpleDateFormat.html]].
75
76 = Enabling/Disabling Statistics =
77
78 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##):
79
80 {{code}}
81 xwiki.stats=0
82 xwiki.stats.default=0
83 {{/code}}
84
85 where:
86
87 * ##xwiki.stats## controls whether statistics are on or off
88 * ##xwiki.stats.default## controls whether statistics are on or off by default for the current Wiki. This is useful in [[multi wiki mode>>Documentation.AdminGuide.Virtualization.WebHome]]. 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.(((
89 {{info}}
90 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:
91 * 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}}}//
92 * 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##
93 {{/info}}
94 )))
95
96 = Optional Store Features =
97
98 == Document versioning ==
99
100 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.
101
102 To disable versioning edit //xwiki.cfg// and add {{code}}xwiki.store.versioning=0{{/code}}.
103
104 [[Attachment versioning>>Documentation.AdminGuide.Attachments#HVersions]] is also available and turned on by default.
105
106 == Document recycle bin ==
107
108 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}}.
109
110 {{info}}
111 Disabling the recycle bin will make it impossible to restore a deleted document, unless a database backup is available.
112 {{/info}}
113
114 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:
115
116 {{code}}
117 # Admins must wait 3 days before being allowed to permanently delete
118 xwiki.store.recyclebin.adminWaitDays=3
119 # Normal users must also wait 3 days
120 xwiki.store.recyclebin.waitDays=3
121 {{/code}}
122
123 [[Attachment recycle bin>>Documentation.AdminGuide.Attachments#HDeletion]] is similar.
124
125 = Customizing error pages =
126
127 The screen displayed to the user when an error occurs can be easily customized without modifying the skin in the following cases: when the wiki, document or attachment that is currently looked for does not exist, or when a denied access occurs. You simply need to create the following respective pages in your wiki:
128
129 * ##XWiki.WikiDoesNotExist##,
130 * ##XWiki.DocumentDoesNotExist##,
131 * ##XWiki.AttachmentDoesNotExist##,
132 * ##XWiki.AccessDenied##
133
134 Creating these pages rather than editing the skin's velocity files will save you time during upgrades since you won't need to merge the possibly updated skin files with yours.
135
136 = Customizing the Skin =
137
138 See the [[Skin Guide>>Documentation.AdminGuide.Skins]].
139
140 = Security configuration =
141
142 See the [[Security Guide>>Documentation.AdminGuide.Security]].
143
144 By default the protocol to use to generate external URLs (https, http) is extracted from request to XWiki so most of the time you don't have anything to do if you properly configured your proxy but it's possible to force a specific protocol using ##xwiki.url.protocol## property in //xwiki.cfg//.
145
146 = Customizing Menus =
147
148 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.
149
150 = Encoding =
151
152 See the [[Encoding Guide>>Documentation.AdminGuide.Configuration.Encoding.WebHome]].
153
154 = User Authentication =
155
156 See the [[Authentication Guide>>Documentation.AdminGuide.Authentication.WebHome]].
157
158 == Customizing the Verified Registration Page (Since 2.2M2) ==
159
160 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.
161
162 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.
163
164 For more information about configuring the registration page you can visit the page on the [[Administration Application>>extensions:Extension.Administration Application]].
165
166 = Initial Groups =
167
168 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>>Documentation.AdminGuide.Configuration#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:
169
170 (((
171 {{code language="none"}}
172 xwiki.users.initialGroups=XWiki.CoolPeople, XWiki.CommunityMembers
173 {{/code}}
174 )))
175
176 * Current members will not be automatically be added to these groups, only new members.
177 * The groups have to be created before being specified as initial groups.
178
179 = Logging =
180
181 See the [[Logging page>>Documentation.AdminGuide.Logging]].
182
183 = Configuring Interwiki links =
184
185 [[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]].
186
187 {{info}}
188 Note that different lists have to be maintained to support this function in XWiki Syntax 1.0 and 2.x.
189 {{/info}}
190
191 {{warning}}
192 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]].
193 {{/warning}}
194
195 == Interwiki links (XWiki Syntax 1.0) ==
196
197 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]].
198
199 To configure Interwiki links on your wiki:
200
201 * Create a file named ##[location from where you start your container]/conf/**intermap.txt**##
202 * Fill ##intermap.txt## with content like:(((
203 {{code}}
204 IMDB http://us.imdb.com/Title?
205 OpenWiki http://openwiki.com/?
206 SourceForge http://sourceforge.net/
207 TWiki http://twiki.org/cgi-bin/view/
208 Why http://clublet.com/c/c/why?
209 Wiki http://c2.com/cgi/wiki?
210 WikiPedia http://www.wikipedia.com/wiki/
211 {{/code}}
212 )))You can of course add your own entries.
213
214 {{warning}}
215 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.
216 {{/warning}}
217
218 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.
219
220 == Interwiki links (XWiki Syntax 2.x) ==
221
222 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:
223
224 {{code language="none"}}
225 #-# [Since 2.5M2]
226 #-# InterWiki definitions in the format alias=URL
227 #-# See http://en.wikipedia.org/wiki/Interwiki_links for a definition of an InterWiki link
228 # Some examples:
229 # rendering.interWikiDefinitions = wikipedia = http://en.wikipedia.org/wiki/
230 # rendering.interWikiDefinitions = definition = http://www.yourdictionary.com/
231 {{/code}}
232
233 = Link URLs =
234
235 With parameters, you can specify what type of links will be made by XWiki.
236
237 == Reverse proxy setup ==
238
239 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.
240
241 Some reverse proxy software does not set this header and with XWiki 3.0M3 or newer, you can use the ##xwiki.home## parameter in single wiki instances (non farm) to achieve the same result.
242
243 * **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/}}}//
244 Since XWiki 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.
245
246 * **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.
247
248 == Short URLs ==
249
250 It's possible to [[configure XWiki to use shorter URLs>>platform:Main.ShortURLs]].
251
252 = Configure the names of database schemas =
253
254 {{info}}Since 1.6M1{{/info}} Sometimes, especially in a complex environment, we need to control the names of database schemes, other than default.
255
256 * **xwiki.db**: name of database schema for the main wiki (including the name of the wiki in a single-wiki environment, otherwise the database name comes from the Hibernate configuration file).
257 * **xwiki.db.prefix**: useful mainly for [[sub wikis>>Documentation.AdminGuide.Virtualization.WebHome]], where we have a separate database schema for each sub 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.
258
259 = Controlling Page Tabs =
260
261 You can do this from the [[Administration>>extensions:Extension.Administration Application#HPresentation]].
262
263 If you wish to turn on/off comments/annotations/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#HControllingPageTabs]].
264
265 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:
266
267 {{code language="none"}}
268 #if (!$hasAdmin)
269 ## Hide tabs
270 #set($displayDocExtra = false)
271 ## Hide viewer shortcuts in the menu
272 #set ($displayShortcuts = false)
273 #end
274 {{/code}}
275
276 = Configure "Version Summary" behavior =
277
278 When you're editing a page you can add a brief description of your changes in the "Version Summary" field by default (look at [[platform:Features.PageEditing#HCommoneditactions]]). You can disable this feature by setting ##xwiki.editcomment=0## in ##xwiki.cfg##.
279
280 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//
281
282 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.
283
284 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//.
285
286 = Configuring Directories =
287
288 XWiki uses the following directories:
289
290 * 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.
291 * A Permanent directory. It's used for storing data such as extensions and [[filesystem attachments>>Documentation.AdminGuide.Attachments#HFilesystemAttachmentStore28SinceXWikiEnterprise3.0M229]] which must not be deleted and search indexes which are replaceable but laborious to create.
292
293 == Permanent Directory ==
294
295 To set the permanent directory, you have 2 options:
296
297 * Set the ##xwiki.data.dir## system property when starting the JVM (ie. the Servlet Container's JVM, specifically: ##-Dxwiki.data.dir=...##)
298 * Set the ##environment.permanentDirectory## property in your ##xwiki.properties## file
299
300 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.
301
302 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.
303
304 {{info}}
305 There are 2 ways to find out what's your current permanent directory:
306
307 * {{version since="9.10"}}Check the XWiki logs and look for the "Using permanent directory" string.{{/version}}
308 * Put the following in a wiki page (using the wiki editor). Beware that you'll need to have programming rights for this to work:
309 {{/info}}
310
311 List of sub-directories in the permanent directory:
312
313 * ##store##: Data stores
314 ** ##store/file##: Attachments ([[when they're saved on the filesystem>>platform:AdminGuide.Attachments#HAttachmentStorage]], which is the default, otherwise they're saved in the database), and deleted documents. Note that even when attachments are saved on the filesystem the attachment metadata are saved in the database (e.g. creator, date, etc).
315 ** ##store/solr##: Solr configurations and data that are not cache data (cache data for in ##cache##, see below).
316 * ##extension##: Installed extensions.
317 * ##cache##: Cache files. These files and subdirectories can be removed, XWiki will regenerate them (e.g. the Solr seach indexes). However that can take a lot of time. Examples of what's contained in the cache:
318 ** Solr search indexes
319 ** Descriptors of core extensions. If you delete them, XWiki will simply try to resolve those extensions again at startup but it won't need to resolve much since the WAR embeds complete descriptors for all the JARs. Removing this directory allows cleaning descriptors that were downloaded in previous versions of XWiki.
320 ** FOP Font cache
321 * ##mails##: The [[Mail Sender API>>extensions:Extension.Mail Sender API]] (used by several features of XWiki that require sending mails) will serialize email messages in this directory before they are sent, so that if XWiki crashes or is stopped, those mails are not lost and can be resent. Once a mail is successfully sent, its associated file is removed from this directory. Thus this directory will contain mails that failed to be sent.
322 * ##logs##: Contains the xwiki logs but this is only true for the [[XWiki Standalone packaging>>Documentation.AdminGuide.Installation.WebHome#HInstallationMethods]] which has Jetty configured to generate its logs in this directory.
323 * ##jobs##: Logs and statuses of the various jobs that executed inside XWiki (e.g. when deleting a page or set of pages a job is used). It also contains the status of the Flavor which is setup as a job. Removing this directory can cause problems (it'll remove the status of the Flavor for example).
324 * ##database##: This is only true for the [[XWiki Standalone packaging>>Documentation.AdminGuide.Installation.WebHome#HInstallationMethods]] and it contains the HSQLDB database data (i.e. the wiki pages and more).
325 * {{version since="12.6"}}##mentions##: The [[Mentions Application>>extensions:Extension.Mentions Application.WebHome]] uses this directory to store the queue of documents that are waiting to be analysed for new mentions.{{/version}}
326
327 == Temporary Directory ==
328
329 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 the [[##java.io.tmpdir##>>http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/System.html#getProperties()]] System property. If this is not a writable directory, an exception will be thrown.
330
331 Also note that 3rd party libraries used by XWiki could be using another temporary directory. Usually that would the tmp dir provided by the JVM, i.e. the location pointed to by the [[##java.io.tmpdir##>>http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/System.html#getProperties()]] System property.
332
333 {{info}}
334 To know the location, put the following in a wiki page (using the wiki editor). Beware that you'll need to have programming rights for this to work:
335 {{/info}}
336
337 = Configuring WebDAV (since 1.7) =
338
339 WebDAV support has been added to XWiki beginning with XWiki 1.7. It is very important to note that WebDAV is enabled by default.
340
341 == Securing WebDAV Server ==
342
343 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.
344
345 == Disabling WebDAV ==
346
347 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:
348
349 {{code language="xml"}}
350 <servlet-mapping>
351 <servlet-name>webdav</servlet-name>
352 <url-pattern>/webdav/*</url-pattern>
353 </servlet-mapping>
354 {{/code}}
355
356 = Redirections =
357
358 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}}.
359 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.
360
361 = Customizing the PDF export Look & Feel =
362
363 {{info}}
364 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.
365 {{/info}}
366
367 Here's how the PDF and RTF exports currently work:
368 {{image reference="XWikiExport201010290119.png"/}}
369
370 As shown in the diagram you can customize 4 parts:
371
372 * 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
373 * 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
374 * The XHTML2FO XSL transformation. The default one, ##{{scm project="xwiki-platform" path="xwiki-platform-core/xwiki-platform-oldcore/src/main/resources/xhtml2fo.xsl"}}xhtml2fo.xsl{{/scm}}##, is packed in a core jar but it could be override by a new one in a template or a ##xhtml2fo.xsl## file in ##WEB-INF/classes## directory, if customization needed.
375 * The FOP XSL transformation. The default one, ##fop.xsl##, is also packed in a core jar.
376
377 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.
378
379 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):
380
381 * ##style##: contains the CSS information that will overwrite or complement the default ##pdf.css## values if they exist. **[[css4j>>https://css4j.github.io/]]**, a CSS API implementation for the Java™ platform, will take care of this.
382 * ##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)
383 * ##fopxsl##: contains the FOP to PDF/RTF XSL overriding the default one. It is processed by **[[Apache FOP>>http://xmlgraphics.apache.org/fop/]]**.
384
385 {{warning}}
386 The name of the class must be ##XWiki.PDFClass##.
387 {{/warning}}
388
389 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.
390
391 Then create a new page (say ##XWiki.PDFTemplate##) and add the ##XWiki.PDFClass## object to it.
392
393 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}}}//.
394
395 {{warning}}
396 No template is used by default.
397 {{/warning}}
398
399 {{info}}
400 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. Also, you can insert page break in PDF file with //page-break-before// CSS instruction. For example:
401
402 {{code language="css"}}
403 #template('colorThemeInit.vm')
404 h2 {
405 color: $theme.titleColor;
406 }
407
408 td {
409 border-color: $theme.borderColor;
410 }
411
412 h1, .my_Page_break {
413 page-break-before:always;
414 }
415
416 {{/code}}
417 {{/info}}
418
419 = Override the PDF Templates =
420
421 == Customize the PDF Footer ==
422
423 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##:
424
425 {{image reference="OverridePDFFooter.png"/}}
426
427 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:
428
429 {{image reference="OverridePDFFooterEdit1.png"/}}
430
431 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:
432
433 {{code}}
434 $msg.Page <span class="page-number"></span> - $msg.get('lastmodifiedby')
435 $xwiki.getUserName($tdoc.author, false)
436 $msg.get('lastmodifiedon')
437 $!xwiki.formatDate($tdoc.date)
438 <div>
439 <p>CustomName SAS. All rights reserved. Confidential and proprietary document. Printed Copies are not controlled.</p>
440 </div>
441 {{/code}}
442
443 To see the changes, just export any wiki page:
444
445 {{image reference="OverridePDFFooterFinal.png"/}}
446
447 == Customize the PDF Cover ==
448
449 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}}}//).
450
451 {{image reference="OverridePDFCover.png"/}}
452
453 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:
454
455 {{code}}
456 <img src="$xwiki.getSkinFile("logo.png")"/>
457
458 <div style="text-align: center; width: 100%;">
459 <h1>
460 #set($title = "$!pdfdoc.display('title', 'rendered')")
461 #if($title == '')
462 $escapetool.xml($!doc.displayTitle)
463 #else
464 $escapetool.xml($title)
465 #end
466 </h1>
467 <br />
468 <br />
469 $!xwiki.getUserName($tdoc.author, false)
470 <br />
471 $!xwiki.formatDate($tdoc.date)
472 </div>
473 {{/code}}
474
475 The last step consists of attaching the image "logo.png" to the skin:
476
477 {{image reference="OverridePDFCoverFinal.png"/}}
478
479 == Override the CSS rules ==
480
481 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:
482
483 * ##style##: 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
484 * ##xhtmlxsl##: contains the XHTML2FO XSL transformation that will override the default one
485 * ##fopxsl##: contains the FOP XSL transformation that will override the default one
486
487 For each property added, make sure to set the ##Content## property metadata to ##PureText## in order to not get the WYSIWYG editor which would make it complex to enter XML/XSL.
488
489 {{image reference="CreatePDFClass.png"/}}
490
491 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.
492
493 Supposing your wiki page //Sandbox.TestPage1// contains a table, you have to edit it in "Wiki" mode and add a style parameter as shown below:
494
495 {{code}}
496 (% class="mytable" %)
497 |=Column 1|=Column 2
498 | data|data
499 {{/code}}
500
501 Next, edit the template page (e.g. XWiki.PDFTemplate) in "Objects" mode and write your own CSS rules in the "style" property:
502
503 {{image reference="CreatePDFTemplate.png"/}}
504
505 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/Sandbox/TestPage1/?format=pdf&pdftemplate=XWiki.PDFTemplate}}}//.
506
507 {{image reference="SandboxTestPage1PDF.png" width="700"/}}
508
509 **Tip**: download the [[PDF class>>attach:XWiki.PDFClass.xar]] and [[PDF template >>attach:XWiki.PDFTemplate.xar]]for this example and test them on your wiki.
510
511 {{info}}
512 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.
513 {{/info}}
514
515 {{warning}}
516 If some CSS styling doesn't work on PDF export, you could check if CSS instruction is supported by XSL-FO on [[Apache™ FOP Compliance Page>>https://xmlgraphics.apache.org/fop/compliance.html]].
517 Furthermore, you can not use multiple attributes to select a CSS element (see issue: [[XWIKI-14653>>https://jira.xwiki.org/browse/XWIKI-14653]]).
518 {{/warning}}
519
520 == Override the xhtml2fo.xsl rules ==
521
522 As explained above, the entire code of {{scm project="xwiki-platform" path="xwiki-platform-core/xwiki-platform-oldcore/src/main/resources/xhtml2fo.xsl"}}xhtml2fo.xsl{{/scm}} needs to be copied in the xhtmlxsl textarea and then customized.
523
524 For example, to disable the generation of clickable URLs in the PDF, modify the following section:
525 {{code}} <xsl:template match="html:a[@href]" mode="transform">
526 <fo:basic-link xsl:use-attribute-sets="a-link">
527 <xsl:call-template name="process-a-link"/>
528 </fo:basic-link>
529 </xsl:template>{{/code}}
530 as
531 {{code}} <xsl:template match="html:a[@href]" mode="transform">
532 <fo:inline>
533 <xsl:call-template name="process-a-link"/>
534 </fo:inline>
535 </xsl:template>{{/code}}
536 or disable the generation of clickable URLs for some specific href links in the PDF
537 {{code}} <xsl:template match="html:a[@href]" mode="transform">
538 <xsl:choose>
539 <!-- disable these internal links ("data-parent" attribute start with "#accordion" or href is "#my_anchor") -->
540 <xsl:when test="starts-with(@data-parent,'#accordion') or @href = '#my_anchor'">
541 <fo:inline>
542 <xsl:call-template name="process-a-link"/>
543 </fo:inline>
544 </xsl:when>
545 <xsl:otherwise>
546 <fo:basic-link xsl:use-attribute-sets="a-link">
547 <xsl:call-template name="process-a-link"/>
548 </fo:basic-link>
549 </xsl:otherwise>
550 </xsl:choose>
551
552 </xsl:template>{{/code}}
553
554 == Debugging PDF export ==
555
556 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:
557
558 {{code language="none"}}
559 DEBUG c.x.x.p.i.PdfExportImpl - Cleaning HTML: //(show XHTML code without style)//
560 DEBUG c.x.x.p.i.PdfExportImpl - Cleaned XHTML:
561 DEBUG c.x.x.p.i.PdfExportImpl - Applying the following CSS: //(show CSS properties)//
562 DEBUG c.x.x.p.i.PdfExportImpl - HTML with CSS applied: //(show HTML code with CSS properties merged in tag with "style=" )//
563 DEBUG c.x.x.p.i.PdfExportImpl - Final XHTML for export:
564 DEBUG c.x.x.p.i.PdfExportImpl - Intermediary XSL-FO: //(show document with eXtensible Stylesheet Language - Formatting Objects used to generate PDF files)//
565 DEBUG c.x.x.p.i.PdfExportImpl - Final XSL-FO source:
566 and finally DEBUG c.x.x.p.i.PdfExportImpl - PageSequence x-page-sequence generated 3 pages.
567 {{/code}}
568
569 = Configuring Wiki Syntaxes and default Syntax =
570
571 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]].
572
573 = Title behavior =
574
575 The following configuration parameters (found in ##xwiki.cfg##) can be used to control title behavior:
576
577 {{code language="none"}}
578 #-# Defines whether title handling should be using the compatibility mode or not. When the compatibility
579 #-# mode is active, XWiki will try to extract a title from the document content.
580 #-# If the document's content first header (level 1 or level 2) matches the document's title
581 #-# the first header is stripped.
582 #-# The default value is 0.
583 # xwiki.title.compatibility=1
584
585 #-# Defines the maximum header depth to look for when computing a document's title from its content. If no header
586 #-# equal or lower to the specified depth is found then the computed title falls back to the document name.
587 #-# The default value is 2.
588 # xwiki.title.headerdepth=2
589
590 #-# Defines if setting the title field must be mandatory in the WYSIWYG and Wiki editors. It is mandatory when this
591 #-# property is set to 1. The default value is 0 (not mandatory).
592 # xwiki.title.mandatory=0
593 {{/code}}
594
595 = Link Label Generation =
596
597 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. ##[[platform:Main.WebHome]]##).
598
599 Her's an extract from the ##xwiki.properties## file which is where this feature is configurable:
600
601 {{code language="none"}}
602 #-# [Since 1.8RC2]
603 #-# Specifies how links labels are displayed when the user doesn't specify the label explicitly.
604 #-# Valid values:
605 #-# %w: wiki name
606 #-# %s: full space name (e.g. space1.space2)
607 #-# Note: Prior to 7.4.2/8.0M2 this was only displaying the last space name
608 #-# %ls: last space name. New in 7.4.2/8.0M2
609 #-# %p: page name
610 #-# %np: nested page name (i.e. will display the space name for Nested Pages). New in 7.4.2/8.0M2
611 #-# %P: page name with spaces between camel case words, i.e. "My Page" if the page name is "MyPage"
612 #-# %NP: nested page name with spaces between camel case words, i.e. "My Page" if the page name is "MyPage".
613 #-# New in 7.4.2/8.0M2
614 #-# %t: page title
615 #-#
616 #-# Note that if the page title is empty or not defined then it defaults to %np. This is also the case
617 #-# if the title cannot be retrieved for the document.
618 #-#
619 #-# The default is "%np". Some examples: "%s.%p", "%w:%s.%p".
620 # rendering.linkLabelFormat = %np
621 {{/code}}
622
623 = Rendering Cache =
624
625 See the [[Performance page>>Documentation.AdminGuide.Performances.WebHome#HRenderingcache]].
626
627 = Allowed Pages for Inactive Users =
628
629 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.
630
631 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).
632
633 {{info}}
634 Inactive users are always allowed to see the //XWiki.AccountValidation// page in order to validate their account.
635 {{/info}}
636
637 = Rendering Transformations =
638
639 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##:
640
641 {{code language="none"}}
642 #-# [Since 2.6RC1]
643 #-# Controls what transformations will be executed when rendering content.
644 #-# A transformation modifies the parsed content. For example the Icon transformation replaces some characters with
645 #-# icons, a WikiWord transformation will automatically create links when it finds wiki words, etc.
646 #-# Note that the Macro transformation is a special transformation that replaces macro markers by the result of the
647 #-# macro execution. If you don't list it, macros won't get executed.
648 #-# The default value is: rendering.transformations = macro, icon
649 {{/code}}
650
651 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}}.
652
653 = Securing Groovy Scripts =
654
655 See:
656
657 * The [[Commons Groovy Module>>extensions:Extension.GroovyModuleCommons]]
658 * The [[Platform Groovy Module>>extensions:Extension.GroovyModulePlatform]]
659
660 = Lock Duration =
661
662 By default, when a user starts editing a page, a lock will be set on that page, see [[Page Editing>>Documentation.UserGuide.Features.PageEditing#HLocking]]. The lock is valid by default for 30 minutes, after which it gets invalidated.
663
664 In order to increase this duration, you have 2 options:
665
666 * Add a property named ##lock_Timeout## to your ##xwiki.cfg## configuration file, and set the value in seconds (and restart XWiki). For example for 15 minutes: ##lock_Timeout = 900##.
667 * Or add the configuration in the wiki itself:
668 ** Edit the ##XWiki.XWikiPreferences## document using the class editor
669 ** Add a Number property named ##lock_Timeout## (case sensitive)
670 ** Edit the ##XWiki.XWikiPreferences## document using the object editor
671 ** Find the ##lock_Timeout## property and put the desired number of *seconds* a lock should be valid for
672 ** Don't forget to save the document
673
674 = Editing =
675
676 == Default editor ==
677
678 You can choose the default editor to use from "Configuration > Edit Mode Settings" (see below). You can also configure the default WYSIWYG editor to use ({{info}}XWiki 8.2{{/info}}).
679
680 {{image reference="DefaultEditorStarting30.png" width="45%"/}} {{image reference="default-wysiwyg-config.png" width="45%"/}}
681
682 == Default WYSIWYG editor ==
683
684 See the [[WYSIWYG Editor Configuration>>extensions:Extension.CKEditor Integration.WebHome#HConfiguretheEditor]] page to find out how you can enable or disable editing features.
685
686 == Section Editing ==
687
688 By default section editing is limited to level 1 and level 2 sections. This can be controlled by editing ##xwiki.cfg##:
689
690 {{code}}
691 #-# This parameter controls the depth of sections that have section editing.
692 #-# By default level 1 and level 2 sections have section editing.
693 xwiki.section.depth=2
694 {{/code}}
695
696 You can also enable/disable section editing with:
697
698 {{code}}
699 #-# This parameter will activate the sectional editing.
700 xwiki.section.edit=1
701 {{/code}}
702
703 == Editing Conflicts ==
704
705 The [[Edit Conflict feature>>]] can be disabled ({{info}}XWiki 11.3.2{{/info}} and {{info}}XWiki 11.6RC1{{/info}}) from the ##xwiki.properties## file by setting ##edit.conflictChecking.enabled = false##:
706
707 {{code language="none"}}
708 #-# [Since 11.3.2, 11.6RC1]
709 #-# Indicate if the mechanism to detect and handle edition conflicts should be enabled or not.
710 #-# If disabled, it means that in case of edition conflicts, the latest save will be always take into account, and
711 #-# erase previous data (which can always be recovered in the history of the document).
712 #-# This option is provided because the feature is still experimental and it could be useful is some specific usecases
713 #-# to switch it off. However it is not recommended to do so.
714 #-#
715 #-# The default is:
716 # edit.conflictChecking.enabled = true
717 {{/code}}
718
719 == In-place Editing ==
720
721 To disable the in-place WYSIWYG editing mode (and thus default to the Standalone WYSIWYG editing mode), modify the ##xwiki.properties## file and set ##edit.document.inPlaceEditing.enabled = false## ({{info}}XWiki 12.5{{/info}}):
722
723 {{code language="none"}}
724 #-# [Since 12.5]
725 #-# Indicate if the XWiki documents should be edited in-place, without leaving the view mode, whenever possible (e.g. if
726 #-# the default edit mode for that document and the preferred editor both support in-place editing). When enabled,
727 #-# clicking on the document Edit button makes the document title and content editable in-place, without leaving the
728 #-# view mode. When disabled, clicking on the document Edit button loads the default (stand-alone) edit mode for that
729 #-# document.
730 #-#
731 #-# The default is:
732 # edit.document.inPlaceEditing.enabled = true
733 {{/code}}
734
735 = Delete Pages =
736
737 {{version since="12.9RC1"}}
738 This section is hidden when the [[recycle bin is not activated>>||anchor="HDocumentrecyclebin"]].
739 {{/version}}
740
741 == Enabling Advanced users to skip the recycle bin ==
742
743 {{version since="12.8RC1"}}
744 Advanced users can be allowed choose if they want to skip the recycle bin (and remove the pages permanently) when deleting pages.
745
746 To do so, search for the "Delete" section and set "can skip the recycle bin" to Yes. The default value is No.
747
748 [[image:skip_recycle_bin_admin_cropped.png]]
749 {{/version}}
750
751 Advanced users can be allowed choose if they want to skip the recycle bin (and remove the pages permanently) when deleting pages.
752
753 To do so, search for the "Delete" section and set "can skip the recycle bin" to Yes. The default value is No.
754
755 [[image:skip_recycle_bin_admin_cropped.png]]
756
757 {{version since="12.9RC1"}}
758 The configuration is resolved by looking in three locations, from the most specific to the least specific:
759
760 * In the configuration of the current wiki
761 * In the configuration of the main wiki
762 * In ##xwiki.properties## (see the property details below)
763
764 If the default value is found on one location, the next one is tried. If no value is found, the recycle bin skipping is not activated.
765
766 Details of the configuration on ##xwiki.properties##:
767
768 {{code language="none"}}
769 #-# [Since 12.9RC1]
770 #-# Indicates whether skipping the recycle bin when deleting pages is allowed for Advanced users.
771 #-# It is disabled by default.
772 #-# This setting is only used if the wiki has a recycle bin activated (xwiki.recyclebin=1 in xwiki.cfg).
773 #-# This setting can be overloaded:
774 #-# * By the main wiki in the Refactoring.Code.RefactoringConfigurationClass class of the
775 #-# Refactoring.Code.RefactoringConfiguration document of the main wiki.
776 #-# * By sub-wikis in the Refactoring.Code.RefactoringConfigurationClass class of the
777 #-# Refactoring.Code.RefactoringConfiguration document of the sub-wikis (itself overloading the main wiki's
778 #-# configuration).
779 #-#
780 #-# The default value is:
781 # refactoring.isRecycleBinSkippingActivated = false
782 {{/code}}
783 {{/version}}
784
785 = Sample xwiki.cfg =
786
787 See {{scm path="xwiki-platform-tools/xwiki-platform-tool-configuration-resources/src/main/resources/xwiki.cfg.vm"}}xwiki.cfg.vm{{/scm}}
788
789 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.
790
791 = Sample xwiki.properties =
792
793 See {{scm path="xwiki-platform-tools/xwiki-platform-tool-configuration-resources/src/main/resources/xwiki.properties.vm"}}xwiki.properties.vm{{/scm}}
794
795 Note that we generate the default ##xwiki.properties## 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