1 {include file='header' pageTitle='wcf.acp.page.'|concat:$action}
4 <script data-relocate="true">
5 elById('name').addEventListener('blur', function() {
6 var name = this.value.toLowerCase();
8 name = name.replace(/ /g, '-');
9 name = name.replace(/[^a-z0-9-]/gi, '');
12 if (elById('customURL').value === '') {
13 elById('customURL').value = name;
16 {foreach from=$availableLanguages item=availableLanguage}
17 if (elById('customURL{@$availableLanguage->languageID}').value === '') {
18 elById('customURL{@$availableLanguage->languageID}').value = name + '-{@$availableLanguage->languageCode}';
24 {elseif $page->pageType !== 'system'}
25 <script data-relocate="true">
26 require(['Language', 'WoltLabSuite/Core/Acp/Ui/Page/Copy'], function (Language, AcpUiPageCopy) {
28 'wcf.acp.page.copy': '{jslang}wcf.acp.page.copy{/jslang}'
34 <div id="acpPageCopyDialog" style="display: none">
36 {lang}wcf.acp.page.copy.description{/lang}
39 <div class="formSubmit">
40 <a href="{link controller='PageAdd' presetPageID=$page->pageID}{/link}" class="button buttonPrimary">{lang}wcf.global.button.submit{/lang}</a>
45 <header class="contentHeader">
46 <div class="contentHeaderTitle">
47 <h1 class="contentTitle">{if $action == 'add'}{lang}wcf.acp.page.add{/lang}{else}{lang}wcf.acp.page.edit{/lang}{/if}</h1>
50 <nav class="contentHeaderNavigation">
52 {if $action == 'edit'}
53 {if $page->pageType !== 'system'}
54 <li><a href="#" class="button jsButtonCopyPage">{icon name='copy'} {lang}wcf.acp.page.button.copyPage{/lang}</a></li>
57 {if !$page->requireObjectID}
58 <li><a href="{$page->getLink()}" class="button">{icon name='magnifying-glass'} <span>{lang}wcf.acp.page.button.viewPage{/lang}</span></a></li>
61 <li><a href="{link controller='PageBoxOrder' id=$page->pageID}{/link}" class="button">{icon name='arrow-down-short-wide'} <span>{lang}wcf.acp.page.button.boxOrder{/lang}</span></a></li>
63 <li><a href="{link controller='PageList'}{/link}" class="button">{icon name='list'} <span>{lang}wcf.acp.menu.link.cms.page.list{/lang}</span></a></li>
65 {event name='contentHeaderNavigation'}
70 {if $action == 'edit' && !$lastVersion|empty}
71 <woltlab-core-notice type="info">{lang}wcf.acp.page.lastVersion{/lang}</woltlab-core-notice>
74 {include file='shared_formNotice'}
76 <form method="post" action="{if $action == 'add'}{link controller='PageAdd'}{/link}{else}{link controller='PageEdit' id=$pageID}{/link}{/if}">
77 <div class="section tabMenuContainer" data-active="{$activeTabMenuItem}" data-store="activeTabMenuItem" id="pageTabMenuContainer">
80 <li><a href="#general">{lang}wcf.global.form.data{/lang}</a></li>
81 <li><a href="#contents">{lang}wcf.acp.page.contents{/lang}</a></li>
82 <li><a href="#boxes">{lang}wcf.acp.box.list{/lang}</a></li>
84 {if $action != 'edit' || $page->pageType != 'system'}
85 <li><a href="#acl">{lang}wcf.acl.access{/lang}</a></li>
88 {event name='tabMenuTabs'}
92 <div id="general" class="tabMenuContent">
94 <dl{if $errorField == 'name'} class="formError"{/if}>
95 <dt><label for="name">{lang}wcf.global.name{/lang}</label></dt>
97 <input type="text" id="name" name="name" value="{$name}" autofocus class="long" maxlength="255">
98 {if $errorField == 'name'}
99 <small class="innerError">
100 {if $errorType == 'empty'}
101 {lang}wcf.global.form.error.empty{/lang}
103 {lang}wcf.acp.page.name.error.{@$errorType}{/lang}
110 <dl{if $errorField == 'parentPageID'} class="formError"{/if}>
111 <dt><label for="parentPageID">{lang}wcf.acp.page.parentPage{/lang}</label></dt>
113 <select name="parentPageID" id="parentPageID"{if $action == 'edit' && $page->hasFixedParent} disabled{/if}>
114 <option value="0">{lang}wcf.acp.page.parentPage.none{/lang}</option>
116 {foreach from=$pageNodeList item=pageNode}
117 <option value="{$pageNode->pageID}"{if $pageNode->pageID == $parentPageID} selected{/if}{if $pageNode->requireObjectID || ($action === 'edit' && $pageNode->pageID == $page->pageID)} disabled{/if}>{if $pageNode->getDepth() > 1}{@" "|str_repeat:($pageNode->getDepth() - 1)}{/if}{$pageNode->name}</option>
120 {if $errorField == 'parentPageID'}
121 <small class="innerError">
122 {if $errorType == 'empty'}
123 {lang}wcf.global.form.error.empty{/lang}
125 {lang}wcf.acp.page.parentPage.error.{@$errorType}{/lang}
132 <dl{if $errorField == 'applicationPackageID'} class="formError"{/if}{if $action == 'edit' && $page->originIsSystem} style="display: none"{/if}>
133 <dt><label for="applicationPackageID">{lang}wcf.acp.page.application{/lang}</label></dt>
135 <select name="applicationPackageID" id="applicationPackageID"{if $action == 'edit' && $page->originIsSystem} disabled{/if}>
136 {foreach from=$availableApplications item=availableApplication}
137 <option value="{$availableApplication->packageID}"{if $availableApplication->packageID == $applicationPackageID} selected{/if}>{$availableApplication->domainName}{$availableApplication->domainPath}</option>
140 {if $errorField == 'applicationPackageID'}
141 <small class="innerError">
142 {if $errorType == 'empty'}
143 {lang}wcf.global.form.error.empty{/lang}
145 {lang}wcf.acp.page.application.error.{@$errorType}{/lang}
152 {if $action === 'edit' && $page->originIsSystem}
153 <dl{if $errorField == 'overrideApplicationPackageID'} class="formError"{/if}>
154 <dt><label for="overrideApplicationPackageID">{lang}wcf.acp.page.application{/lang}</label></dt>
156 <select name="overrideApplicationPackageID" id="overrideApplicationPackageID">
157 {assign var='_overrideApplicationPackageID' value=$overrideApplicationPackageID}
158 {if !$_overrideApplicationPackageID}{assign var='_overrideApplicationPackageID' value=$page->applicationPackageID}{/if}
159 {foreach from=$availableApplications item=availableApplication}
160 <option value="{$availableApplication->packageID}"{if $availableApplication->packageID == $_overrideApplicationPackageID} selected{/if}>{$availableApplication->domainName}{$availableApplication->domainPath}</option>
163 {if $errorField == 'overrideApplicationPackageID'}
164 <small class="innerError">
165 {if $errorType == 'empty'}
166 {lang}wcf.global.form.error.empty{/lang}
168 {lang}wcf.acp.page.application.error.{@$errorType}{/lang}
176 {if !$isMultilingual}
177 <dl{if $errorField == 'customURL_0'} class="formError"{/if}>
178 <dt><label for="customURL">{lang}wcf.acp.page.customURL{/lang}</label></dt>
180 <input type="text" id="customURL" name="customURL[0]" value="{if !$customURL[0]|empty}{$customURL[0]}{/if}" class="long" maxlength="255">
181 {if $errorField == 'customURL_0'}
182 <small class="innerError">
183 {if $errorType == 'empty'}
184 {lang}wcf.global.form.error.empty{/lang}
186 {lang}wcf.acp.page.customURL.error.{@$errorType}{/lang}
193 {foreach from=$availableLanguages item=availableLanguage}
194 {assign var='__errorFieldName' value='customURL_'|concat:$availableLanguage->languageID}
195 <dl{if $errorField == $__errorFieldName} class="formError"{/if}>
196 <dt><label for="customURL{@$availableLanguage->languageID}">{lang}wcf.acp.page.customURL{/lang} ({$availableLanguage->languageName})</label></dt>
198 <input type="text" id="customURL{@$availableLanguage->languageID}" name="customURL[{@$availableLanguage->languageID}]" value="{if !$customURL[$availableLanguage->languageID]|empty}{$customURL[$availableLanguage->languageID]}{/if}" class="long" maxlength="255">
199 {if $errorField == $__errorFieldName}
200 <small class="innerError">
201 {if $errorType == 'empty'}
202 {lang}wcf.global.form.error.empty{/lang}
204 {lang}wcf.acp.page.customURL.error.{@$errorType}{/lang}
213 <dl{if $errorField == 'cssClassName'} class="formError"{/if}>
214 <dt><label for="cssClassName">{lang}wcf.acp.page.cssClassName{/lang}</label></dt>
216 <input type="text" id="cssClassName" name="cssClassName" value="{$cssClassName}" class="long" maxlength="255">
217 {if $errorField == 'cssClassName'}
218 <small class="innerError">
219 {if $errorType == 'empty'}
220 {lang}wcf.global.form.error.empty{/lang}
222 {lang}wcf.acp.page.cssClassName.error.{@$errorType}{/lang}
229 {if $action != 'edit' || $page->pageType != 'system'}
233 <label><input type="checkbox" id="isDisabled" name="isDisabled" value="1"{if $isDisabled} checked{/if}> {lang}wcf.acp.page.isDisabled{/lang}</label>
241 <label><input type="checkbox" id="availableDuringOfflineMode" name="availableDuringOfflineMode" value="1"{if $availableDuringOfflineMode} checked{/if}> {lang}wcf.acp.page.availableDuringOfflineMode{/lang}</label>
248 <label><input type="checkbox" id="allowSpidersToIndex" name="allowSpidersToIndex" value="1"{if $allowSpidersToIndex} checked{/if}> {lang}wcf.acp.page.allowSpidersToIndex{/lang}</label>
252 {if $action === 'add'}
256 <label><input type="checkbox" id="addPageToMainMenu" name="addPageToMainMenu" value="1"{if $addPageToMainMenu} checked{/if}> {lang}wcf.acp.page.addPageToMainMenu{/lang}</label>
258 <script data-relocate="true">
259 elById('addPageToMainMenu').addEventListener('change', function() {
261 elShow(elById('parentMenuItemDl'));
264 elHide(elById('parentMenuItemDl'));
271 <dl id="parentMenuItemDl"{if $errorField == 'parentMenuItemID'} class="formError"{/if}{if !$addPageToMainMenu} style="display: none"{/if}>
272 <dt><label for="parentMenuItemID">{lang}wcf.acp.menu.item.parentItem{/lang}</label></dt>
274 <select name="parentMenuItemID" id="parentMenuItemID">
275 <option value="0">{lang}wcf.global.noSelection{/lang}</option>
277 {foreach from=$menuItemNodeList item=menuItemNode}
278 <option value="{$menuItemNode->itemID}"{if $menuItemNode->itemID == $parentMenuItemID} selected{/if}>{if $menuItemNode->getDepth() > 1}{@" "|str_repeat:($menuItemNode->getDepth() - 1)}{/if}{$menuItemNode->getTitle()}</option>
281 {if $errorField == 'parentMenuItemID'}
282 <small class="innerError">
283 {if $errorType == 'empty'}
284 {lang}wcf.global.form.error.empty{/lang}
286 {lang}wcf.acp.page.parentMenuItem.error.{@$errorType}{/lang}
294 {if $pageType !== 'system'}
298 <label><input type="checkbox" id="enableShareButtons" name="enableShareButtons" value="1"{if $enableShareButtons} checked{/if}> {lang}wcf.acp.page.enableShareButtons{/lang}</label>
303 {event name='dataFields'}
307 <div id="contents" class="tabMenuContent">
308 {if !$isMultilingual && $pageType != 'system'}
309 <div class="section">
310 <dl{if $errorField == 'title'} class="formError"{/if}>
311 <dt><label for="title">{lang}wcf.global.title{/lang}</label></dt>
313 <input type="text" id="title" name="title[0]" value="{if !$title[0]|empty}{$title[0]}{/if}" class="long" maxlength="255">
314 {if $errorField == 'title'}
315 <small class="innerError">
316 {if $errorType == 'empty'}
317 {lang}wcf.global.form.error.empty{/lang}
319 {lang}wcf.acp.page.title.error.{@$errorType}{/lang}
326 {event name='informationFields'}
328 <dl{if $errorField == 'content'} class="formError"{/if}>
329 <dt><label for="content0">{lang}wcf.acp.page.content{/lang}</label></dt>
331 {include file='__pageAddContent' languageID=0}
333 {if $errorField == 'content'}
334 <small class="innerError">
335 {if $errorType == 'empty'}
336 {lang}wcf.global.form.error.empty{/lang}
338 {lang}wcf.acp.page.content.error.{@$errorType}{/lang}
345 {if $pageType == 'text'}
346 {include file='messageFormTabs' wysiwygContainerID='content0'}
349 {event name='messageFields'}
351 <dl{if $errorField == 'metaDescription'} class="formError"{/if}>
352 <dt><label for="metaDescription">{lang}wcf.acp.page.metaDescription{/lang}</label></dt>
354 <input type="text" class="long" name="metaDescription[0]" id="metaDescription" value="{if !$metaDescription[0]|empty}{$metaDescription[0]}{/if}">
355 {if $errorField == 'metaDescription'}
356 <small class="innerError">
357 {if $errorType == 'empty'}
358 {lang}wcf.global.form.error.empty{/lang}
360 {lang}wcf.acp.page.metaDescription.error.{@$errorType}{/lang}
367 {event name='metaFields'}
370 <div class="tabMenuContainer">
373 {foreach from=$availableLanguages item=availableLanguage}
374 <li><a href="#language{$availableLanguage->languageID}">{$availableLanguage->languageName}</a></li>
379 {foreach from=$availableLanguages item=availableLanguage}
380 <div id="language{@$availableLanguage->languageID}" class="tabMenuContent">
381 <div class="section">
382 {assign var='__errorFieldName' value='title_'|concat:$availableLanguage->languageID}
383 <dl{if $errorField == $__errorFieldName} class="formError"{/if}>
384 <dt><label for="title{@$availableLanguage->languageID}">{lang}wcf.global.title{/lang}</label></dt>
386 <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">
387 {if $errorField == $__errorFieldName}
388 <small class="innerError">
389 {if $errorType == 'empty'}
390 {lang}wcf.global.form.error.empty{/lang}
392 {lang}wcf.acp.page.title.error.{@$errorType}{/lang}
399 {if $pageType == 'system'}
400 {assign var='__errorFieldName' value='metaDescription_'|concat:$availableLanguage->languageID}
401 <dl{if $errorField == $__errorFieldName} class="formError"{/if}>
402 <dt><label for="metaDescription{@$availableLanguage->languageID}">{lang}wcf.acp.page.metaDescription{/lang}</label></dt>
404 <input type="text" class="long" name="metaDescription[{@$availableLanguage->languageID}]" id="metaDescription{@$availableLanguage->languageID}" value="{if !$metaDescription[$availableLanguage->languageID]|empty}{$metaDescription[$availableLanguage->languageID]}{/if}">
405 {if $errorField == $__errorFieldName}
406 <small class="innerError">
407 {if $errorType == 'empty'}
408 {lang}wcf.global.form.error.empty{/lang}
410 {lang}wcf.acp.page.metaDescription.error.{@$errorType}{/lang}
417 {event name='metaFieldsMultilingualSystemPage'}
420 {event name='informationFieldsMultilingual'}
422 {if $pageType != 'system'}
423 {assign var='__errorFieldName' value='content_'|concat:$availableLanguage->languageID}
424 <dl{if $errorField == $__errorFieldName} class="formError"{/if}>
425 <dt><label for="content{@$availableLanguage->languageID}">{lang}wcf.acp.page.content{/lang}</label></dt>
427 {include file='__pageAddContent' languageID=$availableLanguage->languageID}
429 {if $errorField == $__errorFieldName}
430 <small class="innerError">
431 {if $errorType == 'empty'}
432 {lang}wcf.global.form.error.empty{/lang}
434 {lang}wcf.acp.page.content.error.{@$errorType}{/lang}
441 {if $pageType == 'text'}
442 {include file='messageFormTabs' wysiwygContainerID='content'|concat:$availableLanguage->languageID}
445 {event name='messageFieldsMultilingual'}
447 {assign var='__errorFieldName' value='metaDescription_'|concat:$availableLanguage->languageID}
448 <dl{if $errorField == $__errorFieldName} class="formError"{/if}>
449 <dt><label for="metaDescription{@$availableLanguage->languageID}">{lang}wcf.acp.page.metaDescription{/lang}</label></dt>
451 <input type="text" class="long" name="metaDescription[{@$availableLanguage->languageID}]" id="metaDescription{@$availableLanguage->languageID}" value="{if !$metaDescription[$availableLanguage->languageID]|empty}{$metaDescription[$availableLanguage->languageID]}{/if}">
452 {if $errorField == $__errorFieldName}
453 <small class="innerError">
454 {if $errorType == 'empty'}
455 {lang}wcf.global.form.error.empty{/lang}
457 {lang}wcf.acp.page.metaDescription.error.{@$errorType}{/lang}
464 {event name='metaFieldsMultilingual'}
473 <div id="boxes" class="tabMenuContent">
474 <div class="section">
475 <woltlab-core-notice type="info">{lang}wcf.acp.page.boxOrder.page{@$action|ucfirst}{/lang}</woltlab-core-notice>
477 <dl{if $errorField == 'boxIDs'} class="formError"{/if}>
478 <dt>{lang}wcf.acp.page.boxes{/lang}</dt>
480 <ul class="scrollableCheckboxList" id="boxVisibilitySettings">
481 {foreach from=$availableBoxes item=availableBox}
484 <input type="checkbox" name="boxIDs[]" value="{$availableBox->boxID}"{if $availableBox->boxID|in_array:$boxIDs} checked{/if}{if $availableBox->identifier == 'com.woltlab.wcf.MainMenu'} disabled{/if}>
485 {$availableBox->name}
486 {if $availableBox->isDisabled}
487 <span class="jsTooltip" title="{lang}wcf.acp.box.isDisabled{/lang}">
488 {icon name='triangle-exclamation'}
495 {if $errorField == 'boxIDs'}
496 <small class="innerError">
497 {if $errorType == 'empty'}
498 {lang}wcf.global.form.error.empty{/lang}
500 {lang}wcf.acp.page.boxIDs.error.{@$errorType}{/lang}
504 <script data-relocate="true">
505 require(['Language', 'WoltLabSuite/Core/Ui/ItemList/Filter'], function(Language, UiItemListFilter) {
507 'wcf.global.filter.button.visibility': '{jslang}wcf.global.filter.button.visibility{/jslang}',
508 'wcf.global.filter.button.clear': '{jslang}wcf.global.filter.button.clear{/jslang}',
509 'wcf.global.filter.error.noMatches': '{jslang}wcf.global.filter.error.noMatches{/jslang}',
510 'wcf.global.filter.placeholder': '{jslang}wcf.global.filter.placeholder{/jslang}',
511 'wcf.global.filter.visibility.activeOnly': '{jslang}wcf.global.filter.visibility.activeOnly{/jslang}',
512 'wcf.global.filter.visibility.highlightActive': '{jslang}wcf.global.filter.visibility.highlightActive{/jslang}',
513 'wcf.global.filter.visibility.showAll': '{jslang}wcf.global.filter.visibility.showAll{/jslang}'
516 new UiItemListFilter('boxVisibilitySettings');
524 {if $action != 'edit' || $page->pageType != 'system'}
525 <div id="acl" class="tabMenuContent">
526 {include file='shared_aclSimple' __supportsInvertedPermissions=true}
530 {event name='tabMenuContents'}
533 <div class="formSubmit">
534 <input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s">
535 <input type="hidden" name="isMultilingual" value="{$isMultilingual}">
536 <input type="hidden" name="pageType" value="{$pageType}">
541 {include file='footer'}