Merge branch '3.0'
authorAlexander Ebert <ebert@woltlab.com>
Fri, 18 May 2018 14:08:29 +0000 (16:08 +0200)
committerAlexander Ebert <ebert@woltlab.com>
Fri, 18 May 2018 14:08:29 +0000 (16:08 +0200)
1  2 
wcfsetup/install/files/acp/templates/userList.tpl
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml

index 6f603a9143582c8ce84612198ef7d8ac566f0f8a,1c31bd2d2e108605b9a4258692dc1300f830817a..951db8110d7addeaab5651801d9f30d96a79ef5d
                        
                        <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}
                                                
index 4ff04854a83e46fb0821bbcd4a54c5ead0441550,6712e09bd7ed84a0ed1fd10715781d8951b1ba44..faa929471e8198316ed489646f3996845e1767f9
@@@ -2291,10 -1957,7 +2290,11 @@@ Benutzerkontos nun in vollem Umfang nut
                <item name="wcf.acp.user.bulkProcessing.sendMail"><![CDATA[E-Mail an Benutzer senden]]></item>
                <item name="wcf.acp.user.bulkProcessing.success"><![CDATA[Die gewählte Aktion wurde auf {#$affectedObjectCount} Benutzer ausgeführt.]]></item>
                <item name="wcf.acp.user.bulkProcessing.warning"><![CDATA[Die Massenbearbeitung von Benutzern führt die unten ausgewählte Aktion <b>ohne zusätzliche Sicherheitsabfrage</b> bei allen Benutzern aus, die unter die eingestellten Bedingungen fallen.]]></item>
 +              <item name="wcf.acp.user.profileMenu.sort"><![CDATA[Benutzerprofil-Menü Sortierung]]></item>
 +              <item name="wcf.acp.user.action.sendMail"><![CDATA[E-Mail senden]]></item>
 +              <item name="wcf.acp.user.action.sendNewPassword"><![CDATA[Neues Passwort zusenden]]></item>
 +              <item name="wcf.acp.user.action.sendNewPassword.confirmMessage"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Willst du{else}Wollen Sie{/if} diesem Benutzer wirklich ein neues Kennwort zusenden?]]></item>
+               <item name="wcf.acp.user.exportGdpr"><![CDATA[Persönliche Daten exportieren (DSGVO)]]></item>
        </category>
        
        <category name="wcf.acp.worker">
index ef603f566e83d492906af8c48af1eb3dbacf43b2,938a9ed2ae7c9397b73a937fdaf61102d8cc4956..cab9c53d4d9ebcf91b2d19857e9a8e7917d91ee6
@@@ -2226,10 -1915,7 +2226,11 @@@ full extend.]]></item
                <item name="wcf.acp.user.bulkProcessing.sendMail"><![CDATA[Send Email to Users]]></item>
                <item name="wcf.acp.user.bulkProcessing.success"><![CDATA[The selected action has been executed and affected {#$affectedObjectCount} user{if $affectedObjectCount != 1}s{/if}.]]></item>
                <item name="wcf.acp.user.bulkProcessing.warning"><![CDATA[Heads up! The bulk processing executes all actions below on all users matching the selected conditions without any further confirmation prompt!]]></item>
 +              <item name="wcf.acp.user.profileMenu.sort"><![CDATA[User Profile Menu Show Order]]></item>
 +              <item name="wcf.acp.user.action.sendMail"><![CDATA[Send Email]]></item>
 +              <item name="wcf.acp.user.action.sendNewPassword"><![CDATA[Send New Password]]></item>
 +              <item name="wcf.acp.user.action.sendNewPassword.confirmMessage"><![CDATA[Do you really want to send a new password to this user?]]></item>
+               <item name="wcf.acp.user.exportGdpr"><![CDATA[Export Personal Data (GDPR)]]></item>
        </category>
        
        <category name="wcf.acp.worker">