Merge branch '3.0'
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / acp / templates / articleAdd.tpl
CommitLineData
a5a4f02d
MW
1{include file='header' pageTitle='wcf.acp.article.'|concat:$action}
2
5ae90fa9
MW
3{if $__wcf->session->getPermission('admin.content.article.canManageArticle')}
4 <script data-relocate="true">
5 $(function() {
6 $('input[type="radio"][name="publicationStatus"]').change(function(event) {
7 var $selected = $('input[type="radio"][name="publicationStatus"]:checked');
8 if ($selected.length > 0) {
9 if ($selected.val() == 2) {
10 $('#publicationDateDl').show();
11 }
12 else {
13 $('#publicationDateDl').hide();
14 }
a5a4f02d 15 }
5ae90fa9
MW
16 }).trigger('change');
17 });
18 </script>
19{/if}
a5a4f02d
MW
20
21<script data-relocate="true">
402a1169 22 require(['Language', 'WoltLabSuite/Core/Ui/User/Search/Input', 'WoltLabSuite/Core/Acp/Ui/Article/InlineEditor'], function(Language, UiUserSearchInput, AcpUiArticleInlineEditor) {
1ef73f36 23 Language.addObject({
70ecac8c
AE
24 'wcf.acp.article.i18n.source': '{lang}wcf.acp.article.i18n.source{/lang}',
25 'wcf.acp.article.i18n.toI18n.confirmMessage': '{lang}wcf.acp.article.i18n.toI18n.confirmMessage{/lang}',
26 'wcf.acp.article.i18n.fromI18n.confirmMessage': '{lang}wcf.acp.article.i18n.fromI18n.confirmMessage{/lang}',
402a1169 27 'wcf.message.status.deleted': '{lang}wcf.message.status.deleted{/lang}',
1ef73f36
AE
28 'wcf.page.search': '{lang}wcf.page.search{/lang}',
29 'wcf.page.search.error.tooShort': '{lang}wcf.page.search.error.tooShort{/lang}',
30 'wcf.page.search.error.noResults': '{lang}wcf.page.search.error.noResults{/lang}',
31 'wcf.page.search.name': '{lang}wcf.page.search.name{/lang}',
32 'wcf.page.search.results': '{lang}wcf.page.search.results{/lang}'
33 });
34
a5a4f02d 35 new UiUserSearchInput(elBySel('input[name="username"]'));
70ecac8c
AE
36 {if $action == 'edit'}
37 new AcpUiArticleInlineEditor({@$article->articleID}, {
38 i18n: {
39 defaultLanguageId: {@$defaultLanguageID},
40 isI18n: {if $article->isMultilingual}true{else}false{/if},
41 languages: { {implode from=$languages item=language glue=', '}{@$language->languageID}: '{$language|encodeJS}'{/implode} }
42 }
43 });
44 {/if}
a5a4f02d
MW
45 });
46</script>
47
48{if $__wcf->session->getPermission('admin.content.cms.canUseMedia')}
49 <script data-relocate="true">
50 {include file='mediaJavaScript'}
51
58d7e8f8 52 require(['WoltLabSuite/Core/Media/Manager/Select'], function(MediaManagerSelect) {
a5a4f02d 53 new MediaManagerSelect({
a9566c33 54 dialogTitle: '{lang}wcf.media.chooseImage{/lang}',
dac0007f 55 imagesOnly: 1
a5a4f02d
MW
56 });
57 });
58 </script>
59{/if}
60
61<header class="contentHeader">
62 <div class="contentHeaderTitle">
63 <h1 class="contentTitle">{if $action == 'add'}{lang}wcf.acp.article.add{/lang}{else}{lang}wcf.acp.article.edit{/lang}{/if}</h1>
64 </div>
65
66 <nav class="contentHeaderNavigation">
67 <ul>
68 {if $action == 'edit'}
402a1169
AE
69 {if $article->canDelete()}
70 <li><a href="#" class="button jsButtonRestore" data-confirm-message-html="{lang __encode=true isArticleEdit=true}wcf.acp.article.restore.confirmMessage{/lang}"{if !$article->isDeleted} style="display: none"{/if}><span class="icon icon16 fa-refresh"></span> <span>{lang}wcf.global.button.restore{/lang}</span></a></li>
71 <li><a href="#" class="button jsButtonDelete" data-confirm-message-html="{lang __encode=true isArticleEdit=true}wcf.acp.article.delete.confirmMessage{/lang}"{if !$article->isDeleted} style="display: none"{/if}><span class="icon icon16 fa-times"></span> <span>{lang}wcf.global.button.delete{/lang}</span></a></li>
72 <li><a href="#" class="button jsButtonTrash" data-confirm-message-html="{lang __encode=true isArticleEdit=true}wcf.acp.article.trash.confirmMessage{/lang}"{if $article->isDeleted} style="display: none"{/if}><span class="icon icon16 fa-times"></span> <span>{lang}wcf.global.button.trash{/lang}</span></a></li>
73 {/if}
70ecac8c
AE
74 {if $languages|count > 1 || $article->isMultilingual}
75 <li><a href="#" class="button jsButtonToggleI18n"><span class="icon icon16 fa-flag"></span> <span>{lang}wcf.acp.article.button.toggleI18n{/lang}</span></a></li>
76 {/if}
a5a4f02d
MW
77 <li><a href="{$article->getLink()}" class="button"><span class="icon icon16 fa-search"></span> <span>{lang}wcf.acp.article.button.viewArticle{/lang}</span></a></li>
78 {/if}
79 <li><a href="{link controller='ArticleList'}{/link}" class="button"><span class="icon icon16 fa-list"></span> <span>{lang}wcf.acp.menu.link.article.list{/lang}</span></a></li>
80
81 {event name='contentHeaderNavigation'}
82 </ul>
83 </nav>
84</header>
85
86{include file='formError'}
87
88{if $success|isset}
89 <p class="success">{lang}wcf.global.success.{$action}{/lang}</p>
90{/if}
91
ef195f0e
AE
92{if $action == 'edit'}
93 <p class="info jsArticleNoticeTrash"{if !$article->isDeleted} style="display: none;"{/if}>{lang}wcf.acp.article.trash.notice{/lang}</p>
94
95 {if $lastVersion}<p class="info">{lang}wcf.acp.article.lastVersion{/lang}</p>{/if}
96{/if}
402a1169 97
1177a643 98<form class="articleAddForm" method="post" action="{if $action == 'add'}{link controller='ArticleAdd'}{/link}{else}{link controller='ArticleEdit' id=$articleID}{/link}{/if}">
a5a4f02d
MW
99 <div class="section">
100 <dl{if $errorField == 'categoryID'} class="formError"{/if}>
101 <dt><label for="categoryID">{lang}wcf.acp.article.category{/lang}</label></dt>
102 <dd>
103 <select name="categoryID" id="categoryID">
104 <option value="0">{lang}wcf.global.noSelection{/lang}</option>
105
106 {foreach from=$categoryNodeList item=category}
6f2bc235 107 <option value="{@$category->categoryID}"{if $category->categoryID == $categoryID} selected{/if}>{if $category->getDepth() > 1}{@"&nbsp;&nbsp;&nbsp;&nbsp;"|str_repeat:($category->getDepth() - 1)}{/if}{$category->getTitle()}</option>
a5a4f02d
MW
108 {/foreach}
109 </select>
110 {if $errorField == 'categoryID'}
111 <small class="innerError">
112 {if $errorType == 'empty'}
113 {lang}wcf.global.form.error.empty{/lang}
114 {else}
115 {lang}wcf.acp.article.category.error.{@$errorType}{/lang}
116 {/if}
117 </small>
118 {/if}
119 </dd>
120 </dl>
121
b20c6ed6
MW
122 {event name='categoryFields'}
123
1177a643
MW
124 {if $labelGroups|count}
125 {foreach from=$labelGroups item=labelGroup}
126 {if $labelGroup|count}
127 <dl{if $errorField == 'label' && $errorType[$labelGroup->groupID]|isset} class="formError"{/if}>
128 <dt><label>{$labelGroup->getTitle()}</label></dt>
129 <dd>
130 <ul class="labelList jsOnly" data-object-id="{@$labelGroup->groupID}">
131 <li class="dropdown labelChooser" id="labelGroup{@$labelGroup->groupID}" data-group-id="{@$labelGroup->groupID}" data-force-selection="{if $labelGroup->forceSelection}true{else}false{/if}">
132 <div class="dropdownToggle" data-toggle="labelGroup{@$labelGroup->groupID}"><span class="badge label">{lang}wcf.label.none{/lang}</span></div>
133 <div class="dropdownMenu">
134 <ul class="scrollableDropdownMenu">
135 {foreach from=$labelGroup item=label}
136 <li data-label-id="{@$label->labelID}"><span><span class="badge label{if $label->getClassNames()} {@$label->getClassNames()}{/if}">{lang}{$label->label}{/lang}</span></span></li>
137 {/foreach}
138 </ul>
139 </div>
140 </li>
141 </ul>
142 <noscript>
143 <select name="labelIDs[{@$labelGroup->groupID}]">
144 {foreach from=$labelGroup item=label}
145 <option value="{@$label->labelID}">{lang}{$label->label}{/lang}</option>
146 {/foreach}
147 </select>
148 </noscript>
149 {if $errorField == 'label' && $errorType[$labelGroup->groupID]|isset}
150 <small class="innerError">
151 {if $errorType[$labelGroup->groupID] == 'missing'}
152 {lang}wcf.label.error.missing{/lang}
153 {else}
154 {lang}wcf.label.error.invalid{/lang}
155 {/if}
156 </small>
157 {/if}
158 </dd>
159 </dl>
160 {/if}
161 {/foreach}
162 {/if}
163
a5a4f02d
MW
164 <dl{if $errorField == 'username'} class="formError"{/if}>
165 <dt><label for="username">{lang}wcf.acp.article.author{/lang}</label></dt>
166 <dd>
04ef1206 167 <input type="text" id="username" name="username" value="{$username}" class="medium" maxlength="255">
a5a4f02d
MW
168 {if $errorField == 'username'}
169 <small class="innerError">
170 {if $errorType == 'empty'}
171 {lang}wcf.global.form.error.empty{/lang}
172 {else}
173 {lang}wcf.user.username.error.{@$errorType}{/lang}
174 {/if}
175 </small>
176 {/if}
177 </dd>
178 </dl>
179
180 <dl{if $errorField == 'time'} class="formError"{/if}>
dca8d159 181 <dt><label for="time">{lang}wcf.global.date{/lang}</label></dt>
a5a4f02d 182 <dd>
e5f9b56c 183 <input type="datetime" id="time" name="time" value="{$time}" class="medium">
a5a4f02d
MW
184 {if $errorField == 'time'}
185 <small class="innerError">
186 {if $errorType == 'empty'}
187 {lang}wcf.global.form.error.empty{/lang}
188 {else}
189 {lang}wcf.acp.article.time.error.{@$errorType}{/lang}
190 {/if}
191 </small>
192 {/if}
193 </dd>
194 </dl>
195
5ae90fa9
MW
196 {if $__wcf->session->getPermission('admin.content.article.canManageArticle')}
197 <dl>
198 <dt><label for="categoryID">{lang}wcf.acp.article.publicationStatus{/lang}</label></dt>
199 <dd class="floated">
200 <label><input type="radio" name="publicationStatus" value="0"{if $publicationStatus == 0} checked{/if}> {lang}wcf.acp.article.publicationStatus.unpublished{/lang}</label>
201 <label><input type="radio" name="publicationStatus" value="1"{if $publicationStatus == 1} checked{/if}> {lang}wcf.acp.article.publicationStatus.published{/lang}</label>
202 <label><input type="radio" name="publicationStatus" value="2"{if $publicationStatus == 2} checked{/if}> {lang}wcf.acp.article.publicationStatus.delayed{/lang}</label>
203 </dd>
204 </dl>
205
206 <dl id="publicationDateDl"{if $errorField == 'publicationDate'} class="formError"{/if}{if $publicationStatus != 2} style="display: none"{/if}>
207 <dt><label for="publicationDate">{lang}wcf.acp.article.publicationDate{/lang}</label></dt>
208 <dd>
209 <input type="datetime" id="publicationDate" name="publicationDate" value="{$publicationDate}" class="medium">
210 {if $errorField == 'publicationDate'}
211 <small class="innerError">
212 {if $errorType == 'empty'}
213 {lang}wcf.global.form.error.empty{/lang}
214 {else}
215 {lang}wcf.acp.article.publicationDate.error.{@$errorType}{/lang}
216 {/if}
217 </small>
218 {/if}
219 </dd>
220 </dl>
221 {/if}
a5a4f02d
MW
222
223 <dl>
224 <dt></dt>
225 <dd>
6f2bc235 226 <label><input name="enableComments" type="checkbox" value="1"{if $enableComments} checked{/if}> {lang}wcf.acp.article.enableComments{/lang}</label>
a5a4f02d
MW
227 </dd>
228 </dl>
229 </div>
230
231 {if !$isMultilingual}
232 <div class="section">
233 {if $__wcf->session->getPermission('admin.content.cms.canUseMedia')}
234 <dl{if $errorField == 'image'} class="formError"{/if}>
235 <dt><label for="image">{lang}wcf.acp.article.image{/lang}</label></dt>
236 <dd>
695c56e6 237 <div id="imageDisplay" class="selectedImagePreview">
f4d9e975 238 {if $images[0]|isset && $images[0]->hasThumbnail('small')}
a5a4f02d
MW
239 {@$images[0]->getThumbnailTag('small')}
240 {/if}
241 </div>
a9566c33 242 <p class="button jsMediaSelectButton" data-store="imageID0" data-display="imageDisplay">{lang}wcf.media.chooseImage{/lang}</p>
e5f9b56c 243 <input type="hidden" name="imageID[0]" id="imageID0"{if $imageID[0]|isset} value="{@$imageID[0]}"{/if}>
a5a4f02d
MW
244 {if $errorField == 'image'}
245 <small class="innerError">{lang}wcf.acp.article.image.error.{@$errorType}{/lang}</small>
246 {/if}
247 </dd>
248 </dl>
f4d9e975 249 {elseif $action == 'edit' && $images[0]|isset && $images[0]->hasThumbnail('small')}
a5a4f02d
MW
250 <dl>
251 <dt>{lang}wcf.acp.article.image{/lang}</dt>
252 <dd>
253 <div id="imageDisplay">{@$images[0]->getThumbnailTag('small')}</div>
254 </dd>
255 </dl>
256 {/if}
257
79305986
MW
258 {if $__wcf->session->getPermission('admin.content.cms.canUseMedia')}
259 <dl{if $errorField == 'teaserImage'} class="formError"{/if}>
260 <dt><label for="teaserImage">{lang}wcf.acp.article.teaserImage{/lang}</label></dt>
261 <dd>
262 <div id="teaserImageDisplay" class="selectedImagePreview">
263 {if $teaserImages[0]|isset && $teaserImages[0]->hasThumbnail('small')}
264 {@$teaserImages[0]->getThumbnailTag('small')}
265 {/if}
266 </div>
267 <p class="button jsMediaSelectButton" data-store="teaserImageID0" data-display="teaserImageDisplay">{lang}wcf.media.chooseImage{/lang}</p>
268 <input type="hidden" name="teaserImageID[0]" id="teaserImageID0"{if $teaserImageID[0]|isset} value="{@$teaserImageID[0]}"{/if}>
269 {if $errorField == 'teaserImage'}
270 <small class="innerError">{lang}wcf.acp.article.image.error.{@$errorType}{/lang}</small>
271 {/if}
272 </dd>
273 </dl>
274 {elseif $action == 'edit' && $teaserImages[0]|isset && $teaserImages[0]->hasThumbnail('small')}
275 <dl>
276 <dt>{lang}wcf.acp.article.teaserImage{/lang}</dt>
277 <dd>
278 <div id="teaserImageDisplay">{@$teaserImages[0]->getThumbnailTag('small')}</div>
279 </dd>
280 </dl>
281 {/if}
282
a5a4f02d 283 <dl{if $errorField == 'title'} class="formError"{/if}>
dca8d159 284 <dt><label for="title0">{lang}wcf.global.title{/lang}</label></dt>
a5a4f02d 285 <dd>
04ef1206 286 <input type="text" id="title0" name="title[0]" value="{if !$title[0]|empty}{$title[0]}{/if}" class="long" maxlength="255">
a5a4f02d
MW
287 {if $errorField == 'title'}
288 <small class="innerError">
289 {if $errorType == 'empty'}
290 {lang}wcf.global.form.error.empty{/lang}
291 {else}
292 {lang}wcf.acp.article.title.error.{@$errorType}{/lang}
293 {/if}
294 </small>
295 {/if}
296 </dd>
297 </dl>
298
299 {if MODULE_TAGGING}
300 <dl class="jsOnly">
301 <dt><label for="tagSearchInput">{lang}wcf.tagging.tags{/lang}</label></dt>
302 <dd>
e5f9b56c 303 <input id="tagSearchInput" type="text" value="" class="long">
a5a4f02d
MW
304 <small>{lang}wcf.tagging.tags.description{/lang}</small>
305 </dd>
306 </dl>
307
308 <script data-relocate="true">
58d7e8f8 309 require(['WoltLabSuite/Core/Ui/ItemList'], function(UiItemList) {
a5a4f02d
MW
310 UiItemList.init(
311 'tagSearchInput',
8e870ecd 312 [{if !$tags[0]|empty}{implode from=$tags[0] item=tag}'{@$tag|encodeJS}'{/implode}{/if}],
a5a4f02d
MW
313 {
314 ajax: {
315 className: 'wcf\\data\\tag\\TagAction'
316 },
317 maxLength: {@TAGGING_MAX_TAG_LENGTH},
318 submitFieldName: 'tags[0][]'
319 }
320 );
321 });
322 </script>
323 {/if}
324
b20c6ed6
MW
325 {event name='informationFields'}
326
a5a4f02d
MW
327 <dl{if $errorField == 'teaser'} class="formError"{/if}>
328 <dt><label for="teaser0">{lang}wcf.acp.article.teaser{/lang}</label></dt>
329 <dd>
330 <textarea name="teaser[0]" id="teaser0" rows="5">{if !$teaser[0]|empty}{$teaser[0]}{/if}</textarea>
331 {if $errorField == 'teaser'}
332 <small class="innerError">
333 {if $errorType == 'empty'}
334 {lang}wcf.global.form.error.empty{/lang}
335 {else}
336 {lang}wcf.acp.article.teaser.error.{@$errorType}{/lang}
337 {/if}
338 </small>
339 {/if}
340 </dd>
341 </dl>
342
343 <dl{if $errorField == 'content'} class="formError"{/if}>
344 <dt><label for="content0">{lang}wcf.acp.article.content{/lang}</label></dt>
345 <dd>
21b3c837 346 <textarea name="content[0]" id="content0" class="wysiwygTextarea" data-autosave="com.woltlab.wcf.article{$action|ucfirst}-{if $action == 'edit'}{@$articleID}{else}0{/if}-0">{if !$content[0]|empty}{$content[0]}{/if}</textarea>
1ef73f36
AE
347
348 {capture append='__redactorJavaScript'}, '{@$__wcf->getPath()}js/3rdParty/redactor2/plugins/WoltLabPage.js?v={@LAST_UPDATE_TIME}'{/capture}
349 {capture append='__redactorConfig'}
350 buttonOptions.woltlabPage = { icon: 'fa-file-text-o', title: '{lang}wcf.editor.button.page{/lang}' };
351
352 buttons.push('woltlabPage');
353
354 config.plugins.push('WoltLabPage');
355 {/capture}
356
a5a4f02d 357 {include file='wysiwyg' wysiwygSelector='content0'}
1ef73f36 358
a5a4f02d
MW
359 {if $errorField == 'content'}
360 <small class="innerError">
361 {if $errorType == 'empty'}
362 {lang}wcf.global.form.error.empty{/lang}
363 {else}
364 {lang}wcf.acp.article.content.error.{@$errorType}{/lang}
365 {/if}
366 </small>
367 {/if}
368 </dd>
369 </dl>
b20c6ed6
MW
370
371 {event name='messageFields'}
a5a4f02d
MW
372 </div>
373 {else}
374 <div class="section tabMenuContainer">
375 <nav class="tabMenu">
376 <ul>
377 {foreach from=$availableLanguages item=availableLanguage}
378 {assign var='containerID' value='language'|concat:$availableLanguage->languageID}
379 <li><a href="{@$__wcf->getAnchor($containerID)}">{$availableLanguage->languageName}</a></li>
380 {/foreach}
381 </ul>
382 </nav>
383
384 {foreach from=$availableLanguages item=availableLanguage}
385 <div id="language{@$availableLanguage->languageID}" class="tabMenuContent">
386 <div class="section">
387 {if $__wcf->session->getPermission('admin.content.cms.canUseMedia')}
388 <dl{if $errorField == 'image'|concat:$availableLanguage->languageID} class="formError"{/if}>
389 <dt><label for="image{@$availableLanguage->languageID}">{lang}wcf.acp.article.image{/lang}</label></dt>
390 <dd>
391 <div id="imageDisplay{@$availableLanguage->languageID}">
f4d9e975 392 {if $images[$availableLanguage->languageID]|isset && $images[$availableLanguage->languageID]->hasThumbnail('small')}
a5a4f02d
MW
393 {@$images[$availableLanguage->languageID]->getThumbnailTag('small')}
394 {/if}
395 </div>
a9566c33 396 <p class="button jsMediaSelectButton" data-store="imageID{@$availableLanguage->languageID}" data-display="imageDisplay{@$availableLanguage->languageID}">{lang}wcf.media.chooseImage{/lang}</p>
e5f9b56c 397 <input type="hidden" name="imageID[{@$availableLanguage->languageID}]" id="imageID{@$availableLanguage->languageID}"{if $imageID[$availableLanguage->languageID]|isset} value="{@$imageID[$availableLanguage->languageID]}"{/if}>
a5a4f02d
MW
398 {if $errorField == 'image'|concat:$availableLanguage->languageID}
399 <small class="innerError">{lang}wcf.acp.article.image.error.{@$errorType}{/lang}</small>
400 {/if}
401 </dd>
402 </dl>
f4d9e975 403 {elseif $action == 'edit' && $images[$availableLanguage->languageID]|isset && $images[$availableLanguage->languageID]->hasThumbnail('small')}
a5a4f02d
MW
404 <dl>
405 <dt>{lang}wcf.acp.article.image{/lang}</dt>
406 <dd>
407 <div id="imageDisplay">{@$images[$availableLanguage->languageID]->getThumbnailTag('small')}</div>
408 </dd>
409 </dl>
410 {/if}
411
79305986
MW
412 {if $__wcf->session->getPermission('admin.content.cms.canUseMedia')}
413 <dl{if $errorField == 'image'|concat:$availableLanguage->languageID} class="formError"{/if}>
414 <dt><label for="teaserImage{@$availableLanguage->languageID}">{lang}wcf.acp.article.teaserImage{/lang}</label></dt>
415 <dd>
416 <div id="teaserImageDisplay{@$availableLanguage->languageID}">
417 {if $teaserImages[$availableLanguage->languageID]|isset && $teaserImages[$availableLanguage->languageID]->hasThumbnail('small')}
418 {@$teaserImages[$availableLanguage->languageID]->getThumbnailTag('small')}
419 {/if}
420 </div>
421 <p class="button jsMediaSelectButton" data-store="teaserImageID{@$availableLanguage->languageID}" data-display="teaserImageDisplay{@$availableLanguage->languageID}">{lang}wcf.media.chooseImage{/lang}</p>
422 <input type="hidden" name="teaserImageID[{@$availableLanguage->languageID}]" id="teaserImageID{@$availableLanguage->languageID}"{if $teaserImageID[$availableLanguage->languageID]|isset} value="{@$teaserImageID[$availableLanguage->languageID]}"{/if}>
423 {if $errorField == 'teaserImage'|concat:$availableLanguage->languageID}
424 <small class="innerError">{lang}wcf.acp.article.image.error.{@$errorType}{/lang}</small>
425 {/if}
426 </dd>
427 </dl>
428 {elseif $action == 'edit' && $teaserImages[$availableLanguage->languageID]|isset && $teaserImages[$availableLanguage->languageID]->hasThumbnail('small')}
429 <dl>
430 <dt>{lang}wcf.acp.article.teaserImage{/lang}</dt>
431 <dd>
432 <div id="imageDisplay">{@$teaserImages[$availableLanguage->languageID]->getThumbnailTag('small')}</div>
433 </dd>
434 </dl>
435 {/if}
436
a5a4f02d 437 <dl{if $errorField == 'title'|concat:$availableLanguage->languageID} class="formError"{/if}>
dca8d159 438 <dt><label for="title{@$availableLanguage->languageID}">{lang}wcf.global.title{/lang}</label></dt>
a5a4f02d 439 <dd>
04ef1206 440 <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">
a5a4f02d
MW
441 {if $errorField == 'title'|concat:$availableLanguage->languageID}
442 <small class="innerError">
443 {if $errorType == 'empty'}
444 {lang}wcf.global.form.error.empty{/lang}
445 {else}
446 {lang}wcf.acp.article.title.error.{@$errorType}{/lang}
447 {/if}
448 </small>
449 {/if}
450 </dd>
451 </dl>
452
453 {if MODULE_TAGGING}
454 <dl class="jsOnly">
455 <dt><label for="tagSearchInput{@$availableLanguage->languageID}">{lang}wcf.tagging.tags{/lang}</label></dt>
456 <dd>
e5f9b56c 457 <input id="tagSearchInput{@$availableLanguage->languageID}" type="text" value="" class="long">
a5a4f02d
MW
458 <small>{lang}wcf.tagging.tags.description{/lang}</small>
459 </dd>
460 </dl>
461
462 <script data-relocate="true">
58d7e8f8 463 require(['WoltLabSuite/Core/Ui/ItemList'], function(UiItemList) {
a5a4f02d
MW
464 UiItemList.init(
465 'tagSearchInput{@$availableLanguage->languageID}',
8e870ecd 466 [{if !$tags[$availableLanguage->languageID]|empty}{implode from=$tags[$availableLanguage->languageID] item=tag}'{@$tag|encodeJS}'{/implode}{/if}],
a5a4f02d
MW
467 {
468 ajax: {
469 className: 'wcf\\data\\tag\\TagAction'
470 },
471 maxLength: {@TAGGING_MAX_TAG_LENGTH},
472 submitFieldName: 'tags[{@$availableLanguage->languageID}][]'
473 }
474 );
475 });
476 </script>
477 {/if}
478
b20c6ed6
MW
479 {event name='informationFieldsMultilingual'}
480
a5a4f02d
MW
481 <dl{if $errorField == 'teaser'|concat:$availableLanguage->languageID} class="formError"{/if}>
482 <dt><label for="teaser{@$availableLanguage->languageID}">{lang}wcf.acp.article.teaser{/lang}</label></dt>
483 <dd>
484 <textarea name="teaser[{@$availableLanguage->languageID}]" id="teaser{@$availableLanguage->languageID}" rows="5">{if !$teaser[$availableLanguage->languageID]|empty}{$teaser[$availableLanguage->languageID]}{/if}</textarea>
485 {if $errorField == 'teaser'|concat:$availableLanguage->languageID}
486 <small class="innerError">
487 {if $errorType == 'empty'}
488 {lang}wcf.global.form.error.empty{/lang}
489 {else}
490 {lang}wcf.acp.article.teaser.error.{@$errorType}{/lang}
491 {/if}
492 </small>
493 {/if}
494 </dd>
495 </dl>
496
497 <dl{if $errorField == 'content'|concat:$availableLanguage->languageID} class="formError"{/if}>
498 <dt><label for="content{@$availableLanguage->languageID}">{lang}wcf.acp.article.content{/lang}</label></dt>
499 <dd>
21b3c837 500 <textarea name="content[{@$availableLanguage->languageID}]" id="content{@$availableLanguage->languageID}" class="wysiwygTextarea" data-autosave="com.woltlab.wcf.article{$action|ucfirst}-{if $action == 'edit'}{@$articleID}{else}0{/if}-{@$availableLanguage->languageID}">{if !$content[$availableLanguage->languageID]|empty}{$content[$availableLanguage->languageID]}{/if}</textarea>
1ef73f36
AE
501
502 {capture append='__redactorJavaScript'}, '{@$__wcf->getPath()}js/3rdParty/redactor2/plugins/WoltLabPage.js?v={@LAST_UPDATE_TIME}'{/capture}
503 {capture append='__redactorConfig'}
504 buttonOptions.woltlabPage = { icon: 'fa-file-text-o', title: '{lang}wcf.editor.button.page{/lang}' };
505
506 buttons.push('woltlabPage');
507
508 config.plugins.push('WoltLabPage');
509 {/capture}
510
a5a4f02d 511 {include file='wysiwyg' wysiwygSelector='content'|concat:$availableLanguage->languageID}
1ef73f36 512
a5a4f02d
MW
513 {if $errorField == 'content'|concat:$availableLanguage->languageID}
514 <small class="innerError">
515 {if $errorType == 'empty'}
516 {lang}wcf.global.form.error.empty{/lang}
517 {else}
518 {lang}wcf.acp.article.content.error.{@$errorType}{/lang}
519 {/if}
520 </small>
521 {/if}
522 </dd>
523 </dl>
b20c6ed6
MW
524
525 {event name='messageFieldsMultilingual'}
a5a4f02d
MW
526 </div>
527 </div>
528 {/foreach}
529 </div>
530 {/if}
531
b20c6ed6
MW
532 {event name='sections'}
533
a5a4f02d
MW
534 <div class="formSubmit">
535 <input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s">
536 <input type="hidden" name="isMultilingual" value="{@$isMultilingual}">
90a219d3 537 <input type="hidden" name="timeNowReference" value="{@TIME_NOW}">
a5a4f02d
MW
538 {@SECURITY_TOKEN_INPUT_TAG}
539 </div>
540</form>
541
1177a643
MW
542{js application='wcf' file='WCF.Label' bundle='WCF.Combined'}
543<script data-relocate="true">
544 $(function() {
545 WCF.Language.addObject({
546 'wcf.label.none': '{lang}wcf.label.none{/lang}',
547 });
548
549 {if !$labelGroups|empty}
550 new WCF.Label.ArticleLabelChooser({ {implode from=$labelGroupsToCategories key=__labelCategoryID item=labelGroupIDs}{@$__labelCategoryID}: [ {implode from=$labelGroupIDs item=labelGroupID}{@$labelGroupID}{/implode} ] {/implode} }, { {implode from=$labelIDs key=groupID item=labelID}{@$groupID}: {@$labelID}{/implode} }, '.articleAddForm');
551 {/if}
552 });
553</script>
554
a5a4f02d 555{include file='footer'}