Merge branch 'next' of github.com:WoltLab/WCF into next
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / acp / templates / header.tpl
1 <!DOCTYPE html>
2 <html dir="{@$__wcf->getLanguage()->getPageDirection()}" lang="{@$__wcf->getLanguage()->getFixedLanguageCode()}">
3 <head>
4 <meta charset="utf-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="robots" content="noindex">
7 <title>{if $pageTitle|isset}{@$pageTitle|language} - {/if}{lang}wcf.global.acp{/lang}{if PACKAGE_ID} - {PAGE_TITLE|language}{/if}</title>
8
9 <!-- Stylesheets -->
10 <link href="//fonts.googleapis.com/css?family=Open+Sans:400,300,600" rel="stylesheet">
11 {@$__wcf->getStyleHandler()->getStylesheet(true)}
12 {event name='stylesheets'}
13
14 <!-- Icons -->
15 <link rel="shortcut icon" href="{@$__wcf->getPath()}images/favicon.ico">
16 <link rel="apple-touch-icon" href="{@$__wcf->getPath()}images/apple-touch-icon.png">
17
18 <script>
19 var SID_ARG_2ND = '';
20 var WCF_PATH = '{@$__wcf->getPath()}';
21 var WSC_API_URL = '{@$__wcf->getActivePath()}acp/';
22 var SECURITY_TOKEN = '{@SECURITY_TOKEN}';
23 var LANGUAGE_ID = {@$__wcf->getLanguage()->languageID};
24 var LANGUAGE_USE_INFORMAL_VARIANT = {if LANGUAGE_USE_INFORMAL_VARIANT}true{else}false{/if};
25 var TIME_NOW = {@TIME_NOW};
26 var LAST_UPDATE_TIME = {@LAST_UPDATE_TIME};
27 var URL_LEGACY_MODE = false;
28
29 {if ENABLE_DEBUG_MODE}
30 {* This constant is a compiler option, it does not exist in production. *}
31 var COMPILER_TARGET_DEFAULT = {if $__wcf->user->userID}true{else}false{/if};
32 {/if}
33 </script>
34
35 {js application='wcf' file='require' bundle='WoltLabSuite.Core' core='true'}
36 {js application='wcf' file='require.config' bundle='WoltLabSuite.Core' core='true'}
37 {js application='wcf' file='require.linearExecution' bundle='WoltLabSuite.Core' core='true'}
38 {js application='wcf' file='wcf.globalHelper' bundle='WoltLabSuite.Core' core='true'}
39 {js application='wcf' file='closest' bundle='WoltLabSuite.Core' core='true'}
40 <script>
41 requirejs.config({
42 baseUrl: '{@$__wcf->getPath()}js',
43 urlArgs: 't={@LAST_UPDATE_TIME}'
44 {hascontent}
45 , paths: {
46 {content}{event name='requirePaths'}{/content}
47 }
48 {/hascontent}
49 });
50 {event name='requireConfig'}
51 </script>
52 <script>
53 require(['Language', 'WoltLabSuite/Core/Acp/Bootstrap', 'User'], function(Language, AcpBootstrap, User) {
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.acp.search.noResults': '{lang}wcf.acp.search.noResults{/lang}',
60 'wcf.clipboard.item.unmarkAll': '{lang}wcf.clipboard.item.unmarkAll{/lang}',
61 'wcf.date.relative.now': '{lang __literal=true}wcf.date.relative.now{/lang}',
62 'wcf.date.relative.minutes': '{capture assign=relativeMinutes}{lang __literal=true}wcf.date.relative.minutes{/lang}{/capture}{@$relativeMinutes|encodeJS}',
63 'wcf.date.relative.hours': '{capture assign=relativeHours}{lang __literal=true}wcf.date.relative.hours{/lang}{/capture}{@$relativeHours|encodeJS}',
64 'wcf.date.relative.pastDays': '{capture assign=relativePastDays}{lang __literal=true}wcf.date.relative.pastDays{/lang}{/capture}{@$relativePastDays|encodeJS}',
65 'wcf.date.dateFormat': '{"wcf.date.dateFormat"|language|encodeJS}',
66 'wcf.date.dateTimeFormat': '{lang}wcf.date.dateTimeFormat{/lang}',
67 'wcf.date.shortDateTimeFormat': '{lang}wcf.date.shortDateTimeFormat{/lang}',
68 'wcf.date.hour': '{lang}wcf.date.hour{/lang}',
69 'wcf.date.minute': '{lang}wcf.date.minute{/lang}',
70 'wcf.date.timeFormat': '{lang}wcf.date.timeFormat{/lang}',
71 'wcf.date.firstDayOfTheWeek': '{lang}wcf.date.firstDayOfTheWeek{/lang}',
72 'wcf.global.button.add': '{lang}wcf.global.button.add{/lang}',
73 'wcf.global.button.cancel': '{lang}wcf.global.button.cancel{/lang}',
74 'wcf.global.button.close': '{lang}wcf.global.button.close{/lang}',
75 'wcf.global.button.collapsible': '{lang}wcf.global.button.collapsible{/lang}',
76 'wcf.global.button.delete': '{lang}wcf.global.button.delete{/lang}',
77 'wcf.global.button.disable': '{lang}wcf.global.button.disable{/lang}',
78 'wcf.global.button.disabledI18n': '{lang}wcf.global.button.disabledI18n{/lang}',
79 'wcf.global.button.edit': '{lang}wcf.global.button.edit{/lang}',
80 'wcf.global.button.enable': '{lang}wcf.global.button.enable{/lang}',
81 'wcf.global.button.hide': '{lang}wcf.global.button.hide{/lang}',
82 'wcf.global.button.insert': '{lang}wcf.global.button.insert{/lang}',
83 'wcf.global.button.next': '{lang}wcf.global.button.next{/lang}',
84 'wcf.global.button.preview': '{lang}wcf.global.button.preview{/lang}',
85 'wcf.global.button.reset': '{lang}wcf.global.button.reset{/lang}',
86 'wcf.global.button.save': '{lang}wcf.global.button.save{/lang}',
87 'wcf.global.button.search': '{lang}wcf.global.button.search{/lang}',
88 'wcf.global.button.submit': '{lang}wcf.global.button.submit{/lang}',
89 'wcf.global.button.upload': '{lang}wcf.global.button.upload{/lang}',
90 'wcf.global.confirmation.cancel': '{lang}wcf.global.confirmation.cancel{/lang}',
91 'wcf.global.confirmation.confirm': '{lang}wcf.global.confirmation.confirm{/lang}',
92 'wcf.global.confirmation.title': '{lang}wcf.global.confirmation.title{/lang}',
93 'wcf.global.decimalPoint': '{capture assign=decimalPoint}{lang}wcf.global.decimalPoint{/lang}{/capture}{$decimalPoint|encodeJS}',
94 'wcf.global.error.timeout': '{lang}wcf.global.error.timeout{/lang}',
95 'wcf.global.error.title': '{lang}wcf.global.error.title{/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}',
99 'wcf.global.form.error.multilingual': '{lang}wcf.global.form.error.multilingual{/lang}',
100 'wcf.global.loading': '{lang}wcf.global.loading{/lang}',
101 'wcf.global.noSelection': '{lang}wcf.global.noSelection{/lang}',
102 'wcf.global.select': '{lang}wcf.global.select{/lang}',
103 'wcf.page.jumpTo': '{lang}wcf.page.jumpTo{/lang}',
104 'wcf.page.jumpTo.description': '{lang}wcf.page.jumpTo.description{/lang}',
105 'wcf.global.page.pagination': '{lang}wcf.global.page.pagination{/lang}',
106 'wcf.global.page.next': '{capture assign=pageNext}{lang}wcf.global.page.next{/lang}{/capture}{@$pageNext|encodeJS}',
107 'wcf.global.page.previous': '{capture assign=pagePrevious}{lang}wcf.global.page.previous{/lang}{/capture}{@$pagePrevious|encodeJS}',
108 'wcf.global.pageDirection': '{lang}wcf.global.pageDirection{/lang}',
109 'wcf.global.reason': '{lang}wcf.global.reason{/lang}',
110 'wcf.global.scrollUp': '{lang}wcf.global.scrollUp{/lang}',
111 'wcf.global.success': '{lang}wcf.global.success{/lang}',
112 'wcf.global.success.add': '{lang}wcf.global.success.add{/lang}',
113 'wcf.global.success.edit': '{lang}wcf.global.success.edit{/lang}',
114 'wcf.global.thousandsSeparator': '{capture assign=thousandsSeparator}{lang}wcf.global.thousandsSeparator{/lang}{/capture}{@$thousandsSeparator|encodeJS}',
115 'wcf.page.pagePosition': '{lang __literal=true}wcf.page.pagePosition{/lang}'
116 {event name='javascriptLanguageImport'}
117 });
118
119 AcpBootstrap.setup({
120 bootstrap: {
121 enableMobileMenu: {if $__isLogin|empty}true{else}false{/if}
122 }
123 });
124
125 User.init({@$__wcf->user->userID}, '{@$__wcf->user->username|encodeJS}', {if $__wcf->user->userID}'{@$__wcf->user->getLink()|encodeJS}'{else}''{/if});
126 });
127 </script>
128
129 <script>
130 // prevent jQuery and other libraries from utilizing define()
131 __require_define_amd = define.amd;
132 define.amd = undefined;
133 </script>
134 {js application='wcf' lib='jquery'}
135 {js application='wcf' lib='jquery-ui'}
136 {js application='wcf' lib='jquery-ui' file='touchPunch' bundle='WCF.Combined'}
137 {js application='wcf' lib='jquery-ui' file='nestedSortable' bundle='WCF.Combined'}
138 {js application='wcf' file='WCF.Assets' bundle='WCF.Combined'}
139 {js application='wcf' file='WCF' bundle='WCF.Combined'}
140 {js application='wcf' acp='true' file='WCF.ACP'}
141 <script>
142 define.amd = __require_define_amd;
143 $.holdReady(true);
144 WCF.User.init({$__wcf->user->userID}, '{@$__wcf->user->username|encodeJS}');
145 </script>
146 <script>
147 $(function() {
148 if (jQuery.browser.touch) $('html').addClass('touch');
149
150 WCF.System.PageNavigation.init('.pagination');
151
152 {if $__wcf->user->userID}
153 new WCF.ACP.Search();
154 {/if}
155
156 {event name='javascriptInit'}
157
158 $('form[method=get]').attr('method', 'post');
159 });
160 </script>
161 {event name='javascriptInclude'}
162 </head>
163
164 <body id="tpl{$templateName|ucfirst}" data-template="{$templateName}" data-application="{$templateNameApplication}" class="wcfAcp">
165 <a id="top"></a>
166
167 <div id="pageContainer" class="pageContainer">
168 {event name='beforePageHeader'}
169
170 {include file='pageHeader'}
171
172 {event name='afterPageHeader'}
173
174 <div id="acpPageContentContainer" class="acpPageContentContainer">
175 {include file='pageMenu'}
176
177 <section id="main" class="main" role="main">
178 <div class="layoutBoundary">
179 <div id="content" class="content">
180