diff --git a/ChangeLog b/ChangeLog index 717371285..4c5d7dc53 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2007-05-22 Wolfgang Sourdeau + * UI/MailerUI/UIxMailUserRightsEditor.m: added all the missing + methods to support the IMAP acls mentionned in the RFC 4314, + removed the ones specific to Cyrus. + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -defaultUserID]): new mandatory method for subclasses. Removed the SOGoDefaultUserID global var. diff --git a/UI/MailerUI/English.lproj/Localizable.strings b/UI/MailerUI/English.lproj/Localizable.strings index 49ea90505..bbf54acbd 100644 --- a/UI/MailerUI/English.lproj/Localizable.strings +++ b/UI/MailerUI/English.lproj/Localizable.strings @@ -35,6 +35,21 @@ "Account: " = "Account: "; "Shared Account: " = "Shared Account: "; +/* acls */ +"Default Roles" = "Default Roles"; + +"List and see this folder" = "List and see this folder"; +"Read mails from this folder" = "Read mails from this folder"; +"Mark mails read and unread" = "Mark mails read and unread"; +"Modify the flags of the mails in this folder" = "Modify the flags of the mails in this folder"; +"Insert, copy and move mails into this folder" = "Insert, copy and move mails into this folder"; +"Post mails" = "Post mails"; +"Add subfolders to this folder" = "Add subfolders to this folder"; +"Remove this folder" = "Remove this folder"; +"Erase mails from this folder" = "Erase mails from this folder"; +"Expunge this folder" = "Expunge this folder"; +"Modify the acl of this folder" = "Modify the acl of this folder"; + /* Mail edition */ "From" = "From"; diff --git a/UI/MailerUI/French.lproj/Localizable.strings b/UI/MailerUI/French.lproj/Localizable.strings index 427011508..f3ad2063a 100644 --- a/UI/MailerUI/French.lproj/Localizable.strings +++ b/UI/MailerUI/French.lproj/Localizable.strings @@ -34,6 +34,21 @@ "Account: " = "Compte : "; "Shared Account: " = "Compte Partagé "; +/* acls */ +"Default Roles" = "Rôles par défaut"; + +"List and see this folder" = "Lister et voir ce dossier"; +"Read mails from this folder" = "Lire les messages de ce dossier"; +"Mark mails read and unread" = "Marquer les messages comme lus ou non-lus"; +"Modify the flags of the mails in this folder" = "Modifier les indicateurs sur les messages"; +"Insert, copy and move mails into this folder" = "Insérer, copier et déplacer des messages dans ce dossier"; +"Post mails" = "Poster des messages"; +"Add subfolders to this folder" = "Ajouter des sous-dossiers à ce dossier"; +"Remove this folder" = "Effacer ce dossier"; +"Erase mails from this folder" = "Effacer des messages de ce dossier"; +"Expunge this folder" = "Compacter ce dossier"; +"Modify the acl of this folder" = "Administrer les droits sur ce dossier"; + /* Mail edition */ "From" = "De"; diff --git a/UI/MailerUI/UIxMailUserRightsEditor.m b/UI/MailerUI/UIxMailUserRightsEditor.m index f2fb91ab1..2478b5c5a 100644 --- a/UI/MailerUI/UIxMailUserRightsEditor.m +++ b/UI/MailerUI/UIxMailUserRightsEditor.m @@ -29,6 +29,19 @@ @implementation UIxMailUserRightsEditor +- (void) setUserCanSeeFolder: (BOOL) userCanSeeFolder +{ + if (userCanSeeFolder) + [self appendRight: SOGoRole_ObjectViewer]; + else + [self removeRight: SOGoRole_ObjectViewer]; +} + +- (BOOL) userCanSeeFolder +{ + return [userRights containsObject: SOGoRole_ObjectViewer]; +} + - (void) setUserCanReadMails: (BOOL) userCanReadMails { if (userCanReadMails) @@ -42,6 +55,19 @@ return [userRights containsObject: SOGoRole_ObjectReader]; } +- (void) setUserCanMarkMailsRead: (BOOL) userCanMarkMailsRead +{ + if (userCanMarkMailsRead) + [self appendRight: SOGoMailRole_SeenKeeper]; + else + [self removeRight: SOGoMailRole_SeenKeeper]; +} + +- (BOOL) userCanMarkMailsRead +{ + return [userRights containsObject: SOGoMailRole_SeenKeeper]; +} + - (void) setUserCanWriteMails: (BOOL) userCanWriteMails { if (userCanWriteMails) @@ -68,30 +94,17 @@ return [userRights containsObject: SOGoRole_ObjectCreator]; } -- (void) setUserCanMarkMailsRead: (BOOL) userCanMarkMailsRead +- (void) setUserCanPostMails: (BOOL) userCanPostMails { - if (userCanMarkMailsRead) - [self appendRight: SOGoMailRole_SeenKeeper]; + if (userCanPostMails) + [self appendRight: SOGoMailRole_Poster]; else - [self removeRight: SOGoMailRole_SeenKeeper]; + [self removeRight: SOGoMailRole_Poster]; } -- (BOOL) userCanMarkMailsRead +- (BOOL) userCanPostMails { - return [userRights containsObject: SOGoMailRole_SeenKeeper]; -} - -- (void) setUserCanEraseMails: (BOOL) userCanEraseMails -{ - if (userCanEraseMails) - [self appendRight: SOGoRole_ObjectEraser]; - else - [self removeRight: SOGoRole_ObjectEraser]; -} - -- (BOOL) userCanEraseMails -{ - return [userRights containsObject: SOGoRole_ObjectEraser]; + return [userRights containsObject: SOGoMailRole_Poster]; } - (void) setUserCanCreateSubfolders: (BOOL) userCanCreateSubfolders @@ -107,17 +120,43 @@ return [userRights containsObject: SOGoRole_FolderCreator]; } -- (void) setUserCanPostMails: (BOOL) userCanPostMails +- (void) setUserCanRemoveFolder: (BOOL) userCanRemoveFolder { - if (userCanPostMails) - [self appendRight: SOGoMailRole_Poster]; + if (userCanRemoveFolder) + [self appendRight: SOGoRole_ObjectEraser]; else - [self removeRight: SOGoMailRole_Poster]; + [self removeRight: SOGoRole_ObjectEraser]; } -- (BOOL) userCanPostMails +- (BOOL) userCanRemoveFolder { - return [userRights containsObject: SOGoMailRole_Poster]; + return [userRights containsObject: SOGoRole_ObjectEraser]; +} + +- (void) setUserCanEraseMails: (BOOL) userCanEraseMails +{ + if (userCanEraseMails) + [self appendRight: SOGoMailRole_MessageEraser]; + else + [self removeRight: SOGoMailRole_MessageEraser]; +} + +- (BOOL) userCanEraseMails +{ + return [userRights containsObject: SOGoMailRole_MessageEraser]; +} + +- (void) setUserCanExpungeFolder: (BOOL) userCanExpungeFolder +{ + if (userCanExpungeFolder) + [self appendRight: SOGoMailRole_Expunger]; + else + [self removeRight: SOGoMailRole_Expunger]; +} + +- (BOOL) userCanExpungeFolder +{ + return [userRights containsObject: SOGoMailRole_Expunger]; } - (void) setUserIsAdministrator: (BOOL) userIsAdministrator @@ -139,25 +178,61 @@ request = [context request]; - if ([[request formValueForKey: @"ObjectCreator"] length] > 0) - [self appendRight: SOGoRole_ObjectCreator]; - else - [self removeRight: SOGoRole_ObjectCreator]; - - if ([[request formValueForKey: @"ObjectEditor"] length] > 0) - [self appendRight: SOGoRole_ObjectEditor]; - else - [self removeRight: SOGoRole_ObjectEditor]; - - if ([[request formValueForKey: @"ObjectViewer"] length] > 0) + if ([[request formValueForKey: SOGoRole_ObjectViewer] length] > 0) [self appendRight: SOGoRole_ObjectViewer]; else [self removeRight: SOGoRole_ObjectViewer]; - if ([[request formValueForKey: @"ObjectEraser"] length] > 0) + if ([[request formValueForKey: SOGoRole_ObjectReader] length] > 0) + [self appendRight: SOGoRole_ObjectReader]; + else + [self removeRight: SOGoRole_ObjectReader]; + + if ([[request formValueForKey: SOGoMailRole_SeenKeeper] length] > 0) + [self appendRight: SOGoMailRole_SeenKeeper]; + else + [self removeRight: SOGoMailRole_SeenKeeper]; + + if ([[request formValueForKey: SOGoMailRole_Writer] length] > 0) + [self appendRight: SOGoMailRole_Writer]; + else + [self removeRight: SOGoMailRole_Writer]; + + if ([[request formValueForKey: SOGoRole_ObjectCreator] length] > 0) + [self appendRight: SOGoRole_ObjectCreator]; + else + [self removeRight: SOGoRole_ObjectCreator]; + + if ([[request formValueForKey: SOGoMailRole_Poster] length] > 0) + [self appendRight: SOGoMailRole_Poster]; + else + [self removeRight: SOGoMailRole_Poster]; + + if ([[request formValueForKey: SOGoRole_FolderCreator] length] > 0) + [self appendRight: SOGoRole_FolderCreator]; + else + [self removeRight: SOGoRole_FolderCreator]; + + if ([[request formValueForKey: SOGoRole_ObjectEraser] length] > 0) [self appendRight: SOGoRole_ObjectEraser]; else [self removeRight: SOGoRole_ObjectEraser]; + + if ([[request formValueForKey: SOGoMailRole_MessageEraser] length] > 0) + [self appendRight: SOGoMailRole_MessageEraser]; + else + [self removeRight: SOGoMailRole_MessageEraser]; + + if ([[request formValueForKey: SOGoMailRole_Expunger] length] > 0) + [self appendRight: SOGoMailRole_Expunger]; + else + [self removeRight: SOGoMailRole_Expunger]; + + if ([[request formValueForKey: SOGoMailRole_Administrator] length] > 0) + [self appendRight: SOGoMailRole_Administrator]; + else + [self removeRight: SOGoMailRole_Administrator]; } @end +