diff --git a/ChangeLog b/ChangeLog index 3d4a49af9..5bfe85167 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,19 @@ 2006-10-03 Wolfgang Sourdeau + * SoObjects/SOGo/NSDictionary+URL.m ([NSDictionary + -asURLParameters]): handle dictionary entries which could be + instances of NSArray rather than NSString. + + * SoObjects/SOGo/NSString+URL.m ([NSString + -composeURLWithAction:actionparameters:urlParametersandHash:useHash]): when composing the url, remove the encoded parameters first since they will be added later. + ([NSString -urlWithoutParameters]): new method that returns the + url without its parameters. + + * SoObjects/SOGo/NSString+iCal.h: deleted obsolete file. + + * SoObjects/SOGo/NSDictionary+URL.[hm], + UI/SOGoUI/NSString+URL.[hm]: moved from UI/SOGoUI/. + * UI/WebServerResources/UIxMailEditor.js: add support for additions of different types (to, cc, bcc) of recipients from the address book. diff --git a/SoObjects/SOGo/GNUmakefile b/SoObjects/SOGo/GNUmakefile index 9bbb19e93..60dc38768 100644 --- a/SoObjects/SOGo/GNUmakefile +++ b/SoObjects/SOGo/GNUmakefile @@ -30,9 +30,10 @@ libSOGo_HEADER_FILES = \ \ AgenorUserManager.h \ SOGoLRUCache.h \ - NSString+iCal.h \ NSObject+AptComparison.h \ WOContext+Agenor.h \ + NSString+URL.h \ + NSDictionary+URL.h \ \ SOGoAuthenticator.h \ SOGoUser.h \ @@ -51,6 +52,9 @@ libSOGo_OBJC_FILES = \ NSObject+AptComparison.m \ WOContext+Agenor.m \ AgenorUserDefaults.m \ + NSDictionary+URL.m \ + NSString+URL.m \ + \ \ SOGoAuthenticator.m \ SOGoUser.m \ diff --git a/UI/SOGoUI/NSDictionary+URL.h b/SoObjects/SOGo/NSDictionary+URL.h similarity index 100% rename from UI/SOGoUI/NSDictionary+URL.h rename to SoObjects/SOGo/NSDictionary+URL.h diff --git a/UI/SOGoUI/NSDictionary+URL.m b/SoObjects/SOGo/NSDictionary+URL.m similarity index 74% rename from UI/SOGoUI/NSDictionary+URL.m rename to SoObjects/SOGo/NSDictionary+URL.m index aefe09d1f..dee5255bc 100644 --- a/UI/SOGoUI/NSDictionary+URL.m +++ b/SoObjects/SOGo/NSDictionary+URL.m @@ -33,7 +33,8 @@ NSMutableString *urlParameters; NSArray *keys; NSEnumerator *keysEnum; - NSString *currentKey; + NSString *currentKey, *separator; + id currentValue; BOOL isFirst; urlParameters = [NSMutableString new]; @@ -47,9 +48,16 @@ currentKey = [keysEnum nextObject]; while (currentKey) { - [urlParameters appendFormat: @"%@%@=%@", - ((isFirst) ? @"?" : @"&"), - currentKey, [self objectForKey: currentKey]]; + currentValue = [self objectForKey: currentKey]; + if ([currentValue isKindOfClass: [NSArray class]]) + { + separator = [NSString stringWithFormat: @"&%@=", currentKey]; + currentValue + = [currentValue componentsJoinedByString: separator]; + } + [urlParameters appendFormat: @"%@%@=%@", + ((isFirst) ? @"?" : @"&"), + currentKey, currentValue]; isFirst = NO; currentKey = [keysEnum nextObject]; } diff --git a/UI/SOGoUI/NSString+URL.h b/SoObjects/SOGo/NSString+URL.h similarity index 96% rename from UI/SOGoUI/NSString+URL.h rename to SoObjects/SOGo/NSString+URL.h index 32e941a96..9cdb529bb 100644 --- a/UI/SOGoUI/NSString+URL.h +++ b/SoObjects/SOGo/NSString+URL.h @@ -34,6 +34,8 @@ andHash: (BOOL) useHash; - (NSString *) hostlessURL; +- (NSString *) urlWithoutParameters; + @end #endif /* NSSTRING_URL_H */ diff --git a/UI/SOGoUI/NSString+URL.m b/SoObjects/SOGo/NSString+URL.m similarity index 85% rename from UI/SOGoUI/NSString+URL.m rename to SoObjects/SOGo/NSString+URL.m index 943608aaf..72391f82d 100644 --- a/UI/SOGoUI/NSString+URL.m +++ b/SoObjects/SOGo/NSString+URL.m @@ -34,7 +34,7 @@ completeURL = [NSMutableString new]; [completeURL autorelease]; - [completeURL appendString: self]; + [completeURL appendString: [self urlWithoutParameters]]; if (![completeURL hasSuffix: @"/"]) [completeURL appendString: @"/"]; [completeURL appendString: action]; @@ -63,4 +63,18 @@ return newURL; } +- (NSString *) urlWithoutParameters; +{ + NSRange r; + NSString *newUrl; + + r = [self rangeOfString:@"?" options: NSBackwardsSearch]; + if (r.length > 0) + newUrl = [self substringToIndex: NSMaxRange(r) - 1]; + else + newUrl = self; + + return newUrl; +} + @end diff --git a/SoObjects/SOGo/NSString+iCal.h b/SoObjects/SOGo/NSString+iCal.h deleted file mode 100644 index 6f4b33576..000000000 --- a/SoObjects/SOGo/NSString+iCal.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id: NSString+iCal.h 577 2005-02-17 14:38:14Z helge $ - - -#ifndef __NSString_iCal_H_ -#define __NSString_iCal_H_ - -// DEPRECATED - -#import -#include - -#endif /* __NSString_iCal_H_ */ diff --git a/UI/SOGoUI/GNUmakefile b/UI/SOGoUI/GNUmakefile index 7910b9646..db4e1cea0 100644 --- a/UI/SOGoUI/GNUmakefile +++ b/UI/SOGoUI/GNUmakefile @@ -12,9 +12,6 @@ libSOGoUI_HEADER_FILES_INSTALL_DIR = /SOGoUI FHS_HEADER_DIRS = SOGoUI libSOGoUI_HEADER_FILES += \ - \ - NSDictionary+URL.h \ - NSString+URL.h \ \ UIxComponent.h \ SOGoDateFormatter.h \ @@ -23,9 +20,6 @@ libSOGoUI_HEADER_FILES += \ WOContext+UIx.h \ libSOGoUI_OBJC_FILES += \ - \ - NSDictionary+URL.m \ - NSString+URL.m \ \ UIxComponent.m \ SOGoDateFormatter.m \