Merge branch '3.0'
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / acp / templates / header.tpl
CommitLineData
158bd3ca
TD
1<!DOCTYPE html>
2<html dir="{@$__wcf->getLanguage()->getPageDirection()}" lang="{@$__wcf->getLanguage()->getFixedLanguageCode()}">
3<head>
cbbb348c
AE
4 <meta charset="utf-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <meta name="robots" content="noindex">
5c2036ab 7 <title>{if $pageTitle|isset}{@$pageTitle|language} - {/if}{lang}wcf.global.acp{/lang}{if PACKAGE_ID} - {PAGE_TITLE|language}{/if}</title>
f201f350 8
d09792c2
AE
9 {* work-around for Microsoft Edge that sometimes does not apply this style, if it was set via an external stylesheet *}
10 <style>ol, ul { list-style: none; }</style>
11
f201f350 12 <!-- Stylesheets -->
0edf9f6c 13 <link href="//fonts.googleapis.com/css?family=Open+Sans:400,300,600" rel="stylesheet">
f201f350
AE
14 {@$__wcf->getStyleHandler()->getStylesheet(true)}
15 {event name='stylesheets'}
16
208bac1e 17 <!-- Icons -->
3d9f265d
AE
18 <link rel="apple-touch-icon" sizes="180x180" href="{@$__wcf->getPath()}images/favicon/default.apple-touch-icon.png">
19 <link rel="manifest" href="{@$__wcf->getPath()}images/favicon/default.manifest.json">
20 <link rel="shortcut icon" href="{@$__wcf->getPath()}images/favicon/default.favicon.ico">
21 <meta name="msapplication-config" content="{@$__wcf->getPath()}images/favicon/default.browserconfig.xml">
22 <meta name="theme-color" content="#3a6d9c">
208bac1e 23
df844448 24 <script>
6e8d8f67 25 var SID_ARG_2ND = '';
7a353b6a 26 var WCF_PATH = '{@$__wcf->getPath()}';
5d1c96bc 27 var WSC_API_URL = '{@$__wcf->getActivePath()}acp/';
158bd3ca 28 var SECURITY_TOKEN = '{@SECURITY_TOKEN}';
22a51072 29 var LANGUAGE_ID = {@$__wcf->getLanguage()->languageID};
eae52096 30 var LANGUAGE_USE_INFORMAL_VARIANT = {if LANGUAGE_USE_INFORMAL_VARIANT}true{else}false{/if};
8574cbfd 31 var TIME_NOW = {@TIME_NOW};
a623cd24 32 var LAST_UPDATE_TIME = {@LAST_UPDATE_TIME};
6e8d8f67 33 var URL_LEGACY_MODE = false;
0e69f27c 34 var ENABLE_DEBUG_MODE = {if ENABLE_DEBUG_MODE}true{else}false{/if};
32669648 35 var ENABLE_DEVELOPER_TOOLS = {if ENABLE_DEVELOPER_TOOLS}true{else}false{/if};
89484ba0 36 var WSC_API_VERSION = {@WSC_API_VERSION};
f5e3a61b 37
96d31616
AE
38 {* This constant is a compiler option, it does not exist in production. *}
39 {* Unlike the frontend, this option must be defined in the ACP at all times. *}
40 var COMPILER_TARGET_DEFAULT = true;
158bd3ca 41 </script>
e44f2cf1 42
935cdbf3 43 {js application='wcf' lib='polyfill' file='promise' bundle='WoltLabSuite.Core' core='true'}
91b3ad54
AE
44 {js application='wcf' file='require' bundle='WoltLabSuite.Core' core='true'}
45 {js application='wcf' file='require.config' bundle='WoltLabSuite.Core' core='true'}
46 {js application='wcf' file='require.linearExecution' bundle='WoltLabSuite.Core' core='true'}
47 {js application='wcf' file='wcf.globalHelper' bundle='WoltLabSuite.Core' core='true'}
04310d59 48 {js application='wcf' file='closest' bundle='WoltLabSuite.Core' core='true'}
55919774
TD
49 <script>
50 requirejs.config({
8a603e6d 51 baseUrl: '{@$__wcf->getPath()}js',
33d93082 52 urlArgs: 't={@LAST_UPDATE_TIME}'
7ae41c12
TD
53 {hascontent}
54 , paths: {
55 {content}{event name='requirePaths'}{/content}
56 }
57 {/hascontent}
55919774 58 });
7ae41c12 59 {event name='requireConfig'}
55919774 60 </script>
7cedac20 61 <script>
5650aa98
AE
62 require(['Language', 'WoltLabSuite/Core/Acp/Bootstrap', 'User'], function(Language, AcpBootstrap, User) {
63 Language.addObject({
64 '__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}' ],
65 '__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}' ],
66 '__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}' ],
67 '__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}' ],
68 'wcf.acp.search.noResults': '{lang}wcf.acp.search.noResults{/lang}',
69 'wcf.clipboard.item.unmarkAll': '{lang}wcf.clipboard.item.unmarkAll{/lang}',
70 'wcf.date.relative.now': '{lang __literal=true}wcf.date.relative.now{/lang}',
71 'wcf.date.relative.minutes': '{capture assign=relativeMinutes}{lang __literal=true}wcf.date.relative.minutes{/lang}{/capture}{@$relativeMinutes|encodeJS}',
72 'wcf.date.relative.hours': '{capture assign=relativeHours}{lang __literal=true}wcf.date.relative.hours{/lang}{/capture}{@$relativeHours|encodeJS}',
73 'wcf.date.relative.pastDays': '{capture assign=relativePastDays}{lang __literal=true}wcf.date.relative.pastDays{/lang}{/capture}{@$relativePastDays|encodeJS}',
8a727072 74 'wcf.date.dateFormat': '{"wcf.date.dateFormat"|language|encodeJS}',
5650aa98
AE
75 'wcf.date.dateTimeFormat': '{lang}wcf.date.dateTimeFormat{/lang}',
76 'wcf.date.shortDateTimeFormat': '{lang}wcf.date.shortDateTimeFormat{/lang}',
77 'wcf.date.hour': '{lang}wcf.date.hour{/lang}',
78 'wcf.date.minute': '{lang}wcf.date.minute{/lang}',
79 'wcf.date.timeFormat': '{lang}wcf.date.timeFormat{/lang}',
80 'wcf.date.firstDayOfTheWeek': '{lang}wcf.date.firstDayOfTheWeek{/lang}',
81 'wcf.global.button.add': '{lang}wcf.global.button.add{/lang}',
82 'wcf.global.button.cancel': '{lang}wcf.global.button.cancel{/lang}',
83 'wcf.global.button.close': '{lang}wcf.global.button.close{/lang}',
84 'wcf.global.button.collapsible': '{lang}wcf.global.button.collapsible{/lang}',
85 'wcf.global.button.delete': '{lang}wcf.global.button.delete{/lang}',
86 'wcf.global.button.disable': '{lang}wcf.global.button.disable{/lang}',
87 'wcf.global.button.disabledI18n': '{lang}wcf.global.button.disabledI18n{/lang}',
88 'wcf.global.button.edit': '{lang}wcf.global.button.edit{/lang}',
89 'wcf.global.button.enable': '{lang}wcf.global.button.enable{/lang}',
90 'wcf.global.button.hide': '{lang}wcf.global.button.hide{/lang}',
91 'wcf.global.button.insert': '{lang}wcf.global.button.insert{/lang}',
92 'wcf.global.button.next': '{lang}wcf.global.button.next{/lang}',
93 'wcf.global.button.preview': '{lang}wcf.global.button.preview{/lang}',
94 'wcf.global.button.reset': '{lang}wcf.global.button.reset{/lang}',
95 'wcf.global.button.save': '{lang}wcf.global.button.save{/lang}',
96 'wcf.global.button.search': '{lang}wcf.global.button.search{/lang}',
97 'wcf.global.button.submit': '{lang}wcf.global.button.submit{/lang}',
98 'wcf.global.button.upload': '{lang}wcf.global.button.upload{/lang}',
99 'wcf.global.confirmation.cancel': '{lang}wcf.global.confirmation.cancel{/lang}',
100 'wcf.global.confirmation.confirm': '{lang}wcf.global.confirmation.confirm{/lang}',
101 'wcf.global.confirmation.title': '{lang}wcf.global.confirmation.title{/lang}',
102 'wcf.global.decimalPoint': '{capture assign=decimalPoint}{lang}wcf.global.decimalPoint{/lang}{/capture}{$decimalPoint|encodeJS}',
103 'wcf.global.error.timeout': '{lang}wcf.global.error.timeout{/lang}',
104 'wcf.global.error.title': '{lang}wcf.global.error.title{/lang}',
105 'wcf.global.form.error.empty': '{lang}wcf.global.form.error.empty{/lang}',
106 'wcf.global.form.error.greaterThan': '{lang __literal=true}wcf.global.form.error.greaterThan{/lang}',
107 'wcf.global.form.error.lessThan': '{lang __literal=true}wcf.global.form.error.lessThan{/lang}',
108 'wcf.global.form.error.multilingual': '{lang}wcf.global.form.error.multilingual{/lang}',
b15af128 109 'wcf.global.form.input.maxItems': '{lang}wcf.global.form.input.maxItems{/lang}',
5650aa98
AE
110 'wcf.global.loading': '{lang}wcf.global.loading{/lang}',
111 'wcf.global.noSelection': '{lang}wcf.global.noSelection{/lang}',
2130e832 112 'wcf.global.select': '{lang}wcf.global.select{/lang}',
5650aa98
AE
113 'wcf.page.jumpTo': '{lang}wcf.page.jumpTo{/lang}',
114 'wcf.page.jumpTo.description': '{lang}wcf.page.jumpTo.description{/lang}',
115 'wcf.global.page.pagination': '{lang}wcf.global.page.pagination{/lang}',
116 'wcf.global.page.next': '{capture assign=pageNext}{lang}wcf.global.page.next{/lang}{/capture}{@$pageNext|encodeJS}',
117 'wcf.global.page.previous': '{capture assign=pagePrevious}{lang}wcf.global.page.previous{/lang}{/capture}{@$pagePrevious|encodeJS}',
118 'wcf.global.pageDirection': '{lang}wcf.global.pageDirection{/lang}',
119 'wcf.global.reason': '{lang}wcf.global.reason{/lang}',
120 'wcf.global.scrollUp': '{lang}wcf.global.scrollUp{/lang}',
121 'wcf.global.success': '{lang}wcf.global.success{/lang}',
122 'wcf.global.success.add': '{lang}wcf.global.success.add{/lang}',
123 'wcf.global.success.edit': '{lang}wcf.global.success.edit{/lang}',
124 'wcf.global.thousandsSeparator': '{capture assign=thousandsSeparator}{lang}wcf.global.thousandsSeparator{/lang}{/capture}{@$thousandsSeparator|encodeJS}',
2db570c1
MW
125 'wcf.page.pagePosition': '{lang __literal=true}wcf.page.pagePosition{/lang}',
126 'wcf.menu.page': '{lang}wcf.menu.page{/lang}',
127 'wcf.menu.user': '{lang}wcf.menu.user{/lang}'
5650aa98 128 {event name='javascriptLanguageImport'}
55919774 129 });
5650aa98
AE
130
131 AcpBootstrap.setup({
132 bootstrap: {
1e47264a 133 enableMobileMenu: {if PACKAGE_ID && $__isLogin|empty}true{else}false{/if}
5650aa98
AE
134 }
135 });
136
8b6f7a6f 137 User.init({@$__wcf->user->userID}, '{@$__wcf->user->username|encodeJS}', {if $__wcf->user->userID}'{@$__wcf->user->getLink()|encodeJS}'{else}''{/if});
5650aa98 138 });
208bac1e 139 </script>
a8160b8d
AE
140
141 <script>
142 // prevent jQuery and other libraries from utilizing define()
143 __require_define_amd = define.amd;
144 define.amd = undefined;
145 </script>
0d20df38 146 {js application='wcf' lib='jquery'}
208bac1e
AE
147 {js application='wcf' lib='jquery-ui'}
148 {js application='wcf' lib='jquery-ui' file='touchPunch' bundle='WCF.Combined'}
149 {js application='wcf' lib='jquery-ui' file='nestedSortable' bundle='WCF.Combined'}
150 {js application='wcf' file='WCF.Assets' bundle='WCF.Combined'}
151 {js application='wcf' file='WCF' bundle='WCF.Combined'}
152 {js application='wcf' acp='true' file='WCF.ACP'}
153 <script>
a8160b8d 154 define.amd = __require_define_amd;
208bac1e
AE
155 $.holdReady(true);
156 WCF.User.init({$__wcf->user->userID}, '{@$__wcf->user->username|encodeJS}');
157 </script>
158 <script>
158bd3ca 159 $(function() {
7a353b6a 160 if (jQuery.browser.touch) $('html').addClass('touch');
5c2c30ed 161
abe07e47 162 WCF.System.PageNavigation.init('.pagination');
184a8d6d 163
50922192 164 {if $__wcf->user->userID}
6476e7a1 165 new WCF.ACP.Search();
50922192 166 {/if}
71662ae8 167
2e78af8d 168 {event name='javascriptInit'}
f762ea4f
AE
169
170 $('form[method=get]').attr('method', 'post');
158bd3ca 171 });
71c93c40 172 </script>
208bac1e 173 {event name='javascriptInclude'}
158bd3ca
TD
174</head>
175
887a3153 176<body id="tpl{$templateName|ucfirst}" data-template="{$templateName}" data-application="{$templateNameApplication}" class="wcfAcp">
158bd3ca 177 <a id="top"></a>
df812fa0 178
4e71a79b 179 {assign var=_acpPageSubMenuActive value=false}
d2eedbaa
MS
180 {if PACKAGE_ID}
181 {assign var=_activeMenuItems value=$__wcf->getACPMenu()->getActiveMenuItems()}
182 {foreach from=$__wcf->getACPMenu()->getMenuItems('') item=_sectionMenuItem}
183 {if $_sectionMenuItem->menuItem|in_array:$_activeMenuItems}{assign var=_acpPageSubMenuActive value=true}{/if}
184 {/foreach}
185 {/if}
4e71a79b 186 <div id="pageContainer" class="pageContainer{if !PACKAGE_ID || !$__wcf->user->userID} acpPageHiddenMenu{elseif $_acpPageSubMenuActive} acpPageSubMenuActive{/if}">
f2b50825
AE
187 {event name='beforePageHeader'}
188
189 {include file='pageHeader'}
190
191 {event name='afterPageHeader'}
192
6476e7a1
AE
193 <div id="acpPageContentContainer" class="acpPageContentContainer">
194 {include file='pageMenu'}
158bd3ca 195
6476e7a1
AE
196 <section id="main" class="main" role="main">
197 <div class="layoutBoundary">
198 <div id="content" class="content">
7ae41c12 199