120 lines
8.2 KiB
HTML
120 lines
8.2 KiB
HTML
<html
|
|
xmlns:backend="http://typo3.org/ns/TYPO3/CMS/Backend/ViewHelpers"
|
|
xmlns:beuser="http://typo3.org/ns/TYPO3/CMS/Beuser/ViewHelpers"
|
|
xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers"
|
|
xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
|
data-namespace-typo3-fluid="true"
|
|
>
|
|
|
|
<f:layout name="Module" />
|
|
<f:section name="Content">
|
|
|
|
<h1><f:translate key="LLL:EXT:beuser/Resources/Private/Language/locallang.xlf:backendUser.online.title" /></h1>
|
|
<div class="table-fit">
|
|
<table class="table beuser-online-table">
|
|
<thead>
|
|
<tr>
|
|
<th colspan="2"><f:translate key="LLL:EXT:beuser/Resources/Private/Language/locallang.xlf:userName" /> / <f:translate key="LLL:EXT:beuser/Resources/Private/Language/locallang.xlf:realName" /></th>
|
|
<th class="col-50"><f:translate key="LLL:EXT:beuser/Resources/Private/Language/locallang.xlf:backendUser.online.table.column.ipAddress" /></th>
|
|
<th class="col-datetime"><f:translate key="LLL:EXT:beuser/Resources/Private/Language/locallang.xlf:backendUser.online.table.column.lastAccess" /></th>
|
|
<th class="col-control"><span class="visually-hidden"><f:translate key="LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels._CONTROL_" /></span></th>
|
|
</tr>
|
|
</thead>
|
|
<f:for each="{onlineUsersAndSessions}" as="onlineUser">
|
|
<tbody>
|
|
<f:for each="{onlineUser.sessions}" as="session" iteration="backendUserIterator">
|
|
<f:variable name="sessionAmount" value="{onlineUser.sessions -> f:count()}" />
|
|
<tr{f:if(condition: '({sessionAmount} > 1) && !{backendUserIterator.isFirst}', then: ' class="beuser-online-table_row"')}>
|
|
<f:if condition="{backendUserIterator.isFirst}">
|
|
<f:then>
|
|
<td {f:if(condition: '{sessionAmount} > 1', then: 'rowspan="{sessionAmount}" class="col-avatar align-top"', else: 'class="col-avatar"')}>
|
|
<button
|
|
type="button"
|
|
class="btn btn-link"
|
|
data-contextmenu-trigger="click"
|
|
data-contextmenu-table="be_users"
|
|
data-contextmenu-uid="{onlineUser.backendUser.uid}"
|
|
title="{f:if(condition: '{onlineUser.backendUser.description}', then: '{onlineUser.backendUser.description} (id={onlineUser.backendUser.uid})', else: 'id={onlineUser.backendUser.uid}')}"
|
|
aria-label="{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.contextMenu.open')}"
|
|
>
|
|
<backend:avatar backendUser="{onlineUser.backendUser.uid}" showIcon="true" />
|
|
</button>
|
|
</td>
|
|
<td {f:if(condition: '{sessionAmount} > 1', then: 'rowspan="{sessionAmount}" class="col-min align-top border-end"', else: 'class="col-min"')}>
|
|
<backend:link.editRecord table="be_users" uid="{onlineUser.backendUser.uid}" title="{f:translate(key:'btn.edit')}">
|
|
<f:if condition="{onlineUser.backendUser.realName}">
|
|
<f:then>
|
|
{onlineUser.backendUser.realName}
|
|
<beuser:mfaStatus userUid="{onlineUser.backendUser.uid}"/><br>
|
|
<span class="text-variant">({onlineUser.backendUser.userName})</span>
|
|
</f:then>
|
|
<f:else>
|
|
{onlineUser.backendUser.userName}
|
|
<beuser:mfaStatus userUid="{onlineUser.backendUser.uid}"/>
|
|
</f:else>
|
|
</f:if>
|
|
</backend:link.editRecord>
|
|
</td>
|
|
</f:then>
|
|
</f:if>
|
|
<td class="col-50">{session.ip}</td>
|
|
<td class="col-datetime">
|
|
<f:format.date format="{dateFormat} {timeFormat}" date="{session.timestamp}" />
|
|
<f:if condition="{currentSessionId} == {session.id}">
|
|
<span class="badge badge-notice"><f:translate key="LLL:EXT:beuser/Resources/Private/Language/locallang.xlf:backendUser.online.activeSession" /></span>
|
|
</f:if>
|
|
</td>
|
|
<td class="col-control">
|
|
<f:if condition="{currentSessionId} == {session.id}">
|
|
<f:else>
|
|
<f:form.button
|
|
name="sessionId"
|
|
value="{session.id}"
|
|
form="form-terminate-backend-user-session"
|
|
class="btn btn-default t3js-modal-trigger"
|
|
title="{f:translate(key: 'resetPassword.label')}"
|
|
type="submit"
|
|
data-severity="warning"
|
|
data-title="{f:translate(key: 'backendUser.online.endSession')}"
|
|
data-content="{f:translate(key: 'backendUser.online.reallyLogout')} {onlineUser.backendUser.userName}?"
|
|
data-button-close-text="{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:cancel')}"
|
|
>
|
|
<core:icon identifier="actions-close" />
|
|
<f:translate key="LLL:EXT:beuser/Resources/Private/Language/locallang.xlf:backendUser.online.endSession" />
|
|
</f:form.button>
|
|
</f:else>
|
|
</f:if>
|
|
<a
|
|
class="btn btn-default"
|
|
href="#"
|
|
data-dispatch-action="TYPO3.InfoWindow.showItem"
|
|
data-dispatch-args-list="be_users,{onlineUser.backendUser.uid}"
|
|
role="button"
|
|
>
|
|
<core:icon identifier="actions-document-info" />
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</f:for>
|
|
</tbody>
|
|
</f:for>
|
|
<tfoot>
|
|
<tr>
|
|
<td colspan="5">
|
|
<f:variable name="onlineUsersAndSessionsCount">{onlineUsersAndSessions -> f:count()}</f:variable>
|
|
<f:if condition="{onlineUsersAndSessionsCount} > 1">
|
|
<f:then>{onlineUsersAndSessionsCount} <f:translate key="LLL:EXT:beuser/Resources/Private/Language/locallang.xlf:users" /></f:then>
|
|
<f:else>{onlineUsersAndSessionsCount} <f:translate key="LLL:EXT:beuser/Resources/Private/Language/locallang.xlf:user" /></f:else>
|
|
</f:if>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
|
|
<f:form id="form-terminate-backend-user-session" action="terminateBackendUserSession" controller="BackendUser" method="post"class="hidden" />
|
|
|
|
</f:section>
|
|
|
|
</html>
|