Fix display name of subscribed folders
parent
ff9d49be71
commit
6cc8f17c86
1
NEWS
1
NEWS
|
@ -4,6 +4,7 @@
|
||||||
Bug fixes
|
Bug fixes
|
||||||
- fixed freebusy lookup with "Show time as busy" (#2930)
|
- fixed freebusy lookup with "Show time as busy" (#2930)
|
||||||
- don't escape <br>'s in a card's note field
|
- don't escape <br>'s in a card's note field
|
||||||
|
- fixed folder's display name when the active user subscribes another user to one of her/his folders
|
||||||
|
|
||||||
2.2.9a (2014-09-29)
|
2.2.9a (2014-09-29)
|
||||||
-------------------
|
-------------------
|
||||||
|
|
|
@ -282,41 +282,40 @@ static NSArray *childRecordFields = nil;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) _setDisplayNameFromRow: (NSDictionary *) row
|
- (NSString *) _displayNameFromRow: (NSDictionary *) row
|
||||||
{
|
{
|
||||||
NSString *primaryDN;
|
NSString *name, *primaryDN;
|
||||||
|
|
||||||
|
name = nil;
|
||||||
primaryDN = [row objectForKey: @"c_foldername"];
|
primaryDN = [row objectForKey: @"c_foldername"];
|
||||||
|
|
||||||
if ([primaryDN length])
|
if ([primaryDN length])
|
||||||
{
|
{
|
||||||
DESTROY(displayName);
|
|
||||||
|
|
||||||
if ([primaryDN isEqualToString: [container defaultFolderName]])
|
if ([primaryDN isEqualToString: [container defaultFolderName]])
|
||||||
displayName = [self labelForKey: primaryDN
|
name = [self labelForKey: primaryDN
|
||||||
inContext: context];
|
inContext: context];
|
||||||
else
|
else
|
||||||
displayName = primaryDN;
|
name = primaryDN;
|
||||||
|
|
||||||
RETAIN(displayName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This method fetches the display name defined by the owner, but is also the
|
/* This method fetches the display name defined by the owner, but is also the
|
||||||
fallback when a subscriber has not redefined the display name yet in his
|
fallback when a subscriber has not redefined the display name yet in his
|
||||||
environment. */
|
environment. */
|
||||||
- (void) _fetchDisplayNameFromOwner
|
- (NSString *) _displayNameFromOwner
|
||||||
{
|
{
|
||||||
GCSChannelManager *cm;
|
GCSChannelManager *cm;
|
||||||
EOAdaptorChannel *fc;
|
EOAdaptorChannel *fc;
|
||||||
NSURL *folderLocation;
|
NSURL *folderLocation;
|
||||||
NSString *sql;
|
NSString *name, *sql;
|
||||||
NSArray *attrs;
|
NSArray *attrs;
|
||||||
NSDictionary *row;
|
NSDictionary *row;
|
||||||
|
|
||||||
|
name = nil;
|
||||||
cm = [GCSChannelManager defaultChannelManager];
|
cm = [GCSChannelManager defaultChannelManager];
|
||||||
folderLocation
|
folderLocation = [[GCSFolderManager defaultFolderManager] folderInfoLocation];
|
||||||
= [[GCSFolderManager defaultFolderManager] folderInfoLocation];
|
|
||||||
fc = [cm acquireOpenChannelForURL: folderLocation];
|
fc = [cm acquireOpenChannelForURL: folderLocation];
|
||||||
if (fc)
|
if (fc)
|
||||||
{
|
{
|
||||||
|
@ -324,33 +323,34 @@ static NSArray *childRecordFields = nil;
|
||||||
// performing the query. This could have unexpected results.
|
// performing the query. This could have unexpected results.
|
||||||
NS_DURING
|
NS_DURING
|
||||||
{
|
{
|
||||||
sql
|
sql = [NSString stringWithFormat: (@"SELECT c_foldername FROM %@"
|
||||||
= [NSString stringWithFormat: (@"SELECT c_foldername FROM %@"
|
@" WHERE c_path = '%@'"),
|
||||||
@" WHERE c_path = '%@'"),
|
[folderLocation gcsTableName], ocsPath];
|
||||||
[folderLocation gcsTableName], ocsPath];
|
|
||||||
[fc evaluateExpressionX: sql];
|
[fc evaluateExpressionX: sql];
|
||||||
attrs = [fc describeResults: NO];
|
attrs = [fc describeResults: NO];
|
||||||
row = [fc fetchAttributes: attrs withZone: NULL];
|
row = [fc fetchAttributes: attrs withZone: NULL];
|
||||||
if (row)
|
if (row)
|
||||||
[self _setDisplayNameFromRow: row];
|
name = [self _displayNameFromRow: row];
|
||||||
[fc cancelFetch];
|
[fc cancelFetch];
|
||||||
[cm releaseChannel: fc];
|
[cm releaseChannel: fc];
|
||||||
}
|
}
|
||||||
NS_HANDLER;
|
NS_HANDLER;
|
||||||
NS_ENDHANDLER;
|
NS_ENDHANDLER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) _fetchDisplayNameFromSubscriber
|
- (NSString *) _displayNameFromSubscriber
|
||||||
{
|
{
|
||||||
NSDictionary *ownerIdentity, *folderSubscriptionValues;
|
NSDictionary *ownerIdentity, *folderSubscriptionValues;
|
||||||
NSString *displayNameFormat;
|
NSString *name, *displayNameFormat;
|
||||||
SOGoDomainDefaults *dd;
|
SOGoDomainDefaults *dd;
|
||||||
|
|
||||||
displayName = [self folderPropertyValueInCategory: @"FolderDisplayNames"];
|
name = [self folderPropertyValueInCategory: @"FolderDisplayNames"];
|
||||||
if (!displayName)
|
if (!name)
|
||||||
{
|
{
|
||||||
[self _fetchDisplayNameFromOwner];
|
name = [self _displayNameFromOwner];
|
||||||
|
|
||||||
// We MUST NOT use SOGoUser instances here (by calling -primaryIdentity)
|
// We MUST NOT use SOGoUser instances here (by calling -primaryIdentity)
|
||||||
// as it'll load user defaults and user settings which is _very costly_
|
// as it'll load user defaults and user settings which is _very costly_
|
||||||
|
@ -358,17 +358,17 @@ static NSArray *childRecordFields = nil;
|
||||||
ownerIdentity = [[SOGoUserManager sharedUserManager]
|
ownerIdentity = [[SOGoUserManager sharedUserManager]
|
||||||
contactInfosForUserWithUIDorEmail: owner];
|
contactInfosForUserWithUIDorEmail: owner];
|
||||||
|
|
||||||
folderSubscriptionValues = [[NSDictionary alloc] initWithObjectsAndKeys: displayName, @"FolderName",
|
folderSubscriptionValues = [[NSDictionary alloc] initWithObjectsAndKeys: name, @"FolderName",
|
||||||
[ownerIdentity objectForKey: @"cn"], @"UserName",
|
[ownerIdentity objectForKey: @"cn"], @"UserName",
|
||||||
[ownerIdentity objectForKey: @"c_email"], @"Email", nil];
|
[ownerIdentity objectForKey: @"c_email"], @"Email", nil];
|
||||||
|
|
||||||
dd = [[context activeUser] domainDefaults];
|
dd = [[context activeUser] domainDefaults];
|
||||||
displayNameFormat = [dd subscriptionFolderFormat];
|
displayNameFormat = [dd subscriptionFolderFormat];
|
||||||
|
|
||||||
displayName = [folderSubscriptionValues keysWithFormat: displayNameFormat];
|
name = [folderSubscriptionValues keysWithFormat: displayNameFormat];
|
||||||
}
|
}
|
||||||
|
|
||||||
[displayName retain];
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *) displayName
|
- (NSString *) displayName
|
||||||
|
@ -376,14 +376,14 @@ static NSArray *childRecordFields = nil;
|
||||||
if (!displayName)
|
if (!displayName)
|
||||||
{
|
{
|
||||||
if (activeUserIsOwner)
|
if (activeUserIsOwner)
|
||||||
[self _fetchDisplayNameFromOwner];
|
displayName = [self _displayNameFromOwner];
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
[self _fetchDisplayNameFromSubscriber];
|
displayName = [self _displayNameFromSubscriber];
|
||||||
|
|
||||||
if (!displayName)
|
if (!displayName)
|
||||||
[self _fetchDisplayNameFromOwner];
|
displayName = [self _displayNameFromOwner];
|
||||||
}
|
}
|
||||||
|
[displayName retain];
|
||||||
}
|
}
|
||||||
|
|
||||||
return displayName;
|
return displayName;
|
||||||
|
@ -949,7 +949,7 @@ static NSArray *childRecordFields = nil;
|
||||||
forKey: @"FolderShowAlarms"];
|
forKey: @"FolderShowAlarms"];
|
||||||
}
|
}
|
||||||
|
|
||||||
[self setFolderPropertyValue: [self displayName]
|
[self setFolderPropertyValue: [self _displayNameFromSubscriber]
|
||||||
inCategory: @"FolderDisplayNames"
|
inCategory: @"FolderDisplayNames"
|
||||||
settings: us];
|
settings: us];
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue