Merge branch '3.1' into 5.2
[GitHub/WoltLab/WCF.git] / com.woltlab.wcf / templates / headIncludeJavaScript.tpl
CommitLineData
0ecda543
AE
1{*
2 DO NOT EDIT THIS FILE
3*}
4
5<script>
91082aee 6 var SID_ARG_2ND = '';
0ecda543 7 var WCF_PATH = '{@$__wcf->getPath()}';
5d1c96bc 8 var WSC_API_URL = '{@$__wcf->getActivePath()}';
0ecda543
AE
9 var SECURITY_TOKEN = '{@SECURITY_TOKEN}';
10 var LANGUAGE_ID = {@$__wcf->getLanguage()->languageID};
eae52096 11 var LANGUAGE_USE_INFORMAL_VARIANT = {if LANGUAGE_USE_INFORMAL_VARIANT}true{else}false{/if};
0ecda543 12 var TIME_NOW = {@TIME_NOW};
a623cd24 13 var LAST_UPDATE_TIME = {@LAST_UPDATE_TIME};
8186015c 14 var URL_LEGACY_MODE = false;
0e69f27c 15 var ENABLE_DEBUG_MODE = {if ENABLE_DEBUG_MODE}true{else}false{/if};
11084ada 16 var ENABLE_PRODUCTION_DEBUG_MODE = {if ENABLE_PRODUCTION_DEBUG_MODE}true{else}false{/if};
32669648 17 var ENABLE_DEVELOPER_TOOLS = {if ENABLE_DEVELOPER_TOOLS}true{else}false{/if};
89484ba0 18 var WSC_API_VERSION = {@WSC_API_VERSION};
f5e3a61b 19
28c81d96
JR
20 var REACTION_TYPES = {@$__wcf->getReactionHandler()->getReactionsJSVariable()};
21
f5e3a61b
AE
22 {if ENABLE_DEBUG_MODE}
23 {* This constant is a compiler option, it does not exist in production. *}
bde865af 24 var COMPILER_TARGET_DEFAULT = {if !VISITOR_USE_TINY_BUILD || $__wcf->user->userID}true{else}false{/if};
f5e3a61b 25 {/if}
0ecda543 26</script>
0ecda543 27
935cdbf3 28{js application='wcf' lib='polyfill' file='promise' bundle='WoltLabSuite.Core' core='true'}
0d20df38
AE
29{js application='wcf' file='require' bundle='WoltLabSuite.Core' core='true' hasTiny=true}
30{js application='wcf' file='require.config' bundle='WoltLabSuite.Core' core='true' hasTiny=true}
31{js application='wcf' file='require.linearExecution' bundle='WoltLabSuite.Core' core='true' hasTiny=true}
32{js application='wcf' file='wcf.globalHelper' bundle='WoltLabSuite.Core' core='true' hasTiny=true}
33{js application='wcf' file='closest' bundle='WoltLabSuite.Core' core='true' hasTiny=true}
90ae1366
TD
34<script>
35requirejs.config({
8a603e6d 36 baseUrl: '{@$__wcf->getPath()}js',
33d93082 37 urlArgs: 't={@LAST_UPDATE_TIME}'
7ae41c12
TD
38 {hascontent}
39 , paths: {
40 {content}{event name='requirePaths'}{/content}
41 }
42 {/hascontent}
90ae1366 43});
abf22c45
AE
44{* Safari ignores the HTTP cache headers for the back/forward navigation. *}
45window.addEventListener('pageshow', function(event) {
46 if (event.persisted) {
47 window.location.reload();
48 }
49});
7ae41c12 50{event name='requireConfig'}
90ae1366 51</script>
55919774 52<script data-relocate="true">
58d7e8f8 53 require(['Language', 'WoltLabSuite/Core/BootstrapFrontend', 'User'], function(Language, BootstrapFrontend, User) {
6c0c61b5
TD
54 Language.addObject({
55 '__days': [ '{lang}wcf.date.day.sunday{/lang}', '{lang}wcf.date.day.monday{/lang}', '{lang}wcf.date.day.tuesday{/lang}', '{lang}wcf.date.day.wednesday{/lang}', '{lang}wcf.date.day.thursday{/lang}', '{lang}wcf.date.day.friday{/lang}', '{lang}wcf.date.day.saturday{/lang}' ],
56 '__daysShort': [ '{lang}wcf.date.day.sun{/lang}', '{lang}wcf.date.day.mon{/lang}', '{lang}wcf.date.day.tue{/lang}', '{lang}wcf.date.day.wed{/lang}', '{lang}wcf.date.day.thu{/lang}', '{lang}wcf.date.day.fri{/lang}', '{lang}wcf.date.day.sat{/lang}' ],
57 '__months': [ '{lang}wcf.date.month.january{/lang}', '{lang}wcf.date.month.february{/lang}', '{lang}wcf.date.month.march{/lang}', '{lang}wcf.date.month.april{/lang}', '{lang}wcf.date.month.may{/lang}', '{lang}wcf.date.month.june{/lang}', '{lang}wcf.date.month.july{/lang}', '{lang}wcf.date.month.august{/lang}', '{lang}wcf.date.month.september{/lang}', '{lang}wcf.date.month.october{/lang}', '{lang}wcf.date.month.november{/lang}', '{lang}wcf.date.month.december{/lang}' ],
58 '__monthsShort': [ '{lang}wcf.date.month.short.jan{/lang}', '{lang}wcf.date.month.short.feb{/lang}', '{lang}wcf.date.month.short.mar{/lang}', '{lang}wcf.date.month.short.apr{/lang}', '{lang}wcf.date.month.short.may{/lang}', '{lang}wcf.date.month.short.jun{/lang}', '{lang}wcf.date.month.short.jul{/lang}', '{lang}wcf.date.month.short.aug{/lang}', '{lang}wcf.date.month.short.sep{/lang}', '{lang}wcf.date.month.short.oct{/lang}', '{lang}wcf.date.month.short.nov{/lang}', '{lang}wcf.date.month.short.dec{/lang}' ],
59 'wcf.clipboard.item.unmarkAll': '{lang}wcf.clipboard.item.unmarkAll{/lang}',
7e400c3d
MW
60 'wcf.clipboard.item.markAll': '{lang}wcf.clipboard.item.markAll{/lang}',
61 'wcf.clipboard.item.mark': '{lang}wcf.clipboard.item.mark{/lang}',
1e6f0bc8
AE
62 'wcf.date.relative.now': '{lang __literal=true}wcf.date.relative.now{/lang}',
63 'wcf.date.relative.minutes': '{capture assign=relativeMinutes}{lang __literal=true}wcf.date.relative.minutes{/lang}{/capture}{@$relativeMinutes|encodeJS}',
64 'wcf.date.relative.hours': '{capture assign=relativeHours}{lang __literal=true}wcf.date.relative.hours{/lang}{/capture}{@$relativeHours|encodeJS}',
65 'wcf.date.relative.pastDays': '{capture assign=relativePastDays}{lang __literal=true}wcf.date.relative.pastDays{/lang}{/capture}{@$relativePastDays|encodeJS}',
8a727072 66 'wcf.date.dateFormat': '{"wcf.date.dateFormat"|language|encodeJS}',
6c0c61b5
TD
67 'wcf.date.dateTimeFormat': '{lang}wcf.date.dateTimeFormat{/lang}',
68 'wcf.date.shortDateTimeFormat': '{lang}wcf.date.shortDateTimeFormat{/lang}',
69 'wcf.date.hour': '{lang}wcf.date.hour{/lang}',
70 'wcf.date.minute': '{lang}wcf.date.minute{/lang}',
71 'wcf.date.timeFormat': '{lang}wcf.date.timeFormat{/lang}',
72 'wcf.date.firstDayOfTheWeek': '{lang}wcf.date.firstDayOfTheWeek{/lang}',
73 'wcf.global.button.add': '{lang}wcf.global.button.add{/lang}',
74 'wcf.global.button.cancel': '{lang}wcf.global.button.cancel{/lang}',
75 'wcf.global.button.close': '{lang}wcf.global.button.close{/lang}',
76 'wcf.global.button.collapsible': '{lang}wcf.global.button.collapsible{/lang}',
77 'wcf.global.button.delete': '{lang}wcf.global.button.delete{/lang}',
78 'wcf.global.button.disable': '{lang}wcf.global.button.disable{/lang}',
79 'wcf.global.button.disabledI18n': '{lang}wcf.global.button.disabledI18n{/lang}',
80 'wcf.global.button.edit': '{lang}wcf.global.button.edit{/lang}',
81 'wcf.global.button.enable': '{lang}wcf.global.button.enable{/lang}',
82 'wcf.global.button.hide': '{lang}wcf.global.button.hide{/lang}',
862936ac 83 'wcf.global.button.insert': '{lang}wcf.global.button.insert{/lang}',
6c0c61b5
TD
84 'wcf.global.button.next': '{lang}wcf.global.button.next{/lang}',
85 'wcf.global.button.preview': '{lang}wcf.global.button.preview{/lang}',
86 'wcf.global.button.reset': '{lang}wcf.global.button.reset{/lang}',
87 'wcf.global.button.save': '{lang}wcf.global.button.save{/lang}',
88 'wcf.global.button.search': '{lang}wcf.global.button.search{/lang}',
89 'wcf.global.button.submit': '{lang}wcf.global.button.submit{/lang}',
90 'wcf.global.button.upload': '{lang}wcf.global.button.upload{/lang}',
91 'wcf.global.confirmation.cancel': '{lang}wcf.global.confirmation.cancel{/lang}',
92 'wcf.global.confirmation.confirm': '{lang}wcf.global.confirmation.confirm{/lang}',
93 'wcf.global.confirmation.title': '{lang}wcf.global.confirmation.title{/lang}',
94 'wcf.global.decimalPoint': '{capture assign=decimalPoint}{lang}wcf.global.decimalPoint{/lang}{/capture}{$decimalPoint|encodeJS}',
95 'wcf.global.error.timeout': '{lang}wcf.global.error.timeout{/lang}',
96 'wcf.global.form.error.empty': '{lang}wcf.global.form.error.empty{/lang}',
97 'wcf.global.form.error.greaterThan': '{lang __literal=true}wcf.global.form.error.greaterThan{/lang}',
98 'wcf.global.form.error.lessThan': '{lang __literal=true}wcf.global.form.error.lessThan{/lang}',
59ab4d0f 99 'wcf.global.form.error.multilingual': '{lang}wcf.global.form.error.multilingual{/lang}',
9c07b271 100 'wcf.global.form.input.maxItems': '{lang}wcf.global.form.input.maxItems{/lang}',
6c0c61b5
TD
101 'wcf.global.language.noSelection': '{lang}wcf.global.language.noSelection{/lang}',
102 'wcf.global.loading': '{lang}wcf.global.loading{/lang}',
862936ac 103 'wcf.global.noSelection': '{lang}wcf.global.noSelection{/lang}',
2130e832 104 'wcf.global.select': '{lang}wcf.global.select{/lang}',
31c199eb
MW
105 'wcf.page.jumpTo': '{lang}wcf.page.jumpTo{/lang}',
106 'wcf.page.jumpTo.description': '{lang}wcf.page.jumpTo.description{/lang}',
abe07e47 107 'wcf.global.page.pagination': '{lang}wcf.global.page.pagination{/lang}',
6c0c61b5
TD
108 'wcf.global.page.next': '{capture assign=pageNext}{lang}wcf.global.page.next{/lang}{/capture}{@$pageNext|encodeJS}',
109 'wcf.global.page.previous': '{capture assign=pagePrevious}{lang}wcf.global.page.previous{/lang}{/capture}{@$pagePrevious|encodeJS}',
110 'wcf.global.pageDirection': '{lang}wcf.global.pageDirection{/lang}',
111 'wcf.global.reason': '{lang}wcf.global.reason{/lang}',
3a8d4181 112 'wcf.global.scrollUp': '{lang}wcf.global.scrollUp{/lang}',
6c0c61b5
TD
113 'wcf.global.success': '{lang}wcf.global.success{/lang}',
114 'wcf.global.success.add': '{lang}wcf.global.success.add{/lang}',
115 'wcf.global.success.edit': '{lang}wcf.global.success.edit{/lang}',
116 'wcf.global.thousandsSeparator': '{capture assign=thousandsSeparator}{lang}wcf.global.thousandsSeparator{/lang}{/capture}{@$thousandsSeparator|encodeJS}',
117 'wcf.page.pagePosition': '{lang __literal=true}wcf.page.pagePosition{/lang}',
6c0c61b5
TD
118 'wcf.style.changeStyle': '{lang}wcf.style.changeStyle{/lang}',
119 'wcf.user.activityPoint': '{lang}wcf.user.activityPoint{/lang}',
6c0c61b5
TD
120 'wcf.user.panel.markAllAsRead': '{lang}wcf.user.panel.markAllAsRead{/lang}',
121 'wcf.user.panel.markAsRead': '{lang}wcf.user.panel.markAsRead{/lang}',
122 'wcf.user.panel.settings': '{lang}wcf.user.panel.settings{/lang}',
2db570c1
MW
123 'wcf.user.panel.showAll': '{lang}wcf.user.panel.showAll{/lang}',
124 'wcf.menu.page': '{lang}wcf.menu.page{/lang}',
02b5fe34
MW
125 'wcf.menu.user': '{lang}wcf.menu.user{/lang}',
126 'wcf.global.button.showMenu': '{lang}wcf.global.button.showMenu{/lang}',
40065fda
MW
127 'wcf.global.button.hideMenu': '{lang}wcf.global.button.hideMenu{/lang}',
128 'wcf.date.datePicker': '{lang}wcf.date.datePicker{/lang}',
129 'wcf.date.datePicker.previousMonth': '{lang}wcf.date.datePicker.previousMonth{/lang}',
130 'wcf.date.datePicker.nextMonth': '{lang}wcf.date.datePicker.nextMonth{/lang}',
131 'wcf.date.datePicker.month': '{lang}wcf.date.datePicker.month{/lang}',
132 'wcf.date.datePicker.year': '{lang}wcf.date.datePicker.year{/lang}',
133 'wcf.date.datePicker.hour': '{lang}wcf.date.datePicker.hour{/lang}',
134 'wcf.date.datePicker.minute': '{lang}wcf.date.datePicker.minute{/lang}'
6c0c61b5
TD
135 {if MODULE_LIKE}
136 ,'wcf.like.button.like': '{lang}wcf.like.button.like{/lang}',
137 'wcf.like.button.dislike': '{lang}wcf.like.button.dislike{/lang}',
138 'wcf.like.tooltip': '{lang}wcf.like.jsTooltip{/lang}',
139 'wcf.like.summary': '{lang}wcf.like.summary{/lang}',
0b52c865
JR
140 'wcf.like.details': '{lang}wcf.like.details{/lang}',
141 'wcf.reactions.react': '{lang}wcf.reactions.react{/lang}'
6c0c61b5
TD
142 {/if}
143
144 {event name='javascriptLanguageImport'}
145 });
c3f37a31
AE
146
147 BootstrapFrontend.setup({
27f8a148
TD
148 backgroundQueue: {
149 url: '{link controller="BackgroundQueuePerform"}{/link}',
150 force: {if $forceBackgroundQueuePerform|isset}true{else}false{/if}
151 },
bfb66525 152 enableUserPopover: {if $__wcf->getSession()->getPermission('user.profile.canViewUserProfile')}true{else}false{/if},
9ba60a8e 153 styleChanger: {if $__wcf->getStyleHandler()->showStyleChanger()}true{else}false{/if}
c3f37a31 154 });
1ea26041 155
5b627f39 156 User.init({@$__wcf->user->userID}, '{@$__wcf->user->username|encodeJS}', {if $__wcf->user->userID}'{@$__wcf->user->getLink()|encodeJS}'{else}''{/if});
0ecda543 157 });
c3f37a31
AE
158
159 // prevent jQuery and other libraries from utilizing define()
160 __require_define_amd = define.amd;
161 define.amd = undefined;
162</script>
163
37113f37
AE
164{include file='__devtoolsLanguageChooser'}
165
0d20df38
AE
166{js application='wcf' lib='jquery' hasTiny=true}
167{js application='wcf' lib='jquery-ui' hasTiny=true}
168{js application='wcf' lib='jquery-ui' file='touchPunch' bundle='WCF.Combined' hasTiny=true}
169{js application='wcf' lib='jquery-ui' file='nestedSortable' bundle='WCF.Combined' hasTiny=true}
385a3e64 170{js application='wcf' lib='polyfill' file='focus-visible' bundle='WCF.Combined' hasTiny=true}
0d20df38
AE
171{js application='wcf' file='WCF.Assets' bundle='WCF.Combined' hasTiny=true}
172{js application='wcf' file='WCF' bundle='WCF.Combined' hasTiny=true}
c3f37a31
AE
173
174<script data-relocate="true">
175 define.amd = __require_define_amd;
176 $.holdReady(true);
177
178 WCF.User.init({@$__wcf->user->userID}, '{@$__wcf->user->username|encodeJS}');
4bbf6ff1
AE
179</script>
180
0d20df38
AE
181{js application='wcf' file='WCF.Like' bundle='WCF.Combined' hasTiny=true}
182{js application='wcf' file='WCF.ACL' bundle='WCF.Combined' hasTiny=true}
183{js application='wcf' file='WCF.Attachment' bundle='WCF.Combined' hasTiny=true}
184{js application='wcf' file='WCF.ColorPicker' bundle='WCF.Combined' hasTiny=true}
185{js application='wcf' file='WCF.Comment' bundle='WCF.Combined' hasTiny=true}
186{js application='wcf' file='WCF.ImageViewer' bundle='WCF.Combined' hasTiny=true}
187{js application='wcf' file='WCF.Label' bundle='WCF.Combined' hasTiny=true}
188{js application='wcf' file='WCF.Location' bundle='WCF.Combined' hasTiny=true}
189{js application='wcf' file='WCF.Message' bundle='WCF.Combined' hasTiny=true}
190{js application='wcf' file='WCF.Poll' bundle='WCF.Combined' hasTiny=true}
191{js application='wcf' file='WCF.Search.Message' bundle='WCF.Combined' hasTiny=true}
192{js application='wcf' file='WCF.User' bundle='WCF.Combined' hasTiny=true}
193{js application='wcf' file='WCF.Moderation' bundle='WCF.Combined' hasTiny=true}
0ecda543
AE
194
195{event name='javascriptInclude'}
196
197<noscript>
11a8294c 198 <style>
0ecda543
AE
199 .jsOnly {
200 display: none !important;
201 }
202
203 .noJsOnly {
204 display: block !important;
205 }
206 </style>
207</noscript>
208
209<script data-relocate="true">
0ecda543 210 $(function() {
abe07e47 211 WCF.System.PageNavigation.init('.pagination');
7edf562b 212 WCF.User.Profile.ActivityPointList.init();
0ecda543 213
05788b25
JR
214 {if MODULE_TROPHY && $__wcf->session->getPermission('user.profile.trophy.canSeeTrophies')}
215 require(['WoltLabSuite/Core/Ui/User/Trophy/List'], function (UserTrophyList) {
216 new UserTrophyList();
217 });
218 {/if}
219
0ecda543
AE
220 {event name='javascriptInit'}
221
222 {if $executeCronjobs}
223 new WCF.Action.Proxy({
224 autoSend: true,
225 data: {
226 className: 'wcf\\data\\cronjob\\CronjobAction',
227 actionName: 'executeCronjobs'
228 },
229 showLoadingOverlay: false,
230 failure: function() {
231 return false;
232 }
233 });
234 {/if}
1b0e255b 235
0ecda543
AE
236 {if $__sessionKeepAlive|isset}
237 new WCF.System.KeepAlive({@$__sessionKeepAlive});
0e69f27c 238
565c80a8 239 {if ENABLE_POLLING && $__wcf->user->userID}
4ce6c1a1
AE
240 require(['WoltLabSuite/Core/Notification/Handler'], function(NotificationHandler) {
241 NotificationHandler.setup({
6e4aa12f 242 enableNotifications: {if $__wcf->useDesktopNotifications()}true{else}false{/if},
859f8fb4 243 icon: '{$__wcf->getStyleHandler()->getStyle()->getFaviconAppleTouchIcon()}',
4ce6c1a1
AE
244 sessionKeepAlive: {@$__sessionKeepAlive}
245 });
0e69f27c 246 });
4ce6c1a1 247 {/if}
0ecda543 248 {/if}
0ecda543 249 });
0ecda543 250</script>
0ecda543
AE
251
252{include file='imageViewer'}
e01fbba2 253{include file='headIncludeJsonLd'}