diff --git a/ChangeLog b/ChangeLog index d3275311c..fde1aba5c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2010-03-05 Wolfgang Sourdeau + + * SoObjects/SOGo/NSString+DAV.m (-davSetterName): enhanced so that + DAV properties directely passed as parameters (and not as dav + method names deduced from DAVPropMap.plist) are handled properly + too. + + * SoObjects/SOGo/SOGoUserFolder.m (-setDavSignature:): new + accessor for setting the + {urn:inverse:params:xml:ns:inverse-dav}signature property via DAV. + 2010-03-02 Wolfgang Sourdeau * UI/PreferencesUI/UIxPreferences.m (-nameLabel, -colorLabel): diff --git a/SoObjects/SOGo/NSString+DAV.m b/SoObjects/SOGo/NSString+DAV.m index 73f53f78d..2664337ec 100644 --- a/SoObjects/SOGo/NSString+DAV.m +++ b/SoObjects/SOGo/NSString+DAV.m @@ -78,13 +78,23 @@ - (NSString *) davSetterName { unichar firstLetter; - NSString *firstString; + NSString *firstString, *property, *davPrefix; - firstLetter = [self characterAtIndex: 0]; + property = [[self asDavInvocation] objectForKey: @"method"]; + if (!property) + property = self; + firstLetter = [property characterAtIndex: 0]; firstString = [[NSString stringWithCharacters: &firstLetter length: 1] uppercaseString]; - return [NSString stringWithFormat: @"set%@%@:", - firstString, [self substringFromIndex: 1]]; + if ([property length] > 3 + && [[property substringWithRange: NSMakeRange (0, 3)] + caseInsensitiveCompare: @"dav"] == NSOrderedSame) + davPrefix = @""; + else + davPrefix = @"Dav"; + + return [NSString stringWithFormat: @"set%@%@%@:", davPrefix, + firstString, [property substringFromIndex: 1]]; } - (NSDictionary *) asDavInvocation diff --git a/SoObjects/SOGo/SOGoUserFolder.m b/SoObjects/SOGo/SOGoUserFolder.m index a69b48a1d..55f153aac 100644 --- a/SoObjects/SOGo/SOGoUserFolder.m +++ b/SoObjects/SOGo/SOGoUserFolder.m @@ -623,4 +623,17 @@ return [NSArray arrayWithObject: principalURL]; } +- (NSException *) setDavSignature: (NSString *) newSignature +{ + SOGoUserDefaults *ud; + SOGoUser *user; + + user = [SOGoUser userWithLogin: [self ownerInContext: nil]]; + ud = [user userDefaults]; + [ud setMailSignature: newSignature]; + [ud synchronize]; + + return nil; +} + @end /* SOGoUserFolder */