Wiki source code of Configuration

Version 238.2 by Vincent Massol on 2024/10/25

Hide last authors
Sorin Burjan 61.1 1 {{box cssClass="floatinginfobox" title="**Contents**"}}
2 {{toc/}}
3 {{/box}}
Sorin Burjan 60.2 4
Ecaterina Moraru (Valica) 174.6 5 Once you have XWiki [[installed>>Documentation.AdminGuide.Installation.WebHome]] you'll want to configure it. Configuration can be done in 2 ways:
Vincent Massol 1.1 6
Manuel Smeria 140.2 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##
Marc Lijour 141.1 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.(((
Ricardo Rodríguez 82.1 9 {{info}}
Manuel Smeria 140.2 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]].
Ricardo Rodríguez 82.1 12 {{/info}}
Marc Lijour 141.1 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]].
Vincent Massol 1.1 14
15 There are various things you can configure:
Vincent Massol 1.12 16
Thomas Mortagne 53.1 17 = Enable superadmin account =
Vincent Massol 1.29 18
Caleb James DeLisle 51.1 19 Edit the ##xwiki.cfg## file and enable the ##xwiki.superadminpassword## property. For example:
Vincent Massol 1.29 20
Vincent Massol 54.2 21 {{code language="none"}}
Vincent Massol 1.29 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
Caleb James DeLisle 51.1 25 {{/code}}
Vincent Massol 1.29 26
Caleb James DeLisle 51.1 27 When logging in, the username will be "superadmin" and the password will be the one you set in the ##xwiki.superadminpassword## property.
Vincent Massol 4.1 28
Thomas Mortagne 53.1 29 = Language settings =
Vincent Massol 12.1 30
Vincent Massol 200.1 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.
Vincent Massol 12.1 32
Thomas Mortagne 234.1 33 In addition you can configure your wiki to be multilingual. See the [[I18 user page>>Documentation.UserGuide.Features.I18N]] for more information.
Vincent Massol 12.2 34
Simon Urli 190.1 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).
Vincent Massol 43.1 36
Vincent Massol 54.2 37 {{code language="none"}}
Vincent Massol 43.1 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
Simon Urli 190.1 42 #-# Force only one of the supported languages to be accepted. Default is true.
43 # xwiki.language.forceSupported=1
Caleb James DeLisle 51.1 44 {{/code}}
Vincent Massol 43.1 45
Simon Urli 190.1 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
Vincent Massol 200.1 50 == Algorithm ==
51
52 The algorithm to find the locale to use is the following, in this order:
Manuel Leduc 207.1 53
Vincent Massol 200.1 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
Thomas Mortagne 53.1 65 = Date format =
Jean-Vincent Drean 36.1 66
Manuel Smeria 140.2 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:
Jean-Vincent Drean 36.1 68
Caleb James DeLisle 51.1 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
Jean-Vincent Drean 36.1 73
Manuel Smeria 140.2 74 [[More information about date formatting>>http://docs.oracle.com/javase/1.5.0/docs/api/java/text/SimpleDateFormat.html]].
Jean-Vincent Drean 36.2 75
Thomas Mortagne 53.1 76 = Enabling/Disabling Statistics =
Vincent Massol 1.1 77
Manuel Smeria 140.2 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##):
Vincent Massol 1.1 79
Vincent Massol 140.1 80 {{code}}
81 xwiki.stats=0
82 xwiki.stats.default=0
83 {{/code}}
84
Vincent Massol 1.10 85 where:
Marc Lijour 141.1 86
Manuel Smeria 140.2 87 * ##xwiki.stats## controls whether statistics are on or off
Vincent Massol 205.3 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.(((
Vincent Massol 140.1 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:
Manuel Smeria 140.4 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##
Vincent Massol 140.1 93 {{/info}}
Manuel Smeria 140.4 94 )))
Marc Lijour 141.1 95
Thomas Mortagne 53.1 96 = Optional Store Features =
Artem Melentyev 12.3 97
Thomas Mortagne 53.1 98 == Document versioning ==
Sergiu Dumitriu 49.1 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
Manuel Smeria 140.2 102 To disable versioning edit //xwiki.cfg// and add {{code}}xwiki.store.versioning=0{{/code}}.
Sergiu Dumitriu 49.1 103
Ecaterina Moraru (Valica) 174.6 104 [[Attachment versioning>>Documentation.AdminGuide.Attachments#HVersions]] is also available and turned on by default.
Sergiu Dumitriu 49.1 105
Thomas Mortagne 53.1 106 == Document recycle bin ==
Artem Melentyev 12.4 107
Manuel Smeria 140.2 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}}.
Sergiu Dumitriu 49.1 109
Manuel Smeria 140.2 110 {{info}}
111 Disabling the recycle bin will make it impossible to restore a deleted document, unless a database backup is available.
112 {{/info}}
Sergiu Dumitriu 49.1 113
Caleb James DeLisle 51.1 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:
Sergiu Dumitriu 49.1 115
Jan-Paul Kleijn 232.1 116 {{code language="none"}}
Sergiu Dumitriu 49.1 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
Caleb James DeLisle 51.1 121 {{/code}}
Sergiu Dumitriu 49.1 122
Ecaterina Moraru (Valica) 174.6 123 [[Attachment recycle bin>>Documentation.AdminGuide.Attachments#HDeletion]] is similar.
Sergiu Dumitriu 49.1 124
slauriere 186.1 125 = Customizing error pages =
126
Vincent Massol 187.1 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:
slauriere 186.1 128
Vincent Massol 187.1 129 * ##XWiki.WikiDoesNotExist##,
Thomas Mortagne 234.1 130 * ##XWiki.DocumentDoesNotExist##,
Vincent Massol 187.1 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
Thomas Mortagne 53.1 136 = Customizing the Skin =
Vincent Massol 1.3 137
Ecaterina Moraru (Valica) 174.6 138 See the [[Skin Guide>>Documentation.AdminGuide.Skins]].
Vincent Massol 1.3 139
Thomas Mortagne 53.1 140 = Security configuration =
Vincent Massol 1.3 141
Ecaterina Moraru (Valica) 174.6 142 See the [[Security Guide>>Documentation.AdminGuide.Security]].
Vincent Massol 1.3 143
Vincent Massol 213.1 144 = HTTPS/SSL =
Caleb James DeLisle 76.1 145
Vincent Massol 213.1 146 By default the protocol to use to generate external URLs (HTTPS, HTTP) is extracted from requests 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//.
147
148 To setup HTTPS/SSL you may need to configure your Servlet Container and any front end web server or proxy in front of XWiki. For example:
Cami Andrei 226.1 149
Vincent Massol 213.1 150 * [[Tomcat>>Documentation.AdminGuide.Installation.InstallationWAR.InstallationTomcat.WebHome]]
151
Thomas Mortagne 53.1 152 = Customizing Menus =
Vincent Massol 1.3 153
Vincent Massol 114.6 154 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.
Vincent Massol 1.3 155
Thomas Mortagne 53.1 156 = Encoding =
Vincent Massol 1.3 157
Vincent Massol 178.1 158 See the [[Encoding Guide>>Documentation.AdminGuide.Configuration.Encoding.WebHome]].
slauriere 1.5 159
Thomas Mortagne 53.1 160 = User Authentication =
slauriere 1.5 161
Vincent Massol 177.1 162 See the [[Authentication Guide>>Documentation.AdminGuide.Authentication.WebHome]].
TimL 1.18 163
Vincent Massol 235.3 164 == Customizing the Verified Registration Page ==
Caleb James DeLisle 52.1 165
Manuel Smeria 140.2 166 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.
Caleb James DeLisle 52.1 167
Vincent Massol 235.3 168 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.
Caleb James DeLisle 52.1 169
Vincent Massol 114.6 170 For more information about configuring the registration page you can visit the page on the [[Administration Application>>extensions:Extension.Administration Application]].
Caleb James DeLisle 52.1 171
Lucas Charpentier (Sereza7) 236.2 172 = Default User Preferences =
173
174 See the [[User Module documentation>>extensions:Extension.User Module.API.WebHome#HConfiguration]].
175
Caleb James DeLisle 57.1 176 = Initial Groups =
Sorin Burjan 61.1 177
Ecaterina Moraru (Valica) 174.6 178 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:
Marc Lijour 141.1 179
Manuel Smeria 140.4 180 (((
Sorin Burjan 61.1 181 {{code language="none"}}
Caleb James DeLisle 57.1 182 xwiki.users.initialGroups=XWiki.CoolPeople, XWiki.CommunityMembers
183 {{/code}}
Manuel Smeria 140.4 184 )))
Marc Lijour 141.1 185
Caleb James DeLisle 57.1 186 * Current members will not be automatically be added to these groups, only new members.
187 * The groups have to be created before being specified as initial groups.
188
Thomas Mortagne 53.1 189 = Logging =
Vincent Massol 1.23 190
Ecaterina Moraru (Valica) 174.6 191 See the [[Logging page>>Documentation.AdminGuide.Logging]].
Vincent Massol 1.23 192
Thomas Mortagne 53.1 193 = Configuring Interwiki links =
Vincent Massol 1.24 194
JohannesStoldt 119.1 195 [[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]].
Vincent Massol 1.24 196
JohannesStoldt 119.1 197 {{info}}
198 Note that different lists have to be maintained to support this function in XWiki Syntax 1.0 and 2.x.
199 {{/info}}
200
201 {{warning}}
Manuel Leduc 207.1 202 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]].
JohannesStoldt 119.1 203 {{/warning}}
204
205 == Interwiki links (XWiki Syntax 1.0) ==
206
Vincent Massol 125.3 207 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]].
Vincent Massol 1.24 208
209 To configure Interwiki links on your wiki:
210
Caleb James DeLisle 51.1 211 * Create a file named ##[location from where you start your container]/conf/**intermap.txt**##
Marc Lijour 141.1 212 * Fill ##intermap.txt## with content like:(((
Manuel Smeria 140.2 213 {{code}}
214 IMDB http://us.imdb.com/Title?
Vincent Massol 1.24 215 OpenWiki http://openwiki.com/?
216 SourceForge http://sourceforge.net/
217 TWiki http://twiki.org/cgi-bin/view/
218 Why http://clublet.com/c/c/why?
219 Wiki http://c2.com/cgi/wiki?
Manuel Smeria 140.2 220 WikiPedia http://www.wikipedia.com/wiki/
221 {{/code}}
Marc Lijour 141.1 222 )))You can of course add your own entries.
Vincent Massol 1.24 223
Manuel Smeria 140.2 224 {{warning}}
225 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.
226 {{/warning}}
Vincent Massol 1.24 227
Manuel Smeria 140.2 228 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.
229
JohannesStoldt 119.1 230 == Interwiki links (XWiki Syntax 2.x) ==
231
232 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:
233
234 {{code language="none"}}
235 #-# InterWiki definitions in the format alias=URL
236 #-# See http://en.wikipedia.org/wiki/Interwiki_links for a definition of an InterWiki link
237 # Some examples:
238 # rendering.interWikiDefinitions = wikipedia = http://en.wikipedia.org/wiki/
239 # rendering.interWikiDefinitions = definition = http://www.yourdictionary.com/
240 {{/code}}
241
Caleb James DeLisle 116.1 242 = Link URLs =
JohannesStoldt 119.1 243
Caleb James DeLisle 116.1 244 With parameters, you can specify what type of links will be made by XWiki.
Vincent Massol 7.1 245
Caleb James DeLisle 116.1 246 == Reverse proxy setup ==
JohannesStoldt 119.1 247
Caleb James DeLisle 116.1 248 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.
249
Ecaterina Moraru (Valica) 172.1 250 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.
Caleb James DeLisle 116.1 251
Manuel Smeria 140.4 252 * **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/}}}//
Vincent Massol 235.3 253 This parameter will also work for single wiki instances and will be the final authority if the ##x-forwarded-host## parameter is not set.
Caleb James DeLisle 116.1 254
Manuel Smeria 140.2 255 * **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.
Caleb James DeLisle 116.1 256
257 == Short URLs ==
JohannesStoldt 119.1 258
Thomas Mortagne 234.1 259 It's possible to [[configure XWiki to use shorter URLs>>Documentation.AdminGuide.ShortURLs]].
Vincent Massol 7.1 260
Vincent Massol 144.3 261 = Configure the names of database schemas =
rssh 8.1 262
Vincent Massol 236.3 263 Sometimes, especially in a complex environment, we need to control the names of database schemas, other than default.
rssh 8.1 264
Vincent Massol 205.3 265 * **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).
266 * **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.
rssh 8.1 267
Vincent Massol 181.1 268 = Controlling Page Tabs =
Thomas Mortagne 44.1 269
Vincent Massol 181.2 270 You can do this from the [[Administration>>extensions:Extension.Administration Application#HPresentation]].
Vincent Massol 9.1 271
Thomas Mortagne 234.1 272 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>>Documentation.DevGuide.Scripting#HControllingPageTabs]].
Vincent Massol 9.1 273
Vincent Massol 156.1 274 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:
275
276 {{code language="none"}}
277 #if (!$hasAdmin)
Vincent Massol 181.1 278 ## Hide tabs
279 #set($displayDocExtra = false)
280 ## Hide viewer shortcuts in the menu
281 #set ($displayShortcuts = false)
Vincent Massol 156.1 282 #end
283 {{/code}}
284
Manuel Smeria 140.2 285 = Configure "Version Summary" behavior =
Artem Melentyev 16.1 286
Thomas Mortagne 234.1 287 When you're editing a page you can add a brief description of your changes in the "Version Summary" field by default (look at [[Documentation.UserGuide.Features.PageEditing#HCommoneditactions]]). You can disable this feature by setting ##xwiki.editcomment=0## in ##xwiki.cfg##.
Artem Melentyev 16.1 288
Manuel Smeria 140.2 289 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//
Artem Melentyev 16.1 290
Manuel Smeria 140.2 291 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.
Artem Melentyev 16.1 292
Manuel Smeria 140.2 293 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//.
Artem Melentyev 16.1 294
Caleb James DeLisle 138.1 295 = Configuring Directories =
296
Vincent Massol 169.2 297 XWiki uses the following directories:
Caleb James DeLisle 138.1 298
Vincent Massol 169.2 299 * 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.
Ecaterina Moraru (Valica) 174.6 300 * 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.
Caleb James DeLisle 138.1 301
Vincent Massol 202.1 302 == Permanent Directory ==
303
Vincent Massol 139.1 304 To set the permanent directory, you have 2 options:
Marc Lijour 141.1 305
Manuel Smeria 140.2 306 * Set the ##xwiki.data.dir## system property when starting the JVM (ie. the Servlet Container's JVM, specifically: ##-Dxwiki.data.dir=...##)
307 * Set the ##environment.permanentDirectory## property in your ##xwiki.properties## file
Caleb James DeLisle 138.1 308
Thomas Mortagne 169.1 309 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.
Thomas Mortagne 168.1 310
Vincent Massol 169.2 311 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.
Caleb James DeLisle 138.1 312
Vincent Massol 183.1 313 {{info}}
Vincent Massol 184.1 314 There are 2 ways to find out what's your current permanent directory:
Manuel Leduc 207.1 315
Vincent Massol 235.3 316 * Check the XWiki logs and look for the "Using permanent directory" string.
Cami Andrei 227.2 317 * Put the following in a wiki page (using the wiki editor). Beware that you'll need to have programming rights for this to work:(((
318 {{code language="none"}}
319 {{velocity}}
320 $services.component.getInstance('org.xwiki.environment.Environment').getPermanentDirectory().getCanonicalPath()
321 {{/velocity}}
322 {{/code}}
323 )))
Vincent Massol 183.1 324 {{/info}}
325
Vincent Massol 205.1 326 List of sub-directories in the permanent directory:
Manuel Leduc 207.1 327
Vincent Massol 205.1 328 * ##store##: Data stores
Vincent Massol 228.3 329 ** ##store/file##: Attachments ([[when they're saved on the filesystem>>Documentation.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).
Thomas Mortagne 229.1 330 ** ##store/solr##: Solr configurations and data which are not possible to reindex from a different data source (cache data is located in ##cache##, see below).
331 * ##extension##: Installed extensions and metadata about where they are installed.
Vincent Massol 205.1 332 * ##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:
333 ** Solr search indexes
334 ** 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.
335 ** FOP Font cache
336 * ##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.
Manuel Leduc 207.1 337 * ##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.
Vincent Massol 228.2 338 * ##jobs/status##: Logs and statuses of the various background jobs executed inside XWiki (e.g. when deleting a page or set of pages a job is used). The path follows the job id. Note that most of them are used only to remember what happened during the job execution and are generally safe to remove but some might use the job status for other purposes. Here are a few example of standard jobs (but there can be more coming from extensions):
Thomas Mortagne 229.1 339 ** ##jobs/status/distribution##: Remember the decisions taken in the Distribution Wizard (DW) of each wiki (usually during install/upgrade). It's recommended to keep them but the worst that can happen when deleting them is getting the DW again during next restart (if one of the step is triggered, for example when you have an orphaned or invalid extension installed) and have to cancel again some steps until the next upgrade
340 ** ##jobs/status/extension##: Removing them is safe and won't have any impact other than loosing the log of latest install/uninstall of each extension
341 ** ##jobs/status/refactoring##: Removing them is safe and won't have any impact other than loosing the log of latest refactoring operations
342 ** ##jobs/status/solr/indexer##: Removing it is safe and won't have any impact other than loosing the log of latest Solr indexing operation
343 ** ##jobs/status/wikicreation##: Removing it is safe and won't have any impact other than loosing the log of latest wiki creation operations
Manuel Leduc 207.1 344 * ##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).
Vincent Massol 235.3 345 * ##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.
346 * ##observation##: The [[extensions:Extension.Observation Module Remote]] uses this directory to store the unique identifier of the instance in a cluster.
Thomas Mortagne 235.1 347 * {{version since="15.9"}}##configuration.properties##{{/version}}: Contains configuration generated by XWiki itself (for example the validation and encryption keys used for cookies when not provided in ##xwiki.cfg##)
Vincent Massol 205.1 348
Vincent Massol 202.1 349 == Temporary Directory ==
350
351 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.
352
353 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.
354
355 {{info}}
Manuel Leduc 207.1 356 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:
Vincent Massol 232.2 357
358 {{code language="none"}}
359 {{velocity}}
Vincent Massol 232.3 360 $services.component.getInstance('org.xwiki.environment.Environment').getTemporaryDirectory().getCanonicalPath()
Vincent Massol 232.2 361 {{/velocity}}
362 {{/code}}
Vincent Massol 202.1 363 {{/info}}
364
Thomas Mortagne 53.1 365 = Configuring WebDAV (since 1.7) =
Asiri Rathnayake 31.1 366
Ecaterina Moraru (Valica) 174.1 367 WebDAV support has been added to XWiki beginning with XWiki 1.7. It is very important to note that WebDAV is enabled by default.
Asiri Rathnayake 32.1 368
Thomas Mortagne 53.1 369 == Securing WebDAV Server ==
Asiri Rathnayake 32.1 370
Manuel Smeria 140.2 371 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.
Asiri Rathnayake 33.1 372
Thomas Mortagne 53.1 373 == Disabling WebDAV ==
Asiri Rathnayake 33.1 374
Manuel Smeria 140.2 375 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:
Asiri Rathnayake 33.1 376
Thomas Mortagne 53.1 377 {{code language="xml"}}
Asiri Rathnayake 33.1 378 <servlet-mapping>
379 <servlet-name>webdav</servlet-name>
380 <url-pattern>/webdav/*</url-pattern>
381 </servlet-mapping>
Caleb James DeLisle 51.1 382 {{/code}}
Asiri Rathnayake 33.1 383
Thomas Mortagne 53.1 384 = Redirections =
Vincent Massol 13.1 385
Manuel Smeria 140.2 386 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}}.
Caleb James DeLisle 51.1 387 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.
Vincent Massol 13.1 388
Simon Urli 224.1 389 == Trusted domains ==
390
391 By default redirections are only allowed to the trusted domains of the wiki. Those trusted domains are coming from two sources:
392 - all domains used to access the wiki are trusted by definition, as well as the aliases used for subwikis,
393 - in ##xwiki.properties## it's possible to specify the property ##url.trustedDomains## to specify other domains that should be trusted.
394
Cami Andrei 226.1 395 In case a redirection is attempted on a domain not trusted, a warning is displayed in logs and the redirection is prevented.
Simon Urli 224.1 396 Note that this whole mechanism can be switched off by settings ##url.trustedDomainsEnabled## to ##false## in ##xwiki.properties##.
397
Thomas Mortagne 53.1 398 = Customizing the PDF export Look & Feel =
Vincent Massol 15.1 399
Sorin Burjan 61.1 400 {{info}}
Vincent Massol 235.3 401 * The default PDF export is now using the [[client-side PDF Export Application>>extensions:Extension.PDF Export Application.WebHome]]. The documentation below is for the older server-side PDF export (implemented with Apache FOP)
Sorin Burjan 61.1 402 {{/info}}
Ricardo Rodríguez 24.1 403
Vincent Massol 231.1 404 == General Architecture ==
405
Vincent Massol 30.2 406 Here's how the PDF and RTF exports currently work:
Silvia Macovei 154.2 407 {{image reference="XWikiExport201010290119.png"/}}
Ricardo Rodríguez 28.1 408
Sergiu Dumitriu 58.1 409 As shown in the diagram you can customize 4 parts:
Thomas Mortagne 53.1 410
Vincent Massol 210.2 411 * 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
Manuel Smeria 140.2 412 * 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
Vincent Massol 210.2 413 * 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.
414 * The FOP XSL transformation. The default one, ##fop.xsl##, is also packed in a core jar.
Vincent Massol 30.2 415
Manuel Smeria 140.2 416 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.
Ricardo Rodríguez 108.1 417
Thomas Mortagne 234.1 418 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>>Documentation.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):
Thomas Mortagne 53.1 419
Carlos Amengual 193.1 420 * ##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.
Vincent Massol 235.3 421 * ##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. 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)
Ricardo Rodríguez 109.1 422 * ##fopxsl##: contains the FOP to PDF/RTF XSL overriding the default one. It is processed by **[[Apache FOP>>http://xmlgraphics.apache.org/fop/]]**.
Vincent Massol 30.2 423
JohannesStoldt 119.1 424 {{warning}}
Manuel Smeria 140.2 425 The name of the class must be ##XWiki.PDFClass##.
JohannesStoldt 119.1 426 {{/warning}}
Sergiu Dumitriu 114.5 427
Ricardo Rodríguez 106.1 428 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.
429
Caleb James DeLisle 51.1 430 Then create a new page (say ##XWiki.PDFTemplate##) and add the ##XWiki.PDFClass## object to it.
Vincent Massol 30.2 431
Manuel Smeria 140.4 432 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}}}//.
Vincent Massol 30.2 433
Manuel Smeria 140.2 434 {{warning}}
Manuel Smeria 140.3 435 No template is used by default.
Manuel Smeria 140.2 436 {{/warning}}
437
Sergiu Dumitriu 79.1 438 {{info}}
Pascal Bastien 179.1 439 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:
Manuel Smeria 140.2 440
Vincent Massol 181.1 441 {{code language="css"}}
Sergiu Dumitriu 79.1 442 #template('colorThemeInit.vm')
Ricardo Rodríguez 28.1 443 h2 {
Sergiu Dumitriu 79.1 444 color: $theme.titleColor;
Ricardo Rodríguez 28.1 445 }
446
Sergiu Dumitriu 79.1 447 td {
448 border-color: $theme.borderColor;
Ricardo Rodríguez 28.1 449 }
Pascal Bastien 179.1 450
451 h1, .my_Page_break {
452 page-break-before:always;
453 }
454
Caleb James DeLisle 51.1 455 {{/code}}
Sergiu Dumitriu 79.1 456 {{/info}}
Ricardo Rodríguez 28.1 457
Vincent Massol 230.1 458 == Override the PDF Templates ==
Sorin Burjan 131.1 459
Vincent Massol 230.1 460 === Customize the PDF Footer ===
Sorin Burjan 131.1 461
Manuel Smeria 140.4 462 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##:
Sorin Burjan 131.1 463
Silvia Macovei 154.2 464 {{image reference="OverridePDFFooter.png"/}}
Sorin Burjan 131.1 465
Clemens Robbenhaar 144.2 466 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:
Clemens Robbenhaar 143.1 467
Silvia Macovei 154.2 468 {{image reference="OverridePDFFooterEdit1.png"/}}
Clemens Robbenhaar 144.2 469
Manuel Smeria 140.4 470 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:
Sorin Burjan 131.1 471
Manuel Smeria 140.2 472 {{code}}
473 $msg.Page <span class="page-number"></span> - $msg.get('lastmodifiedby')
474 $xwiki.getUserName($tdoc.author, false)
475 $msg.get('lastmodifiedon')
476 $!xwiki.formatDate($tdoc.date)
477 <div>
478 <p>CustomName SAS. All rights reserved. Confidential and proprietary document. Printed Copies are not controlled.</p>
479 </div>
480 {{/code}}
481
Sorin Burjan 131.1 482 To see the changes, just export any wiki page:
483
Silvia Macovei 154.2 484 {{image reference="OverridePDFFooterFinal.png"/}}
Sorin Burjan 131.1 485
Vincent Massol 230.1 486 === Customize the PDF Cover ===
Sorin Burjan 131.1 487
Manuel Smeria 140.4 488 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}}}//).
Sorin Burjan 131.1 489
Silvia Macovei 154.2 490 {{image reference="OverridePDFCover.png"/}}
Sorin Burjan 131.1 491
Manuel Smeria 140.4 492 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:
Sorin Burjan 132.1 493
Manuel Smeria 140.3 494 {{code}}
495 <img src="$xwiki.getSkinFile("logo.png")"/>
Sorin Burjan 131.1 496
497 <div style="text-align: center; width: 100%;">
498 <h1>
499 #set($title = "$!pdfdoc.display('title', 'rendered')")
500 #if($title == '')
501 $escapetool.xml($!doc.displayTitle)
502 #else
503 $escapetool.xml($title)
504 #end
505 </h1>
506 <br />
507 <br />
508 $!xwiki.getUserName($tdoc.author, false)
509 <br />
510 $!xwiki.formatDate($tdoc.date)
Manuel Smeria 140.3 511 </div>
512 {{/code}}
Caleb James DeLisle 137.1 513
Manuel Smeria 140.3 514 The last step consists of attaching the image "logo.png" to the skin:
Sorin Burjan 131.1 515
Silvia Macovei 154.2 516 {{image reference="OverridePDFCoverFinal.png"/}}
Sorin Burjan 131.1 517
Vincent Massol 230.1 518 === Override the CSS rules ===
Sorin Burjan 132.2 519
Vincent Massol 189.1 520 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:
Sorin Burjan 131.1 521
Vincent Massol 188.3 522 * ##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
523 * ##xhtmlxsl##: contains the XHTML2FO XSL transformation that will override the default one
524 * ##fopxsl##: contains the FOP XSL transformation that will override the default one
Sorin Burjan 131.1 525
Vincent Massol 189.1 526 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.
527
Silvia Macovei 154.2 528 {{image reference="CreatePDFClass.png"/}}
Sorin Burjan 131.1 529
Manuel Smeria 140.3 530 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.
Sorin Burjan 131.1 531
Oana Florea 196.1 532 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:
Manuel Smeria 140.3 533
Sorin Burjan 134.3 534 {{code}}
Sorin Burjan 131.1 535 (% class="mytable" %)
536 |=Column 1|=Column 2
537 | data|data
Sorin Burjan 134.4 538 {{/code}}
Manuel Smeria 140.3 539
Oana Florea 196.1 540 Next, edit the template page (e.g. XWiki.PDFTemplate) in "Objects" mode and write your own CSS rules in the "style" property:
Sorin Burjan 131.1 541
Silvia Macovei 154.2 542 {{image reference="CreatePDFTemplate.png"/}}
Sorin Burjan 131.1 543
Oana Florea 196.1 544 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}}}//.
Sorin Burjan 131.1 545
Oana Florea 197.2 546 {{image reference="SandboxTestPage1PDF.png" width="700"/}}
Sorin Burjan 131.1 547
Oana Florea 197.2 548 **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.
Oana Florea 196.1 549
Sorin Burjan 61.1 550 {{info}}
551 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.
552 {{/info}}
Ricardo Rodríguez 28.1 553
Pascal Bastien 179.1 554 {{warning}}
555 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]].
556 Furthermore, you can not use multiple attributes to select a CSS element (see issue: [[XWIKI-14653>>https://jira.xwiki.org/browse/XWIKI-14653]]).
557 {{/warning}}
558
Vincent Massol 230.1 559 === Override the xhtml2fo.xsl rules ===
Marc Lijour 141.1 560
Pascal Bastien 180.1 561 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.
Marc Lijour 141.1 562
Pascal Bastien 170.2 563 For example, to disable the generation of clickable URLs in the PDF, modify the following section:
Thomas Mortagne 234.2 564
565 {{code}}
566 <xsl:template match="html:a[@href]" mode="transform">
567 <fo:basic-link xsl:use-attribute-sets="a-link">
568 <xsl:call-template name="process-a-link"></xsl:call-template>
569 </fo:basic-link>
570 </xsl:template>
571 {{/code}}
572
Marc Lijour 141.1 573 as
Thomas Mortagne 234.2 574
575 {{code}}
576 <xsl:template match="html:a[@href]" mode="transform">
577 <fo:inline>
578 <xsl:call-template name="process-a-link"></xsl:call-template>
579 </fo:inline>
Thomas Mortagne 235.1 580 </xsl:template>
581 {{/code}}
Thomas Mortagne 234.2 582
583 or disable the generation of clickable URLs for some specific href links in the PDF
584
585 {{code}}
586 <xsl:template match="html:a[@href]" mode="transform">
587 <xsl:choose>
588 <!-- disable these internal links ("data-parent" attribute start with "#accordion" or href is "#my_anchor") -->
589 <xsl:when test="starts-with(@data-parent,'#accordion') or @href = '#my_anchor'">
Marc Lijour 141.1 590 <fo:inline>
Thomas Mortagne 234.2 591 <xsl:call-template name="process-a-link"></xsl:call-template>
Marc Lijour 141.1 592 </fo:inline>
Thomas Mortagne 234.2 593 </xsl:when>
594 <xsl:otherwise>
595 <fo:basic-link xsl:use-attribute-sets="a-link">
596 <xsl:call-template name="process-a-link"></xsl:call-template>
597 </fo:basic-link>
598 </xsl:otherwise>
599 </xsl:choose>
600 </xsl:template>
601 {{/code}}
Marc Lijour 141.1 602
Vincent Massol 230.1 603 === Debugging PDF export ===
Thomas Mortagne 167.1 604
Pascal Bastien 165.1 605 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:
606
607 {{code language="none"}}
Pascal Bastien 166.1 608 DEBUG c.x.x.p.i.PdfExportImpl - Cleaning HTML: //(show XHTML code without style)//
Pascal Bastien 165.1 609 DEBUG c.x.x.p.i.PdfExportImpl - Cleaned XHTML:
Pascal Bastien 166.1 610 DEBUG c.x.x.p.i.PdfExportImpl - Applying the following CSS: //(show CSS properties)//
611 DEBUG c.x.x.p.i.PdfExportImpl - HTML with CSS applied: //(show HTML code with CSS properties merged in tag with "style=" )//
Pascal Bastien 165.1 612 DEBUG c.x.x.p.i.PdfExportImpl - Final XHTML for export:
Pascal Bastien 166.1 613 DEBUG c.x.x.p.i.PdfExportImpl - Intermediary XSL-FO: //(show document with eXtensible Stylesheet Language - Formatting Objects used to generate PDF files)//
Pascal Bastien 165.1 614 DEBUG c.x.x.p.i.PdfExportImpl - Final XSL-FO source:
615 and finally DEBUG c.x.x.p.i.PdfExportImpl - PageSequence x-page-sequence generated 3 pages.
616 {{/code}}
617
Thomas Mortagne 53.1 618 = Configuring Wiki Syntaxes and default Syntax =
Ricardo Rodríguez 46.1 619
Thomas Mortagne 234.1 620 To know how to configure the [[Wiki syntaxes>>Documentation.UserGuide.Features.XWikiSyntax]] that are available to the user when writing wiki pages, check the [[Rendering Administration Application>>extensions:Extension.Rendering Administration Application]].
Ricardo Rodríguez 24.1 621
Vincent Massol 115.1 622 = Title behavior =
623
Manuel Smeria 140.3 624 The following configuration parameters (found in ##xwiki.cfg##) can be used to control title behavior:
Vincent Massol 115.1 625
626 {{code language="none"}}
627 #-# Defines whether title handling should be using the compatibility mode or not. When the compatibility
Vincent Massol 163.3 628 #-# mode is active, XWiki will try to extract a title from the document content.
629 #-# If the document's content first header (level 1 or level 2) matches the document's title
Vincent Massol 115.1 630 #-# the first header is stripped.
Vincent Massol 163.3 631 #-# The default value is 0.
632 # xwiki.title.compatibility=1
Vincent Massol 115.1 633
634 #-# Defines the maximum header depth to look for when computing a document's title from its content. If no header
635 #-# equal or lower to the specified depth is found then the computed title falls back to the document name.
636 #-# The default value is 2.
637 # xwiki.title.headerdepth=2
638
639 #-# Defines if setting the title field must be mandatory in the WYSIWYG and Wiki editors. It is mandatory when this
640 #-# property is set to 1. The default value is 0 (not mandatory).
641 # xwiki.title.mandatory=0
642 {{/code}}
643
Vincent Massol 117.1 644 = Link Label Generation =
645
Thomas Mortagne 234.1 646 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. ##~[~[mywiki:Main.WebHome]]##).
Vincent Massol 117.1 647
648 Her's an extract from the ##xwiki.properties## file which is where this feature is configurable:
649
650 {{code language="none"}}
Vincent Massol 159.1 651 #-# Specifies how links labels are displayed when the user doesn't specify the label explicitly.
Vincent Massol 117.1 652 #-# Valid values:
653 #-# %w: wiki name
Vincent Massol 159.1 654 #-# %s: full space name (e.g. space1.space2)
655 #-# Note: Prior to 7.4.2/8.0M2 this was only displaying the last space name
656 #-# %ls: last space name. New in 7.4.2/8.0M2
Vincent Massol 117.1 657 #-# %p: page name
Vincent Massol 159.1 658 #-# %np: nested page name (i.e. will display the space name for Nested Pages). New in 7.4.2/8.0M2
659 #-# %P: page name with spaces between camel case words, i.e. "My Page" if the page name is "MyPage"
660 #-# %NP: nested page name with spaces between camel case words, i.e. "My Page" if the page name is "MyPage".
661 #-# New in 7.4.2/8.0M2
Vincent Massol 117.1 662 #-# %t: page title
663 #-#
Vincent Massol 159.1 664 #-# Note that if the page title is empty or not defined then it defaults to %np. This is also the case
Vincent Massol 117.1 665 #-# if the title cannot be retrieved for the document.
666 #-#
Vincent Massol 159.1 667 #-# The default is "%np". Some examples: "%s.%p", "%w:%s.%p".
668 # rendering.linkLabelFormat = %np
Vincent Massol 117.1 669 {{/code}}
670
Vincent Massol 121.1 671 = Rendering Cache =
672
Vincent Massol 176.1 673 See the [[Performance page>>Documentation.AdminGuide.Performances.WebHome#HRenderingcache]].
Vincent Massol 121.1 674
Guillaume Lerouge 125.1 675 = Allowed Pages for Inactive Users =
676
Sergiu Dumitriu 125.2 677 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.
Guillaume Lerouge 125.1 678
Sergiu Dumitriu 125.2 679 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).
Guillaume Lerouge 125.1 680
Manuel Smeria 140.3 681 {{info}}
682 Inactive users are always allowed to see the //XWiki.AccountValidation// page in order to validate their account.
683 {{/info}}
Guillaume Lerouge 125.1 684
Vincent Massol 125.8 685 = Rendering Transformations =
686
Manuel Smeria 140.3 687 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##:
Vincent Massol 125.8 688
689 {{code language="none"}}
690 #-# Controls what transformations will be executed when rendering content.
691 #-# A transformation modifies the parsed content. For example the Icon transformation replaces some characters with
692 #-# icons, a WikiWord transformation will automatically create links when it finds wiki words, etc.
693 #-# Note that the Macro transformation is a special transformation that replaces macro markers by the result of the
694 #-# macro execution. If you don't list it, macros won't get executed.
695 #-# The default value is: rendering.transformations = macro, icon
696 {{/code}}
697
Manuel Smeria 140.3 698 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}}.
Vincent Massol 125.8 699
Manuel Leduc 229.2 700 = Macros categories and visibility =
701
702 You can override the default categories of a macro by editing ##xwiki.properties##.
703
Jan-Paul Kleijn 232.1 704 {{code language="properties"}}
Manuel Leduc 229.2 705 #-# Overrides default macro categories (Each macro has default categories already defined, for example
706 #-# "Navigation" for the Table of Contents Macro).
707 #-# Note: the categories are case sensitive.
708 #-#
709 #-# Ex: To redefine the macro categories for the TOC macro so that it'd be in the "My Category" and "Deprecated"
710 #-# categories + redefine the category for the Script Macro to be "My Other Category", you'd use:
711 # rendering.transformation.macro.categories = toc = My Category\,Deprecated
712 # rendering.transformation.macro.categories = script = My Other Category
713 {{/code}}
714
Vincent Massol 237.1 715 You can also configure the macro categories for which macros should be hidden by default, by editing ##xwiki.properties##:
Manuel Leduc 229.2 716
Lucas Charpentier (Sereza7) 236.2 717 {{code language="properties"}}
Manuel Leduc 229.2 718 #-# Override the default hidden macro categories.
719 #-# Note: the categories are case sensitive.
720 #-#
Manuel Leduc 233.1 721 #-# The default value is:
722 # rendering.transformation.macro.hiddenCategories = Internal,Deprecated
723 #-#
724 #-# For instance, to make the "Development" category hidden by default, in addition to the "Internal" and
Manuel Leduc 229.2 725 #-# "Deprecated" categories, you'd use:
726 # rendering.transformation.macro.hiddenCategories = Development,Internal,Deprecated
727 {{/code}}
728
Vincent Massol 237.1 729 Note that these macros are still visible if your users has been [[configured to show hidden pages>>extensions:Extension.User Profile Application#HEditPreferences]].
730
Vincent Massol 135.1 731 = Securing Groovy Scripts =
732
Vincent Massol 136.1 733 See:
Vincent Massol 135.1 734
Manuel Smeria 140.3 735 * The [[Commons Groovy Module>>extensions:Extension.GroovyModuleCommons]]
736 * The [[Platform Groovy Module>>extensions:Extension.GroovyModulePlatform]]
737
Vincent Massol 182.1 738 = Lock Duration =
739
740 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.
741
742 In order to increase this duration, you have 2 options:
743
744 * 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##.
745 * Or add the configuration in the wiki itself:
746 ** Edit the ##XWiki.XWikiPreferences## document using the class editor
747 ** Add a Number property named ##lock_Timeout## (case sensitive)
748 ** Edit the ##XWiki.XWikiPreferences## document using the object editor
749 ** Find the ##lock_Timeout## property and put the desired number of *seconds* a lock should be valid for
750 ** Don't forget to save the document
751
Vincent Massol 203.1 752 = Editing =
Vincent Massol 185.1 753
Vincent Massol 203.1 754 == Default editor ==
755
Vincent Massol 215.1 756 You can choose which default editor to use when editing wiki content (wiki or WYSIWYG editor). XWiki uses the following strategy when deciding which editor to use:
Cami Andrei 226.1 757
Vincent Massol 215.1 758 1. If editing a [[TextArea object property>>Documentation.DevGuide.DataModel.WebHome]] and that property has explicitly specified a specific editor to be used to edit it, then that editor will be used. This is set when [[using the Class editor>>Documentation.UserGuide.Features.PageEditing#HClasseseditingmode]]. For example:(((
759 {{image reference="editor-class-property.png"/}}
760 )))
761 1. Then, if no property editor is defined, or if editing standard wiki content (like page content), XWiki will check if the [[current user has configured an editor for a given content type>>extensions:Extension.Edit Module#HConfiguretheDefaultEditor]] and if the current edited content is of that type, then that editor will be used. For example:(((
762 {{image reference="editor-content-user.png"/}}
763 )))
764 1. Then, if no property editor is defined, XWiki will check if the [[current (nested) page has configured an editor for a given content type>>extensions:Extension.Edit Module#HConfiguretheDefaultEditor]] and if the current edited content is of that type, then that editor will be used. For example:(((
765 {{image reference="editor-content-page.png"/}}
766 )))
767 1. Then, if no property editor is defined, XWiki will check if the [[current wiki has configured an editor for a given content type>>extensions:Extension.Edit Module#HConfiguretheDefaultEditor]] and if the current edited content is of that type, then that editor will be used. For example:(((
768 {{image reference="editor-content-wiki.png"/}}
769 )))
770 1. Then, if no property editor is defined, XWiki will check if there's a [[configuration in ##xwiki.properties## for a given content type>>extensions:Extension.Edit Module#HConfiguretheDefaultEditor]] and if the current edited content is of that type, then that editor will be used. For example:(((
771 {{code language="properties"}}
772 edit.defaultEditor.org.xwiki.rendering.syntax.SyntaxContent=text
773 {{/code}}
774 )))
775 1. Then, if no editor has been defined, XWiki will check if the current [[user has defined a preferred editor to use>>extensions:Extension.User Module.User Profile Application.WebHome#HEditPreferences]]. For example:(((
776 {{image reference="editor-user.png"/}}
777 )))
Cami Andrei 226.1 778 1. Then, if no preferred editor to use has been defined for the current user, XWiki will check the default editor set up in the Page Administration (XWiki.XWikiPreferences of the page) . Could be set because of [[XWIKI-17324>>https://jira.xwiki.org/browse/XWIKI-17324]]. For example:(((
779 {{image reference="editor-space-preference-object.png"/}}
780 )))
Vincent Massol 215.1 781 1. Then, if no editor has been defined, XWiki will check the [[default editor set up in the Administration UI>>extensions:Extension.Administration Application#HEditing]]. For example:(((
782 {{image reference="editor-admin.png"/}}
783 )))
Vincent Massol 203.1 784
785 == Default WYSIWYG editor ==
786
Vincent Massol 215.1 787 You can configure the [[default WYSIWYG editor to use>>extensions:Extension.CKEditor Integration.WebHome#HAdministrationSection]].
788
Vincent Massol 203.1 789 See the [[WYSIWYG Editor Configuration>>extensions:Extension.CKEditor Integration.WebHome#HConfiguretheEditor]] page to find out how you can enable or disable editing features.
790
791 == Section Editing ==
792
Vincent Massol 185.1 793 By default section editing is limited to level 1 and level 2 sections. This can be controlled by editing ##xwiki.cfg##:
794
795 {{code}}
796 #-# This parameter controls the depth of sections that have section editing.
797 #-# By default level 1 and level 2 sections have section editing.
798 xwiki.section.depth=2
799 {{/code}}
800
801 You can also enable/disable section editing with:
802
803 {{code}}
804 #-# This parameter will activate the sectional editing.
805 xwiki.section.edit=1
806 {{/code}}
807
Vincent Massol 203.1 808 == Editing Conflicts ==
809
Vincent Massol 204.1 810 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##:
Vincent Massol 203.1 811
Manuel Leduc 207.1 812 {{code language="none"}}
Vincent Massol 204.1 813 #-# Indicate if the mechanism to detect and handle edition conflicts should be enabled or not.
814 #-# If disabled, it means that in case of edition conflicts, the latest save will be always take into account, and
815 #-# erase previous data (which can always be recovered in the history of the document).
816 #-# This option is provided because the feature is still experimental and it could be useful is some specific usecases
817 #-# to switch it off. However it is not recommended to do so.
818 #-#
819 #-# The default is:
820 # edit.conflictChecking.enabled = true
Vincent Massol 203.1 821 {{/code}}
822
823 == In-place Editing ==
824
Vincent Massol 235.2 825 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##:
Vincent Massol 203.1 826
Manuel Leduc 207.1 827 {{code language="none"}}
Vincent Massol 203.1 828 #-# Indicate if the XWiki documents should be edited in-place, without leaving the view mode, whenever possible (e.g. if
829 #-# the default edit mode for that document and the preferred editor both support in-place editing). When enabled,
830 #-# clicking on the document Edit button makes the document title and content editable in-place, without leaving the
831 #-# view mode. When disabled, clicking on the document Edit button loads the default (stand-alone) edit mode for that
832 #-# document.
833 #-#
834 #-# The default is:
835 # edit.document.inPlaceEditing.enabled = true
836 {{/code}}
837
Manuel Leduc 207.1 838 = Delete Pages =
839
Lucas Charpentier (Sereza7) 236.2 840 This section is hidden when the [[recycle bin is not activated>>#HDocumentrecyclebin]].
Manuel Leduc 210.3 841
Manuel Leduc 207.1 842 == Enabling Advanced users to skip the recycle bin ==
843
844 Advanced users can be allowed choose if they want to skip the recycle bin (and remove the pages permanently) when deleting pages.
845
846 To do so, search for the "Delete" section and set "can skip the recycle bin" to Yes. The default value is No.
847
Vincent Massol 235.3 848 {{image reference="skip_recycle_bin_admin_cropped.png"/}}
Manuel Leduc 207.1 849
Manuel Leduc 208.1 850 Advanced users can be allowed choose if they want to skip the recycle bin (and remove the pages permanently) when deleting pages.
851
852 To do so, search for the "Delete" section and set "can skip the recycle bin" to Yes. The default value is No.
853
Vincent Massol 235.3 854 {{image reference="skip_recycle_bin_admin_cropped.png"/}}
Manuel Leduc 208.1 855
Manuel Leduc 212.1 856 The configuration is resolved by looking in three locations, from the most specific to the least specific:
857
858 * In the configuration of the current wiki
859 * In the configuration of the main wiki
860 * In ##xwiki.properties## (see the property details below)
861
862 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.
863
864 Details of the configuration on ##xwiki.properties##:
865
866 {{code language="none"}}
867 #-# Indicates whether skipping the recycle bin when deleting pages is allowed for Advanced users.
868 #-# It is disabled by default.
869 #-# This setting is only used if the wiki has a recycle bin activated (xwiki.recyclebin=1 in xwiki.cfg).
870 #-# This setting can be overloaded:
871 #-# * By the main wiki in the Refactoring.Code.RefactoringConfigurationClass class of the
872 #-# Refactoring.Code.RefactoringConfiguration document of the main wiki.
873 #-# * By sub-wikis in the Refactoring.Code.RefactoringConfigurationClass class of the
874 #-# Refactoring.Code.RefactoringConfiguration document of the sub-wikis (itself overloading the main wiki's
875 #-# configuration).
876 #-#
877 #-# The default value is:
878 # refactoring.isRecycleBinSkippingActivated = false
879 {{/code}}
880
Vincent Massol 238.1 881 = Readonly =
882
883 In order to configure your XWiki instance to be readonly (useful when doing an upgrade by setting up a new instance and you don't want new content to be created, for example).
884
Vincent Massol 238.2 885 To achieve this, you need to edit the ##xwiki.cfg## configuration file and set the ##xwiki.readonly## property to true and restart XWiki.
Vincent Massol 238.1 886
Vincent Massol 238.2 887 If you want to turn on the readonly mode live without a restart, you can also execute a small snippet with a user having programming rights (a restart of XWiki will remove the readonly mode in this case), while waiting for a [[future feature>>https://jira.xwiki.org/browse/XWIKI-10119]]:
888
Vincent Massol 238.1 889 {{code language="none"}}
890 {{groovy}}
891 def xwiki = xcontext.getXWiki()
892 xwiki.isReadOnly = true
893 {{/groovy}}
894 {{/code}}
895
896 Note that this flag doesn’t prevent against any modifications in your wiki, there’s [[still some places where it’s not taken into account>>https://jira.xwiki.org/browse/XWIKI-18437]].
897
Thomas Mortagne 53.1 898 = Sample xwiki.cfg =
TimL 1.18 899
Vincent Massol 158.1 900 See {{scm path="xwiki-platform-tools/xwiki-platform-tool-configuration-resources/src/main/resources/xwiki.cfg.vm"}}xwiki.cfg.vm{{/scm}}
Vincent Massol 30.1 901
Vincent Massol 158.1 902 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.
Vincent Massol 50.1 903
Thomas Mortagne 53.1 904 = Sample xwiki.properties =
Vincent Massol 50.1 905
Clemens Robbenhaar 188.2 906 See {{scm path="xwiki-platform-tools/xwiki-platform-tool-configuration-resources/src/main/resources/xwiki.properties.vm"}}xwiki.properties.vm{{/scm}}
Vincent Massol 50.1 907
Clemens Robbenhaar 188.2 908 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