Merge branch '2.1'
[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(['WoltLabSuite/Core/Ui/User/Search/Input'], function(UiUserSearchInput) {
23 new UiUserSearchInput(elBySel('input[name="username"]'));
24 });
25 </script>
26
27 {if $__wcf->session->getPermission('admin.content.cms.canUseMedia')}
28 <script data-relocate="true">
29 {include file='mediaJavaScript'}
30
31 require(['WoltLabSuite/Core/Media/Manager/Select'], function(MediaManagerSelect) {
32 new MediaManagerSelect({
33 dialogTitle: '{lang}wcf.media.chooseImage{/lang}',
34 imagesOnly: 1
35 });
36 });
37 </script>
38 {/if}
39
40 <header class="contentHeader">
41 <div class="contentHeaderTitle">
42 <h1 class="contentTitle">{if $action == 'add'}{lang}wcf.acp.article.add{/lang}{else}{lang}wcf.acp.article.edit{/lang}{/if}</h1>
43 </div>
44
45 <nav class="contentHeaderNavigation">
46 <ul>
47 {if $action == 'edit'}
48 <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>
49 {/if}
50 <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>
51
52 {event name='contentHeaderNavigation'}
53 </ul>
54 </nav>
55 </header>
56
57 {include file='formError'}
58
59 {if $success|isset}
60 <p class="success">{lang}wcf.global.success.{$action}{/lang}</p>
61 {/if}
62
63 <form method="post" action="{if $action == 'add'}{link controller='ArticleAdd'}{/link}{else}{link controller='ArticleEdit' id=$articleID}{/link}{/if}">
64 <div class="section">
65 <dl{if $errorField == 'categoryID'} class="formError"{/if}>
66 <dt><label for="categoryID">{lang}wcf.acp.article.category{/lang}</label></dt>
67 <dd>
68 <select name="categoryID" id="categoryID">
69 <option value="0">{lang}wcf.global.noSelection{/lang}</option>
70
71 {foreach from=$categoryNodeList item=category}
72 <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>
73 {/foreach}
74 </select>
75 {if $errorField == 'categoryID'}
76 <small class="innerError">
77 {if $errorType == 'empty'}
78 {lang}wcf.global.form.error.empty{/lang}
79 {else}
80 {lang}wcf.acp.article.category.error.{@$errorType}{/lang}
81 {/if}
82 </small>
83 {/if}
84 </dd>
85 </dl>
86
87 <dl{if $errorField == 'username'} class="formError"{/if}>
88 <dt><label for="username">{lang}wcf.acp.article.author{/lang}</label></dt>
89 <dd>
90 <input type="text" id="username" name="username" value="{$username}" class="medium" maxlength="255">
91 {if $errorField == 'username'}
92 <small class="innerError">
93 {if $errorType == 'empty'}
94 {lang}wcf.global.form.error.empty{/lang}
95 {else}
96 {lang}wcf.user.username.error.{@$errorType}{/lang}
97 {/if}
98 </small>
99 {/if}
100 </dd>
101 </dl>
102
103 <dl{if $errorField == 'time'} class="formError"{/if}>
104 <dt><label for="time">{lang}wcf.global.date{/lang}</label></dt>
105 <dd>
106 <input type="datetime" id="time" name="time" value="{$time}" class="medium">
107 {if $errorField == 'time'}
108 <small class="innerError">
109 {if $errorType == 'empty'}
110 {lang}wcf.global.form.error.empty{/lang}
111 {else}
112 {lang}wcf.acp.article.time.error.{@$errorType}{/lang}
113 {/if}
114 </small>
115 {/if}
116 </dd>
117 </dl>
118
119 {if $__wcf->session->getPermission('admin.content.article.canManageArticle')}
120 <dl>
121 <dt><label for="categoryID">{lang}wcf.acp.article.publicationStatus{/lang}</label></dt>
122 <dd class="floated">
123 <label><input type="radio" name="publicationStatus" value="0"{if $publicationStatus == 0} checked{/if}> {lang}wcf.acp.article.publicationStatus.unpublished{/lang}</label>
124 <label><input type="radio" name="publicationStatus" value="1"{if $publicationStatus == 1} checked{/if}> {lang}wcf.acp.article.publicationStatus.published{/lang}</label>
125 <label><input type="radio" name="publicationStatus" value="2"{if $publicationStatus == 2} checked{/if}> {lang}wcf.acp.article.publicationStatus.delayed{/lang}</label>
126 </dd>
127 </dl>
128
129 <dl id="publicationDateDl"{if $errorField == 'publicationDate'} class="formError"{/if}{if $publicationStatus != 2} style="display: none"{/if}>
130 <dt><label for="publicationDate">{lang}wcf.acp.article.publicationDate{/lang}</label></dt>
131 <dd>
132 <input type="datetime" id="publicationDate" name="publicationDate" value="{$publicationDate}" class="medium">
133 {if $errorField == 'publicationDate'}
134 <small class="innerError">
135 {if $errorType == 'empty'}
136 {lang}wcf.global.form.error.empty{/lang}
137 {else}
138 {lang}wcf.acp.article.publicationDate.error.{@$errorType}{/lang}
139 {/if}
140 </small>
141 {/if}
142 </dd>
143 </dl>
144 {/if}
145
146 <dl>
147 <dt></dt>
148 <dd>
149 <label><input name="enableComments" type="checkbox" value="1"{if $enableComments} checked{/if}> {lang}wcf.acp.article.enableComments{/lang}</label>
150 </dd>
151 </dl>
152 </div>
153
154 {if !$isMultilingual}
155 <div class="section">
156 {if $__wcf->session->getPermission('admin.content.cms.canUseMedia')}
157 <dl{if $errorField == 'image'} class="formError"{/if}>
158 <dt><label for="image">{lang}wcf.acp.article.image{/lang}</label></dt>
159 <dd>
160 <div id="imageDisplay" class="selectedImagePreview">
161 {if $images[0]|isset}
162 {@$images[0]->getThumbnailTag('small')}
163 {/if}
164 </div>
165 <p class="button jsMediaSelectButton" data-store="imageID0" data-display="imageDisplay">{lang}wcf.media.chooseImage{/lang}</p>
166 <input type="hidden" name="imageID[0]" id="imageID0"{if $imageID[0]|isset} value="{@$imageID[0]}"{/if}>
167 {if $errorField == 'image'}
168 <small class="innerError">{lang}wcf.acp.article.image.error.{@$errorType}{/lang}</small>
169 {/if}
170 </dd>
171 </dl>
172 {elseif $action == 'edit' && $images[0]|isset}
173 <dl>
174 <dt>{lang}wcf.acp.article.image{/lang}</dt>
175 <dd>
176 <div id="imageDisplay">{@$images[0]->getThumbnailTag('small')}</div>
177 </dd>
178 </dl>
179 {/if}
180
181 <dl{if $errorField == 'title'} class="formError"{/if}>
182 <dt><label for="title0">{lang}wcf.global.title{/lang}</label></dt>
183 <dd>
184 <input type="text" id="title0" name="title[0]" value="{if !$title[0]|empty}{$title[0]}{/if}" class="long" maxlength="255">
185 {if $errorField == 'title'}
186 <small class="innerError">
187 {if $errorType == 'empty'}
188 {lang}wcf.global.form.error.empty{/lang}
189 {else}
190 {lang}wcf.acp.article.title.error.{@$errorType}{/lang}
191 {/if}
192 </small>
193 {/if}
194 </dd>
195 </dl>
196
197 {if MODULE_TAGGING}
198 <dl class="jsOnly">
199 <dt><label for="tagSearchInput">{lang}wcf.tagging.tags{/lang}</label></dt>
200 <dd>
201 <input id="tagSearchInput" type="text" value="" class="long">
202 <small>{lang}wcf.tagging.tags.description{/lang}</small>
203 </dd>
204 </dl>
205
206 <script data-relocate="true">
207 require(['WoltLabSuite/Core/Ui/ItemList'], function(UiItemList) {
208 UiItemList.init(
209 'tagSearchInput',
210 [{if !$tags[0]|empty}{implode from=$tags[0] item=tag}'{$tag|encodeJS}'{/implode}{/if}],
211 {
212 ajax: {
213 className: 'wcf\\data\\tag\\TagAction'
214 },
215 maxLength: {@TAGGING_MAX_TAG_LENGTH},
216 submitFieldName: 'tags[0][]'
217 }
218 );
219 });
220 </script>
221 {/if}
222
223 <dl{if $errorField == 'teaser'} class="formError"{/if}>
224 <dt><label for="teaser0">{lang}wcf.acp.article.teaser{/lang}</label></dt>
225 <dd>
226 <textarea name="teaser[0]" id="teaser0" rows="5">{if !$teaser[0]|empty}{$teaser[0]}{/if}</textarea>
227 {if $errorField == 'teaser'}
228 <small class="innerError">
229 {if $errorType == 'empty'}
230 {lang}wcf.global.form.error.empty{/lang}
231 {else}
232 {lang}wcf.acp.article.teaser.error.{@$errorType}{/lang}
233 {/if}
234 </small>
235 {/if}
236 </dd>
237 </dl>
238
239 <dl{if $errorField == 'content'} class="formError"{/if}>
240 <dt><label for="content0">{lang}wcf.acp.article.content{/lang}</label></dt>
241 <dd>
242 <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>
243 {include file='wysiwyg' wysiwygSelector='content0'}
244 {if $errorField == 'content'}
245 <small class="innerError">
246 {if $errorType == 'empty'}
247 {lang}wcf.global.form.error.empty{/lang}
248 {else}
249 {lang}wcf.acp.article.content.error.{@$errorType}{/lang}
250 {/if}
251 </small>
252 {/if}
253 </dd>
254 </dl>
255 </div>
256 {else}
257 <div class="section tabMenuContainer">
258 <nav class="tabMenu">
259 <ul>
260 {foreach from=$availableLanguages item=availableLanguage}
261 {assign var='containerID' value='language'|concat:$availableLanguage->languageID}
262 <li><a href="{@$__wcf->getAnchor($containerID)}">{$availableLanguage->languageName}</a></li>
263 {/foreach}
264 </ul>
265 </nav>
266
267 {foreach from=$availableLanguages item=availableLanguage}
268 <div id="language{@$availableLanguage->languageID}" class="tabMenuContent">
269 <div class="section">
270 {if $__wcf->session->getPermission('admin.content.cms.canUseMedia')}
271 <dl{if $errorField == 'image'|concat:$availableLanguage->languageID} class="formError"{/if}>
272 <dt><label for="image{@$availableLanguage->languageID}">{lang}wcf.acp.article.image{/lang}</label></dt>
273 <dd>
274 <div id="imageDisplay{@$availableLanguage->languageID}">
275 {if $images[$availableLanguage->languageID]|isset}
276 {@$images[$availableLanguage->languageID]->getThumbnailTag('small')}
277 {/if}
278 </div>
279 <p class="button jsMediaSelectButton" data-store="imageID{@$availableLanguage->languageID}" data-display="imageDisplay{@$availableLanguage->languageID}">{lang}wcf.media.chooseImage{/lang}</p>
280 <input type="hidden" name="imageID[{@$availableLanguage->languageID}]" id="imageID{@$availableLanguage->languageID}"{if $imageID[$availableLanguage->languageID]|isset} value="{@$imageID[$availableLanguage->languageID]}"{/if}>
281 {if $errorField == 'image'|concat:$availableLanguage->languageID}
282 <small class="innerError">{lang}wcf.acp.article.image.error.{@$errorType}{/lang}</small>
283 {/if}
284 </dd>
285 </dl>
286 {elseif $action == 'edit' && $images[$availableLanguage->languageID]|isset}
287 <dl>
288 <dt>{lang}wcf.acp.article.image{/lang}</dt>
289 <dd>
290 <div id="imageDisplay">{@$images[$availableLanguage->languageID]->getThumbnailTag('small')}</div>
291 </dd>
292 </dl>
293 {/if}
294
295 <dl{if $errorField == 'title'|concat:$availableLanguage->languageID} class="formError"{/if}>
296 <dt><label for="title{@$availableLanguage->languageID}">{lang}wcf.global.title{/lang}</label></dt>
297 <dd>
298 <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">
299 {if $errorField == 'title'|concat:$availableLanguage->languageID}
300 <small class="innerError">
301 {if $errorType == 'empty'}
302 {lang}wcf.global.form.error.empty{/lang}
303 {else}
304 {lang}wcf.acp.article.title.error.{@$errorType}{/lang}
305 {/if}
306 </small>
307 {/if}
308 </dd>
309 </dl>
310
311 {if MODULE_TAGGING}
312 <dl class="jsOnly">
313 <dt><label for="tagSearchInput{@$availableLanguage->languageID}">{lang}wcf.tagging.tags{/lang}</label></dt>
314 <dd>
315 <input id="tagSearchInput{@$availableLanguage->languageID}" type="text" value="" class="long">
316 <small>{lang}wcf.tagging.tags.description{/lang}</small>
317 </dd>
318 </dl>
319
320 <script data-relocate="true">
321 require(['WoltLabSuite/Core/Ui/ItemList'], function(UiItemList) {
322 UiItemList.init(
323 'tagSearchInput{@$availableLanguage->languageID}',
324 [{if !$tags[$availableLanguage->languageID]|empty}{implode from=$tags[$availableLanguage->languageID] item=tag}'{$tag|encodeJS}'{/implode}{/if}],
325 {
326 ajax: {
327 className: 'wcf\\data\\tag\\TagAction'
328 },
329 maxLength: {@TAGGING_MAX_TAG_LENGTH},
330 submitFieldName: 'tags[{@$availableLanguage->languageID}][]'
331 }
332 );
333 });
334 </script>
335 {/if}
336
337 <dl{if $errorField == 'teaser'|concat:$availableLanguage->languageID} class="formError"{/if}>
338 <dt><label for="teaser{@$availableLanguage->languageID}">{lang}wcf.acp.article.teaser{/lang}</label></dt>
339 <dd>
340 <textarea name="teaser[{@$availableLanguage->languageID}]" id="teaser{@$availableLanguage->languageID}" rows="5">{if !$teaser[$availableLanguage->languageID]|empty}{$teaser[$availableLanguage->languageID]}{/if}</textarea>
341 {if $errorField == 'teaser'|concat:$availableLanguage->languageID}
342 <small class="innerError">
343 {if $errorType == 'empty'}
344 {lang}wcf.global.form.error.empty{/lang}
345 {else}
346 {lang}wcf.acp.article.teaser.error.{@$errorType}{/lang}
347 {/if}
348 </small>
349 {/if}
350 </dd>
351 </dl>
352
353 <dl{if $errorField == 'content'|concat:$availableLanguage->languageID} class="formError"{/if}>
354 <dt><label for="content{@$availableLanguage->languageID}">{lang}wcf.acp.article.content{/lang}</label></dt>
355 <dd>
356 <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>
357 {include file='wysiwyg' wysiwygSelector='content'|concat:$availableLanguage->languageID}
358 {if $errorField == 'content'|concat:$availableLanguage->languageID}
359 <small class="innerError">
360 {if $errorType == 'empty'}
361 {lang}wcf.global.form.error.empty{/lang}
362 {else}
363 {lang}wcf.acp.article.content.error.{@$errorType}{/lang}
364 {/if}
365 </small>
366 {/if}
367 </dd>
368 </dl>
369 </div>
370 </div>
371 {/foreach}
372 </div>
373 {/if}
374
375 <div class="formSubmit">
376 <input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s">
377 <input type="hidden" name="isMultilingual" value="{@$isMultilingual}">
378 {@SECURITY_TOKEN_INPUT_TAG}
379 </div>
380 </form>
381
382 {include file='footer'}