Merge branch 'master' into next
[GitHub/WoltLab/WCF.git] / com.woltlab.wcf / templates / headIncludeJavaScript.tpl
1 {*
2 DO NOT EDIT THIS FILE
3 *}
4
5 <script>
6 var SID_ARG_2ND = '';
7 var WCF_PATH = '{@$__wcf->getPath()}';
8 var SECURITY_TOKEN = '{@SECURITY_TOKEN}';
9 var LANGUAGE_ID = {@$__wcf->getLanguage()->languageID};
10 var TIME_NOW = {@TIME_NOW};
11 var URL_LEGACY_MODE = {if URL_LEGACY_MODE}true{else}false{/if};
12 </script>
13
14 {js application='wcf' file='require' bundle='WCF.Core' core='true'}
15 {js application='wcf' file='require.config' bundle='WCF.Core' core='true'}
16 <script>
17 requirejs.config({
18 baseUrl: '{@$__wcf->getPath()}js'
19 });
20 </script>
21 <script data-relocate="true">
22 require(['Language', 'WoltLab/WCF/BootstrapFrontend'], function(Language, BootstrapFrontend) {
23 Language.addObject({
24 '__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}' ],
25 '__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}' ],
26 '__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}' ],
27 '__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}' ],
28 'wcf.clipboard.item.unmarkAll': '{lang}wcf.clipboard.item.unmarkAll{/lang}',
29 'wcf.date.relative.now': '{lang}wcf.date.relative.now{/lang}',
30 'wcf.date.relative.minutes': '{capture assign=relativeMinutes}{lang}wcf.date.relative.minutes{/lang}{/capture}{@$relativeMinutes|encodeJS}',
31 'wcf.date.relative.hours': '{capture assign=relativeHours}{lang}wcf.date.relative.hours{/lang}{/capture}{@$relativeHours|encodeJS}',
32 'wcf.date.relative.pastDays': '{capture assign=relativePastDays}{lang}wcf.date.relative.pastDays{/lang}{/capture}{@$relativePastDays|encodeJS}',
33 'wcf.date.dateFormat': '{lang}wcf.date.dateFormat{/lang}',
34 'wcf.date.dateTimeFormat': '{lang}wcf.date.dateTimeFormat{/lang}',
35 'wcf.date.shortDateTimeFormat': '{lang}wcf.date.shortDateTimeFormat{/lang}',
36 'wcf.date.hour': '{lang}wcf.date.hour{/lang}',
37 'wcf.date.minute': '{lang}wcf.date.minute{/lang}',
38 'wcf.date.timeFormat': '{lang}wcf.date.timeFormat{/lang}',
39 'wcf.date.firstDayOfTheWeek': '{lang}wcf.date.firstDayOfTheWeek{/lang}',
40 'wcf.global.button.add': '{lang}wcf.global.button.add{/lang}',
41 'wcf.global.button.cancel': '{lang}wcf.global.button.cancel{/lang}',
42 'wcf.global.button.close': '{lang}wcf.global.button.close{/lang}',
43 'wcf.global.button.collapsible': '{lang}wcf.global.button.collapsible{/lang}',
44 'wcf.global.button.delete': '{lang}wcf.global.button.delete{/lang}',
45 'wcf.global.button.disable': '{lang}wcf.global.button.disable{/lang}',
46 'wcf.global.button.disabledI18n': '{lang}wcf.global.button.disabledI18n{/lang}',
47 'wcf.global.button.edit': '{lang}wcf.global.button.edit{/lang}',
48 'wcf.global.button.enable': '{lang}wcf.global.button.enable{/lang}',
49 'wcf.global.button.hide': '{lang}wcf.global.button.hide{/lang}',
50 'wcf.global.button.next': '{lang}wcf.global.button.next{/lang}',
51 'wcf.global.button.preview': '{lang}wcf.global.button.preview{/lang}',
52 'wcf.global.button.reset': '{lang}wcf.global.button.reset{/lang}',
53 'wcf.global.button.save': '{lang}wcf.global.button.save{/lang}',
54 'wcf.global.button.search': '{lang}wcf.global.button.search{/lang}',
55 'wcf.global.button.submit': '{lang}wcf.global.button.submit{/lang}',
56 'wcf.global.button.upload': '{lang}wcf.global.button.upload{/lang}',
57 'wcf.global.confirmation.cancel': '{lang}wcf.global.confirmation.cancel{/lang}',
58 'wcf.global.confirmation.confirm': '{lang}wcf.global.confirmation.confirm{/lang}',
59 'wcf.global.confirmation.title': '{lang}wcf.global.confirmation.title{/lang}',
60 'wcf.global.decimalPoint': '{capture assign=decimalPoint}{lang}wcf.global.decimalPoint{/lang}{/capture}{$decimalPoint|encodeJS}',
61 'wcf.global.error.timeout': '{lang}wcf.global.error.timeout{/lang}',
62 'wcf.global.form.error.empty': '{lang}wcf.global.form.error.empty{/lang}',
63 'wcf.global.form.error.greaterThan': '{lang __literal=true}wcf.global.form.error.greaterThan{/lang}',
64 'wcf.global.form.error.lessThan': '{lang __literal=true}wcf.global.form.error.lessThan{/lang}',
65 'wcf.global.form.input.maxItems': '{lang}wcf.global.form.input.maxItems{/lang}',
66 'wcf.global.language.noSelection': '{lang}wcf.global.language.noSelection{/lang}',
67 'wcf.global.loading': '{lang}wcf.global.loading{/lang}',
68 'wcf.global.page.jumpTo': '{lang}wcf.global.page.jumpTo{/lang}',
69 'wcf.global.page.jumpTo.description': '{lang}wcf.global.page.jumpTo.description{/lang}',
70 'wcf.global.page.pageNavigation': '{lang}wcf.global.page.pageNavigation{/lang}',
71 'wcf.global.page.next': '{capture assign=pageNext}{lang}wcf.global.page.next{/lang}{/capture}{@$pageNext|encodeJS}',
72 'wcf.global.page.previous': '{capture assign=pagePrevious}{lang}wcf.global.page.previous{/lang}{/capture}{@$pagePrevious|encodeJS}',
73 'wcf.global.pageDirection': '{lang}wcf.global.pageDirection{/lang}',
74 'wcf.global.reason': '{lang}wcf.global.reason{/lang}',
75 'wcf.global.sidebar.hideLeftSidebar': '{lang}wcf.global.sidebar.hideLeftSidebar{/lang}',
76 'wcf.global.sidebar.hideRightSidebar': '{lang}wcf.global.sidebar.hideRightSidebar{/lang}',
77 'wcf.global.sidebar.showLeftSidebar': '{lang}wcf.global.sidebar.showLeftSidebar{/lang}',
78 'wcf.global.sidebar.showRightSidebar': '{lang}wcf.global.sidebar.showRightSidebar{/lang}',
79 'wcf.global.success': '{lang}wcf.global.success{/lang}',
80 'wcf.global.success.add': '{lang}wcf.global.success.add{/lang}',
81 'wcf.global.success.edit': '{lang}wcf.global.success.edit{/lang}',
82 'wcf.global.thousandsSeparator': '{capture assign=thousandsSeparator}{lang}wcf.global.thousandsSeparator{/lang}{/capture}{@$thousandsSeparator|encodeJS}',
83 'wcf.page.pagePosition': '{lang __literal=true}wcf.page.pagePosition{/lang}',
84 'wcf.page.sitemap': '{lang}wcf.page.sitemap{/lang}',
85 'wcf.style.changeStyle': '{lang}wcf.style.changeStyle{/lang}',
86 'wcf.user.activityPoint': '{lang}wcf.user.activityPoint{/lang}',
87 'wcf.style.changeStyle': '{lang}wcf.style.changeStyle{/lang}',
88 'wcf.user.panel.markAllAsRead': '{lang}wcf.user.panel.markAllAsRead{/lang}',
89 'wcf.user.panel.markAsRead': '{lang}wcf.user.panel.markAsRead{/lang}',
90 'wcf.user.panel.settings': '{lang}wcf.user.panel.settings{/lang}',
91 'wcf.user.panel.showAll': '{lang}wcf.user.panel.showAll{/lang}'
92 {if MODULE_LIKE}
93 ,'wcf.like.button.like': '{lang}wcf.like.button.like{/lang}',
94 'wcf.like.button.dislike': '{lang}wcf.like.button.dislike{/lang}',
95 'wcf.like.tooltip': '{lang}wcf.like.jsTooltip{/lang}',
96 'wcf.like.summary': '{lang}wcf.like.summary{/lang}',
97 'wcf.like.details': '{lang}wcf.like.details{/lang}'
98 {/if}
99
100 {event name='javascriptLanguageImport'}
101 });
102
103 BootstrapFrontend.setup({
104 styleChanger: {if $__wcf->getStyleHandler()->countStyles() > 1}true{else}false{/if}
105 });
106 });
107
108 // prevent jQuery and other libraries from utilizing define()
109 __require_define_amd = define.amd;
110 define.amd = undefined;
111 </script>
112
113 {if JQUERY_SOURCE == 'google'}
114 <script data-relocate="true" src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery{if !ENABLE_DEBUG_MODE}.min{/if}.js"></script>
115 {elseif JQUERY_SOURCE == 'microsoft'}
116 <script data-relocate="true" src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.4{if !ENABLE_DEBUG_MODE}.min{/if}.js"></script>
117 {elseif JQUERY_SOURCE == 'cloudflare'}
118 <script data-relocate="true" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery{if !ENABLE_DEBUG_MODE}.min{/if}.js"></script>
119 {else}
120 {js application='wcf' lib='jquery'}
121 {/if}
122 {if JQUERY_SOURCE != 'local'}
123 <script data-relocate="true">
124 if (!window.jQuery) {
125 document.write('{js application='wcf' lib='jquery' encodeJs='true'}');
126 }
127 </script>
128 {/if}
129
130 {js application='wcf' lib='jquery-ui'}
131 {js application='wcf' lib='jquery-ui' file='touchPunch' bundle='WCF.Combined'}
132 {js application='wcf' lib='jquery-ui' file='nestedSortable' bundle='WCF.Combined'}
133 {js application='wcf' file='WCF.Assets' bundle='WCF.Combined'}
134 {js application='wcf' file='WCF' bundle='WCF.Combined'}
135
136 <script data-relocate="true">
137 define.amd = __require_define_amd;
138 $.holdReady(true);
139
140 WCF.User.init({@$__wcf->user->userID}, '{@$__wcf->user->username|encodeJS}');
141 </script>
142
143 {js application='wcf' file='WCF.Like' bundle='WCF.Combined'}
144 {js application='wcf' file='WCF.ACL' bundle='WCF.Combined'}
145 {js application='wcf' file='WCF.Attachment' bundle='WCF.Combined'}
146 {js application='wcf' file='WCF.ColorPicker' bundle='WCF.Combined'}
147 {js application='wcf' file='WCF.Comment' bundle='WCF.Combined'}
148 {js application='wcf' file='WCF.ImageViewer' bundle='WCF.Combined'}
149 {js application='wcf' file='WCF.Label' bundle='WCF.Combined'}
150 {js application='wcf' file='WCF.Location' bundle='WCF.Combined'}
151 {js application='wcf' file='WCF.Message' bundle='WCF.Combined'}
152 {js application='wcf' file='WCF.Poll' bundle='WCF.Combined'}
153 {js application='wcf' file='WCF.Search.Message' bundle='WCF.Combined'}
154 {js application='wcf' file='WCF.User' bundle='WCF.Combined'}
155 {js application='wcf' file='WCF.Moderation' bundle='WCF.Combined'}
156
157 {event name='javascriptInclude'}
158
159 <noscript>
160 <style>
161 .jsOnly {
162 display: none !important;
163 }
164
165 .noJsOnly {
166 display: block !important;
167 }
168 </style>
169 </noscript>
170
171 <script data-relocate="true">
172 //<![CDATA[
173 $(function() {
174 new WCF.Effect.SmoothScroll();
175
176 WCF.System.PageNavigation.init('.pageNavigation');
177 WCF.Date.Picker.init();
178 WCF.User.Profile.ActivityPointList.init();
179
180 {event name='javascriptInit'}
181
182 {if $executeCronjobs}
183 new WCF.Action.Proxy({
184 autoSend: true,
185 data: {
186 className: 'wcf\\data\\cronjob\\CronjobAction',
187 actionName: 'executeCronjobs'
188 },
189 showLoadingOverlay: false,
190 failure: function() {
191 return false;
192 }
193 });
194 {/if}
195
196 {* invoke background queue roughly every 10th request *}
197 if (Math.random() < 0.1) {
198 require(['Ajax'], function(Ajax) {
199 // fire and forget background queue perform task
200 Ajax.apiOnce({
201 url: '{link controller="BackgroundQueuePerform"}{/link}',
202 ignoreError: true,
203 silent: true
204 });
205 });
206 }
207
208 {if $__sessionKeepAlive|isset}
209 new WCF.System.KeepAlive({@$__sessionKeepAlive});
210 {/if}
211 });
212 //]]>
213 </script>
214
215 {include file='imageViewer'}