From 861057f22f0b842f7eed16ef6ecd43cd889295f5 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Wed, 16 Sep 2015 09:38:52 -0400 Subject: [PATCH] Fix options availability in Contacts module A user can edit/delete a card from a system addressbook if included in the "modifiers". Enable the delete/move options of the contextual menu in this case. Fixes #3342 --- UI/Contacts/UIxContactFoldersView.m | 18 ++++++++++++++++++ .../ContactsUI/UIxContactFoldersView.wox | 2 ++ 2 files changed, 20 insertions(+) diff --git a/UI/Contacts/UIxContactFoldersView.m b/UI/Contacts/UIxContactFoldersView.m index aaf35d6c2..5b0c80d64 100644 --- a/UI/Contacts/UIxContactFoldersView.m +++ b/UI/Contacts/UIxContactFoldersView.m @@ -251,6 +251,24 @@ Class SOGoContactSourceFolderK, SOGoGCSFolderK; ? @"available": @"unavailable"); } +- (NSDictionary *) currentContactFolderCardRights +{ + NSArray *roles; + NSString *userLogin, *owner; + BOOL objectEditor, objectEraser; + + userLogin = [[context activeUser] login]; + owner = [currentFolder ownerInContext: context]; + roles = [currentFolder aclsForUser: userLogin]; + objectEditor = ([owner isEqualToString: userLogin] || [roles containsObject: SOGoRole_ObjectEditor]); + objectEraser = ([owner isEqualToString: userLogin] || [roles containsObject: SOGoRole_ObjectEraser]); + + return [NSDictionary dictionaryWithObjectsAndKeys: + (objectEditor? @"available": @"unavailable"), @"editing", + (objectEraser? @"available": @"unavailable"), @"deleting", + nil]; +} + - (NSString *) verticalDragHandleStyle { NSString *vertical; diff --git a/UI/Templates/ContactsUI/UIxContactFoldersView.wox b/UI/Templates/ContactsUI/UIxContactFoldersView.wox index 323badb7d..44983ff1d 100644 --- a/UI/Templates/ContactsUI/UIxContactFoldersView.wox +++ b/UI/Templates/ContactsUI/UIxContactFoldersView.wox @@ -110,6 +110,8 @@ var:class="currentContactFolderClass" var:acl-editing="currentContactFolderAclEditing" var:list-editing="currentContactFolderListEditing" + var:card-editing="currentContactFolderCardRights.editing" + var:card-deleting="currentContactFolderCardRights.deleting" >