PDF rausgenommen

This commit is contained in:
aschwarz
2023-01-23 11:03:31 +01:00
parent 82d562a322
commit a6523903eb
28078 changed files with 4247552 additions and 2 deletions

View File

@ -0,0 +1,48 @@
<div class="capabilitiesEdit" ng-class="{ busy: $ctrl.isBusy }">
<div
class="chip"
ng-repeat="capability in $ctrl.availableCapabilities"
ng-if="$ctrl.capabilitiesSet[capability.id]"
>
<span
class="capability-name"
title="{{ capability.description }} {{ ($ctrl.isIncludedInRole(capability) ? ('<br/><br/>' + ('UsersManager_IncludedInUsersRole'|translate)): '') }}"
>
{{ capability.category }}: {{ capability.name }}
</span>
<span
class="icon-close"
ng-if="!$ctrl.isIncludedInRole(capability)"
ng-click="$ctrl.capabilityToAddOrRemove = capability; $ctrl.onToggleCapability(fakse)"
></span>
</div>
<div piwik-field uicontrol="expandable-select"
name="add_capability"
full-width="true"
ng-change="$ctrl.onToggleCapability(true)"
ng-model="$ctrl.capabilityToAddOrRemoveId"
options="$ctrl.availableCapabilitiesGrouped"
data-disabled="$ctrl.isBusy"
ng-if="$ctrl.availableCapabilitiesGrouped.length"
class="addCapability"
>
</div>
<div class="ui-confirm confirmCapabilityToggle modal">
<div class="modal-content">
<h2 ng-if="$ctrl.isAddingCapability" piwik-translate="UsersManager_AreYouSureAddCapability">
<strong>{{ $ctrl.userLogin }}</strong>::<strong>{{ $ctrl.capabilityToAddOrRemove.name }}</strong>::<strong>{{ $ctrl.siteName }}</strong>
</h2>
<h2 ng-if="!$ctrl.isAddingCapability" piwik-translate="UsersManager_AreYouSureRemoveCapability">
<strong>{{ $ctrl.capabilityToAddOrRemove.name }}</strong>::<strong>{{ $ctrl.userLogin }}</strong>::<strong>{{ $ctrl.siteName }}</strong>
</h2>
</div>
<div class="modal-footer">
<a href="" class="modal-action modal-close btn" ng-click="$ctrl.toggleCapability()">{{:: 'General_Yes'|translate }}</a>
<a href="" class="modal-action modal-close modal-no" ng-click="$ctrl.capabilityToAddOrRemove = null; $ctrl.capabilityToAddOrRemoveId = null">
{{:: 'General_No'|translate }}
</a>
</div>
</div>
</div>

View File

@ -0,0 +1,213 @@
/*!
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
/**
* Usage:
* <piwik-capabilities-edit>
*/
(function () {
angular.module('piwikApp').component('piwikCapabilitiesEdit', {
templateUrl: 'plugins/UsersManager/angularjs/capabilities-edit/capabilities-edit.component.html?cb=' + piwik.cacheBuster,
bindings: {
idsite: '<',
siteName: '<',
userLogin: '<',
userRole: '<',
capabilities: '<',
onCapabilitiesChange: '&',
},
controller: CapabilitiesEditController
});
CapabilitiesEditController.$inject = ['piwikApi', 'permissionsMetadataService', 'piwik', '$element'];
function CapabilitiesEditController(piwikApi, permissionsMetadataService, piwik, $element) {
var vm = this;
vm.isBusy = false;
vm.availableCapabilities = [];
vm.availableCapabilitiesGrouped = [];
vm.capabilitiesSet = {};
// intermediate state
vm.isAddingCapability = false;
vm.capabilityToAddOrRemoveId = null;
vm.capabilityToAddOrRemove = null;
vm.$onInit = $onInit;
vm.$onChanges = $onChanges;
vm.onToggleCapability = onToggleCapability;
vm.toggleCapability = toggleCapability;
vm.isIncludedInRole = isIncludedInRole;
function $onInit() {
fetchAvailableCapabilities();
if (typeof vm.capabilities === 'undefined') {
fetchCapabilities();
}
}
function $onChanges() {
setCapabilitiesSet();
}
function isIncludedInRole(capability) {
return capability.includedInRoles.indexOf(vm.userRole) !== -1;
}
function fetchAvailableCapabilities() {
permissionsMetadataService.getAllCapabilities()
.then(function (capabilities) {
vm.availableCapabilities = capabilities;
setCapabilitiesSet();
setAvailableCapabilitiesDropdown();
});
}
function fetchCapabilities() {
vm.isBusy = true;
piwikApi.fetch({
method: 'UsersManager.getUsersPlusRole',
limit: '1',
filter_search: vm.userLogin,
}).then(function (user) {
if (!user || !user.capabilities) {
return [];
}
return user.capabilities;
}).then(function (capabilities) {
vm.capabilities = capabilities;
setCapabilitiesSet();
setAvailableCapabilitiesDropdown();
})['finally'](function () {
vm.isBusy = false;
});
}
function setCapabilitiesSet() {
vm.capabilitiesSet = {};
(vm.capabilities || []).forEach(function (capability) {
vm.capabilitiesSet[capability] = true;
});
(vm.availableCapabilities || []).forEach(function (capability) {
if (vm.isIncludedInRole(capability)) {
vm.capabilitiesSet[capability.id] = true;
}
});
}
function setAvailableCapabilitiesDropdown() {
var availableCapabilitiesGrouped = [];
vm.availableCapabilities.forEach(function (capability) {
if (vm.capabilitiesSet[capability.id]) {
return;
}
availableCapabilitiesGrouped.push({
group: capability.category,
key: capability.id,
value: capability.name,
tooltip: capability.description,
});
});
vm.availableCapabilitiesGrouped = availableCapabilitiesGrouped;
vm.availableCapabilitiesGrouped.sort(function (lhs, rhs) {
if (lhs.group === rhs.group) {
if (lhs.value === rhs.value) {
return 0;
}
return lhs.value < rhs.value ? -1 : 1;
}
return lhs.group < rhs.group ? -1 : 1;
});
}
function onToggleCapability(isAdd) {
vm.isAddingCapability = isAdd;
vm.availableCapabilities.forEach(function (capability) {
if (capability.id === vm.capabilityToAddOrRemoveId) {
vm.capabilityToAddOrRemove = capability;
}
});
$element.find('.confirmCapabilityToggle').openModal({
dismissible: false,
yes: function () {
},
});
}
function toggleCapability() {
if (vm.isAddingCapability) {
addCapability(vm.capabilityToAddOrRemove);
} else {
removeCapability(vm.capabilityToAddOrRemove);
}
}
function addCapability(capability) {
vm.isBusy = true;
piwikApi.post({
method: 'UsersManager.addCapabilities',
}, {
userLogin: vm.userLogin,
capabilities: capability.id,
idSites: vm.idsite
}).then(function () {
vm.onCapabilitiesChange.call({
capabilities: getCapabilitiesList(),
});
setCapabilitiesSet();
setAvailableCapabilitiesDropdown();
})['finally'](function () {
vm.isBusy = false;
vm.capabilityToAddOrRemove = null;
vm.capabilityToAddOrRemoveId = null;
});
}
function removeCapability(capability) {
vm.isBusy = true;
piwikApi.post({
method: 'UsersManager.removeCapabilities',
}, {
userLogin: vm.userLogin,
capabilities: capability.id,
idSites: vm.idsite
}).then(function () {
vm.onCapabilitiesChange.call({
capabilities: getCapabilitiesList(),
});
setCapabilitiesSet();
setAvailableCapabilitiesDropdown();
})['finally'](function () {
vm.isBusy = false;
vm.capabilityToAddOrRemove = null;
vm.capabilityToAddOrRemoveId = null;
});
}
function getCapabilitiesList() {
var result = [];
vm.availableCapabilities.forEach(function (capability) {
if (vm.isIncludedInRole(capability)) {
return;
}
if (vm.capabilitiesSet[capability.id]) {
result.push(capability.id);
}
});
return result;
}
}
})();

View File

@ -0,0 +1,76 @@
.capabilitiesEdit {
display: inline-block;
margin-bottom: -8px;
> div.chip {
margin-right: 8px;
display: inline-block;
margin-bottom: 8px;
span.capability-name {
padding-right: .4rem;
}
> span.icon-close {
font-size: .6rem;
float: right;
margin-top: 1.4em;
cursor: pointer;
}
}
.addCapability {
display: inline-block;
margin-bottom: 8px;
vertical-align: bottom;
.input-field {
margin-top: 0;
.caret {
right: -25px;
top: 16px;
z-index: 9;
cursor: pointer;
}
.select-dropdown {
margin-top: 8px;
margin-bottom: 0;
border: 0;
background: #e4e4e4;
display: inline-block;
height: 32px;
font-size: 13px;
font-weight: 500;
color: rgba(0,0,0,0.6);
line-height: 32px;
border-radius: 3em;
padding-left: 12px;
padding-right: 30px;
}
}
.select-wrapper {
transform: scale(.89) translate(-.6rem);
margin-top: -0.55rem;
max-width: 160px;
input {
margin-bottom: 0;
height: 2rem;
line-height: 2rem;
}
}
}
&.busy {
opacity: 0.5;
}
.confirmCapabilityToggle {
.modal-no {
float: right;
margin-right: 1em;
margin-top: 1em;
}
}
}