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