diff --git a/UI/Common/UIxAclEditor.m b/UI/Common/UIxAclEditor.m
index fc101d726..3ed075d9c 100644
--- a/UI/Common/UIxAclEditor.m
+++ b/UI/Common/UIxAclEditor.m
@@ -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];
}
}
diff --git a/UI/Contacts/English.lproj/Localizable.strings b/UI/Contacts/English.lproj/Localizable.strings
index e35c7b947..593d9e754 100644
--- a/UI/Contacts/English.lproj/Localizable.strings
+++ b/UI/Contacts/English.lproj/Localizable.strings
@@ -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.";
diff --git a/UI/Templates/UIxAclEditor.wox b/UI/Templates/UIxAclEditor.wox
index 3868c4a0b..6ce640349 100644
--- a/UI/Templates/UIxAclEditor.wox
+++ b/UI/Templates/UIxAclEditor.wox
@@ -54,6 +54,7 @@
diff --git a/UI/WebServerResources/js/Common/AclController.js b/UI/WebServerResources/js/Common/AclController.js
index bb0d3ccb2..bfdf7c8be 100644
--- a/UI/WebServerResources/js/Common/AclController.js
+++ b/UI/WebServerResources/js/Common/AclController.js
@@ -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;
}
}
diff --git a/UI/WebServerResources/js/Common/sgAvatarImage.directive.js b/UI/WebServerResources/js/Common/sgAvatarImage.directive.js
index 213670fe1..8c16a1900 100644
--- a/UI/WebServerResources/js/Common/sgAvatarImage.directive.js
+++ b/UI/WebServerResources/js/Common/sgAvatarImage.directive.js
@@ -12,7 +12,8 @@
* @example:
person
*/
- function sgAvatarImage() {
+ sgAvatarImage.$inject = ['$parse'];
+ function sgAvatarImage($parse) {
return {
restrict: 'AE',
scope: {},
@@ -23,27 +24,44 @@
},
transclude: true,
template: [
- '
', // the generic icon
- '
![]()
' // the gravatar or local image
+ '
',
+ '
', // the generic icon
+ '
not_interested', // the inactive badge (if disabled)
+ '
![]()
', // the gravatar or local image
+ '
'
].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;
}
/**
diff --git a/UI/WebServerResources/scss/components/icon/icon.scss b/UI/WebServerResources/scss/components/icon/icon.scss
index d4b5896e7..5a637e836 100644
--- a/UI/WebServerResources/scss/components/icon/icon.scss
+++ b/UI/WebServerResources/scss/components/icon/icon.scss
@@ -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 {
diff --git a/UI/WebServerResources/scss/views/MailerUI.scss b/UI/WebServerResources/scss/views/MailerUI.scss
index d846504de..ca5226d8d 100644
--- a/UI/WebServerResources/scss/views/MailerUI.scss
+++ b/UI/WebServerResources/scss/views/MailerUI.scss
@@ -97,7 +97,7 @@ md-sidenav {
content: "\e2c8";
}
.md-icon {
- background-color: initial;
+ background-color: initial !important;
&:after {
border-style: none;
}