mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-05-19 10:25:27 +00:00
Improve ACLs handling of inactive users (cont'd)
This commit is contained in:
@@ -126,10 +126,17 @@
|
||||
[self currentUserClass], @"userClass",
|
||||
[NSNumber numberWithBool: [self currentUserIsSubscribed]], @"isSubscribed",
|
||||
nil];
|
||||
if ((info = [currentUserInfos objectForKey: @"cn"]) && [info length])
|
||||
[userData setObject: info forKey: @"cn"];
|
||||
if ((info = [currentUserInfos objectForKey: @"c_email"]) && [info length])
|
||||
[userData setObject: info forKey: @"c_email"];
|
||||
if ([currentUserInfos count] == 0)
|
||||
{
|
||||
[userData setObject: [NSNumber numberWithBool: YES] forKey: @"inactive"];
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((info = [currentUserInfos objectForKey: @"cn"]) && [info length])
|
||||
[userData setObject: info forKey: @"cn"];
|
||||
if ((info = [currentUserInfos objectForKey: @"c_email"]) && [info length])
|
||||
[userData setObject: info forKey: @"c_email"];
|
||||
}
|
||||
[users setObject: userData forKey: currentUID];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
"%{0} card(s) copied" = "%{0} card(s) copied";
|
||||
"%{0} card(s) moved" = "%{0} card(s) moved";
|
||||
"SoAccessDeniedException" = "You cannot write to this address book.";
|
||||
"Forbidden" = "You cannot write to this address book.";
|
||||
"Forbidden" = "Forbidden";
|
||||
"Invalid Contact" = "The selected contact no longer exists.";
|
||||
"Unknown Destination Folder" = "The chosen destination address book no longer exists.";
|
||||
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
<div class="card-picture">
|
||||
<sg-avatar-image class="md-avatar"
|
||||
sg-email="user.c_email"
|
||||
ng-disabled="user.inactive"
|
||||
size="40">{{ user.$avatarIcon }}</sg-avatar-image>
|
||||
</div>
|
||||
<div class="sg-tile-content">
|
||||
|
||||
@@ -84,12 +84,13 @@
|
||||
else {
|
||||
vm.selectedUid = user.uid;
|
||||
vm.selectedUser = user;
|
||||
vm.selectedUser.$rights();
|
||||
if (!user.inactive)
|
||||
vm.selectedUser.$rights();
|
||||
}
|
||||
}
|
||||
|
||||
function showRights(user) {
|
||||
return vm.selectedUid == user.uid && user.rights;
|
||||
return vm.selectedUid == user.uid && !user.inactive;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,8 @@
|
||||
* @example:
|
||||
<sg-avatar-image sg-email="test@email.com" size="50">person</sg-avatar-image>
|
||||
*/
|
||||
function sgAvatarImage() {
|
||||
sgAvatarImage.$inject = ['$parse'];
|
||||
function sgAvatarImage($parse) {
|
||||
return {
|
||||
restrict: 'AE',
|
||||
scope: {},
|
||||
@@ -23,27 +24,44 @@
|
||||
},
|
||||
transclude: true,
|
||||
template: [
|
||||
'<md-icon ng-transclude></md-icon>', // the generic icon
|
||||
'<img class="ng-hide" ng-src="{{vm.url}}" />' // the gravatar or local image
|
||||
'<div class="sg-icon-badge-container">',
|
||||
' <md-icon ng-transclude></md-icon>', // the generic icon
|
||||
' <md-icon class="md-warn sg-icon--badge sg-icon--badge-bottom"',
|
||||
' style="display: none">not_interested</md-icon>', // the inactive badge (if disabled)
|
||||
' <img class="ng-hide" ng-src="{{vm.url}}">', // the gravatar or local image
|
||||
'</div>'
|
||||
].join(''),
|
||||
link: link,
|
||||
controller: 'sgAvatarImageController',
|
||||
controllerAs: 'vm'
|
||||
};
|
||||
}
|
||||
|
||||
function link(scope, element, attrs, controller) {
|
||||
var imgElement = element.find('img'),
|
||||
mdIconElement = element.find('md-icon');
|
||||
function link(scope, element, attrs, controller) {
|
||||
var imgElement = element.find('img'),
|
||||
mdIcons = element.find('md-icon'),
|
||||
mdIconElement = angular.element(mdIcons[0]),
|
||||
mdBadgeElement = angular.element(mdIcons[1]),
|
||||
deregisterWatcher;
|
||||
|
||||
if (attrs.size) {
|
||||
imgElement.attr('width', attrs.size);
|
||||
imgElement.attr('height', attrs.size);
|
||||
mdIconElement.css('font-size', attrs.size + 'px');
|
||||
if (attrs.size) {
|
||||
imgElement.attr('width', attrs.size);
|
||||
imgElement.attr('height', attrs.size);
|
||||
mdIconElement.css('font-size', attrs.size + 'px');
|
||||
mdBadgeElement.css('font-size', parseInt(attrs.size*0.4) + 'px');
|
||||
}
|
||||
|
||||
if (angular.isDefined(attrs.ngDisabled)) {
|
||||
deregisterWatcher = scope.$watch(attrs.ngDisabled, function(isDisabled) {
|
||||
if (attrs.disabled) {
|
||||
mdBadgeElement.css({ display: 'block' });
|
||||
}
|
||||
deregisterWatcher(); // watch once
|
||||
});
|
||||
}
|
||||
|
||||
controller.img = imgElement;
|
||||
controller.genericImg = mdIconElement;
|
||||
}
|
||||
|
||||
controller.img = imgElement;
|
||||
controller.genericImg = mdIconElement;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -68,6 +68,10 @@ md-icon {
|
||||
right: ($icon-size - $icon-badge-size) / 2;
|
||||
top: ($icon-size - $icon-badge-size) / 2;
|
||||
}
|
||||
&.sg-icon--badge-bottom {
|
||||
bottom: ($icon-size - $icon-badge-size) / 2;
|
||||
top: auto;
|
||||
}
|
||||
&.md-rotate-45 {
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
@@ -156,6 +160,10 @@ md-icon {
|
||||
}
|
||||
}
|
||||
|
||||
.sg-icon-badge-container {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
// Message flag
|
||||
//.sg-msg-flag {
|
||||
// md-icon {
|
||||
|
||||
@@ -97,7 +97,7 @@ md-sidenav {
|
||||
content: "\e2c8";
|
||||
}
|
||||
.md-icon {
|
||||
background-color: initial;
|
||||
background-color: initial !important;
|
||||
&:after {
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user