Implemented toggle for articles between i18n/monolingual
[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
1177a643
MW
122 {if $labelGroups|count}
123 {foreach from=$labelGroups item=labelGroup}
124 {if $labelGroup|count}
125 <dl{if $errorField == 'label' && $errorType[$labelGroup->groupID]|isset} class="formError"{/if}>
126 <dt><label>{$labelGroup->getTitle()}</label></dt>
127 <dd>
128 <ul class="labelList jsOnly" data-object-id="{@$labelGroup->groupID}">
129 <li class="dropdown labelChooser" id="labelGroup{@$labelGroup->groupID}" data-group-id="{@$labelGroup->groupID}" data-force-selection="{if $labelGroup->forceSelection}true{else}false{/if}">
130 <div class="dropdownToggle" data-toggle="labelGroup{@$labelGroup->groupID}"><span class="badge label">{lang}wcf.label.none{/lang}</span></div>
131 <div class="dropdownMenu">
132 <ul class="scrollableDropdownMenu">
133 {foreach from=$labelGroup item=label}
134 <li data-label-id="{@$label->labelID}"><span><span class="badge label{if $label->getClassNames()} {@$label->getClassNames()}{/if}">{lang}{$label->label}{/lang}</span></span></li>
135 {/foreach}
136 </ul>
137 </div>
138 </li>
139 </ul>
140 <noscript>
141 <select name="labelIDs[{@$labelGroup->groupID}]">
142 {foreach from=$labelGroup item=label}
143 <option value="{@$label->labelID}">{lang}{$label->label}{/lang}</option>
144 {/foreach}
145 </select>
146 </noscript>
147 {if $errorField == 'label' && $errorType[$labelGroup->groupID]|isset}
148 <small class="innerError">
149 {if $errorType[$labelGroup->groupID] == 'missing'}
150 {lang}wcf.label.error.missing{/lang}
151 {else}
152 {lang}wcf.label.error.invalid{/lang}
153 {/if}
154 </small>
155 {/if}
156 </dd>
157 </dl>
158 {/if}
159 {/foreach}
160 {/if}
161
a5a4f02d
MW
162 <dl{if $errorField == 'username'} class="formError"{/if}>
163 <dt><label for="username">{lang}wcf.acp.article.author{/lang}</label></dt>
164 <dd>
04ef1206 165 <input type="text" id="username" name="username" value="{$username}" class="medium" maxlength="255">
a5a4f02d
MW
166 {if $errorField == 'username'}
167 <small class="innerError">
168 {if $errorType == 'empty'}
169 {lang}wcf.global.form.error.empty{/lang}
170 {else}
171 {lang}wcf.user.username.error.{@$errorType}{/lang}
172 {/if}
173 </small>
174 {/if}
175 </dd>
176 </dl>
177
178 <dl{if $errorField == 'time'} class="formError"{/if}>
dca8d159 179 <dt><label for="time">{lang}wcf.global.date{/lang}</label></dt>
a5a4f02d 180 <dd>
e5f9b56c 181 <input type="datetime" id="time" name="time" value="{$time}" class="medium">
a5a4f02d
MW
182 {if $errorField == 'time'}
183 <small class="innerError">
184 {if $errorType == 'empty'}
185 {lang}wcf.global.form.error.empty{/lang}
186 {else}
187 {lang}wcf.acp.article.time.error.{@$errorType}{/lang}
188 {/if}
189 </small>
190 {/if}
191 </dd>
192 </dl>
193
5ae90fa9
MW
194 {if $__wcf->session->getPermission('admin.content.article.canManageArticle')}
195 <dl>
196 <dt><label for="categoryID">{lang}wcf.acp.article.publicationStatus{/lang}</label></dt>
197 <dd class="floated">
198 <label><input type="radio" name="publicationStatus" value="0"{if $publicationStatus == 0} checked{/if}> {lang}wcf.acp.article.publicationStatus.unpublished{/lang}</label>
199 <label><input type="radio" name="publicationStatus" value="1"{if $publicationStatus == 1} checked{/if}> {lang}wcf.acp.article.publicationStatus.published{/lang}</label>
200 <label><input type="radio" name="publicationStatus" value="2"{if $publicationStatus == 2} checked{/if}> {lang}wcf.acp.article.publicationStatus.delayed{/lang}</label>
201 </dd>
202 </dl>
203
204 <dl id="publicationDateDl"{if $errorField == 'publicationDate'} class="formError"{/if}{if $publicationStatus != 2} style="display: none"{/if}>
205 <dt><label for="publicationDate">{lang}wcf.acp.article.publicationDate{/lang}</label></dt>
206 <dd>
207 <input type="datetime" id="publicationDate" name="publicationDate" value="{$publicationDate}" class="medium">
208 {if $errorField == 'publicationDate'}
209 <small class="innerError">
210 {if $errorType == 'empty'}
211 {lang}wcf.global.form.error.empty{/lang}
212 {else}
213 {lang}wcf.acp.article.publicationDate.error.{@$errorType}{/lang}
214 {/if}
215 </small>
216 {/if}
217 </dd>
218 </dl>
219 {/if}
a5a4f02d
MW
220
221 <dl>
222 <dt></dt>
223 <dd>
6f2bc235 224 <label><input name="enableComments" type="checkbox" value="1"{if $enableComments} checked{/if}> {lang}wcf.acp.article.enableComments{/lang}</label>
a5a4f02d
MW
225 </dd>
226 </dl>
227 </div>
228
229 {if !$isMultilingual}
230 <div class="section">
231 {if $__wcf->session->getPermission('admin.content.cms.canUseMedia')}
232 <dl{if $errorField == 'image'} class="formError"{/if}>
233 <dt><label for="image">{lang}wcf.acp.article.image{/lang}</label></dt>
234 <dd>
695c56e6 235 <div id="imageDisplay" class="selectedImagePreview">
f4d9e975 236 {if $images[0]|isset && $images[0]->hasThumbnail('small')}
a5a4f02d
MW
237 {@$images[0]->getThumbnailTag('small')}
238 {/if}
239 </div>
a9566c33 240 <p class="button jsMediaSelectButton" data-store="imageID0" data-display="imageDisplay">{lang}wcf.media.chooseImage{/lang}</p>
e5f9b56c 241 <input type="hidden" name="imageID[0]" id="imageID0"{if $imageID[0]|isset} value="{@$imageID[0]}"{/if}>
a5a4f02d
MW
242 {if $errorField == 'image'}
243 <small class="innerError">{lang}wcf.acp.article.image.error.{@$errorType}{/lang}</small>
244 {/if}
245 </dd>
246 </dl>
f4d9e975 247 {elseif $action == 'edit' && $images[0]|isset && $images[0]->hasThumbnail('small')}
a5a4f02d
MW
248 <dl>
249 <dt>{lang}wcf.acp.article.image{/lang}</dt>
250 <dd>
251 <div id="imageDisplay">{@$images[0]->getThumbnailTag('small')}</div>
252 </dd>
253 </dl>
254 {/if}
255
79305986
MW
256 {if $__wcf->session->getPermission('admin.content.cms.canUseMedia')}
257 <dl{if $errorField == 'teaserImage'} class="formError"{/if}>
258 <dt><label for="teaserImage">{lang}wcf.acp.article.teaserImage{/lang}</label></dt>
259 <dd>
260 <div id="teaserImageDisplay" class="selectedImagePreview">
261 {if $teaserImages[0]|isset && $teaserImages[0]->hasThumbnail('small')}
262 {@$teaserImages[0]->getThumbnailTag('small')}
263 {/if}
264 </div>
265 <p class="button jsMediaSelectButton" data-store="teaserImageID0" data-display="teaserImageDisplay">{lang}wcf.media.chooseImage{/lang}</p>
266 <input type="hidden" name="teaserImageID[0]" id="teaserImageID0"{if $teaserImageID[0]|isset} value="{@$teaserImageID[0]}"{/if}>
267 {if $errorField == 'teaserImage'}
268 <small class="innerError">{lang}wcf.acp.article.image.error.{@$errorType}{/lang}</small>
269 {/if}
270 </dd>
271 </dl>
272 {elseif $action == 'edit' && $teaserImages[0]|isset && $teaserImages[0]->hasThumbnail('small')}
273 <dl>
274 <dt>{lang}wcf.acp.article.teaserImage{/lang}</dt>
275 <dd>
276 <div id="teaserImageDisplay">{@$teaserImages[0]->getThumbnailTag('small')}</div>
277 </dd>
278 </dl>
279 {/if}
280
a5a4f02d 281 <dl{if $errorField == 'title'} class="formError"{/if}>
dca8d159 282 <dt><label for="title0">{lang}wcf.global.title{/lang}</label></dt>
a5a4f02d 283 <dd>
04ef1206 284 <input type="text" id="title0" name="title[0]" value="{if !$title[0]|empty}{$title[0]}{/if}" class="long" maxlength="255">
a5a4f02d
MW
285 {if $errorField == 'title'}
286 <small class="innerError">
287 {if $errorType == 'empty'}
288 {lang}wcf.global.form.error.empty{/lang}
289 {else}
290 {lang}wcf.acp.article.title.error.{@$errorType}{/lang}
291 {/if}
292 </small>
293 {/if}
294 </dd>
295 </dl>
296
297 {if MODULE_TAGGING}
298 <dl class="jsOnly">
299 <dt><label for="tagSearchInput">{lang}wcf.tagging.tags{/lang}</label></dt>
300 <dd>
e5f9b56c 301 <input id="tagSearchInput" type="text" value="" class="long">
a5a4f02d
MW
302 <small>{lang}wcf.tagging.tags.description{/lang}</small>
303 </dd>
304 </dl>
305
306 <script data-relocate="true">
58d7e8f8 307 require(['WoltLabSuite/Core/Ui/ItemList'], function(UiItemList) {
a5a4f02d
MW
308 UiItemList.init(
309 'tagSearchInput',
310 [{if !$tags[0]|empty}{implode from=$tags[0] item=tag}'{$tag|encodeJS}'{/implode}{/if}],
311 {
312 ajax: {
313 className: 'wcf\\data\\tag\\TagAction'
314 },
315 maxLength: {@TAGGING_MAX_TAG_LENGTH},
316 submitFieldName: 'tags[0][]'
317 }
318 );
319 });
320 </script>
321 {/if}
322
323 <dl{if $errorField == 'teaser'} class="formError"{/if}>
324 <dt><label for="teaser0">{lang}wcf.acp.article.teaser{/lang}</label></dt>
325 <dd>
326 <textarea name="teaser[0]" id="teaser0" rows="5">{if !$teaser[0]|empty}{$teaser[0]}{/if}</textarea>
327 {if $errorField == 'teaser'}
328 <small class="innerError">
329 {if $errorType == 'empty'}
330 {lang}wcf.global.form.error.empty{/lang}
331 {else}
332 {lang}wcf.acp.article.teaser.error.{@$errorType}{/lang}
333 {/if}
334 </small>
335 {/if}
336 </dd>
337 </dl>
338
339 <dl{if $errorField == 'content'} class="formError"{/if}>
340 <dt><label for="content0">{lang}wcf.acp.article.content{/lang}</label></dt>
341 <dd>
21b3c837 342 <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
343
344 {capture append='__redactorJavaScript'}, '{@$__wcf->getPath()}js/3rdParty/redactor2/plugins/WoltLabPage.js?v={@LAST_UPDATE_TIME}'{/capture}
345 {capture append='__redactorConfig'}
346 buttonOptions.woltlabPage = { icon: 'fa-file-text-o', title: '{lang}wcf.editor.button.page{/lang}' };
347
348 buttons.push('woltlabPage');
349
350 config.plugins.push('WoltLabPage');
351 {/capture}
352
a5a4f02d 353 {include file='wysiwyg' wysiwygSelector='content0'}
1ef73f36 354
a5a4f02d
MW
355 {if $errorField == 'content'}
356 <small class="innerError">
357 {if $errorType == 'empty'}
358 {lang}wcf.global.form.error.empty{/lang}
359 {else}
360 {lang}wcf.acp.article.content.error.{@$errorType}{/lang}
361 {/if}
362 </small>
363 {/if}
364 </dd>
365 </dl>
366 </div>
367 {else}
368 <div class="section tabMenuContainer">
369 <nav class="tabMenu">
370 <ul>
371 {foreach from=$availableLanguages item=availableLanguage}
372 {assign var='containerID' value='language'|concat:$availableLanguage->languageID}
373 <li><a href="{@$__wcf->getAnchor($containerID)}">{$availableLanguage->languageName}</a></li>
374 {/foreach}
375 </ul>
376 </nav>
377
378 {foreach from=$availableLanguages item=availableLanguage}
379 <div id="language{@$availableLanguage->languageID}" class="tabMenuContent">
380 <div class="section">
381 {if $__wcf->session->getPermission('admin.content.cms.canUseMedia')}
382 <dl{if $errorField == 'image'|concat:$availableLanguage->languageID} class="formError"{/if}>
383 <dt><label for="image{@$availableLanguage->languageID}">{lang}wcf.acp.article.image{/lang}</label></dt>
384 <dd>
385 <div id="imageDisplay{@$availableLanguage->languageID}">
f4d9e975 386 {if $images[$availableLanguage->languageID]|isset && $images[$availableLanguage->languageID]->hasThumbnail('small')}
a5a4f02d
MW
387 {@$images[$availableLanguage->languageID]->getThumbnailTag('small')}
388 {/if}
389 </div>
a9566c33 390 <p class="button jsMediaSelectButton" data-store="imageID{@$availableLanguage->languageID}" data-display="imageDisplay{@$availableLanguage->languageID}">{lang}wcf.media.chooseImage{/lang}</p>
e5f9b56c 391 <input type="hidden" name="imageID[{@$availableLanguage->languageID}]" id="imageID{@$availableLanguage->languageID}"{if $imageID[$availableLanguage->languageID]|isset} value="{@$imageID[$availableLanguage->languageID]}"{/if}>
a5a4f02d
MW
392 {if $errorField == 'image'|concat:$availableLanguage->languageID}
393 <small class="innerError">{lang}wcf.acp.article.image.error.{@$errorType}{/lang}</small>
394 {/if}
395 </dd>
396 </dl>
f4d9e975 397 {elseif $action == 'edit' && $images[$availableLanguage->languageID]|isset && $images[$availableLanguage->languageID]->hasThumbnail('small')}
a5a4f02d
MW
398 <dl>
399 <dt>{lang}wcf.acp.article.image{/lang}</dt>
400 <dd>
401 <div id="imageDisplay">{@$images[$availableLanguage->languageID]->getThumbnailTag('small')}</div>
402 </dd>
403 </dl>
404 {/if}
405
79305986
MW
406 {if $__wcf->session->getPermission('admin.content.cms.canUseMedia')}
407 <dl{if $errorField == 'image'|concat:$availableLanguage->languageID} class="formError"{/if}>
408 <dt><label for="teaserImage{@$availableLanguage->languageID}">{lang}wcf.acp.article.teaserImage{/lang}</label></dt>
409 <dd>
410 <div id="teaserImageDisplay{@$availableLanguage->languageID}">
411 {if $teaserImages[$availableLanguage->languageID]|isset && $teaserImages[$availableLanguage->languageID]->hasThumbnail('small')}
412 {@$teaserImages[$availableLanguage->languageID]->getThumbnailTag('small')}
413 {/if}
414 </div>
415 <p class="button jsMediaSelectButton" data-store="teaserImageID{@$availableLanguage->languageID}" data-display="teaserImageDisplay{@$availableLanguage->languageID}">{lang}wcf.media.chooseImage{/lang}</p>
416 <input type="hidden" name="teaserImageID[{@$availableLanguage->languageID}]" id="teaserImageID{@$availableLanguage->languageID}"{if $teaserImageID[$availableLanguage->languageID]|isset} value="{@$teaserImageID[$availableLanguage->languageID]}"{/if}>
417 {if $errorField == 'teaserImage'|concat:$availableLanguage->languageID}
418 <small class="innerError">{lang}wcf.acp.article.image.error.{@$errorType}{/lang}</small>
419 {/if}
420 </dd>
421 </dl>
422 {elseif $action == 'edit' && $teaserImages[$availableLanguage->languageID]|isset && $teaserImages[$availableLanguage->languageID]->hasThumbnail('small')}
423 <dl>
424 <dt>{lang}wcf.acp.article.teaserImage{/lang}</dt>
425 <dd>
426 <div id="imageDisplay">{@$teaserImages[$availableLanguage->languageID]->getThumbnailTag('small')}</div>
427 </dd>
428 </dl>
429 {/if}
430
a5a4f02d 431 <dl{if $errorField == 'title'|concat:$availableLanguage->languageID} class="formError"{/if}>
dca8d159 432 <dt><label for="title{@$availableLanguage->languageID}">{lang}wcf.global.title{/lang}</label></dt>
a5a4f02d 433 <dd>
04ef1206 434 <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
435 {if $errorField == 'title'|concat:$availableLanguage->languageID}
436 <small class="innerError">
437 {if $errorType == 'empty'}
438 {lang}wcf.global.form.error.empty{/lang}
439 {else}
440 {lang}wcf.acp.article.title.error.{@$errorType}{/lang}
441 {/if}
442 </small>
443 {/if}
444 </dd>
445 </dl>
446
447 {if MODULE_TAGGING}
448 <dl class="jsOnly">
449 <dt><label for="tagSearchInput{@$availableLanguage->languageID}">{lang}wcf.tagging.tags{/lang}</label></dt>
450 <dd>
e5f9b56c 451 <input id="tagSearchInput{@$availableLanguage->languageID}" type="text" value="" class="long">
a5a4f02d
MW
452 <small>{lang}wcf.tagging.tags.description{/lang}</small>
453 </dd>
454 </dl>
455
456 <script data-relocate="true">
58d7e8f8 457 require(['WoltLabSuite/Core/Ui/ItemList'], function(UiItemList) {
a5a4f02d
MW
458 UiItemList.init(
459 'tagSearchInput{@$availableLanguage->languageID}',
460 [{if !$tags[$availableLanguage->languageID]|empty}{implode from=$tags[$availableLanguage->languageID] item=tag}'{$tag|encodeJS}'{/implode}{/if}],
461 {
462 ajax: {
463 className: 'wcf\\data\\tag\\TagAction'
464 },
465 maxLength: {@TAGGING_MAX_TAG_LENGTH},
466 submitFieldName: 'tags[{@$availableLanguage->languageID}][]'
467 }
468 );
469 });
470 </script>
471 {/if}
472
473 <dl{if $errorField == 'teaser'|concat:$availableLanguage->languageID} class="formError"{/if}>
474 <dt><label for="teaser{@$availableLanguage->languageID}">{lang}wcf.acp.article.teaser{/lang}</label></dt>
475 <dd>
476 <textarea name="teaser[{@$availableLanguage->languageID}]" id="teaser{@$availableLanguage->languageID}" rows="5">{if !$teaser[$availableLanguage->languageID]|empty}{$teaser[$availableLanguage->languageID]}{/if}</textarea>
477 {if $errorField == 'teaser'|concat:$availableLanguage->languageID}
478 <small class="innerError">
479 {if $errorType == 'empty'}
480 {lang}wcf.global.form.error.empty{/lang}
481 {else}
482 {lang}wcf.acp.article.teaser.error.{@$errorType}{/lang}
483 {/if}
484 </small>
485 {/if}
486 </dd>
487 </dl>
488
489 <dl{if $errorField == 'content'|concat:$availableLanguage->languageID} class="formError"{/if}>
490 <dt><label for="content{@$availableLanguage->languageID}">{lang}wcf.acp.article.content{/lang}</label></dt>
491 <dd>
21b3c837 492 <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
493
494 {capture append='__redactorJavaScript'}, '{@$__wcf->getPath()}js/3rdParty/redactor2/plugins/WoltLabPage.js?v={@LAST_UPDATE_TIME}'{/capture}
495 {capture append='__redactorConfig'}
496 buttonOptions.woltlabPage = { icon: 'fa-file-text-o', title: '{lang}wcf.editor.button.page{/lang}' };
497
498 buttons.push('woltlabPage');
499
500 config.plugins.push('WoltLabPage');
501 {/capture}
502
a5a4f02d 503 {include file='wysiwyg' wysiwygSelector='content'|concat:$availableLanguage->languageID}
1ef73f36 504
a5a4f02d
MW
505 {if $errorField == 'content'|concat:$availableLanguage->languageID}
506 <small class="innerError">
507 {if $errorType == 'empty'}
508 {lang}wcf.global.form.error.empty{/lang}
509 {else}
510 {lang}wcf.acp.article.content.error.{@$errorType}{/lang}
511 {/if}
512 </small>
513 {/if}
514 </dd>
515 </dl>
516 </div>
517 </div>
518 {/foreach}
519 </div>
520 {/if}
521
522 <div class="formSubmit">
523 <input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s">
524 <input type="hidden" name="isMultilingual" value="{@$isMultilingual}">
90a219d3 525 <input type="hidden" name="timeNowReference" value="{@TIME_NOW}">
a5a4f02d
MW
526 {@SECURITY_TOKEN_INPUT_TAG}
527 </div>
528</form>
529
1177a643
MW
530{js application='wcf' file='WCF.Label' bundle='WCF.Combined'}
531<script data-relocate="true">
532 $(function() {
533 WCF.Language.addObject({
534 'wcf.label.none': '{lang}wcf.label.none{/lang}',
535 });
536
537 {if !$labelGroups|empty}
538 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');
539 {/if}
540 });
541</script>
542
a5a4f02d 543{include file='footer'}