diff --git a/SoObjects/SOGo/SOGoDefaults.plist b/SoObjects/SOGo/SOGoDefaults.plist index 649d151d1..d23fa971a 100644 --- a/SoObjects/SOGo/SOGoDefaults.plist +++ b/SoObjects/SOGo/SOGoDefaults.plist @@ -85,4 +85,6 @@ $label4 = ("To Do", "#3333FF"); $label5 = ("Later", "#993399"); }; + + SOGoSubscriptionFolderFormat = "%{FolderName} (%{UserName} <%{Email}>)"; } diff --git a/SoObjects/SOGo/SOGoDomainDefaults.h b/SoObjects/SOGo/SOGoDomainDefaults.h index 694714ae6..a55bb572c 100644 --- a/SoObjects/SOGo/SOGoDomainDefaults.h +++ b/SoObjects/SOGo/SOGoDomainDefaults.h @@ -67,6 +67,7 @@ - (NSArray *) calendarDefaultRoles; - (NSArray *) contactsDefaultRoles; - (NSArray *) mailPollingIntervals; +- (NSString *) subscriptionFolderFormat; - (NSString *) calendarDefaultCategoryColor; diff --git a/SoObjects/SOGo/SOGoDomainDefaults.m b/SoObjects/SOGo/SOGoDomainDefaults.m index 98e675ddf..b602e8a9a 100644 --- a/SoObjects/SOGo/SOGoDomainDefaults.m +++ b/SoObjects/SOGo/SOGoDomainDefaults.m @@ -1,6 +1,6 @@ /* SOGoDomainDefaults.m - this file is part of SOGo * - * Copyright (C) 2009-2012 Inverse inc. + * Copyright (C) 2009-2014 Inverse inc. * * Author: Wolfgang Sourdeau * @@ -176,6 +176,11 @@ return [self stringArrayForKey: @"SOGoContactsDefaultRoles"]; } +- (NSString *) subscriptionFolderFormat +{ + return [self stringForKey: @"SOGoSubscriptionFolderFormat"]; +} + // // In v2.0.4, SOGoForceIMAPLoginWithEmail was renamed to SOGoForceExternalLoginWithEmail // but we keep backward compatbility for now with previous versions. diff --git a/SoObjects/SOGo/SOGoGCSFolder.h b/SoObjects/SOGo/SOGoGCSFolder.h index ec6795bd2..794ebc9ac 100644 --- a/SoObjects/SOGo/SOGoGCSFolder.h +++ b/SoObjects/SOGo/SOGoGCSFolder.h @@ -53,6 +53,7 @@ NSString *ocsPath; GCSFolder *ocsFolder; NSMutableDictionary *childRecords; + NSMutableDictionary *folderSubscriptionValues; BOOL userCanAccessAllObjects; /* i.e. user obtains 'Access Object' on subobjects */ } diff --git a/SoObjects/SOGo/SOGoGCSFolder.m b/SoObjects/SOGo/SOGoGCSFolder.m index d67491f33..c2f275b22 100644 --- a/SoObjects/SOGo/SOGoGCSFolder.m +++ b/SoObjects/SOGo/SOGoGCSFolder.m @@ -207,6 +207,7 @@ static NSArray *childRecordFields = nil; [ocsFolder release]; [ocsPath release]; [childRecords release]; + [folderSubscriptionValues release]; [super dealloc]; } @@ -275,29 +276,41 @@ static NSArray *childRecordFields = nil; { NSString *primaryDN; NSDictionary *ownerIdentity; - + NSString *subjectFormat; + SOGoDomainDefaults *dd; + primaryDN = [row objectForKey: @"c_foldername"]; if ([primaryDN length]) + { + displayName = [NSMutableString new]; + if ([primaryDN isEqualToString: [container defaultFolderName]]) + [displayName appendString: [self labelForKey: primaryDN + inContext: context]]; + else + [displayName appendString: primaryDN]; + + if (!activeUserIsOwner) { - displayName = [NSMutableString new]; - if ([primaryDN isEqualToString: [container defaultFolderName]]) - [displayName appendString: [self labelForKey: primaryDN - inContext: context]]; - else - [displayName appendString: primaryDN]; + // We MUST NOT use SOGoUser instances here (by calling -primaryIdentity) + // as it'll load user defaults and user settings which is _very costly_ + // since it involves JSON parsing and database requests + ownerIdentity = [[SOGoUserManager sharedUserManager] + contactInfosForUserWithUIDorEmail: owner]; - if (!activeUserIsOwner) - { - // We MUST NOT use SOGoUser instances here (by calling -primaryIdentity) - // as it'll load user defaults and user settings which is _very costly_ - // since it involves JSON parsing and database requests - ownerIdentity = [[SOGoUserManager sharedUserManager] - contactInfosForUserWithUIDorEmail: owner]; - - [displayName appendFormat: @" (%@ <%@>)", [ownerIdentity objectForKey: @"cn"], - [ownerIdentity objectForKey: @"c_email"]]; - } + folderSubscriptionValues = [[NSMutableDictionary alloc] initWithObjectsAndKeys: displayName, @"FolderName", + [ownerIdentity objectForKey: @"cn"], @"UserName", + [ownerIdentity objectForKey: @"c_email"], @"Email", nil]; + + dd = [[context activeUser] domainDefaults]; + subjectFormat = [dd subscriptionFolderFormat]; + + displayName = [folderSubscriptionValues keysWithFormat: subjectFormat]; + [displayName retain]; + + /*[displayName appendFormat: @" (%@ <%@>)", [ownerIdentity objectForKey: @"cn"], + [ownerIdentity objectForKey: @"c_email"]];*/ } + } } /* This method fetches the display name defined by the owner, but is also the