f4fed2b1061c8a709ab4930527a1bc73e8e2487c
[GitHub/WoltLab/woltlab.github.io.git] / docs / package / pip / bbcode.md
1 # BBCode Package Installation Plugin
2
3 Registers new BBCodes.
4
5 ## Components
6
7 Each bbcode is described as an `<bbcode>` element with the mandatory attribute `name`.
8 The `name` attribute must contain alphanumeric characters only and is exposed to the user.
9
10 ### `<htmlopen>`
11
12 !!! info "Optional: Must not be provided if the BBCode is being processed a PHP class (`<classname>`)."
13
14 The contents of this tag are literally copied into the opening tag of the bbcode.
15
16 ### `<htmlclose>`
17
18 !!! info "Optional: Must not be provided if `<htmlopen>` is not given."
19
20 Must match the `<htmlopen>` tag.
21 Do not provide for self-closing tags.
22
23 ### `<classname>`
24
25 The name of the class providing the bbcode output,
26 the class has to implement the `wcf\system\bbcode\IBBCode` interface.
27
28 BBCodes can be statically converted to HTML during input processing using a
29 `wcf\system\html\metacode\converter\*MetaConverter` class. This class does not
30 need to be registered.
31
32 ### `<wysiwygicon>`
33
34 <span class="label label-info">Optional</span>
35
36 Name of the Font Awesome icon class or path to a `gif`, `jpg`, `jpeg`, `png`, or `svg` image (placed inside the `icon/` directory) to show in the editor toolbar.
37
38 ### `<buttonlabel>`
39
40 !!! info "Optional: Must be provided if an icon is given."
41
42 Explanatory text to show when hovering the icon.
43
44 ### `<sourcecode>`
45
46 !!! warning "Do not set this to `1` if you don't specify a PHP class for processing. You must perform XSS sanitizing yourself!"
47
48 If set to `1` contents of this BBCode will not be interpreted,
49 but literally passed through instead.
50
51 ### `<isBlockElement>`
52
53 Set to `1` if the output of this BBCode is a HTML block element (according to the HTML specification).
54
55 ### `<attributes>`
56
57 Each bbcode is described as an `<attribute>` element with the mandatory attribute `name`.
58 The `name` attribute is a 0-indexed integer.
59
60 #### `<html>`
61
62 !!! info "Optional: Must not be provided if the BBCode is being processed a PHP class (`<classname>`)."
63
64 The contents of this tag are copied into the opening tag of the bbcode.
65 `%s` is replaced by the attribute value.
66
67 #### `<validationpattern>`
68
69 <span class="label label-info">Optional</span>
70
71 Defines a regular expression that is used to validate the value of the attribute.
72
73 #### `<required>`
74
75 <span class="label label-info">Optional</span>
76
77 Specifies whether this attribute must be provided.
78
79 #### `<usetext>`
80
81 <span class="label label-info">Optional</span>
82 !!! info "Should only be set to `1` for the attribute with name `0`."
83
84 Specifies whether the text content of the BBCode should become this attribute's value.
85
86 ## Example
87
88 {jinja{ codebox(
89 "xml",
90 "package/pip/bbcode.xml",
91 "bbcode.xml"
92 ) }}