From ec98c5085ba7acafb50f6d70ad6792ad4d47cfdf Mon Sep 17 00:00:00 2001 From: znek Date: Wed, 25 Aug 2004 17:34:08 +0000 Subject: [PATCH] new "Contacts" product for SoObjects, minor build fix for SchedulerUI git-svn-id: http://svn.opengroupware.org/SOGo/trunk@270 d1b88da0-ebda-0310-925b-ed51d893ca5b --- SOGo/SOGo.xcode/project.pbxproj | 166 +++++++++++- SOGo/SoObjects/ChangeLog | 5 + SOGo/SoObjects/Contacts/ChangeLog | 3 + SOGo/SoObjects/Contacts/GNUmakefile | 23 ++ SOGo/SoObjects/Contacts/GNUmakefile.preamble | 18 ++ SOGo/SoObjects/Contacts/Product.m | 33 +++ SOGo/SoObjects/Contacts/SOGoContactFolder.h | 71 +++++ SOGo/SoObjects/Contacts/SOGoContactFolder.m | 258 +++++++++++++++++++ SOGo/SoObjects/Contacts/SOGoContactObject.h | 47 ++++ SOGo/SoObjects/Contacts/SOGoContactObject.m | 34 +++ SOGo/SoObjects/Contacts/Version | 3 + SOGo/SoObjects/Contacts/common.h | 35 +++ SOGo/SoObjects/Contacts/product.plist | 18 ++ SOGo/SoObjects/GNUmakefile | 1 + SOGo/UI/Scheduler/ChangeLog | 3 + SOGo/UI/Scheduler/GNUmakefile.preamble | 2 +- SOGo/UI/Scheduler/Version | 2 +- 17 files changed, 712 insertions(+), 10 deletions(-) create mode 100644 SOGo/SoObjects/ChangeLog create mode 100644 SOGo/SoObjects/Contacts/ChangeLog create mode 100644 SOGo/SoObjects/Contacts/GNUmakefile create mode 100644 SOGo/SoObjects/Contacts/GNUmakefile.preamble create mode 100644 SOGo/SoObjects/Contacts/Product.m create mode 100644 SOGo/SoObjects/Contacts/SOGoContactFolder.h create mode 100644 SOGo/SoObjects/Contacts/SOGoContactFolder.m create mode 100644 SOGo/SoObjects/Contacts/SOGoContactObject.h create mode 100644 SOGo/SoObjects/Contacts/SOGoContactObject.m create mode 100644 SOGo/SoObjects/Contacts/Version create mode 100644 SOGo/SoObjects/Contacts/common.h create mode 100644 SOGo/SoObjects/Contacts/product.plist diff --git a/SOGo/SOGo.xcode/project.pbxproj b/SOGo/SOGo.xcode/project.pbxproj index 2a96072f..ccbc6745 100644 --- a/SOGo/SOGo.xcode/project.pbxproj +++ b/SOGo/SOGo.xcode/project.pbxproj @@ -1026,6 +1026,161 @@ refType = 4; sourceTree = ""; }; + ADDF4BDB06DCF5D400C4E7F8 = { + children = ( + ADDF4BE306DCF5D400C4E7F8, + ADDF4C0006DCF65700C4E7F8, + ADDF4BEF06DCF60500C4E7F8, + ADDF4BEC06DCF5FE00C4E7F8, + ); + isa = PBXGroup; + path = Contacts; + refType = 4; + sourceTree = ""; + }; + ADDF4BDC06DCF5D400C4E7F8 = { + fileEncoding = 4; + indentWidth = 2; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = common.h; + refType = 4; + sourceTree = ""; + tabWidth = 2; + }; + ADDF4BDD06DCF5D400C4E7F8 = { + explicitFileType = sourcecode.make; + fileEncoding = 4; + isa = PBXFileReference; + path = GNUmakefile; + refType = 4; + sourceTree = ""; + tabWidth = 8; + }; + ADDF4BDE06DCF5D400C4E7F8 = { + fileEncoding = 4; + indentWidth = 2; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = Product.m; + refType = 4; + sourceTree = ""; + tabWidth = 2; + }; + ADDF4BDF06DCF5D400C4E7F8 = { + fileEncoding = 4; + indentWidth = 2; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = SOGoContactFolder.h; + refType = 4; + sourceTree = ""; + tabWidth = 2; + }; + ADDF4BE006DCF5D400C4E7F8 = { + fileEncoding = 4; + indentWidth = 2; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = SOGoContactFolder.m; + refType = 4; + sourceTree = ""; + tabWidth = 2; + }; + ADDF4BE106DCF5D400C4E7F8 = { + fileEncoding = 4; + indentWidth = 2; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = SOGoContactObject.h; + refType = 4; + sourceTree = ""; + tabWidth = 2; + }; + ADDF4BE206DCF5D400C4E7F8 = { + fileEncoding = 4; + indentWidth = 2; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = SOGoContactObject.m; + refType = 4; + sourceTree = ""; + tabWidth = 2; + }; + ADDF4BE306DCF5D400C4E7F8 = { + explicitFileType = sourcecode.make; + fileEncoding = 4; + isa = PBXFileReference; + path = Version; + refType = 4; + sourceTree = ""; + tabWidth = 8; + }; + ADDF4BE606DCF5E200C4E7F8 = { + children = ( + E872063B0692E3D00099CBBD, + E872063C0692E3D00099CBBD, + ); + isa = PBXGroup; + name = Makefiles; + refType = 4; + sourceTree = ""; + }; + ADDF4BE906DCF5EC00C4E7F8 = { + children = ( + E872063A0692E3D00099CBBD, + E87206410692E3D00099CBBD, + E87206470692E3D00099CBBD, + E87206480692E3D00099CBBD, + E87206490692E3D00099CBBD, + E872064A0692E3D00099CBBD, + ); + isa = PBXGroup; + name = Classes; + refType = 4; + sourceTree = ""; + }; + ADDF4BEC06DCF5FE00C4E7F8 = { + children = ( + ADDF4BDC06DCF5D400C4E7F8, + ADDF4BDE06DCF5D400C4E7F8, + ADDF4BDF06DCF5D400C4E7F8, + ADDF4BE006DCF5D400C4E7F8, + ADDF4BE106DCF5D400C4E7F8, + ADDF4BE206DCF5D400C4E7F8, + ); + isa = PBXGroup; + name = Classes; + refType = 4; + sourceTree = ""; + }; + ADDF4BEF06DCF60500C4E7F8 = { + children = ( + ADDF4BDD06DCF5D400C4E7F8, + ADDF4BFF06DCF64100C4E7F8, + ); + isa = PBXGroup; + name = Makefiles; + refType = 4; + sourceTree = ""; + }; + ADDF4BFF06DCF64100C4E7F8 = { + explicitFileType = sourcecode.make; + fileEncoding = 4; + isa = PBXFileReference; + path = GNUmakefile.preamble; + refType = 4; + sourceTree = ""; + tabWidth = 8; + }; + ADDF4C0006DCF65700C4E7F8 = { + fileEncoding = 4; + isa = PBXFileReference; + lastKnownFileType = text.plist; + path = product.plist; + refType = 4; + sourceTree = ""; + }; ADE2C23C06B7BED40065D56F = { fileEncoding = 4; isa = PBXFileReference; @@ -1549,6 +1704,7 @@ E872064D0692E3D00099CBBD, E872064C0692E3D00099CBBD, E87206090692E3D00099CBBD, + ADDF4BDB06DCF5D400C4E7F8, E872064E0692E3D00099CBBD, ); isa = PBXGroup; @@ -1560,14 +1716,8 @@ children = ( E872064B0692E3D00099CBBD, E87206420692E3D00099CBBD, - E872063A0692E3D00099CBBD, - E872063B0692E3D00099CBBD, - E872063C0692E3D00099CBBD, - E87206410692E3D00099CBBD, - E87206470692E3D00099CBBD, - E87206480692E3D00099CBBD, - E87206490692E3D00099CBBD, - E872064A0692E3D00099CBBD, + ADDF4BE606DCF5E200C4E7F8, + ADDF4BE906DCF5EC00C4E7F8, ); isa = PBXGroup; path = Appointments; diff --git a/SOGo/SoObjects/ChangeLog b/SOGo/SoObjects/ChangeLog new file mode 100644 index 00000000..81b19249 --- /dev/null +++ b/SOGo/SoObjects/ChangeLog @@ -0,0 +1,5 @@ +2004-08-25 Marcus Mueller + + * added "Contacts" product + + * ChangeLog: created diff --git a/SOGo/SoObjects/Contacts/ChangeLog b/SOGo/SoObjects/Contacts/ChangeLog new file mode 100644 index 00000000..e69b116e --- /dev/null +++ b/SOGo/SoObjects/Contacts/ChangeLog @@ -0,0 +1,3 @@ +2004-08-25 Marcus Mueller + + * ChangeLog: created diff --git a/SOGo/SoObjects/Contacts/GNUmakefile b/SOGo/SoObjects/Contacts/GNUmakefile new file mode 100644 index 00000000..caadc6d8 --- /dev/null +++ b/SOGo/SoObjects/Contacts/GNUmakefile @@ -0,0 +1,23 @@ +# $Id$ + +include $(GNUSTEP_MAKEFILES)/common.make + +BUNDLE_NAME = Contacts +BUNDLE_EXTENSION = .SOGo +BUNDLE_INSTALL_DIR = $(GNUSTEP_USER_ROOT)/Library/SOGo + +Contacts_PRINCIPAL_CLASS = SOGoContactsProduct + +Contacts_OBJC_FILES = \ + Product.m \ + \ + SOGoContactObject.m \ + SOGoContactFolder.m \ + +Contacts_RESOURCE_FILES += \ + Version \ + product.plist \ + +-include GNUmakefile.preamble +include $(GNUSTEP_MAKEFILES)/bundle.make +-include GNUmakefile.postamble diff --git a/SOGo/SoObjects/Contacts/GNUmakefile.preamble b/SOGo/SoObjects/Contacts/GNUmakefile.preamble new file mode 100644 index 00000000..f5fdadee --- /dev/null +++ b/SOGo/SoObjects/Contacts/GNUmakefile.preamble @@ -0,0 +1,18 @@ +# $Id$ + +ADDITIONAL_INCLUDE_DIRS += \ + -I.. \ + -I../../.. + +ADDITIONAL_LIB_DIRS += \ + -L../SOGo/$(GNUSTEP_OBJ_DIR)/ \ + -L../../../OGoContentStore/$(GNUSTEP_OBJ_DIR)/ \ + -L../../../SOGoLogic/$(GNUSTEP_OBJ_DIR)/ + +Appointments_BUNDLE_LIBS += \ + -lSOGo -lSOGoLogic \ + -lOGoContentStore \ + -lGDLAccess \ + -lEOControl \ + -lSaxObjC + diff --git a/SOGo/SoObjects/Contacts/Product.m b/SOGo/SoObjects/Contacts/Product.m new file mode 100644 index 00000000..9a83bbe8 --- /dev/null +++ b/SOGo/SoObjects/Contacts/Product.m @@ -0,0 +1,33 @@ +/* + Copyright (C) 2004 SKYRIX Software AG + + This file is part of OpenGroupware.org. + + 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$ + +#import + +@interface SOGoContactsProduct : NSObject +{ +} + +@end + +@implementation SOGoContactsProduct + +@end /* SOGoAppointmentsProduct */ diff --git a/SOGo/SoObjects/Contacts/SOGoContactFolder.h b/SOGo/SoObjects/Contacts/SOGoContactFolder.h new file mode 100644 index 00000000..68c3af75 --- /dev/null +++ b/SOGo/SoObjects/Contacts/SOGoContactFolder.h @@ -0,0 +1,71 @@ +/* + Copyright (C) 2004 SKYRIX Software AG + + This file is part of OpenGroupware.org. + + 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$ + +#ifndef __Appointments_SOGoContactFolder_H__ +#define __Appointments_SOGoContactFolder_H__ + +#include + +/* + SOGoContactFolder + Parent object: the SOGoUserFolder + Child objects: SOGoContactObject + + The SOGoContactFolder maps to an OCS folder of type 'contact', that + is, a content folder containing vcal?? files (and a proper quicktable). +*/ + +@class NSString, NSArray, NSCalendarDate, NSException; +@class OCSFolder; + +@interface SOGoContactFolder : SOGoFolder +{ +} + ++ (NSString *)globallyUniqueObjectId; + +/* selection */ + +- (NSArray *)contactUIDs; + +/* fetching */ + +- (NSArray *)fetchCoreInfosFrom:(NSCalendarDate *)_startDate + to:(NSCalendarDate *)_endDate; + +- (NSArray *)fetchCoreInfosFromFolder:(OCSFolder *)_folder + from:(NSCalendarDate *)_startDate + to:(NSCalendarDate *)_endDate; + +/* URL generation */ + +- (NSString *)baseURLForContactWithUID:(NSString *)_uid inContext:(id)_ctx; + +/* folder management */ + +- (id)lookupHomeFolderForUID:(NSString *)_uid inContext:(id)_ctx; + +- (NSArray *)lookupContactFoldersForUIDs:(NSArray *)_uids inContext:(id)_ctx; + +@end + +#endif /* __Appointments_SOGoContactFolder_H__ */ diff --git a/SOGo/SoObjects/Contacts/SOGoContactFolder.m b/SOGo/SoObjects/Contacts/SOGoContactFolder.m new file mode 100644 index 00000000..8d9a542f --- /dev/null +++ b/SOGo/SoObjects/Contacts/SOGoContactFolder.m @@ -0,0 +1,258 @@ +/* + Copyright (C) 2004 SKYRIX Software AG + + This file is part of OpenGroupware.org. + + 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$ + +#include "SOGoContactFolder.h" +#include +#include +#include +#include +#include "common.h" +#include +#include + +@implementation SOGoContactFolder + +static BOOL debugOn = NO; +static NSTimeZone *MET = nil; + ++ (void)initialize { + if (MET == nil) MET = [[NSTimeZone timeZoneWithAbbreviation:@"MET"] retain]; +} + ++ (NSString *)globallyUniqueObjectId { + /* + 4C08AE1A-A808-11D8-AC5A-000393BBAFF6 + SOGo-Web-28273-18283-288182 + printf( "%x", *(int *) &f); + */ + static int pid = 0; + static int sequence = 0; + static float rndm = 0; + float f; + + if (pid == 0) { /* break if we fork ;-) */ + pid = getpid(); + rndm = random(); + } + sequence++; + f = [[NSDate date] timeIntervalSince1970]; + return [NSString stringWithFormat:@"%0X-%0X-%0X-%0X", + pid, *(int *)&f, sequence++, random]; +} + +- (void)dealloc { + [super dealloc]; +} + +/* selection */ + +- (NSArray *)contactUIDs { + NSString *s; + + s = [[self container] nameInContainer]; + return [s isNotNull] ? [NSArray arrayWithObjects:&s count:1] : nil; +} + +/* name lookup */ + +- (BOOL)isValidContactName:(NSString *)_key { + if ([_key length] == 0) + return NO; + + return YES; +} + +- (id)contactWithName:(NSString *)_key inContext:(id)_ctx { + static Class ctClass = Nil; + id ct; + + if (ctClass == Nil) + ctClass = NSClassFromString(@"SOGoContactObject"); + if (ctClass == Nil) { + [self logWithFormat:@"ERROR: missing SOGoContactObject class!"]; + return nil; + } + + ct = [[ctClass alloc] initWithName:_key inContainer:self]; + return [ct autorelease]; +} + +- (id)lookupName:(NSString *)_key inContext:(id)_ctx acquire:(BOOL)_flag { + id obj; + + /* first check attributes directly bound to the application */ + if ((obj = [super lookupName:_key inContext:_ctx acquire:NO])) + return obj; + + if ([self isValidContactName:_key]) + return [self contactWithName:_key inContext:_ctx]; + + /* return 404 to stop acquisition */ + return [NSException exceptionWithHTTPStatus:404 /* Not Found */]; +} + +/* fetching */ + +- (NSMutableDictionary *)fixupRecord:(NSDictionary *)_record { + NSMutableDictionary *md; + id tmp; + + md = [[_record mutableCopy] autorelease]; +#warning !! IMPLEMENT ME! + return md; +} + +- (NSArray *)fixupRecords:(NSArray *)_records { + NSMutableArray *ma; + unsigned i, count; + + if (_records == nil) return nil; + if ((count = [_records count]) == 0) + return _records; + + ma = [NSMutableArray arrayWithCapacity:count]; + for (i = 0; i < count; i++) { + id row; + + row = [self fixupRecord:[_records objectAtIndex:i]]; + if (row) [ma addObject:row]; + } + return ma; +} + +- (NSArray *)fetchCoreInfosFromFolder:(OCSFolder *)_folder + from:(NSCalendarDate *)_startDate + to:(NSCalendarDate *)_endDate +{ +#warning !! IMPLEMENT ME! + return nil; +} + +- (NSArray *)fetchCoreInfosFrom:(NSCalendarDate *)_startDate + to:(NSCalendarDate *)_endDate +{ + /* this is the primary API */ + OCSFolder *folder; + + if ((folder = [self ocsFolder]) == nil) { + [self logWithFormat:@"ERROR(%s): missing folder for fetch!", + __PRETTY_FUNCTION__]; + return nil; + } + return [self fetchCoreInfosFromFolder:folder from:_startDate to:_endDate]; +} + +/* URL generation */ + +- (NSString *)baseURLForContactWithUID:(NSString *)_uid inContext:(id)_ctx { + NSString *url; + + if ([_uid length] == 0) + return nil; + + url = [self baseURLInContext:_ctx]; + if (![url hasSuffix:@"/"]) + url = [url stringByAppendingString:@"/"]; + return [url stringByAppendingString:_uid]; +} + +/* folder management */ + +- (id)lookupHomeFolderForUID:(NSString *)_uid inContext:(id)_ctx { + // TODO: DUP to SOGoGroupFolder + NSException *error = nil; + NSArray *path; + id ctx, result; + + if (![_uid isNotNull]) + return nil; + + if (_ctx == nil) _ctx = [[WOApplication application] context]; + + /* create subcontext, so that we don't destroy our environment */ + + if ((ctx = [_ctx createSubContext]) == nil) { + [self logWithFormat:@"ERROR: could not create SOPE subcontext!"]; + return nil; + } + + /* build path */ + + path = _uid != nil ? [NSArray arrayWithObjects:&_uid count:1] : nil; + + /* traverse path */ + + result = [[ctx application] traversePathArray:path inContext:ctx + error:&error acquire:NO]; + if (error != nil) { + [self logWithFormat:@"ERROR: folder lookup failed (uid=%@): %@", + _uid, error]; + return nil; + } + + [self debugWithFormat:@"Note: got folder for uid %@ path %@: %@", + _uid, [path componentsJoinedByString:@"=>"], result]; + return result; +} + +- (NSArray *)lookupContactFoldersForUIDs:(NSArray *)_uids inContext:(id)_ctx { + /* Note: can return NSNull objects in the array! */ + NSMutableArray *folders; + NSEnumerator *e; + NSString *uid; + + if ([_uids count] == 0) return nil; + folders = [NSMutableArray arrayWithCapacity:16]; + e = [_uids objectEnumerator]; + while ((uid = [e nextObject])) { + id folder; + + folder = [self lookupHomeFolderForUID:uid inContext:nil]; + if ([folder isNotNull]) { + folder = [folder lookupName:@"Contacts" inContext:nil acquire:NO]; + if ([folder isKindOfClass:[NSException class]]) + folder = nil; + } + if (![folder isNotNull]) + [self logWithFormat:@"Note: did not find folder for uid: '%@'", uid]; + + /* Note: intentionally add 'null' folders to allow a mapping */ + [folders addObject:folder ? folder : [NSNull null]]; + } + return folders; +} + +/* GET */ + +- (id)GETAction:(WOContext *)_ctx { + // TODO: I guess this should really be done by SOPE (redirect to + // default method) + NSString *uri; + + uri = [[_ctx request] uri]; + if (![uri hasSuffix:@"/"]) uri = [uri stringByAppendingString:@"/"]; + uri = [uri stringByAppendingString:@"view"]; + + return [self redirectToLocation:uri]; +} + +@end /* SOGoContactFolder */ diff --git a/SOGo/SoObjects/Contacts/SOGoContactObject.h b/SOGo/SoObjects/Contacts/SOGoContactObject.h new file mode 100644 index 00000000..468d3c86 --- /dev/null +++ b/SOGo/SoObjects/Contacts/SOGoContactObject.h @@ -0,0 +1,47 @@ +/* + Copyright (C) 2004 SKYRIX Software AG + + This file is part of OpenGroupware.org. + + 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$ + +#ifndef __Appointments_SOGoContactObject_H__ +#define __Appointments_SOGoContactObject_H__ + +#include + +/* + SOGoContactObject + + Represents a single contact. This SOPE controller object manages all the + attendee storages (that is, it might store into multiple folders for meeting + appointments!). + + Note: SOGoContactObject do not need to exist yet. They can also be "new" + appointments with an externally generated unique key. +*/ + +@class NSString, NSArray, NSException; + +@interface SOGoContactObject : SOGoContentObject +{ +} + +@end + +#endif /* __Appointments_SOGoContactObject_H__ */ diff --git a/SOGo/SoObjects/Contacts/SOGoContactObject.m b/SOGo/SoObjects/Contacts/SOGoContactObject.m new file mode 100644 index 00000000..0e0be03a --- /dev/null +++ b/SOGo/SoObjects/Contacts/SOGoContactObject.m @@ -0,0 +1,34 @@ +/* + Copyright (C) 2004 SKYRIX Software AG + + This file is part of OpenGroupware.org. + + 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$ + +#include "SOGoContactObject.h" +#include "common.h" + +@implementation SOGoContactObject + +- (void)dealloc { + [super dealloc]; +} + +/* accessors */ + +@end /* SOGoContactObject */ diff --git a/SOGo/SoObjects/Contacts/Version b/SOGo/SoObjects/Contacts/Version new file mode 100644 index 00000000..9385a64d --- /dev/null +++ b/SOGo/SoObjects/Contacts/Version @@ -0,0 +1,3 @@ +# $Id$ + +SUBMINOR_VERSION:=0 diff --git a/SOGo/SoObjects/Contacts/common.h b/SOGo/SoObjects/Contacts/common.h new file mode 100644 index 00000000..88fc5806 --- /dev/null +++ b/SOGo/SoObjects/Contacts/common.h @@ -0,0 +1,35 @@ +/* + Copyright (C) 2002-2004 SKYRIX Software AG + + This file is part of OpenGroupware.org. + + 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$ + +#import + +#if NeXT_Foundation_LIBRARY || COCOA_Foundation_LIBRARY +# include +# include +#endif + +#include +#include +#include + +#include + diff --git a/SOGo/SoObjects/Contacts/product.plist b/SOGo/SoObjects/Contacts/product.plist new file mode 100644 index 00000000..c4f8b45b --- /dev/null +++ b/SOGo/SoObjects/Contacts/product.plist @@ -0,0 +1,18 @@ +{ + requires = ( MAIN ); + + publicResources = ( + ); + + factories = { + }; + + classes = { + SOGoContactFolder = { + superclass = "SOGoFolder"; + }; + SOGoContactObject = { + superclass = "SOGoContentObject"; + }; + }; +} diff --git a/SOGo/SoObjects/GNUmakefile b/SOGo/SoObjects/GNUmakefile index b7fdaf08..6248382c 100644 --- a/SOGo/SoObjects/GNUmakefile +++ b/SOGo/SoObjects/GNUmakefile @@ -5,5 +5,6 @@ include $(GNUSTEP_MAKEFILES)/common.make SUBPROJECTS = \ SOGo \ Appointments \ + Contacts \ include $(GNUSTEP_MAKEFILES)/aggregate.make diff --git a/SOGo/UI/Scheduler/ChangeLog b/SOGo/UI/Scheduler/ChangeLog index 2993902d..abf4851c 100644 --- a/SOGo/UI/Scheduler/ChangeLog +++ b/SOGo/UI/Scheduler/ChangeLog @@ -1,5 +1,8 @@ 2004-08-25 Marcus Mueller + * GNUmakefile.preamble: removed NGScripting from dependencies - it's no + longer required (v0.9.71) + * UIxAppointmentProposal.m: changed -isSecondHalfGreen and -isSlotRangeGreen due to a bugfix in NGExtensions (v0.9.70) diff --git a/SOGo/UI/Scheduler/GNUmakefile.preamble b/SOGo/UI/Scheduler/GNUmakefile.preamble index 8ee96db6..1fc3dad3 100644 --- a/SOGo/UI/Scheduler/GNUmakefile.preamble +++ b/SOGo/UI/Scheduler/GNUmakefile.preamble @@ -22,7 +22,7 @@ SchedulerUI_LIB_DIRS += \ -L$(RELBUILD_DIR_libSOGoLogic) SchedulerUI_BUNDLE_LIBS += \ - -lNGObjWeb -lNGScripting \ + -lNGObjWeb \ -lNGMime -lNGStreams -lNGExtensions -lEOControl \ -lXmlRpc -lDOM -lSaxObjC -lNGiCal \ -lSOGoLogic -lSOGoUI \ diff --git a/SOGo/UI/Scheduler/Version b/SOGo/UI/Scheduler/Version index a03b5ec4..7138cac6 100644 --- a/SOGo/UI/Scheduler/Version +++ b/SOGo/UI/Scheduler/Version @@ -1,6 +1,6 @@ # $Id$ -SUBMINOR_VERSION:=70 +SUBMINOR_VERSION:=71 # v0.9.70 requires libNGExtensions v4.3.107 # v0.9.67 requires SOPE 4.3 -- 2.39.5