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 @@
{{ user.$avatarIcon }}
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 + ' ', // 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; }