Deployed 2f13e501 to 6.0 with MkDocs 1.4.3 and mike 1.1.2
[GitHub/WoltLab/woltlab.github.io.git] / 6.0 / view / template-plugins / index.html
CommitLineData
9aa5da67
WG
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/view/template-plugins/">
12
e02609d6 13
3c22ac76 14 <link rel="prev" href="../template-modifiers/">
e02609d6
WG
15
16
17 <link rel="next" href="../css/">
18
9aa5da67 19 <link rel="icon" href="../../assets/default.favicon.ico">
9d185e89 20 <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.15">
9aa5da67
WG
21
22
23
24 <title>Template Plugins - WoltLab Suite Documentation</title>
25
26
27
9d185e89 28 <link rel="stylesheet" href="../../assets/stylesheets/main.26e3688c.min.css">
9aa5da67
WG
29
30
9d185e89 31 <link rel="stylesheet" href="../../assets/stylesheets/palette.ecc896b0.min.css">
9aa5da67
WG
32
33
7f9945cf 34
9aa5da67
WG
35
36
37
38
39
40
41 <link rel="stylesheet" href="../../stylesheets/extra.css">
42
a06fd3b1 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>
9aa5da67
WG
44
45
46
47
48
7f9945cf 49
9aa5da67
WG
50 </head>
51
52
53
54
55
56
57
94fa7b1e 58 <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="teal" data-md-color-accent="indigo">
9aa5da67
WG
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="#template-plugins" 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
a06fd3b1 78
9aa5da67
WG
79 <a href="https://www.woltlab.com">Back to <strong>woltlab.com</strong></a>
80
81 </div>
a06fd3b1 82
9aa5da67
WG
83 </aside>
84
85 </div>
86
6f2e8f13 87 <div data-md-color-scheme="default" data-md-component="outdated" hidden>
a06fd3b1 88
9aa5da67
WG
89 </div>
90
91
92
93
781975eb
WG
94
95
96<header class="md-header md-header--shadow" data-md-component="header">
9aa5da67
WG
97 <nav class="md-header__inner md-grid" aria-label="Header">
98 <a href="../.." title="WoltLab Suite Documentation" class="md-header__button md-logo" aria-label="WoltLab Suite Documentation" data-md-component="logo">
99
100 <img src="../../assets/logo.png" alt="logo">
101
102 </a>
103 <label class="md-header__button md-icon" for="__drawer">
104 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
105 </label>
106 <div class="md-header__title" data-md-component="header-title">
107 <div class="md-header__ellipsis">
108 <div class="md-header__topic">
109 <span class="md-ellipsis">
110 WoltLab Suite Documentation
111 </span>
112 </div>
113 <div class="md-header__topic" data-md-component="header-topic">
114 <span class="md-ellipsis">
115
116 Template Plugins
117
118 </span>
119 </div>
120 </div>
121 </div>
122
94fa7b1e
WG
123
124
9aa5da67
WG
125
126
127 <label class="md-header__button md-icon" for="__search">
128 <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>
129 </label>
130 <div class="md-search" data-md-component="search" role="dialog">
131 <label class="md-search__overlay" for="__search"></label>
132 <div class="md-search__inner" role="search">
133 <form class="md-search__form" name="search">
134 <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>
135 <label class="md-search__icon md-icon" for="__search">
136 <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>
137 <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>
138 </label>
139 <nav class="md-search__options" aria-label="Search">
140
7f9945cf 141 <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
9aa5da67
WG
142 <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>
143 </button>
144 </nav>
145
146 </form>
147 <div class="md-search__output">
148 <div class="md-search__scrollwrap" data-md-scrollfix>
149 <div class="md-search-result" data-md-component="search-result">
150 <div class="md-search-result__meta">
151 Initializing search
152 </div>
7b2c751c 153 <ol class="md-search-result__list" role="presentation"></ol>
9aa5da67
WG
154 </div>
155 </div>
156 </div>
157 </div>
158</div>
159
160
161 <div class="md-header__source">
162 <a href="https://github.com/WoltLab/docs.woltlab.com/" title="Go to repository" class="md-source" data-md-component="source">
163 <div class="md-source__icon md-icon">
164
94fa7b1e 165 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 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 2023 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>
9aa5da67
WG
166 </div>
167 <div class="md-source__repository">
168 GitHub
169 </div>
170</a>
171 </div>
172
173 </nav>
174
175</header>
176
177 <div class="md-container" data-md-component="container">
178
179
180
181
182
183
184 <main class="md-main" data-md-component="main">
185 <div class="md-main__inner md-grid">
186
187
188
189 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
190 <div class="md-sidebar__scrollwrap">
191 <div class="md-sidebar__inner">
192
193
194
195<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
196 <label class="md-nav__title" for="__drawer">
197 <a href="../.." title="WoltLab Suite Documentation" class="md-nav__button md-logo" aria-label="WoltLab Suite Documentation" data-md-component="logo">
198
199 <img src="../../assets/logo.png" alt="logo">
200
201 </a>
202 WoltLab Suite Documentation
203 </label>
204
205 <div class="md-nav__source">
206 <a href="https://github.com/WoltLab/docs.woltlab.com/" title="Go to repository" class="md-source" data-md-component="source">
207 <div class="md-source__icon md-icon">
208
94fa7b1e 209 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 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 2023 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>
9aa5da67
WG
210 </div>
211 <div class="md-source__repository">
212 GitHub
213 </div>
214</a>
215 </div>
216
217 <ul class="md-nav__list" data-md-scrollfix>
218
219
220
221
222
223
224
225
226 <li class="md-nav__item">
227 <a href="../../getting-started/" class="md-nav__link">
228 Getting Started
229 </a>
230 </li>
231
232
233
234
235
236
237
238
239
240
241
242 <li class="md-nav__item md-nav__item--nested">
243
244
9aa5da67
WG
245
246
51b70eee 247 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
e02609d6 248
9aa5da67
WG
249
250
51b70eee 251 <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
9aa5da67
WG
252 PHP API
253 <span class="md-nav__icon md-icon"></span>
254 </label>
255
51b70eee 256 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
9aa5da67
WG
257 <label class="md-nav__title" for="__nav_2">
258 <span class="md-nav__icon md-icon"></span>
259 PHP API
260 </label>
261 <ul class="md-nav__list" data-md-scrollfix>
262
263
264
265
266
267
268 <li class="md-nav__item">
269 <a href="../../php/pages/" class="md-nav__link">
270 Pages
271 </a>
272 </li>
273
274
275
276
277
278
279
280
281
282 <li class="md-nav__item">
283 <a href="../../php/database-objects/" class="md-nav__link">
284 Database Objects
285 </a>
286 </li>
287
288
289
290
291
292
293
294
295
296 <li class="md-nav__item">
297 <a href="../../php/database-access/" class="md-nav__link">
298 Database Access
299 </a>
300 </li>
301
302
303
304
305
306
307
308
309
310 <li class="md-nav__item">
311 <a href="../../php/exceptions/" class="md-nav__link">
312 Exceptions
313 </a>
314 </li>
315
316
317
318
319
320
321
322
323
324
325 <li class="md-nav__item md-nav__item--nested">
326
327
9aa5da67
WG
328
329
51b70eee 330 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5" >
e02609d6 331
9aa5da67
WG
332
333
51b70eee 334 <label class="md-nav__link" for="__nav_2_5" id="__nav_2_5_label" tabindex="0">
9aa5da67
WG
335 API
336 <span class="md-nav__icon md-icon"></span>
337 </label>
338
51b70eee 339 <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_5_label" aria-expanded="false">
9aa5da67
WG
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
9aa5da67
WG
355
356
51b70eee 357 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_1" >
9aa5da67
WG
358
359
e02609d6 360
51b70eee 361 <label class="md-nav__link" for="__nav_2_5_1" id="__nav_2_5_1_label" tabindex="0">
9aa5da67
WG
362 Caches
363 <span class="md-nav__icon md-icon"></span>
364 </label>
365
51b70eee 366 <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_5_1_label" aria-expanded="false">
9aa5da67
WG
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="../../php/api/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="../../php/api/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="../../php/api/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="../../php/api/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="../../php/api/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="../../php/api/events/" class="md-nav__link">
457 Events
458 </a>
459 </li>
460
461
462
463
464
465
466
467
468
469
470 <li class="md-nav__item md-nav__item--nested">
471
472
9aa5da67
WG
473
474
51b70eee 475 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_5" >
e02609d6 476
9aa5da67
WG
477
478
51b70eee 479 <label class="md-nav__link" for="__nav_2_5_5" id="__nav_2_5_5_label" tabindex="0">
9aa5da67
WG
480 Form Builder
481 <span class="md-nav__icon md-icon"></span>
482 </label>
483
51b70eee 484 <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_5_5_label" aria-expanded="false">
9aa5da67
WG
485 <label class="md-nav__title" for="__nav_2_5_5">
486 <span class="md-nav__icon md-icon"></span>
487 Form Builder
488 </label>
489 <ul class="md-nav__list" data-md-scrollfix>
490
491
492
493
494
495
496 <li class="md-nav__item">
497 <a href="../../php/api/form_builder/overview/" class="md-nav__link">
498 Overview
499 </a>
500 </li>
501
502
503
504
505
506
507
508
509
510 <li class="md-nav__item">
511 <a href="../../php/api/form_builder/structure/" class="md-nav__link">
512 Structure
513 </a>
514 </li>
515
516
517
518
519
520
521
522
523
524 <li class="md-nav__item">
525 <a href="../../php/api/form_builder/form_fields/" class="md-nav__link">
526 Fields
527 </a>
528 </li>
529
530
531
532
533
534
535
536
537
538 <li class="md-nav__item">
539 <a href="../../php/api/form_builder/validation_data/" class="md-nav__link">
540 Validation and Data
541 </a>
542 </li>
543
544
545
546
547
548
549
550
551
552 <li class="md-nav__item">
553 <a href="../../php/api/form_builder/dependencies/" class="md-nav__link">
554 Dependencies
555 </a>
556 </li>
557
558
559
560
561 </ul>
562 </nav>
563 </li>
564
565
566
567
568
569
570
571
572
573 <li class="md-nav__item">
574 <a href="../../php/api/package_installation_plugins/" class="md-nav__link">
575 Package Installation Plugins
576 </a>
577 </li>
578
579
580
581
582
583
584
585
586
587 <li class="md-nav__item">
588 <a href="../../php/api/user_activity_points/" class="md-nav__link">
589 User Activity Points
590 </a>
591 </li>
592
593
594
595
596
597
598
599
600
601 <li class="md-nav__item">
602 <a href="../../php/api/user_notifications/" class="md-nav__link">
603 User Notifications
604 </a>
605 </li>
606
607
608
609
610
611
612
613
614
615 <li class="md-nav__item">
616 <a href="../../php/api/sitemaps/" class="md-nav__link">
617 Sitemaps
618 </a>
619 </li>
620
621
622
623
624 </ul>
625 </nav>
626 </li>
627
628
629
630
631
632
633
634
635
636 <li class="md-nav__item">
637 <a href="../../php/code-style/" class="md-nav__link">
638 Code Style
639 </a>
640 </li>
641
642
643
644
645
646
647
648
649
650 <li class="md-nav__item">
651 <a href="../../php/apps/" class="md-nav__link">
652 Apps
653 </a>
654 </li>
655
656
657
658
659
660
661
662
663
664 <li class="md-nav__item">
665 <a href="../../php/gdpr/" class="md-nav__link">
666 GDPR
667 </a>
668 </li>
669
670
671
672
673 </ul>
674 </nav>
675 </li>
676
677
678
679
680
681
682
683
684
685
686
687
688
689 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
690
691
9aa5da67
WG
692
693
51b70eee 694 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
e02609d6 695
9aa5da67
WG
696
697
51b70eee 698 <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
9aa5da67
WG
699 Languages, Templates & CSS
700 <span class="md-nav__icon md-icon"></span>
701 </label>
702
51b70eee 703 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
9aa5da67
WG
704 <label class="md-nav__title" for="__nav_3">
705 <span class="md-nav__icon md-icon"></span>
706 Languages, Templates & CSS
707 </label>
708 <ul class="md-nav__list" data-md-scrollfix>
709
710
711
712
713
714
715 <li class="md-nav__item">
716 <a href="../languages/" class="md-nav__link">
717 Languages
718 </a>
719 </li>
720
721
722
723
724
725
726
727
728
729 <li class="md-nav__item">
730 <a href="../templates/" class="md-nav__link">
731 Templates
732 </a>
733 </li>
734
735
736
737
738
739
740
741
3c22ac76
WG
742
743 <li class="md-nav__item">
744 <a href="../template-modifiers/" class="md-nav__link">
745 Template Modifiers
746 </a>
747 </li>
748
749
750
751
752
753
754
755
9aa5da67
WG
756
757
758
759 <li class="md-nav__item md-nav__item--active">
760
51b70eee 761 <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
9aa5da67
WG
762
763
764
765
766
767 <label class="md-nav__link md-nav__link--active" for="__toc">
768 Template Plugins
769 <span class="md-nav__icon md-icon"></span>
770 </label>
771
772 <a href="./" class="md-nav__link md-nav__link--active">
773 Template Plugins
774 </a>
775
776
777
778<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
779
780
781
782
783
784
785 <label class="md-nav__title" for="__toc">
786 <span class="md-nav__icon md-icon"></span>
787 Table of contents
788 </label>
789 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
790
791 <li class="md-nav__item">
57bba3cc 792 <a href="#anchor" class="md-nav__link">
db9f8960 793 {anchor}
9aa5da67
WG
794 </a>
795
796</li>
797
798 <li class="md-nav__item">
57bba3cc 799 <a href="#anchorattributes" class="md-nav__link">
db9f8960 800 {anchorAttributes}
9aa5da67
WG
801 </a>
802
803</li>
804
805 <li class="md-nav__item">
806 <a href="#append" class="md-nav__link">
db9f8960 807 {append}
9aa5da67
WG
808 </a>
809
810</li>
811
812 <li class="md-nav__item">
813 <a href="#assign" class="md-nav__link">
db9f8960 814 {assign}
9aa5da67
WG
815 </a>
816
817</li>
818
819 <li class="md-nav__item">
820 <a href="#capture" class="md-nav__link">
db9f8960 821 {capture}
9aa5da67
WG
822 </a>
823
9aa5da67
WG
824</li>
825
826 <li class="md-nav__item">
827 <a href="#counter" class="md-nav__link">
db9f8960 828 {counter}
9aa5da67
WG
829 </a>
830
831</li>
832
833 <li class="md-nav__item">
834 <a href="#54-csrftoken" class="md-nav__link">
835 5.4+ csrfToken
836 </a>
837
9aa5da67
WG
838</li>
839
840 <li class="md-nav__item">
841 <a href="#cycle" class="md-nav__link">
db9f8960 842 {cycle}
9aa5da67
WG
843 </a>
844
9aa5da67
WG
845</li>
846
847 <li class="md-nav__item">
57bba3cc 848 <a href="#dateinterval" class="md-nav__link">
db9f8960 849 {dateInterval}
9aa5da67
WG
850 </a>
851
9aa5da67
WG
852</li>
853
854 <li class="md-nav__item">
855 <a href="#event" class="md-nav__link">
db9f8960 856 {event}
9aa5da67
WG
857 </a>
858
9aa5da67
WG
859</li>
860
861 <li class="md-nav__item">
862 <a href="#hascontent" class="md-nav__link">
db9f8960 863 {hascontent}
9aa5da67
WG
864 </a>
865
866</li>
867
868 <li class="md-nav__item">
869 <a href="#htmlcheckboxes" class="md-nav__link">
db9f8960 870 {htmlCheckboxes}
9aa5da67
WG
871 </a>
872
873</li>
874
875 <li class="md-nav__item">
876 <a href="#htmloptions" class="md-nav__link">
db9f8960 877 {htmlOptions}
9aa5da67
WG
878 </a>
879
ef66f102
WG
880</li>
881
882 <li class="md-nav__item">
883 <a href="#icon" class="md-nav__link">
884 {icon}
885 </a>
886
9aa5da67
WG
887</li>
888
889 <li class="md-nav__item">
890 <a href="#implode" class="md-nav__link">
db9f8960 891 {implode}
9aa5da67
WG
892 </a>
893
9aa5da67
WG
894</li>
895
896 <li class="md-nav__item">
897 <a href="#js" class="md-nav__link">
db9f8960 898 {js}
9aa5da67
WG
899 </a>
900
901</li>
902
903 <li class="md-nav__item">
57bba3cc 904 <a href="#jslang" class="md-nav__link">
db9f8960 905 {jslang}
9aa5da67
WG
906 </a>
907
71ef52e2
WG
908</li>
909
910 <li class="md-nav__item">
911 <a href="#60-jsphrase" class="md-nav__link">
912 6.0+ {jsphrase}
913 </a>
914
9aa5da67
WG
915</li>
916
917 <li class="md-nav__item">
918 <a href="#lang" class="md-nav__link">
db9f8960 919 {lang}
9aa5da67
WG
920 </a>
921
9aa5da67
WG
922</li>
923
924 <li class="md-nav__item">
925 <a href="#link" class="md-nav__link">
db9f8960 926 {link}
9aa5da67
WG
927 </a>
928
9aa5da67
WG
929</li>
930
931 <li class="md-nav__item">
932 <a href="#54-objectaction" class="md-nav__link">
933 5.4+ objectAction
934 </a>
935
936</li>
937
938 <li class="md-nav__item">
939 <a href="#page" class="md-nav__link">
db9f8960 940 {page}
9aa5da67
WG
941 </a>
942
943</li>
944
945 <li class="md-nav__item">
946 <a href="#pages" class="md-nav__link">
db9f8960 947 {pages}
9aa5da67
WG
948 </a>
949
9aa5da67
WG
950</li>
951
952 <li class="md-nav__item">
57bba3cc 953 <a href="#plural" class="md-nav__link">
db9f8960 954 {plural}
9aa5da67
WG
955 </a>
956
957</li>
958
959 <li class="md-nav__item">
960 <a href="#prepend" class="md-nav__link">
db9f8960 961 {prepend}
9aa5da67
WG
962 </a>
963
9aa5da67
WG
964</li>
965
966 <li class="md-nav__item">
967 <a href="#time" class="md-nav__link">
da248f39
WG
968 {time}
969 </a>
970
9aa5da67
WG
971</li>
972
973 <li class="md-nav__item">
57bba3cc 974 <a href="#user" class="md-nav__link">
db9f8960 975 {user}
9aa5da67
WG
976 </a>
977
978</li>
979
980 </ul>
981
982</nav>
983
984 </li>
985
986
987
988
989
990
991
992
993
994 <li class="md-nav__item">
995 <a href="../css/" class="md-nav__link">
996 CSS
997 </a>
998 </li>
999
1000
1001
1002
1003 </ul>
1004 </nav>
1005 </li>
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017 <li class="md-nav__item md-nav__item--nested">
1018
1019
9aa5da67
WG
1020
1021
51b70eee 1022 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
9aa5da67
WG
1023
1024
e02609d6 1025
51b70eee 1026 <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
9aa5da67
WG
1027 TypeScript and JavaScript API
1028 <span class="md-nav__icon md-icon"></span>
1029 </label>
1030
51b70eee 1031 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
9aa5da67
WG
1032 <label class="md-nav__title" for="__nav_4">
1033 <span class="md-nav__icon md-icon"></span>
1034 TypeScript and JavaScript API
1035 </label>
1036 <ul class="md-nav__list" data-md-scrollfix>
1037
1038
1039
1040
1041
1042
1043 <li class="md-nav__item">
1044 <a href="../../javascript/general-usage/" class="md-nav__link">
1045 General Usage
1046 </a>
1047 </li>
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057 <li class="md-nav__item">
1058 <a href="../../javascript/typescript/" class="md-nav__link">
1059 TypeScript
1060 </a>
1061 </li>
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072 <li class="md-nav__item md-nav__item--nested">
1073
1074
9aa5da67
WG
1075
1076
51b70eee 1077 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_3" >
e02609d6 1078
9aa5da67
WG
1079
1080
51b70eee 1081 <label class="md-nav__link" for="__nav_4_3" id="__nav_4_3_label" tabindex="0">
9f399714
WG
1082 Components
1083 <span class="md-nav__icon md-icon"></span>
1084 </label>
1085
51b70eee 1086 <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_3_label" aria-expanded="false">
9f399714
WG
1087 <label class="md-nav__title" for="__nav_4_3">
1088 <span class="md-nav__icon md-icon"></span>
1089 Components
1090 </label>
1091 <ul class="md-nav__list" data-md-scrollfix>
1092
1093
1094
1095
1096
1097
1098 <li class="md-nav__item">
1099 <a href="../../javascript/components_confirmation/" class="md-nav__link">
1100 Confirmation
1101 </a>
1102 </li>
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112 <li class="md-nav__item">
1113 <a href="../../javascript/components_dialog/" class="md-nav__link">
1114 Dialog
1115 </a>
1116 </li>
1117
1118
1119
1120
f2d0508c
WG
1121
1122
1123
1124
1125
816a45a9
WG
1126 <li class="md-nav__item">
1127 <a href="../../javascript/components_google_maps/" class="md-nav__link">
1128 Google Maps
1129 </a>
1130 </li>
1131
1132
1133
1134
1135
1136
1137
1138
1139
f2d0508c
WG
1140 <li class="md-nav__item">
1141 <a href="../../javascript/components_pagination/" class="md-nav__link">
1142 Pagination
1143 </a>
1144 </li>
1145
1146
1147
1148
9f399714
WG
1149 </ul>
1150 </nav>
1151 </li>
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162 <li class="md-nav__item md-nav__item--nested">
1163
1164
9f399714
WG
1165
1166
51b70eee 1167 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_4" >
e02609d6 1168
9f399714
WG
1169
1170
51b70eee 1171 <label class="md-nav__link" for="__nav_4_4" id="__nav_4_4_label" tabindex="0">
9aa5da67
WG
1172 New API
1173 <span class="md-nav__icon md-icon"></span>
1174 </label>
1175
51b70eee 1176 <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_4_label" aria-expanded="false">
9f399714 1177 <label class="md-nav__title" for="__nav_4_4">
9aa5da67
WG
1178 <span class="md-nav__icon md-icon"></span>
1179 New API
1180 </label>
1181 <ul class="md-nav__list" data-md-scrollfix>
1182
1183
1184
1185
1186
1187
1188 <li class="md-nav__item">
1189 <a href="../../javascript/new-api_writing-a-module/" class="md-nav__link">
1190 Writing a module
1191 </a>
1192 </li>
1193
1194
1195
1196
1197
1198
1199
1200
1201
9aa5da67
WG
1202 <li class="md-nav__item">
1203 <a href="../../javascript/new-api_core/" class="md-nav__link">
1204 Core Functions
1205 </a>
1206 </li>
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216 <li class="md-nav__item">
1217 <a href="../../javascript/new-api_dom/" class="md-nav__link">
1218 DOM
1219 </a>
1220 </li>
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230 <li class="md-nav__item">
1231 <a href="../../javascript/new-api_events/" class="md-nav__link">
1232 Event Handling
1233 </a>
1234 </li>
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244 <li class="md-nav__item">
1245 <a href="../../javascript/new-api_ajax/" class="md-nav__link">
1246 Ajax
1247 </a>
1248 </li>
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258 <li class="md-nav__item">
1259 <a href="../../javascript/new-api_dialogs/" class="md-nav__link">
1260 Dialogs
1261 </a>
1262 </li>
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272 <li class="md-nav__item">
1273 <a href="../../javascript/new-api_browser/" class="md-nav__link">
1274 Browser and Screen Sizes
1275 </a>
1276 </li>
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286 <li class="md-nav__item">
1287 <a href="../../javascript/new-api_ui/" class="md-nav__link">
1288 User Interface
1289 </a>
1290 </li>
1291
1292
1293
1294
1295 </ul>
1296 </nav>
1297 </li>
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307 <li class="md-nav__item">
1308 <a href="../../javascript/legacy-api/" class="md-nav__link">
1309 Legacy API
1310 </a>
1311 </li>
1312
1313
1314
1315
1316
1317
1318
1319
1320
9aa5da67
WG
1321 <li class="md-nav__item">
1322 <a href="../../javascript/code-snippets/" class="md-nav__link">
1323 Code Snippets
1324 </a>
1325 </li>
1326
1327
1328
1329
1330 </ul>
1331 </nav>
1332 </li>
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344 <li class="md-nav__item md-nav__item--nested">
1345
1346
9aa5da67
WG
1347
1348
51b70eee 1349 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
9aa5da67
WG
1350
1351
e02609d6 1352
51b70eee 1353 <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
9aa5da67
WG
1354 Package Components
1355 <span class="md-nav__icon md-icon"></span>
1356 </label>
1357
51b70eee 1358 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
9aa5da67
WG
1359 <label class="md-nav__title" for="__nav_5">
1360 <span class="md-nav__icon md-icon"></span>
1361 Package Components
1362 </label>
1363 <ul class="md-nav__list" data-md-scrollfix>
1364
1365
1366
1367
1368
1369
1370 <li class="md-nav__item">
1371 <a href="../../package/package-xml/" class="md-nav__link">
1372 package.xml
1373 </a>
1374 </li>
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385 <li class="md-nav__item md-nav__item--nested">
1386
1387
9aa5da67
WG
1388
1389
51b70eee 1390 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" >
e02609d6 1391
9aa5da67
WG
1392
1393
51b70eee 1394 <label class="md-nav__link" for="__nav_5_2" id="__nav_5_2_label" tabindex="0">
9aa5da67
WG
1395 PIPs
1396 <span class="md-nav__icon md-icon"></span>
1397 </label>
1398
51b70eee 1399 <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false">
9aa5da67
WG
1400 <label class="md-nav__title" for="__nav_5_2">
1401 <span class="md-nav__icon md-icon"></span>
1402 PIPs
1403 </label>
1404 <ul class="md-nav__list" data-md-scrollfix>
1405
1406
1407
1408
1409
1410
1411 <li class="md-nav__item">
1412 <a href="../../package/pip/" class="md-nav__link">
1413 Overview
1414 </a>
1415 </li>
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425 <li class="md-nav__item">
1426 <a href="../../package/pip/acl-option/" class="md-nav__link">
1427 aclOption
1428 </a>
1429 </li>
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439 <li class="md-nav__item">
1440 <a href="../../package/pip/acp-menu/" class="md-nav__link">
1441 acpMenu
1442 </a>
1443 </li>
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453 <li class="md-nav__item">
1454 <a href="../../package/pip/acp-search-provider/" class="md-nav__link">
1455 acpSearchProvider
1456 </a>
1457 </li>
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467 <li class="md-nav__item">
1468 <a href="../../package/pip/acp-template/" class="md-nav__link">
1469 acpTemplate
1470 </a>
1471 </li>
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481 <li class="md-nav__item">
1482 <a href="../../package/pip/acp-template-delete/" class="md-nav__link">
1483 acpTemplateDelete
1484 </a>
1485 </li>
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495 <li class="md-nav__item">
1496 <a href="../../package/pip/bbcode/" class="md-nav__link">
1497 bbcode
1498 </a>
1499 </li>
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509 <li class="md-nav__item">
1510 <a href="../../package/pip/box/" class="md-nav__link">
1511 box
1512 </a>
1513 </li>
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523 <li class="md-nav__item">
1524 <a href="../../package/pip/clipboard-action/" class="md-nav__link">
1525 clipboardAction
1526 </a>
1527 </li>
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537 <li class="md-nav__item">
1538 <a href="../../package/pip/core-object/" class="md-nav__link">
1539 coreObject
1540 </a>
1541 </li>
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551 <li class="md-nav__item">
1552 <a href="../../package/pip/cronjob/" class="md-nav__link">
1553 cronjob
1554 </a>
1555 </li>
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565 <li class="md-nav__item">
1566 <a href="../../package/pip/database/" class="md-nav__link">
1567 database
1568 </a>
1569 </li>
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579 <li class="md-nav__item">
1580 <a href="../../package/pip/event-listener/" class="md-nav__link">
1581 eventListener
1582 </a>
1583 </li>
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593 <li class="md-nav__item">
1594 <a href="../../package/pip/file/" class="md-nav__link">
1595 file
1596 </a>
1597 </li>
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607 <li class="md-nav__item">
1608 <a href="../../package/pip/file-delete/" class="md-nav__link">
1609 fileDelete
1610 </a>
1611 </li>
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621 <li class="md-nav__item">
1622 <a href="../../package/pip/language/" class="md-nav__link">
1623 language
1624 </a>
1625 </li>
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635 <li class="md-nav__item">
1636 <a href="../../package/pip/media-provider/" class="md-nav__link">
1637 mediaProvider
1638 </a>
1639 </li>
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649 <li class="md-nav__item">
1650 <a href="../../package/pip/menu/" class="md-nav__link">
1651 menu
1652 </a>
1653 </li>
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663 <li class="md-nav__item">
1664 <a href="../../package/pip/menu-item/" class="md-nav__link">
1665 menuItem
1666 </a>
1667 </li>
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677 <li class="md-nav__item">
1678 <a href="../../package/pip/object-type/" class="md-nav__link">
1679 objectType
1680 </a>
1681 </li>
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691 <li class="md-nav__item">
1692 <a href="../../package/pip/object-type-definition/" class="md-nav__link">
1693 objectTypeDefinition
1694 </a>
1695 </li>
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705 <li class="md-nav__item">
1706 <a href="../../package/pip/option/" class="md-nav__link">
1707 option
1708 </a>
1709 </li>
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719 <li class="md-nav__item">
1720 <a href="../../package/pip/page/" class="md-nav__link">
1721 page
1722 </a>
1723 </li>
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733 <li class="md-nav__item">
1734 <a href="../../package/pip/pip/" class="md-nav__link">
1735 pip
1736 </a>
1737 </li>
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747 <li class="md-nav__item">
1748 <a href="../../package/pip/script/" class="md-nav__link">
1749 script
1750 </a>
1751 </li>
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761 <li class="md-nav__item">
1762 <a href="../../package/pip/smiley/" class="md-nav__link">
1763 smiley
1764 </a>
1765 </li>
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775 <li class="md-nav__item">
1776 <a href="../../package/pip/sql/" class="md-nav__link">
1777 sql
1778 </a>
1779 </li>
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789 <li class="md-nav__item">
1790 <a href="../../package/pip/style/" class="md-nav__link">
1791 style
1792 </a>
1793 </li>
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803 <li class="md-nav__item">
1804 <a href="../../package/pip/template/" class="md-nav__link">
1805 template
1806 </a>
1807 </li>
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817 <li class="md-nav__item">
1818 <a href="../../package/pip/template-delete/" class="md-nav__link">
1819 templateDelete
1820 </a>
1821 </li>
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831 <li class="md-nav__item">
1832 <a href="../../package/pip/template-listener/" class="md-nav__link">
1833 templateListener
1834 </a>
1835 </li>
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845 <li class="md-nav__item">
1846 <a href="../../package/pip/user-group-option/" class="md-nav__link">
1847 userGroupOption
1848 </a>
1849 </li>
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859 <li class="md-nav__item">
1860 <a href="../../package/pip/user-menu/" class="md-nav__link">
1861 userMenu
1862 </a>
1863 </li>
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873 <li class="md-nav__item">
1874 <a href="../../package/pip/user-notification-event/" class="md-nav__link">
1875 userNotificationEvent
1876 </a>
1877 </li>
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887 <li class="md-nav__item">
1888 <a href="../../package/pip/user-option/" class="md-nav__link">
1889 userOption
1890 </a>
1891 </li>
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901 <li class="md-nav__item">
1902 <a href="../../package/pip/user-profile-menu/" class="md-nav__link">
1903 userProfileMenu
1904 </a>
1905 </li>
1906
1907
1908
1909
1910 </ul>
1911 </nav>
1912 </li>
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922 <li class="md-nav__item">
1923 <a href="../../package/database-php-api/" class="md-nav__link">
1924 Database PHP API
1925 </a>
1926 </li>
1927
1928
1929
1930
1931 </ul>
1932 </nav>
1933 </li>
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945 <li class="md-nav__item md-nav__item--nested">
1946
1947
9aa5da67
WG
1948
1949
51b70eee 1950 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
e02609d6 1951
9aa5da67
WG
1952
1953
51b70eee 1954 <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
9aa5da67
WG
1955 Migration
1956 <span class="md-nav__icon md-icon"></span>
1957 </label>
1958
51b70eee 1959 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
9aa5da67
WG
1960 <label class="md-nav__title" for="__nav_6">
1961 <span class="md-nav__icon md-icon"></span>
1962 Migration
1963 </label>
1964 <ul class="md-nav__list" data-md-scrollfix>
1965
1966
1967
1968
1969
1970
1971
1972 <li class="md-nav__item md-nav__item--nested">
1973
1974
9aa5da67
WG
1975
1976
51b70eee 1977 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_1" >
9aa5da67
WG
1978
1979
e02609d6 1980
51b70eee 1981 <label class="md-nav__link" for="__nav_6_1" id="__nav_6_1_label" tabindex="0">
9aa5da67
WG
1982 From WoltLab Suite 5.5
1983 <span class="md-nav__icon md-icon"></span>
1984 </label>
1985
51b70eee 1986 <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_1_label" aria-expanded="false">
9aa5da67
WG
1987 <label class="md-nav__title" for="__nav_6_1">
1988 <span class="md-nav__icon md-icon"></span>
1989 From WoltLab Suite 5.5
1990 </label>
1991 <ul class="md-nav__list" data-md-scrollfix>
1992
1993
1994
1995
1996
1997
1998 <li class="md-nav__item">
1999 <a href="../../migration/wsc55/php/" class="md-nav__link">
2000 PHP API
2001 </a>
2002 </li>
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012 <li class="md-nav__item">
2013 <a href="../../migration/wsc55/javascript/" class="md-nav__link">
2014 TypeScript and JavaScript
2015 </a>
2016 </li>
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026 <li class="md-nav__item">
2027 <a href="../../migration/wsc55/templates/" class="md-nav__link">
2028 Templates
2029 </a>
2030 </li>
2031
2032
2033
2034
2035
2036
2037
2038
2039
024038ef
WG
2040 <li class="md-nav__item">
2041 <a href="../../migration/wsc55/icons/" class="md-nav__link">
2042 Icons
2043 </a>
2044 </li>
2045
2046
2047
2048
2049
2050
2051
2052
2053
6d611e8a
WG
2054 <li class="md-nav__item">
2055 <a href="../../migration/wsc55/dialogs/" class="md-nav__link">
2056 Dialogs
2057 </a>
2058 </li>
2059
2060
2061
2062
2063
2064
2065
2066
2067
9aa5da67
WG
2068 <li class="md-nav__item">
2069 <a href="../../migration/wsc55/libraries/" class="md-nav__link">
2070 Third Party Libraries
2071 </a>
2072 </li>
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082 <li class="md-nav__item">
2083 <a href="../../migration/wsc55/deprecations_removals/" class="md-nav__link">
2084 Deprecations and Removals
2085 </a>
2086 </li>
2087
2088
2089
2090
2091 </ul>
2092 </nav>
2093 </li>
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104 <li class="md-nav__item md-nav__item--nested">
2105
2106
9aa5da67
WG
2107
2108
51b70eee 2109 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_2" >
e02609d6 2110
9aa5da67
WG
2111
2112
51b70eee 2113 <label class="md-nav__link" for="__nav_6_2" id="__nav_6_2_label" tabindex="0">
9aa5da67
WG
2114 From WoltLab Suite 5.4
2115 <span class="md-nav__icon md-icon"></span>
2116 </label>
2117
51b70eee 2118 <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_2_label" aria-expanded="false">
9aa5da67
WG
2119 <label class="md-nav__title" for="__nav_6_2">
2120 <span class="md-nav__icon md-icon"></span>
2121 From WoltLab Suite 5.4
2122 </label>
2123 <ul class="md-nav__list" data-md-scrollfix>
2124
2125
2126
2127
2128
2129
2130 <li class="md-nav__item">
2131 <a href="../../migration/wsc54/php/" class="md-nav__link">
2132 PHP API
2133 </a>
2134 </li>
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144 <li class="md-nav__item">
2145 <a href="../../migration/wsc54/javascript/" class="md-nav__link">
2146 TypeScript and JavaScript
2147 </a>
2148 </li>
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158 <li class="md-nav__item">
2159 <a href="../../migration/wsc54/templates/" class="md-nav__link">
2160 Templates
2161 </a>
2162 </li>
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172 <li class="md-nav__item">
2173 <a href="../../migration/wsc54/libraries/" class="md-nav__link">
2174 Third Party Libraries
2175 </a>
2176 </li>
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186 <li class="md-nav__item">
2187 <a href="../../migration/wsc54/deprecations_removals/" class="md-nav__link">
2188 Deprecations and Removals
2189 </a>
2190 </li>
2191
2192
2193
2194
2195 </ul>
2196 </nav>
2197 </li>
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208 <li class="md-nav__item md-nav__item--nested">
2209
2210
9aa5da67
WG
2211
2212
51b70eee 2213 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_3" >
e02609d6 2214
9aa5da67
WG
2215
2216
51b70eee 2217 <label class="md-nav__link" for="__nav_6_3" id="__nav_6_3_label" tabindex="0">
9aa5da67
WG
2218 From WoltLab Suite 5.3
2219 <span class="md-nav__icon md-icon"></span>
2220 </label>
2221
51b70eee 2222 <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_3_label" aria-expanded="false">
9aa5da67
WG
2223 <label class="md-nav__title" for="__nav_6_3">
2224 <span class="md-nav__icon md-icon"></span>
2225 From WoltLab Suite 5.3
2226 </label>
2227 <ul class="md-nav__list" data-md-scrollfix>
2228
2229
2230
2231
2232
2233
2234 <li class="md-nav__item">
2235 <a href="../../migration/wsc53/php/" class="md-nav__link">
2236 PHP API
2237 </a>
2238 </li>
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248 <li class="md-nav__item">
2249 <a href="../../migration/wsc53/session/" class="md-nav__link">
2250 Session Handling and Authentication
2251 </a>
2252 </li>
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262 <li class="md-nav__item">
2263 <a href="../../migration/wsc53/javascript/" class="md-nav__link">
2264 TypeScript and JavaScript
2265 </a>
2266 </li>
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276 <li class="md-nav__item">
2277 <a href="../../migration/wsc53/templates/" class="md-nav__link">
2278 Templates
2279 </a>
2280 </li>
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290 <li class="md-nav__item">
2291 <a href="../../migration/wsc53/libraries/" class="md-nav__link">
2292 Third Party Libraries
2293 </a>
2294 </li>
2295
2296
2297
2298
2299 </ul>
2300 </nav>
2301 </li>
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312 <li class="md-nav__item md-nav__item--nested">
2313
2314
9aa5da67
WG
2315
2316
51b70eee 2317 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_4" >
9aa5da67
WG
2318
2319
e02609d6 2320
51b70eee 2321 <label class="md-nav__link" for="__nav_6_4" id="__nav_6_4_label" tabindex="0">
9aa5da67
WG
2322 From WoltLab Suite 5.2
2323 <span class="md-nav__icon md-icon"></span>
2324 </label>
2325
51b70eee 2326 <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_4_label" aria-expanded="false">
9aa5da67
WG
2327 <label class="md-nav__title" for="__nav_6_4">
2328 <span class="md-nav__icon md-icon"></span>
2329 From WoltLab Suite 5.2
2330 </label>
2331 <ul class="md-nav__list" data-md-scrollfix>
2332
2333
2334
2335
2336
2337
2338 <li class="md-nav__item">
2339 <a href="../../migration/wsc52/php/" class="md-nav__link">
2340 PHP API
2341 </a>
2342 </li>
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352 <li class="md-nav__item">
2353 <a href="../../migration/wsc52/templates/" class="md-nav__link">
2354 Templates and Languages
2355 </a>
2356 </li>
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366 <li class="md-nav__item">
2367 <a href="../../migration/wsc52/libraries/" class="md-nav__link">
2368 Third Party Libraries
2369 </a>
2370 </li>
2371
2372
2373
2374
2375 </ul>
2376 </nav>
2377 </li>
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388 <li class="md-nav__item md-nav__item--nested">
2389
2390
9aa5da67
WG
2391
2392
51b70eee 2393 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_5" >
e02609d6 2394
9aa5da67
WG
2395
2396
51b70eee 2397 <label class="md-nav__link" for="__nav_6_5" id="__nav_6_5_label" tabindex="0">
9aa5da67
WG
2398 From WoltLab Suite 3.1
2399 <span class="md-nav__icon md-icon"></span>
2400 </label>
2401
51b70eee 2402 <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_5_label" aria-expanded="false">
9aa5da67
WG
2403 <label class="md-nav__title" for="__nav_6_5">
2404 <span class="md-nav__icon md-icon"></span>
2405 From WoltLab Suite 3.1
2406 </label>
2407 <ul class="md-nav__list" data-md-scrollfix>
2408
2409
2410
2411
2412
2413
2414 <li class="md-nav__item">
2415 <a href="../../migration/wsc31/php/" class="md-nav__link">
2416 PHP API
2417 </a>
2418 </li>
2419
2420
2421
2422
2423 </ul>
2424 </nav>
2425 </li>
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436 <li class="md-nav__item md-nav__item--nested">
2437
2438
9aa5da67
WG
2439
2440
51b70eee 2441 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_6" >
e02609d6 2442
9aa5da67
WG
2443
2444
51b70eee 2445 <label class="md-nav__link" for="__nav_6_6" id="__nav_6_6_label" tabindex="0">
9aa5da67
WG
2446 From WoltLab Suite 3.0
2447 <span class="md-nav__icon md-icon"></span>
2448 </label>
2449
51b70eee 2450 <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_6_label" aria-expanded="false">
9aa5da67
WG
2451 <label class="md-nav__title" for="__nav_6_6">
2452 <span class="md-nav__icon md-icon"></span>
2453 From WoltLab Suite 3.0
2454 </label>
2455 <ul class="md-nav__list" data-md-scrollfix>
2456
2457
2458
2459
2460
2461
2462 <li class="md-nav__item">
2463 <a href="../../migration/wsc30/php/" class="md-nav__link">
2464 PHP API
2465 </a>
2466 </li>
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476 <li class="md-nav__item">
2477 <a href="../../migration/wsc30/javascript/" class="md-nav__link">
2478 JavaScript API
2479 </a>
2480 </li>
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490 <li class="md-nav__item">
2491 <a href="../../migration/wsc30/templates/" class="md-nav__link">
2492 Templates
2493 </a>
2494 </li>
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504 <li class="md-nav__item">
2505 <a href="../../migration/wsc30/css/" class="md-nav__link">
2506 CSS
2507 </a>
2508 </li>
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518 <li class="md-nav__item">
2519 <a href="../../migration/wsc30/package/" class="md-nav__link">
2520 Package Components
2521 </a>
2522 </li>
2523
2524
2525
2526
2527 </ul>
2528 </nav>
2529 </li>
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540 <li class="md-nav__item md-nav__item--nested">
2541
2542
9aa5da67
WG
2543
2544
51b70eee 2545 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_7" >
9aa5da67
WG
2546
2547
e02609d6 2548
51b70eee 2549 <label class="md-nav__link" for="__nav_6_7" id="__nav_6_7_label" tabindex="0">
9aa5da67
WG
2550 From WCF 2.1
2551 <span class="md-nav__icon md-icon"></span>
2552 </label>
2553
51b70eee 2554 <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_7_label" aria-expanded="false">
9aa5da67
WG
2555 <label class="md-nav__title" for="__nav_6_7">
2556 <span class="md-nav__icon md-icon"></span>
2557 From WCF 2.1
2558 </label>
2559 <ul class="md-nav__list" data-md-scrollfix>
2560
2561
2562
2563
2564
2565
2566 <li class="md-nav__item">
2567 <a href="../../migration/wcf21/php/" class="md-nav__link">
2568 PHP API
2569 </a>
2570 </li>
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580 <li class="md-nav__item">
2581 <a href="../../migration/wcf21/templates/" class="md-nav__link">
2582 Templates
2583 </a>
2584 </li>
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594 <li class="md-nav__item">
2595 <a href="../../migration/wcf21/css/" class="md-nav__link">
2596 CSS
2597 </a>
2598 </li>
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608 <li class="md-nav__item">
2609 <a href="../../migration/wcf21/package/" class="md-nav__link">
2610 Package Components
2611 </a>
2612 </li>
2613
2614
2615
2616
2617 </ul>
2618 </nav>
2619 </li>
2620
2621
2622
2623
2624 </ul>
2625 </nav>
2626 </li>
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638 <li class="md-nav__item md-nav__item--nested">
2639
2640
9aa5da67
WG
2641
2642
51b70eee 2643 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
e02609d6 2644
9aa5da67
WG
2645
2646
51b70eee 2647 <label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
9aa5da67
WG
2648 Tutorials
2649 <span class="md-nav__icon md-icon"></span>
2650 </label>
2651
51b70eee 2652 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
9aa5da67
WG
2653 <label class="md-nav__title" for="__nav_7">
2654 <span class="md-nav__icon md-icon"></span>
2655 Tutorials
2656 </label>
2657 <ul class="md-nav__list" data-md-scrollfix>
2658
2659
2660
2661
2662
2663
2664
2665 <li class="md-nav__item md-nav__item--nested">
2666
2667
9aa5da67
WG
2668
2669
51b70eee 2670 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_1" >
9aa5da67
WG
2671
2672
e02609d6 2673
51b70eee 2674 <label class="md-nav__link" for="__nav_7_1" id="__nav_7_1_label" tabindex="0">
9aa5da67
WG
2675 Tutorial Series
2676 <span class="md-nav__icon md-icon"></span>
2677 </label>
2678
51b70eee 2679 <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_1_label" aria-expanded="false">
9aa5da67
WG
2680 <label class="md-nav__title" for="__nav_7_1">
2681 <span class="md-nav__icon md-icon"></span>
2682 Tutorial Series
2683 </label>
2684 <ul class="md-nav__list" data-md-scrollfix>
2685
2686
2687
2688
2689
2690
2691 <li class="md-nav__item">
2692 <a href="../../tutorial/series/overview/" class="md-nav__link">
2693 Overview
2694 </a>
2695 </li>
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705 <li class="md-nav__item">
2706 <a href="../../tutorial/series/part_1/" class="md-nav__link">
2707 Part 1
2708 </a>
2709 </li>
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719 <li class="md-nav__item">
2720 <a href="../../tutorial/series/part_2/" class="md-nav__link">
2721 Part 2
2722 </a>
2723 </li>
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733 <li class="md-nav__item">
2734 <a href="../../tutorial/series/part_3/" class="md-nav__link">
2735 Part 3
2736 </a>
2737 </li>
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747 <li class="md-nav__item">
2748 <a href="../../tutorial/series/part_4/" class="md-nav__link">
2749 Part 4
2750 </a>
2751 </li>
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761 <li class="md-nav__item">
2762 <a href="../../tutorial/series/part_5/" class="md-nav__link">
2763 Part 5
2764 </a>
2765 </li>
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775 <li class="md-nav__item">
2776 <a href="../../tutorial/series/part_6/" class="md-nav__link">
2777 Part 6
2778 </a>
2779 </li>
2780
2781
2782
2783
2784 </ul>
2785 </nav>
2786 </li>
2787
2788
2789
2790
2791 </ul>
2792 </nav>
2793 </li>
2794
2795
2796
2797 </ul>
2798</nav>
2799 </div>
2800 </div>
2801 </div>
2802
2803
2804
2805 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
2806 <div class="md-sidebar__scrollwrap">
2807 <div class="md-sidebar__inner">
2808
2809
2810<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2811
2812
2813
2814
2815
2816
2817 <label class="md-nav__title" for="__toc">
2818 <span class="md-nav__icon md-icon"></span>
2819 Table of contents
2820 </label>
2821 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2822
2823 <li class="md-nav__item">
57bba3cc 2824 <a href="#anchor" class="md-nav__link">
db9f8960 2825 {anchor}
9aa5da67
WG
2826 </a>
2827
2828</li>
2829
2830 <li class="md-nav__item">
57bba3cc 2831 <a href="#anchorattributes" class="md-nav__link">
db9f8960 2832 {anchorAttributes}
9aa5da67
WG
2833 </a>
2834
2835</li>
2836
2837 <li class="md-nav__item">
2838 <a href="#append" class="md-nav__link">
db9f8960 2839 {append}
9aa5da67
WG
2840 </a>
2841
2842</li>
2843
2844 <li class="md-nav__item">
2845 <a href="#assign" class="md-nav__link">
db9f8960 2846 {assign}
9aa5da67
WG
2847 </a>
2848
2849</li>
2850
2851 <li class="md-nav__item">
2852 <a href="#capture" class="md-nav__link">
db9f8960 2853 {capture}
9aa5da67
WG
2854 </a>
2855
9aa5da67
WG
2856</li>
2857
2858 <li class="md-nav__item">
2859 <a href="#counter" class="md-nav__link">
db9f8960 2860 {counter}
9aa5da67
WG
2861 </a>
2862
2863</li>
2864
2865 <li class="md-nav__item">
2866 <a href="#54-csrftoken" class="md-nav__link">
2867 5.4+ csrfToken
2868 </a>
2869
9aa5da67
WG
2870</li>
2871
2872 <li class="md-nav__item">
2873 <a href="#cycle" class="md-nav__link">
db9f8960 2874 {cycle}
9aa5da67
WG
2875 </a>
2876
9aa5da67
WG
2877</li>
2878
2879 <li class="md-nav__item">
57bba3cc 2880 <a href="#dateinterval" class="md-nav__link">
db9f8960 2881 {dateInterval}
9aa5da67
WG
2882 </a>
2883
9aa5da67
WG
2884</li>
2885
2886 <li class="md-nav__item">
2887 <a href="#event" class="md-nav__link">
db9f8960 2888 {event}
9aa5da67
WG
2889 </a>
2890
9aa5da67
WG
2891</li>
2892
2893 <li class="md-nav__item">
2894 <a href="#hascontent" class="md-nav__link">
db9f8960 2895 {hascontent}
9aa5da67
WG
2896 </a>
2897
2898</li>
2899
2900 <li class="md-nav__item">
2901 <a href="#htmlcheckboxes" class="md-nav__link">
db9f8960 2902 {htmlCheckboxes}
9aa5da67
WG
2903 </a>
2904
2905</li>
2906
2907 <li class="md-nav__item">
2908 <a href="#htmloptions" class="md-nav__link">
db9f8960 2909 {htmlOptions}
9aa5da67
WG
2910 </a>
2911
ef66f102
WG
2912</li>
2913
2914 <li class="md-nav__item">
2915 <a href="#icon" class="md-nav__link">
2916 {icon}
2917 </a>
2918
9aa5da67
WG
2919</li>
2920
2921 <li class="md-nav__item">
2922 <a href="#implode" class="md-nav__link">
db9f8960 2923 {implode}
9aa5da67
WG
2924 </a>
2925
9aa5da67
WG
2926</li>
2927
2928 <li class="md-nav__item">
2929 <a href="#js" class="md-nav__link">
db9f8960 2930 {js}
9aa5da67
WG
2931 </a>
2932
2933</li>
2934
2935 <li class="md-nav__item">
57bba3cc 2936 <a href="#jslang" class="md-nav__link">
db9f8960 2937 {jslang}
9aa5da67
WG
2938 </a>
2939
71ef52e2
WG
2940</li>
2941
2942 <li class="md-nav__item">
2943 <a href="#60-jsphrase" class="md-nav__link">
2944 6.0+ {jsphrase}
2945 </a>
2946
9aa5da67
WG
2947</li>
2948
2949 <li class="md-nav__item">
2950 <a href="#lang" class="md-nav__link">
db9f8960 2951 {lang}
9aa5da67
WG
2952 </a>
2953
9aa5da67
WG
2954</li>
2955
2956 <li class="md-nav__item">
2957 <a href="#link" class="md-nav__link">
db9f8960 2958 {link}
9aa5da67
WG
2959 </a>
2960
9aa5da67
WG
2961</li>
2962
2963 <li class="md-nav__item">
2964 <a href="#54-objectaction" class="md-nav__link">
2965 5.4+ objectAction
2966 </a>
2967
2968</li>
2969
2970 <li class="md-nav__item">
2971 <a href="#page" class="md-nav__link">
db9f8960 2972 {page}
9aa5da67
WG
2973 </a>
2974
2975</li>
2976
2977 <li class="md-nav__item">
2978 <a href="#pages" class="md-nav__link">
db9f8960 2979 {pages}
9aa5da67
WG
2980 </a>
2981
9aa5da67
WG
2982</li>
2983
2984 <li class="md-nav__item">
57bba3cc 2985 <a href="#plural" class="md-nav__link">
db9f8960 2986 {plural}
9aa5da67
WG
2987 </a>
2988
2989</li>
2990
2991 <li class="md-nav__item">
2992 <a href="#prepend" class="md-nav__link">
db9f8960 2993 {prepend}
9aa5da67
WG
2994 </a>
2995
9aa5da67
WG
2996</li>
2997
2998 <li class="md-nav__item">
2999 <a href="#time" class="md-nav__link">
da248f39
WG
3000 {time}
3001 </a>
3002
9aa5da67
WG
3003</li>
3004
3005 <li class="md-nav__item">
57bba3cc 3006 <a href="#user" class="md-nav__link">
db9f8960 3007 {user}
9aa5da67
WG
3008 </a>
3009
3010</li>
3011
3012 </ul>
3013
3014</nav>
3015 </div>
3016 </div>
3017 </div>
3018
3019
7f9945cf
WG
3020
3021 <div class="md-content" data-md-component="content">
3022 <article class="md-content__inner md-typeset">
9aa5da67 3023
7f9945cf
WG
3024
3025
e02609d6
WG
3026
3027
3028
9aa5da67 3029
9aa5da67 3030<h1 id="template-plugins">Template Plugins<a class="headerlink" href="#template-plugins" title="Permanent link">#</a></h1>
db9f8960 3031<h2 id="anchor"><code>{anchor}</code><a class="headerlink" href="#anchor" title="Permanent link">#</a></h2>
9aa5da67
WG
3032<p>The <code>anchor</code> template plugin creates <code>a</code> HTML elements.
3033The easiest way to use the template plugin is to pass it an instance of <code>ITitledLinkObject</code>:</p>
c708394c 3034<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">anchor</span> <span class="na">object</span><span class="o">=</span><span class="nv">$object</span><span class="cp">}</span>
9aa5da67
WG
3035</code></pre></div></td></tr></table></div>
3036<p>generates the same output as</p>
3037<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="x">&lt;a href=&quot;</span><span class="cp">{</span><span class="nv">$object</span><span class="o">-&gt;</span><span class="na">getLink</span><span class="o">()</span><span class="cp">}</span><span class="x">&quot;&gt;</span><span class="cp">{</span><span class="nv">$object</span><span class="o">-&gt;</span><span class="na">getTitle</span><span class="o">()</span><span class="cp">}</span><span class="x">&lt;/a&gt;</span>
3038</code></pre></div></td></tr></table></div>
3039<p>Instead of an <code>object</code> parameter, a <code>link</code> and <code>content</code> parameter can be used:</p>
c708394c 3040<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">anchor</span> <span class="na">link</span><span class="o">=</span><span class="nv">$linkObject</span> <span class="na">content</span><span class="o">=</span><span class="nv">$content</span><span class="cp">}</span>
9aa5da67
WG
3041</code></pre></div></td></tr></table></div>
3042<p>where <code>$linkObject</code> implements <code>ILinkableObject</code> and <code>$content</code> is either an object implementing <code>ITitledObject</code> or having a <code>__toString()</code> method or <code>$content</code> is a string or a number.</p>
3043<p>The last special attribute is <code>append</code> whose contents are appended to the <code>href</code> attribute of the generated anchor element.</p>
3044<p>All of the other attributes matching <code>~^[a-z]+([A-z]+)+$~</code>, expect for <code>href</code> which is disallowed, are added as attributes to the anchor element.</p>
3045<p>If an <code>object</code> attribute is present, the object also implements <code>IPopoverObject</code> and if the return value of <code>IPopoverObject::getPopoverLinkClass()</code> is included in the <code>class</code> attribute of the <code>anchor</code> tag, <code>data-object-id</code> is automatically added.
3046This functionality makes it easy to generate links with popover support.
3047Instead of</p>
c338dfa7 3048<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="x">&lt;a href=&quot;</span><span class="cp">{</span><span class="nv">$entry</span><span class="o">-&gt;</span><span class="na">getLink</span><span class="o">()</span><span class="cp">}</span><span class="x">&quot; class=&quot;blogEntryLink&quot; data-object-id=&quot;</span><span class="cp">{</span><span class="nv">$entry</span><span class="o">-&gt;</span><span class="na">entryID</span><span class="cp">}</span><span class="x">&quot;&gt;</span><span class="cp">{</span><span class="nv">$entry</span><span class="o">-&gt;</span><span class="na">subject</span><span class="cp">}</span><span class="x">&lt;/a&gt;</span>
9aa5da67
WG
3049</code></pre></div></td></tr></table></div>
3050<p>using</p>
c708394c 3051<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">anchor</span> <span class="na">object</span><span class="o">=</span><span class="nv">$entry</span> <span class="na">class</span><span class="o">=</span><span class="s1">&#39;blogEntryLink&#39;</span><span class="cp">}</span>
9aa5da67
WG
3052</code></pre></div></td></tr></table></div>
3053<p>is sufficient if <code>Entry::getPopoverLinkClass()</code> returns <code>blogEntryLink</code>.</p>
db9f8960 3054<h2 id="anchorattributes"><code>{anchorAttributes}</code><a class="headerlink" href="#anchorattributes" title="Permanent link">#</a></h2>
9aa5da67
WG
3055<p><code>anchorAttributes</code> compliments the <code>StringUtil::getAnchorTagAttributes(string, bool): string</code> method.
3056It allows to easily generate the necessary attributes for an anchor tag based off the destination URL.</p>
3057<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="x">&lt;a href=&quot;https://www.example.com&quot; </span><span class="cp">{</span><span class="nf">anchorAttributes</span> <span class="na">url</span><span class="o">=</span><span class="s1">&#39;https://www.example.com&#39;</span> <span class="na">appendHref</span><span class="o">=</span><span class="kc">false</span> <span class="na">appendClassname</span><span class="o">=</span><span class="kc">true</span> <span class="na">isUgc</span><span class="o">=</span><span class="kc">true</span><span class="cp">}</span><span class="x">&gt;</span>
3058</code></pre></div></td></tr></table></div>
3059<table>
3060<thead>
3061<tr>
3062<th>Attribute</th>
3063<th>Description</th>
3064</tr>
3065</thead>
3066<tbody>
3067<tr>
3068<td><code>url</code></td>
3069<td>destination URL</td>
3070</tr>
3071<tr>
3072<td><code>appendHref</code></td>
3073<td>whether the <code>href</code> attribute should be generated; <code>true</code> by default</td>
3074</tr>
3075<tr>
3076<td><code>isUgc</code></td>
3077<td>whether the <code>rel="ugc"</code> attribute should be generated; <code>false</code> by default</td>
3078</tr>
3079<tr>
3080<td><code>appendClassname</code></td>
3081<td>whether the <code>class="externalURL"</code> attribute should be generated; <code>true</code> by default</td>
3082</tr>
3083</tbody>
3084</table>
db9f8960 3085<h2 id="append"><code>{append}</code><a class="headerlink" href="#append" title="Permanent link">#</a></h2>
9aa5da67
WG
3086<p>If a string should be appended to the value of a variable, <code>append</code> can be used:</p>
3087<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3088<span class="normal">2</span>
3089<span class="normal">3</span>
3090<span class="normal">4</span>
3091<span class="normal">5</span>
3092<span class="normal">6</span>
c708394c 3093<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">assign</span> <span class="na">var</span><span class="o">=</span><span class="na">templateVariable</span> <span class="na">value</span><span class="o">=</span><span class="s1">&#39;newValue&#39;</span><span class="cp">}</span>
9aa5da67 3094
c708394c 3095<span class="cp">{</span><span class="nv">$templateVariable</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* prints &#39;newValue *</span><span class="cp">}</span>
9aa5da67 3096
c708394c 3097<span class="cp">{</span><span class="nf">append</span> <span class="na">var</span><span class="o">=</span><span class="na">templateVariable</span> <span class="na">value</span><span class="o">=</span><span class="s1">&#39;2&#39;</span><span class="cp">}</span>
9aa5da67 3098
c708394c 3099<span class="cp">{</span><span class="nv">$templateVariable</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* now prints &#39;newValue2 *</span><span class="cp">}</span>
9aa5da67
WG
3100</code></pre></div></td></tr></table></div>
3101<p>If the variables does not exist yet, <code>append</code> creates a new one with the given value.
3102If <code>append</code> is used on an array as the variable, the value is appended to all elements of the array.</p>
db9f8960 3103<h2 id="assign"><code>{assign}</code><a class="headerlink" href="#assign" title="Permanent link">#</a></h2>
9aa5da67
WG
3104<p>New template variables can be declared and new values can be assigned to existing template variables using <code>assign</code>:</p>
3105<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3106<span class="normal">2</span>
c708394c 3107<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">assign</span> <span class="na">var</span><span class="o">=</span><span class="na">templateVariable</span> <span class="na">value</span><span class="o">=</span><span class="s1">&#39;newValue&#39;</span><span class="cp">}</span>
9aa5da67 3108
c708394c 3109<span class="cp">{</span><span class="nv">$templateVariable</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* prints &#39;newValue *</span><span class="cp">}</span>
9aa5da67 3110</code></pre></div></td></tr></table></div>
db9f8960 3111<h2 id="capture"><code>{capture}</code><a class="headerlink" href="#capture" title="Permanent link">#</a></h2>
9aa5da67
WG
3112<p>In some situations, <code>assign</code> is not sufficient to assign values to variables in templates if the value is complex.
3113Instead, <code>capture</code> can be used:</p>
3114<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3115<span class="normal">2</span>
3116<span class="normal">3</span>
3117<span class="normal">4</span>
3118<span class="normal">5</span>
3119<span class="normal">6</span>
c708394c
WG
3120<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">capture</span> <span class="na">var</span><span class="o">=</span><span class="na">templateVariable</span><span class="cp">}</span>
3121<span class="x"> </span><span class="cp">{</span><span class="nf">if</span> <span class="nv">$foo</span><span class="cp">}</span>
9aa5da67 3122<span class="x"> &lt;p&gt;</span><span class="cp">{</span><span class="nv">$bar</span><span class="cp">}</span><span class="x">&lt;/p&gt;</span>
c708394c 3123<span class="x"> </span><span class="cp">{</span><span class="nf">else</span><span class="cp">}</span>
9aa5da67 3124<span class="x"> &lt;small&gt;</span><span class="cp">{</span><span class="nv">$baz</span><span class="cp">}</span><span class="x">&lt;/small&gt;</span>
c708394c
WG
3125<span class="x"> </span><span class="cp">{</span><span class="nf">/if</span><span class="cp">}</span>
3126<span class="cp">{</span><span class="nf">/capture</span><span class="cp">}</span>
9aa5da67 3127</code></pre></div></td></tr></table></div>
db9f8960 3128<h2 id="counter"><code>{counter}</code><a class="headerlink" href="#counter" title="Permanent link">#</a></h2>
9aa5da67
WG
3129<p><code>counter</code> can be used to generate and optionally print a counter:</p>
3130<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3131<span class="normal">2</span>
3132<span class="normal">3</span>
3133<span class="normal">4</span>
3134<span class="normal">5</span>
3135<span class="normal">6</span>
c708394c 3136<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">counter</span> <span class="na">name</span><span class="o">=</span><span class="na">fooCounter</span> <span class="na">print</span><span class="o">=</span><span class="kc">true</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* prints &#39;1&#39; *</span><span class="cp">}</span>
9aa5da67 3137
c708394c 3138<span class="cp">{</span><span class="nf">counter</span> <span class="na">name</span><span class="o">=</span><span class="na">fooCounter</span> <span class="na">print</span><span class="o">=</span><span class="kc">true</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* prints &#39;2&#39; now *</span><span class="cp">}</span>
9aa5da67 3139
c708394c 3140<span class="cp">{</span><span class="nf">counter</span> <span class="na">name</span><span class="o">=</span><span class="na">fooCounter</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* prints nothing, but counter value is &#39;3&#39; now internally *</span><span class="cp">}</span>
9aa5da67 3141
c708394c 3142<span class="cp">{</span><span class="nf">counter</span> <span class="na">name</span><span class="o">=</span><span class="na">fooCounter</span> <span class="na">print</span><span class="o">=</span><span class="kc">true</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* prints &#39;4&#39; *</span><span class="cp">}</span>
9aa5da67
WG
3143</code></pre></div></td></tr></table></div>
3144<p>Counter supports the following attributes:</p>
3145<table>
3146<thead>
3147<tr>
3148<th>Attribute</th>
3149<th>Description</th>
3150</tr>
3151</thead>
3152<tbody>
3153<tr>
3154<td><code>assign</code></td>
3155<td>optional name of the template variable the current counter value is assigned to</td>
3156</tr>
3157<tr>
3158<td><code>direction</code></td>
3159<td>counting direction, either <code>up</code> or <code>down</code>; <code>up</code> by default</td>
3160</tr>
3161<tr>
3162<td><code>name</code></td>
3163<td>name of the counter, relevant if multiple counters are used simultaneously</td>
3164</tr>
3165<tr>
3166<td><code>print</code></td>
3167<td>if <code>true</code>, the current counter value is printed; <code>false</code> by default</td>
3168</tr>
3169<tr>
3170<td><code>skip</code></td>
3171<td>positive counting increment; <code>1</code> by default</td>
3172</tr>
3173<tr>
3174<td><code>start</code></td>
3175<td>start counter value; <code>1</code> by default</td>
3176</tr>
3177</tbody>
3178</table>
3179<h2 id="54-csrftoken"><span class="label label-info">5.4+</span> <code>csrfToken</code><a class="headerlink" href="#54-csrftoken" title="Permanent link">#</a></h2>
3180<p><code>{csrfToken}</code> prints out the session's CSRF token (“Security Token”).</p>
3181<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3182<span class="normal">2</span>
3183<span class="normal">3</span>
3184<span class="normal">4</span>
3185<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="x">&lt;form action=&quot;</span><span class="cp">{</span><span class="nf">link</span> <span class="na">controller</span><span class="o">=</span><span class="s2">&quot;Foo&quot;</span><span class="cp">}{</span><span class="nf">/link</span><span class="cp">}</span><span class="x">&quot; method=&quot;post&quot;&gt;</span>
c708394c 3186<span class="x"> </span><span class="cp">{</span><span class="c">* snip *</span><span class="cp">}</span>
9aa5da67 3187
c708394c 3188<span class="x"> </span><span class="cp">{</span><span class="nf">csrfToken</span><span class="cp">}</span>
9aa5da67
WG
3189<span class="x">&lt;/form&gt;</span>
3190</code></pre></div></td></tr></table></div>
3191<p>The <code>{csrfToken}</code> template plugin supports a <code>type</code> parameter.
3192Specifying this parameter might be required in rare situations.
3193Please <a href="https://github.com/WoltLab/WCF/blob/master/wcfsetup/install/files/lib/system/template/plugin/CsrfTokenFunctionTemplatePlugin.class.php">check the implementation</a> for details.</p>
db9f8960 3194<h2 id="cycle"><code>{cycle}</code><a class="headerlink" href="#cycle" title="Permanent link">#</a></h2>
9aa5da67
WG
3195<p><code>cycle</code> can be used to cycle between different values:</p>
3196<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3197<span class="normal">2</span>
3198<span class="normal">3</span>
3199<span class="normal">4</span>
3200<span class="normal">5</span>
3201<span class="normal">6</span>
c708394c 3202<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">cycle</span> <span class="na">name</span><span class="o">=</span><span class="na">fooCycle</span> <span class="na">values</span><span class="o">=</span><span class="s1">&#39;bar,baz&#39;</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* prints &#39;bar&#39; *</span><span class="cp">}</span>
9aa5da67 3203
c708394c 3204<span class="cp">{</span><span class="nf">cycle</span> <span class="na">name</span><span class="o">=</span><span class="na">fooCycle</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* prints &#39;baz&#39; *</span><span class="cp">}</span>
9aa5da67 3205
c708394c 3206<span class="cp">{</span><span class="nf">cycle</span> <span class="na">name</span><span class="o">=</span><span class="na">fooCycle</span> <span class="na">advance</span><span class="o">=</span><span class="kc">false</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* prints &#39;baz&#39; again *</span><span class="cp">}</span>
9aa5da67 3207
c708394c 3208<span class="cp">{</span><span class="nf">cycle</span> <span class="na">name</span><span class="o">=</span><span class="na">fooCycle</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* prints &#39;bar&#39; *</span><span class="cp">}</span>
9aa5da67
WG
3209</code></pre></div></td></tr></table></div>
3210<div class="admonition info">
3211<p class="admonition-title">The values attribute only has to be present for the first call. If <code>cycle</code> is used in a loop, the presence of the same values in consecutive calls has no effect. Only once the values change, the cycle is reset.</p>
3212</div>
3213<table>
3214<thead>
3215<tr>
3216<th>Attribute</th>
3217<th>Description</th>
3218</tr>
3219</thead>
3220<tbody>
3221<tr>
3222<td><code>advance</code></td>
3223<td>if <code>true</code>, the current cycle value is advanced to the next value; <code>true</code> by default</td>
3224</tr>
3225<tr>
3226<td><code>assign</code></td>
3227<td>optional name of the template variable the current cycle value is assigned to; if used, <code>print</code> is set to <code>false</code></td>
3228</tr>
3229<tr>
3230<td><code>delimiter</code></td>
3231<td>delimiter between the different cycle values; <code>,</code> by default</td>
3232</tr>
3233<tr>
3234<td><code>name</code></td>
3235<td>name of the cycle, relevant if multiple cycles are used simultaneously</td>
3236</tr>
3237<tr>
3238<td><code>print</code></td>
3239<td>if <code>true</code>, the current cycle value is printed, <code>false</code> by default</td>
3240</tr>
3241<tr>
3242<td><code>reset</code></td>
3243<td>if <code>true</code>, the current cycle value is set to the first value, <code>false</code> by default</td>
3244</tr>
3245<tr>
3246<td><code>values</code></td>
3247<td>string containing the different cycles values, also see <code>delimiter</code></td>
3248</tr>
3249</tbody>
3250</table>
db9f8960 3251<h2 id="dateinterval"><code>{dateInterval}</code><a class="headerlink" href="#dateinterval" title="Permanent link">#</a></h2>
9aa5da67 3252<p><code>dateInterval</code> calculates the difference between two unix timestamps and generated a textual date interval.</p>
c708394c 3253<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">dateInterval</span> <span class="na">start</span><span class="o">=</span><span class="nv">$startTimestamp</span> <span class="na">end</span><span class="o">=</span><span class="nv">$endTimestamp</span> <span class="na">full</span><span class="o">=</span><span class="kc">true</span> <span class="na">format</span><span class="o">=</span><span class="s1">&#39;sentence&#39;</span><span class="cp">}</span>
9aa5da67
WG
3254</code></pre></div></td></tr></table></div>
3255<table>
3256<thead>
3257<tr>
3258<th>Attribute</th>
3259<th>Description</th>
3260</tr>
3261</thead>
3262<tbody>
3263<tr>
3264<td><code>end</code></td>
3265<td>end of the time interval; current timestamp by default (though either <code>start</code> or <code>end</code> has to be set)</td>
3266</tr>
3267<tr>
3268<td><code>format</code></td>
3269<td>output format, either <code>default</code>, <code>sentence</code>, or <code>plain</code>; defaults to <code>default</code>, see <code>wcf\util\DateUtil::FORMAT_*</code> constants</td>
3270</tr>
3271<tr>
3272<td><code>full</code></td>
3273<td>if <code>true</code>, full difference in minutes is shown; if <code>false</code>, only the longest time interval is shown; <code>false</code> by default</td>
3274</tr>
3275<tr>
3276<td><code>start</code></td>
3277<td>start of the time interval; current timestamp by default (though either <code>start</code> or <code>end</code> has to be set)</td>
3278</tr>
3279</tbody>
3280</table>
db9f8960 3281<h2 id="event"><code>{event}</code><a class="headerlink" href="#event" title="Permanent link">#</a></h2>
9aa5da67 3282<p><code>event</code> provides extension points in templates that <a href="../../package/pip/template-listener/">template listeners</a> can use.</p>
c708394c 3283<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">event</span> <span class="na">name</span><span class="o">=</span><span class="s1">&#39;foo&#39;</span><span class="cp">}</span>
9aa5da67 3284</code></pre></div></td></tr></table></div>
db9f8960 3285<h2 id="hascontent"><code>{hascontent}</code><a class="headerlink" href="#hascontent" title="Permanent link">#</a></h2>
9aa5da67
WG
3286<p>In many cases, conditional statements can be used to determine if a certain section of a template is shown:</p>
3287<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3288<span class="normal">2</span>
c708394c 3289<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">if</span> <span class="nv">$foo</span> <span class="o">===</span> <span class="s1">&#39;bar&#39;</span><span class="cp">}</span>
9aa5da67 3290<span class="x"> only shown if $foo is bar</span>
c708394c 3291<span class="cp">{</span><span class="nf">/if</span><span class="cp">}</span>
9aa5da67
WG
3292</code></pre></div></td></tr></table></div>
3293<p>In some situations, however, such conditional statements are not sufficient.
3294One prominent example is a template event:</p>
3295<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3296<span class="normal">2</span>
3297<span class="normal">3</span>
3298<span class="normal">4</span>
3299<span class="normal">5</span>
3300<span class="normal">6</span>
3301<span class="normal">7</span>
3302<span class="normal">8</span>
c708394c 3303<span class="normal">9</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">if</span> <span class="nv">$foo</span> <span class="o">===</span> <span class="s1">&#39;bar&#39;</span><span class="cp">}</span>
9aa5da67 3304<span class="x"> &lt;ul&gt;</span>
c708394c 3305<span class="x"> </span><span class="cp">{</span><span class="nf">if</span> <span class="nv">$foo</span> <span class="o">===</span> <span class="s1">&#39;bar&#39;</span><span class="cp">}</span>
9aa5da67 3306<span class="x"> &lt;li&gt;Bar&lt;/li&gt;</span>
c708394c 3307<span class="x"> </span><span class="cp">{</span><span class="nf">/if</span><span class="cp">}</span>
9aa5da67 3308
c708394c 3309<span class="x"> </span><span class="cp">{</span><span class="nf">event</span> <span class="na">name</span><span class="o">=</span><span class="s1">&#39;listItems&#39;</span><span class="cp">}</span>
9aa5da67 3310<span class="x"> &lt;/li&gt;</span>
c708394c 3311<span class="cp">{</span><span class="nf">/if</span><span class="cp">}</span>
9aa5da67
WG
3312</code></pre></div></td></tr></table></div>
3313<p>In this example, if <code>$foo !== 'bar'</code>, the list will not be shown, regardless of the additional template code provided by template listeners.
3314In such a situation, <code>hascontent</code> has to be used:</p>
3315<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
3316<span class="normal"> 2</span>
3317<span class="normal"> 3</span>
3318<span class="normal"> 4</span>
3319<span class="normal"> 5</span>
3320<span class="normal"> 6</span>
3321<span class="normal"> 7</span>
3322<span class="normal"> 8</span>
3323<span class="normal"> 9</span>
3324<span class="normal">10</span>
c708394c 3325<span class="normal">11</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">hascontent</span><span class="cp">}</span>
9aa5da67 3326<span class="x"> &lt;ul&gt;</span>
c708394c
WG
3327<span class="x"> </span><span class="cp">{</span><span class="nf">content</span><span class="cp">}</span>
3328<span class="x"> </span><span class="cp">{</span><span class="nf">if</span> <span class="nv">$foo</span> <span class="o">===</span> <span class="s1">&#39;bar&#39;</span><span class="cp">}</span>
9aa5da67 3329<span class="x"> &lt;li&gt;Bar&lt;/li&gt;</span>
c708394c 3330<span class="x"> </span><span class="cp">{</span><span class="nf">/if</span><span class="cp">}</span>
9aa5da67 3331
c708394c
WG
3332<span class="x"> </span><span class="cp">{</span><span class="nf">event</span> <span class="na">name</span><span class="o">=</span><span class="s1">&#39;listItems&#39;</span><span class="cp">}</span>
3333<span class="x"> </span><span class="cp">{</span><span class="nf">/content</span><span class="cp">}</span>
9aa5da67 3334<span class="x"> &lt;/ul&gt;</span>
c708394c 3335<span class="cp">{</span><span class="nf">/hascontent</span><span class="cp">}</span>
9aa5da67
WG
3336</code></pre></div></td></tr></table></div>
3337<p>If the part of the template wrapped in the <code>content</code> tags has any (trimmed) content, the part of the template wrapped by <code>hascontent</code> tags is shown (including the part wrapped by the <code>content</code> tags), otherwise nothing is shown.
3338Thus, this construct avoids an empty list compared to the <code>if</code> solution above.</p>
3339<p>Like <code>foreach</code>, <code>hascontent</code> also supports an <code>else</code> part:</p>
3340<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3341<span class="normal">2</span>
3342<span class="normal">3</span>
3343<span class="normal">4</span>
3344<span class="normal">5</span>
3345<span class="normal">6</span>
3346<span class="normal">7</span>
3347<span class="normal">8</span>
c708394c 3348<span class="normal">9</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">hascontent</span><span class="cp">}</span>
9aa5da67 3349<span class="x"> &lt;ul&gt;</span>
c708394c
WG
3350<span class="x"> </span><span class="cp">{</span><span class="nf">content</span><span class="cp">}</span>
3351<span class="x"> </span><span class="cp">{</span><span class="c">* … *</span><span class="cp">}</span>
3352<span class="x"> </span><span class="cp">{</span><span class="nf">/content</span><span class="cp">}</span>
9aa5da67 3353<span class="x"> &lt;/ul&gt;</span>
c708394c 3354<span class="cp">{</span><span class="nf">hascontentelse</span><span class="cp">}</span>
9aa5da67 3355<span class="x"> no list</span>
c708394c 3356<span class="cp">{</span><span class="nf">/hascontent</span><span class="cp">}</span>
9aa5da67 3357</code></pre></div></td></tr></table></div>
db9f8960 3358<h2 id="htmlcheckboxes"><code>{htmlCheckboxes}</code><a class="headerlink" href="#htmlcheckboxes" title="Permanent link">#</a></h2>
9aa5da67
WG
3359<p><code>htmlCheckboxes</code> generates a list of HTML checkboxes.</p>
3360<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3361<span class="normal">2</span>
c708394c 3362<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">htmlCheckboxes</span> <span class="na">name</span><span class="o">=</span><span class="na">foo</span> <span class="na">options</span><span class="o">=</span><span class="nv">$fooOptions</span> <span class="na">selected</span><span class="o">=</span><span class="nv">$currentFoo</span><span class="cp">}</span>
9aa5da67 3363
c708394c 3364<span class="cp">{</span><span class="nf">htmlCheckboxes</span> <span class="na">name</span><span class="o">=</span><span class="na">bar</span> <span class="na">output</span><span class="o">=</span><span class="nv">$barLabels</span> <span class="na">values</span><span class="o">=</span><span class="nv">$barValues</span> <span class="na">selected</span><span class="o">=</span><span class="nv">$currentBar</span><span class="cp">}</span>
9aa5da67
WG
3365</code></pre></div></td></tr></table></div>
3366<table>
3367<thead>
3368<tr>
3369<th>Attribute</th>
3370<th>Description</th>
3371</tr>
3372</thead>
3373<tbody>
3374<tr>
57bba3cc 3375<td><code>disabled</code></td>
9aa5da67
WG
3376<td>if <code>true</code>, all checkboxes are disabled</td>
3377</tr>
3378<tr>
3379<td><code>disableEncoding</code></td>
3380<td>if <code>true</code>, the values are not passed through <code>wcf\util\StringUtil::encodeHTML()</code>; <code>false</code> by default</td>
3381</tr>
3382<tr>
3383<td><code>name</code></td>
3384<td><code>name</code> attribute of the <code>input</code> checkbox element</td>
3385</tr>
3386<tr>
3387<td><code>output</code></td>
3388<td>array used as keys and values for <code>options</code> if present; not present by default</td>
3389</tr>
3390<tr>
3391<td><code>options</code></td>
3392<td>array selectable options with the key used as <code>value</code> attribute and the value as the checkbox label</td>
3393</tr>
3394<tr>
3395<td><code>selected</code></td>
3396<td>current selected value(s)</td>
3397</tr>
3398<tr>
3399<td><code>separator</code></td>
3400<td>separator between the different checkboxes in the generated output; empty string by default</td>
3401</tr>
3402<tr>
3403<td><code>values</code></td>
3404<td>array with values used in combination with <code>output</code>, where <code>output</code> is only used as keys for <code>options</code></td>
3405</tr>
3406</tbody>
3407</table>
db9f8960 3408<h2 id="htmloptions"><code>{htmlOptions}</code><a class="headerlink" href="#htmloptions" title="Permanent link">#</a></h2>
9aa5da67
WG
3409<p><code>htmlOptions</code> generates an <code>select</code> HTML element.</p>
3410<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3411<span class="normal">2</span>
3412<span class="normal">3</span>
3413<span class="normal">4</span>
3414<span class="normal">5</span>
c708394c 3415<span class="normal">6</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">htmlOptions</span> <span class="na">name</span><span class="o">=</span><span class="s1">&#39;foo&#39;</span> <span class="na">options</span><span class="o">=</span><span class="nv">$options</span> <span class="na">selected</span><span class="o">=</span><span class="nv">$selected</span><span class="cp">}</span>
9aa5da67
WG
3416
3417<span class="x">&lt;select name=&quot;bar&quot;&gt;</span>
3418<span class="x"> &lt;option value=&quot;&quot;</span><span class="cp">{</span><span class="nf">if</span> <span class="o">!</span><span class="nv">$selected</span><span class="cp">}</span><span class="x"> selected</span><span class="cp">{</span><span class="nf">/if</span><span class="cp">}</span><span class="x">&gt;</span><span class="cp">{</span><span class="nf">lang</span><span class="cp">}</span><span class="x">foo.bar.default</span><span class="cp">{</span><span class="nf">/lang</span><span class="cp">}</span><span class="x">&lt;/option&gt;</span>
c708394c 3419<span class="x"> </span><span class="cp">{</span><span class="nf">htmlOptions</span> <span class="na">options</span><span class="o">=</span><span class="nv">$options</span> <span class="na">selected</span><span class="o">=</span><span class="nv">$selected</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* no `name` attribute *</span><span class="cp">}</span>
9aa5da67
WG
3420<span class="x">&lt;/select&gt;</span>
3421</code></pre></div></td></tr></table></div>
3422<table>
3423<thead>
3424<tr>
3425<th>Attribute</th>
3426<th>Description</th>
3427</tr>
3428</thead>
3429<tbody>
3430<tr>
3431<td><code>disableEncoding</code></td>
3432<td>if <code>true</code>, the values are not passed through <code>wcf\util\StringUtil::encodeHTML()</code>; <code>false</code> by default</td>
3433</tr>
3434<tr>
3435<td><code>object</code></td>
3436<td>optional instance of <code>wcf\data\DatabaseObjectList</code> that provides the selectable options (overwrites <code>options</code> attribute internally)</td>
3437</tr>
3438<tr>
3439<td><code>name</code></td>
3440<td><code>name</code> attribute of the <code>select</code> element; if not present, only the <strong>contents</strong> of the <code>select</code> element are printed</td>
3441</tr>
3442<tr>
3443<td><code>output</code></td>
3444<td>array used as keys and values for <code>options</code> if present; not present by default</td>
3445</tr>
3446<tr>
3447<td><code>values</code></td>
3448<td>array with values used in combination with <code>output</code>, where <code>output</code> is only used as keys for <code>options</code></td>
3449</tr>
3450<tr>
3451<td><code>options</code></td>
3452<td>array selectable options with the key used as <code>value</code> attribute and the value as the option label; if a value is an array, an <code>optgroup</code> is generated with the array key as the <code>optgroup</code> label</td>
3453</tr>
3454<tr>
3455<td><code>selected</code></td>
3456<td>current selected value(s)</td>
3457</tr>
3458</tbody>
3459</table>
3460<p>All additional attributes are added as attributes of the <code>select</code> HTML element.</p>
ef66f102
WG
3461<h2 id="icon"><code>{icon}</code><a class="headerlink" href="#icon" title="Permanent link">#</a></h2>
3462<p><code>{icon}</code> renders a “Font Awesome” icon with support for brand icons.</p>
3463<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3464<span class="normal">2</span>
3465<span class="normal">3</span>
3466<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">icon</span> <span class="na">name</span><span class="o">=</span><span class="s1">&#39;magnifying-glass&#39;</span><span class="cp">}</span>
3467<span class="cp">{</span><span class="nf">icon</span> <span class="na">size</span><span class="o">=</span><span class="m">24</span> <span class="na">name</span><span class="o">=</span><span class="s1">&#39;github&#39;</span> <span class="na">type</span><span class="o">=</span><span class="s1">&#39;brand&#39;</span><span class="cp">}</span>
3468<span class="cp">{</span><span class="nf">icon</span> <span class="na">size</span><span class="o">=</span><span class="m">32</span> <span class="na">name</span><span class="o">=</span><span class="s1">&#39;user&#39;</span> <span class="na">type</span><span class="o">=</span><span class="s1">&#39;solid&#39;</span><span class="cp">}</span>
3469<span class="cp">{</span><span class="nf">icon</span> <span class="na">size</span><span class="o">=</span><span class="m">64</span> <span class="na">name</span><span class="o">=</span><span class="s1">&#39;bell&#39;</span><span class="cp">}</span>
3470</code></pre></div></td></tr></table></div>
3471<table>
3472<thead>
3473<tr>
3474<th>Attribute</th>
3475<th>Description</th>
3476</tr>
3477</thead>
3478<tbody>
3479<tr>
3480<td><code>size</code></td>
3481<td>the size of the icon, possible values are <code>16</code>, <code>24</code>, <code>32</code>, <code>48</code>, <code>64</code>, <code>96</code>, <code>128</code> and <code>144</code>; defaults to <code>16</code></td>
3482</tr>
3483<tr>
3484<td><code>type</code></td>
3485<td>requests the least “thick” icon when omitted, the solid variant with <code>'solid'</code> and a brand icon with <code>'brand'</code></td>
3486</tr>
3487</tbody>
3488</table>
db9f8960 3489<h2 id="implode"><code>{implode}</code><a class="headerlink" href="#implode" title="Permanent link">#</a></h2>
9aa5da67 3490<p><code>implodes</code> transforms an array into a string and prints it.</p>
c708394c 3491<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">implode</span> <span class="na">from</span><span class="o">=</span><span class="nv">$array</span> <span class="na">key</span><span class="o">=</span><span class="na">key</span> <span class="na">item</span><span class="o">=</span><span class="na">item</span> <span class="na">glue</span><span class="o">=</span><span class="s2">&quot;;&quot;</span><span class="cp">}{</span><span class="nv">$key</span><span class="cp">}</span><span class="x">: </span><span class="cp">{</span><span class="nv">$value</span><span class="cp">}{</span><span class="nf">/implode</span><span class="cp">}</span>
9aa5da67
WG
3492</code></pre></div></td></tr></table></div>
3493<table>
3494<thead>
3495<tr>
3496<th>Attribute</th>
3497<th>Description</th>
3498</tr>
3499</thead>
3500<tbody>
3501<tr>
3502<td><code>from</code></td>
3503<td>array with the imploded values</td>
3504</tr>
3505<tr>
3506<td><code>glue</code></td>
3507<td>separator between the different array values; <code>', '</code> by default</td>
3508</tr>
3509<tr>
3510<td><code>item</code></td>
3511<td>template variable name where the current array value is stored during the iteration</td>
3512</tr>
3513<tr>
3514<td><code>key</code></td>
3515<td>optional template variable name where the current array key is stored during the iteration</td>
3516</tr>
3517</tbody>
3518</table>
db9f8960 3519<h2 id="js"><code>{js}</code><a class="headerlink" href="#js" title="Permanent link">#</a></h2>
9aa5da67
WG
3520<p><code>js</code> generates script tags based on whether <code>ENABLE_DEBUG_MODE</code> and <code>VISITOR_USE_TINY_BUILD</code> are enabled.</p>
3521<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
3522<span class="normal"> 2</span>
3523<span class="normal"> 3</span>
3524<span class="normal"> 4</span>
3525<span class="normal"> 5</span>
3526<span class="normal"> 6</span>
3527<span class="normal"> 7</span>
3528<span class="normal"> 8</span>
3529<span class="normal"> 9</span>
3530<span class="normal">10</span>
3531<span class="normal">11</span>
3532<span class="normal">12</span>
3533<span class="normal">13</span>
3534<span class="normal">14</span>
3535<span class="normal">15</span>
c708394c 3536<span class="normal">16</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">js</span> <span class="na">application</span><span class="o">=</span><span class="s1">&#39;wbb&#39;</span> <span class="na">file</span><span class="o">=</span><span class="s1">&#39;WBB&#39;</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* generates &#39;http://example.com/js/WBB.js&#39; *</span><span class="cp">}</span>
9aa5da67 3537
c708394c
WG
3538<span class="cp">{</span><span class="nf">js</span> <span class="na">application</span><span class="o">=</span><span class="s1">&#39;wcf&#39;</span> <span class="na">file</span><span class="o">=</span><span class="s1">&#39;WCF.User&#39;</span> <span class="na">bundle</span><span class="o">=</span><span class="s1">&#39;WCF.Combined&#39;</span><span class="cp">}</span>
3539<span class="x"> </span><span class="cp">{</span><span class="c">* generates &#39;http://example.com/wcf/js/WCF.User.js&#39; if ENABLE_DEBUG_MODE=1 *</span><span class="cp">}</span>
3540<span class="x"> </span><span class="cp">{</span><span class="c">* generates &#39;http://example.com/wcf/js/WCF.Combined.min.js&#39; if ENABLE_DEBUG_MODE=0 *</span><span class="cp">}</span>
9aa5da67 3541
c708394c
WG
3542<span class="cp">{</span><span class="nf">js</span> <span class="na">application</span><span class="o">=</span><span class="s1">&#39;wcf&#39;</span> <span class="na">lib</span><span class="o">=</span><span class="s1">&#39;jquery&#39;</span><span class="cp">}</span>
3543<span class="x"> </span><span class="cp">{</span><span class="c">* generates &#39;http://example.com/wcf/js/3rdParty/jquery.js&#39; *</span><span class="cp">}</span>
9aa5da67 3544
c708394c
WG
3545<span class="cp">{</span><span class="nf">js</span> <span class="na">application</span><span class="o">=</span><span class="s1">&#39;wcf&#39;</span> <span class="na">lib</span><span class="o">=</span><span class="s1">&#39;jquery-ui&#39;</span> <span class="na">file</span><span class="o">=</span><span class="s1">&#39;awesomeWidget&#39;</span><span class="cp">}</span>
3546<span class="x"> </span><span class="cp">{</span><span class="c">* generates &#39;http://example.com/wcf/js/3rdParty/jquery-ui/awesomeWidget.js&#39; *</span><span class="cp">}</span>
9aa5da67 3547
c708394c
WG
3548<span class="cp">{</span><span class="nf">js</span> <span class="na">application</span><span class="o">=</span><span class="s1">&#39;wcf&#39;</span> <span class="na">file</span><span class="o">=</span><span class="s1">&#39;WCF.User&#39;</span> <span class="na">bundle</span><span class="o">=</span><span class="s1">&#39;WCF.Combined&#39;</span> <span class="na">hasTiny</span><span class="o">=</span><span class="kc">true</span><span class="cp">}</span>
3549<span class="x"> </span><span class="cp">{</span><span class="c">* generates &#39;http://example.com/wcf/js/WCF.User.js&#39; if ENABLE_DEBUG_MODE=1 *</span><span class="cp">}</span>
3550<span class="x"> </span><span class="cp">{</span><span class="c">* generates &#39;http://example.com/wcf/js/WCF.Combined.min.js&#39; (ENABLE_DEBUG_MODE=0 *</span><span class="cp">}</span>
3551<span class="x"> </span><span class="cp">{</span><span class="c">* generates &#39;http://example.com/wcf/js/WCF.Combined.tiny.min.js&#39; if ENABLE_DEBUG_MODE=0 and VISITOR_USE_TINY_BUILD=1 *</span><span class="cp">}</span>
9aa5da67 3552</code></pre></div></td></tr></table></div>
db9f8960 3553<h2 id="jslang"><code>{jslang}</code><a class="headerlink" href="#jslang" title="Permanent link">#</a></h2>
9aa5da67
WG
3554<p><code>jslang</code> works like <a href="#lang"><code>lang</code></a> with the difference that the resulting string is automatically passed through <a href="#encodejs"><code>encodeJS</code></a>.</p>
3555<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3556<span class="normal">2</span>
3557<span class="normal">3</span>
3558<span class="normal">4</span>
3559<span class="normal">5</span>
3560<span class="normal">6</span>
3561<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="x">require([&#39;Language&#39;, /* … */], function(Language, /* … */) </span><span class="cp">{</span>
3562 <span class="na">Language</span><span class="o">.</span><span class="na">addObject</span><span class="o">(</span><span class="cp">{</span>
3563 <span class="s1">&#39;app.foo.bar&#39;</span><span class="o">:</span> <span class="s1">&#39;{jslang}app.foo.bar{/jslang}&#39;</span><span class="o">,</span>
3564 <span class="cp">}</span><span class="o">);</span>
3565
3566 <span class="o">//</span> <span class="err">…</span>
3567<span class="cp">}</span><span class="x">);</span>
3568</code></pre></div></td></tr></table></div>
71ef52e2
WG
3569<h2 id="60-jsphrase"><span class="label label-info">6.0+</span> <code>{jsphrase}</code><a class="headerlink" href="#60-jsphrase" title="Permanent link">#</a></h2>
3570<p><code>jsphrase</code> generates the necessary JavaScript code to register a phrase in the JavaScript language store.
3571This plugin only supports static phrase names.
3572If a dynamic phrase should be registered, the <a href="#jslang"><code>jslang</code></a> plugin needs to be used.</p>
3573<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3574<span class="normal">2</span>
3575<span class="normal">3</span>
3576<span class="normal">4</span>
3577<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="x">&lt;script data-relocate=&quot;true&quot;&gt;</span>
3578<span class="cp">{</span><span class="nf">jsphrase</span> <span class="na">name</span><span class="o">=</span><span class="s1">&#39;app.foo.bar&#39;</span><span class="cp">}</span>
3579
3580<span class="x">// …</span>
3581<span class="x">&lt;/script&gt;</span>
3582</code></pre></div></td></tr></table></div>
db9f8960 3583<h2 id="lang"><code>{lang}</code><a class="headerlink" href="#lang" title="Permanent link">#</a></h2>
9aa5da67
WG
3584<p><code>lang</code> replaces a language items with its value.</p>
3585<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3586<span class="normal">2</span>
3587<span class="normal">3</span>
3588<span class="normal">4</span>
3589<span class="normal">5</span>
3590<span class="normal">6</span>
c708394c 3591<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">lang</span><span class="cp">}</span><span class="x">foo.bar.baz</span><span class="cp">{</span><span class="nf">/lang</span><span class="cp">}</span>
9aa5da67 3592
c708394c 3593<span class="cp">{</span><span class="nf">lang</span> <span class="na">__literal</span><span class="o">=</span><span class="kc">true</span><span class="cp">}</span><span class="x">foo.bar.baz</span><span class="cp">{</span><span class="nf">/lang</span><span class="cp">}</span>
9aa5da67 3594
c708394c 3595<span class="cp">{</span><span class="nf">lang</span> <span class="na">foo</span><span class="o">=</span><span class="s1">&#39;baz&#39;</span><span class="cp">}</span><span class="x">foo.bar.baz</span><span class="cp">{</span><span class="nf">/lang</span><span class="cp">}</span>
9aa5da67 3596
c708394c 3597<span class="cp">{</span><span class="nf">lang</span><span class="cp">}</span><span class="x">foo.bar.baz.</span><span class="cp">{</span><span class="nv">$action</span><span class="cp">}{</span><span class="nf">/lang</span><span class="cp">}</span>
9aa5da67
WG
3598</code></pre></div></td></tr></table></div>
3599<table>
3600<thead>
3601<tr>
3602<th>Attribute</th>
3603<th>Description</th>
3604</tr>
3605</thead>
3606<tbody>
3607<tr>
3608<td><code>__encode</code></td>
3609<td>if <code>true</code>, the output will be passed through <code>StringUtil::encodeHTML()</code></td>
3610</tr>
3611<tr>
3612<td><code>__literal</code></td>
3613<td>if <code>true</code>, template variables will not resolved but printed as they are in the language item; <code>false</code> by default</td>
3614</tr>
3615<tr>
3616<td><code>__optional</code></td>
3617<td>if <code>true</code> and the language item does not exist, an empty string is printed; <code>false</code> by default</td>
3618</tr>
3619</tbody>
3620</table>
3621<p>All additional attributes are available when parsing the language item.</p>
db9f8960 3622<h2 id="link"><code>{link}</code><a class="headerlink" href="#link" title="Permanent link">#</a></h2>
9aa5da67
WG
3623<p><code>link</code> generates internal links using <code>LinkHandler</code>.</p>
3624<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="x">&lt;a href=&quot;</span><span class="cp">{</span><span class="nf">link</span> <span class="na">controller</span><span class="o">=</span><span class="s1">&#39;FooList&#39;</span> <span class="na">application</span><span class="o">=</span><span class="s1">&#39;bar&#39;</span><span class="cp">}</span><span class="x">param1=2&amp;param2=A</span><span class="cp">{</span><span class="nf">/link</span><span class="cp">}</span><span class="x">&quot;&gt;Foo&lt;/a&gt;</span>
3625</code></pre></div></td></tr></table></div>
3626<table>
3627<thead>
3628<tr>
3629<th>Attribute</th>
3630<th>Description</th>
3631</tr>
3632</thead>
3633<tbody>
3634<tr>
3635<td><code>application</code></td>
3636<td>abbreviation of the application the controller belongs to; <code>wcf</code> by default</td>
3637</tr>
3638<tr>
3639<td><code>controller</code></td>
3640<td>name of the controller; if not present, the landing page is linked in the frontend and the index page in the ACP</td>
3641</tr>
3642<tr>
3643<td><code>encode</code></td>
3644<td>if <code>true</code>, the generated link is passed through <code>wcf\util\StringUtil::encodeHTML()</code>; <code>true</code> by default</td>
3645</tr>
3646<tr>
3647<td><code>isEmail</code></td>
3648<td>sets <code>encode=false</code> and forces links to link to the frontend</td>
3649</tr>
3650</tbody>
3651</table>
3652<p>Additional attributes are passed to <code>LinkHandler::getLink()</code>.</p>
9aa5da67
WG
3653<h2 id="54-objectaction"><span class="label label-info">5.4+</span> <code>objectAction</code><a class="headerlink" href="#54-objectaction" title="Permanent link">#</a></h2>
3654<p><code>objectAction</code> generates action buttons to be used in combination with the <a href="../../migration/wsc53/javascript/#wcfactiondelete-and-wcfactiontoggle"><code>WoltLabSuite/Core/Ui/Object/Action</code> API</a>.
3655For detailed information on its usage, we refer to the extensive documentation in the <a href="https://github.com/WoltLab/WCF/blob/master/wcfsetup/install/files/lib/system/template/plugin/ObjectActionFunctionTemplatePlugin.class.php"><code>ObjectActionFunctionTemplatePlugin</code> class</a> itself.</p>
db9f8960 3656<h2 id="page"><code>{page}</code><a class="headerlink" href="#page" title="Permanent link">#</a></h2>
9aa5da67
WG
3657<p><code>page</code> generates an internal link to a CMS page.</p>
3658<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3659<span class="normal">2</span>
3660<span class="normal">3</span>
3661<span class="normal">4</span>
3662<span class="normal">5</span>
3663<span class="normal">6</span>
c708394c 3664<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">page</span><span class="cp">}</span><span class="x">com.woltlab.wcf.CookiePolicy</span><span class="cp">{</span><span class="nf">/page</span><span class="cp">}</span>
9aa5da67 3665
c708394c 3666<span class="cp">{</span><span class="nf">page</span> <span class="na">pageID</span><span class="o">=</span><span class="m">1</span><span class="cp">}{</span><span class="nf">/page</span><span class="cp">}</span>
9aa5da67 3667
c708394c 3668<span class="cp">{</span><span class="nf">page</span> <span class="na">language</span><span class="o">=</span><span class="s1">&#39;de&#39;</span><span class="cp">}</span><span class="x">com.woltlab.wcf.CookiePolicy</span><span class="cp">{</span><span class="nf">/page</span><span class="cp">}</span>
9aa5da67 3669
c708394c 3670<span class="cp">{</span><span class="nf">page</span> <span class="na">languageID</span><span class="o">=</span><span class="m">2</span><span class="cp">}</span><span class="x">com.woltlab.wcf.CookiePolicy</span><span class="cp">{</span><span class="nf">/page</span><span class="cp">}</span>
9aa5da67
WG
3671</code></pre></div></td></tr></table></div>
3672<table>
3673<thead>
3674<tr>
3675<th>Attribute</th>
3676<th>Description</th>
3677</tr>
3678</thead>
3679<tbody>
3680<tr>
3681<td><code>pageID</code></td>
3682<td>unique id of the page (cannot be used together with a page identifier as value)</td>
3683</tr>
3684<tr>
3685<td><code>languageID</code></td>
3686<td>id of the page language (cannot be used together with <code>language</code>)</td>
3687</tr>
3688<tr>
3689<td><code>language</code></td>
3690<td>language code of the page language (cannot be used together with <code>languageID</code>)</td>
3691</tr>
3692</tbody>
3693</table>
db9f8960
WG
3694<h2 id="pages"><code>{pages}</code><a class="headerlink" href="#pages" title="Permanent link">#</a></h2>
3695<div class="admonition info">
3696<p class="admonition-title">This template plugin has been deprecated in WoltLab Suite 6.0.</p>
3697</div>
9aa5da67
WG
3698<p><code>pages</code> generates a pagination.</p>
3699<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3700<span class="normal">2</span>
c708394c 3701<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">pages</span> <span class="na">controller</span><span class="o">=</span><span class="s1">&#39;FooList&#39;</span> <span class="na">link</span><span class="o">=</span><span class="s2">&quot;pageNo=%d&quot;</span> <span class="na">print</span><span class="o">=</span><span class="kc">true</span> <span class="na">assign</span><span class="o">=</span><span class="na">pagesLinks</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* prints pagination *</span><span class="cp">}</span>
9aa5da67 3702
c708394c 3703<span class="cp">{</span><span class="o">@</span><span class="nv">$pagesLinks</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* prints same pagination again *</span><span class="cp">}</span>
9aa5da67
WG
3704</code></pre></div></td></tr></table></div>
3705<table>
3706<thead>
3707<tr>
3708<th>Attribute</th>
3709<th>Description</th>
3710</tr>
3711</thead>
3712<tbody>
3713<tr>
3714<td><code>assign</code></td>
3715<td>optional name of the template variable the pagination is assigned to</td>
3716</tr>
3717<tr>
3718<td><code>controller</code></td>
3719<td>controller name of the generated links</td>
3720</tr>
3721<tr>
3722<td><code>link</code></td>
3723<td>additional link parameter where <code>%d</code> will be replaced with the relevant page number</td>
3724</tr>
3725<tr>
3726<td><code>pages</code></td>
3727<td>maximum number of of pages; by default, the template variable <code>$pages</code> is used</td>
3728</tr>
3729<tr>
3730<td><code>print</code></td>
3731<td>if <code>false</code> and <code>assign=true</code>, the pagination is not printed</td>
3732</tr>
3733<tr>
3734<td><code>application</code>, <code>id</code>, <code>object</code>, <code>title</code></td>
3735<td>additional parameters passed to <code>LinkHandler::getLink()</code> to generate page links</td>
3736</tr>
3737</tbody>
3738</table>
db9f8960 3739<h2 id="plural"><code>{plural}</code><a class="headerlink" href="#plural" title="Permanent link">#</a></h2>
9aa5da67
WG
3740<p><code>plural</code> allows to easily select the correct plural form of a phrase based on a given <code>value</code>.
3741The pluralization logic follows the <a href="https://unicode-org.github.io/cldr-staging/charts/37/supplemental/language_plural_rules.md">Unicode Language Plural Rules</a> for cardinal numbers.</p>
3742<p>The <code>#</code> placeholder within the resulting phrase is replaced by the <code>value</code>.
3743It is automatically formatted using <code>StringUtil::formatNumeric</code>.</p>
3744<p>English:</p>
3745<p>Note the use of <code>1</code> if the number (<code>#</code>) is not used within the phrase and the use of <code>one</code> otherwise.
3746They are equivalent for English, but following this rule generalizes better to other languages, helping the translator.
3747<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3748<span class="normal">2</span>
3749<span class="normal">3</span>
c708394c 3750<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">assign</span> <span class="na">var</span><span class="o">=</span><span class="na">numberOfWorlds</span> <span class="na">value</span><span class="o">=</span><span class="m">2</span><span class="cp">}</span>
9aa5da67
WG
3751<span class="x">&lt;h1&gt;Hello </span><span class="cp">{</span><span class="nf">plural</span> <span class="na">value</span><span class="o">=</span><span class="nv">$numberOfWorlds</span> <span class="m">1</span><span class="o">=</span><span class="s1">&#39;World&#39;</span> <span class="na">other</span><span class="o">=</span><span class="s1">&#39;Worlds&#39;</span><span class="cp">}</span><span class="x">!&lt;/h1&gt;</span>
3752<span class="x">&lt;p&gt;There </span><span class="cp">{</span><span class="nf">plural</span> <span class="na">value</span><span class="o">=</span><span class="nv">$numberOfWorlds</span> <span class="m">1</span><span class="o">=</span><span class="s1">&#39;is one world&#39;</span> <span class="na">other</span><span class="o">=</span><span class="s1">&#39;are # worlds&#39;</span><span class="cp">}</span><span class="x">!&lt;/p&gt;</span>
3753<span class="x">&lt;p&gt;There </span><span class="cp">{</span><span class="nf">plural</span> <span class="na">value</span><span class="o">=</span><span class="nv">$numberOfWorlds</span> <span class="na">one</span><span class="o">=</span><span class="s1">&#39;is # world&#39;</span> <span class="na">other</span><span class="o">=</span><span class="s1">&#39;are # worlds&#39;</span><span class="cp">}</span><span class="x">!&lt;/p&gt;</span>
3754</code></pre></div></td></tr></table></div></p>
3755<p>German:
3756<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3757<span class="normal">2</span>
3758<span class="normal">3</span>
c708394c 3759<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">assign</span> <span class="na">var</span><span class="o">=</span><span class="na">numberOfWorlds</span> <span class="na">value</span><span class="o">=</span><span class="m">2</span><span class="cp">}</span>
9aa5da67
WG
3760<span class="x">&lt;h1&gt;Hallo </span><span class="cp">{</span><span class="nf">plural</span> <span class="na">value</span><span class="o">=</span><span class="nv">$numberOfWorlds</span> <span class="m">1</span><span class="o">=</span><span class="s1">&#39;Welt&#39;</span> <span class="na">other</span><span class="o">=</span><span class="s1">&#39;Welten&#39;</span><span class="cp">}</span><span class="x">!&lt;/h1&gt;</span>
3761<span class="x">&lt;p&gt;Es gibt </span><span class="cp">{</span><span class="nf">plural</span> <span class="na">value</span><span class="o">=</span><span class="nv">$numberOfWorlds</span> <span class="m">1</span><span class="o">=</span><span class="s1">&#39;eine Welt&#39;</span> <span class="na">other</span><span class="o">=</span><span class="s1">&#39;# Welten&#39;</span><span class="cp">}</span><span class="x">!&lt;/p&gt;</span>
3762<span class="x">&lt;p&gt;Es gibt </span><span class="cp">{</span><span class="nf">plural</span> <span class="na">value</span><span class="o">=</span><span class="nv">$numberOfWorlds</span> <span class="na">one</span><span class="o">=</span><span class="s1">&#39;# Welt&#39;</span> <span class="na">other</span><span class="o">=</span><span class="s1">&#39;# Welten&#39;</span><span class="cp">}</span><span class="x">!&lt;/p&gt;</span>
3763</code></pre></div></td></tr></table></div></p>
3764<p>Romanian:</p>
3765<p>Note the additional use of <code>few</code> which is not required in English or German.
3766<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3767<span class="normal">2</span>
3768<span class="normal">3</span>
c708394c 3769<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">assign</span> <span class="na">var</span><span class="o">=</span><span class="na">numberOfWorlds</span> <span class="na">value</span><span class="o">=</span><span class="m">2</span><span class="cp">}</span>
9aa5da67
WG
3770<span class="x">&lt;h1&gt;Salut </span><span class="cp">{</span><span class="nf">plural</span> <span class="na">value</span><span class="o">=</span><span class="nv">$numberOfWorlds</span> <span class="m">1</span><span class="o">=</span><span class="s1">&#39;lume&#39;</span> <span class="na">other</span><span class="o">=</span><span class="s1">&#39;lumi&#39;</span><span class="cp">}</span><span class="x">!&lt;/h1&gt;</span>
3771<span class="x">&lt;p&gt;Există </span><span class="cp">{</span><span class="nf">plural</span> <span class="na">value</span><span class="o">=</span><span class="nv">$numberOfWorlds</span> <span class="m">1</span><span class="o">=</span><span class="s1">&#39;o lume&#39;</span> <span class="na">few</span><span class="o">=</span><span class="s1">&#39;# lumi&#39;</span> <span class="na">other</span><span class="o">=</span><span class="s1">&#39;# de lumi&#39;</span><span class="cp">}</span><span class="x">!&lt;/p&gt;</span>
3772<span class="x">&lt;p&gt;Există </span><span class="cp">{</span><span class="nf">plural</span> <span class="na">value</span><span class="o">=</span><span class="nv">$numberOfWorlds</span> <span class="na">one</span><span class="o">=</span><span class="s1">&#39;# lume&#39;</span> <span class="na">few</span><span class="o">=</span><span class="s1">&#39;# lumi&#39;</span> <span class="na">other</span><span class="o">=</span><span class="s1">&#39;# de lumi&#39;</span><span class="cp">}</span><span class="x">!&lt;/p&gt;</span>
3773</code></pre></div></td></tr></table></div></p>
3774<p>Russian:</p>
3775<p>Note the difference between <code>1</code> (exactly <code>1</code>) and <code>one</code> (ending in <code>1</code>, except ending in <code>11</code>).
3776<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3777<span class="normal">2</span>
c708394c 3778<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">assign</span> <span class="na">var</span><span class="o">=</span><span class="na">numberOfWorlds</span> <span class="na">value</span><span class="o">=</span><span class="m">2</span><span class="cp">}</span>
9aa5da67
WG
3779<span class="x">&lt;h1&gt;Привет </span><span class="cp">{</span><span class="nf">plural</span> <span class="na">value</span><span class="o">=</span><span class="nv">$numberOfWorld</span> <span class="m">1</span><span class="o">=</span><span class="s1">&#39;мир&#39;</span> <span class="na">other</span><span class="o">=</span><span class="s1">&#39;миры&#39;</span><span class="cp">}</span><span class="x">!&lt;/h1&gt;</span>
3780<span class="x">&lt;p&gt;Есть </span><span class="cp">{</span><span class="nf">plural</span> <span class="na">value</span><span class="o">=</span><span class="nv">$numberOfWorlds</span> <span class="m">1</span><span class="o">=</span><span class="s1">&#39;мир&#39;</span> <span class="na">one</span><span class="o">=</span><span class="s1">&#39;# мир&#39;</span> <span class="na">few</span><span class="o">=</span><span class="s1">&#39;# мира&#39;</span> <span class="na">many</span><span class="o">=</span><span class="s1">&#39;# миров&#39;</span> <span class="na">other</span><span class="o">=</span><span class="s1">&#39;# миров&#39;</span><span class="cp">}</span><span class="x">!&lt;/p&gt;</span>
3781</code></pre></div></td></tr></table></div></p>
3782<table>
3783<thead>
3784<tr>
3785<th>Attribute</th>
3786<th>Description</th>
3787</tr>
3788</thead>
3789<tbody>
3790<tr>
3791<td>value</td>
3792<td>The value that is used to select the proper phrase.</td>
3793</tr>
3794<tr>
3795<td>other</td>
3796<td>The phrase that is used when no other selector matches.</td>
3797</tr>
3798<tr>
3799<td>Any Category Name</td>
3800<td>The phrase that is used when <code>value</code> belongs to the named category. Available categories depend on the language.</td>
3801</tr>
3802<tr>
3803<td>Any Integer</td>
3804<td>The phrase that is used when <code>value</code> is that exact integer.</td>
3805</tr>
3806</tbody>
3807</table>
db9f8960 3808<h2 id="prepend"><code>{prepend}</code><a class="headerlink" href="#prepend" title="Permanent link">#</a></h2>
9aa5da67
WG
3809<p>If a string should be prepended to the value of a variable, <code>prepend</code> can be used:</p>
3810<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3811<span class="normal">2</span>
3812<span class="normal">3</span>
3813<span class="normal">4</span>
3814<span class="normal">5</span>
3815<span class="normal">6</span>
c708394c 3816<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">assign</span> <span class="na">var</span><span class="o">=</span><span class="na">templateVariable</span> <span class="na">value</span><span class="o">=</span><span class="s1">&#39;newValue&#39;</span><span class="cp">}</span>
9aa5da67 3817
c708394c 3818<span class="cp">{</span><span class="nv">$templateVariable</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* prints &#39;newValue *</span><span class="cp">}</span>
9aa5da67 3819
c708394c 3820<span class="cp">{</span><span class="nf">prepend</span> <span class="na">var</span><span class="o">=</span><span class="na">templateVariable</span> <span class="na">value</span><span class="o">=</span><span class="s1">&#39;2&#39;</span><span class="cp">}</span>
9aa5da67 3821
c708394c 3822<span class="cp">{</span><span class="nv">$templateVariable</span><span class="cp">}</span><span class="x"> </span><span class="cp">{</span><span class="c">* now prints &#39;2newValue&#39; *</span><span class="cp">}</span>
9aa5da67
WG
3823</code></pre></div></td></tr></table></div>
3824<p>If the variables does not exist yet, <code>prepend</code> creates a new one with the given value.
3825If <code>prepend</code> is used on an array as the variable, the value is prepended to all elements of the array.</p>
da248f39
WG
3826<h2 id="time"><code>{time}</code><a class="headerlink" href="#time" title="Permanent link">#</a></h2>
3827<p><code>time</code> allows to output times in different (human readable) formats.
3828Acceptables inputs are either a <code>\DateTimeInterface</code> or an integer representing a Unix timestamp.</p>
3829<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
3830<span class="normal">2</span>
3831<span class="normal">3</span>
175805a9
WG
3832<span class="normal">4</span>
3833<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">time</span> <span class="na">time</span><span class="o">=</span><span class="nv">$time</span><span class="cp">}</span>
da248f39
WG
3834<span class="cp">{</span><span class="nf">time</span> <span class="na">time</span><span class="o">=</span><span class="nv">$time</span> <span class="na">type</span><span class="o">=</span><span class="s1">&#39;plainTime&#39;</span><span class="cp">}</span>
3835<span class="cp">{</span><span class="nf">time</span> <span class="na">time</span><span class="o">=</span><span class="nv">$time</span> <span class="na">type</span><span class="o">=</span><span class="s1">&#39;plainDate&#39;</span><span class="cp">}</span>
175805a9 3836<span class="cp">{</span><span class="nf">time</span> <span class="na">time</span><span class="o">=</span><span class="nv">$time</span> <span class="na">type</span><span class="o">=</span><span class="s1">&#39;machine&#39;</span><span class="cp">}</span>
da248f39
WG
3837<span class="cp">{</span><span class="nf">time</span> <span class="na">time</span><span class="o">=</span><span class="nv">$time</span> <span class="na">type</span><span class="o">=</span><span class="s1">&#39;custom&#39;</span> <span class="na">format</span><span class="o">=</span><span class="s1">&#39;Y-m-d&#39;</span><span class="cp">}</span>
3838</code></pre></div></td></tr></table></div>
3839<table>
3840<thead>
3841<tr>
3842<th>Attribute</th>
3843<th>Description</th>
3844</tr>
3845</thead>
3846<tbody>
3847<tr>
3848<td>time</td>
3849<td>The <code>\DateTimeInterface</code> or Unix timestamp to format.</td>
3850</tr>
3851<tr>
3852<td>type</td>
3853<td>The output format.</td>
3854</tr>
3855</tbody>
3856</table>
3857<table>
3858<thead>
3859<tr>
3860<th>Type</th>
3861<th>Description</th>
3862</tr>
3863</thead>
3864<tbody>
3865<tr>
3866<td>–</td>
3867<td>An interactive <code>&lt;woltlab-core-date-time&gt;</code> element that renders as dynamically updated relative times.</td>
3868</tr>
3869<tr>
3870<td>plainTime</td>
3871<td>Date with time in the user’s locale and timezone as a plain string.</td>
3872</tr>
3873<tr>
3874<td>plainDate</td>
3875<td>Date without time in the user’s locale and timezone as a plain string.</td>
3876</tr>
3877<tr>
175805a9
WG
3878<td>machine</td>
3879<td>A machine readable string in ISO-8601 format.</td>
3880</tr>
3881<tr>
da248f39
WG
3882<td>custom</td>
3883<td>A custom format that is passed to <code>\DateTimeInterface::format()</code>. The timezone will be the user’s timezone.</td>
3884</tr>
3885</tbody>
3886</table>
db9f8960 3887<h2 id="user"><code>{user}</code><a class="headerlink" href="#user" title="Permanent link">#</a></h2>
9aa5da67
WG
3888<p><code>user</code> generates links to user profiles.
3889The mandatory <code>object</code> parameter requires an instances of <code>UserProfile</code>.
3890The optional <code>type</code> parameter is responsible for what the generated link contains:</p>
3891<ul>
3892<li><code>type='default'</code> (also applies if no <code>type</code> is given) outputs the formatted username relying on the “User Marking” setting of the relevant user group.
3893 Additionally, the user popover card will be shown when hovering over the generated link.</li>
3894<li><code>type='plain'</code> outputs the username without additional formatting.</li>
3895<li><code>type='avatar(\d+)'</code> outputs the user’s avatar in the specified size, i.e., <code>avatar48</code> outputs the avatar with a width and height of 48 pixels.</li>
3896</ul>
3897<p>The last special attribute is <code>append</code> whose contents are appended to the <code>href</code> attribute of the generated anchor element.</p>
3898<p>All of the other attributes matching <code>~^[a-z]+([A-z]+)+$~</code>, except for <code>href</code> which may not be added, are added as attributes to the anchor element.</p>
3899<p>Examples:</p>
c708394c 3900<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">user</span> <span class="na">object</span><span class="o">=</span><span class="nv">$user</span><span class="cp">}</span>
9aa5da67
WG
3901</code></pre></div></td></tr></table></div>
3902<p>generates</p>
3903<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="x">&lt;a href=&quot;</span><span class="cp">{</span><span class="nv">$user</span><span class="o">-&gt;</span><span class="na">getLink</span><span class="o">()</span><span class="cp">}</span><span class="x">&quot; data-object-id=&quot;</span><span class="cp">{</span><span class="nv">$user</span><span class="o">-&gt;</span><span class="na">userID</span><span class="cp">}</span><span class="x">&quot; class=&quot;userLink&quot;&gt;</span><span class="cp">{</span><span class="o">@</span><span class="nv">$user</span><span class="o">-&gt;</span><span class="na">getFormattedUsername</span><span class="o">()</span><span class="cp">}</span><span class="x">&lt;/a&gt;</span>
3904</code></pre></div></td></tr></table></div>
3905<p>and</p>
c708394c 3906<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cp">{</span><span class="nf">user</span> <span class="na">object</span><span class="o">=</span><span class="nv">$user</span> <span class="na">type</span><span class="o">=</span><span class="s1">&#39;avatar48&#39;</span> <span class="na">foo</span><span class="o">=</span><span class="s1">&#39;bar&#39;</span><span class="cp">}</span>
9aa5da67
WG
3907</code></pre></div></td></tr></table></div>
3908<p>generates</p>
3909<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="x">&lt;a href=&quot;</span><span class="cp">{</span><span class="nv">$user</span><span class="o">-&gt;</span><span class="na">getLink</span><span class="o">()</span><span class="cp">}</span><span class="x">&quot; foo=&quot;bar&quot;&gt;</span><span class="cp">{</span><span class="o">@</span><span class="nv">$object</span><span class="o">-&gt;</span><span class="na">getAvatar</span><span class="o">()-&gt;</span><span class="na">getImageTag</span><span class="o">(</span><span class="m">48</span><span class="o">)</span><span class="cp">}</span><span class="x">&lt;/a&gt;</span>
3910</code></pre></div></td></tr></table></div>
3911
3912 <hr>
3913<div class="md-source-file">
3914 <small>
3915
3916 Last update:
3c22ac76 3917 2023-06-09
9aa5da67
WG
3918
3919 </small>
3920</div>
3921
a06fd3b1
WG
3922
3923
3924
7f9945cf
WG
3925
3926
3927 </article>
3928 </div>
3929
3930
9aa5da67
WG
3931 </div>
3932
3933 </main>
3934
3935 <footer class="md-footer">
3936
9aa5da67
WG
3937 <div class="md-footer-meta md-typeset">
3938 <div class="md-footer-meta__inner md-grid">
3939 <div class="md-copyright">
3940
3941 <div class="md-copyright__highlight">
3942 Copyright © 2020 WoltLab GmbH
3943 </div>
3944
3945
3946 Made with
3947 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
3948 Material for MkDocs
3949 </a>
3950
3951</div>
3952
3953 <div class="md-copyright">
3954 <a href="https://www.woltlab.com/legal-notice/">Legal Notice</a>
3955 <a href="https://www.woltlab.com/privacy-policy/">Privacy Policy</a>
3956</div>
3957
3958 </div>
3959 </div>
3960</footer>
3961
3962 </div>
3963 <div class="md-dialog" data-md-component="dialog">
3964 <div class="md-dialog__inner md-typeset"></div>
3965 </div>
a06fd3b1 3966
6f2e8f13 3967 <script id="__config" type="application/json">{"base": "../..", "features": ["navigation.tracking"], "search": "../../assets/javascripts/workers/search.208ed371.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>
9aa5da67
WG
3968
3969
ea01e590 3970 <script src="../../assets/javascripts/bundle.b4d07000.min.js"></script>
9aa5da67
WG
3971
3972
3973 </body>
3974</html>