Deployed 18c7de79 to 6.0 with MkDocs 1.4.2 and mike 1.1.2
[GitHub/WoltLab/woltlab.github.io.git] / 6.0 / php / api / form_builder / form_fields / index.html
1
2 <!doctype html>
3 <html lang="en" class="no-js">
4 <head>
5
6 <meta charset="utf-8">
7 <meta name="viewport" content="width=device-width,initial-scale=1">
8
9
10
11 <link rel="canonical" href="https://docs.woltlab.com/6.0/php/api/form_builder/form_fields/">
12
13
14 <link rel="prev" href="../structure/">
15
16
17 <link rel="next" href="../validation_data/">
18
19 <link rel="icon" href="../../../../assets/default.favicon.ico">
20 <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.3">
21
22
23
24 <title>Fields - WoltLab Suite Documentation</title>
25
26
27
28 <link rel="stylesheet" href="../../../../assets/stylesheets/main.6b71719e.min.css">
29
30
31 <link rel="stylesheet" href="../../../../assets/stylesheets/palette.2505c338.min.css">
32
33
34
35
36
37
38
39
40
41 <link rel="stylesheet" href="../../../../stylesheets/extra.css">
42
43 <script>__md_scope=new URL("../../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
44
45
46
47
48
49
50 </head>
51
52
53
54
55
56
57
58 <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="teal" data-md-color-accent="">
59
60
61
62 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
63 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
64 <label class="md-overlay" for="__drawer"></label>
65 <div data-md-component="skip">
66
67
68 <a href="#form-builder-fields" class="md-skip">
69 Skip to content
70 </a>
71
72 </div>
73 <div data-md-component="announce">
74
75 <aside class="md-banner">
76 <div class="md-banner__inner md-grid md-typeset">
77
78
79 <a href="https://www.woltlab.com">Back to <strong>woltlab.com</strong></a>
80
81 </div>
82
83 </aside>
84
85 </div>
86
87 <div data-md-component="outdated" hidden>
88
89 </div>
90
91
92
93
94 <header class="md-header" data-md-component="header">
95 <nav class="md-header__inner md-grid" aria-label="Header">
96 <a href="../../../.." title="WoltLab Suite Documentation" class="md-header__button md-logo" aria-label="WoltLab Suite Documentation" data-md-component="logo">
97
98 <img src="../../../../assets/logo.png" alt="logo">
99
100 </a>
101 <label class="md-header__button md-icon" for="__drawer">
102 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
103 </label>
104 <div class="md-header__title" data-md-component="header-title">
105 <div class="md-header__ellipsis">
106 <div class="md-header__topic">
107 <span class="md-ellipsis">
108 WoltLab Suite Documentation
109 </span>
110 </div>
111 <div class="md-header__topic" data-md-component="header-topic">
112 <span class="md-ellipsis">
113
114 Fields
115
116 </span>
117 </div>
118 </div>
119 </div>
120
121
122
123 <label class="md-header__button md-icon" for="__search">
124 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
125 </label>
126 <div class="md-search" data-md-component="search" role="dialog">
127 <label class="md-search__overlay" for="__search"></label>
128 <div class="md-search__inner" role="search">
129 <form class="md-search__form" name="search">
130 <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
131 <label class="md-search__icon md-icon" for="__search">
132 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
133 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
134 </label>
135 <nav class="md-search__options" aria-label="Search">
136
137 <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
138 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
139 </button>
140 </nav>
141
142 </form>
143 <div class="md-search__output">
144 <div class="md-search__scrollwrap" data-md-scrollfix>
145 <div class="md-search-result" data-md-component="search-result">
146 <div class="md-search-result__meta">
147 Initializing search
148 </div>
149 <ol class="md-search-result__list"></ol>
150 </div>
151 </div>
152 </div>
153 </div>
154 </div>
155
156
157 <div class="md-header__source">
158 <a href="https://github.com/WoltLab/docs.woltlab.com/" title="Go to repository" class="md-source" data-md-component="source">
159 <div class="md-source__icon md-icon">
160
161 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
162 </div>
163 <div class="md-source__repository">
164 GitHub
165 </div>
166 </a>
167 </div>
168
169 </nav>
170
171 </header>
172
173 <div class="md-container" data-md-component="container">
174
175
176
177
178
179
180 <main class="md-main" data-md-component="main">
181 <div class="md-main__inner md-grid">
182
183
184
185 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
186 <div class="md-sidebar__scrollwrap">
187 <div class="md-sidebar__inner">
188
189
190
191 <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
192 <label class="md-nav__title" for="__drawer">
193 <a href="../../../.." title="WoltLab Suite Documentation" class="md-nav__button md-logo" aria-label="WoltLab Suite Documentation" data-md-component="logo">
194
195 <img src="../../../../assets/logo.png" alt="logo">
196
197 </a>
198 WoltLab Suite Documentation
199 </label>
200
201 <div class="md-nav__source">
202 <a href="https://github.com/WoltLab/docs.woltlab.com/" title="Go to repository" class="md-source" data-md-component="source">
203 <div class="md-source__icon md-icon">
204
205 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
206 </div>
207 <div class="md-source__repository">
208 GitHub
209 </div>
210 </a>
211 </div>
212
213 <ul class="md-nav__list" data-md-scrollfix>
214
215
216
217
218
219
220
221
222 <li class="md-nav__item">
223 <a href="../../../../getting-started/" class="md-nav__link">
224 Getting Started
225 </a>
226 </li>
227
228
229
230
231
232
233
234
235
236
237
238
239
240 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
241
242
243
244
245 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" checked>
246
247
248
249 <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="true">
250 PHP API
251 <span class="md-nav__icon md-icon"></span>
252 </label>
253
254 <nav class="md-nav" aria-label="PHP API" data-md-level="1">
255 <label class="md-nav__title" for="__nav_2">
256 <span class="md-nav__icon md-icon"></span>
257 PHP API
258 </label>
259 <ul class="md-nav__list" data-md-scrollfix>
260
261
262
263
264
265
266 <li class="md-nav__item">
267 <a href="../../../pages/" class="md-nav__link">
268 Pages
269 </a>
270 </li>
271
272
273
274
275
276
277
278
279
280 <li class="md-nav__item">
281 <a href="../../../database-objects/" class="md-nav__link">
282 Database Objects
283 </a>
284 </li>
285
286
287
288
289
290
291
292
293
294 <li class="md-nav__item">
295 <a href="../../../database-access/" class="md-nav__link">
296 Database Access
297 </a>
298 </li>
299
300
301
302
303
304
305
306
307
308 <li class="md-nav__item">
309 <a href="../../../exceptions/" class="md-nav__link">
310 Exceptions
311 </a>
312 </li>
313
314
315
316
317
318
319
320
321
322
323
324
325 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
326
327
328
329
330 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_5" type="checkbox" id="__nav_2_5" checked>
331
332
333
334 <label class="md-nav__link" for="__nav_2_5" tabindex="0" aria-expanded="true">
335 API
336 <span class="md-nav__icon md-icon"></span>
337 </label>
338
339 <nav class="md-nav" aria-label="API" data-md-level="2">
340 <label class="md-nav__title" for="__nav_2_5">
341 <span class="md-nav__icon md-icon"></span>
342 API
343 </label>
344 <ul class="md-nav__list" data-md-scrollfix>
345
346
347
348
349
350
351
352 <li class="md-nav__item md-nav__item--nested">
353
354
355
356
357 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_5_1" type="checkbox" id="__nav_2_5_1" >
358
359
360
361 <label class="md-nav__link" for="__nav_2_5_1" tabindex="0" aria-expanded="false">
362 Caches
363 <span class="md-nav__icon md-icon"></span>
364 </label>
365
366 <nav class="md-nav" aria-label="Caches" data-md-level="3">
367 <label class="md-nav__title" for="__nav_2_5_1">
368 <span class="md-nav__icon md-icon"></span>
369 Caches
370 </label>
371 <ul class="md-nav__list" data-md-scrollfix>
372
373
374
375
376
377
378 <li class="md-nav__item">
379 <a href="../../caches/" class="md-nav__link">
380 Overview
381 </a>
382 </li>
383
384
385
386
387
388
389
390
391
392 <li class="md-nav__item">
393 <a href="../../caches_persistent-caches/" class="md-nav__link">
394 Persistent Caches
395 </a>
396 </li>
397
398
399
400
401
402
403
404
405
406 <li class="md-nav__item">
407 <a href="../../caches_runtime-caches/" class="md-nav__link">
408 Runtime Caches
409 </a>
410 </li>
411
412
413
414
415 </ul>
416 </nav>
417 </li>
418
419
420
421
422
423
424
425
426
427 <li class="md-nav__item">
428 <a href="../../comments/" class="md-nav__link">
429 Comments
430 </a>
431 </li>
432
433
434
435
436
437
438
439
440
441 <li class="md-nav__item">
442 <a href="../../cronjobs/" class="md-nav__link">
443 Cronjobs
444 </a>
445 </li>
446
447
448
449
450
451
452
453
454
455 <li class="md-nav__item">
456 <a href="../../events/" class="md-nav__link">
457 Events
458 </a>
459 </li>
460
461
462
463
464
465
466
467
468
469
470
471
472 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
473
474
475
476
477 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_5_5" type="checkbox" id="__nav_2_5_5" checked>
478
479
480
481 <label class="md-nav__link" for="__nav_2_5_5" tabindex="0" aria-expanded="true">
482 Form Builder
483 <span class="md-nav__icon md-icon"></span>
484 </label>
485
486 <nav class="md-nav" aria-label="Form Builder" data-md-level="3">
487 <label class="md-nav__title" for="__nav_2_5_5">
488 <span class="md-nav__icon md-icon"></span>
489 Form Builder
490 </label>
491 <ul class="md-nav__list" data-md-scrollfix>
492
493
494
495
496
497
498 <li class="md-nav__item">
499 <a href="../overview/" class="md-nav__link">
500 Overview
501 </a>
502 </li>
503
504
505
506
507
508
509
510
511
512 <li class="md-nav__item">
513 <a href="../structure/" class="md-nav__link">
514 Structure
515 </a>
516 </li>
517
518
519
520
521
522
523
524
525
526
527
528 <li class="md-nav__item md-nav__item--active">
529
530 <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
531
532
533
534
535
536 <label class="md-nav__link md-nav__link--active" for="__toc">
537 Fields
538 <span class="md-nav__icon md-icon"></span>
539 </label>
540
541 <a href="./" class="md-nav__link md-nav__link--active">
542 Fields
543 </a>
544
545
546
547 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
548
549
550
551
552
553
554 <label class="md-nav__title" for="__toc">
555 <span class="md-nav__icon md-icon"></span>
556 Table of contents
557 </label>
558 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
559
560 <li class="md-nav__item">
561 <a href="#abstract-form-fields" class="md-nav__link">
562 Abstract Form Fields
563 </a>
564
565 <nav class="md-nav" aria-label="Abstract Form Fields">
566 <ul class="md-nav__list">
567
568 <li class="md-nav__item">
569 <a href="#abstractformfield" class="md-nav__link">
570 AbstractFormField
571 </a>
572
573 </li>
574
575 <li class="md-nav__item">
576 <a href="#abstractnumericformfield" class="md-nav__link">
577 AbstractNumericFormField
578 </a>
579
580 </li>
581
582 <li class="md-nav__item">
583 <a href="#abstractformfielddecorator" class="md-nav__link">
584 AbstractFormFieldDecorator
585 </a>
586
587 </li>
588
589 </ul>
590 </nav>
591
592 </li>
593
594 <li class="md-nav__item">
595 <a href="#general-form-fields" class="md-nav__link">
596 General Form Fields
597 </a>
598
599 <nav class="md-nav" aria-label="General Form Fields">
600 <ul class="md-nav__list">
601
602 <li class="md-nav__item">
603 <a href="#booleanformfield" class="md-nav__link">
604 BooleanFormField
605 </a>
606
607 </li>
608
609 <li class="md-nav__item">
610 <a href="#checkboxformfield" class="md-nav__link">
611 CheckboxFormField
612 </a>
613
614 </li>
615
616 <li class="md-nav__item">
617 <a href="#classnameformfield" class="md-nav__link">
618 ClassNameFormField
619 </a>
620
621 </li>
622
623 <li class="md-nav__item">
624 <a href="#dateformfield" class="md-nav__link">
625 DateFormField
626 </a>
627
628 </li>
629
630 <li class="md-nav__item">
631 <a href="#descriptionformfield" class="md-nav__link">
632 DescriptionFormField
633 </a>
634
635 </li>
636
637 <li class="md-nav__item">
638 <a href="#emailformfield" class="md-nav__link">
639 EmailFormField
640 </a>
641
642 </li>
643
644 <li class="md-nav__item">
645 <a href="#floatformfield" class="md-nav__link">
646 FloatFormField
647 </a>
648
649 </li>
650
651 <li class="md-nav__item">
652 <a href="#hiddenformfield" class="md-nav__link">
653 HiddenFormField
654 </a>
655
656 </li>
657
658 <li class="md-nav__item">
659 <a href="#iconformfield" class="md-nav__link">
660 IconFormField
661 </a>
662
663 </li>
664
665 <li class="md-nav__item">
666 <a href="#integerformfield" class="md-nav__link">
667 IntegerFormField
668 </a>
669
670 </li>
671
672 <li class="md-nav__item">
673 <a href="#isdisabledformfield" class="md-nav__link">
674 IsDisabledFormField
675 </a>
676
677 </li>
678
679 <li class="md-nav__item">
680 <a href="#itemlistformfield" class="md-nav__link">
681 ItemListFormField
682 </a>
683
684 </li>
685
686 <li class="md-nav__item">
687 <a href="#multilinetextformfield" class="md-nav__link">
688 MultilineTextFormField
689 </a>
690
691 </li>
692
693 <li class="md-nav__item">
694 <a href="#multipleselectionformfield" class="md-nav__link">
695 MultipleSelectionFormField
696 </a>
697
698 </li>
699
700 <li class="md-nav__item">
701 <a href="#radiobuttonformfield" class="md-nav__link">
702 RadioButtonFormField
703 </a>
704
705 </li>
706
707 <li class="md-nav__item">
708 <a href="#ratingformfield" class="md-nav__link">
709 RatingFormField
710 </a>
711
712 </li>
713
714 <li class="md-nav__item">
715 <a href="#showorderformfield" class="md-nav__link">
716 ShowOrderFormField
717 </a>
718
719 </li>
720
721 <li class="md-nav__item">
722 <a href="#singleselectionformfield" class="md-nav__link">
723 SingleSelectionFormField
724 </a>
725
726 </li>
727
728 <li class="md-nav__item">
729 <a href="#sortorderformfield" class="md-nav__link">
730 SortOrderFormField
731 </a>
732
733 </li>
734
735 <li class="md-nav__item">
736 <a href="#textformfield" class="md-nav__link">
737 TextFormField
738 </a>
739
740 </li>
741
742 <li class="md-nav__item">
743 <a href="#titleformfield" class="md-nav__link">
744 TitleFormField
745 </a>
746
747 </li>
748
749 <li class="md-nav__item">
750 <a href="#urlformfield" class="md-nav__link">
751 UrlFormField
752 </a>
753
754 </li>
755
756 </ul>
757 </nav>
758
759 </li>
760
761 <li class="md-nav__item">
762 <a href="#specific-fields" class="md-nav__link">
763 Specific Fields
764 </a>
765
766 <nav class="md-nav" aria-label="Specific Fields">
767 <ul class="md-nav__list">
768
769 <li class="md-nav__item">
770 <a href="#aclformfield" class="md-nav__link">
771 AclFormField
772 </a>
773
774 </li>
775
776 <li class="md-nav__item">
777 <a href="#buttonformfield" class="md-nav__link">
778 ButtonFormField
779 </a>
780
781 </li>
782
783 <li class="md-nav__item">
784 <a href="#captchaformfield" class="md-nav__link">
785 CaptchaFormField
786 </a>
787
788 </li>
789
790 <li class="md-nav__item">
791 <a href="#colorformfield" class="md-nav__link">
792 ColorFormField
793 </a>
794
795 </li>
796
797 <li class="md-nav__item">
798 <a href="#contentlanguageformfield" class="md-nav__link">
799 ContentLanguageFormField
800 </a>
801
802 </li>
803
804 <li class="md-nav__item">
805 <a href="#labelformfield" class="md-nav__link">
806 LabelFormField
807 </a>
808
809 </li>
810
811 <li class="md-nav__item">
812 <a href="#optionformfield" class="md-nav__link">
813 OptionFormField
814 </a>
815
816 </li>
817
818 <li class="md-nav__item">
819 <a href="#simpleaclformfield" class="md-nav__link">
820 SimpleAclFormField
821 </a>
822
823 </li>
824
825 <li class="md-nav__item">
826 <a href="#singlemediaselectionformfield" class="md-nav__link">
827 SingleMediaSelectionFormField
828 </a>
829
830 </li>
831
832 <li class="md-nav__item">
833 <a href="#tagformfield" class="md-nav__link">
834 TagFormField
835 </a>
836
837 </li>
838
839 <li class="md-nav__item">
840 <a href="#uploadformfield" class="md-nav__link">
841 UploadFormField
842 </a>
843
844 <nav class="md-nav" aria-label="UploadFormField">
845 <ul class="md-nav__list">
846
847 <li class="md-nav__item">
848 <a href="#provide-value-from-database-object" class="md-nav__link">
849 Provide value from database object
850 </a>
851
852 </li>
853
854 <li class="md-nav__item">
855 <a href="#process-files" class="md-nav__link">
856 Process files
857 </a>
858
859 </li>
860
861 </ul>
862 </nav>
863
864 </li>
865
866 <li class="md-nav__item">
867 <a href="#userformfield" class="md-nav__link">
868 UserFormField
869 </a>
870
871 </li>
872
873 <li class="md-nav__item">
874 <a href="#userpasswordfield" class="md-nav__link">
875 UserPasswordField
876 </a>
877
878 </li>
879
880 <li class="md-nav__item">
881 <a href="#usergroupoptionformfield" class="md-nav__link">
882 UserGroupOptionFormField
883 </a>
884
885 </li>
886
887 <li class="md-nav__item">
888 <a href="#usernameformfield" class="md-nav__link">
889 UsernameFormField
890 </a>
891
892 </li>
893
894 </ul>
895 </nav>
896
897 </li>
898
899 <li class="md-nav__item">
900 <a href="#wysiwyg-form-container" class="md-nav__link">
901 Wysiwyg form container
902 </a>
903
904 <nav class="md-nav" aria-label="Wysiwyg form container">
905 <ul class="md-nav__list">
906
907 <li class="md-nav__item">
908 <a href="#wysiwygattachmentformfield" class="md-nav__link">
909 WysiwygAttachmentFormField
910 </a>
911
912 </li>
913
914 <li class="md-nav__item">
915 <a href="#wysiwygpollformcontainer" class="md-nav__link">
916 WysiwygPollFormContainer
917 </a>
918
919 </li>
920
921 <li class="md-nav__item">
922 <a href="#wysiwygsmileyformcontainer" class="md-nav__link">
923 WysiwygSmileyFormContainer
924 </a>
925
926 <nav class="md-nav" aria-label="WysiwygSmileyFormContainer">
927 <ul class="md-nav__list">
928
929 <li class="md-nav__item">
930 <a href="#wysiwygsmileyformnode" class="md-nav__link">
931 WysiwygSmileyFormNode
932 </a>
933
934 </li>
935
936 </ul>
937 </nav>
938
939 </li>
940
941 <li class="md-nav__item">
942 <a href="#example" class="md-nav__link">
943 Example
944 </a>
945
946 </li>
947
948 <li class="md-nav__item">
949 <a href="#wysiwygformfield" class="md-nav__link">
950 WysiwygFormField
951 </a>
952
953 </li>
954
955 <li class="md-nav__item">
956 <a href="#twysiwygformnode" class="md-nav__link">
957 TWysiwygFormNode
958 </a>
959
960 </li>
961
962 </ul>
963 </nav>
964
965 </li>
966
967 <li class="md-nav__item">
968 <a href="#application-specific-form-fields" class="md-nav__link">
969 Application-Specific Form Fields
970 </a>
971
972 <nav class="md-nav" aria-label="Application-Specific Form Fields">
973 <ul class="md-nav__list">
974
975 <li class="md-nav__item">
976 <a href="#woltlab-suite-forum" class="md-nav__link">
977 WoltLab Suite Forum
978 </a>
979
980 <nav class="md-nav" aria-label="WoltLab Suite Forum">
981 <ul class="md-nav__list">
982
983 <li class="md-nav__item">
984 <a href="#multipleboardselectionformfield" class="md-nav__link">
985 MultipleBoardSelectionFormField
986 </a>
987
988 </li>
989
990 </ul>
991 </nav>
992
993 </li>
994
995 </ul>
996 </nav>
997
998 </li>
999
1000 <li class="md-nav__item">
1001 <a href="#single-use-form-fields" class="md-nav__link">
1002 Single-Use Form Fields
1003 </a>
1004
1005 <nav class="md-nav" aria-label="Single-Use Form Fields">
1006 <ul class="md-nav__list">
1007
1008 <li class="md-nav__item">
1009 <a href="#bbcodeattributesformfield" class="md-nav__link">
1010 BBCodeAttributesFormField
1011 </a>
1012
1013 </li>
1014
1015 <li class="md-nav__item">
1016 <a href="#devtoolsprojectexcludedpackagesformfield" class="md-nav__link">
1017 DevtoolsProjectExcludedPackagesFormField
1018 </a>
1019
1020 </li>
1021
1022 <li class="md-nav__item">
1023 <a href="#devtoolsprojectinstructionsformfield" class="md-nav__link">
1024 DevtoolsProjectInstructionsFormField
1025 </a>
1026
1027 </li>
1028
1029 <li class="md-nav__item">
1030 <a href="#devtoolsprojectoptionalpackagesformfield" class="md-nav__link">
1031 DevtoolsProjectOptionalPackagesFormField
1032 </a>
1033
1034 </li>
1035
1036 <li class="md-nav__item">
1037 <a href="#devtoolsprojectrequiredpackagesformfield" class="md-nav__link">
1038 DevtoolsProjectRequiredPackagesFormField
1039 </a>
1040
1041 </li>
1042
1043 </ul>
1044 </nav>
1045
1046 </li>
1047
1048 </ul>
1049
1050 </nav>
1051
1052 </li>
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062 <li class="md-nav__item">
1063 <a href="../validation_data/" class="md-nav__link">
1064 Validation and Data
1065 </a>
1066 </li>
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076 <li class="md-nav__item">
1077 <a href="../dependencies/" class="md-nav__link">
1078 Dependencies
1079 </a>
1080 </li>
1081
1082
1083
1084
1085 </ul>
1086 </nav>
1087 </li>
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097 <li class="md-nav__item">
1098 <a href="../../package_installation_plugins/" class="md-nav__link">
1099 Package Installation Plugins
1100 </a>
1101 </li>
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111 <li class="md-nav__item">
1112 <a href="../../user_activity_points/" class="md-nav__link">
1113 User Activity Points
1114 </a>
1115 </li>
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125 <li class="md-nav__item">
1126 <a href="../../user_notifications/" class="md-nav__link">
1127 User Notifications
1128 </a>
1129 </li>
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139 <li class="md-nav__item">
1140 <a href="../../sitemaps/" class="md-nav__link">
1141 Sitemaps
1142 </a>
1143 </li>
1144
1145
1146
1147
1148 </ul>
1149 </nav>
1150 </li>
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160 <li class="md-nav__item">
1161 <a href="../../../code-style/" class="md-nav__link">
1162 Code Style
1163 </a>
1164 </li>
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174 <li class="md-nav__item">
1175 <a href="../../../apps/" class="md-nav__link">
1176 Apps
1177 </a>
1178 </li>
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188 <li class="md-nav__item">
1189 <a href="../../../gdpr/" class="md-nav__link">
1190 GDPR
1191 </a>
1192 </li>
1193
1194
1195
1196
1197 </ul>
1198 </nav>
1199 </li>
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211 <li class="md-nav__item md-nav__item--nested">
1212
1213
1214
1215
1216 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
1217
1218
1219
1220 <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false">
1221 Languages, Templates & CSS
1222 <span class="md-nav__icon md-icon"></span>
1223 </label>
1224
1225 <nav class="md-nav" aria-label="Languages, Templates & CSS" data-md-level="1">
1226 <label class="md-nav__title" for="__nav_3">
1227 <span class="md-nav__icon md-icon"></span>
1228 Languages, Templates & CSS
1229 </label>
1230 <ul class="md-nav__list" data-md-scrollfix>
1231
1232
1233
1234
1235
1236
1237 <li class="md-nav__item">
1238 <a href="../../../../view/languages/" class="md-nav__link">
1239 Languages
1240 </a>
1241 </li>
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251 <li class="md-nav__item">
1252 <a href="../../../../view/templates/" class="md-nav__link">
1253 Templates
1254 </a>
1255 </li>
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265 <li class="md-nav__item">
1266 <a href="../../../../view/template-plugins/" class="md-nav__link">
1267 Template Plugins
1268 </a>
1269 </li>
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279 <li class="md-nav__item">
1280 <a href="../../../../view/css/" class="md-nav__link">
1281 CSS
1282 </a>
1283 </li>
1284
1285
1286
1287
1288 </ul>
1289 </nav>
1290 </li>
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302 <li class="md-nav__item md-nav__item--nested">
1303
1304
1305
1306
1307 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
1308
1309
1310
1311 <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false">
1312 TypeScript and JavaScript API
1313 <span class="md-nav__icon md-icon"></span>
1314 </label>
1315
1316 <nav class="md-nav" aria-label="TypeScript and JavaScript API" data-md-level="1">
1317 <label class="md-nav__title" for="__nav_4">
1318 <span class="md-nav__icon md-icon"></span>
1319 TypeScript and JavaScript API
1320 </label>
1321 <ul class="md-nav__list" data-md-scrollfix>
1322
1323
1324
1325
1326
1327
1328 <li class="md-nav__item">
1329 <a href="../../../../javascript/general-usage/" class="md-nav__link">
1330 General Usage
1331 </a>
1332 </li>
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342 <li class="md-nav__item">
1343 <a href="../../../../javascript/typescript/" class="md-nav__link">
1344 TypeScript
1345 </a>
1346 </li>
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357 <li class="md-nav__item md-nav__item--nested">
1358
1359
1360
1361
1362 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_3" type="checkbox" id="__nav_4_3" >
1363
1364
1365
1366 <label class="md-nav__link" for="__nav_4_3" tabindex="0" aria-expanded="false">
1367 Components
1368 <span class="md-nav__icon md-icon"></span>
1369 </label>
1370
1371 <nav class="md-nav" aria-label="Components" data-md-level="2">
1372 <label class="md-nav__title" for="__nav_4_3">
1373 <span class="md-nav__icon md-icon"></span>
1374 Components
1375 </label>
1376 <ul class="md-nav__list" data-md-scrollfix>
1377
1378
1379
1380
1381
1382
1383 <li class="md-nav__item">
1384 <a href="../../../../javascript/components_confirmation/" class="md-nav__link">
1385 Confirmation
1386 </a>
1387 </li>
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397 <li class="md-nav__item">
1398 <a href="../../../../javascript/components_dialog/" class="md-nav__link">
1399 Dialog
1400 </a>
1401 </li>
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411 <li class="md-nav__item">
1412 <a href="../../../../javascript/components_google_maps/" class="md-nav__link">
1413 Google Maps
1414 </a>
1415 </li>
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425 <li class="md-nav__item">
1426 <a href="../../../../javascript/components_pagination/" class="md-nav__link">
1427 Pagination
1428 </a>
1429 </li>
1430
1431
1432
1433
1434 </ul>
1435 </nav>
1436 </li>
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447 <li class="md-nav__item md-nav__item--nested">
1448
1449
1450
1451
1452 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_4" type="checkbox" id="__nav_4_4" >
1453
1454
1455
1456 <label class="md-nav__link" for="__nav_4_4" tabindex="0" aria-expanded="false">
1457 New API
1458 <span class="md-nav__icon md-icon"></span>
1459 </label>
1460
1461 <nav class="md-nav" aria-label="New API" data-md-level="2">
1462 <label class="md-nav__title" for="__nav_4_4">
1463 <span class="md-nav__icon md-icon"></span>
1464 New API
1465 </label>
1466 <ul class="md-nav__list" data-md-scrollfix>
1467
1468
1469
1470
1471
1472
1473 <li class="md-nav__item">
1474 <a href="../../../../javascript/new-api_writing-a-module/" class="md-nav__link">
1475 Writing a module
1476 </a>
1477 </li>
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487 <li class="md-nav__item">
1488 <a href="../../../../javascript/new-api_core/" class="md-nav__link">
1489 Core Functions
1490 </a>
1491 </li>
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501 <li class="md-nav__item">
1502 <a href="../../../../javascript/new-api_dom/" class="md-nav__link">
1503 DOM
1504 </a>
1505 </li>
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515 <li class="md-nav__item">
1516 <a href="../../../../javascript/new-api_events/" class="md-nav__link">
1517 Event Handling
1518 </a>
1519 </li>
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529 <li class="md-nav__item">
1530 <a href="../../../../javascript/new-api_ajax/" class="md-nav__link">
1531 Ajax
1532 </a>
1533 </li>
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543 <li class="md-nav__item">
1544 <a href="../../../../javascript/new-api_dialogs/" class="md-nav__link">
1545 Dialogs
1546 </a>
1547 </li>
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557 <li class="md-nav__item">
1558 <a href="../../../../javascript/new-api_browser/" class="md-nav__link">
1559 Browser and Screen Sizes
1560 </a>
1561 </li>
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571 <li class="md-nav__item">
1572 <a href="../../../../javascript/new-api_ui/" class="md-nav__link">
1573 User Interface
1574 </a>
1575 </li>
1576
1577
1578
1579
1580 </ul>
1581 </nav>
1582 </li>
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592 <li class="md-nav__item">
1593 <a href="../../../../javascript/legacy-api/" class="md-nav__link">
1594 Legacy API
1595 </a>
1596 </li>
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606 <li class="md-nav__item">
1607 <a href="../../../../javascript/code-snippets/" class="md-nav__link">
1608 Code Snippets
1609 </a>
1610 </li>
1611
1612
1613
1614
1615 </ul>
1616 </nav>
1617 </li>
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629 <li class="md-nav__item md-nav__item--nested">
1630
1631
1632
1633
1634 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
1635
1636
1637
1638 <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false">
1639 Package Components
1640 <span class="md-nav__icon md-icon"></span>
1641 </label>
1642
1643 <nav class="md-nav" aria-label="Package Components" data-md-level="1">
1644 <label class="md-nav__title" for="__nav_5">
1645 <span class="md-nav__icon md-icon"></span>
1646 Package Components
1647 </label>
1648 <ul class="md-nav__list" data-md-scrollfix>
1649
1650
1651
1652
1653
1654
1655 <li class="md-nav__item">
1656 <a href="../../../../package/package-xml/" class="md-nav__link">
1657 package.xml
1658 </a>
1659 </li>
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670 <li class="md-nav__item md-nav__item--nested">
1671
1672
1673
1674
1675 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5_2" type="checkbox" id="__nav_5_2" >
1676
1677
1678
1679 <label class="md-nav__link" for="__nav_5_2" tabindex="0" aria-expanded="false">
1680 PIPs
1681 <span class="md-nav__icon md-icon"></span>
1682 </label>
1683
1684 <nav class="md-nav" aria-label="PIPs" data-md-level="2">
1685 <label class="md-nav__title" for="__nav_5_2">
1686 <span class="md-nav__icon md-icon"></span>
1687 PIPs
1688 </label>
1689 <ul class="md-nav__list" data-md-scrollfix>
1690
1691
1692
1693
1694
1695
1696 <li class="md-nav__item">
1697 <a href="../../../../package/pip/" class="md-nav__link">
1698 Overview
1699 </a>
1700 </li>
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710 <li class="md-nav__item">
1711 <a href="../../../../package/pip/acl-option/" class="md-nav__link">
1712 aclOption
1713 </a>
1714 </li>
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724 <li class="md-nav__item">
1725 <a href="../../../../package/pip/acp-menu/" class="md-nav__link">
1726 acpMenu
1727 </a>
1728 </li>
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738 <li class="md-nav__item">
1739 <a href="../../../../package/pip/acp-search-provider/" class="md-nav__link">
1740 acpSearchProvider
1741 </a>
1742 </li>
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752 <li class="md-nav__item">
1753 <a href="../../../../package/pip/acp-template/" class="md-nav__link">
1754 acpTemplate
1755 </a>
1756 </li>
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766 <li class="md-nav__item">
1767 <a href="../../../../package/pip/acp-template-delete/" class="md-nav__link">
1768 acpTemplateDelete
1769 </a>
1770 </li>
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780 <li class="md-nav__item">
1781 <a href="../../../../package/pip/bbcode/" class="md-nav__link">
1782 bbcode
1783 </a>
1784 </li>
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794 <li class="md-nav__item">
1795 <a href="../../../../package/pip/box/" class="md-nav__link">
1796 box
1797 </a>
1798 </li>
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808 <li class="md-nav__item">
1809 <a href="../../../../package/pip/clipboard-action/" class="md-nav__link">
1810 clipboardAction
1811 </a>
1812 </li>
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822 <li class="md-nav__item">
1823 <a href="../../../../package/pip/core-object/" class="md-nav__link">
1824 coreObject
1825 </a>
1826 </li>
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836 <li class="md-nav__item">
1837 <a href="../../../../package/pip/cronjob/" class="md-nav__link">
1838 cronjob
1839 </a>
1840 </li>
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850 <li class="md-nav__item">
1851 <a href="../../../../package/pip/database/" class="md-nav__link">
1852 database
1853 </a>
1854 </li>
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864 <li class="md-nav__item">
1865 <a href="../../../../package/pip/event-listener/" class="md-nav__link">
1866 eventListener
1867 </a>
1868 </li>
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878 <li class="md-nav__item">
1879 <a href="../../../../package/pip/file/" class="md-nav__link">
1880 file
1881 </a>
1882 </li>
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892 <li class="md-nav__item">
1893 <a href="../../../../package/pip/file-delete/" class="md-nav__link">
1894 fileDelete
1895 </a>
1896 </li>
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906 <li class="md-nav__item">
1907 <a href="../../../../package/pip/language/" class="md-nav__link">
1908 language
1909 </a>
1910 </li>
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920 <li class="md-nav__item">
1921 <a href="../../../../package/pip/media-provider/" class="md-nav__link">
1922 mediaProvider
1923 </a>
1924 </li>
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934 <li class="md-nav__item">
1935 <a href="../../../../package/pip/menu/" class="md-nav__link">
1936 menu
1937 </a>
1938 </li>
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948 <li class="md-nav__item">
1949 <a href="../../../../package/pip/menu-item/" class="md-nav__link">
1950 menuItem
1951 </a>
1952 </li>
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962 <li class="md-nav__item">
1963 <a href="../../../../package/pip/object-type/" class="md-nav__link">
1964 objectType
1965 </a>
1966 </li>
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976 <li class="md-nav__item">
1977 <a href="../../../../package/pip/object-type-definition/" class="md-nav__link">
1978 objectTypeDefinition
1979 </a>
1980 </li>
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990 <li class="md-nav__item">
1991 <a href="../../../../package/pip/option/" class="md-nav__link">
1992 option
1993 </a>
1994 </li>
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004 <li class="md-nav__item">
2005 <a href="../../../../package/pip/page/" class="md-nav__link">
2006 page
2007 </a>
2008 </li>
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018 <li class="md-nav__item">
2019 <a href="../../../../package/pip/pip/" class="md-nav__link">
2020 pip
2021 </a>
2022 </li>
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032 <li class="md-nav__item">
2033 <a href="../../../../package/pip/script/" class="md-nav__link">
2034 script
2035 </a>
2036 </li>
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046 <li class="md-nav__item">
2047 <a href="../../../../package/pip/smiley/" class="md-nav__link">
2048 smiley
2049 </a>
2050 </li>
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060 <li class="md-nav__item">
2061 <a href="../../../../package/pip/sql/" class="md-nav__link">
2062 sql
2063 </a>
2064 </li>
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074 <li class="md-nav__item">
2075 <a href="../../../../package/pip/style/" class="md-nav__link">
2076 style
2077 </a>
2078 </li>
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088 <li class="md-nav__item">
2089 <a href="../../../../package/pip/template/" class="md-nav__link">
2090 template
2091 </a>
2092 </li>
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102 <li class="md-nav__item">
2103 <a href="../../../../package/pip/template-delete/" class="md-nav__link">
2104 templateDelete
2105 </a>
2106 </li>
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116 <li class="md-nav__item">
2117 <a href="../../../../package/pip/template-listener/" class="md-nav__link">
2118 templateListener
2119 </a>
2120 </li>
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130 <li class="md-nav__item">
2131 <a href="../../../../package/pip/user-group-option/" class="md-nav__link">
2132 userGroupOption
2133 </a>
2134 </li>
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144 <li class="md-nav__item">
2145 <a href="../../../../package/pip/user-menu/" class="md-nav__link">
2146 userMenu
2147 </a>
2148 </li>
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158 <li class="md-nav__item">
2159 <a href="../../../../package/pip/user-notification-event/" class="md-nav__link">
2160 userNotificationEvent
2161 </a>
2162 </li>
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172 <li class="md-nav__item">
2173 <a href="../../../../package/pip/user-option/" class="md-nav__link">
2174 userOption
2175 </a>
2176 </li>
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186 <li class="md-nav__item">
2187 <a href="../../../../package/pip/user-profile-menu/" class="md-nav__link">
2188 userProfileMenu
2189 </a>
2190 </li>
2191
2192
2193
2194
2195 </ul>
2196 </nav>
2197 </li>
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207 <li class="md-nav__item">
2208 <a href="../../../../package/database-php-api/" class="md-nav__link">
2209 Database PHP API
2210 </a>
2211 </li>
2212
2213
2214
2215
2216 </ul>
2217 </nav>
2218 </li>
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230 <li class="md-nav__item md-nav__item--nested">
2231
2232
2233
2234
2235 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
2236
2237
2238
2239 <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false">
2240 Migration
2241 <span class="md-nav__icon md-icon"></span>
2242 </label>
2243
2244 <nav class="md-nav" aria-label="Migration" data-md-level="1">
2245 <label class="md-nav__title" for="__nav_6">
2246 <span class="md-nav__icon md-icon"></span>
2247 Migration
2248 </label>
2249 <ul class="md-nav__list" data-md-scrollfix>
2250
2251
2252
2253
2254
2255
2256
2257 <li class="md-nav__item md-nav__item--nested">
2258
2259
2260
2261
2262 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6_1" type="checkbox" id="__nav_6_1" >
2263
2264
2265
2266 <label class="md-nav__link" for="__nav_6_1" tabindex="0" aria-expanded="false">
2267 From WoltLab Suite 5.5
2268 <span class="md-nav__icon md-icon"></span>
2269 </label>
2270
2271 <nav class="md-nav" aria-label="From WoltLab Suite 5.5" data-md-level="2">
2272 <label class="md-nav__title" for="__nav_6_1">
2273 <span class="md-nav__icon md-icon"></span>
2274 From WoltLab Suite 5.5
2275 </label>
2276 <ul class="md-nav__list" data-md-scrollfix>
2277
2278
2279
2280
2281
2282
2283 <li class="md-nav__item">
2284 <a href="../../../../migration/wsc55/php/" class="md-nav__link">
2285 PHP API
2286 </a>
2287 </li>
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297 <li class="md-nav__item">
2298 <a href="../../../../migration/wsc55/javascript/" class="md-nav__link">
2299 TypeScript and JavaScript
2300 </a>
2301 </li>
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311 <li class="md-nav__item">
2312 <a href="../../../../migration/wsc55/templates/" class="md-nav__link">
2313 Templates
2314 </a>
2315 </li>
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325 <li class="md-nav__item">
2326 <a href="../../../../migration/wsc55/icons/" class="md-nav__link">
2327 Icons
2328 </a>
2329 </li>
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339 <li class="md-nav__item">
2340 <a href="../../../../migration/wsc55/dialogs/" class="md-nav__link">
2341 Dialogs
2342 </a>
2343 </li>
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353 <li class="md-nav__item">
2354 <a href="../../../../migration/wsc55/libraries/" class="md-nav__link">
2355 Third Party Libraries
2356 </a>
2357 </li>
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367 <li class="md-nav__item">
2368 <a href="../../../../migration/wsc55/deprecations_removals/" class="md-nav__link">
2369 Deprecations and Removals
2370 </a>
2371 </li>
2372
2373
2374
2375
2376 </ul>
2377 </nav>
2378 </li>
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389 <li class="md-nav__item md-nav__item--nested">
2390
2391
2392
2393
2394 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6_2" type="checkbox" id="__nav_6_2" >
2395
2396
2397
2398 <label class="md-nav__link" for="__nav_6_2" tabindex="0" aria-expanded="false">
2399 From WoltLab Suite 5.4
2400 <span class="md-nav__icon md-icon"></span>
2401 </label>
2402
2403 <nav class="md-nav" aria-label="From WoltLab Suite 5.4" data-md-level="2">
2404 <label class="md-nav__title" for="__nav_6_2">
2405 <span class="md-nav__icon md-icon"></span>
2406 From WoltLab Suite 5.4
2407 </label>
2408 <ul class="md-nav__list" data-md-scrollfix>
2409
2410
2411
2412
2413
2414
2415 <li class="md-nav__item">
2416 <a href="../../../../migration/wsc54/php/" class="md-nav__link">
2417 PHP API
2418 </a>
2419 </li>
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429 <li class="md-nav__item">
2430 <a href="../../../../migration/wsc54/javascript/" class="md-nav__link">
2431 TypeScript and JavaScript
2432 </a>
2433 </li>
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443 <li class="md-nav__item">
2444 <a href="../../../../migration/wsc54/templates/" class="md-nav__link">
2445 Templates
2446 </a>
2447 </li>
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457 <li class="md-nav__item">
2458 <a href="../../../../migration/wsc54/libraries/" class="md-nav__link">
2459 Third Party Libraries
2460 </a>
2461 </li>
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471 <li class="md-nav__item">
2472 <a href="../../../../migration/wsc54/deprecations_removals/" class="md-nav__link">
2473 Deprecations and Removals
2474 </a>
2475 </li>
2476
2477
2478
2479
2480 </ul>
2481 </nav>
2482 </li>
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493 <li class="md-nav__item md-nav__item--nested">
2494
2495
2496
2497
2498 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6_3" type="checkbox" id="__nav_6_3" >
2499
2500
2501
2502 <label class="md-nav__link" for="__nav_6_3" tabindex="0" aria-expanded="false">
2503 From WoltLab Suite 5.3
2504 <span class="md-nav__icon md-icon"></span>
2505 </label>
2506
2507 <nav class="md-nav" aria-label="From WoltLab Suite 5.3" data-md-level="2">
2508 <label class="md-nav__title" for="__nav_6_3">
2509 <span class="md-nav__icon md-icon"></span>
2510 From WoltLab Suite 5.3
2511 </label>
2512 <ul class="md-nav__list" data-md-scrollfix>
2513
2514
2515
2516
2517
2518
2519 <li class="md-nav__item">
2520 <a href="../../../../migration/wsc53/php/" class="md-nav__link">
2521 PHP API
2522 </a>
2523 </li>
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533 <li class="md-nav__item">
2534 <a href="../../../../migration/wsc53/session/" class="md-nav__link">
2535 Session Handling and Authentication
2536 </a>
2537 </li>
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547 <li class="md-nav__item">
2548 <a href="../../../../migration/wsc53/javascript/" class="md-nav__link">
2549 TypeScript and JavaScript
2550 </a>
2551 </li>
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561 <li class="md-nav__item">
2562 <a href="../../../../migration/wsc53/templates/" class="md-nav__link">
2563 Templates
2564 </a>
2565 </li>
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575 <li class="md-nav__item">
2576 <a href="../../../../migration/wsc53/libraries/" class="md-nav__link">
2577 Third Party Libraries
2578 </a>
2579 </li>
2580
2581
2582
2583
2584 </ul>
2585 </nav>
2586 </li>
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597 <li class="md-nav__item md-nav__item--nested">
2598
2599
2600
2601
2602 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6_4" type="checkbox" id="__nav_6_4" >
2603
2604
2605
2606 <label class="md-nav__link" for="__nav_6_4" tabindex="0" aria-expanded="false">
2607 From WoltLab Suite 5.2
2608 <span class="md-nav__icon md-icon"></span>
2609 </label>
2610
2611 <nav class="md-nav" aria-label="From WoltLab Suite 5.2" data-md-level="2">
2612 <label class="md-nav__title" for="__nav_6_4">
2613 <span class="md-nav__icon md-icon"></span>
2614 From WoltLab Suite 5.2
2615 </label>
2616 <ul class="md-nav__list" data-md-scrollfix>
2617
2618
2619
2620
2621
2622
2623 <li class="md-nav__item">
2624 <a href="../../../../migration/wsc52/php/" class="md-nav__link">
2625 PHP API
2626 </a>
2627 </li>
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637 <li class="md-nav__item">
2638 <a href="../../../../migration/wsc52/templates/" class="md-nav__link">
2639 Templates and Languages
2640 </a>
2641 </li>
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651 <li class="md-nav__item">
2652 <a href="../../../../migration/wsc52/libraries/" class="md-nav__link">
2653 Third Party Libraries
2654 </a>
2655 </li>
2656
2657
2658
2659
2660 </ul>
2661 </nav>
2662 </li>
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673 <li class="md-nav__item md-nav__item--nested">
2674
2675
2676
2677
2678 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6_5" type="checkbox" id="__nav_6_5" >
2679
2680
2681
2682 <label class="md-nav__link" for="__nav_6_5" tabindex="0" aria-expanded="false">
2683 From WoltLab Suite 3.1
2684 <span class="md-nav__icon md-icon"></span>
2685 </label>
2686
2687 <nav class="md-nav" aria-label="From WoltLab Suite 3.1" data-md-level="2">
2688 <label class="md-nav__title" for="__nav_6_5">
2689 <span class="md-nav__icon md-icon"></span>
2690 From WoltLab Suite 3.1
2691 </label>
2692 <ul class="md-nav__list" data-md-scrollfix>
2693
2694
2695
2696
2697
2698
2699 <li class="md-nav__item">
2700 <a href="../../../../migration/wsc31/php/" class="md-nav__link">
2701 PHP API
2702 </a>
2703 </li>
2704
2705
2706
2707
2708 </ul>
2709 </nav>
2710 </li>
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721 <li class="md-nav__item md-nav__item--nested">
2722
2723
2724
2725
2726 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6_6" type="checkbox" id="__nav_6_6" >
2727
2728
2729
2730 <label class="md-nav__link" for="__nav_6_6" tabindex="0" aria-expanded="false">
2731 From WoltLab Suite 3.0
2732 <span class="md-nav__icon md-icon"></span>
2733 </label>
2734
2735 <nav class="md-nav" aria-label="From WoltLab Suite 3.0" data-md-level="2">
2736 <label class="md-nav__title" for="__nav_6_6">
2737 <span class="md-nav__icon md-icon"></span>
2738 From WoltLab Suite 3.0
2739 </label>
2740 <ul class="md-nav__list" data-md-scrollfix>
2741
2742
2743
2744
2745
2746
2747 <li class="md-nav__item">
2748 <a href="../../../../migration/wsc30/php/" class="md-nav__link">
2749 PHP API
2750 </a>
2751 </li>
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761 <li class="md-nav__item">
2762 <a href="../../../../migration/wsc30/javascript/" class="md-nav__link">
2763 JavaScript API
2764 </a>
2765 </li>
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775 <li class="md-nav__item">
2776 <a href="../../../../migration/wsc30/templates/" class="md-nav__link">
2777 Templates
2778 </a>
2779 </li>
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789 <li class="md-nav__item">
2790 <a href="../../../../migration/wsc30/css/" class="md-nav__link">
2791 CSS
2792 </a>
2793 </li>
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803 <li class="md-nav__item">
2804 <a href="../../../../migration/wsc30/package/" class="md-nav__link">
2805 Package Components
2806 </a>
2807 </li>
2808
2809
2810
2811
2812 </ul>
2813 </nav>
2814 </li>
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825 <li class="md-nav__item md-nav__item--nested">
2826
2827
2828
2829
2830 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6_7" type="checkbox" id="__nav_6_7" >
2831
2832
2833
2834 <label class="md-nav__link" for="__nav_6_7" tabindex="0" aria-expanded="false">
2835 From WCF 2.1
2836 <span class="md-nav__icon md-icon"></span>
2837 </label>
2838
2839 <nav class="md-nav" aria-label="From WCF 2.1" data-md-level="2">
2840 <label class="md-nav__title" for="__nav_6_7">
2841 <span class="md-nav__icon md-icon"></span>
2842 From WCF 2.1
2843 </label>
2844 <ul class="md-nav__list" data-md-scrollfix>
2845
2846
2847
2848
2849
2850
2851 <li class="md-nav__item">
2852 <a href="../../../../migration/wcf21/php/" class="md-nav__link">
2853 PHP API
2854 </a>
2855 </li>
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865 <li class="md-nav__item">
2866 <a href="../../../../migration/wcf21/templates/" class="md-nav__link">
2867 Templates
2868 </a>
2869 </li>
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879 <li class="md-nav__item">
2880 <a href="../../../../migration/wcf21/css/" class="md-nav__link">
2881 CSS
2882 </a>
2883 </li>
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893 <li class="md-nav__item">
2894 <a href="../../../../migration/wcf21/package/" class="md-nav__link">
2895 Package Components
2896 </a>
2897 </li>
2898
2899
2900
2901
2902 </ul>
2903 </nav>
2904 </li>
2905
2906
2907
2908
2909 </ul>
2910 </nav>
2911 </li>
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923 <li class="md-nav__item md-nav__item--nested">
2924
2925
2926
2927
2928 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
2929
2930
2931
2932 <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false">
2933 Tutorials
2934 <span class="md-nav__icon md-icon"></span>
2935 </label>
2936
2937 <nav class="md-nav" aria-label="Tutorials" data-md-level="1">
2938 <label class="md-nav__title" for="__nav_7">
2939 <span class="md-nav__icon md-icon"></span>
2940 Tutorials
2941 </label>
2942 <ul class="md-nav__list" data-md-scrollfix>
2943
2944
2945
2946
2947
2948
2949
2950 <li class="md-nav__item md-nav__item--nested">
2951
2952
2953
2954
2955 <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7_1" type="checkbox" id="__nav_7_1" >
2956
2957
2958
2959 <label class="md-nav__link" for="__nav_7_1" tabindex="0" aria-expanded="false">
2960 Tutorial Series
2961 <span class="md-nav__icon md-icon"></span>
2962 </label>
2963
2964 <nav class="md-nav" aria-label="Tutorial Series" data-md-level="2">
2965 <label class="md-nav__title" for="__nav_7_1">
2966 <span class="md-nav__icon md-icon"></span>
2967 Tutorial Series
2968 </label>
2969 <ul class="md-nav__list" data-md-scrollfix>
2970
2971
2972
2973
2974
2975
2976 <li class="md-nav__item">
2977 <a href="../../../../tutorial/series/overview/" class="md-nav__link">
2978 Overview
2979 </a>
2980 </li>
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990 <li class="md-nav__item">
2991 <a href="../../../../tutorial/series/part_1/" class="md-nav__link">
2992 Part 1
2993 </a>
2994 </li>
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004 <li class="md-nav__item">
3005 <a href="../../../../tutorial/series/part_2/" class="md-nav__link">
3006 Part 2
3007 </a>
3008 </li>
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018 <li class="md-nav__item">
3019 <a href="../../../../tutorial/series/part_3/" class="md-nav__link">
3020 Part 3
3021 </a>
3022 </li>
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032 <li class="md-nav__item">
3033 <a href="../../../../tutorial/series/part_4/" class="md-nav__link">
3034 Part 4
3035 </a>
3036 </li>
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046 <li class="md-nav__item">
3047 <a href="../../../../tutorial/series/part_5/" class="md-nav__link">
3048 Part 5
3049 </a>
3050 </li>
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060 <li class="md-nav__item">
3061 <a href="../../../../tutorial/series/part_6/" class="md-nav__link">
3062 Part 6
3063 </a>
3064 </li>
3065
3066
3067
3068
3069 </ul>
3070 </nav>
3071 </li>
3072
3073
3074
3075
3076 </ul>
3077 </nav>
3078 </li>
3079
3080
3081
3082 </ul>
3083 </nav>
3084 </div>
3085 </div>
3086 </div>
3087
3088
3089
3090 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
3091 <div class="md-sidebar__scrollwrap">
3092 <div class="md-sidebar__inner">
3093
3094
3095 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
3096
3097
3098
3099
3100
3101
3102 <label class="md-nav__title" for="__toc">
3103 <span class="md-nav__icon md-icon"></span>
3104 Table of contents
3105 </label>
3106 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
3107
3108 <li class="md-nav__item">
3109 <a href="#abstract-form-fields" class="md-nav__link">
3110 Abstract Form Fields
3111 </a>
3112
3113 <nav class="md-nav" aria-label="Abstract Form Fields">
3114 <ul class="md-nav__list">
3115
3116 <li class="md-nav__item">
3117 <a href="#abstractformfield" class="md-nav__link">
3118 AbstractFormField
3119 </a>
3120
3121 </li>
3122
3123 <li class="md-nav__item">
3124 <a href="#abstractnumericformfield" class="md-nav__link">
3125 AbstractNumericFormField
3126 </a>
3127
3128 </li>
3129
3130 <li class="md-nav__item">
3131 <a href="#abstractformfielddecorator" class="md-nav__link">
3132 AbstractFormFieldDecorator
3133 </a>
3134
3135 </li>
3136
3137 </ul>
3138 </nav>
3139
3140 </li>
3141
3142 <li class="md-nav__item">
3143 <a href="#general-form-fields" class="md-nav__link">
3144 General Form Fields
3145 </a>
3146
3147 <nav class="md-nav" aria-label="General Form Fields">
3148 <ul class="md-nav__list">
3149
3150 <li class="md-nav__item">
3151 <a href="#booleanformfield" class="md-nav__link">
3152 BooleanFormField
3153 </a>
3154
3155 </li>
3156
3157 <li class="md-nav__item">
3158 <a href="#checkboxformfield" class="md-nav__link">
3159 CheckboxFormField
3160 </a>
3161
3162 </li>
3163
3164 <li class="md-nav__item">
3165 <a href="#classnameformfield" class="md-nav__link">
3166 ClassNameFormField
3167 </a>
3168
3169 </li>
3170
3171 <li class="md-nav__item">
3172 <a href="#dateformfield" class="md-nav__link">
3173 DateFormField
3174 </a>
3175
3176 </li>
3177
3178 <li class="md-nav__item">
3179 <a href="#descriptionformfield" class="md-nav__link">
3180 DescriptionFormField
3181 </a>
3182
3183 </li>
3184
3185 <li class="md-nav__item">
3186 <a href="#emailformfield" class="md-nav__link">
3187 EmailFormField
3188 </a>
3189
3190 </li>
3191
3192 <li class="md-nav__item">
3193 <a href="#floatformfield" class="md-nav__link">
3194 FloatFormField
3195 </a>
3196
3197 </li>
3198
3199 <li class="md-nav__item">
3200 <a href="#hiddenformfield" class="md-nav__link">
3201 HiddenFormField
3202 </a>
3203
3204 </li>
3205
3206 <li class="md-nav__item">
3207 <a href="#iconformfield" class="md-nav__link">
3208 IconFormField
3209 </a>
3210
3211 </li>
3212
3213 <li class="md-nav__item">
3214 <a href="#integerformfield" class="md-nav__link">
3215 IntegerFormField
3216 </a>
3217
3218 </li>
3219
3220 <li class="md-nav__item">
3221 <a href="#isdisabledformfield" class="md-nav__link">
3222 IsDisabledFormField
3223 </a>
3224
3225 </li>
3226
3227 <li class="md-nav__item">
3228 <a href="#itemlistformfield" class="md-nav__link">
3229 ItemListFormField
3230 </a>
3231
3232 </li>
3233
3234 <li class="md-nav__item">
3235 <a href="#multilinetextformfield" class="md-nav__link">
3236 MultilineTextFormField
3237 </a>
3238
3239 </li>
3240
3241 <li class="md-nav__item">
3242 <a href="#multipleselectionformfield" class="md-nav__link">
3243 MultipleSelectionFormField
3244 </a>
3245
3246 </li>
3247
3248 <li class="md-nav__item">
3249 <a href="#radiobuttonformfield" class="md-nav__link">
3250 RadioButtonFormField
3251 </a>
3252
3253 </li>
3254
3255 <li class="md-nav__item">
3256 <a href="#ratingformfield" class="md-nav__link">
3257 RatingFormField
3258 </a>
3259
3260 </li>
3261
3262 <li class="md-nav__item">
3263 <a href="#showorderformfield" class="md-nav__link">
3264 ShowOrderFormField
3265 </a>
3266
3267 </li>
3268
3269 <li class="md-nav__item">
3270 <a href="#singleselectionformfield" class="md-nav__link">
3271 SingleSelectionFormField
3272 </a>
3273
3274 </li>
3275
3276 <li class="md-nav__item">
3277 <a href="#sortorderformfield" class="md-nav__link">
3278 SortOrderFormField
3279 </a>
3280
3281 </li>
3282
3283 <li class="md-nav__item">
3284 <a href="#textformfield" class="md-nav__link">
3285 TextFormField
3286 </a>
3287
3288 </li>
3289
3290 <li class="md-nav__item">
3291 <a href="#titleformfield" class="md-nav__link">
3292 TitleFormField
3293 </a>
3294
3295 </li>
3296
3297 <li class="md-nav__item">
3298 <a href="#urlformfield" class="md-nav__link">
3299 UrlFormField
3300 </a>
3301
3302 </li>
3303
3304 </ul>
3305 </nav>
3306
3307 </li>
3308
3309 <li class="md-nav__item">
3310 <a href="#specific-fields" class="md-nav__link">
3311 Specific Fields
3312 </a>
3313
3314 <nav class="md-nav" aria-label="Specific Fields">
3315 <ul class="md-nav__list">
3316
3317 <li class="md-nav__item">
3318 <a href="#aclformfield" class="md-nav__link">
3319 AclFormField
3320 </a>
3321
3322 </li>
3323
3324 <li class="md-nav__item">
3325 <a href="#buttonformfield" class="md-nav__link">
3326 ButtonFormField
3327 </a>
3328
3329 </li>
3330
3331 <li class="md-nav__item">
3332 <a href="#captchaformfield" class="md-nav__link">
3333 CaptchaFormField
3334 </a>
3335
3336 </li>
3337
3338 <li class="md-nav__item">
3339 <a href="#colorformfield" class="md-nav__link">
3340 ColorFormField
3341 </a>
3342
3343 </li>
3344
3345 <li class="md-nav__item">
3346 <a href="#contentlanguageformfield" class="md-nav__link">
3347 ContentLanguageFormField
3348 </a>
3349
3350 </li>
3351
3352 <li class="md-nav__item">
3353 <a href="#labelformfield" class="md-nav__link">
3354 LabelFormField
3355 </a>
3356
3357 </li>
3358
3359 <li class="md-nav__item">
3360 <a href="#optionformfield" class="md-nav__link">
3361 OptionFormField
3362 </a>
3363
3364 </li>
3365
3366 <li class="md-nav__item">
3367 <a href="#simpleaclformfield" class="md-nav__link">
3368 SimpleAclFormField
3369 </a>
3370
3371 </li>
3372
3373 <li class="md-nav__item">
3374 <a href="#singlemediaselectionformfield" class="md-nav__link">
3375 SingleMediaSelectionFormField
3376 </a>
3377
3378 </li>
3379
3380 <li class="md-nav__item">
3381 <a href="#tagformfield" class="md-nav__link">
3382 TagFormField
3383 </a>
3384
3385 </li>
3386
3387 <li class="md-nav__item">
3388 <a href="#uploadformfield" class="md-nav__link">
3389 UploadFormField
3390 </a>
3391
3392 <nav class="md-nav" aria-label="UploadFormField">
3393 <ul class="md-nav__list">
3394
3395 <li class="md-nav__item">
3396 <a href="#provide-value-from-database-object" class="md-nav__link">
3397 Provide value from database object
3398 </a>
3399
3400 </li>
3401
3402 <li class="md-nav__item">
3403 <a href="#process-files" class="md-nav__link">
3404 Process files
3405 </a>
3406
3407 </li>
3408
3409 </ul>
3410 </nav>
3411
3412 </li>
3413
3414 <li class="md-nav__item">
3415 <a href="#userformfield" class="md-nav__link">
3416 UserFormField
3417 </a>
3418
3419 </li>
3420
3421 <li class="md-nav__item">
3422 <a href="#userpasswordfield" class="md-nav__link">
3423 UserPasswordField
3424 </a>
3425
3426 </li>
3427
3428 <li class="md-nav__item">
3429 <a href="#usergroupoptionformfield" class="md-nav__link">
3430 UserGroupOptionFormField
3431 </a>
3432
3433 </li>
3434
3435 <li class="md-nav__item">
3436 <a href="#usernameformfield" class="md-nav__link">
3437 UsernameFormField
3438 </a>
3439
3440 </li>
3441
3442 </ul>
3443 </nav>
3444
3445 </li>
3446
3447 <li class="md-nav__item">
3448 <a href="#wysiwyg-form-container" class="md-nav__link">
3449 Wysiwyg form container
3450 </a>
3451
3452 <nav class="md-nav" aria-label="Wysiwyg form container">
3453 <ul class="md-nav__list">
3454
3455 <li class="md-nav__item">
3456 <a href="#wysiwygattachmentformfield" class="md-nav__link">
3457 WysiwygAttachmentFormField
3458 </a>
3459
3460 </li>
3461
3462 <li class="md-nav__item">
3463 <a href="#wysiwygpollformcontainer" class="md-nav__link">
3464 WysiwygPollFormContainer
3465 </a>
3466
3467 </li>
3468
3469 <li class="md-nav__item">
3470 <a href="#wysiwygsmileyformcontainer" class="md-nav__link">
3471 WysiwygSmileyFormContainer
3472 </a>
3473
3474 <nav class="md-nav" aria-label="WysiwygSmileyFormContainer">
3475 <ul class="md-nav__list">
3476
3477 <li class="md-nav__item">
3478 <a href="#wysiwygsmileyformnode" class="md-nav__link">
3479 WysiwygSmileyFormNode
3480 </a>
3481
3482 </li>
3483
3484 </ul>
3485 </nav>
3486
3487 </li>
3488
3489 <li class="md-nav__item">
3490 <a href="#example" class="md-nav__link">
3491 Example
3492 </a>
3493
3494 </li>
3495
3496 <li class="md-nav__item">
3497 <a href="#wysiwygformfield" class="md-nav__link">
3498 WysiwygFormField
3499 </a>
3500
3501 </li>
3502
3503 <li class="md-nav__item">
3504 <a href="#twysiwygformnode" class="md-nav__link">
3505 TWysiwygFormNode
3506 </a>
3507
3508 </li>
3509
3510 </ul>
3511 </nav>
3512
3513 </li>
3514
3515 <li class="md-nav__item">
3516 <a href="#application-specific-form-fields" class="md-nav__link">
3517 Application-Specific Form Fields
3518 </a>
3519
3520 <nav class="md-nav" aria-label="Application-Specific Form Fields">
3521 <ul class="md-nav__list">
3522
3523 <li class="md-nav__item">
3524 <a href="#woltlab-suite-forum" class="md-nav__link">
3525 WoltLab Suite Forum
3526 </a>
3527
3528 <nav class="md-nav" aria-label="WoltLab Suite Forum">
3529 <ul class="md-nav__list">
3530
3531 <li class="md-nav__item">
3532 <a href="#multipleboardselectionformfield" class="md-nav__link">
3533 MultipleBoardSelectionFormField
3534 </a>
3535
3536 </li>
3537
3538 </ul>
3539 </nav>
3540
3541 </li>
3542
3543 </ul>
3544 </nav>
3545
3546 </li>
3547
3548 <li class="md-nav__item">
3549 <a href="#single-use-form-fields" class="md-nav__link">
3550 Single-Use Form Fields
3551 </a>
3552
3553 <nav class="md-nav" aria-label="Single-Use Form Fields">
3554 <ul class="md-nav__list">
3555
3556 <li class="md-nav__item">
3557 <a href="#bbcodeattributesformfield" class="md-nav__link">
3558 BBCodeAttributesFormField
3559 </a>
3560
3561 </li>
3562
3563 <li class="md-nav__item">
3564 <a href="#devtoolsprojectexcludedpackagesformfield" class="md-nav__link">
3565 DevtoolsProjectExcludedPackagesFormField
3566 </a>
3567
3568 </li>
3569
3570 <li class="md-nav__item">
3571 <a href="#devtoolsprojectinstructionsformfield" class="md-nav__link">
3572 DevtoolsProjectInstructionsFormField
3573 </a>
3574
3575 </li>
3576
3577 <li class="md-nav__item">
3578 <a href="#devtoolsprojectoptionalpackagesformfield" class="md-nav__link">
3579 DevtoolsProjectOptionalPackagesFormField
3580 </a>
3581
3582 </li>
3583
3584 <li class="md-nav__item">
3585 <a href="#devtoolsprojectrequiredpackagesformfield" class="md-nav__link">
3586 DevtoolsProjectRequiredPackagesFormField
3587 </a>
3588
3589 </li>
3590
3591 </ul>
3592 </nav>
3593
3594 </li>
3595
3596 </ul>
3597
3598 </nav>
3599 </div>
3600 </div>
3601 </div>
3602
3603
3604
3605 <div class="md-content" data-md-component="content">
3606 <article class="md-content__inner md-typeset">
3607
3608
3609
3610
3611
3612
3613
3614
3615 <h1 id="form-builder-fields">Form Builder Fields<a class="headerlink" href="#form-builder-fields" title="Permanent link">#</a></h1>
3616 <h2 id="abstract-form-fields">Abstract Form Fields<a class="headerlink" href="#abstract-form-fields" title="Permanent link">#</a></h2>
3617 <p>The following form field classes cannot be instantiated directly because they are abstract, but they can/must be used when creating own form field classes. </p>
3618 <h3 id="abstractformfield"><code>AbstractFormField</code><a class="headerlink" href="#abstractformfield" title="Permanent link">#</a></h3>
3619 <p><code>AbstractFormField</code> is the abstract default implementation of the <code>IFormField</code> interface and it is expected that every implementation of <code>IFormField</code> implements the interface by extending this class.</p>
3620 <h3 id="abstractnumericformfield"><code>AbstractNumericFormField</code><a class="headerlink" href="#abstractnumericformfield" title="Permanent link">#</a></h3>
3621 <p><code>AbstractNumericFormField</code> is the abstract implementation of a form field handling a single numeric value.
3622 The class implements <code>IAttributeFormField</code>, <code>IAutoCompleteFormField</code>, <code>ICssClassFormField</code>, <code>IImmutableFormField</code>, <code>IInputModeFormField</code>, <code>IMaximumFormField</code>, <code>IMinimumFormField</code>, <code>INullableFormField</code>, <code>IPlaceholderFormField</code> and <code>ISuffixedFormField</code>.
3623 If the property <code>$integerValues</code> is <code>true</code>, the form field works with integer values, otherwise it works with floating point numbers.
3624 The methods <code>step($step = null)</code> and <code>getStep()</code> can be used to set and get the step attribute of the <code>input</code> element.
3625 The default step for form fields with integer values is <code>1</code>.
3626 Otherwise, the default step is <code>any</code>.</p>
3627 <h3 id="abstractformfielddecorator"><code>AbstractFormFieldDecorator</code><a class="headerlink" href="#abstractformfielddecorator" title="Permanent link">#</a></h3>
3628 <div class="admonition info">
3629 <p class="admonition-title">Only available since version 5.4.5.</p>
3630 </div>
3631 <p><code>AbstractFormFieldDecorator</code> is a default implementation of a decorator for form fields that forwards calls to all methods defined in <code>IFormField</code> to the respective method of the decorated object.
3632 The class implements <code>IFormfield</code>.
3633 If the implementation of a more specific interface is required then the remaining methods must be implemented in the concrete decorator derived from <code>AbstractFormFieldDecorator</code> and the type of the <code>$field</code> property must be narrowed appropriately.</p>
3634 <h2 id="general-form-fields">General Form Fields<a class="headerlink" href="#general-form-fields" title="Permanent link">#</a></h2>
3635 <p>The following form fields are general reusable fields without any underlying context.</p>
3636 <h3 id="booleanformfield"><code>BooleanFormField</code><a class="headerlink" href="#booleanformfield" title="Permanent link">#</a></h3>
3637 <p><code>BooleanFormField</code> is used for boolean (<code>0</code> or <code>1</code>, <code>yes</code> or <code>no</code>) values.
3638 Objects of this class require a label.
3639 The return value of <code>getSaveValue()</code> is the integer representation of the boolean value, i.e. <code>0</code> or <code>1</code>.
3640 The class implements <code>IAttributeFormField</code>, <code>IAutoFocusFormField</code>, <code>ICssClassFormField</code>, and <code>IImmutableFormField</code>.</p>
3641 <h3 id="checkboxformfield"><code>CheckboxFormField</code><a class="headerlink" href="#checkboxformfield" title="Permanent link">#</a></h3>
3642 <p><code>CheckboxFormField</code> extends <code>BooleanFormField</code> and offers a simple HTML checkbox.</p>
3643 <h3 id="classnameformfield"><code>ClassNameFormField</code><a class="headerlink" href="#classnameformfield" title="Permanent link">#</a></h3>
3644 <p><code>ClassNameFormField</code> is a <a href="#textformfield">text form field</a> that supports additional settings, specific to entering a PHP class name:</p>
3645 <ul>
3646 <li><code>classExists($classExists = true)</code> and <code>getClassExists()</code> can be used to ensure that the entered class currently exists in the installation.
3647 By default, the existance of the entered class is required.</li>
3648 <li><code>implementedInterface($interface)</code> and <code>getImplementedInterface()</code> can be used to ensure that the entered class implements the specified interface.
3649 By default, no interface is required.</li>
3650 <li><code>parentClass($parentClass)</code> and <code>getParentClass()</code> can be used to ensure that the entered class extends the specified class.
3651 By default, no parent class is required.</li>
3652 <li><code>instantiable($instantiable = true)</code> and <code>isInstantiable()</code> can be used to ensure that the entered class is instantiable.
3653 By default, entered classes have to instantiable.</li>
3654 </ul>
3655 <p>Additionally, the default id of a <code>ClassNameFormField</code> object is <code>className</code>, the default label is <code>wcf.form.field.className</code>, and if either an interface or a parent class is required, a default description is set if no description has already been set (<code>wcf.form.field.className.description.interface</code> and <code>wcf.form.field.className.description.parentClass</code>, respectively).</p>
3656 <h3 id="dateformfield"><code>DateFormField</code><a class="headerlink" href="#dateformfield" title="Permanent link">#</a></h3>
3657 <p><code>DateFormField</code> is a form field to enter a date (and optionally a time).
3658 The class implements <code>IAttributeFormField</code>, <code>IAutoFocusFormField</code>, <code>ICssClassFormField</code>, <code>IImmutableFormField</code>, and <code>INullableFormField</code>.
3659 The following methods are specific to this form field class:</p>
3660 <ul>
3661 <li><code>earliestDate($earliestDate)</code> and <code>getEarliestDate()</code> can be used to get and set the earliest selectable/valid date and <code>latestDate($latestDate)</code> and <code>getLatestDate()</code> can be used to get and set the latest selectable/valid date.
3662 The date passed to the setters must have the same format as set via <code>saveValueFormat()</code>.
3663 If a custom format is used, that format has to be set via <code>saveValueFormat()</code> before calling any of the setters.</li>
3664 <li><code>saveValueFormat($saveValueFormat)</code> and <code>getSaveValueFormat()</code> can be used to specify the date format of the value returned by <code>getSaveValue()</code>.
3665 By default, <code>U</code> is used as format.
3666 The <a href="https://secure.php.net/manual/en/function.date.php">PHP manual</a> provides an overview of supported formats.</li>
3667 <li><code>supportTime($supportsTime = true)</code> and <code>supportsTime()</code> can be used to toggle whether, in addition to a date, a time can also be specified.
3668 By default, specifying a time is disabled.</li>
3669 </ul>
3670 <h3 id="descriptionformfield"><code>DescriptionFormField</code><a class="headerlink" href="#descriptionformfield" title="Permanent link">#</a></h3>
3671 <p><code>DescriptionFormField</code> is a <a href="#multilinetextformfield">multi-line text form field</a> with <code>description</code> as the default id and <code>wcf.global.description</code> as the default label.</p>
3672 <h3 id="emailformfield"><code>EmailFormField</code><a class="headerlink" href="#emailformfield" title="Permanent link">#</a></h3>
3673 <p><code>EmailFormField</code> is a form field to enter an email address which is internally validated using <code>UserUtil::isValidEmail()</code>.
3674 The class implements <code>IAttributeFormField</code>, <code>IAutoCompleteFormField</code>, <code>IAutoFocusFormField</code>, <code>ICssClassFormField</code>, <code>II18nFormField</code>, <code>IImmutableFormField</code>, <code>IInputModeFormField</code>, <code>IPatternFormField</code>, and <code>IPlaceholderFormField</code>.</p>
3675 <h3 id="floatformfield"><code>FloatFormField</code><a class="headerlink" href="#floatformfield" title="Permanent link">#</a></h3>
3676 <p><code>FloatFormField</code> is an implementation of <a href="#abstractnumericformfield">AbstractNumericFormField</a> for floating point numbers.</p>
3677 <h3 id="hiddenformfield"><code>HiddenFormField</code><a class="headerlink" href="#hiddenformfield" title="Permanent link">#</a></h3>
3678 <p><code>HiddenFormField</code> is a form field without any user-visible UI.
3679 Even though the form field is invisible to the user, the value can still be modified by the user, e.g. by leveraging the web browsers developer tools.
3680 The <code>HiddenFormField</code> <em>must not</em> be used to transfer sensitive information or information that the user should not be able to modify.</p>
3681 <h3 id="iconformfield"><code>IconFormField</code><a class="headerlink" href="#iconformfield" title="Permanent link">#</a></h3>
3682 <p><code>IconFormField</code> is a form field to select a FontAwesome icon.</p>
3683 <h3 id="integerformfield"><code>IntegerFormField</code><a class="headerlink" href="#integerformfield" title="Permanent link">#</a></h3>
3684 <p><code>IntegerFormField</code> is an implementation of <a href="#abstractnumericformfield">AbstractNumericFormField</a> for integers.</p>
3685 <h3 id="isdisabledformfield"><code>IsDisabledFormField</code><a class="headerlink" href="#isdisabledformfield" title="Permanent link">#</a></h3>
3686 <p><code>IsDisabledFormField</code> is a <a href="#booleanformfield">boolean form field</a> with <code>isDisabled</code> as the default id.</p>
3687 <h3 id="itemlistformfield"><code>ItemListFormField</code><a class="headerlink" href="#itemlistformfield" title="Permanent link">#</a></h3>
3688 <p><code>ItemListFormField</code> is a form field in which multiple values can be entered and returned in different formats as save value.
3689 The class implements <code>IAttributeFormField</code>, <code>IAutoFocusFormField</code>, <code>ICssClassFormField</code>, <code>IImmutableFormField</code>, and <code>IMultipleFormField</code>.
3690 The <code>saveValueType($saveValueType)</code> and <code>getSaveValueType()</code> methods are specific to this form field class and determine the format of the save value.
3691 The following save value types are supported:</p>
3692 <ul>
3693 <li><code>ItemListFormField::SAVE_VALUE_TYPE_ARRAY</code> adds a custom data processor that writes the form field data directly in the parameters array and not in the data sub-array of the parameters array.</li>
3694 <li><code>ItemListFormField::SAVE_VALUE_TYPE_CSV</code> lets the value be returned as a string in which the values are concatenated by commas.</li>
3695 <li><code>ItemListFormField::SAVE_VALUE_TYPE_NSV</code> lets the value be returned as a string in which the values are concatenated by <code>\n</code>.</li>
3696 <li><code>ItemListFormField::SAVE_VALUE_TYPE_SSV</code> lets the value be returned as a string in which the values are concatenated by spaces.</li>
3697 </ul>
3698 <p>By default, <code>ItemListFormField::SAVE_VALUE_TYPE_CSV</code> is used.</p>
3699 <p>If <code>ItemListFormField::SAVE_VALUE_TYPE_ARRAY</code> is used as save value type, <code>ItemListFormField</code> objects register a <a href="../validation_data/#customformfielddataprocessor">custom form field data processor</a> to add the relevant array into the <code>$parameters</code> array directly using the object property as the array key.</p>
3700 <h3 id="multilinetextformfield"><code>MultilineTextFormField</code><a class="headerlink" href="#multilinetextformfield" title="Permanent link">#</a></h3>
3701 <p><code>MultilineTextFormField</code> is a <a href="#textformfield">text form field</a> that supports multiple rows of text.
3702 The methods <code>rows($rows)</code> and <code>getRows()</code> can be used to set and get the number of rows of the <code>textarea</code> elements.
3703 The default number of rows is <code>10</code>.
3704 These methods do <strong>not</strong>, however, restrict the number of text rows that can be entered.</p>
3705 <h3 id="multipleselectionformfield"><code>MultipleSelectionFormField</code><a class="headerlink" href="#multipleselectionformfield" title="Permanent link">#</a></h3>
3706 <p><code>MultipleSelectionFormField</code> is a form fields that allows the selection of multiple options out of a predefined list of available options.
3707 The class implements <code>IAttributeFormField</code>, <code>ICssClassFormField</code>, <code>IFilterableSelectionFormField</code>, <code>IImmutableFormField</code>, and <code>INullableFormField</code>.
3708 If the field is nullable and no option is selected, <code>null</code> is returned as the save value.</p>
3709 <h3 id="radiobuttonformfield"><code>RadioButtonFormField</code><a class="headerlink" href="#radiobuttonformfield" title="Permanent link">#</a></h3>
3710 <p><code>RadioButtonFormField</code> is a form fields that allows the selection of a single option out of a predefined list of available options using radiobuttons.
3711 The class implements <code>IAttributeFormField</code>, <code>ICssClassFormField</code>, <code>IImmutableFormField</code>, and <code>ISelectionFormField</code>.</p>
3712 <h3 id="ratingformfield"><code>RatingFormField</code><a class="headerlink" href="#ratingformfield" title="Permanent link">#</a></h3>
3713 <p><code>RatingFormField</code> is a form field to set a rating for an object.
3714 The class implements <code>IImmutableFormField</code>, <code>IMaximumFormField</code>, <code>IMinimumFormField</code>, and <code>INullableFormField</code>.
3715 Form fields of this class have <code>rating</code> as their default id, <code>wcf.form.field.rating</code> as their default label, <code>1</code> as their default minimum, and <code>5</code> as their default maximum.
3716 For this field, the minimum and maximum refer to the minimum and maximum rating an object can get.
3717 When the field is shown, there will be <code>maximum() - minimum() + 1</code> icons be shown with additional CSS classes that can be set and gotten via <code>defaultCssClasses(array $cssClasses)</code> and <code>getDefaultCssClasses()</code>.
3718 If a rating values is set, the first <code>getValue()</code> icons will instead use the classes that can be set and gotten via <code>activeCssClasses(array $cssClasses)</code> and <code>getActiveCssClasses()</code>.
3719 By default, the only default class is <code>fa-star-o</code> and the active classes are <code>fa-star</code> and <code>orange</code>. </p>
3720 <h3 id="showorderformfield"><code>ShowOrderFormField</code><a class="headerlink" href="#showorderformfield" title="Permanent link">#</a></h3>
3721 <p><code>ShowOrderFormField</code> is a <a href="#singleselectionformfield">single selection form field</a> for which the selected value determines the position at which an object is shown.
3722 The show order field provides a list of all siblings and the object will be positioned <strong>after</strong> the selected sibling.
3723 To insert objects at the very beginning, the <code>options()</code> automatically method prepends an additional option for that case so that only the existing siblings need to be passed.
3724 The default id of instances of this class is <code>showOrder</code> and their default label is <code>wcf.form.field.showOrder</code>.</p>
3725 <div class="admonition info">
3726 <p class="admonition-title">It is important that the relevant object property is always kept updated. Whenever a new object is added or an existing object is edited or delete, the values of the other objects have to be adjusted to ensure consecutive numbering.</p>
3727 </div>
3728 <h3 id="singleselectionformfield"><code>SingleSelectionFormField</code><a class="headerlink" href="#singleselectionformfield" title="Permanent link">#</a></h3>
3729 <p><code>SingleSelectionFormField</code> is a form fields that allows the selection of a single option out of a predefined list of available options.
3730 The class implements <code>ICssClassFormField</code>, <code>IFilterableSelectionFormField</code>, <code>IImmutableFormField</code>, and <code>INullableFormField</code>.
3731 If the field is nullable and the current form field value is considered <code>empty</code> by PHP, <code>null</code> is returned as the save value.</p>
3732 <h3 id="sortorderformfield"><code>SortOrderFormField</code><a class="headerlink" href="#sortorderformfield" title="Permanent link">#</a></h3>
3733 <p><code>SingleSelectionFormField</code> is a <a href="#singleselectionformfield">single selection form field</a> with default id <code>sortOrder</code>, default label <code>wcf.global.showOrder</code> and default options <code>ASC: wcf.global.sortOrder.ascending</code> and <code>DESC: wcf.global.sortOrder.descending</code>.</p>
3734 <h3 id="textformfield"><code>TextFormField</code><a class="headerlink" href="#textformfield" title="Permanent link">#</a></h3>
3735 <p><code>TextFormField</code> is a form field that allows entering a single line of text.
3736 The class implements <code>IAttributeFormField</code>, <code>IAutoCompleteFormField</code>, <code>ICssClassFormField</code>, <code>IImmutableFormField</code>, <code>II18nFormField</code>, <code>IInputModeFormField</code>, <code>IMaximumLengthFormField</code>, <code>IMinimumLengthFormField</code>, <code>IPatternFormField</code>, and <code>IPlaceholderFormField</code>.</p>
3737 <h3 id="titleformfield"><code>TitleFormField</code><a class="headerlink" href="#titleformfield" title="Permanent link">#</a></h3>
3738 <p><code>TitleFormField</code> is a <a href="#textformfield">text form field</a> with <code>title</code> as the default id and <code>wcf.global.title</code> as the default label.</p>
3739 <h3 id="urlformfield"><code>UrlFormField</code><a class="headerlink" href="#urlformfield" title="Permanent link">#</a></h3>
3740 <p><code>UrlFormField</code> is a <a href="#textformfield">text form field</a> whose values are checked via <code>Url::is()</code>.</p>
3741 <h2 id="specific-fields">Specific Fields<a class="headerlink" href="#specific-fields" title="Permanent link">#</a></h2>
3742 <p>The following form fields are reusable fields that generally are bound to a certain API or <code>DatabaseObject</code> implementation.</p>
3743 <h3 id="aclformfield"><code>AclFormField</code><a class="headerlink" href="#aclformfield" title="Permanent link">#</a></h3>
3744 <p><code>AclFormField</code> is used for setting up acl values for specific objects.
3745 The class implements <code>IObjectTypeFormField</code> and requires an object type of the object type definition <code>com.woltlab.wcf.acl</code>.
3746 Additionally, the class provides the methods <code>categoryName($categoryName)</code> and <code>getCategoryName()</code> that allow setting a specific name or filter for the acl option categories whose acl options are shown.
3747 A category name of <code>null</code> signals that no category filter is used.</p>
3748 <div class="admonition info">
3749 <p class="admonition-title">Since version 5.5, the category name also supports filtering using a wildcard like <code>user.*</code>, see <a href="https://github.com/WoltLab/WCF/pull/4355">WoltLab/WCF#4355</a>.</p>
3750 </div>
3751 <p><code>AclFormField</code> objects register a <a href="../validation_data/#customformfielddataprocessor">custom form field data processor</a> to add the relevant ACL object type id into the <code>$parameters</code> array directly using <code>{$objectProperty}_aclObjectTypeID</code> as the array key.
3752 The relevant database object action method is expected, based on the given ACL object type id, to save the ACL option values appropriately.</p>
3753 <h3 id="buttonformfield"><code>ButtonFormField</code><a class="headerlink" href="#buttonformfield" title="Permanent link">#</a></h3>
3754 <div class="admonition info">
3755 <p class="admonition-title">Only available since version 5.4.</p>
3756 </div>
3757 <p><code>ButtonFormField</code> shows a submit button as part of the form.
3758 The class implements <code>IAttributeFormField</code> and <code>ICssClassFormField</code>.</p>
3759 <p>Specifically for this form field, there is the <code>IsNotClickedFormFieldDependency</code> dependency with which certain parts of the form will only be processed if the relevent button has not clicked. </p>
3760 <h3 id="captchaformfield"><code>CaptchaFormField</code><a class="headerlink" href="#captchaformfield" title="Permanent link">#</a></h3>
3761 <p><code>CaptchaFormField</code> is used to add captcha protection to the form.</p>
3762 <p>You must specify a captcha object type (<code>com.woltlab.wcf.captcha</code>) using the <code>objectType()</code> method.</p>
3763 <h3 id="colorformfield"><code>ColorFormField</code><a class="headerlink" href="#colorformfield" title="Permanent link">#</a></h3>
3764 <div class="admonition info">
3765 <p class="admonition-title">Only available since version 5.5.</p>
3766 </div>
3767 <p><code>ColorFormField</code> is used to specify RGBA colors using the <code>rgba(r, g, b, a)</code> format.
3768 The class implements <code>IImmutableFormField</code>.</p>
3769 <h3 id="contentlanguageformfield"><code>ContentLanguageFormField</code><a class="headerlink" href="#contentlanguageformfield" title="Permanent link">#</a></h3>
3770 <p><code>ContentLanguageFormField</code> is used to select the content language of an object.
3771 Fields of this class are only available if multilingualism is enabled and if there are content languages.
3772 The class implements <code>IImmutableFormField</code>.</p>
3773 <h3 id="labelformfield"><code>LabelFormField</code><a class="headerlink" href="#labelformfield" title="Permanent link">#</a></h3>
3774 <p><code>LabelFormField</code> is used to select a label from a specific label group.
3775 The class implements <code>IObjectTypeFormNode</code>.</p>
3776 <p>The <code>labelGroup(ViewableLabelGroup $labelGroup)</code> and <code>getLabelGroup()</code> methods are specific to this form field class and can be used to set and get the label group whose labels can be selected.
3777 Additionally, there is the static method <code>createFields($objectType, array $labelGroups, $objectProperty = 'labelIDs)</code> that can be used to create all relevant label form fields for a given list of label groups.
3778 In most cases, <code>LabelFormField::createFields()</code> should be used.</p>
3779 <h3 id="optionformfield"><code>OptionFormField</code><a class="headerlink" href="#optionformfield" title="Permanent link">#</a></h3>
3780 <p><code>OptionFormField</code> is an <a href="#itemlistformfield">item list form field</a> to set a list of options.
3781 The class implements <code>IPackagesFormField</code> and only options of the set packages are considered available.
3782 The default label of instances of this class is <code>wcf.form.field.option</code> and their default id is <code>options</code>.</p>
3783 <h3 id="simpleaclformfield"><code>SimpleAclFormField</code><a class="headerlink" href="#simpleaclformfield" title="Permanent link">#</a></h3>
3784 <p><code>SimpleAclFormField</code> is used for setting up simple acl values (one <code>yes</code>/<code>no</code> option per user and user group) for specific objects.</p>
3785 <p><code>SimpleAclFormField</code> objects register a <a href="../validation_data/#customformfielddataprocessor">custom form field data processor</a> to add the relevant simple ACL data array into the <code>$parameters</code> array directly using the object property as the array key.</p>
3786 <div class="admonition info">
3787 <p class="admonition-title">Since version 5.5, the field also supports inverted permissions, see <a href="https://github.com/WoltLab/WCF/pull/4570">WoltLab/WCF#4570</a>.</p>
3788 </div>
3789 <p>The <code>SimpleAclFormField</code> supports inverted permissions, allowing the administrator to grant access to all non-selected users and groups. If this behavior is desired, it needs to be enabled by calling <code>supportInvertedPermissions</code>. An <code>invertPermissions</code> key containing a boolean value with the users selection will be provided together with the ACL values when saving the field.</p>
3790 <h3 id="singlemediaselectionformfield"><code>SingleMediaSelectionFormField</code><a class="headerlink" href="#singlemediaselectionformfield" title="Permanent link">#</a></h3>
3791 <p><code>SingleMediaSelectionFormField</code> is used to select a specific media file.
3792 The class implements <code>IImmutableFormField</code>.</p>
3793 <p>The following methods are specific to this form field class:</p>
3794 <ul>
3795 <li><code>imageOnly($imageOnly = true)</code> and <code>isImageOnly()</code> can be used to set and check if only images may be selected.</li>
3796 <li><code>getMedia()</code> returns the media file based on the current field value if a field is set.</li>
3797 </ul>
3798 <h3 id="tagformfield"><code>TagFormField</code><a class="headerlink" href="#tagformfield" title="Permanent link">#</a></h3>
3799 <p><code>TagFormField</code> is a form field to enter tags.
3800 The class implements <code>IAttributeFormField</code> and <code>IObjectTypeFormNode</code>.
3801 Arrays passed to <code>TagFormField::values()</code> can contain tag names as strings and <code>Tag</code> objects.
3802 The default label of instances of this class is <code>wcf.tagging.tags</code> and their default description is <code>wcf.tagging.tags.description</code>.</p>
3803 <p><code>TagFormField</code> objects register a <a href="../validation_data/#customformfielddataprocessor">custom form field data processor</a> to add the array with entered tag names into the <code>$parameters</code> array directly using the object property as the array key.</p>
3804 <h3 id="uploadformfield"><code>UploadFormField</code><a class="headerlink" href="#uploadformfield" title="Permanent link">#</a></h3>
3805 <p><code>UploadFormField</code> is a form field that allows uploading files by the user.</p>
3806 <p><code>UploadFormField</code> objects register a <a href="../validation_data/#customformfielddataprocessor">custom form field data processor</a> to add the array of <code>wcf\system\file\upload\UploadFile\UploadFile</code> into the <code>$parameters</code> array directly using the object property as the array key. Also it registers the removed files as an array of <code>wcf\system\file\upload\UploadFile\UploadFile</code> into the <code>$parameters</code> array directly using the object property with the suffix <code>_removedFiles</code> as the array key. </p>
3807 <p>The field supports additional settings:
3808 - <code>imageOnly($imageOnly = true)</code> and <code>isImageOnly()</code> can be used to ensure that the uploaded files are only images.
3809 - <code>allowSvgImage($allowSvgImages = true)</code> and <code>svgImageAllowed()</code> can be used to allow SVG images, if the image only mode is enabled (otherwise, the method will throw an exception). By default, SVG images are not allowed.</p>
3810 <h4 id="provide-value-from-database-object">Provide value from database object<a class="headerlink" href="#provide-value-from-database-object" title="Permanent link">#</a></h4>
3811 <p>To provide values from a database object, you should implement the method <code>get{$objectProperty}UploadFileLocations()</code> to your database object class. This method must return an array of strings with the locations of the files.</p>
3812 <h4 id="process-files">Process files<a class="headerlink" href="#process-files" title="Permanent link">#</a></h4>
3813 <p>To process files in the database object action class, you must <a href="https://secure.php.net/manual/en/function.rename.php"><code>rename</code></a> the file to the final destination. You get the temporary location, by calling the method <code>getLocation()</code> on the given <code>UploadFile</code> objects. After that, you call <code>setProcessed($location)</code> with <code>$location</code> contains the new file location. This method sets the <code>isProcessed</code> flag to true and saves the new location. For updating files, it is relevant, whether a given file is already processed or not. For this case, the <code>UploadFile</code> object has an method <code>isProcessed()</code> which indicates, whether a file is already processed or new uploaded.</p>
3814 <h3 id="userformfield"><code>UserFormField</code><a class="headerlink" href="#userformfield" title="Permanent link">#</a></h3>
3815 <p><code>UserFormField</code> is a form field to enter existing users.
3816 The class implements <code>IAutoCompleteFormField</code>, <code>IAutoFocusFormField</code>, <code>IImmutableFormField</code>, <code>IMultipleFormField</code>, and <code>INullableFormField</code>.
3817 While the user is presented the names of the specified users in the user interface, the field returns the ids of the users as data.
3818 The relevant <code>UserProfile</code> objects can be accessed via the <code>getUsers()</code> method.</p>
3819 <h3 id="userpasswordfield"><code>UserPasswordField</code><a class="headerlink" href="#userpasswordfield" title="Permanent link">#</a></h3>
3820 <div class="admonition info">
3821 <p class="admonition-title">Only available since version 5.4.</p>
3822 </div>
3823 <p><code>UserPasswordField</code> is a form field for users' to enter their current password.
3824 The class implements <code>IAttributeFormField</code>, <code>IAttributeFormField</code>, <code>IAutoCompleteFormField</code>, <code>IAutoFocusFormField</code>, and <code>IPlaceholderFormField</code></p>
3825 <h3 id="usergroupoptionformfield"><code>UserGroupOptionFormField</code><a class="headerlink" href="#usergroupoptionformfield" title="Permanent link">#</a></h3>
3826 <p><code>UserGroupOptionFormField</code> is an <a href="#itemlistformfield">item list form field</a> to set a list of user group options/permissions.
3827 The class implements <code>IPackagesFormField</code> and only user group options of the set packages are considered available.
3828 The default label of instances of this class is <code>wcf.form.field.userGroupOption</code> and their default id is <code>permissions</code>.</p>
3829 <h3 id="usernameformfield"><code>UsernameFormField</code><a class="headerlink" href="#usernameformfield" title="Permanent link">#</a></h3>
3830 <p><code>UsernameFormField</code> is used for entering one non-existing username.
3831 The class implements <code>IAttributeFormField</code>, <code>IImmutableFormField</code>, <code>IMaximumLengthFormField</code>, <code>IMinimumLengthFormField</code>, <code>INullableFormField</code>, and <code>IPlaceholderFormField</code>.
3832 As usernames have a system-wide restriction of a minimum length of 3 and a maximum length of 100 characters, these values are also used as the default value for the field’s minimum and maximum length.</p>
3833 <h2 id="wysiwyg-form-container">Wysiwyg form container<a class="headerlink" href="#wysiwyg-form-container" title="Permanent link">#</a></h2>
3834 <p>To integrate a wysiwyg editor into a form, you have to create a <code>WysiwygFormContainer</code> object.
3835 This container takes care of creating all necessary form nodes listed below for a wysiwyg editor.</p>
3836 <div class="admonition warning">
3837 <p class="admonition-title">When creating the container object, its id has to be the id of the form field that will manage the actual text.</p>
3838 </div>
3839 <p>The following methods are specific to this form container class:</p>
3840 <ul>
3841 <li><code>addSettingsNode(IFormChildNode $settingsNode)</code> and <code>addSettingsNodes(array $settingsNodes)</code> can be used to add nodes to the settings tab container.</li>
3842 <li><code>attachmentData($objectType, $parentObjectID)</code> can be used to set the data relevant for attachment support.
3843 By default, not attachment data is set, thus attachments are not supported.</li>
3844 <li><code>getAttachmentField()</code>, <code>getPollContainer()</code>, <code>getSettingsContainer()</code>, <code>getSmiliesContainer()</code>, and <code>getWysiwygField()</code> can be used to get the different components of the wysiwyg form container once the form has been built.</li>
3845 <li><code>enablePreviewButton($enablePreviewButton)</code> can be used to set whether the preview button for the message is shown or not.
3846 By default, the preview button is shown.
3847 This method is only relevant before the form is built.
3848 Afterwards, the preview button availability can not be changed.</li>
3849 <li><code>getObjectId()</code> returns the id of the edited object or <code>0</code> if no object is edited.</li>
3850 <li><code>getPreselect()</code>, <code>preselect($preselect)</code> can be used to set the value of the wysiwyg tab menu's <code>data-preselect</code> attribute used to determine which tab is preselected.
3851 By default, the preselect is <code>'true'</code> which is used to pre-select the first tab.</li>
3852 <li><code>messageObjectType($messageObjectType)</code> can be used to set the message object type.</li>
3853 <li><code>pollObjectType($pollObjectType)</code> can be used to set the poll object type.
3854 By default, no poll object type is set, thus the poll form field container is not available.</li>
3855 <li><code>supportMentions($supportMentions)</code> can be used to set if mentions are supported.
3856 By default, mentions are not supported.
3857 This method is only relevant before the form is built.
3858 Afterwards, mention support can only be changed via the wysiwyg form field.</li>
3859 <li><code>supportSmilies($supportSmilies)</code> can be used to set if smilies are supported.
3860 By default, smilies are supported.
3861 This method is only relevant before the form is built.
3862 Afterwards, smiley availability can only be changed via changing the availability of the smilies form container.</li>
3863 </ul>
3864 <h3 id="wysiwygattachmentformfield"><code>WysiwygAttachmentFormField</code><a class="headerlink" href="#wysiwygattachmentformfield" title="Permanent link">#</a></h3>
3865 <p><code>WysiwygAttachmentFormField</code> provides attachment support for a wysiwyg editor via a tab in the menu below the editor.
3866 This class should not be used directly but only via <code>WysiwygFormContainer</code>.
3867 The methods <code>attachmentHandler(AttachmentHandler $attachmentHandler)</code> and <code>getAttachmentHandler()</code> can be used to set and get the <code>AttachmentHandler</code> object that is used for uploaded attachments.</p>
3868 <h3 id="wysiwygpollformcontainer"><code>WysiwygPollFormContainer</code><a class="headerlink" href="#wysiwygpollformcontainer" title="Permanent link">#</a></h3>
3869 <p><code>WysiwygPollFormContainer</code> provides poll support for a wysiwyg editor via a tab in the menu below the editor.
3870 This class should not be used directly but only via <code>WysiwygFormContainer</code>.
3871 <code>WysiwygPollFormContainer</code> contains all form fields that are required to create polls and requires edited objects to implement <code>IPollContainer</code>.</p>
3872 <p>The following methods are specific to this form container class:</p>
3873 <ul>
3874 <li><code>getEndTimeField()</code> returns the form field to set the end time of the poll once the form has been built.</li>
3875 <li><code>getIsChangeableField()</code> returns the form field to set if poll votes can be changed once the form has been built.</li>
3876 <li><code>getIsPublicField()</code> returns the form field to set if poll results are public once the form has been built.</li>
3877 <li><code>getMaxVotesField()</code> returns the form field to set the maximum number of votes once the form has been built.</li>
3878 <li><code>getOptionsField()</code> returns the form field to set the poll options once the form has been built.</li>
3879 <li><code>getQuestionField()</code> returns the form field to set the poll question once the form has been built.</li>
3880 <li><code>getResultsRequireVoteField()</code> returns the form field to set if viewing the poll results requires voting once the form has been built.</li>
3881 <li><code>getSortByVotesField()</code> returns the form field to set if the results are sorted by votes once the form has been built.</li>
3882 </ul>
3883 <h3 id="wysiwygsmileyformcontainer"><code>WysiwygSmileyFormContainer</code><a class="headerlink" href="#wysiwygsmileyformcontainer" title="Permanent link">#</a></h3>
3884 <p><code>WysiwygSmileyFormContainer</code> provides smiley support for a wysiwyg editor via a tab in the menu below the editor.
3885 This class should not be used directly but only via <code>WysiwygFormContainer</code>.
3886 <code>WysiwygSmileyFormContainer</code> creates a sub-tab for each smiley category.</p>
3887 <h4 id="wysiwygsmileyformnode"><code>WysiwygSmileyFormNode</code><a class="headerlink" href="#wysiwygsmileyformnode" title="Permanent link">#</a></h4>
3888 <p><code>WysiwygSmileyFormNode</code> is contains the smilies of a specific category.
3889 This class should not be used directly but only via <code>WysiwygSmileyFormContainer</code>.</p>
3890 <h3 id="example">Example<a class="headerlink" href="#example" title="Permanent link">#</a></h3>
3891 <p>The following code creates a WYSIWYG editor component for a <code>message</code> object property.
3892 As smilies are supported by default and an attachment object type is given, the tab menu below the editor has two tabs: “Smilies” and “Attachments”.
3893 Additionally, mentions and quotes are supported.</p>
3894 <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3895 <span class="normal">2</span>
3896 <span class="normal">3</span>
3897 <span class="normal">4</span>
3898 <span class="normal">5</span>
3899 <span class="normal">6</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="nx">WysiwygFormContainer</span><span class="o">::</span><span class="na">create</span><span class="p">(</span><span class="s1">&#39;message&#39;</span><span class="p">)</span>
3900 <span class="o">-&gt;</span><span class="na">label</span><span class="p">(</span><span class="s1">&#39;foo.bar.message&#39;</span><span class="p">)</span>
3901 <span class="o">-&gt;</span><span class="na">messageObjectType</span><span class="p">(</span><span class="s1">&#39;com.example.foo.bar&#39;</span><span class="p">)</span>
3902 <span class="o">-&gt;</span><span class="na">attachmentData</span><span class="p">(</span><span class="s1">&#39;com.example.foo.bar&#39;</span><span class="p">)</span>
3903 <span class="o">-&gt;</span><span class="na">supportMentions</span><span class="p">()</span>
3904 <span class="o">-&gt;</span><span class="na">supportQuotes</span><span class="p">()</span>
3905 </code></pre></div></td></tr></table></div>
3906 <h3 id="wysiwygformfield"><code>WysiwygFormField</code><a class="headerlink" href="#wysiwygformfield" title="Permanent link">#</a></h3>
3907 <p><code>WysiwygFormField</code> is used for wysiwyg editor form fields.
3908 This class should, in general, not be used directly but only via <code>WysiwygFormContainer</code>.
3909 The class implements <code>IAttributeFormField</code>, <code>IMaximumLengthFormField</code>, <code>IMinimumLengthFormField</code>, and <code>IObjectTypeFormNode</code> and requires an object type of the object type definition <code>com.woltlab.wcf.message</code>.
3910 The following methods are specific to this form field class:</p>
3911 <ul>
3912 <li><code>autosaveId($autosaveId)</code> and <code>getAutosaveId()</code> can be used enable automatically saving the current editor contents in the browser using the given id.
3913 An empty string signals that autosaving is disabled.</li>
3914 <li><code>lastEditTime($lastEditTime)</code> and <code>getLastEditTime()</code> can be used to set the last time the contents have been edited and saved so that the JavaScript can determine if the contents stored in the browser are older or newer.
3915 <code>0</code> signals that no last edit time has been set.</li>
3916 <li>
3917 <p><code>supportAttachments($supportAttachments)</code> and <code>supportsAttachments()</code> can be used to set and check if the form field supports attachments.</p>
3918 <div class="admonition warning">
3919 <p class="admonition-title">It is not sufficient to simply signal attachment support via these methods for attachments to work. These methods are relevant internally to signal the Javascript code that the editor supports attachments. Actual attachment support is provided by <code>WysiwygAttachmentFormField</code>.</p>
3920 </div>
3921 </li>
3922 <li>
3923 <p><code>supportMentions($supportMentions)</code> and <code>supportsMentions()</code> can be used to set and check if the form field supports mentions of other users.</p>
3924 </li>
3925 </ul>
3926 <p><code>WysiwygFormField</code> objects register a <a href="../validation_data/#customformfielddataprocessor">custom form field data processor</a> to add the relevant simple ACL data array into the <code>$parameters</code> array directly using the object property as the array key.</p>
3927 <h3 id="twysiwygformnode"><code>TWysiwygFormNode</code><a class="headerlink" href="#twysiwygformnode" title="Permanent link">#</a></h3>
3928 <p>All form nodes that need to know the id of the <code>WysiwygFormField</code> field should use <code>TWysiwygFormNode</code>.
3929 This trait provides <code>getWysiwygId()</code> and <code>wysiwygId($wysiwygId)</code> to get and set the relevant wysiwyg editor id.</p>
3930 <h2 id="application-specific-form-fields">Application-Specific Form Fields<a class="headerlink" href="#application-specific-form-fields" title="Permanent link">#</a></h2>
3931 <h3 id="woltlab-suite-forum">WoltLab Suite Forum<a class="headerlink" href="#woltlab-suite-forum" title="Permanent link">#</a></h3>
3932 <h4 id="multipleboardselectionformfield"><code>MultipleBoardSelectionFormField</code><a class="headerlink" href="#multipleboardselectionformfield" title="Permanent link">#</a></h4>
3933 <div class="admonition info">
3934 <p class="admonition-title">Only available since version 5.5.</p>
3935 </div>
3936 <p><code>MultipleBoardSelectionFormField</code> is used to select multiple forums.
3937 The class implements <code>IAttributeFormField</code>, <code>ICssClassFormField</code>, and <code>IImmutableFormField</code>.</p>
3938 <p>The field supports additional settings:</p>
3939 <ul>
3940 <li><code>boardNodeList(BoardNodeList $boardNodeList): self</code> and <code>getBoardNodeList(): BoardNodeList</code> are used to set and get the list of board nodes used to render the board selection.
3941 <code>boardNodeList(BoardNodeList $boardNodeList): self</code> will automatically call <code>readNodeTree()</code> on the given board node list.</li>
3942 <li><code>categoriesSelectable(bool $categoriesSelectable = true): self</code> and <code>areCategoriesSelectable(): bool</code> are used to set and check if the categories in the board node list are selectable.
3943 By default, categories are selectable.
3944 This option is useful if only actual boards, in which threads can be posted, should be selectable but the categories must still be shown so that the overall forum structure is still properly shown.</li>
3945 <li><code>supportExternalLinks(bool $supportExternalLinks): self</code> and <code>supportsExternalLinks(): bool</code> are used to set and check if external links will be shown in the selection list.
3946 By default, external links are shown.
3947 Like in the example given before, in cases where only actual boards, in which threads can be posted, are relevant, this option allows to exclude external links.</li>
3948 </ul>
3949 <h2 id="single-use-form-fields">Single-Use Form Fields<a class="headerlink" href="#single-use-form-fields" title="Permanent link">#</a></h2>
3950 <p>The following form fields are specific for certain forms and hardly reusable in other contexts.</p>
3951 <h3 id="bbcodeattributesformfield"><code>BBCodeAttributesFormField</code><a class="headerlink" href="#bbcodeattributesformfield" title="Permanent link">#</a></h3>
3952 <p><code>DevtoolsProjectExcludedPackagesFormField</code> is a form field for setting the attributes of a BBCode.</p>
3953 <h3 id="devtoolsprojectexcludedpackagesformfield"><code>DevtoolsProjectExcludedPackagesFormField</code><a class="headerlink" href="#devtoolsprojectexcludedpackagesformfield" title="Permanent link">#</a></h3>
3954 <p><code>DevtoolsProjectExcludedPackagesFormField</code> is a form field for setting the excluded packages of a devtools project.</p>
3955 <h3 id="devtoolsprojectinstructionsformfield"><code>DevtoolsProjectInstructionsFormField</code><a class="headerlink" href="#devtoolsprojectinstructionsformfield" title="Permanent link">#</a></h3>
3956 <p><code>DevtoolsProjectExcludedPackagesFormField</code> is a form field for setting the installation and update instructions of a devtools project.</p>
3957 <h3 id="devtoolsprojectoptionalpackagesformfield"><code>DevtoolsProjectOptionalPackagesFormField</code><a class="headerlink" href="#devtoolsprojectoptionalpackagesformfield" title="Permanent link">#</a></h3>
3958 <p><code>DevtoolsProjectExcludedPackagesFormField</code> is a form field for setting the optional packages of a devtools project.</p>
3959 <h3 id="devtoolsprojectrequiredpackagesformfield"><code>DevtoolsProjectRequiredPackagesFormField</code><a class="headerlink" href="#devtoolsprojectrequiredpackagesformfield" title="Permanent link">#</a></h3>
3960 <p><code>DevtoolsProjectExcludedPackagesFormField</code> is a form field for setting the required packages of a devtools project.</p>
3961
3962 <hr>
3963 <div class="md-source-file">
3964 <small>
3965
3966 Last update:
3967 2022-10-10
3968
3969 </small>
3970 </div>
3971
3972
3973
3974
3975
3976
3977 </article>
3978 </div>
3979
3980
3981 </div>
3982
3983 </main>
3984
3985 <footer class="md-footer">
3986
3987 <div class="md-footer-meta md-typeset">
3988 <div class="md-footer-meta__inner md-grid">
3989 <div class="md-copyright">
3990
3991 <div class="md-copyright__highlight">
3992 Copyright © 2020 WoltLab GmbH
3993 </div>
3994
3995
3996 Made with
3997 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
3998 Material for MkDocs
3999 </a>
4000
4001 </div>
4002
4003 <div class="md-copyright">
4004 <a href="https://www.woltlab.com/legal-notice/">Legal Notice</a>
4005 <a href="https://www.woltlab.com/privacy-policy/">Privacy Policy</a>
4006 </div>
4007
4008 </div>
4009 </div>
4010 </footer>
4011
4012 </div>
4013 <div class="md-dialog" data-md-component="dialog">
4014 <div class="md-dialog__inner md-typeset"></div>
4015 </div>
4016
4017 <script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.tracking"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"provider": "mike"}}</script>
4018
4019
4020 <script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>
4021
4022
4023 </body>
4024 </html>