329e21a10a0ca449f58df7234231fa3c5bc26643
[GitHub/WoltLab/woltlab.github.io.git] / latest / javascript / new-api_core / index.html
1
2 <!doctype html>
3 <html lang="en" class="no-js">
4 <head>
5
6 <meta charset="utf-8">
7 <meta name="viewport" content="width=device-width,initial-scale=1">
8
9
10
11
12 <link rel="shortcut icon" href="../../assets/default.favicon.ico">
13 <meta name="generator" content="mkdocs-1.1.2, mkdocs-material-7.0.5">
14
15
16
17 <title>Core Functions - WoltLab Suite Documentation</title>
18
19
20
21 <link rel="stylesheet" href="../../assets/stylesheets/main.77f3fd56.min.css">
22
23
24 <link rel="stylesheet" href="../../assets/stylesheets/palette.7fa14f5b.min.css">
25
26
27
28 <meta name="theme-color" content="#009485">
29
30
31
32
33
34
35
36
37
38 <link rel="stylesheet" href="../../stylesheets/extra.css">
39
40
41
42
43
44 </head>
45
46
47
48
49
50
51
52 <body dir="ltr" data-md-color-scheme="" data-md-color-primary="teal" data-md-color-accent="">
53
54
55
56 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
57 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
58 <label class="md-overlay" for="__drawer"></label>
59 <div data-md-component="skip">
60
61
62 <a href="#core-modules-and-functions-javascript-api" class="md-skip">
63 Skip to content
64 </a>
65
66 </div>
67 <div data-md-component="announce">
68
69 <aside class="md-announce">
70 <div class="md-announce__inner md-grid md-typeset">
71
72 <a href="https://www.woltlab.com">Back to <strong>woltlab.com</strong></a>
73
74 </div>
75 </aside>
76
77 </div>
78
79
80
81 <header class="md-header" data-md-component="header">
82 <nav class="md-header__inner md-grid" aria-label="Header">
83 <a href="../.." title="WoltLab Suite Documentation" class="md-header__button md-logo" aria-label="WoltLab Suite Documentation">
84
85 <img src="../../assets/logo.png" alt="logo">
86
87 </a>
88 <label class="md-header__button md-icon" for="__drawer">
89 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
90 </label>
91 <div class="md-header__title" data-md-component="header-title">
92 <div class="md-header__ellipsis">
93 <div class="md-header__topic">
94 <span class="md-ellipsis">
95 WoltLab Suite Documentation
96 </span>
97 </div>
98 <div class="md-header__topic" data-md-component="header-topic">
99 <span class="md-ellipsis">
100
101 Core Functions
102
103 </span>
104 </div>
105 </div>
106 </div>
107 <div class="md-header__options">
108
109 </div>
110
111 <label class="md-header__button md-icon" for="__search">
112 <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>
113 </label>
114
115 <div class="md-search" data-md-component="search" role="dialog">
116 <label class="md-search__overlay" for="__search"></label>
117 <div class="md-search__inner" role="search">
118 <form class="md-search__form" name="search">
119 <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" data-md-state="active" required>
120 <label class="md-search__icon md-icon" for="__search">
121 <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>
122 <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>
123 </label>
124 <button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
125 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41L17.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>
126 </button>
127 </form>
128 <div class="md-search__output">
129 <div class="md-search__scrollwrap" data-md-scrollfix>
130 <div class="md-search-result" data-md-component="search-result">
131 <div class="md-search-result__meta">
132 Initializing search
133 </div>
134 <ol class="md-search-result__list"></ol>
135 </div>
136 </div>
137 </div>
138 </div>
139 </div>
140
141
142 </nav>
143 </header>
144
145 <div class="md-container" data-md-component="container">
146
147
148
149
150 <main class="md-main" data-md-component="main">
151 <div class="md-main__inner md-grid">
152
153
154
155 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
156 <div class="md-sidebar__scrollwrap">
157 <div class="md-sidebar__inner">
158
159
160
161
162
163 <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
164 <label class="md-nav__title" for="__drawer">
165 <a href="../.." title="WoltLab Suite Documentation" class="md-nav__button md-logo" aria-label="WoltLab Suite Documentation">
166
167 <img src="../../assets/logo.png" alt="logo">
168
169 </a>
170 WoltLab Suite Documentation
171 </label>
172
173 <ul class="md-nav__list" data-md-scrollfix>
174
175
176
177
178
179
180
181
182 <li class="md-nav__item">
183 <a href="../../getting-started/" class="md-nav__link">
184 Getting Started
185 </a>
186 </li>
187
188
189
190
191
192
193
194
195
196
197
198 <li class="md-nav__item md-nav__item--nested">
199
200
201 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2" type="checkbox" id="__nav_2" >
202
203 <label class="md-nav__link" for="__nav_2">
204 PHP API
205 <span class="md-nav__icon md-icon"></span>
206 </label>
207 <nav class="md-nav" aria-label="PHP API" data-md-level="1">
208 <label class="md-nav__title" for="__nav_2">
209 <span class="md-nav__icon md-icon"></span>
210 PHP API
211 </label>
212 <ul class="md-nav__list" data-md-scrollfix>
213
214
215
216
217
218 <li class="md-nav__item">
219 <a href="../../php/pages/" class="md-nav__link">
220 Pages
221 </a>
222 </li>
223
224
225
226
227
228
229
230 <li class="md-nav__item">
231 <a href="../../php/database-objects/" class="md-nav__link">
232 Database Objects
233 </a>
234 </li>
235
236
237
238
239
240
241
242 <li class="md-nav__item">
243 <a href="../../php/database-access/" class="md-nav__link">
244 Database Access
245 </a>
246 </li>
247
248
249
250
251
252
253
254 <li class="md-nav__item">
255 <a href="../../php/exceptions/" class="md-nav__link">
256 Exceptions
257 </a>
258 </li>
259
260
261
262
263
264
265
266
267 <li class="md-nav__item md-nav__item--nested">
268
269
270 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5" type="checkbox" id="__nav_2_5" >
271
272 <label class="md-nav__link" for="__nav_2_5">
273 API
274 <span class="md-nav__icon md-icon"></span>
275 </label>
276 <nav class="md-nav" aria-label="API" data-md-level="2">
277 <label class="md-nav__title" for="__nav_2_5">
278 <span class="md-nav__icon md-icon"></span>
279 API
280 </label>
281 <ul class="md-nav__list" data-md-scrollfix>
282
283
284
285
286
287 <li class="md-nav__item">
288 <a href="../../php/api/caches/" class="md-nav__link">
289 Caches
290 </a>
291 </li>
292
293
294
295
296
297
298
299 <li class="md-nav__item">
300 <a href="../../php/api/comments/" class="md-nav__link">
301 Comments
302 </a>
303 </li>
304
305
306
307
308
309
310
311 <li class="md-nav__item">
312 <a href="../../php/api/cronjobs/" class="md-nav__link">
313 Cronjobs
314 </a>
315 </li>
316
317
318
319
320
321
322
323 <li class="md-nav__item">
324 <a href="../../php/api/events/" class="md-nav__link">
325 Events
326 </a>
327 </li>
328
329
330
331
332
333
334
335
336 <li class="md-nav__item md-nav__item--nested">
337
338
339 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5_5" type="checkbox" id="__nav_2_5_5" >
340
341 <label class="md-nav__link" for="__nav_2_5_5">
342 Form Builder
343 <span class="md-nav__icon md-icon"></span>
344 </label>
345 <nav class="md-nav" aria-label="Form Builder" data-md-level="3">
346 <label class="md-nav__title" for="__nav_2_5_5">
347 <span class="md-nav__icon md-icon"></span>
348 Form Builder
349 </label>
350 <ul class="md-nav__list" data-md-scrollfix>
351
352
353
354
355
356 <li class="md-nav__item">
357 <a href="../../php/api/form_builder/overview/" class="md-nav__link">
358 Overview
359 </a>
360 </li>
361
362
363
364
365
366
367
368 <li class="md-nav__item">
369 <a href="../../php/api/form_builder/structure/" class="md-nav__link">
370 Structure
371 </a>
372 </li>
373
374
375
376
377
378
379
380 <li class="md-nav__item">
381 <a href="../../php/api/form_builder/form_fields/" class="md-nav__link">
382 Fields
383 </a>
384 </li>
385
386
387
388
389
390
391
392 <li class="md-nav__item">
393 <a href="../../php/api/form_builder/validation_data/" class="md-nav__link">
394 Validation and Data
395 </a>
396 </li>
397
398
399
400
401
402
403
404 <li class="md-nav__item">
405 <a href="../../php/api/form_builder/dependencies/" class="md-nav__link">
406 Dependencies
407 </a>
408 </li>
409
410
411
412 </ul>
413 </nav>
414 </li>
415
416
417
418
419
420
421
422 <li class="md-nav__item">
423 <a href="../../php/api/package_installation_plugins/" class="md-nav__link">
424 Package Installation Plugins
425 </a>
426 </li>
427
428
429
430
431
432
433
434 <li class="md-nav__item">
435 <a href="../../php/api/user_activity_points/" class="md-nav__link">
436 User Activity Points
437 </a>
438 </li>
439
440
441
442
443
444
445
446 <li class="md-nav__item">
447 <a href="../../php/api/user_notifications/" class="md-nav__link">
448 User Notifications
449 </a>
450 </li>
451
452
453
454
455
456
457
458 <li class="md-nav__item">
459 <a href="../../php/api/sitemaps/" class="md-nav__link">
460 Sitemaps
461 </a>
462 </li>
463
464
465
466 </ul>
467 </nav>
468 </li>
469
470
471
472
473
474
475
476 <li class="md-nav__item">
477 <a href="../../php/code-style/" class="md-nav__link">
478 Code Style
479 </a>
480 </li>
481
482
483
484
485
486
487
488 <li class="md-nav__item">
489 <a href="../../php/apps/" class="md-nav__link">
490 Apps
491 </a>
492 </li>
493
494
495
496
497
498
499
500 <li class="md-nav__item">
501 <a href="../../php/gdpr/" class="md-nav__link">
502 GDPR
503 </a>
504 </li>
505
506
507
508 </ul>
509 </nav>
510 </li>
511
512
513
514
515
516
517
518
519
520
521
522 <li class="md-nav__item md-nav__item--nested">
523
524
525 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
526
527 <label class="md-nav__link" for="__nav_3">
528 Languages, Templates & CSS
529 <span class="md-nav__icon md-icon"></span>
530 </label>
531 <nav class="md-nav" aria-label="Languages, Templates & CSS" data-md-level="1">
532 <label class="md-nav__title" for="__nav_3">
533 <span class="md-nav__icon md-icon"></span>
534 Languages, Templates & CSS
535 </label>
536 <ul class="md-nav__list" data-md-scrollfix>
537
538
539
540
541
542 <li class="md-nav__item">
543 <a href="../../view/languages/" class="md-nav__link">
544 Languages
545 </a>
546 </li>
547
548
549
550
551
552
553
554 <li class="md-nav__item">
555 <a href="../../view/templates/" class="md-nav__link">
556 Templates
557 </a>
558 </li>
559
560
561
562
563
564
565
566 <li class="md-nav__item">
567 <a href="../../view/css/" class="md-nav__link">
568 CSS
569 </a>
570 </li>
571
572
573
574 </ul>
575 </nav>
576 </li>
577
578
579
580
581
582
583
584
585
586
587
588
589
590 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
591
592
593 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" checked>
594
595 <label class="md-nav__link" for="__nav_4">
596 JavaScript API
597 <span class="md-nav__icon md-icon"></span>
598 </label>
599 <nav class="md-nav" aria-label="JavaScript API" data-md-level="1">
600 <label class="md-nav__title" for="__nav_4">
601 <span class="md-nav__icon md-icon"></span>
602 JavaScript API
603 </label>
604 <ul class="md-nav__list" data-md-scrollfix>
605
606
607
608
609
610 <li class="md-nav__item">
611 <a href="../general-usage/" class="md-nav__link">
612 General Usage
613 </a>
614 </li>
615
616
617
618
619
620
621
622
623
624
625 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
626
627
628 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" checked>
629
630 <label class="md-nav__link" for="__nav_4_2">
631 New API
632 <span class="md-nav__icon md-icon"></span>
633 </label>
634 <nav class="md-nav" aria-label="New API" data-md-level="2">
635 <label class="md-nav__title" for="__nav_4_2">
636 <span class="md-nav__icon md-icon"></span>
637 New API
638 </label>
639 <ul class="md-nav__list" data-md-scrollfix>
640
641
642
643
644
645 <li class="md-nav__item">
646 <a href="../new-api_writing-a-module/" class="md-nav__link">
647 Writing a module
648 </a>
649 </li>
650
651
652
653
654
655
656
657 <li class="md-nav__item">
658 <a href="../new-api_data-structures/" class="md-nav__link">
659 Data Structures
660 </a>
661 </li>
662
663
664
665
666
667
668
669
670
671 <li class="md-nav__item md-nav__item--active">
672
673 <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
674
675
676
677
678 <label class="md-nav__link md-nav__link--active" for="__toc">
679 Core Functions
680 <span class="md-nav__icon md-icon"></span>
681 </label>
682
683 <a href="./" class="md-nav__link md-nav__link--active">
684 Core Functions
685 </a>
686
687
688 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
689
690
691
692
693
694 <label class="md-nav__title" for="__toc">
695 <span class="md-nav__icon md-icon"></span>
696 Table of contents
697 </label>
698 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
699
700 <li class="md-nav__item">
701 <a href="#core" class="md-nav__link">
702 Core
703 </a>
704
705 <nav class="md-nav" aria-label="Core">
706 <ul class="md-nav__list">
707
708 <li class="md-nav__item">
709 <a href="#cloneobject-object-object" class="md-nav__link">
710 clone(object: Object): Object
711 </a>
712
713 </li>
714
715 <li class="md-nav__item">
716 <a href="#extendbase-object-merge-object-object" class="md-nav__link">
717 extend(base: Object, ...merge: Object[]): Object
718 </a>
719
720 </li>
721
722 <li class="md-nav__item">
723 <a href="#inheritbase-object-target-object-merge-object" class="md-nav__link">
724 inherit(base: Object, target: Object, merge?: Object)
725 </a>
726
727 </li>
728
729 <li class="md-nav__item">
730 <a href="#isplainobjectobject-object-boolean" class="md-nav__link">
731 isPlainObject(object: Object): boolean
732 </a>
733
734 </li>
735
736 <li class="md-nav__item">
737 <a href="#triggereventelement-element-eventname-string" class="md-nav__link">
738 triggerEvent(element: Element, eventName: string)
739 </a>
740
741 </li>
742
743 </ul>
744 </nav>
745
746 </li>
747
748 <li class="md-nav__item">
749 <a href="#language" class="md-nav__link">
750 Language
751 </a>
752
753 <nav class="md-nav" aria-label="Language">
754 <ul class="md-nav__list">
755
756 <li class="md-nav__item">
757 <a href="#addkey-string-value-string" class="md-nav__link">
758 add(key: string, value: string)
759 </a>
760
761 </li>
762
763 <li class="md-nav__item">
764 <a href="#addobjectobject-object" class="md-nav__link">
765 addObject(object: Object)
766 </a>
767
768 </li>
769
770 <li class="md-nav__item">
771 <a href="#getkey-string-parameters-object-string" class="md-nav__link">
772 get(key: string, parameters?: Object): string
773 </a>
774
775 </li>
776
777 </ul>
778 </nav>
779
780 </li>
781
782 <li class="md-nav__item">
783 <a href="#stringutil" class="md-nav__link">
784 StringUtil
785 </a>
786
787 <nav class="md-nav" aria-label="StringUtil">
788 <ul class="md-nav__list">
789
790 <li class="md-nav__item">
791 <a href="#escapehtmlstr-string-string" class="md-nav__link">
792 escapeHTML(str: string): string
793 </a>
794
795 </li>
796
797 <li class="md-nav__item">
798 <a href="#escaperegexpstr-string-string" class="md-nav__link">
799 escapeRegExp(str: string): string
800 </a>
801
802 </li>
803
804 <li class="md-nav__item">
805 <a href="#lcfirststr-string-string" class="md-nav__link">
806 lcfirst(str: string): string
807 </a>
808
809 </li>
810
811 <li class="md-nav__item">
812 <a href="#ucfirststr-string-string" class="md-nav__link">
813 ucfirst(str: string): string
814 </a>
815
816 </li>
817
818 <li class="md-nav__item">
819 <a href="#unescapehtmlstr-string-string" class="md-nav__link">
820 unescapeHTML(str: string): string
821 </a>
822
823 </li>
824
825 </ul>
826 </nav>
827
828 </li>
829
830 </ul>
831
832 </nav>
833
834 </li>
835
836
837
838
839
840
841
842 <li class="md-nav__item">
843 <a href="../new-api_dom/" class="md-nav__link">
844 DOM
845 </a>
846 </li>
847
848
849
850
851
852
853
854 <li class="md-nav__item">
855 <a href="../new-api_events/" class="md-nav__link">
856 Event Handling
857 </a>
858 </li>
859
860
861
862
863
864
865
866 <li class="md-nav__item">
867 <a href="../new-api_ajax/" class="md-nav__link">
868 Ajax
869 </a>
870 </li>
871
872
873
874
875
876
877
878 <li class="md-nav__item">
879 <a href="../new-api_dialogs/" class="md-nav__link">
880 Dialogs
881 </a>
882 </li>
883
884
885
886
887
888
889
890 <li class="md-nav__item">
891 <a href="../new-api_browser/" class="md-nav__link">
892 Browser and Screen Sizes
893 </a>
894 </li>
895
896
897
898
899
900
901
902 <li class="md-nav__item">
903 <a href="../new-api_ui/" class="md-nav__link">
904 User Interface
905 </a>
906 </li>
907
908
909
910 </ul>
911 </nav>
912 </li>
913
914
915
916
917
918
919
920 <li class="md-nav__item">
921 <a href="../legacy-api/" class="md-nav__link">
922 Legacy API
923 </a>
924 </li>
925
926
927
928
929
930
931
932 <li class="md-nav__item">
933 <a href="../helper-functions/" class="md-nav__link">
934 Helper Functions
935 </a>
936 </li>
937
938
939
940
941
942
943
944 <li class="md-nav__item">
945 <a href="../code-snippets/" class="md-nav__link">
946 Code Snippets
947 </a>
948 </li>
949
950
951
952 </ul>
953 </nav>
954 </li>
955
956
957
958
959
960
961
962
963
964
965
966 <li class="md-nav__item md-nav__item--nested">
967
968
969 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
970
971 <label class="md-nav__link" for="__nav_5">
972 Package Components
973 <span class="md-nav__icon md-icon"></span>
974 </label>
975 <nav class="md-nav" aria-label="Package Components" data-md-level="1">
976 <label class="md-nav__title" for="__nav_5">
977 <span class="md-nav__icon md-icon"></span>
978 Package Components
979 </label>
980 <ul class="md-nav__list" data-md-scrollfix>
981
982
983
984
985
986 <li class="md-nav__item">
987 <a href="../../package/package-xml/" class="md-nav__link">
988 package.xml
989 </a>
990 </li>
991
992
993
994
995
996
997
998
999 <li class="md-nav__item md-nav__item--nested">
1000
1001
1002 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_2" type="checkbox" id="__nav_5_2" >
1003
1004 <label class="md-nav__link" for="__nav_5_2">
1005 PIPs
1006 <span class="md-nav__icon md-icon"></span>
1007 </label>
1008 <nav class="md-nav" aria-label="PIPs" data-md-level="2">
1009 <label class="md-nav__title" for="__nav_5_2">
1010 <span class="md-nav__icon md-icon"></span>
1011 PIPs
1012 </label>
1013 <ul class="md-nav__list" data-md-scrollfix>
1014
1015
1016
1017
1018
1019 <li class="md-nav__item">
1020 <a href="../../package/pip/" class="md-nav__link">
1021 Overview
1022 </a>
1023 </li>
1024
1025
1026
1027
1028
1029
1030
1031 <li class="md-nav__item">
1032 <a href="../../package/pip/acl-option/" class="md-nav__link">
1033 aclOption
1034 </a>
1035 </li>
1036
1037
1038
1039
1040
1041
1042
1043 <li class="md-nav__item">
1044 <a href="../../package/pip/acp-menu/" class="md-nav__link">
1045 acpMenu
1046 </a>
1047 </li>
1048
1049
1050
1051
1052
1053
1054
1055 <li class="md-nav__item">
1056 <a href="../../package/pip/acp-search-provider/" class="md-nav__link">
1057 acpSearchProvider
1058 </a>
1059 </li>
1060
1061
1062
1063
1064
1065
1066
1067 <li class="md-nav__item">
1068 <a href="../../package/pip/acp-template/" class="md-nav__link">
1069 acpTemplate
1070 </a>
1071 </li>
1072
1073
1074
1075
1076
1077
1078
1079 <li class="md-nav__item">
1080 <a href="../../package/pip/bbcode/" class="md-nav__link">
1081 bbcode
1082 </a>
1083 </li>
1084
1085
1086
1087
1088
1089
1090
1091 <li class="md-nav__item">
1092 <a href="../../package/pip/box/" class="md-nav__link">
1093 box
1094 </a>
1095 </li>
1096
1097
1098
1099
1100
1101
1102
1103 <li class="md-nav__item">
1104 <a href="../../package/pip/clipboard-action/" class="md-nav__link">
1105 clipboardAction
1106 </a>
1107 </li>
1108
1109
1110
1111
1112
1113
1114
1115 <li class="md-nav__item">
1116 <a href="../../package/pip/core-object/" class="md-nav__link">
1117 coreObject
1118 </a>
1119 </li>
1120
1121
1122
1123
1124
1125
1126
1127 <li class="md-nav__item">
1128 <a href="../../package/pip/cronjob/" class="md-nav__link">
1129 cronjob
1130 </a>
1131 </li>
1132
1133
1134
1135
1136
1137
1138
1139 <li class="md-nav__item">
1140 <a href="../../package/pip/event-listener/" class="md-nav__link">
1141 eventListener
1142 </a>
1143 </li>
1144
1145
1146
1147
1148
1149
1150
1151 <li class="md-nav__item">
1152 <a href="../../package/pip/file/" class="md-nav__link">
1153 file
1154 </a>
1155 </li>
1156
1157
1158
1159
1160
1161
1162
1163 <li class="md-nav__item">
1164 <a href="../../package/pip/language/" class="md-nav__link">
1165 language
1166 </a>
1167 </li>
1168
1169
1170
1171
1172
1173
1174
1175 <li class="md-nav__item">
1176 <a href="../../package/pip/media-provider/" class="md-nav__link">
1177 mediaProvider
1178 </a>
1179 </li>
1180
1181
1182
1183
1184
1185
1186
1187 <li class="md-nav__item">
1188 <a href="../../package/pip/menu/" class="md-nav__link">
1189 menu
1190 </a>
1191 </li>
1192
1193
1194
1195
1196
1197
1198
1199 <li class="md-nav__item">
1200 <a href="../../package/pip/menu-item/" class="md-nav__link">
1201 menuItem
1202 </a>
1203 </li>
1204
1205
1206
1207
1208
1209
1210
1211 <li class="md-nav__item">
1212 <a href="../../package/pip/object-type/" class="md-nav__link">
1213 objectType
1214 </a>
1215 </li>
1216
1217
1218
1219
1220
1221
1222
1223 <li class="md-nav__item">
1224 <a href="../../package/pip/object-type-definition/" class="md-nav__link">
1225 objectTypeDefinition
1226 </a>
1227 </li>
1228
1229
1230
1231
1232
1233
1234
1235 <li class="md-nav__item">
1236 <a href="../../package/pip/option/" class="md-nav__link">
1237 option
1238 </a>
1239 </li>
1240
1241
1242
1243
1244
1245
1246
1247 <li class="md-nav__item">
1248 <a href="../../package/pip/page/" class="md-nav__link">
1249 page
1250 </a>
1251 </li>
1252
1253
1254
1255
1256
1257
1258
1259 <li class="md-nav__item">
1260 <a href="../../package/pip/pip/" class="md-nav__link">
1261 pip
1262 </a>
1263 </li>
1264
1265
1266
1267
1268
1269
1270
1271 <li class="md-nav__item">
1272 <a href="../../package/pip/script/" class="md-nav__link">
1273 script
1274 </a>
1275 </li>
1276
1277
1278
1279
1280
1281
1282
1283 <li class="md-nav__item">
1284 <a href="../../package/pip/smiley/" class="md-nav__link">
1285 smiley
1286 </a>
1287 </li>
1288
1289
1290
1291
1292
1293
1294
1295 <li class="md-nav__item">
1296 <a href="../../package/pip/sql/" class="md-nav__link">
1297 sql
1298 </a>
1299 </li>
1300
1301
1302
1303
1304
1305
1306
1307 <li class="md-nav__item">
1308 <a href="../../package/pip/style/" class="md-nav__link">
1309 style
1310 </a>
1311 </li>
1312
1313
1314
1315
1316
1317
1318
1319 <li class="md-nav__item">
1320 <a href="../../package/pip/template/" class="md-nav__link">
1321 template
1322 </a>
1323 </li>
1324
1325
1326
1327
1328
1329
1330
1331 <li class="md-nav__item">
1332 <a href="../../package/pip/template-listener/" class="md-nav__link">
1333 templateListener
1334 </a>
1335 </li>
1336
1337
1338
1339
1340
1341
1342
1343 <li class="md-nav__item">
1344 <a href="../../package/pip/user-group-option/" class="md-nav__link">
1345 userGroupOption
1346 </a>
1347 </li>
1348
1349
1350
1351
1352
1353
1354
1355 <li class="md-nav__item">
1356 <a href="../../package/pip/user-menu/" class="md-nav__link">
1357 userMenu
1358 </a>
1359 </li>
1360
1361
1362
1363
1364
1365
1366
1367 <li class="md-nav__item">
1368 <a href="../../package/pip/user-notification-event/" class="md-nav__link">
1369 userNotificationEvent
1370 </a>
1371 </li>
1372
1373
1374
1375
1376
1377
1378
1379 <li class="md-nav__item">
1380 <a href="../../package/pip/user-option/" class="md-nav__link">
1381 userOption
1382 </a>
1383 </li>
1384
1385
1386
1387
1388
1389
1390
1391 <li class="md-nav__item">
1392 <a href="../../package/pip/user-profile-menu/" class="md-nav__link">
1393 userProfileMenu
1394 </a>
1395 </li>
1396
1397
1398
1399 </ul>
1400 </nav>
1401 </li>
1402
1403
1404
1405
1406
1407
1408
1409 <li class="md-nav__item">
1410 <a href="../../package/database-php-api/" class="md-nav__link">
1411 Database PHP API
1412 </a>
1413 </li>
1414
1415
1416
1417 </ul>
1418 </nav>
1419 </li>
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431 <li class="md-nav__item md-nav__item--nested">
1432
1433
1434 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
1435
1436 <label class="md-nav__link" for="__nav_6">
1437 Migration
1438 <span class="md-nav__icon md-icon"></span>
1439 </label>
1440 <nav class="md-nav" aria-label="Migration" data-md-level="1">
1441 <label class="md-nav__title" for="__nav_6">
1442 <span class="md-nav__icon md-icon"></span>
1443 Migration
1444 </label>
1445 <ul class="md-nav__list" data-md-scrollfix>
1446
1447
1448
1449
1450
1451
1452 <li class="md-nav__item md-nav__item--nested">
1453
1454
1455 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_1" type="checkbox" id="__nav_6_1" >
1456
1457 <label class="md-nav__link" for="__nav_6_1">
1458 Migrating from WSC 5.3
1459 <span class="md-nav__icon md-icon"></span>
1460 </label>
1461 <nav class="md-nav" aria-label="Migrating from WSC 5.3" data-md-level="2">
1462 <label class="md-nav__title" for="__nav_6_1">
1463 <span class="md-nav__icon md-icon"></span>
1464 Migrating from WSC 5.3
1465 </label>
1466 <ul class="md-nav__list" data-md-scrollfix>
1467
1468
1469
1470
1471
1472 <li class="md-nav__item">
1473 <a href="../../migration/wsc53/php/" class="md-nav__link">
1474 PHP API
1475 </a>
1476 </li>
1477
1478
1479
1480
1481
1482
1483
1484 <li class="md-nav__item">
1485 <a href="../../migration/wsc53/session/" class="md-nav__link">
1486 Session Handling and Authentication
1487 </a>
1488 </li>
1489
1490
1491
1492
1493
1494
1495
1496 <li class="md-nav__item">
1497 <a href="../../migration/wsc53/javascript/" class="md-nav__link">
1498 JavaScript
1499 </a>
1500 </li>
1501
1502
1503
1504
1505
1506
1507
1508 <li class="md-nav__item">
1509 <a href="../../migration/wsc53/templates/" class="md-nav__link">
1510 Templates
1511 </a>
1512 </li>
1513
1514
1515
1516
1517
1518
1519
1520 <li class="md-nav__item">
1521 <a href="../../migration/wsc53/libraries/" class="md-nav__link">
1522 Third Party Libraries
1523 </a>
1524 </li>
1525
1526
1527
1528 </ul>
1529 </nav>
1530 </li>
1531
1532
1533
1534
1535
1536
1537
1538
1539 <li class="md-nav__item md-nav__item--nested">
1540
1541
1542 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_2" type="checkbox" id="__nav_6_2" >
1543
1544 <label class="md-nav__link" for="__nav_6_2">
1545 Migrating from WSC 5.2
1546 <span class="md-nav__icon md-icon"></span>
1547 </label>
1548 <nav class="md-nav" aria-label="Migrating from WSC 5.2" data-md-level="2">
1549 <label class="md-nav__title" for="__nav_6_2">
1550 <span class="md-nav__icon md-icon"></span>
1551 Migrating from WSC 5.2
1552 </label>
1553 <ul class="md-nav__list" data-md-scrollfix>
1554
1555
1556
1557
1558
1559 <li class="md-nav__item">
1560 <a href="../../migration/wsc52/php/" class="md-nav__link">
1561 PHP API
1562 </a>
1563 </li>
1564
1565
1566
1567
1568
1569
1570
1571 <li class="md-nav__item">
1572 <a href="../../migration/wsc52/templates/" class="md-nav__link">
1573 Templates and Languages
1574 </a>
1575 </li>
1576
1577
1578
1579
1580
1581
1582
1583 <li class="md-nav__item">
1584 <a href="../../migration/wsc52/libraries/" class="md-nav__link">
1585 Third Party Libraries
1586 </a>
1587 </li>
1588
1589
1590
1591 </ul>
1592 </nav>
1593 </li>
1594
1595
1596
1597
1598
1599
1600
1601
1602 <li class="md-nav__item md-nav__item--nested">
1603
1604
1605 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_3" type="checkbox" id="__nav_6_3" >
1606
1607 <label class="md-nav__link" for="__nav_6_3">
1608 Migrating from WSC 3.1
1609 <span class="md-nav__icon md-icon"></span>
1610 </label>
1611 <nav class="md-nav" aria-label="Migrating from WSC 3.1" data-md-level="2">
1612 <label class="md-nav__title" for="__nav_6_3">
1613 <span class="md-nav__icon md-icon"></span>
1614 Migrating from WSC 3.1
1615 </label>
1616 <ul class="md-nav__list" data-md-scrollfix>
1617
1618
1619
1620
1621
1622 <li class="md-nav__item">
1623 <a href="../../migration/wsc31/php/" class="md-nav__link">
1624 PHP API
1625 </a>
1626 </li>
1627
1628
1629
1630 </ul>
1631 </nav>
1632 </li>
1633
1634
1635
1636
1637
1638
1639
1640
1641 <li class="md-nav__item md-nav__item--nested">
1642
1643
1644 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_4" type="checkbox" id="__nav_6_4" >
1645
1646 <label class="md-nav__link" for="__nav_6_4">
1647 Migrating from WSC 3.0
1648 <span class="md-nav__icon md-icon"></span>
1649 </label>
1650 <nav class="md-nav" aria-label="Migrating from WSC 3.0" data-md-level="2">
1651 <label class="md-nav__title" for="__nav_6_4">
1652 <span class="md-nav__icon md-icon"></span>
1653 Migrating from WSC 3.0
1654 </label>
1655 <ul class="md-nav__list" data-md-scrollfix>
1656
1657
1658
1659
1660
1661 <li class="md-nav__item">
1662 <a href="../../migration/wsc30/php/" class="md-nav__link">
1663 PHP API
1664 </a>
1665 </li>
1666
1667
1668
1669
1670
1671
1672
1673 <li class="md-nav__item">
1674 <a href="../../migration/wsc30/javascript/" class="md-nav__link">
1675 JavaScript API
1676 </a>
1677 </li>
1678
1679
1680
1681
1682
1683
1684
1685 <li class="md-nav__item">
1686 <a href="../../migration/wsc30/templates/" class="md-nav__link">
1687 Templates
1688 </a>
1689 </li>
1690
1691
1692
1693
1694
1695
1696
1697 <li class="md-nav__item">
1698 <a href="../../migration/wsc30/css/" class="md-nav__link">
1699 CSS
1700 </a>
1701 </li>
1702
1703
1704
1705
1706
1707
1708
1709 <li class="md-nav__item">
1710 <a href="../../migration/wsc30/package/" class="md-nav__link">
1711 Package Components
1712 </a>
1713 </li>
1714
1715
1716
1717 </ul>
1718 </nav>
1719 </li>
1720
1721
1722
1723
1724
1725
1726
1727
1728 <li class="md-nav__item md-nav__item--nested">
1729
1730
1731 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_5" type="checkbox" id="__nav_6_5" >
1732
1733 <label class="md-nav__link" for="__nav_6_5">
1734 Migrating from WCF 2.1
1735 <span class="md-nav__icon md-icon"></span>
1736 </label>
1737 <nav class="md-nav" aria-label="Migrating from WCF 2.1" data-md-level="2">
1738 <label class="md-nav__title" for="__nav_6_5">
1739 <span class="md-nav__icon md-icon"></span>
1740 Migrating from WCF 2.1
1741 </label>
1742 <ul class="md-nav__list" data-md-scrollfix>
1743
1744
1745
1746
1747
1748 <li class="md-nav__item">
1749 <a href="../../migration/wcf21/php/" class="md-nav__link">
1750 PHP API
1751 </a>
1752 </li>
1753
1754
1755
1756
1757
1758
1759
1760 <li class="md-nav__item">
1761 <a href="../../migration/wcf21/templates/" class="md-nav__link">
1762 Templates
1763 </a>
1764 </li>
1765
1766
1767
1768
1769
1770
1771
1772 <li class="md-nav__item">
1773 <a href="../../migration/wcf21/css/" class="md-nav__link">
1774 CSS
1775 </a>
1776 </li>
1777
1778
1779
1780
1781
1782
1783
1784 <li class="md-nav__item">
1785 <a href="../../migration/wcf21/package/" class="md-nav__link">
1786 Package Components
1787 </a>
1788 </li>
1789
1790
1791
1792 </ul>
1793 </nav>
1794 </li>
1795
1796
1797
1798 </ul>
1799 </nav>
1800 </li>
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812 <li class="md-nav__item md-nav__item--nested">
1813
1814
1815 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
1816
1817 <label class="md-nav__link" for="__nav_7">
1818 Tutorials
1819 <span class="md-nav__icon md-icon"></span>
1820 </label>
1821 <nav class="md-nav" aria-label="Tutorials" data-md-level="1">
1822 <label class="md-nav__title" for="__nav_7">
1823 <span class="md-nav__icon md-icon"></span>
1824 Tutorials
1825 </label>
1826 <ul class="md-nav__list" data-md-scrollfix>
1827
1828
1829
1830
1831
1832
1833 <li class="md-nav__item md-nav__item--nested">
1834
1835
1836 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7_1" type="checkbox" id="__nav_7_1" >
1837
1838 <label class="md-nav__link" for="__nav_7_1">
1839 Tutorial Series
1840 <span class="md-nav__icon md-icon"></span>
1841 </label>
1842 <nav class="md-nav" aria-label="Tutorial Series" data-md-level="2">
1843 <label class="md-nav__title" for="__nav_7_1">
1844 <span class="md-nav__icon md-icon"></span>
1845 Tutorial Series
1846 </label>
1847 <ul class="md-nav__list" data-md-scrollfix>
1848
1849
1850
1851
1852
1853 <li class="md-nav__item">
1854 <a href="../../tutorial/series/overview/" class="md-nav__link">
1855 Overview
1856 </a>
1857 </li>
1858
1859
1860
1861
1862
1863
1864
1865 <li class="md-nav__item">
1866 <a href="../../tutorial/series/part_1/" class="md-nav__link">
1867 Part 1
1868 </a>
1869 </li>
1870
1871
1872
1873
1874
1875
1876
1877 <li class="md-nav__item">
1878 <a href="../../tutorial/series/part_2/" class="md-nav__link">
1879 Part 2
1880 </a>
1881 </li>
1882
1883
1884
1885
1886
1887
1888
1889 <li class="md-nav__item">
1890 <a href="../../tutorial/series/part_3/" class="md-nav__link">
1891 Part 3
1892 </a>
1893 </li>
1894
1895
1896
1897 </ul>
1898 </nav>
1899 </li>
1900
1901
1902
1903 </ul>
1904 </nav>
1905 </li>
1906
1907
1908
1909 </ul>
1910 </nav>
1911 </div>
1912 </div>
1913 </div>
1914
1915
1916
1917 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1918 <div class="md-sidebar__scrollwrap">
1919 <div class="md-sidebar__inner">
1920
1921 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1922
1923
1924
1925
1926
1927 <label class="md-nav__title" for="__toc">
1928 <span class="md-nav__icon md-icon"></span>
1929 Table of contents
1930 </label>
1931 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1932
1933 <li class="md-nav__item">
1934 <a href="#core" class="md-nav__link">
1935 Core
1936 </a>
1937
1938 <nav class="md-nav" aria-label="Core">
1939 <ul class="md-nav__list">
1940
1941 <li class="md-nav__item">
1942 <a href="#cloneobject-object-object" class="md-nav__link">
1943 clone(object: Object): Object
1944 </a>
1945
1946 </li>
1947
1948 <li class="md-nav__item">
1949 <a href="#extendbase-object-merge-object-object" class="md-nav__link">
1950 extend(base: Object, ...merge: Object[]): Object
1951 </a>
1952
1953 </li>
1954
1955 <li class="md-nav__item">
1956 <a href="#inheritbase-object-target-object-merge-object" class="md-nav__link">
1957 inherit(base: Object, target: Object, merge?: Object)
1958 </a>
1959
1960 </li>
1961
1962 <li class="md-nav__item">
1963 <a href="#isplainobjectobject-object-boolean" class="md-nav__link">
1964 isPlainObject(object: Object): boolean
1965 </a>
1966
1967 </li>
1968
1969 <li class="md-nav__item">
1970 <a href="#triggereventelement-element-eventname-string" class="md-nav__link">
1971 triggerEvent(element: Element, eventName: string)
1972 </a>
1973
1974 </li>
1975
1976 </ul>
1977 </nav>
1978
1979 </li>
1980
1981 <li class="md-nav__item">
1982 <a href="#language" class="md-nav__link">
1983 Language
1984 </a>
1985
1986 <nav class="md-nav" aria-label="Language">
1987 <ul class="md-nav__list">
1988
1989 <li class="md-nav__item">
1990 <a href="#addkey-string-value-string" class="md-nav__link">
1991 add(key: string, value: string)
1992 </a>
1993
1994 </li>
1995
1996 <li class="md-nav__item">
1997 <a href="#addobjectobject-object" class="md-nav__link">
1998 addObject(object: Object)
1999 </a>
2000
2001 </li>
2002
2003 <li class="md-nav__item">
2004 <a href="#getkey-string-parameters-object-string" class="md-nav__link">
2005 get(key: string, parameters?: Object): string
2006 </a>
2007
2008 </li>
2009
2010 </ul>
2011 </nav>
2012
2013 </li>
2014
2015 <li class="md-nav__item">
2016 <a href="#stringutil" class="md-nav__link">
2017 StringUtil
2018 </a>
2019
2020 <nav class="md-nav" aria-label="StringUtil">
2021 <ul class="md-nav__list">
2022
2023 <li class="md-nav__item">
2024 <a href="#escapehtmlstr-string-string" class="md-nav__link">
2025 escapeHTML(str: string): string
2026 </a>
2027
2028 </li>
2029
2030 <li class="md-nav__item">
2031 <a href="#escaperegexpstr-string-string" class="md-nav__link">
2032 escapeRegExp(str: string): string
2033 </a>
2034
2035 </li>
2036
2037 <li class="md-nav__item">
2038 <a href="#lcfirststr-string-string" class="md-nav__link">
2039 lcfirst(str: string): string
2040 </a>
2041
2042 </li>
2043
2044 <li class="md-nav__item">
2045 <a href="#ucfirststr-string-string" class="md-nav__link">
2046 ucfirst(str: string): string
2047 </a>
2048
2049 </li>
2050
2051 <li class="md-nav__item">
2052 <a href="#unescapehtmlstr-string-string" class="md-nav__link">
2053 unescapeHTML(str: string): string
2054 </a>
2055
2056 </li>
2057
2058 </ul>
2059 </nav>
2060
2061 </li>
2062
2063 </ul>
2064
2065 </nav>
2066 </div>
2067 </div>
2068 </div>
2069
2070
2071 <div class="md-content" data-md-component="content">
2072 <article class="md-content__inner md-typeset">
2073
2074
2075
2076 <h1 id="core-modules-and-functions-javascript-api">Core Modules and Functions - JavaScript API<a class="headerlink" href="#core-modules-and-functions-javascript-api" title="Permanent link">#</a></h1>
2077 <p>A brief overview of common methods that may be useful when writing any module.</p>
2078 <h2 id="core"><code>Core</code><a class="headerlink" href="#core" title="Permanent link">#</a></h2>
2079 <h3 id="cloneobject-object-object"><code>clone(object: Object): Object</code><a class="headerlink" href="#cloneobject-object-object" title="Permanent link">#</a></h3>
2080 <p>Creates a deep-clone of the provided object by value, removing any references on
2081 the original element, including arrays. However, this does not clone references
2082 to non-plain objects, these instances will be copied by reference.</p>
2083 <div class="highlight"><pre><span></span><code><span class="nx">require</span><span class="p">([</span><span class="s2">&quot;Core&quot;</span><span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">Core</span><span class="p">)</span> <span class="p">{</span>
2084 <span class="kd">var</span> <span class="nx">obj1</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">a</span><span class="o">:</span> <span class="mf">1</span> <span class="p">};</span>
2085 <span class="kd">var</span> <span class="nx">obj2</span> <span class="o">=</span> <span class="nx">Core</span><span class="p">.</span><span class="nx">clone</span><span class="p">(</span><span class="nx">obj1</span><span class="p">);</span>
2086
2087 <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">obj1</span> <span class="o">===</span> <span class="nx">obj2</span><span class="p">);</span> <span class="c1">// output: false</span>
2088 <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">obj2</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="s2">&quot;a&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nx">obj2</span><span class="p">.</span><span class="nx">a</span> <span class="o">===</span> <span class="mf">1</span><span class="p">);</span> <span class="c1">// output: true</span>
2089 <span class="p">});</span>
2090 </code></pre></div>
2091 <h3 id="extendbase-object-merge-object-object"><code>extend(base: Object, ...merge: Object[]): Object</code><a class="headerlink" href="#extendbase-object-merge-object-object" title="Permanent link">#</a></h3>
2092 <p>Accepts an infinite amount of plain objects as parameters, values will be copied
2093 from the 2nd...nth object into the first object. The first parameter will be
2094 cloned and the resulting object is returned.</p>
2095 <div class="highlight"><pre><span></span><code><span class="nx">require</span><span class="p">([</span><span class="s2">&quot;Core&quot;</span><span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">Core</span><span class="p">)</span> <span class="p">{</span>
2096 <span class="kd">var</span> <span class="nx">obj1</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">a</span><span class="o">:</span> <span class="mf">2</span> <span class="p">};</span>
2097 <span class="kd">var</span> <span class="nx">obj2</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">a</span><span class="o">:</span> <span class="mf">1</span><span class="p">,</span> <span class="nx">b</span><span class="o">:</span> <span class="mf">2</span> <span class="p">};</span>
2098 <span class="kd">var</span> <span class="nx">obj</span> <span class="o">=</span> <span class="nx">Core</span><span class="p">.</span><span class="nx">extend</span><span class="p">({</span>
2099 <span class="nx">b</span><span class="o">:</span> <span class="mf">1</span>
2100 <span class="p">},</span> <span class="nx">obj1</span><span class="p">,</span> <span class="nx">obj2</span><span class="p">);</span>
2101
2102 <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">obj</span><span class="p">.</span><span class="nx">b</span> <span class="o">===</span> <span class="mf">2</span><span class="p">);</span> <span class="c1">// output: true</span>
2103 <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">obj</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="s2">&quot;a&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">a</span> <span class="o">===</span> <span class="mf">2</span><span class="p">);</span> <span class="c1">// output: false</span>
2104 <span class="p">});</span>
2105 </code></pre></div>
2106 <h3 id="inheritbase-object-target-object-merge-object"><code>inherit(base: Object, target: Object, merge?: Object)</code><a class="headerlink" href="#inheritbase-object-target-object-merge-object" title="Permanent link">#</a></h3>
2107 <p>Derives the second object's prototype from the first object, afterwards the
2108 derived class will pass the <code>instanceof</code> check against the original class.</p>
2109 <div class="highlight"><pre><span></span><code><span class="c1">// App.js</span>
2110 <span class="nb">window</span><span class="p">.</span><span class="nx">App</span> <span class="o">=</span> <span class="p">{};</span>
2111 <span class="nx">App</span><span class="p">.</span><span class="nx">Foo</span> <span class="o">=</span> <span class="nx">Class</span><span class="p">.</span><span class="nx">extend</span><span class="p">({</span>
2112 <span class="nx">bar</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{}</span>
2113 <span class="p">});</span>
2114 <span class="nx">App</span><span class="p">.</span><span class="nx">Baz</span> <span class="o">=</span> <span class="nx">App</span><span class="p">.</span><span class="nx">Foo</span><span class="p">.</span><span class="nx">extend</span><span class="p">({</span>
2115 <span class="nx">makeSnafucated</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{}</span>
2116 <span class="p">});</span>
2117
2118 <span class="c1">// --- NEW API ---</span>
2119
2120 <span class="c1">// App/Foo.js</span>
2121 <span class="nx">define</span><span class="p">([],</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
2122 <span class="s2">&quot;use strict&quot;</span><span class="p">;</span>
2123
2124 <span class="kd">function</span> <span class="nx">Foo</span><span class="p">()</span> <span class="p">{};</span>
2125 <span class="nx">Foo</span><span class="p">.</span><span class="nx">prototype</span> <span class="o">=</span> <span class="p">{</span>
2126 <span class="nx">bar</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{}</span>
2127 <span class="p">};</span>
2128
2129 <span class="k">return</span> <span class="nx">Foo</span><span class="p">;</span>
2130 <span class="p">});</span>
2131
2132 <span class="c1">// App/Baz.js</span>
2133 <span class="nx">define</span><span class="p">([</span><span class="s2">&quot;Core&quot;</span><span class="p">,</span> <span class="s2">&quot;./Foo&quot;</span><span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">Core</span><span class="p">,</span> <span class="nx">Foo</span><span class="p">)</span> <span class="p">{</span>
2134 <span class="s2">&quot;use strict&quot;</span><span class="p">;</span>
2135
2136 <span class="kd">function</span> <span class="nx">Baz</span><span class="p">()</span> <span class="p">{};</span>
2137 <span class="nx">Core</span><span class="p">.</span><span class="nx">inherit</span><span class="p">(</span><span class="nx">Baz</span><span class="p">,</span> <span class="nx">Foo</span><span class="p">,</span> <span class="p">{</span>
2138 <span class="nx">makeSnafucated</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{}</span>
2139 <span class="p">});</span>
2140
2141 <span class="k">return</span> <span class="nx">Baz</span><span class="p">;</span>
2142 <span class="p">});</span>
2143 </code></pre></div>
2144 <h3 id="isplainobjectobject-object-boolean"><code>isPlainObject(object: Object): boolean</code><a class="headerlink" href="#isplainobjectobject-object-boolean" title="Permanent link">#</a></h3>
2145 <p>Verifies if an object is a plain JavaScript object and not an object instance.</p>
2146 <div class="highlight"><pre><span></span><code><span class="nx">require</span><span class="p">([</span><span class="s2">&quot;Core&quot;</span><span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">Core</span><span class="p">)</span> <span class="p">{</span>
2147 <span class="kd">function</span> <span class="nx">Foo</span><span class="p">()</span> <span class="p">{}</span>
2148 <span class="nx">Foo</span><span class="p">.</span><span class="nx">prototype</span> <span class="o">=</span> <span class="p">{</span>
2149 <span class="nx">hello</span><span class="o">:</span> <span class="s2">&quot;world&quot;</span><span class="p">;</span>
2150 <span class="p">};</span>
2151
2152 <span class="kd">var</span> <span class="nx">obj1</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">hello</span><span class="o">:</span> <span class="s2">&quot;world&quot;</span> <span class="p">};</span>
2153 <span class="kd">var</span> <span class="nx">obj2</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Foo</span><span class="p">();</span>
2154
2155 <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">Core</span><span class="p">.</span><span class="nx">isPlainObject</span><span class="p">(</span><span class="nx">obj1</span><span class="p">));</span> <span class="c1">// output: true</span>
2156 <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">obj1</span><span class="p">.</span><span class="nx">hello</span> <span class="o">===</span> <span class="nx">obj2</span><span class="p">.</span><span class="nx">hello</span><span class="p">);</span> <span class="c1">// output: true</span>
2157 <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">Core</span><span class="p">.</span><span class="nx">isPlainObject</span><span class="p">(</span><span class="nx">obj2</span><span class="p">));</span> <span class="c1">// output: false</span>
2158 <span class="p">});</span>
2159 </code></pre></div>
2160 <h3 id="triggereventelement-element-eventname-string"><code>triggerEvent(element: Element, eventName: string)</code><a class="headerlink" href="#triggereventelement-element-eventname-string" title="Permanent link">#</a></h3>
2161 <p>Creates and dispatches a synthetic JavaScript event on an element.</p>
2162 <div class="highlight"><pre><span></span><code><span class="nx">require</span><span class="p">([</span><span class="s2">&quot;Core&quot;</span><span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">Core</span><span class="p">)</span> <span class="p">{</span>
2163 <span class="kd">var</span> <span class="nx">element</span> <span class="o">=</span> <span class="nx">elBySel</span><span class="p">(</span><span class="s2">&quot;.some-element&quot;</span><span class="p">);</span>
2164 <span class="nx">Core</span><span class="p">.</span><span class="nx">triggerEvent</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="s2">&quot;click&quot;</span><span class="p">);</span>
2165 <span class="p">});</span>
2166 </code></pre></div>
2167 <h2 id="language"><code>Language</code><a class="headerlink" href="#language" title="Permanent link">#</a></h2>
2168 <h3 id="addkey-string-value-string"><code>add(key: string, value: string)</code><a class="headerlink" href="#addkey-string-value-string" title="Permanent link">#</a></h3>
2169 <p>Registers a new phrase.</p>
2170 <div class="highlight"><pre><span></span><code><span class="p">&lt;</span><span class="nt">script</span> <span class="na">data-relocate</span><span class="o">=</span><span class="s">&quot;true&quot;</span><span class="p">&gt;</span>
2171 <span class="nx">require</span><span class="p">([</span><span class="s2">&quot;Language&quot;</span><span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">Language</span><span class="p">)</span> <span class="p">{</span>
2172 <span class="nx">Language</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s1">&#39;app.foo.bar&#39;</span><span class="p">,</span> <span class="s1">&#39;{jslang}app.foo.bar{/jslang}&#39;</span><span class="p">);</span>
2173 <span class="p">});</span>
2174 <span class="p">&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
2175 </code></pre></div>
2176 <h3 id="addobjectobject-object"><code>addObject(object: Object)</code><a class="headerlink" href="#addobjectobject-object" title="Permanent link">#</a></h3>
2177 <p>Registers a list of phrases using a plain object.</p>
2178 <div class="highlight"><pre><span></span><code><span class="p">&lt;</span><span class="nt">script</span> <span class="na">data-relocate</span><span class="o">=</span><span class="s">&quot;true&quot;</span><span class="p">&gt;</span>
2179 <span class="nx">require</span><span class="p">([</span><span class="s2">&quot;Language&quot;</span><span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">Language</span><span class="p">)</span> <span class="p">{</span>
2180 <span class="nx">Language</span><span class="p">.</span><span class="nx">addObject</span><span class="p">({</span>
2181 <span class="s1">&#39;app.foo.bar&#39;</span><span class="o">:</span> <span class="s1">&#39;{jslang}app.foo.bar{/jslang}&#39;</span>
2182 <span class="p">});</span>
2183 <span class="p">});</span>
2184 <span class="p">&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
2185 </code></pre></div>
2186 <h3 id="getkey-string-parameters-object-string"><code>get(key: string, parameters?: Object): string</code><a class="headerlink" href="#getkey-string-parameters-object-string" title="Permanent link">#</a></h3>
2187 <p>Retrieves a phrase by its key, optionally supporting basic template scripting
2188 with dynamic variables passed using the <code>parameters</code> object.</p>
2189 <div class="highlight"><pre><span></span><code><span class="nx">require</span><span class="p">([</span><span class="s2">&quot;Language&quot;</span><span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">Language</span><span class="p">)</span> <span class="p">{</span>
2190 <span class="kd">var</span> <span class="nx">title</span> <span class="o">=</span> <span class="nx">Language</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;app.foo.title&quot;</span><span class="p">);</span>
2191 <span class="kd">var</span> <span class="nx">content</span> <span class="o">=</span> <span class="nx">Language</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;app.foo.content&quot;</span><span class="p">,</span> <span class="p">{</span>
2192 <span class="nx">some</span><span class="o">:</span> <span class="s2">&quot;value&quot;</span>
2193 <span class="p">});</span>
2194 <span class="p">});</span>
2195 </code></pre></div>
2196 <h2 id="stringutil"><code>StringUtil</code><a class="headerlink" href="#stringutil" title="Permanent link">#</a></h2>
2197 <h3 id="escapehtmlstr-string-string"><code>escapeHTML(str: string): string</code><a class="headerlink" href="#escapehtmlstr-string-string" title="Permanent link">#</a></h3>
2198 <p>Escapes special HTML characters by converting them into an HTML entity.</p>
2199 <table>
2200 <thead>
2201 <tr>
2202 <th>Character</th>
2203 <th>Replacement</th>
2204 </tr>
2205 </thead>
2206 <tbody>
2207 <tr>
2208 <td><code>&amp;</code></td>
2209 <td><code>&amp;amp;</code></td>
2210 </tr>
2211 <tr>
2212 <td><code>"</code></td>
2213 <td><code>&amp;quot;</code></td>
2214 </tr>
2215 <tr>
2216 <td><code>&lt;</code></td>
2217 <td><code>&amp;lt;</code></td>
2218 </tr>
2219 <tr>
2220 <td><code>&gt;</code></td>
2221 <td><code>&amp;gt;</code></td>
2222 </tr>
2223 </tbody>
2224 </table>
2225 <h3 id="escaperegexpstr-string-string"><code>escapeRegExp(str: string): string</code><a class="headerlink" href="#escaperegexpstr-string-string" title="Permanent link">#</a></h3>
2226 <p>Escapes a list of characters that have a special meaning in regular expressions
2227 and could alter the behavior when embedded into regular expressions.</p>
2228 <h3 id="lcfirststr-string-string"><code>lcfirst(str: string): string</code><a class="headerlink" href="#lcfirststr-string-string" title="Permanent link">#</a></h3>
2229 <p>Makes a string's first character lowercase.</p>
2230 <h3 id="ucfirststr-string-string"><code>ucfirst(str: string): string</code><a class="headerlink" href="#ucfirststr-string-string" title="Permanent link">#</a></h3>
2231 <p>Makes a string's first character uppercase.</p>
2232 <h3 id="unescapehtmlstr-string-string"><code>unescapeHTML(str: string): string</code><a class="headerlink" href="#unescapehtmlstr-string-string" title="Permanent link">#</a></h3>
2233 <p>Converts some HTML entities into their original character. This is the reverse
2234 function of <code>escapeHTML()</code>.</p>
2235
2236
2237
2238
2239
2240
2241
2242 </article>
2243 </div>
2244 </div>
2245 </main>
2246
2247
2248 <footer class="md-footer">
2249
2250 <nav class="md-footer__inner md-grid" aria-label="Footer">
2251
2252 <a href="../new-api_data-structures/" class="md-footer__link md-footer__link--prev" rel="prev">
2253 <div class="md-footer__button md-icon">
2254 <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>
2255 </div>
2256 <div class="md-footer__title">
2257 <div class="md-ellipsis">
2258 <span class="md-footer__direction">
2259 Previous
2260 </span>
2261 Data Structures
2262 </div>
2263 </div>
2264 </a>
2265
2266
2267 <a href="../new-api_dom/" class="md-footer__link md-footer__link--next" rel="next">
2268 <div class="md-footer__title">
2269 <div class="md-ellipsis">
2270 <span class="md-footer__direction">
2271 Next
2272 </span>
2273 DOM
2274 </div>
2275 </div>
2276 <div class="md-footer__button md-icon">
2277 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
2278 </div>
2279 </a>
2280
2281 </nav>
2282
2283 <div class="md-footer-meta md-typeset">
2284 <div class="md-footer-meta__inner md-grid">
2285 <div class="md-footer-copyright">
2286
2287 <div class="md-footer-copyright__highlight">
2288 Copyright © 2020 WoltLab GmbH
2289 </div>
2290
2291 Made with
2292 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2293 Material for MkDocs
2294 </a>
2295
2296 </div>
2297 <div class="md-footer-copyright">
2298 <a href="https://www.woltlab.com/legal-notice/">Legal Notice</a>
2299 <a href="https://www.woltlab.com/privacy-policy/">Privacy Policy</a>
2300 </div>
2301 </div>
2302 </div>
2303 </footer>
2304
2305 </div>
2306 <div class="md-dialog" data-md-component="dialog">
2307 <div class="md-dialog__inner md-typeset"></div>
2308 </div>
2309 <script id="__config" type="application/json">{"base": "../..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../../assets/javascripts/workers/search.fb4a9340.min.js", "version": {"provider": "mike"}}</script>
2310
2311
2312 <script src="../../assets/javascripts/bundle.5cf3e710.min.js"></script>
2313
2314
2315 </body>
2316 </html>