first commit

This commit is contained in:
salam committed 2026-10-19 08:18:39 +02:00
commit 1218dd1517
12716 files changed
+989233

No files matched your search

@@ -0,0 +1,93 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers"
xmlns:be="http://typo3.org/ns/TYPO3/CMS/Backend/ViewHelpers"
xmlns:bu="http://typo3.org/ns/TYPO3/CMS/Beuser/ViewHelpers">
<f:section name="list_row">
<tr>
<td>
<a href="#" class="t3js-contextmenutrigger" data-table="be_users" data-uid="{backendUser.uid}" title="{f:if(condition: '{backendUser.description}', then: '{backendUser.description} ')}(id={backendUser.uid})">
<be:avatar backendUser="{backendUser.uid}" showIcon="TRUE" />
</a>
</td>
<td class="col-title">
<be:link.editRecord table="be_users" uid="{backendUser.uid}" title="edit">
<b>{backendUser.userName}</b>
</be:link.editRecord>
<f:if condition="{bu:arrayElement(array: onlineBackendUsers, key: backendUser.uid)}">
<span class="label label-success"><f:translate key="online" /></span>
</f:if>
<br />
<f:if condition="{backendUser.realName}">
<be:link.editRecord table="be_users" uid="{backendUser.uid}" title="edit">
{backendUser.realName}
</be:link.editRecord>
</f:if>
</td>
<td>
<f:if condition="{backendUser.lastLoginDateAndTime}">
<f:then>
<f:format.date format="{dateFormat} {timeFormat}">{backendUser.lastLoginDateAndTime}</f:format.date>
</f:then>
<f:else>
<f:translate key="never" />
</f:else>
</f:if>
</td>
<td class="col-control">
<div class="btn-group" role="group">
<be:link.editRecord class="btn btn-default" table="be_users" uid="{backendUser.uid}" title="edit" >
<core:icon identifier="actions-open" />
</be:link.editRecord>
<f:if condition="{backendUser.currentlyLoggedIn} == 1">
<f:then>
<span class="btn btn-default disabled"><core:icon identifier="empty-empty" /></span>
</f:then>
<f:else>
<f:if condition="{backendUser.isDisabled} == 1">
<f:then>
<a class="btn btn-default" href="{bu:issueCommand(parameters: 'data[be_users][{backendUser.uid}][disable]=0', redirectUrl: redirectUrl)}" title="{f:translate(key:'visibility.unhide')}"><core:icon identifier="actions-edit-unhide" /></a>
</f:then>
<f:else>
<a class="btn btn-default" href="{bu:issueCommand(parameters: 'data[be_users][{backendUser.uid}][disable]=1', redirectUrl: redirectUrl)}" title="{f:translate(key:'visibility.hide')}"><core:icon identifier="actions-edit-hide" /></a>
</f:else>
</f:if>
</f:else>
</f:if>
<f:if condition="{currentUserUid} == {backendUser.uid}">
<f:then>
<span class="btn btn-default disabled"><core:icon identifier="empty-empty" /></span>
</f:then>
<f:else>
<a class="btn btn-default t3js-modal-trigger" href="{bu:removeUser(backendUser:backendUser)}"
title="{f:translate(key:'LLL:EXT:beuser/Resources/Private/Language/locallang.xlf:delete')}"
data-severity="warning"
data-title="{f:translate(key:'LLL:EXT:backend/Resources/Private/Language/locallang_alt_doc.xlf:label.confirm.delete_record.title')}"
data-content="{f:translate(key:'confirm',arguments:'{0:backendUser.userName}')}"
data-button-close-text="{f:translate(key:'LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:cancel')}">
<core:icon identifier="actions-edit-delete" />
</a>
</f:else>
</f:if>
</div>
<div class="btn-group" role="group">
<a class="btn btn-default" href="#" onclick="top.TYPO3.InfoWindow.showItem('be_users', '{backendUser.uid}'); return false;"><core:icon identifier="actions-document-info" /></a>
</div>
<div class="btn-group" role="group">
<f:if condition="{compareUserUidList.{backendUser.uid}}">
<f:then>
<f:link.action action="removeFromCompareList" arguments="{uid: backendUser.uid}" class="btn btn-default">
<core:icon identifier="actions-remove" size="small"/>
<f:translate key="compare" />
</f:link.action>
</f:then>
<f:else>
<f:link.action action="addToCompareList" arguments="{uid: backendUser.uid}" class="btn btn-default"><core:icon identifier="actions-add" size="small"/> <f:translate key="compare" /></f:link.action>
</f:else>
</f:if>
<bu:SwitchUser backendUser="{backendUser}" />
</div>
</td>
</tr>
</f:section>
</html>
@@ -0,0 +1,49 @@
{namespace be=TYPO3\CMS\Backend\ViewHelpers}
{namespace bu=TYPO3\CMS\Beuser\ViewHelpers}
<f:for each="{onlineUser.sessions}" as="session" iteration="it">
<tr>
<f:if condition="{it.isFirst}">
<f:then>
<td>
<a href="#" class="t3js-contextmenutrigger" data-table="be_users" data-uid="{onlineUser.backendUser.uid}" title="{f:if(condition: '{onlineUser.backendUser.description}', then: '{onlineUser.backendUser.description} ')}(id={onlineUser.backendUser.uid})">
<be:avatar backendUser="{onlineUser.backendUser.uid}" showIcon="true" />
</a>
</td>
<td class="col-title">
<b>{onlineUser.backendUser.userName}</b>
<span class="label label-success"><f:translate key="online" /></span><br />
{onlineUser.backendUser.realName}
</td>
</f:then>
<f:else>
<td></td>
<td class="col-title"></td>
</f:else>
</f:if>
<td>
<f:format.date format="{dateFormat} {timeFormat}" date="{session.timestamp}" />
</td>
<td>{session.ip}</td>
<td class="col-control">
<div class="btn-group" role="group">
<f:if condition="{currentSessionId} == {session.id}">
<f:else>
<f:link.action
class="btn btn-default t3js-modal-trigger"
action="terminateBackendUserSession"
controller="BackendUser"
arguments="{backendUser: onlineUser.backendUser, sessionId: session.id}"
data="{severity: 'warning', title: '{f:translate(key: \'endSession\')}', content: '{f:translate(key: \'reallyLogout\')} {onlineUser.backendUser.userName}?', button-close-text: '{f:translate(key: \'LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:cancel\')}'}"
>
<core:icon identifier="actions-close" />
<f:translate key="endSession" />
</f:link.action>
</f:else>
</f:if>
<a class="btn btn-default" href="#" onclick="top.TYPO3.InfoWindow.showItem('be_users', '{onlineUser.backendUser.uid}'); return false;">
<core:icon identifier="actions-document-info" />
</a>
</div>
</td>
</tr>
</f:for>
@@ -0,0 +1,3 @@
<f:be.widget.paginate objects="{backendUsers}" as="paginatedBackendUsers" configuration="{itemsPerPage: 50, insertBelow: 1}">
<f:render partial="BackendUser/PaginatedListWidgetBody" arguments="{_all}" />
</f:be.widget.paginate>
@@ -0,0 +1,27 @@
<div class="table-fit">
<table id="typo3-backend-user-list" class="table table-striped table-hover">
<thead>
<tr>
<th></th>
<th class="col-title"><f:translate key="userName" /> / <f:translate key="realName" /></th>
<th><f:translate key="lastLogin" /></th>
<th class="col-control"></th>
</tr>
</thead>
<tbody>
<f:for each="{paginatedBackendUsers}" as="backendUser">
<f:render partial="BackendUser/IndexListRow" section="list_row" arguments="{demand: demand, backendUser: backendUser, onlineBackendUsers: onlineBackendUsers, dateFormat: dateFormat, timeFormat: timeFormat, compareUserUidList: compareUserUidList, currentUserUid: currentUserUid}" />
</f:for>
<f:comment>
Footer row: no officially defined style yet
</f:comment>
</tbody>
<tfoot>
<tr>
<td colspan="5">
<f:count subject="{backendUsers}" /> <f:translate key="users" />
</td>
</tr>
</tfoot>
</table>
</div>
@@ -0,0 +1,47 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers"
xmlns:be="http://typo3.org/ns/TYPO3/CMS/Backend/ViewHelpers"
xmlns:bu="http://typo3.org/ns/TYPO3/CMS/Beuser/ViewHelpers">
<f:section name="list_row">
<tr>
<td class="col-icon">
<a href="#" class="t3js-contextmenutrigger" data-table="be_groups" data-uid="{backendUserGroup.uid}" title="{f:if(condition: '{backendUserGroup.description}', then: '{backendUserGroup.description} ')}(id={backendUserGroup.uid})">
<bu:spriteIconForRecord table="be_groups" object="{backendUserGroup}" />
</a>
</td>
<td class="col-title">
<be:link.editRecord table="be_groups" uid="{backendUserGroup.uid}" title="edit">
<b>{backendUserGroup.title}</b><br />
{backendUser.realName}
</be:link.editRecord>
</td>
<td>
<f:for each="{backendUserGroup.subgroups}" as="subgroup" iteration="subGroupIterator">
<be:link.editRecord table="be_groups" uid="{subgroup.uid}" title="edit">
{subgroup.title}
</be:link.editRecord>
<f:if condition="{subGroupIterator.isLast}"><f:else>, </f:else></f:if>
</f:for>
</td>
<td class="col-control">
<div class="btn-group" role="group">
<be:link.editRecord class="btn btn-default" table="be_groups" uid="{backendUserGroup.uid}" title="edit">
<core:icon identifier="actions-open" />
</be:link.editRecord>
<f:if condition="{backendUserGroup.hidden}">
<f:then>
<a class="btn btn-default" href="{bu:issueCommand(parameters: 'data[be_groups][{backendUserGroup.uid}][hidden]=0', redirectUrl: redirectUrl)}" title="{f:translate(key:'visibility.unhide')}"><core:icon identifier="actions-edit-unhide" /></a>
</f:then>
<f:else>
<a class="btn btn-default" href="{bu:issueCommand(parameters: 'data[be_groups][{backendUserGroup.uid}][hidden]=1', redirectUrl: redirectUrl)}" title="{f:translate(key:'visibility.hide')}"><core:icon identifier="actions-edit-hide" /></a>
</f:else>
</f:if>
</div>
<div class="btn-group" role="group">
<a class="btn btn-default" href="#" onclick="top.TYPO3.InfoWindow.showItem('be_groups', '{backendUserGroup.uid}'); return false;"><core:icon identifier="actions-document-info" /></a>
</div>
</td>
</tr>
</f:section>
</html>
@@ -0,0 +1,3 @@
<f:be.widget.paginate objects="{backendUserGroups}" as="paginatedBackendUserGroups" configuration="{itemsPerPage: 50, insertBelow: 1}">
<f:render partial="BackendUserGroup/PaginatedListWidgetBody" arguments="{_all}" />
</f:be.widget.paginate>
@@ -0,0 +1,25 @@
<div class="table-fit">
<table class="table table-striped table-hover">
<thead>
<tr>
<th class="col-icon"></th>
<th class="col-title"><f:translate key="backendUserGroup" /></th>
<th><f:translate key="subGroups" /></th>
<th class="col-control"></th>
</tr>
</thead>
<tbody>
<f:for each="{paginatedBackendUserGroups}" as="backendUserGroup">
<f:render partial="BackendUserGroup/IndexListRow" section="list_row" arguments="{demand: demand, backendUserGroup: backendUserGroup, dateFormat: dateFormat, timeFormat: timeFormat, currentUserUid: currentUserUid}" />
</f:for>
<f:comment>
Footer row: no officially defined style yet
</f:comment>
<tr>
<td colspan="4">
<f:count subject="{backendUserGroups}" /> <f:translate key="LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:be_groups" />s
</td>
</tr>
</tbody>
</table>
</div>
@@ -0,0 +1,54 @@
<f:form action="index" objectName="demand" object="{demand}" class="form-inline form-inline-spaced">
<div class="form-group">
<label for="tx_Beuser_username"><f:translate key="userName">Username</f:translate></label>
<div class="input-group">
<f:form.textfield
id="tx_Beuser_username"
class="form-control input-sm"
property="userName"
/>
</div>
</div>
<div class="form-group">
<label for="tx_Beuser_usertype"><f:translate key="admin">Admin</f:translate></label>
<f:form.select
id="tx_Beuser_usertype"
class="form-control input-sm"
property="userType"
options="{0: '{f:translate(key:\"both\")}', 1: '{f:translate(key:\"adminOnly\")}', 2: '{f:translate(key:\"normalUserOnly\")}'}"
/>
</div>
<div class="form-group">
<label for="tx_Beuser_status"><f:translate key="status">Status</f:translate></label>
<f:form.select
id="tx_Beuser_status"
class="form-control input-sm"
property="status"
options="{0: '{f:translate(key:\"both\")}', 1: '{f:translate(key:\"activeOnly\")}', 2: '{f:translate(key:\"inactiveOnly\")}'}"
/>
</div>
<div class="form-group">
<label for="tx_Beuser_logins"><f:translate key="login">Login</f:translate></label>
<f:form.select
id="tx_Beuser_logins"
class="form-control input-sm"
property="logins"
options="{0: '{f:translate(key:\"both\")}', 1: '{f:translate(key:\"loginBefore\")}', 2: '{f:translate(key:\"neverLoggedIn\")}'}"
/>
</div>
<div class="form-group">
<label for="tx_beuser_backendUserGroup"><f:translate key="backendUserGroup">User Group</f:translate></label>
<f:form.select
id="tx_beuser_backendUserGroup"
class="form-control input-sm"
property="backendUserGroup"
options="{backendUserGroups}"
optionLabelField="title"
optionValueField="uid"
/>
</div>
<div class="form-group">
<f:form.submit value="{f:translate(key: 'filter')}" class="btn btn-default btn-sm" />
</div>
</f:form>
@@ -0,0 +1,37 @@
<span id="g_{pageId}">
<a
class="ug_selector changegroup"
data-page="{pageId}"
data-group-id="{groupId}"
data-groupname="{groupname}"
>
<f:if condition="{groupId} == 0">
<f:then>
<f:comment>
No group set -> [not set]
</f:comment>
<span class="not_set">
[<f:translate key="LLL:EXT:beuser/Resources/Private/Language/locallang_mod_permission.xlf:notSet" />]
</span>
</f:then>
<f:else>
<f:if condition="{groupname}">
<f:then>
<f:comment>
A group name can be resolved
</f:comment>
{groupname -> f:format.crop(maxCharacters:20)}
</f:then>
<f:else>
<f:comment>
Group was deleted -> [deleted]
</f:comment>
<span class="not_set" title="{groupId}">
[<f:translate key="LLL:EXT:beuser/Resources/Private/Language/locallang_mod_permission.xlf:deleted" />]
</span>
</f:else>
</f:if>
</f:else>
</f:if>
</a>
</span>
@@ -0,0 +1,38 @@
{namespace be=TYPO3\CMS\Backend\ViewHelpers}
<span id="o_{pageId}">
<a
class="ug_selector changeowner"
data-page="{pageId}"
data-owner="{userId}"
data-username="{username}"
>
<f:if condition="{userId} == 0">
<f:then>
<f:comment>
No owner set -> [not set]
</f:comment>
<span class="not_set">
[<f:translate key="LLL:EXT:beuser/Resources/Private/Language/locallang_mod_permission.xlf:notSet" />]
</span>
</f:then>
<f:else>
<f:if condition="{username}">
<f:then>
<f:comment>
A user name can be resolved
</f:comment>
{username -> f:format.crop(maxCharacters:20)}
</f:then>
<f:else>
<f:comment>
User was deleted -> [deleted]
</f:comment>
<span class="not_set" title="{userId}">
[<f:translate key="LLL:EXT:beuser/Resources/Private/Language/locallang_mod_permission.xlf:deleted" />]
</span>
</f:else>
</f:if>
</f:else>
</f:if>
</a>
</span>