diff --git a/ChangeLog b/ChangeLog index 1c00eab4b..e955a197c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2008-05-02 Wolfgang Sourdeau + * Main/SOGo.m ([SOGo -davURL], [SOGo -soURL]): copied methods from + SOGoObject. + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder -davDisplayName]): new overriden method to provide a display name to the users principal. diff --git a/Main/SOGo.m b/Main/SOGo.m index afb19b095..4f42cb1f5 100644 --- a/Main/SOGo.m +++ b/Main/SOGo.m @@ -39,6 +39,7 @@ #import #import #import +#import #import @@ -515,6 +516,52 @@ static BOOL debugObjectAllocation = NO; return locale; } +- (NSURL *) _urlPreferringParticle: (NSString *) expected + overThisOne: (NSString *) possible +{ + NSURL *serverURL, *url; + NSMutableArray *path; + NSString *baseURL, *urlMethod; + WOContext *context; + + context = [self context]; + serverURL = [context serverURL]; + baseURL = [[self baseURLInContext: context] stringByUnescapingURL]; + path = [NSMutableArray arrayWithArray: [baseURL componentsSeparatedByString: + @"/"]]; + if ([baseURL hasPrefix: @"http"]) + { + [path removeObjectAtIndex: 1]; + [path removeObjectAtIndex: 0]; + [path replaceObjectAtIndex: 0 withObject: @""]; + } + urlMethod = [path objectAtIndex: 2]; + if (![urlMethod isEqualToString: expected]) + { + if ([urlMethod isEqualToString: possible]) + [path replaceObjectAtIndex: 2 withObject: expected]; + else + [path insertObject: expected atIndex: 2]; + } + + url = [[NSURL alloc] initWithScheme: [serverURL scheme] + host: [serverURL host] + path: [path componentsJoinedByString: @"/"]]; + [url autorelease]; + + return url; +} + +- (NSURL *) davURL +{ + return [self _urlPreferringParticle: @"dav" overThisOne: @"so"]; +} + +- (NSURL *) soURL +{ + return [self _urlPreferringParticle: @"so" overThisOne: @"dav"]; +} + /* name (used by the WEResourceManager) */ - (NSString *) name