Merge branch '3.0'
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / acp / templates / boxAdd.tpl
CommitLineData
11fd4618
MW
1{include file='header' pageTitle='wcf.acp.box.'|concat:$action}
2
f5069034
JR
3<script data-relocate="true">
4 {if $__wcf->session->getPermission('admin.content.cms.canUseMedia')}{include file='mediaJavaScript'}{/if}
be3a8e90 5
f5069034
JR
6 {if $boxType == 'system'}
7 require(['WoltLabSuite/Core/Acp/Ui/Box/Controller/Handler'], function(AcpUiBoxControllerHandler) {
b1756163 8 AcpUiBoxControllerHandler.init({if $boxController}{@$boxController->objectTypeID}{/if});
f5069034 9 });
78b341f1
AE
10 {/if}
11
12 require(['Dictionary', 'Language', 'WoltLabSuite/Core/Acp/Ui/Box/Handler'], function(Dictionary, Language, AcpUiBoxHandler) {
13 Language.addObject({
14 'wcf.page.pageObjectID': '{lang}wcf.page.pageObjectID{/lang}',
15 {foreach from=$pageNodeList item=pageNode}
16 {capture assign='pageObjectIDLanguageItem'}{lang __optional=true}wcf.page.pageObjectID.{@$pageNode->identifier}{/lang}{/capture}
17 {if $pageObjectIDLanguageItem}
18 'wcf.page.pageObjectID.{@$pageNode->identifier}': '{@$pageObjectIDLanguageItem}',
19 {/if}
20 {capture assign='pageObjectIDLanguageItem'}{lang __optional=true}wcf.page.pageObjectID.search.{@$pageNode->identifier}{/lang}{/capture}
21 {if $pageObjectIDLanguageItem}
22 'wcf.page.pageObjectID.search.{@$pageNode->identifier}': '{@$pageObjectIDLanguageItem}',
23 {/if}
5636588a 24 {/foreach}
78b341f1
AE
25 'wcf.page.pageObjectID.search.noResults': '{lang}wcf.page.pageObjectID.search.noResults{/lang}',
26 'wcf.page.pageObjectID.search.results': '{lang}wcf.page.pageObjectID.search.results{/lang}',
27 'wcf.page.pageObjectID.search.terms': '{lang}wcf.page.pageObjectID.search.terms{/lang}'
f5069034 28 });
78b341f1
AE
29
30 var handlers = new Dictionary();
31 {foreach from=$pageHandlers key=handlerPageID item=requireObjectID}
32 handlers.set({@$handlerPageID}, {if $requireObjectID}true{else}false{/if});
33 {/foreach}
34
35 AcpUiBoxHandler.init(handlers, '{$boxType}');
36 });
be3a8e90
MS
37
38 {if $__wcf->session->getPermission('admin.content.cms.canUseMedia')}
39 require(['WoltLabSuite/Core/Media/Manager/Select'], function(MediaManagerSelect) {
f5ecf730 40 new MediaManagerSelect({
a9566c33 41 dialogTitle: '{lang}wcf.media.chooseImage{/lang}',
dac0007f 42 imagesOnly: 1
f5ecf730 43 });
be3a8e90
MS
44 });
45 {/if}
f5069034 46</script>
56eb7314 47
487db634 48<header class="contentHeader">
b5c94e9e 49 <div class="contentHeaderTitle">
04ef1206 50 <h1 class="contentTitle">{if $action == 'add'}{lang}wcf.acp.box.add{/lang}{else}{lang}wcf.acp.box.edit{/lang}{/if}</h1>
b5c94e9e
AE
51 </div>
52
53 <nav class="contentHeaderNavigation">
54 <ul>
55 <li><a href="{link controller='BoxList'}{/link}" class="button"><span class="icon icon16 fa-list"></span> <span>{lang}wcf.acp.menu.link.cms.box.list{/lang}</span></a></li>
56
57 {event name='contentHeaderNavigation'}
58 </ul>
59 </nav>
11fd4618
MW
60</header>
61
62{include file='formError'}
63
64{if $success|isset}
65 <p class="success">{lang}wcf.global.success.{$action}{/lang}</p>
66{/if}
67
9dc79430
AE
68{if $action == 'edit' && !$lastVersion|empty}
69 <p class="info">{lang}wcf.acp.box.lastVersion{/lang}</p>
70{/if}
71
b8ff6bac 72<form id="formContainer" method="post" action="{if $action == 'add'}{link controller='BoxAdd'}{/link}{else}{link controller='BoxEdit' id=$boxID}{/link}{/if}">
64bbd0d1
MW
73 <div class="section tabMenuContainer" data-active="{$activeTabMenuItem}" data-store="activeTabMenuItem" id="pageTabMenuContainer">
74 <nav class="tabMenu">
75 <ul>
04ef1206 76 <li><a href="{@$__wcf->getAnchor('general')}">{lang}wcf.global.form.data{/lang}</a></li>
64bbd0d1 77 <li><a href="{@$__wcf->getAnchor('contents')}">{lang}wcf.acp.box.contents{/lang}</a></li>
f5ecf730
MW
78 <li><a href="{@$__wcf->getAnchor('pages')}">{lang}wcf.acp.page.list{/lang}</a></li>
79 <li><a href="{@$__wcf->getAnchor('acl')}">{lang}wcf.acl.access{/lang}</a></li>
64bbd0d1
MW
80
81 {event name='tabMenuTabs'}
82 </ul>
83 </nav>
11fd4618 84
64bbd0d1
MW
85 <div id="general" class="tabMenuContent">
86 <div class="section">
87 <dl{if $errorField == 'name'} class="formError"{/if}>
88 <dt><label for="name">{lang}wcf.global.name{/lang}</label></dt>
89 <dd>
49568e60 90 <input type="text" id="name" name="name" value="{$name}" autofocus class="long" maxlength="255">
64bbd0d1
MW
91 {if $errorField == 'name'}
92 <small class="innerError">
93 {if $errorType == 'empty'}
94 {lang}wcf.global.form.error.empty{/lang}
95 {else}
96 {lang}wcf.acp.box.name.error.{@$errorType}{/lang}
97 {/if}
98 </small>
11fd4618 99 {/if}
64bbd0d1
MW
100 </dd>
101 </dl>
11fd4618 102
3b5ed183
MW
103 {if $boxType == 'system'}
104 <dl id="boxControllerContainer"{if $errorField == 'boxControllerID'} class="formError"{/if}{if !$boxController} style="display: none;"{/if}>
105 <dt><label for="boxControllerID">{lang}wcf.acp.box.boxController{/lang}</label></dt>
106 <dd>
107 <select name="boxControllerID" id="boxControllerID">
108 {foreach from=$availableBoxControllers item=availableBoxController}
109 <option value="{@$availableBoxController->objectTypeID}"{if $boxController && $availableBoxController->objectTypeID == $boxController->objectTypeID} selected{/if} data-supported-positions='[{implode from=$availableBoxPositions[$availableBoxController->objectTypeID] item=$__position}"{$__position}"{/implode}]'>{lang}wcf.acp.box.boxController.{@$availableBoxController->objectType}{/lang}</option>
110 {/foreach}
111 </select>
112
113 {if $errorField == 'boxType'}
114 <small class="innerError">
115 {if $errorType == 'empty'}
116 {lang}wcf.global.form.error.empty{/lang}
117 {else}
118 {lang}wcf.acp.box.boxController.error.{@$errorType}{/lang}
119 {/if}
120 </small>
121 {/if}
122 </dd>
123 </dl>
124 {/if}
11fd4618 125
64bbd0d1
MW
126 <dl{if $errorField == 'position'} class="formError"{/if}>
127 <dt><label for="position">{lang}wcf.acp.box.position{/lang}</label></dt>
128 <dd>
129 <select name="position" id="position">
130 {foreach from=$availablePositions item=availablePosition}
54afcc57 131 <option value="{@$availablePosition}"{if $availablePosition == $position} selected{/if}>{lang}wcf.acp.box.position.{@$availablePosition}{/lang}</option>
64bbd0d1
MW
132 {/foreach}
133 </select>
134
135 {if $errorField == 'position'}
136 <small class="innerError">
137 {if $errorType == 'empty'}
138 {lang}wcf.global.form.error.empty{/lang}
139 {else}
140 {lang}wcf.acp.box.position.error.{@$errorType}{/lang}
141 {/if}
142 </small>
5636588a 143 {/if}
64bbd0d1
MW
144 </dd>
145 </dl>
146
147 <dl>
f5ecf730 148 <dt><label for="showOrder">{lang}wcf.global.showOrder{/lang}</label></dt>
64bbd0d1 149 <dd>
e5f9b56c 150 <input type="number" id="showOrder" name="showOrder" value="{@$showOrder}" class="tiny" min="0">
64bbd0d1
MW
151 </dd>
152 </dl>
153
154 <dl{if $errorField == 'cssClassName'} class="formError"{/if}>
155 <dt><label for="cssClassName">{lang}wcf.acp.box.cssClassName{/lang}</label></dt>
156 <dd>
04ef1206 157 <input type="text" id="cssClassName" name="cssClassName" value="{$cssClassName}" class="long" maxlength="255">
64bbd0d1
MW
158 {if $errorField == 'cssClassName'}
159 <small class="innerError">
160 {if $errorType == 'empty'}
161 {lang}wcf.global.form.error.empty{/lang}
162 {else}
163 {lang}wcf.acp.box.cssClassName.error.{@$errorType}{/lang}
164 {/if}
165 </small>
5636588a 166 {/if}
64bbd0d1
MW
167 </dd>
168 </dl>
169
170 <dl>
171 <dt></dt>
172 <dd>
6f2bc235 173 <label><input type="checkbox" id="showHeader" name="showHeader" value="1"{if $showHeader} checked{/if}> {lang}wcf.acp.box.showHeader{/lang}</label>
64bbd0d1
MW
174 </dd>
175 </dl>
176 </div>
56eb7314 177
3cab11c0
AE
178 {if $boxType === 'system'}
179 <input type="hidden" name="linkType" value="none">
180 {else}
181 <section class="section">
182 <h2 class="sectionTitle">{lang}wcf.acp.box.link{/lang}</h2>
183
184 <dl>
185 <dt></dt>
186 <dd class="floated">
187 <label><input type="radio" name="linkType" value="none"{if $linkType == 'none'} checked{/if}> {lang}wcf.acp.box.linkType.none{/lang}</label>
188 <label><input type="radio" name="linkType" value="internal"{if $linkType == 'internal'} checked{/if}> {lang}wcf.acp.box.linkType.internal{/lang}</label>
189 <label><input type="radio" name="linkType" value="external"{if $linkType == 'external'} checked{/if}> {lang}wcf.acp.box.linkType.external{/lang}</label>
190 </dd>
191 </dl>
192
193 <dl id="linkPageIDContainer"{if $errorField == 'linkPageID'} class="formError"{/if}{if $linkType != 'internal'} style="display: none;"{/if}>
194 <dt><label for="linkPageID">{lang}wcf.acp.page.page{/lang}</label></dt>
195 <dd>
196 <select name="linkPageID" id="linkPageID">
197 <option value="0">{lang}wcf.global.noSelection{/lang}</option>
198
199 {foreach from=$pageNodeList item=pageNode}
200 <option value="{@$pageNode->pageID}"{if $pageNode->pageID == $linkPageID} selected{/if} data-identifier="{@$pageNode->identifier}">{if $pageNode->getDepth() > 1}{@"&nbsp;&nbsp;&nbsp;&nbsp;"|str_repeat:($pageNode->getDepth() - 1)}{/if}{$pageNode->name}</option>
201 {/foreach}
202 </select>
203 {if $errorField == 'linkPageID'}
204 <small class="innerError">
205 {if $errorType == 'empty'}
206 {lang}wcf.global.form.error.empty{/lang}
207 {else}
208 {lang}wcf.acp.box.linkPageID.error.{@$errorType}{/lang}
209 {/if}
210 </small>
211 {/if}
212 </dd>
213 </dl>
214
215 <dl id="linkPageObjectIDContainer"{if $errorField == 'linkPageObjectID'} class="formError"{/if}{if !$linkPageID || !$pageHandler[$linkPageID]|isset} style="display: none;"{/if}>
216 <dt><label for="linkPageObjectID">{lang}wcf.page.pageObjectID{/lang}</label></dt>
217 <dd>
218 <div class="inputAddon">
219 <input type="text" id="linkPageObjectID" name="linkPageObjectID" value="{$linkPageObjectID}" class="short">
220 <a href="#" id="searchLinkPageObjectID" class="inputSuffix button jsTooltip" title="{lang}wcf.page.pageObjectID.search{/lang}"><span class="icon icon16 fa-search"></span></a>
221 </div>
222 {if $errorField == 'linkPageObjectID'}
223 <small class="innerError">
224 {if $errorType == 'empty'}
225 {lang}wcf.global.form.error.empty{/lang}
226 {else}
227 {lang}wcf.acp.box.linkPageObjectID.error.{@$errorType}{/lang}
228 {/if}
229 </small>
230 {/if}
231 </dd>
232 </dl>
233
234 <dl id="externalURLContainer"{if $errorField == 'externalURL'} class="formError"{/if}{if $linkType != 'external'} style="display: none;"{/if}>
235 <dt><label for="externalURL">{lang}wcf.acp.box.link.externalURL{/lang}</label></dt>
236 <dd>
237 <input type="text" name="externalURL" id="externalURL" value="{$externalURL}" class="long" maxlength="255" placeholder="http://">
238 {if $errorField == 'externalURL'}
239 <small class="innerError">
240 {if $errorType == 'empty'}
241 {lang}wcf.global.form.error.empty{/lang}
242 {else}
243 {lang}wcf.acp.box.link.externalURL.error.{$errorType}{/lang}
244 {/if}
245 </small>
246 {/if}
247 </dd>
248 </dl>
249
250 {event name='linkFields'}
251 </section>
be3a8e90
MS
252 {/if}
253
254 <div id="boxConditions">
255 {if $boxController && $boxController->getProcessor()|is_subclass_of:'wcf\system\box\IConditionBoxController'}
b1756163 256 {@$boxController->getProcessor()->getConditionsTemplate()}
be3a8e90 257 {/if}
64bbd0d1 258 </div>
be3a8e90 259 </div>
64bbd0d1
MW
260
261 <div id="contents" class="tabMenuContent">
262 {if !$isMultilingual && $boxType != 'system'}
263 <div class="section">
264 {if $__wcf->session->getPermission('admin.content.cms.canUseMedia')}
265 <dl{if $errorField == 'image'} class="formError"{/if}>
266 <dt><label for="image">{lang}wcf.acp.box.image{/lang}</label></dt>
11fd4618 267 <dd>
695c56e6 268 <div id="imageDisplay" class="selectedImagePreview">
f4d9e975 269 {if $images[0]|isset && $images[0]->hasThumbnail('small')}
64bbd0d1
MW
270 {@$images[0]->getThumbnailTag('small')}
271 {/if}
272 </div>
a9566c33 273 <p class="button jsMediaSelectButton" data-store="imageID0" data-display="imageDisplay">{lang}wcf.media.chooseImage{/lang}</p>
e5f9b56c 274 <input type="hidden" name="imageID[0]" id="imageID0"{if $imageID[0]|isset} value="{@$imageID[0]}"{/if}>
64bbd0d1
MW
275 {if $errorField == 'image'}
276 <small class="innerError">{lang}wcf.acp.box.image.error.{@$errorType}{/lang}</small>
11fd4618
MW
277 {/if}
278 </dd>
279 </dl>
f4d9e975 280 {elseif $action == 'edit' && $images[0]|isset && $images[0]->hasThumbnail('small')}
64bbd0d1
MW
281 <dl>
282 <dt>{lang}wcf.acp.box.image{/lang}</dt>
11fd4618 283 <dd>
64bbd0d1 284 <div id="imageDisplay">{@$images[0]->getThumbnailTag('small')}</div>
11fd4618
MW
285 </dd>
286 </dl>
64bbd0d1
MW
287 {/if}
288
289 <dl{if $errorField == 'title'} class="formError"{/if}>
f5ecf730 290 <dt><label for="title0">{lang}wcf.global.title{/lang}</label></dt>
64bbd0d1 291 <dd>
04ef1206 292 <input type="text" id="title0" name="title[0]" value="{if !$title[0]|empty}{$title[0]}{/if}" class="long" maxlength="255">
64bbd0d1
MW
293 {if $errorField == 'title'}
294 <small class="innerError">
295 {if $errorType == 'empty'}
296 {lang}wcf.global.form.error.empty{/lang}
297 {else}
298 {lang}wcf.acp.box.title.error.{@$errorType}{/lang}
299 {/if}
300 </small>
301 {/if}
302 </dd>
303 </dl>
304
305 <dl{if $errorField == 'content'} class="formError"{/if}>
306 <dt><label for="content0">{lang}wcf.acp.box.content{/lang}</label></dt>
307 <dd>
3d17e142
MW
308 {include file='__boxAddContent' languageID=0}
309
64bbd0d1
MW
310 {if $errorField == 'content'}
311 <small class="innerError">
312 {if $errorType == 'empty'}
313 {lang}wcf.global.form.error.empty{/lang}
314 {else}
315 {lang}wcf.acp.box.content.error.{@$errorType}{/lang}
316 {/if}
317 </small>
318 {/if}
319 </dd>
320 </dl>
11fd4618 321 </div>
64bbd0d1
MW
322 {else}
323 <div class="tabMenuContainer">
324 <nav class="menu">
325 <ul>
326 {foreach from=$availableLanguages item=availableLanguage}
327 {assign var='containerID' value='language'|concat:$availableLanguage->languageID}
328 <li><a href="{@$__wcf->getAnchor($containerID)}">{$availableLanguage->languageName}</a></li>
329 {/foreach}
330 </ul>
331 </nav>
332
333 {foreach from=$availableLanguages item=availableLanguage}
334 <div id="language{@$availableLanguage->languageID}" class="tabMenuContent">
335 <div class="section">
336 {if $boxType != 'system'}
337 {if $__wcf->session->getPermission('admin.content.cms.canUseMedia')}
338 <dl{if $errorField == 'image'|concat:$availableLanguage->languageID} class="formError"{/if}>
339 <dt><label for="image{@$availableLanguage->languageID}">{lang}wcf.acp.box.image{/lang}</label></dt>
340 <dd>
695c56e6 341 <div id="imageDisplay{@$availableLanguage->languageID}" class="selectedImagePreview">
f4d9e975 342 {if $images[$availableLanguage->languageID]|isset && $images[$availableLanguage->languageID]->hasThumbnail('small')}
64bbd0d1
MW
343 {@$images[$availableLanguage->languageID]->getThumbnailTag('small')}
344 {/if}
345 </div>
a9566c33 346 <p class="button jsMediaSelectButton" data-store="imageID{@$availableLanguage->languageID}" data-display="imageDisplay{@$availableLanguage->languageID}">{lang}wcf.media.chooseImage{/lang}</p>
e5f9b56c 347 <input type="hidden" name="imageID[{@$availableLanguage->languageID}]" id="imageID{@$availableLanguage->languageID}"{if $imageID[$availableLanguage->languageID]|isset} value="{@$imageID[$availableLanguage->languageID]}"{/if}>
64bbd0d1
MW
348 {if $errorField == 'image'|concat:$availableLanguage->languageID}
349 <small class="innerError">{lang}wcf.acp.box.image.error.{@$errorType}{/lang}</small>
350 {/if}
351 </dd>
352 </dl>
f4d9e975 353 {elseif $action == 'edit' && $images[$availableLanguage->languageID]|isset && $images[$availableLanguage->languageID]->hasThumbnail('small')}
64bbd0d1
MW
354 <dl>
355 <dt>{lang}wcf.acp.box.image{/lang}</dt>
356 <dd>
357 <div id="imageDisplay">{@$images[$availableLanguage->languageID]->getThumbnailTag('small')}</div>
358 </dd>
359 </dl>
360 {/if}
361 {/if}
362
363 <dl{if $errorField == 'title'|concat:$availableLanguage->languageID} class="formError"{/if}>
2f273839 364 <dt><label for="title{@$availableLanguage->languageID}">{lang}wcf.global.title{/lang}</label></dt>
64bbd0d1 365 <dd>
04ef1206 366 <input type="text" id="title{@$availableLanguage->languageID}" name="title[{@$availableLanguage->languageID}]" value="{if !$title[$availableLanguage->languageID]|empty}{$title[$availableLanguage->languageID]}{/if}" class="long" maxlength="255">
64bbd0d1
MW
367 {if $errorField == 'title'|concat:$availableLanguage->languageID}
368 <small class="innerError">
369 {if $errorType == 'empty'}
370 {lang}wcf.global.form.error.empty{/lang}
371 {else}
372 {lang}wcf.acp.box.title.error.{@$errorType}{/lang}
373 {/if}
374 </small>
375 {/if}
376 </dd>
377 </dl>
378
379 {if $boxType != 'system'}
380 <dl{if $errorField == 'content'|concat:$availableLanguage->languageID} class="formError"{/if}>
381 <dt><label for="content{@$availableLanguage->languageID}">{lang}wcf.acp.box.content{/lang}</label></dt>
382 <dd>
3d17e142
MW
383 {include file='__boxAddContent' languageID=$availableLanguage->languageID}
384
64bbd0d1
MW
385 {if $errorField == 'content'|concat:$availableLanguage->languageID}
386 <small class="innerError">
387 {if $errorType == 'empty'}
388 {lang}wcf.global.form.error.empty{/lang}
389 {else}
390 {lang}wcf.acp.box.content.error.{@$errorType}{/lang}
391 {/if}
392 </small>
393 {/if}
394 </dd>
395 </dl>
396 {/if}
397 </div>
398 </div>
399 {/foreach}
400 </div>
401 {/if}
11fd4618 402 </div>
64bbd0d1
MW
403
404 <div id="pages" class="tabMenuContent">
405 <div class="section">
406 <dl>
407 <dt></dt>
408 <dd>
6f2bc235 409 <label><input type="checkbox" id="visibleEverywhere" name="visibleEverywhere" value="1"{if $visibleEverywhere} checked{/if}> {lang}wcf.acp.box.visibleEverywhere{/lang}</label>
f5ecf730 410 <script data-relocate="true">
e6a11b4a 411 require([], function() {
fe7801f3
AE
412 // visibility toggle
413 var visibilityExceptionHidden = elById('visibilityExceptionHidden');
414 var visibilityExceptionVisible = elById('visibilityExceptionVisible');
415
416 elById('visibleEverywhere').addEventListener('change', function() {
417 window[this.checked ? 'elShow' : 'elHide'](visibilityExceptionHidden);
418 window[this.checked ? 'elHide' : 'elShow'](visibilityExceptionVisible);
419 });
f5ecf730
MW
420 });
421 </script>
64bbd0d1
MW
422 </dd>
423 </dl>
424
425 <dl>
f5ecf730
MW
426 <dt>
427 <span id="visibilityExceptionVisible"{if $visibleEverywhere} style="display: none"{/if}>{lang}wcf.acp.box.visibilityException.visible{/lang}</span>
428 <span id="visibilityExceptionHidden"{if !$visibleEverywhere} style="display: none"{/if}>{lang}wcf.acp.box.visibilityException.hidden{/lang}</span>
429 </dt>
64bbd0d1 430 <dd>
e6a11b4a 431 {include file='scrollablePageCheckboxList' pageCheckboxListContainerID='boxVisibilitySettings' pageCheckboxID='pageIDs'}
64bbd0d1
MW
432 </dd>
433 </dl>
434 </div>
435 </div>
98889e94
MW
436
437 <div id="acl" class="tabMenuContent">
438 {include file='aclSimple'}
439 </div>
ac2ab969
MS
440
441 {event name='tabMenuContents'}
64bbd0d1 442 </div>
11fd4618
MW
443
444 <div class="formSubmit">
e5f9b56c
MW
445 <input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s">
446 <input type="hidden" name="isMultilingual" value="{@$isMultilingual}">
f5ecf730 447 <input type="hidden" name="boxType" value="{$boxType}">
11fd4618
MW
448 {@SECURITY_TOKEN_INPUT_TAG}
449 </div>
450</form>
451
452{include file='footer'}