Wiki source code of Page Editing

Last modified by Thomas Mortagne on 2024/02/16

Show last authors
1 {{box cssClass="floatinginfobox" title="**Contents**"}}
2 {{toc/}}
3 {{/box}}
4
5 Describes all the features available to edit a wiki page.
6
7 = Content Editing =
8
9 All XWiki pages are editable provided you are logged in and / or you have [[edit right>>Documentation.UserGuide.Features.RightsManagement]].
10
11 To edit a page, use the **{{velocity}}$services.icon.render('pencil'){{/velocity}} Edit** button, usually located in the top right corner of the page (but its position may vary depending on the skin your wiki is using); for the [[Flamingo skin>>extensions:Extension.Flamingo Skin]] it looks like this:
12
13 {{image reference="EditSimpleModeFlamingo.png"/}}
14
15 = Section Editing =
16
17 Use the **section** edit link (pencil icon), located on the right of some of the page headings. For example:
18
19 {{image reference="sectionEditLink.png"/}}
20
21 See the [[Section Configuration page in the Admin Guide>>Documentation.AdminGuide.Configuration.WebHome#HSectionEditing]] for configuration options.
22
23 {{info}}
24 Section edition links are generated when the page content is defined with plain wiki markup and for content defined in the current page (e.g. content included with the Include or Display macros won't have edition links). Headings that are generated with [[Velocity script>>extensions:Extension.Velocity Macro]] or the [[HTML macro>>extensions:Extension.HTML Macro]] or that are inside a table cell also don't have the edition links.
25 {{/info}}
26
27 If you can't find the Edit button nor the section edit links then it probably means you don't have the right to edit the current page.
28
29 {{id name="HSimpleandAdvancededitingmodes"/}}
30
31 = Simple and Advanced editing profiles =
32
33 Because XWiki is an [[application wiki>>Main.SecondGenerationWiki]], not all users will need to use the same features. For this reason, XWiki comes with a basic and an advanced editing profile. Users can easily choose which editing profile they prefer on their User Profile page (available at the top right of the page when you are logged in). This way, standard users do not have to choose between editing profiles they may not be familiar with. By default, new users are given the Basic editing profile, but they can switch to the Advanced profile as described below.
34
35 {{id name="HSimpleMode"/}}
36
37 == Simple Profile ==
38
39 Clicking on the "Edit" button has the following behavior for a "Simple" user:
40
41 * If the current page is displayed by a sheet (e.g. if the page has an object attached that has a sheet associated with it) then the page will be edited in [[Inline form>>#HFormeditingmode28akainlinemode29]] edit mode.
42 * If the current page does not have a sheet (i.e. it's a plain wiki page) then:
43 ** {{version since="12.3"}}If the preferred content editor is the WYSIWYG editor and the syntax of the current page supports WYSIWYG editing then the page will be [[edited in-place>>||anchor="HIn-placeediting"]]{{/version}}.
44 ** {{version before="12.3"}}If the preferred content editor is the WYSIWYG editor and the syntax of the current page supports WYSIWYG editing then the page will be [[edited in Standalone mode>>||anchor="HWYSIWYGeditingmode"]].{{/version}}
45 ** Otherwise, the page will be edited in [[Wiki edit mode>>#HWikieditingmode]].
46
47 {{id name="HAdvancedMode"/}}
48
49 == Advanced Profile ==
50
51 Experienced XWiki users will want to use all the editing choices (particularly those who want to use XWiki programming features). They can choose to switch to advanced profile on their user profile page (see image below). Following this, clicking on the arrow in the "Edit" button on any page will display the full editing menu, letting the user choose the mode to use ("Wiki", "Inline form", "Objects"...).
52
53 {{image reference="AdvancedEditMode.png"/}}
54 Once you have switched to advanced profile, the "Edit" menu will look like the following, on mouse click:
55
56 {{image reference="EditAdvancedMode.png"/}}
57
58 * [[Form Editing Mode>>#HFormeditingmode28akainlinemode29]]
59 * [[Object Editing Mode>>#HObjectseditingmode]]
60 * [[Class Editing Mode>>#HClasseseditingmode]]
61 * [[Access Rights Editing Mode>>#HAccessRightseditingmode]]. Note that this menu entry will only appear for [[Terminal pages>>Documentation.UserGuide.Features.ContentOrganization#HTerminology]]. For [[Nested Pages>>Documentation.UserGuide.Features.ContentOrganization#HTerminology]], you'll be able to access rights by clicking on the "Administer Page" entry in the "More Actions" menu (3 vertical dots menu).
62
63 In addition, advanced users have the ability to [[create Terminal pages>>Documentation.UserGuide.Features.DocumentLifecycle#HByusingtheAddPageaction]] (i.e. pages that can't have children).
64
65 = Common edit actions =
66
67 All edit modes have some or all of the elements in the following image :
68
69 {{image reference="autosave.png"/}}
70
71 {{info}}
72 A wiki page's version is composed of two numbers separated by a dot. Saving a major change will increase the first number and reset the second to "1", while a minor edit will just increase the second number.
73 {{/info}}
74
75 The **minor edit** checkbox is meant to mark the fact that superficial changes were made to the page. Such changes may include, but are not restricted to: spelling error corrections, text rearrangements, formatting. It is the editor's responsibility to distinguish between major and minor changes.
76
77 By default, minor edits do not appear in the "What's New" page and in the page history. The option "Show minor edits" will list all the versions, including minor ones.
78
79 The **Version summary** field allows entering a short description of the changes made to the page in the version that is being saved. It is displayed in the history page and it is meant to increase comprehensibility of the content's evolution.
80
81 The **Cancel** button causes the changes to be discarded and forwards to the page view mode.
82
83 The **Preview** button shows the page as it would look with the current changes saved, but does not actually change the page. From the preview mode, the user will be able to cancel the changes, return to edit mode or save the changes. This button is not available in all edit modes.
84
85 The **Save & Continue** button submits the current changes and returns to the current edit mode.
86
87 The **Save & View** button submits the current changes and returns to the page view mode.
88
89 == Autosave ==
90
91 The Autosave feature automatically saves the page you're working on as a minor version at a given interval. Just check the Autosave checkbox next to the action buttons, at the bottom of the editing area. You can optionally change the autosave interval by entering the desired number of minutes in the input following the checkbox.
92
93 {{warning}}
94 Note that this feature is still not fully mature since it creates a new revision of the page every N seconds (where N is the time interval you specify). This means a page may have a lot of revisions which will potentially hamper performances and history readability. In the future one idea is to [[implement the notion of pseudo versions>>https://jira.xwiki.org/browse/XWIKI-500]].
95 {{/warning}}
96
97 {{id name="HWikieditingmode"/}}
98
99 = Wiki editing =
100
101 This is a mode you should be familiar with if you're already a wiki user. In this mode you can enter text using a simple [[Wiki Syntax>>Documentation.UserGuide.Features.XWikiSyntax]]. Note that the [[Help Application>>extensions:Extension.Help Center Application.WebHome]] provides help on the syntax when editing a page.
102
103 This is how the wiki edit mode looks like with the Flamingo skin:
104
105 {{image reference="WikiEditing.png"/}}
106
107 = WYSIWYG editing =
108
109 Editing in WYSIWYG is ideal for first time users or people who do not want to use the Wiki Syntax. It's similar to your favorite word processor in which you see how what you type is rendered. There's a toolbar available to add special effects to your text, add images, insert links, add macros, etc.
110
111 Read the [[documentation for using the WYSIWYG editor>>extensions:Extension.CKEditor Integration.WebHome]] for more details.
112
113 There are 2 modes available:
114
115 {{toc scope="local"/}}
116
117 {{id name="HIn-placeediting"/}}
118
119 == In-place editing mode ==
120
121 {{version since="12.3"}}
122 In-place editing allows you to edit the title and the content of a wiki page while remaining in view mode. The advantage over the [[Standalone WYSIWYG>>||anchor="#Standaloneediting"]] editing mode is that it loads fast and that you don't loose the context. Moreover, the in-place section editing provides a quick way to edit a section of a page's content without having to scroll the page.
123
124 {{image reference='inPlaceEdit.png'/}}
125
126 You can translate the page in the current language, if the translation is missing and multilingual is on, by using the Translate button. All the following changes will be saved to the new translation.
127
128 {{image reference='editInPlace-translate.png'/}}
129
130 {{info}}
131 Although enabled by default, this editing mode [[can be disabled by administrators>>Documentation.AdminGuide.Configuration.WebHome#HIn-placeEditing]].
132 {{/info}}
133 {{/version}}
134
135 == Standalone editing mode ==
136
137 Standalone editing allows you to edit the content by navigating to an Edit UI different from the view UI.
138
139 {{version before="12.3"}}
140 This was the main WYSIWYG editing mode. Advanced users can still access it by choosing it in the page Edit Menu. Simple users can also access if the wiki has been configured to have the in-place editing mode disabled, in which case, this mode becomes the default WYSIWYG editing mode.
141 {{/version}}
142
143 {{image reference="wysiwyg.png"/}}
144
145 = Choosing a Syntax =
146
147 You have the option to choose what syntax you want to use for writing the content of a page (see the [[XWiki Syntax Guide>>Documentation.UserGuide.Features.XWikiSyntax]] for more details and the [[Rendering wiki>>rendering:Main.WebHome]] for a full list of available syntaxes).
148
149 To choose the syntax to use for the current page, you can do one of the following:
150
151 * (((
152 {{version since="12.3"}}
153 Go to the [[Information tab>>Documentation.UserGuide.Features.DocumentLifecycle.WebHome||anchor='HInformation']]:(((
154 {{image reference='ChangeSyntaxInPlace.png'/}}
155 )))
156 {{/version}}
157 )))
158 * Edit the page in wiki edit mode or in WYSIWYG Standalone edit mode and change the syntax by using the right Panel entitled "Information Panel", as in:(((
159 {{image reference="ChangeSyntaxPanel.png"/}}
160 )))
161
162 {{info}}
163 By default only the latest XWiki syntax is enabled, but you can [[configure other syntaxes>>extensions:Extension.Rendering Administration Application]] from the "Global Administration > Editing > Syntaxes", as shown in:
164
165 {{image reference="Syntax2.png"/}}
166 {{/info}}
167
168 == Converting between Syntaxes ==
169
170 If you already have content for the page in a given syntax and you try to change the syntax to another one, then XWiki will propose to convert your content to the new syntax, if it knows how to perform that conversion (i.e. if there is a parser available for the old syntax and a renderer available for the new syntax). For instance, switching to the XWiki Syntax 2.0+ will always prompt for a conversion.
171
172 {{image reference="syntaxConversionConfirmation.png"/}}
173
174 If you accept the syntax conversion then XWiki will update the content editor with the result of the conversion. The quality of the conversion will usually be good but may depend on the quality of the original Syntax; for example converting from XWiki Syntax 1.0 to XWiki Syntax 2.0+ may not generate a perfect result so you'll need to review manually the result.
175
176 Rejecting the syntax conversion will only change the syntax identifier, letting you do the syntax conversion yourself. The same will happen if the syntax conversion is not possible.
177
178 {{image reference="syntaxConversionUnsupported.png"/}}
179
180 {{id name="HWYSIWYGeditingmode"/}}
181
182 = Setting the page parent =
183
184 {{version since="7.2"}}
185 The concept of setting the page parent has been deprecated in favor of the [[Nested Pages feature>>Documentation.UserGuide.Features.ContentOrganization.WebHome]]. The location of a page is no longer controlled by the "parent" field. In order to change a page's location you now need to [[Rename or Move>>Documentation.UserGuide.Features.DocumentLifecycle.WebHome||anchor="HMove2FRename"]] it to another location.
186
187 For example a page "CEO" inside a page "Boarding" inside a page "Management" inside a page "Staff" you would have the following Breadcrumb:
188
189 {{image reference="referencebreadcrumb.png"/}}
190 {{/version}}
191
192 {{version before="7.2"}}
193 In order to have an organized structure of your page, when you create a new page in a space, its parent will be automatically set to be the WebHome page of the space in which you create the page.
194
195 If you want to change the parent of the page, you have to edit the page with wiki or WYSIWYG editors.
196
197 {{image reference="documentParent.png"/}}
198
199 Click on the small pencil above the page title in order to edit the page parent.
200
201 {{image reference="documentParentCollapsed.png"/}}
202
203 {{info}}
204 If the page has no parent set, the breadcrumbs feature will not show the path to navigate from the Main.WebHome to the page. These pages are called orphan pages.
205 {{/info}}
206
207 {{image reference="documentParentNoParent.png"/}}
208
209 {{image reference="pageNoBreadcrumb.png"/}}
210
211 {{warning}}
212 Please note that when you copy a page, its parent field will not be updated accordingly to the new space the copy is in. You will have to do that manually.
213 {{/warning}}
214 {{/version}}
215
216 = Hiding Pages =
217
218 It's possible to hide (or unhide) pages. When a page is hidden, it'll still be visible if you navigate explicitly to it but it'll disappear from Search, Page Index, Navigation Trees, etc. However the hidden page will still be visible to users who've [[configured their user profile to show Hidden Pages>>extensions:Extension.User Profile Application#HEditPreferences]]. By default, users don't see hidden pages.
219
220 {{info}}
221 {{version since="12.2"}}
222 The SuperAdmin user always sees hidden pages.
223 {{/version}}
224 {{/info}}
225
226 To hide a page, you can do one of the following:
227
228 * (((
229 {{version since="12.3"}}
230 Go to the [[Information tab>>Documentation.UserGuide.Features.DocumentLifecycle.WebHome||anchor='HInformation']]:(((
231 {{image reference='HidingInformationTab.png'/}}
232 )))
233 {{/version}}
234 )))
235 * Edit the page in wiki edit mode or in WYSIWYG Standalone edit mode and set the hidden option, by using the right Panel entitled "Information Panel", as in:(((
236 {{image reference="hiding.png"/}}
237
238 {{info}}
239 When you're a "Simple" user, you only have a single Edit button available and when clicked that takes you to the default edit mode. If the page you're editing is configured to use the "Form" editor then you won't see the side panel as on the screenshot above. Thus you'll need to [[switch to being an "Advanced" user and Edit in Wiki or WYSIWYG mode>>#HAdvancedMode]].
240 {{/info}}
241 )))
242
243 {{info}}
244 Hiding is not replacing permissions which is what you'll use if you want to make pages not visible to some user or group.
245 {{/info}}
246
247 = Form editing mode (aka inline mode) =
248
249 Inline mode, or Form mode, is a special feature of XWiki, that allows administrators to define patterns of structured information (like a blog entry, or a standard tax form). Pages containing such structured information can be edited and re-edited as simple HTML Forms, which have (almost) the same structure as the displayed page. Thus, when clicking the edit button, it seems that the page content can be edited in-place, or inline and the form view is automatically displayed.
250
251 Technically the inline mode is triggered automatically differently whether the page is written in XWiki Syntax 1.0 or 2.0, using the following algorithm:
252
253 * XWiki Syntax 1.0: If the page contains a call to ###includeForm()##
254 * XWiki Syntax 2.0: If the page has an associated sheet (see the [[Developer documentation for the Sheet Module>>extensions:Extension.Sheet Module]])
255
256 Note that it is beyond the scope of this simple guide to explain the programming technique supporting this feature. Please check the [[Developer's Guide>>Documentation.DevGuide.WebHome]] to find out more about programming with Objects/Classes and Forms.
257
258 = Objects editing mode =
259
260 In XWiki it's possible to attach Objects to pages. Objects are simple sets of properties with values that add additional information about a page. For example a security right can be added to a page to control its rights, a blog object is attached to a page representing a blog entry, etc. Again, it's beyond this simple guide to explain this programming technique. Please check the [[Developer's Guide>>Documentation.DevGuide.WebHome]] to know more about programming with Objects/Classes.
261
262 {{image reference="ObjectEditor.png"/}}
263
264 = Classes editing mode =
265
266 We've seen that some pages can have Objects attached to them. Some pages can also be Object definitions, a.k.a Classes. The Classes editing mode calls the class editor on the current page, allowing to edit the Classes attached to the page. Again, it's beyond this simple guide to explain this programming technique. Please check the [[Developer's Guide>>Documentation.DevGuide.WebHome]] to find out more about programming with Objects/Classes.
267
268 {{image reference="ClassEditor.png"/}}
269
270 = Access Rights editing mode =
271
272 This mode allows you to control the access rights for the page you're viewing (you need to have the required access rights to modify a page's rights). See the [[Rights Management>>Documentation.UserGuide.Features.RightsManagement]] topic for more information.
273
274 = Full Screen Mode =
275
276 A full-screen mode is available in XWiki. When editing a page either in Wiki or WYSIWYG mode, clicking on the button at the top right of the edit box will send the editor in full-screen mode. You can then edit your page as usual and click on the button to return to the usual interface when you are finished.
277
278 //The button you need to click to go in full-screen mode//
279 {{image reference="FullScreenButton.png"/}}
280
281 //Editing while in full-screen mode//
282 {{image reference="FullScreen.png"/}}
283
284 = Title Behavior =
285
286 Pages have both names and titles. The page name is used in the URL to the page while the title is used to display a user-friendly short description of the page. The title is used for example as the top level headings when viewing a page.
287
288 Page titles can be set while editing pages in Wiki or WYSIWYG modes.
289
290 Titles are not mandatory by default but it's possible to [[configure XWiki to make titles mandatory>>Documentation.AdminGuide.Configuration#HTitlebehavior]].
291
292 The title's content is parsed using Velocity so you're also allowed to put Velocity content in there in addition to plain text (this is for example useful when wanting to internationalize titles). Note that you're not allowed to use any wiki markup.
293
294 When a page has no title set then XWiki will use the page name as its title.
295
296 {{info}}
297 It's also possible to [[configure XWiki to extract the topmost heading>>Documentation.AdminGuide.Configuration#HTitlebehavior]] from the page's content. For example if you have a level 1 heading, it'll be used as the page title. If you don't have a level 1 heading but have a level 2 heading then the level 2 heading will be used as the page title. The heading level depth XWiki used for titles is controlled in [[XWiki's title configuration>>Documentation.AdminGuide.Configuration#HTitlebehavior]]. Since you're allowed to use any wiki syntax in headings, if a page doesn't have a title set (and titles are not mandatory) then any wiki markup in the topmost headings will get rendered when displaying the extracted title for that page.
298
299 However this is a backward compatibility option and we do not recommend that you use it. The reason we deprecated this behavior that allowed styling the titles is because it leads to all sorts of issues:
300
301 * The title is used in several places including the browser's title or in LiveTable results and since those places forces to display the title in plain text, this means you'd see wiki markup or HTML displayed as is
302 * When the heading is generated through a script, if that script gets executed outside of the page's rendering context, it can lead to side effects and the page title displayed in LiveTable or other places can be completely wrong
303 {{/info}}
304
305 = Authors =
306
307 Pages have different kind of authors that are updated and manipulated for different purposes.
308 {{version since="14.0RC1"}}We distinguish 4 different kind of author information:
309 * the ##creator##: there's no ambiguity, it's the user who created the document
310 * the ##content author##: it's the author who performed a change in the content of the document, by opposition with changing a metadata of the document such as an xobject, or an attachment. We distinguish it for security reason since the content of the document might contain scripts that are executed when viewing the document.
311 * the ##effective metadata author##: it's the author which has been used to save any change in the document, content or not. So changing the content of the document will update both this author, and the content author. However, updating an attachment of a document will only update this author, not the content author.
312 * the ##original metadata author##: it's finally the author you see displayed in the interface, it's most of the time the same as the ##effective metadata author## but in some usecases it might be different. For example when a script wants to allow a user to perform a save without changing the effective author for security reasons, but wants to display the author who actually triggered the save.{{/version}}
313
314 = Locking =
315
316 By default, when you edit a page, a lock is put on the page (the duration [[can be configured>>Documentation.AdminGuide.Configuration.WebHome#HLockDuration]]), till you either Save (any kind of Save), Cancel the edition or close the browser window.
317
318 If you keep the page open in the browser without doing any Save action, the lock will be active by default for 30 minutes (see [[lock duration>>Documentation.AdminGuide.Configuration.WebHome#HLockDuration]] configuration).
319
320 Anyone trying to edit a page that is locked will see the following warning message allowing you to know that the page is locked and also to force the lock.
321
322 {{image reference="lock.png" width="650px"/}}
323
324 If you force the lock then the last user who saves will overwrite the content with his version of the page.
325
326 = Edit conflict =
327
328 {{version since="11.2RC1"}}
329 XWiki detects during the edition of a page if a conflict might happen when saving the page. If this warning occurs, this means someone edited and saved the page while you were working on it.
330
331 {{version since='11.3.1, 11.4RC1'}}
332 You have two main choices:
333 * force save the page: in that case you will override saved while you were editing the page; they are not really lost though since they might be retrieved in the previous version of the page.
334 * reload the editor: in that case your changes **will be lost** and the editor will be reloaded with the last version saved.
335 {{/version}}
336
337 We display the diff between the version you're trying to save and the last version that has been saved, so you can copy some changes made and reapply them if you like.
338 Note that you can also simply cancel the save and go back to the editor to make changes before trying again to save.
339 You can click on the arrow of each action to have a quick description of what it actually means.
340
341 {{gallery}}
342 image:edit-conflict-reload.png
343 image:edit-conflict-force-save.png
344 {{/gallery}}
345
346 {{version since='11.5RC1'}}
347 The support of conflict edition was improved by implementing a merge on save mechanism. This means that in case of conflict edition (two users saving the same page at the same time), instead of always displaying a window to the user asking what to do, we first try to perform a merge of both page. If the changes concerned two very different parts of the page (two different sections, an edit performed on an object against an edit of the content, etc) the user won't notice that a merge has been performed.
348
349 Now, some conflicts might still occur if both users tried to edit the same part of the page. In that case, a new window is displayed asking the user what to do.
350 The user will now have three different choices:
351
352 * Merge the page and fix conflict with his/her own changes: this means that as much as possible, we try to merge the changes. Only for the part that are conflicting, we only kept the changes from the last user. This is the recommended choice.
353 * Force save the page: this means no merge at all will be performed. Only the changes performed by the last user will be saved. It basically discards the changes made by the previous user.
354 * Reload the editor: this choice might be taken very carefully as it might cause a loss of data. It means that the current changes performed on the page will be completely lost and the editor will be reloaded with the last changes.
355
356 The conflict window now display the changes that will be performed for each choices. Be careful with the parts in red since it shows what part of the page will be lost during the operation. Note that it's also possible to select two specific versions of the page to perform a comparison before making a choice.
357
358 {{gallery}}
359 image:merge-conflict-modal-usage-v2.gif
360 {{/gallery}}
361 {{/version}}
362
363 {{info}}
364 The Conflict Edit feature [[can be disabled>>Documentation.AdminGuide.Configuration||anchor="HEditingConflicts"]].
365 {{/info}}
366
367 {{version since='11.8RC1'}}
368 The conflict edition window allows one more choice: to fix each conflict individually. This new choice is marked as advanced since it's not something easy to handle.
369
370 {{gallery}}
371 image:custom_conflict_resolution.png
372 image:custom_conflict_fix.gif
373 {{/gallery}}
374
375 When choosing the new option, the UI is updated to display the changes between the latest version saved and the current version the user is trying to save. At each place a conflict occurred, the changes display an orange bar and a blue area is reserved for the conflict resolution.
376 This blue area displays some text, and a select with several choices. The displayed text in the blue area is what will be used for fixing the conflict, you can see the text changing for each choice.
377 {{/version}}
378
379 The conflict choices are the following:
380
381 * current version (default): the conflict is fixed by getting the current changes
382 * before your changes: the conflict is fixed by getting what was there before you starting to edit. Both latest version saved and your current changes would be lost for this conflict,
383 * latest version saved: the change made on the latest version saved (the one you are conflicting with) are taken to fix the conflict
384 * custom version: with this option, a text area is displayed to allow you to enter any new value to fix the conflict. Multiple lines can be entered.
385
386 If the choice text displays something in red, it is because no content is actually available for the chosen version to fix the conflict: usually it means the content in conflict will be removed with the choice made.
387 {{/version}}
388
389 = Extension page protection =
390
391 Extension pages are protected against editing ([[unless explicitly indicated otherwise in the extension>>extensions:Extension.XAR Module Specifications#Hpackage.xml]]) to avoid mistake a user could make while still allowing advanced users to force it if really required.
392
393 {{image reference="extensionProtectedPage.png" width="650px"/}}
394
395 = Default Language =
396
397 If you've set up your wiki to be multingual, then when editing a page using the wiki editor, you'll be able to set the default language for the current page as in:
398
399 {{image reference="defaultLanguage.png"/}}

Get Connected