<tbody>
{foreach from=$users item=user}
- <tr class="jsUserRow jsClipboardObject">
+ <tr class="jsUserRow jsClipboardObject" data-object-id="{@$user->userID}" data-banned="{if $user->banned}true{else}false{/if}" data-enabled="{if !$user->activationCode}true{else}false{/if}">
<td class="columnMark"><input type="checkbox" class="jsClipboardItem" data-object-id="{@$user->userID}"></td>
<td class="columnIcon">
+ <div class="dropdown" id="userListDropdown{@$user->userID}">
+ <a href="#" class="dropdownToggle button small"><span class="icon icon16 fa-pencil"></span> <span>{lang}wcf.global.button.edit{/lang}</span></a>
+
+ <ul class="dropdownMenu">
+ {event name='dropdownItems'}
+
+ {if $user->userID !== $__wcf->user->userID}
+ {if $__wcf->session->getPermission('admin.user.canMailUser')}
+ <li><a href="{link controller='UserMail' id=$user->userID}{/link}">{lang}wcf.acp.user.action.sendMail{/lang}</a></li>
+ {/if}
+
+ {if $user->accessible && $__wcf->session->getPermission('admin.user.canEditPassword')}
+ <li><a href="#" class="jsSendNewPassword">{lang}wcf.acp.user.action.sendNewPassword{/lang}</a></li>
+ {/if}
+ {/if}
+
++ {if $user->editable}
++ <li><a href="{link controller='UserExportGdpr' id=$user->userID}{/link}">{lang}wcf.acp.user.exportGdpr{/lang}</a></li>
++ {/if}
++
+ {if $user->deletable}
+ <li class="dropdownDivider"></li>
+ <li><a href="#" class="jsDispatchDelete">{lang}wcf.global.button.delete{/lang}</a></li>
+ {/if}
+
+ {if $user->editable}
+ <li class="dropdownDivider"></li>
+ <li><a href="{link controller='UserEdit' id=$user->userID}{/link}" class="jsEditLink">{lang}wcf.global.button.edit{/lang}</a></li>
+ {/if}
+ </ul>
+ </div>
+
+ <div class="jsLegacyButtons" style="display: none">
+ {* The old buttons (with the exception of the edit button) should remain here
+ for backwards-compatibility, they're sometimes referenced with JavaScript-
+ based insert calls. Clicks are forwarded to them anyway, thus there is no
+ significant downside, other than "just" some more legacy code. *}
+
+ {if $user->deletable}
+ <span class="icon icon16 fa-times jsTooltip jsDeleteButton pointer" title="{lang}wcf.global.button.delete{/lang}" data-object-id="{@$user->userID}" data-confirm-message-html="{lang __encode=true}wcf.acp.user.delete.sure{/lang}"></span>
+ {/if}
+ {if $user->bannable}
+ <span class="icon icon16 fa-{if $user->banned}lock{else}unlock{/if} jsBanButton jsTooltip pointer" title="{lang}wcf.acp.user.{if $user->banned}unban{else}ban{/if}{/lang}" data-object-id="{@$user->userID}" data-ban-message="{lang}wcf.acp.user.ban{/lang}" data-unban-message="{lang}wcf.acp.user.unban{/lang}" data-banned="{if $user->banned}true{else}false{/if}"></span>
+ {/if}
+ {if $user->canBeEnabled}
+ <span class="icon icon16 fa-{if !$user->activationCode}check-square-o{else}square-o{/if} jsEnableButton jsTooltip pointer" title="{lang}wcf.acp.user.{if !$user->activationCode}disable{else}enable{/if}{/lang}" data-object-id="{@$user->userID}" data-enable-message="{lang}wcf.acp.user.enable{/lang}" data-disable-message="{lang}wcf.acp.user.disable{/lang}" data-enabled="{if !$user->activationCode}true{else}false{/if}"></span>
+ {/if}
+
+ {event name='rowButtons'}
+ </div>
+ </td>
+ <td class="columnID columnUserID">{@$user->userID}</td>
+ <td class="columnIcon">{@$user->getAvatar()->getImageTag(24)}</td>
+ <td class="columnTitle columnUsername">
{if $user->editable}
- <a href="{link controller='UserEdit' id=$user->userID}{/link}" title="{lang}wcf.global.button.edit{/lang}" class="jsTooltip"><span class="icon icon16 fa-pencil"></span></a>
+ <a title="{lang}wcf.acp.user.edit{/lang}" href="{link controller='UserEdit' id=$user->userID}{/link}">{$user->username}</a>
{else}
- <span class="icon icon16 fa-pencil disabled" title="{lang}wcf.global.button.edit{/lang}"></span>
+ {$user->username}
{/if}
- {if $user->deletable}
- <span class="icon icon16 fa-times jsTooltip jsDeleteButton pointer" title="{lang}wcf.global.button.delete{/lang}" data-object-id="{@$user->userID}" data-confirm-message-html="{lang __encode=true}wcf.acp.user.delete.sure{/lang}"></span>
- {else}
- <span class="icon icon16 fa-times disabled" title="{lang}wcf.global.button.delete{/lang}"></span>
- {/if}
- {if $user->bannable}
- <span class="icon icon16 fa-{if $user->banned}lock{else}unlock{/if} jsBanButton jsTooltip pointer" title="{lang}wcf.acp.user.{if $user->banned}unban{else}ban{/if}{/lang}" data-object-id="{@$user->userID}" data-ban-message="{lang}wcf.acp.user.ban{/lang}" data-unban-message="{lang}wcf.acp.user.unban{/lang}" data-banned="{if $user->banned}true{else}false{/if}"></span>
- {else}
- <span class="icon icon16 fa-{if $user->banned}lock{else}unlock{/if} disabled" title="{lang}wcf.acp.user.{if $user->banned}unban{else}ban{/if}{/lang}"></span>
+ {if MODULE_USER_RANK}
+ {if $user->getUserTitle()} <span class="badge userTitleBadge{if $user->getRank() && $user->getRank()->cssClassName} {@$user->getRank()->cssClassName}{/if}">{$user->getUserTitle()}</span>{/if}
+ {if $user->getRank() && $user->getRank()->rankImage} <span class="userRankImage">{@$user->getRank()->getImage()}</span>{/if}
{/if}
- {if $user->canBeEnabled}
- <span class="icon icon16 fa-{if !$user->activationCode}check-square-o{else}square-o{/if} jsEnableButton jsTooltip pointer" title="{lang}wcf.acp.user.{if !$user->activationCode}disable{else}enable{/if}{/lang}" data-object-id="{@$user->userID}" data-enable-message="{lang}wcf.acp.user.enable{/lang}" data-disable-message="{lang}wcf.acp.user.disable{/lang}" data-enabled="{if !$user->activationCode}true{else}false{/if}"></span>
- {else}
- <span class="icon icon16 fa-{if !$user->activationCode}check-square-o{else}square-o{/if} disabled" title="{lang}wcf.acp.user.{if !$user->activationCode}disable{else}enable{/if}{/lang}"></span>
- {/if}
- {if $user->editable}
- <a href="{link controller='UserExportGdpr' id=$user->userID}{/link}" title="{lang}wcf.acp.user.exportGdpr{/lang}" class="jsTooltip"><span class="icon icon16 icon-download-alt"></span></a>
- {else}
- <span class="icon icon16 icon-download-alt disabled" title="{lang}wcf.acp.user.exportGdpr{/lang}"></span>
- {/if}
-
- {event name='rowButtons'}
</td>
- <td class="columnID columnUserID">{@$user->userID}</td>
- <td class="columnIcon">{@$user->getAvatar()->getImageTag(24)}</td>
- <td class="columnTitle columnUsername">{if $user->editable}<a title="{lang}wcf.acp.user.edit{/lang}" href="{link controller='UserEdit' id=$user->userID}{/link}">{$user->username}</a>{else}{$user->username}{/if}{if MODULE_USER_RANK}{if $user->getUserTitle()} <span class="badge userTitleBadge{if $user->getRank() && $user->getRank()->cssClassName} {@$user->getRank()->cssClassName}{/if}">{$user->getUserTitle()}</span>{/if}{if $user->getRank() && $user->getRank()->rankImage} <span class="userRankImage">{@$user->getRank()->getImage()}</span>{/if}{/if}</td>
{foreach from=$columnHeads key=column item=columnLanguageVariable}
+ {if $column === 'registrationDate'}
+ <td class="columnDate columnRegistrationIpAddress">
+ {if $__wcf->session->getPermission('admin.user.canViewIpAddress') && $user->registrationIpAddress}
+ <span class="jsTooltip" title="{lang}wcf.user.registrationIpAddress{/lang}">{$user->getRegistrationIpAddress()}</span>
+ {/if}
+ </td>
+ {/if}
<td class="column{$column|ucfirst}{if $columnStyling[$column]|isset} {$columnStyling[$column]}{/if}">{if $columnValues[$user->userID][$column]|isset}{@$columnValues[$user->userID][$column]}{/if}</td>
{/foreach}