1 {include file='header' pageTitle='wcf.acp.user.'|concat:$action}
3 <script data-relocate="true">
11 <header class="boxHeadline">
12 <h1>{lang}wcf.acp.user.{@$action}{/lang}</h1>
13 {if $action == 'edit'}<p>{$user->username}</p>{/if}
16 {include file='formError'}
18 {if $userID|isset && $__wcf->user->userID == $userID}
19 <p class="warning">{lang}wcf.acp.user.edit.warning.selfEdit{/lang}</p>
23 <p class="success">{lang}wcf.global.success.{@$action}{/lang}</p>
26 <div class="contentNavigation">
29 <li><a href="{link controller='UserList'}{/link}" class="button"><span class="icon icon16 icon-list"></span> <span>{lang}wcf.acp.menu.link.user.list{/lang}</span></a></li>
31 {event name='contentNavigationButtons'}
36 <form method="post" action="{if $action == 'add'}{link controller='UserAdd'}{/link}{else}{link controller='UserEdit' id=$userID}{/link}{/if}">
37 <div class="tabMenuContainer">
40 <li><a href="{@$__wcf->getAnchor('__essentials')}">{lang}wcf.global.form.data{/lang}</a></li>
42 {foreach from=$optionTree item=categoryLevel1}
43 <li><a href="{@$__wcf->getAnchor($categoryLevel1[object]->categoryName)}">{lang}wcf.user.option.category.{@$categoryLevel1[object]->categoryName}{/lang}</a></li>
46 {if MODULE_USER_SIGNATURE}
47 <li><a href="{@$__wcf->getAnchor('signatureManagement')}">{lang}wcf.user.signature{/lang}</a></li>
50 {if $action == 'edit'}
51 <li><a href="{@$__wcf->getAnchor('avatarForm')}">{lang}wcf.user.avatar{/lang}</a></li>
54 {event name='tabMenuTabs'}
58 <div id="__essentials" class="container containerPadding tabMenuContent hidden">
60 <legend>{lang}wcf.acp.user.general{/lang}</legend>
62 <dl{if $errorType.username|isset} class="formError"{/if}>
63 <dt><label for="username">{lang}wcf.user.username{/lang}</label></dt>
65 <input type="text" id="username" name="username" value="{$username}" pattern="^[^,\n]+$" autofocus="autofocus" class="medium" />
66 {if $errorType.username|isset}
67 <small class="innerError">
68 {if $errorType.username == 'empty'}
69 {lang}wcf.global.form.error.empty{/lang}
71 {lang}wcf.user.username.error.{@$errorType.username}{/lang}
78 {if $availableGroups|count}
81 <label>{lang}wcf.acp.user.groups{/lang}</label>
84 {htmlCheckboxes options=$availableGroups name=groupIDs selected=$groupIDs}
89 {event name='generalFields'}
92 {if $action == 'add' || $__wcf->session->getPermission('admin.user.canEditMailAddress')}
94 <legend>{lang}wcf.user.email{/lang}</legend>
96 <dl{if $errorType.email|isset} class="formError"{/if}>
97 <dt><label for="email">{lang}wcf.user.email{/lang}</label></dt>
99 <input type="email" id="email" name="email" value="{$email}" required="required" class="medium" />
100 {if $errorType.email|isset}
101 <small class="innerError">
102 {if $errorType.email == 'empty'}
103 {lang}wcf.global.form.error.empty{/lang}
105 {lang}wcf.user.email.error.{@$errorType.email}{/lang}
112 <dl{if $errorType.confirmEmail|isset} class="formError"{/if}>
113 <dt><label for="confirmEmail">{lang}wcf.user.confirmEmail{/lang}</label></dt>
115 <input type="email" id="confirmEmail" name="confirmEmail" value="{$confirmEmail}" required="required" class="medium" />
116 {if $errorType.confirmEmail|isset}
117 <small class="innerError">
118 {lang}wcf.user.confirmEmail.error.{@$errorType.confirmEmail}{/lang}
124 {event name='emailFields'}
128 {if $action == 'add' || $__wcf->session->getPermission('admin.user.canEditPassword')}
130 <legend>{lang}wcf.user.password{/lang}</legend>
132 <dl{if $errorType.password|isset} class="formError"{/if}>
133 <dt><label for="password">{lang}wcf.user.password{/lang}</label></dt>
135 <input type="password" id="password" name="password" value="{$password}"{if $action == 'add'} required="required"{/if} class="medium" />
136 {if $errorType.password|isset}
137 <small class="innerError">
138 {if $errorType.password == 'empty'}
139 {lang}wcf.global.form.error.empty{/lang}
141 {lang}wcf.user.password.error.{@$errorType.password}{/lang}
148 <dl{if $errorType.confirmPassword|isset} class="formError"{/if}>
149 <dt><label for="confirmPassword">{lang}wcf.user.confirmPassword{/lang}</label></dt>
151 <input type="password" id="confirmPassword" name="confirmPassword" value="{$confirmPassword}"{if $action == 'add'} required="required"{/if} class="medium" />
152 {if $errorType.confirmPassword|isset}
153 <small class="innerError">
154 {lang}wcf.user.confirmPassword.error.{@$errorType.confirmPassword}{/lang}
160 {event name='passwordFields'}
164 {if $action == 'edit' && $__wcf->session->getPermission('admin.user.canBanUser') && $__wcf->user->userID != $userID}
166 <legend>{lang}wcf.acp.user.banUser{/lang}</legend>
171 <label><input type="checkbox" id="banned" name="banned" value="1" {if $banned == 1}checked="checked" {/if}/> {lang}wcf.acp.user.banUser{/lang}</label>
172 <small>{lang}wcf.acp.user.banUser.description{/lang}</small>
177 <dt><label for="banReason">{lang}wcf.acp.user.banReason{/lang}</label></dt>
179 <textarea name="banReason" id="banReason" cols="40" rows="10">{$banReason}</textarea>
180 <small>{lang}wcf.acp.user.banReason.description{/lang}</small>
184 {event name='banFields'}
187 <script data-relocate="true">
189 $('#banned').change(function (event) {
190 if ($('#banned').is(':checked')) {
191 $('#banReason').attr('readonly', false);
194 $('#banReason').attr('readonly', true);
197 $('#banned').change();
202 {event name='fieldsets'}
205 {foreach from=$optionTree item=categoryLevel1}
206 <div id="{@$categoryLevel1[object]->categoryName}" class="container containerPadding tabMenuContent hidden">
207 {foreach from=$categoryLevel1[categories] item=categoryLevel2}
209 <legend>{lang}wcf.user.option.category.{@$categoryLevel2[object]->categoryName}{/lang}</legend>
211 {if $categoryLevel2[object]->categoryName == 'settings.general' && $availableLanguages|count > 1}
213 <dt><label for="languageID">{lang}wcf.user.language{/lang}</label></dt>
215 {htmlOptions options=$availableLanguages selected=$languageID name=languageID id=languageID disableEncoding=true}
219 {if $availableContentLanguages|count > 1}
222 <label>{lang}wcf.user.visibleLanguages{/lang}</label>
225 {foreach from=$availableContentLanguages key=availableLanguageID item=availableLanguage}
226 <label><input type="checkbox" name="visibleLanguages[]" value="{@$availableLanguageID}"{if $availableLanguageID|in_array:$visibleLanguages} checked="checked"{/if} /> {@$availableLanguage}</label>
233 {if $categoryLevel2[object]->categoryName == 'profile.personal' && MODULE_USER_RANK}
235 <dt><label for="userTitle">{lang}wcf.user.userTitle{/lang}</label></dt>
237 <input type="text" id="userTitle" name="userTitle" value="{$userTitle}" class="long" maxlength="{@USER_TITLE_MAX_LENGTH}" />
238 {if $errorType[userTitle]|isset}
239 <small class="innerError">
240 {lang}wcf.user.userTitle.error.{@$errorType[userTitle]}{/lang}
243 <small>{lang}wcf.user.userTitle.description{/lang}</small>
248 {event name='categoryFields'}
250 {include file='optionFieldList' options=$categoryLevel2[options] langPrefix='wcf.user.option.'}
252 {if $categoryLevel2[categories]|count}
253 {foreach from=$categoryLevel2[categories] item=categoryLevel3}
254 {include file='optionFieldList' options=$categoryLevel3[options] langPrefix='wcf.user.option.'}
262 {if MODULE_USER_SIGNATURE}
263 <div id="signatureManagement" class="container containerPadding tabMenuContent hidden">
265 <legend>{lang}wcf.user.signature{/lang}</legend>
268 <dt><label for="signature">{lang}wcf.user.signature{/lang}</label></dt>
270 <textarea name="signature" id="signature" cols="40" rows="10">{$signature}</textarea>
275 <dt>{lang}wcf.message.settings{/lang}</dt>
277 <label><input id="signatureEnableSmilies" name="signatureEnableSmilies" type="checkbox" value="1"{if $signatureEnableSmilies} checked="checked"{/if} /> {lang}wcf.message.settings.enableSmilies{/lang}</label>
278 <label><input id="signatureEnableBBCodes" name="signatureEnableBBCodes" type="checkbox" value="1"{if $signatureEnableBBCodes} checked="checked"{/if} /> {lang}wcf.message.settings.enableBBCodes{/lang}</label>
279 <label><input id="signatureEnableHtml" name="signatureEnableHtml" type="checkbox" value="1"{if $signatureEnableHtml} checked="checked"{/if} /> {lang}wcf.message.settings.enableHtml{/lang}</label>
285 <legend>{lang}wcf.acp.user.disableSignature{/lang}</legend>
290 <label><input type="checkbox" id="disableSignature" name="disableSignature" value="1" {if $disableSignature == 1}checked="checked" {/if}/> {lang}wcf.acp.user.disableSignature{/lang}</label>
295 <dt><label for="disableSignatureReason">{lang}wcf.acp.user.disableSignatureReason{/lang}</label></dt>
297 <textarea name="disableSignatureReason" id="disableSignatureReason" cols="40" rows="10">{$disableSignatureReason}</textarea>
302 <script data-relocate="true">
304 $('#disableSignature').change(function (event) {
305 if ($('#disableSignature').is(':checked')) {
306 $('#disableSignatureReason').attr('readonly', false);
309 $('#disableSignatureReason').attr('readonly', true);
312 $('#disableSignature').change();
318 {if $action == 'edit'}
319 <div id="avatarForm" class="container containerPadding tabMenuContent hidden">
321 <legend>{lang}wcf.user.avatar{/lang}</legend>
326 <label><input type="radio" name="avatarType" value="none" {if $avatarType == 'none'}checked="checked" {/if}/> {lang}wcf.user.avatar.type.none{/lang}</label>
330 <dl class="jsOnly{if $errorType[customAvatar]|isset} formError{/if}" id="avatarUpload">
331 <dt class="framed">{if $avatarType == 'custom'}{@$userAvatar->getImageTag(96)}{else}<img src="{@$__wcf->getPath()}images/avatars/avatar-default.svg" alt="" class="icon96" />{/if}</dt>
333 <label><input type="radio" name="avatarType" value="custom" {if $avatarType == 'custom'}checked="checked" {/if}/> {lang}wcf.user.avatar.type.custom{/lang}</label>
335 {* placeholder for upload button: *}
338 {if $errorType[customAvatar]|isset}
339 <small class="innerError">
340 {if $errorType[customAvatar] == 'empty'}{lang}wcf.global.form.error.empty{/lang}{/if}
347 <dl{if $errorType[gravatar]|isset} class="formError"{/if}>
348 <dt class="framed"><img src="https://secure.gravatar.com/avatar/{@$user->email|strtolower|md5}?s=96" alt="" class="icon96" /></dt>
350 <label><input type="radio" name="avatarType" value="gravatar" {if $avatarType == 'gravatar'}checked="checked" {/if}/> {lang}wcf.user.avatar.type.gravatar{/lang}</label>
352 {if $errorType[gravatar]|isset}
353 <small class="innerError">
354 {if $errorType[gravatar] == 'notFound'}{lang}wcf.user.avatar.type.gravatar.error.notFound{/lang}{/if}
363 <legend>{lang}wcf.acp.user.disableAvatar{/lang}</legend>
368 <label><input type="checkbox" id="disableAvatar" name="disableAvatar" value="1" {if $disableAvatar == 1}checked="checked" {/if}/> {lang}wcf.acp.user.disableAvatar{/lang}</label>
373 <dt><label for="disableAvatarReason">{lang}wcf.acp.user.disableAvatarReason{/lang}</label></dt>
375 <textarea name="disableAvatarReason" id="disableAvatarReason" cols="40" rows="10">{$disableAvatarReason}</textarea>
380 <script data-relocate="true" src="{@$__wcf->getPath()}js/WCF.Message{if !ENABLE_DEBUG_MODE}.min{/if}.js?v={@$__wcfVersion}"></script>
381 <script data-relocate="true" src="{@$__wcf->getPath()}js/WCF.User{if !ENABLE_DEBUG_MODE}.min{/if}.js?v={@$__wcfVersion}"></script>
382 <script data-relocate="true">
385 $('#disableAvatar').change(function (event) {
386 if ($('#disableAvatar').is(':checked')) {
387 $('#disableAvatarReason').attr('readonly', false);
390 $('#disableAvatarReason').attr('readonly', true);
393 $('#disableAvatar').change();
395 WCF.Language.addObject({
396 'wcf.user.avatar.upload.error.invalidExtension': '{lang}wcf.user.avatar.upload.error.invalidExtension{/lang}',
397 'wcf.user.avatar.upload.error.tooSmall': '{lang}wcf.user.avatar.upload.error.tooSmall{/lang}',
398 'wcf.user.avatar.upload.error.tooLarge': '{lang}wcf.user.avatar.upload.error.tooLarge{/lang}',
399 'wcf.user.avatar.upload.error.uploadFailed': '{lang}wcf.user.avatar.upload.error.uploadFailed{/lang}',
400 'wcf.user.avatar.upload.error.badImage': '{lang}wcf.user.avatar.upload.error.badImage{/lang}',
401 'wcf.user.avatar.upload.success': '{lang}wcf.user.avatar.upload.success{/lang}',
402 'wcf.global.button.upload': '{lang}wcf.global.button.upload{/lang}'
405 new WCF.User.Avatar.Upload({@$user->userID});
412 {event name='tabMenuContent'}
415 <div class="formSubmit">
416 <input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s" />
417 {@SECURITY_TOKEN_INPUT_TAG}
421 {include file='footer'}