refType = 4;
sourceTree = "<group>";
};
+ ADDF4BDB06DCF5D400C4E7F8 = {
+ children = (
+ ADDF4BE306DCF5D400C4E7F8,
+ ADDF4C0006DCF65700C4E7F8,
+ ADDF4BEF06DCF60500C4E7F8,
+ ADDF4BEC06DCF5FE00C4E7F8,
+ );
+ isa = PBXGroup;
+ path = Contacts;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ ADDF4BDC06DCF5D400C4E7F8 = {
+ fileEncoding = 4;
+ indentWidth = 2;
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ path = common.h;
+ refType = 4;
+ sourceTree = "<group>";
+ tabWidth = 2;
+ };
+ ADDF4BDD06DCF5D400C4E7F8 = {
+ explicitFileType = sourcecode.make;
+ fileEncoding = 4;
+ isa = PBXFileReference;
+ path = GNUmakefile;
+ refType = 4;
+ sourceTree = "<group>";
+ tabWidth = 8;
+ };
+ ADDF4BDE06DCF5D400C4E7F8 = {
+ fileEncoding = 4;
+ indentWidth = 2;
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.objc;
+ path = Product.m;
+ refType = 4;
+ sourceTree = "<group>";
+ tabWidth = 2;
+ };
+ ADDF4BDF06DCF5D400C4E7F8 = {
+ fileEncoding = 4;
+ indentWidth = 2;
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ path = SOGoContactFolder.h;
+ refType = 4;
+ sourceTree = "<group>";
+ tabWidth = 2;
+ };
+ ADDF4BE006DCF5D400C4E7F8 = {
+ fileEncoding = 4;
+ indentWidth = 2;
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.objc;
+ path = SOGoContactFolder.m;
+ refType = 4;
+ sourceTree = "<group>";
+ tabWidth = 2;
+ };
+ ADDF4BE106DCF5D400C4E7F8 = {
+ fileEncoding = 4;
+ indentWidth = 2;
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ path = SOGoContactObject.h;
+ refType = 4;
+ sourceTree = "<group>";
+ tabWidth = 2;
+ };
+ ADDF4BE206DCF5D400C4E7F8 = {
+ fileEncoding = 4;
+ indentWidth = 2;
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.objc;
+ path = SOGoContactObject.m;
+ refType = 4;
+ sourceTree = "<group>";
+ tabWidth = 2;
+ };
+ ADDF4BE306DCF5D400C4E7F8 = {
+ explicitFileType = sourcecode.make;
+ fileEncoding = 4;
+ isa = PBXFileReference;
+ path = Version;
+ refType = 4;
+ sourceTree = "<group>";
+ tabWidth = 8;
+ };
+ ADDF4BE606DCF5E200C4E7F8 = {
+ children = (
+ E872063B0692E3D00099CBBD,
+ E872063C0692E3D00099CBBD,
+ );
+ isa = PBXGroup;
+ name = Makefiles;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ ADDF4BE906DCF5EC00C4E7F8 = {
+ children = (
+ E872063A0692E3D00099CBBD,
+ E87206410692E3D00099CBBD,
+ E87206470692E3D00099CBBD,
+ E87206480692E3D00099CBBD,
+ E87206490692E3D00099CBBD,
+ E872064A0692E3D00099CBBD,
+ );
+ isa = PBXGroup;
+ name = Classes;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ ADDF4BEC06DCF5FE00C4E7F8 = {
+ children = (
+ ADDF4BDC06DCF5D400C4E7F8,
+ ADDF4BDE06DCF5D400C4E7F8,
+ ADDF4BDF06DCF5D400C4E7F8,
+ ADDF4BE006DCF5D400C4E7F8,
+ ADDF4BE106DCF5D400C4E7F8,
+ ADDF4BE206DCF5D400C4E7F8,
+ );
+ isa = PBXGroup;
+ name = Classes;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ ADDF4BEF06DCF60500C4E7F8 = {
+ children = (
+ ADDF4BDD06DCF5D400C4E7F8,
+ ADDF4BFF06DCF64100C4E7F8,
+ );
+ isa = PBXGroup;
+ name = Makefiles;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ ADDF4BFF06DCF64100C4E7F8 = {
+ explicitFileType = sourcecode.make;
+ fileEncoding = 4;
+ isa = PBXFileReference;
+ path = GNUmakefile.preamble;
+ refType = 4;
+ sourceTree = "<group>";
+ tabWidth = 8;
+ };
+ ADDF4C0006DCF65700C4E7F8 = {
+ fileEncoding = 4;
+ isa = PBXFileReference;
+ lastKnownFileType = text.plist;
+ path = product.plist;
+ refType = 4;
+ sourceTree = "<group>";
+ };
ADE2C23C06B7BED40065D56F = {
fileEncoding = 4;
isa = PBXFileReference;
E872064D0692E3D00099CBBD,
E872064C0692E3D00099CBBD,
E87206090692E3D00099CBBD,
+ ADDF4BDB06DCF5D400C4E7F8,
E872064E0692E3D00099CBBD,
);
isa = PBXGroup;
children = (
E872064B0692E3D00099CBBD,
E87206420692E3D00099CBBD,
- E872063A0692E3D00099CBBD,
- E872063B0692E3D00099CBBD,
- E872063C0692E3D00099CBBD,
- E87206410692E3D00099CBBD,
- E87206470692E3D00099CBBD,
- E87206480692E3D00099CBBD,
- E87206490692E3D00099CBBD,
- E872064A0692E3D00099CBBD,
+ ADDF4BE606DCF5E200C4E7F8,
+ ADDF4BE906DCF5EC00C4E7F8,
);
isa = PBXGroup;
path = Appointments;
--- /dev/null
+2004-08-25 Marcus Mueller <znek@mulle-kybernetik.com>
+
+ * added "Contacts" product
+
+ * ChangeLog: created
--- /dev/null
+2004-08-25 Marcus Mueller <znek@mulle-kybernetik.com>
+
+ * ChangeLog: created
--- /dev/null
+# $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
--- /dev/null
+# $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
+
--- /dev/null
+/*
+ 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 <Foundation/NSObject.h>
+
+@interface SOGoContactsProduct : NSObject
+{
+}
+
+@end
+
+@implementation SOGoContactsProduct
+
+@end /* SOGoAppointmentsProduct */
--- /dev/null
+/*
+ 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 <SOGo/SOGoFolder.h>
+
+/*
+ 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__ */
--- /dev/null
+/*
+ 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 <SOGo/SOGoCustomGroupFolder.h>
+#include <SOGoLogic/AgenorUserManager.h>
+#include <OGoContentStore/OCSFolder.h>
+#include <NGiCal/NGiCal.h>
+#include "common.h"
+#include <unistd.h>
+#include <stdlib.h>
+
+@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 */
--- /dev/null
+/*
+ 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 <SOGo/SOGoContentObject.h>
+
+/*
+ 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__ */
--- /dev/null
+/*
+ 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 */
--- /dev/null
+# $Id$
+
+SUBMINOR_VERSION:=0
--- /dev/null
+/*
+ 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 <Foundation/Foundation.h>
+
+#if NeXT_Foundation_LIBRARY || COCOA_Foundation_LIBRARY
+# include <NGExtensions/NGObjectMacros.h>
+# include <NGExtensions/NSString+Ext.h>
+#endif
+
+#include <NGExtensions/NGExtensions.h>
+#include <NGObjWeb/NGObjWeb.h>
+#include <NGObjWeb/SoObjects.h>
+
+#include <SOGoLogic/SOGoAppointment.h>
+
--- /dev/null
+{
+ requires = ( MAIN );
+
+ publicResources = (
+ );
+
+ factories = {
+ };
+
+ classes = {
+ SOGoContactFolder = {
+ superclass = "SOGoFolder";
+ };
+ SOGoContactObject = {
+ superclass = "SOGoContentObject";
+ };
+ };
+}
SUBPROJECTS = \
SOGo \
Appointments \
+ Contacts \
include $(GNUSTEP_MAKEFILES)/aggregate.make
2004-08-25 Marcus Mueller <znek@mulle-kybernetik.com>
+ * 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)
-L$(RELBUILD_DIR_libSOGoLogic)
SchedulerUI_BUNDLE_LIBS += \
- -lNGObjWeb -lNGScripting \
+ -lNGObjWeb \
-lNGMime -lNGStreams -lNGExtensions -lEOControl \
-lXmlRpc -lDOM -lSaxObjC -lNGiCal \
-lSOGoLogic -lSOGoUI \
# $Id$
-SUBMINOR_VERSION:=70
+SUBMINOR_VERSION:=71
# v0.9.70 requires libNGExtensions v4.3.107
# v0.9.67 requires SOPE 4.3