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

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><path fill="#59F" d="M0 0h64v64H0z"/><path fill="#FFF" d="M46.6 41.2c-2.815-.768-4.974-1.825-6.976-2.678-.042.543-.243 1.113-.782 1.664-1.62 1.726-4.1 3.814-6.808 3.814-2.719 0-5.288-2.115-6.88-3.817-.558-.573-.743-1.177-.762-1.738-2.007.896-4.17 1.885-6.993 2.655 0 0-3.1 1.9-3.4 8.9h36c-.199-7.1-3.399-8.8-3.399-8.8z"/><path fill="#FFF" d="M40 20.5c0-3.6-3.2-6.5-7-6.5h-2c-3.6 0-7 2.9-7 6.5v5c0 2.109 1.628 4.713 3.5 6.553-.1 5.4-1.7 5.947-.9 6.747 2.5 2.7 8.1 2.9 10.8 0 .797-.797-.59-1.3-.896-6.747C38.333 30.215 39.942 27.59 40 25.5v-5z"/></svg>

After

Width:  |  Height:  |  Size: 610 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><path fill="#184F44" d="M0 0h64v64H0z"/><path fill="#FFF" d="M45 48H19a1 1 0 0 1-1-1V31a1 1 0 0 1 1-1h26a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1z"/><path fill="#FFF" d="M32 19.5c3.308 0 6 2.692 6 6h4c0-5.523-4.477-10-10-10s-10 4.477-10 10v8h4v-8c0-3.308 2.692-6 6-6z"/><circle fill="#184F44" cx="32" cy="38" r="4"/><path fill="#184F44" d="M30 38h4v6h-4z"/></svg>

After

Width:  |  Height:  |  Size: 413 B

@@ -0,0 +1,33 @@
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
/**
* Module: TYPO3/CMS/Beuser/BackendUserListing
* JavaScript for backend user listing
* @exports TYPO3/CMS/Beuser/BackendUserListing
*/
define(['jquery', 'TYPO3/CMS/Backend/jquery.clearable'], function($) {
var $searchFields = $('#tx_Beuser_username');
var searchResultShown = ('' !== $searchFields.first().val());
// make search field clearable
$searchFields.clearable({
onClear: function() {
if (searchResultShown) {
$(this).closest('form').submit();
}
}
});
});
@@ -0,0 +1,51 @@
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
/**
* Module: TYPO3/CMS/Beuser/ContextMenuActions
*
* JavaScript to handle permissions module from context menu
* @exports TYPO3/CMS/Beuser/ContextMenuActions
*/
define(function() {
'use strict';
/**
* @exports TYPO3/CMS/Beuser/ContextMenuActions
*/
var ContextMenuActions = {};
/**
* Open permission module for given uid
*
* @param {string} table
* @param {int} uid of the page
*/
ContextMenuActions.openPermissionsModule = function(table, uid) {
if (table === 'pages') {
top.TYPO3.Backend.ContentContainer.setUrl(
top.TYPO3.settings.AccessPermissions.moduleUrl +
'&id=' + uid +
'&tx_beuser_system_beusertxpermission[action]=edit' +
'&tx_beuser_system_beusertxpermission[controller]=Permission' +
'&returnUrl=' + ContextMenuActions.getReturnUrl()
);
}
};
ContextMenuActions.getReturnUrl = function() {
return top.rawurlencode(top.list_frame.document.location.pathname + top.list_frame.document.location.search);
};
return ContextMenuActions;
});
@@ -0,0 +1,340 @@
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
/**
* Module: TYPO3/CMS/Beuser/Permissons
* Javascript functions regarding the permissions module
*/
define(['jquery'], function($) {
/**
*
* @type {{options: {containerSelector: string}}}
* @exports TYPO3/CMS/Beuser/Permissons
*/
var Permissions = {
options: {
containerSelector: '#typo3-permissionList'
}
};
var ajaxUrl = TYPO3.settings.ajaxUrls['user_access_permissions'];
/**
* Changes the value of the permissions in the form
*
* @param {String} checknames
* @param {String} varname
*/
Permissions.setCheck = function(checknames, varname) {
if (document.editform[varname]) {
var res = document.editform[varname].value;
for (var a = 1; a <= 5; a++) {
document.editform[checknames + '[' + a + ']'].checked = (res & Math.pow(2, a - 1));
}
}
};
/**
* checks for a change of the permissions in the form
*
* @param {String} checknames
* @param {String} varname
*/
Permissions.checkChange = function(checknames, varname) {
var res = 0;
for (var a = 1; a <= 5; a++) {
if (document.editform[checknames + '[' + a + ']'].checked) {
res |= Math.pow(2, a - 1);
}
}
document.editform[varname].value = res | (checknames === 'tx_beuser_system_beusertxpermission[check][perms_user]' ? 1 : 0);
Permissions.setCheck(checknames, varname);
};
/**
* wrapper function to call a URL in the current frame
*/
Permissions.jumpToUrl = function(url) {
window.location.href = url;
};
/**
* changes permissions by sending an AJAX request to the server
*
* @param {Object} $element
*/
Permissions.setPermissions = function($element) {
var page = $element.data('page');
var who = $element.data('who');
var elementSelector = '#' + page + '_' + who;
$.ajax({
url: ajaxUrl,
type: 'post',
dataType: 'html',
cache: false,
data: {
'page': page,
'who': who,
'permissions': $element.data('permissions'),
'mode': $element.data('mode'),
'bits': $element.data('bits')
}
}).done(function(data) {
// Replace content
$(elementSelector).replaceWith(data);
// Reinitialize tooltip
$(elementSelector).find('span').tooltip();
});
};
/**
* changes the flag to lock the editing on a page by sending an AJAX request
*
* @param {Object} $element
*/
Permissions.toggleEditLock = function($element) {
var page = $element.data('page');
$.ajax({
url: ajaxUrl,
type: 'post',
dataType: 'html',
cache: false,
data: {
'action': 'toggle_edit_lock',
'page': page,
'editLockState': $element.data('lockstate')
}
}).done(function(data) {
// Replace content
$('#el_' + page).replaceWith(data);
});
};
/**
* Owner-related: Set the new owner of a page by executing an ajax call
*
* @param {Object} $element
*/
Permissions.changeOwner = function($element) {
var page = $element.data('page');
$.ajax({
url: ajaxUrl,
type: 'post',
dataType: 'html',
cache: false,
data: {
'action': 'change_owner',
'page': page,
'ownerUid': $element.data('owner'),
'newOwnerUid': $('#new_page_owner').val()
}
}).done(function(data) {
// Replace content
$('#o_' + page).replaceWith(data);
});
};
/**
* Owner-related: load the selector for selecting
* the owner of a page by executing an ajax call
*
* @param {Object} $element
*/
Permissions.showChangeOwnerSelector = function($element) {
var page = $element.data('page');
$.ajax({
url: ajaxUrl,
type: 'post',
dataType: 'html',
cache: false,
data: {
'action': 'show_change_owner_selector',
'page': page,
'ownerUid': $element.data('owner'),
'username': $element.data('username')
}
}).done(function(data) {
// Replace content
$('#o_' + page).replaceWith(data);
});
};
/**
* Owner-related: Update the HTML view and show the original owner
*
* @param {Object} $element
*/
Permissions.restoreOwner = function($element) {
var page = $element.data('page');
var username = $element.data('username');
var usernameHtml = username;
if (typeof username === 'undefined') {
username = $('<span>', {
'class': 'not_set',
'text': '[not set]'
});
usernameHtml = username.html();
username = username.text();
}
var html = $('<span/>', {
'id': 'o_' + page
});
var aSelector = $('<a/>', {
'class': 'ug_selector changeowner',
'data-page': page,
'data-owner': $element.data('owner'),
'data-username': usernameHtml,
'text': username
});
html.append(aSelector);
// Replace content
$('#o_' + page).replaceWith(html);
};
/**
* Group-related: Set the new group by executing an ajax call
*
* @param {Object} $element
*/
Permissions.changeGroup = function($element) {
var page = $element.data('page');
$.ajax({
url: ajaxUrl,
type: 'post',
dataType: 'html',
cache: false,
data: {
'action': 'change_group',
'page': page,
'groupUid': $element.data('groupId'),
'newGroupUid': $('#new_page_group').val()
}
}).done(function(data) {
// Replace content
$('#g_' + page).replaceWith(data);
});
};
/**
* Group-related: Load the selector by executing an ajax call
*
* @param {Object} $element
*/
Permissions.showChangeGroupSelector = function($element) {
var page = $element.data('page');
$.ajax({
url: ajaxUrl,
type: 'post',
dataType: 'html',
cache: false,
data: {
'action': 'show_change_group_selector',
'page': page,
'groupUid': $element.data('groupId'),
'groupname': $element.data('groupname')
}
}).done(function(data) {
// Replace content
$('#g_' + page).replaceWith(data);
});
};
/**
* Group-related: Update the HTML view and show the original group
*
* @param {Object} $element
*/
Permissions.restoreGroup = function($element) {
var page = $element.data('page');
var groupname = $element.data('groupname');
var groupnameHtml = groupname;
if (typeof groupname === 'undefined') {
groupname = $('<span>', {
'class': 'not_set',
'text': '[not set]'
});
groupnameHtml = groupname.html();
groupname = groupname.text();
}
var html = $('<span/>', {
'id': 'g_' + page
});
var aSelector = $('<a/>', {
'class': 'ug_selector changegroup',
'data-page': page,
'data-group': $element.data('groupId'),
'data-groupname': groupnameHtml,
'text': groupname
});
html.append(aSelector);
// Replace content
$('#g_' + page).replaceWith(html);
};
/**
* initializes events using deferred bound to document
* so AJAX reloads are no problem
*/
Permissions.initializeEvents = function() {
// Click event to change permissions
$(Permissions.options.containerSelector).on('click', '.change-permission', function(evt) {
evt.preventDefault();
Permissions.setPermissions($(this));
}).on('click', '.editlock', function(evt) {
// Click event for lock state
evt.preventDefault();
Permissions.toggleEditLock($(this));
}).on('click', '.changeowner', function(evt) {
// Click event to change owner
evt.preventDefault();
Permissions.showChangeOwnerSelector($(this));
}).on('click', '.changegroup', function(evt) {
// click event to change group
evt.preventDefault();
Permissions.showChangeGroupSelector($(this));
}).on('click', '.restoreowner', function(evt) {
// Add click handler for restoring previous owner
evt.preventDefault();
Permissions.restoreOwner($(this));
}).on('click', '.saveowner', function(evt) {
// Add click handler for saving owner
evt.preventDefault();
Permissions.changeOwner($(this));
}).on('click', '.restoregroup', function(evt) {
// Add click handler for restoring previous group
evt.preventDefault();
Permissions.restoreGroup($(this));
}).on('click', '.savegroup', function(evt) {
// Add click handler for saving group
evt.preventDefault();
Permissions.changeGroup($(this));
});
};
$(Permissions.initializeEvents);
// expose to global
TYPO3.Permissions = Permissions;
return Permissions;
});