[TASK] Twitter Bootstrap EXT:beuser follow up 48/34348/12
authorMathias Schreiber <mathias.schreiber@wmdb.de>
Wed, 19 Nov 2014 15:08:09 +0000 (16:08 +0100)
committerFrank Nägler <typo3@naegler.net>
Thu, 20 Nov 2014 08:18:33 +0000 (09:18 +0100)
* Visual streamlining of EXT:beuser
* align buttons in button groups and fillup empty buttons.
* hide the "hide" button for current loggedin user

Resolves: #63075
Relates: #63057
Releases: master
Change-Id: I1b0313de0ab086d7a1facb6fa2456ce502ba8fc4
Reviewed-on: http://review.typo3.org/34348
Reviewed-by: Markus Klein <klein.t3@reelworx.at>
Tested-by: Markus Klein <klein.t3@reelworx.at>
Reviewed-by: Frank Nägler <typo3@naegler.net>
Tested-by: Frank Nägler <typo3@naegler.net>
typo3/sysext/beuser/Classes/Domain/Model/BackendUser.php
typo3/sysext/beuser/Classes/ViewHelpers/IssueCommandViewHelper.php
typo3/sysext/beuser/Classes/ViewHelpers/RemoveUserViewHelper.php
typo3/sysext/beuser/Classes/ViewHelpers/SwitchUserViewHelper.php
typo3/sysext/beuser/Resources/Private/Partials/BackendUser/IndexListRow.html
typo3/sysext/beuser/Resources/Private/Partials/BackendUser/OnlineListRow.html
typo3/sysext/beuser/Resources/Private/Partials/Filters/BackendUser/Index.html
typo3/sysext/beuser/Resources/Private/Templates/BackendUser/Compare.html
typo3/sysext/beuser/Resources/Private/Templates/BackendUser/Index.html
typo3/sysext/beuser/Resources/Private/Templates/BackendUser/Online.html
typo3/sysext/beuser/Resources/Public/Css/style.css

index 1a6ff87..e171df8 100644 (file)
@@ -116,4 +116,21 @@ class BackendUser extends \TYPO3\CMS\Extbase\Domain\Model\BackendUser {
                return $this->backendUserGroups;
        }
 
+       /**
+        * Check if user is currently logged in
+        *
+        * @return bool
+        */
+       public function isCurrentlyLoggedIn() {
+               return $this->getUid() === (int)$this->getBackendUser()->user['uid'];
+       }
+
+       /**
+        * Gets the currently logged in backend user
+        *
+        * @return \TYPO3\CMS\Core\Authentication\BackendUserAuthentication
+        */
+       public function getBackendUser() {
+               return $GLOBALS['BE_USER'];
+       }
 }
index 45f2bdb..c79e386 100644 (file)
@@ -34,7 +34,7 @@ class IssueCommandViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractVi
         */
        public function render($parameters, $redirectUrl = '') {
                $redirectUrl = $redirectUrl ?: \TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('REQUEST_URI');
-               return $GLOBALS['BACK_PATH'] . 'tce_db.php?' . $parameters . '&redirect=' . ($redirectUrl == '' ? '\' + T3_THIS_LOCATION + \'' : rawurlencode($redirectUrl)) . '&vC=' . rawurlencode($GLOBALS['BE_USER']->veriCode()) . \TYPO3\CMS\Backend\Utility\BackendUtility::getUrlToken('tceAction') . '&prErr=1&uPT=1';
+               return htmlspecialchars($GLOBALS['BACK_PATH'] . 'tce_db.php?' . $parameters . '&redirect=' . ($redirectUrl === '' ? '\' + T3_THIS_LOCATION + \'' : rawurlencode($redirectUrl)) . '&vC=' . rawurlencode($GLOBALS['BE_USER']->veriCode()) . \TYPO3\CMS\Backend\Utility\BackendUtility::getUrlToken('tceAction') . '&prErr=1&uPT=1');
        }
 
 }
index a7c73f9..0253396 100644 (file)
@@ -13,7 +13,11 @@ namespace TYPO3\CMS\Beuser\ViewHelpers;
  *
  * The TYPO3 project - inspiring people to share!
  */
-
+use TYPO3\CMS\Backend\Utility\IconUtility;
+use TYPO3\CMS\Beuser\Domain\Model\BackendUser;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
+use TYPO3\CMS\Backend\Utility\BackendUtility;
 /**
  * Displays 'Delete user' link with sprite icon to remove user
  *
@@ -27,15 +31,19 @@ class RemoveUserViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractView
         * @param \TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser Target backendUser to switch active session to
         * @return string
         */
-       public function render(\TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser) {
+       public function render(BackendUser $backendUser) {
                if ($backendUser->getUid() == $GLOBALS['BE_USER']->user['uid']) {
-                       return '';
+                       return '<span class="btn disabled">' . IconUtility::getSpriteIcon('empty-empty') . '</span>';
                }
 
-               $redirectUrl = \TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('REQUEST_URI');
+               $redirectUrl = GeneralUtility::getIndpEnv('REQUEST_URI');
                $parameters = 'cmd[be_users][' . $backendUser->getUid() . '][delete]=1';
-               $url = $GLOBALS['BACK_PATH'] . 'tce_db.php?&' . $parameters . '&redirect=' . ($redirectUrl == '' ? '\' + T3_THIS_LOCATION + \'' : rawurlencode($redirectUrl)) . '&vC=' . rawurlencode($GLOBALS['BE_USER']->veriCode()) . \TYPO3\CMS\Backend\Utility\BackendUtility::getUrlToken('tceAction') . '&prErr=1&uPT=1';
-               return '<a class="btn" href="' . $url . '"  onclick="return confirm(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue(\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('confirm', 'beuser', array($backendUser->getUserName()))) . ')">' . \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon(('actions-edit-delete')) . '</a>';
+               $url = $GLOBALS['BACK_PATH'] . 'tce_db.php?&' . $parameters . '&redirect=' .
+                       ($redirectUrl == '' ? '\' + T3_THIS_LOCATION + \'' : rawurlencode($redirectUrl)) . '&vC=' .
+                       rawurlencode($GLOBALS['BE_USER']->veriCode()) . BackendUtility::getUrlToken('tceAction') . '&prErr=1&uPT=1';
+               return '<a class="btn" href="' . $url . '"  onclick="return confirm(' .
+                       GeneralUtility::quoteJSvalue(LocalizationUtility::translate('confirm', 'beuser', array($backendUser->getUserName()))) .
+                       ')">' . IconUtility::getSpriteIcon(('actions-edit-delete')) . '</a>';
        }
 
 }
index d8ee59f..e03fc9a 100644 (file)
@@ -13,6 +13,10 @@ namespace TYPO3\CMS\Beuser\ViewHelpers;
  *
  * The TYPO3 project - inspiring people to share!
  */
+use TYPO3\CMS\Backend\Utility\IconUtility;
+use TYPO3\CMS\Beuser\Domain\Model\BackendUser;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
 
 /**
  * Displays 'SwitchUser' link with sprite icon to change current backend user to target (non-admin) backendUser
@@ -25,15 +29,18 @@ class SwitchUserViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractView
        /**
         * Render link with sprite icon to change current backend user to target
         *
-        * @param \TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser Target backendUser to switch active session to
+        * @param BackendUser $backendUser Target backendUser to switch active session to
         * @return string
         */
-       public function render(\TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser) {
-               if ($backendUser->getUid() == $GLOBALS['BE_USER']->user['uid']) {
-                       return '';
+       public function render(BackendUser $backendUser) {
+               if ($backendUser->getUid() == $GLOBALS['BE_USER']->user['uid'] || !$backendUser->isActive()) {
+                       return '<span class="btn disabled">' . IconUtility::getSpriteIcon('empty-empty') . '</span>';
                }
-               $title = \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('switchBackMode', 'beuser');
-               return '<a class="btn" href="' . htmlspecialchars(\TYPO3\CMS\Core\Utility\GeneralUtility::linkThisScript(array('SwitchUser' => $backendUser->getUid()))) . '" target="_top" title="' . htmlspecialchars($title) . '">' . \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon(('actions-system-backend-user-switch')) . '</a>';
+               $title = LocalizationUtility::translate('switchBackMode', 'beuser');
+               return '<a class="btn" href="' .
+                       htmlspecialchars(GeneralUtility::linkThisScript(array('SwitchUser' => $backendUser->getUid()))) .
+                       '" target="_top" title="' . htmlspecialchars($title) . '">' .
+                       IconUtility::getSpriteIcon(('actions-system-backend-user-switch')) . '</a>';
        }
 
 }
index 323e5d9..cb1fef7 100644 (file)
@@ -7,39 +7,35 @@
                </a>
        </td>
        <td class="t3-title-column">
-               <a href="alt_doc.php?edit[be_users][{backendUser.uid}]=edit&returnUrl={returnUrl}">
+               <a href="alt_doc.php?edit[be_users][{backendUser.uid}]=edit&amp;returnUrl={returnUrl}">
                        <b>{backendUser.userName}</b><br />
                        {backendUser.realName}
                </a>
        </td>
        <td>
-               <f:link.action action="addToCompareList" arguments="{uid: backendUser.uid}"><bu:spriteManagerIcon iconName="actions-edit-add"/></f:link.action>
-               <f:link.action action="addToCompareList" arguments="{uid: backendUser.uid}"><f:translate key="compare">Compare</f:translate></f:link.action>
+               <f:link.action action="addToCompareList" arguments="{uid: backendUser.uid}" class="btn"><bu:spriteManagerIcon iconName="actions-edit-add"/> <f:translate key="compare" /></f:link.action>
        </td>
        <td class="col-control">
                <div class="btn-group" role="group">
                        <a class="btn" href="#" onclick="top.launchView('be_users', '{backendUser.uid}'); return false;"><bu:spriteManagerIcon iconName="actions-document-info" /></a>
-                       <a class="btn" href="alt_doc.php?edit[be_users][{backendUser.uid}]=edit&returnUrl={returnUrl}"><bu:spriteManagerIcon iconName="actions-document-open" /></a>
-
-                       <f:if condition="{backendUser.isDisabled} == 1">
+                       <a class="btn" href="alt_doc.php?edit[be_users][{backendUser.uid}]=edit&amp;returnUrl={returnUrl}"><bu:spriteManagerIcon iconName="actions-document-open" /></a>
+                       <f:if condition="{backendUser.currentlyLoggedIn} == 1">
                                <f:then>
-                                       <a class="btn" href="<bu:issueCommand parameters="tce_db.php?&data[be_users][{backendUser.uid}][disable]=0&redirect={redirectUrl}" />"><bu:spriteManagerIcon iconName="actions-edit-unhide" options="{title: 'unhide'}" /></a>
+                                       <span class="btn disabled"><bu:spriteManagerIcon iconName="empty-empty" /></span>
                                </f:then>
                                <f:else>
-                                       <a class="btn" href="<bu:issueCommand parameters="tce_db.php?&data[be_users][{backendUser.uid}][disable]=1&redirect={redirectUrl}" />"><bu:spriteManagerIcon iconName="actions-edit-hide" options="{title: 'hide'}" /></a>
+                                       <f:if condition="{backendUser.isDisabled} == 1">
+                                               <f:then>
+                                                       <a class="btn" href="{bu:issueCommand(parameters: 'data[be_users][{backendUser.uid}][disable]=0', redirectUrl: redirectUrl)}"><bu:spriteManagerIcon iconName="actions-edit-unhide" options="{title: 'unhide'}" /></a>
+                                               </f:then>
+                                               <f:else>
+                                                       <a class="btn" href="{bu:issueCommand(parameters: 'data[be_users][{backendUser.uid}][disable]=1', redirectUrl: redirectUrl)}"><bu:spriteManagerIcon iconName="actions-edit-hide" options="{title: 'hide'}" /></a>
+                                               </f:else>
+                                       </f:if>
                                </f:else>
                        </f:if>
-
                        <bu:removeUser backendUser="{backendUser}" />
-
-                       <f:comment>
-                               No need to check if currently listed user is current user.
-                               SU does not work with admin users and current user must always be admin.
-                               Only admin users may use the backend user administration.
-                       </f:comment>
-                       <f:if condition="{backendUser.active} == 1">
-                               <bu:SwitchUser backendUser="{backendUser}" />
-                       </f:if>
+                       <bu:SwitchUser backendUser="{backendUser}" />
                </div>
        </td>
        <td class="hidden-xs hidden-sm">
@@ -48,7 +44,7 @@
                                <f:format.date format="{dateFormat} {timeFormat}">{backendUser.lastLoginDateAndTime}</f:format.date>
                        </f:then>
                        <f:else>
-                               <f:translate key="never">Never</f:translate>
+                               <f:translate key="never" />
                        </f:else>
                </f:if>
        </td>
index c83ec55..ded9bfe 100644 (file)
@@ -1,43 +1,45 @@
 {namespace bu = TYPO3\CMS\Beuser\ViewHelpers}
 
-<tr class="db_list_normal">
-       <td>
-               <b>{onlineUser.backendUser.userName}</b><br />
-               {onlineUser.backendUser.realName}
-       </td>
-       <td class="col-control">
-               <div class="btn-group" role="group">
-                       <a class="btn" href="#" onclick="top.launchView('be_users', '{onlineUser.backendUser.uid}',''); return false;">
-                               <bu:SpriteManagerIcon iconName="actions-document-info" />
-                       </a>
-               </div>
-       </td>
-
-       <f:for each="{onlineUser.sessions}" as="session" key="sessionKey">
-               <f:if condition="{sessionKey} > 0">
+<f:for each="{onlineUser.sessions}" as="session" iteration="it">
+       <tr class="db_list_normal">
+               <f:if condition="{it.isFirst}">
                        <f:then>
-                               <tr class="db_list_normal">
-                                       <td colspan="2"></td>
+                               <td>
+                                       <b>{onlineUser.backendUser.userName}</b><br />
+                                       {onlineUser.backendUser.realName}
+                               </td>
+                               <td class="col-control">
+                                       <div class="btn-group" role="group">
+                                               <a class="btn" href="#" onclick="top.launchView('be_users', '{onlineUser.backendUser.uid}',''); return false;">
+                                                       <bu:SpriteManagerIcon iconName="actions-document-info" />
+                                               </a>
+                                       </div>
+                               </td>
                        </f:then>
+                       <f:else>
+                               <td colspan="2"></td>
+                       </f:else>
                </f:if>
+
                <td>
-                       <f:format.date format="{dateFormat} {timeFormat}" date="@{session.timestamp}" />
+                       <f:format.date format="{dateFormat} {timeFormat}" date="{session.timestamp}" />
                </td>
                <td>{session.ip}</td>
                <td>
                        <f:if condition="{currentSessionId} == {session.id}">
                                <f:else>
                                        <f:link.action
+                                               class="btn"
                                                action="terminateBackendUserSession"
                                                controller="BackendUser"
                                                arguments="{backendUser: onlineUser.backendUser, sessionId: session.id}"
-                                               onclick="javascript:return confirm('{f:translate(key: \"reallyLogout\")} {onlineUser.backendUser.userName}?');"
+                                               onclick="javascript:return confirm('{f:translate(key: \'reallyLogout\')} {onlineUser.backendUser.userName}?');"
                                        >
                                                <bu:spriteManagerIcon iconName="actions-document-close" />
-                                               <f:translate key="endSession">End session</f:translate>
+                                               <f:translate key="endSession" />
                                        </f:link.action>
                                </f:else>
                        </f:if>
                </td>
        </tr>
-</f:for>
\ No newline at end of file
+</f:for>
index 5fe86db..e922cbf 100644 (file)
@@ -1,48 +1,68 @@
 {namespace bu = TYPO3\CMS\Beuser\ViewHelpers}
 
 <bu:section title="Filter" collapsible="TRUE">
-       <f:form action="index" objectName="demand" object="{demand}">
-               <div>
-                       <label for="tx_Beuser_username"><f:translate key="userName">Username</f:translate></label>
-                       <f:form.textfield
-                               id="tx_Beuser_username"
-                               property="userName"
-                       />
+       <f:form action="index" objectName="demand" object="{demand}" class="form-horizontal">
+               <div class="form-group">
+                       <label for="tx_Beuser_username" class="col-sm-4 control-label"><f:translate key="userName">Username</f:translate></label>
+                       <div class="col-sm-8">
+                               <f:form.textfield
+                                       id="tx_Beuser_username"
+                                       class="form-control"
+                                       property="userName"
+                               />
+                       </div>
                </div>
-               <div>
-                       <label for="tx_Beuser_usertype"><f:translate key="admin">Admin</f:translate></label>
-                       <f:form.select
-                               id="tx_Beuser_usertype"
-                               property="userType"
-                               options="{0: '{f:translate(key:\"both\")}', 1: '{f:translate(key:\"adminOnly\")}', 2: '{f:translate(key:\"normalUserOnly\")}'}"
-                       />
+               <div class="form-group">
+                       <label for="tx_Beuser_usertype" class="col-sm-4 control-label"><f:translate key="admin">Admin</f:translate></label>
+                       <div class="col-sm-8">
+                               <f:form.select
+                                       id="tx_Beuser_usertype"
+                                       class="form-control"
+                                       property="userType"
+                                       options="{0: '{f:translate(key:\"both\")}', 1: '{f:translate(key:\"adminOnly\")}', 2: '{f:translate(key:\"normalUserOnly\")}'}"
+                               />
+                       </div>
                </div>
-               <div>
-                       <label for="tx_Beuser_status"><f:translate key="status">Status</f:translate></label>
-                       <f:form.select
-                               id="tx_Beuser_status"
-                               property="status"
-                               options="{0: '{f:translate(key:\"both\")}', 1: '{f:translate(key:\"activeOnly\")}', 2: '{f:translate(key:\"inactiveOnly\")}'}"
-                       />
+               <div class="form-group">
+                       <label for="tx_Beuser_status" class="col-sm-4 control-label"><f:translate key="status">Status</f:translate></label>
+                       <div class="col-sm-8">
+                               <f:form.select
+                                       id="tx_Beuser_status"
+                                       class="form-control"
+                                       property="status"
+                                       options="{0: '{f:translate(key:\"both\")}', 1: '{f:translate(key:\"activeOnly\")}', 2: '{f:translate(key:\"inactiveOnly\")}'}"
+                               />
+                       </div>
                </div>
-               <div>
-                       <label for="tx_Beuser_logins"><f:translate key="login">Login</f:translate></label>
-                       <f:form.select
-                               id="tx_Beuser_logins"
-                               property="logins"
-                               options="{0: '{f:translate(key:\"both\")}', 1: '{f:translate(key:\"loginBefore\")}', 2: '{f:translate(key:\"neverLoggedIn\")}'}"
-                       />
+               <div class="form-group">
+                       <label for="tx_Beuser_logins" class="col-sm-4 control-label"><f:translate key="login">Login</f:translate></label>
+                       <div class="col-sm-8">
+                               <f:form.select
+                                       id="tx_Beuser_logins"
+                                       class="form-control"
+                                       property="logins"
+                                       options="{0: '{f:translate(key:\"both\")}', 1: '{f:translate(key:\"loginBefore\")}', 2: '{f:translate(key:\"neverLoggedIn\")}'}"
+                               />
+                       </div>
                </div>
-               <div>
-                       <label for="tx_beuser_backendUserGroup"><f:translate key="backendUserGroup">User Group</f:translate></label>
-                       <f:form.select
-                               id="tx_beuser_backendUserGroup"
-                               property="backendUserGroup"
-                               options="{backendUserGroups}"
-                               optionLabelField="title"
-                               optionValueField="uid"
-                       />
+               <div class="form-group">
+                       <label for="tx_beuser_backendUserGroup" class="col-sm-4 control-label"><f:translate key="backendUserGroup">User Group</f:translate></label>
+                       <div class="col-sm-8">
+                               <f:form.select
+                                       id="tx_beuser_backendUserGroup"
+                                       class="form-control"
+                                       property="backendUserGroup"
+                                       options="{backendUserGroups}"
+                                       optionLabelField="title"
+                                       optionValueField="uid"
+                               />
+                       </div>
                </div>
-               <f:form.submit class="indent" value="{f:translate(key: 'filter')}" />
+               <div class="form-group">
+                       <div class="col-sm-offset-4 col-sm-8">
+                               <f:form.submit value="{f:translate(key: 'filter')}" />
+                       </div>
+               </div>
+
        </f:form>
 </bu:section>
\ No newline at end of file
index 33129c2..4810607 100644 (file)
        <table border="0" cellpadding="0" cellspacing="0" id="tx_beuser_compare" class="t3-table">
                <thead>
                        <tr class="t3-row-header">
-                               <th class="label"></th>
+                               <th>&nbsp;</th>
                                <f:for each="{compareUserList}" as="compareUser">
                                        <th>
                                                <a href="#" class="t3-js-clickmenutrigger" data-table="be_users" data-uid="{compareUser.uid}" data-listframe="1" title="id={compareUser.uid}">
-                                                       <bu:spriteIconForRecord table="be_users" object="{compareUser}" /></a>
+                                                       <bu:spriteIconForRecord table="be_users" object="{compareUser}" />
+                                               </a>
                                                {compareUser.userName}
                                        </th>
                                </f:for>
                </thead>
                <tbody>
                        <tr>
-                               <td><h5><f:translate key="realName">Real name</f:translate></h5></td>
+                               <td><h5><f:translate key="realName" /></h5></td>
                                <f:for each="{compareUserList}" as="compareUser">
                                        <td>{compareUser.realName}</td>
                                </f:for>
                        </tr>
                        <tr>
-                               <td><h5><f:translate key="email">Email</f:translate></h5></td>
+                               <td><h5><f:translate key="email" /></h5></td>
                                <f:for each="{compareUserList}" as="compareUser">
                                        <td>
                                                <f:if condition="{compareUser.email}">
                                </f:for>
                        </tr>
                        <tr>
-                               <td><h5><f:translate key="admin">Admin</f:translate></h5></td>
+                               <td><h5><f:translate key="admin" /></h5></td>
                                <f:for each="{compareUserList}" as="compareUser">
                                        <td>
                                                <f:if condition="{compareUser.isAdministrator}">
-                                                       <f:then>
-                                                               <f:translate key="yes">Yes</f:translate>
-                                                       </f:then>
-                                                       <f:else>
-                                                               <f:translate key="no">No</f:translate>
-                                                       </f:else>
+                                                       <f:then><f:translate key="yes" /></f:then>
+                                                       <f:else><f:translate key="no" /></f:else>
                                                </f:if>
                                        </td>
                                </f:for>
                        </tr>
                        <tr>
-                               <td><h5><f:translate key="disable">Disable</f:translate></h5></td>
+                               <td><h5><f:translate key="disable" /></h5></td>
                                <f:for each="{compareUserList}" as="compareUser">
                                        <td>
                                                <f:if condition="{compareUser.isDisabled} == 1">
                                                        <f:then>
-                                                               <a href="<bu:issueCommand parameters="tce_db.php?&data[be_users][{compareUser.uid}][disable]=0&redirect={redirectUrl}" />">
+                                                               <a href="{bu:issueCommand(parameters: 'data[be_users][{compareUser.uid}][disable]=0', redirectUrl: redirectUrl)}">
                                                                        <bu:spriteManagerIcon iconName="actions-edit-unhide" options="{title: 'unhide'}" />
                                                                </a>
                                                        </f:then>
                                                        <f:else>
-                                                               <a href="<bu:issueCommand parameters="tce_db.php?&data[be_users][{compareUser.uid}][disable]=1&redirect={redirectUrl}" />">
+                                                               <a href="{bu:issueCommand(parameters: 'data[be_users][{compareUser.uid}][disable]=1', redirectUrl: redirectUrl)}">
                                                                        <bu:spriteManagerIcon iconName="actions-edit-hide" options="{title: 'hide'}" />
                                                                </a>
                                                        </f:else>
                                </f:for>
                        </tr>
                        <tr>
-                               <td><h5><f:translate key="lastLogin">Last login</f:translate></h5></td>
+                               <td><h5><f:translate key="lastLogin" /></h5></td>
                                <f:for each="{compareUserList}" as="compareUser">
                                        <td>
                                                <f:if condition="{compareUser.lastLoginDateAndTime}">
                                                                <f:format.date format="{dateFormat} {timeFormat}">{compareUser.lastLoginDateAndTime}</f:format.date>
                                                        </f:then>
                                                        <f:else>
-                                                               <f:translate key="never">Never</f:translate>
+                                                               <f:translate key="never" />
                                                        </f:else>
                                                </f:if>
                                        </td>
                                </f:for>
                        </tr>
                        <tr>
-                               <td><h5><f:translate key="backendUserGroups">Member of groups</f:translate></h5></td>
+                               <td><h5><f:translate key="backendUserGroups" /></h5></td>
                                <f:for each="{compareUserList}" as="compareUser">
                                        <td>
                                                <f:for each="{compareUser.BackendUserGroups}" as="backendUserGroup">
                                </f:for>
                        </tr>
                        <tr>
-                               <td><h5><f:translate key="allowedLanguages">Limit to languages</f:translate></h5></td>
+                               <td><h5><f:translate key="allowedLanguages" /></h5></td>
                                <f:for each="{compareUserList}" as="compareUser">
                                        <td>
                                                <f:if condition="{compareUser.allowedLanguages}">
                                </f:for>
                        </tr>
                        <tr>
-                               <td><h5><f:translate key="dbMountPoints">DB mountpoints</f:translate></h5></td>
+                               <td><h5><f:translate key="dbMountPoints" /></h5></td>
                                <f:for each="{compareUserList}" as="compareUser">
                                        <td>
                                                <f:if condition="{compareUser.dbMountPoints}">
                                </f:for>
                        </tr>
                        <tr>
-                               <td><h5><f:translate key="fileMounts">File mountpoints</f:translate></h5></td>
+                               <td><h5><f:translate key="fileMounts" /></h5></td>
                                <f:for each="{compareUserList}" as="compareUser">
                                        <td>
                                                <f:if condition="{compareUser.fileMountPoints}">
                                </f:for>
                        </tr>
                        <tr>
-                               <td><h5><f:translate key="disableIpLock">Disable IP lock</f:translate></h5></td>
+                               <td><h5><f:translate key="disableIpLock" /></h5></td>
                                <f:for each="{compareUserList}" as="compareUser">
                                        <td>
                                                <f:if condition="{compareUser.ipLockIsDisabled} == 1">
-                                                       <f:then>
-                                                               <f:translate key="yes">Yes</f:translate>
-                                                       </f:then>
-                                                       <f:else>
-                                                               <f:translate key="no">No</f:translate>
-                                                       </f:else>
+                                                       <f:then><f:translate key="yes" /></f:then>
+                                                       <f:else><f:translate key="no" /></f:else>
                                                </f:if>
                                        </td>
                                </f:for>
                        </tr>
-               </table>
+               </tbody>
        </table>
-</f:section>
\ No newline at end of file
+</f:section>
index d8853ab..ef46a1e 100644 (file)
@@ -3,11 +3,11 @@
 <f:layout name="Default" />
 
 <f:section name="iconButtons">
-       <a href="#" onclick="window.location.href='alt_doc.php?returnUrl='+T3_THIS_LOCATION+'&edit[be_users][0]=new'; return false;"><bu:spriteManagerIcon iconName="actions-document-new" /></a>
+       <a href="#" onclick="window.location.href='alt_doc.php?returnUrl='+T3_THIS_LOCATION+'&amp;edit[be_users][0]=new'; return false;"><bu:spriteManagerIcon iconName="actions-document-new" /></a>
 </f:section>
 
 <f:section name="headline">
-       <h1><f:translate key="backendUserListing">Backend User Listing</f:translate></h1>
+       <h1><f:translate key="backendUserListing" /></h1>
 </f:section>
 
 <f:section name="content">
        </f:comment>
 
        <f:if condition="{compareUserList}">
-               <bu:Section title="{f:translate(key: 'section.compare', default: 'Compare')}" collapsible="TRUE">
+               <bu:section title="{f:translate(key: 'section.compare', default: 'Compare')}" collapsible="TRUE">
                        <ul id="compareUsers">
                                <f:for each="{compareUserList}" as="compareUser">
                                        <li>
-                                               <f:link.action
-                                                       action="removeFromCompareList"
-                                                       arguments="{uid: compareUser.uid}"
-                                               ><bu:SpriteManagerIcon iconName="actions-selection-delete" /></f:link.action>
+                                               <f:link.action action="removeFromCompareList"   arguments="{uid: compareUser.uid}">
+                                                       <bu:SpriteManagerIcon iconName="actions-selection-delete" />
+                                               </f:link.action>
 
                                                <a href="#" class="t3-js-clickmenutrigger" data-table="be_users" data-uid="{compareUser.uid}" data-listframe="1" title="id={compareUser.uid}">
                                                        <bu:spriteIconForRecord table="be_users" object="{compareUser}" />
@@ -38,7 +37,7 @@
                                <f:form.submit value="{f:translate(key: 'compareUserList', default: 'Compare user list')}" />
                        </f:form>
 
-               </bu:Section>
+               </bu:section>
        </f:if>
 
        <f:comment>
                        <thead>
                                <tr>
                                        <th>&nbsp;</th>
-                                       <th>
-                                               <f:translate key="userName">Username</f:translate> /
-                                               <f:translate key="realName">Real name</f:translate>
-                                       </th>
+                                       <th><f:translate key="userName" /> / <f:translate key="realName" /></th>
                                        <th>&nbsp;</th>
                                        <th>&nbsp;</th>
-                                       <th class="hidden-xs hidden-sm"><f:translate key="lastLogin">Last login</f:translate></th>
+                                       <th class="hidden-xs hidden-sm"><f:translate key="lastLogin" /></th>
                                </tr>
                        </thead>
                        <tbody>
                                </f:comment>
                                <tr>
                                        <td colspan="6">
-                                               <f:count subject="{backendUsers}" /> <f:translate key="users">Users</f:translate>
+                                               <f:count subject="{backendUsers}" /> <f:translate key="users" />
                                        </td>
                                </tr>
                        </tbody>
                </table>
        </f:be.widget.paginate>
-</f:section>
\ No newline at end of file
+</f:section>
index 1962ab6..9adbe77 100644 (file)
        <table class="t3-table">
                <thead>
                        <tr>
-                               <th>
-                                       <f:translate key="userName">Username</f:translate> /
-                                       <f:translate key="realName">Real name</f:translate>
-                               </th>
+                               <th><f:translate key="userName" /> / <f:translate key="realName" /></th>
                                <th>&nbsp;</th>
-                               <th>
-                                       <f:translate key="lastAccess">Last access</f:translate>
-                               </th>
-                               <th>
-                                       <f:translate key="ipAddress">IP address</f:translate>
-                               </th>
+                               <th><f:translate key="lastAccess" /></th>
+                               <th><f:translate key="ipAddress" /></th>
                                <th>&nbsp;</th>
                        </tr>
                </thead>
-
                <tbody>
                        <f:for each="{onlineUsersAndSessions}" as="onlineUser">
                                <f:render partial="BackendUser/OnlineListRow" arguments="{onlineUser: onlineUser, dateFormat: dateFormat, timeFormat: timeFormat, currentSessionId: currentSessionId}" />
                        </f:for>
                </tbody>
        </table>
-</f:section>
\ No newline at end of file
+</f:section>
index 785e880..753f7e9 100644 (file)
@@ -2,7 +2,7 @@
  * @group: Structure
  */
 
-#compareUsers { margin-bottom: 10px; }
+#compareUsers { margin-bottom: 10px; list-style-type: none; padding-left: 0.1em; }
 
 div.collapsibleSection { background-color: #ededed; border-top: 1px solid #cdcdcd; border-bottom: 1px solid #cdcdcd; padding: 12px; margin-bottom: 24px; }
        #typo3-docbody div.collapsibleSection form { margin-bottom: 0; }
@@ -17,9 +17,6 @@ div.collapsibleSection { background-color: #ededed; border-top: 1px solid #cdcdc
  * @group: Form
  */
 
-form label { float: left; height: 20px; line-height: 20px; margin-right: 10px; width: 90px; }
-form div { clear: both; margin-bottom: 5px; }
-
        form .field-row,
        form .button-row { clear: both; margin-bottom: 10px; }
        form .indent { margin-left: 100px; }
@@ -52,4 +49,4 @@ form div { clear: both; margin-bottom: 5px; }
 }
 .t3-table a {
     cursor: pointer;
-}
\ No newline at end of file
+}