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