]> err.no Git - scalable-opengroupware.org/commitdiff
some work on iCal file
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Tue, 19 Oct 2004 15:46:15 +0000 (15:46 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Tue, 19 Oct 2004 15:46:15 +0000 (15:46 +0000)
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@408 d1b88da0-ebda-0310-925b-ed51d893ca5b

SOGo/Protocols/iCalHTTP/ChangeLog
SOGo/Protocols/iCalHTTP/SOGoICalHTTPHandler.h
SOGo/Protocols/iCalHTTP/SOGoICalHTTPHandler.m
SOGo/Protocols/iCalHTTP/Version
SOGo/Protocols/iCalHTTP/product.plist

index d43b56c040a721676d1a0eacc33ca297fc155949..59ecd8c72a072b87a855cd788f1402e606a07906 100644 (file)
@@ -1,3 +1,7 @@
+2004-10-19  Helge Hess  <helge.hess@opengroupware.org>
+
+       * SOGoICalHTTPHandler.m: some work on assembly support (v0.9.2)
+
 2004-10-08  Helge Hess  <helge.hess@opengroupware.org>
 
        * created ChangeLog
index 397a43ce9b072c140fab1de701cc93843fc68f74..32fef61ab53c244a2500105352bbacece53ed1a4 100644 (file)
 
 #import <Foundation/NSObject.h>
 
+/*
+  SOGoICalHTTPHandler
+
+  Object to represent a SOGoAppointmentFolder as a single iCalendar file.
+*/
+
 @interface SOGoICalHTTPHandler : NSObject
 {
+  // TODO: remember for ivars: there is _one_ handler per class! Not per ctx!
 }
 
 @end
index 1ad82b8cdb0077f9142a42b4c5dcfc80c98591f6..67fd669114d21b7f6de56efa95828846661f4637 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "SOGoICalHTTPHandler.h"
 #include "common.h"
+#include <NGObjWeb/WOContext+SoObjects.h>
 
 @implementation SOGoICalHTTPHandler
 
   [super dealloc];
 }
 
+/* context */
+
+- (WOContext *)context {
+  return [[WOApplication application] context];
+}
+
+/* clientObject */
+
+- (id)clientObjectInContext:(id)_ctx {
+  /*
+    The handler object is _not_ a method, its just a regular object
+    itself! (because methods are defined on it).
+  */
+  NSArray *stack;
+  
+  stack = [_ctx objectTraversalStack];
+  if ([stack count] == 0) {
+    [self logWithFormat:@"ERROR: no objects in traversal stack: %@", _ctx];
+    return nil;
+  }
+  if ([stack count] < 2) {
+    [self logWithFormat:@"ERROR: not enough objects in traversal stack: %@",
+           stack];
+    return nil;
+  }
+  
+  if ([stack lastObject] != self) // TODO: hm, hm, not really OK
+    return [stack lastObject];
+  
+  return [stack objectAtIndex:[stack count] - 2];
+}
+
+/* fetching */
+
+- (NSArray *)storedNamesInContext:(id)_ctx {
+  /* the client object will cache the names */
+  return [[self clientObjectInContext:_ctx] toOneRelationshipKeys];
+}
+
+/* actions */
+
+- (id)assembleEventsInContext:(id)_ctx {
+  [self logWithFormat:@"assemble iCal events ..."];
+  [self logWithFormat:@"  names: %@", [self storedNamesInContext:_ctx]];
+  return self;
+}
+
+- (id)updateEventsInContext:(id)_ctx {
+  [self logWithFormat:@"updates iCal events from a full collection ..."];
+  return [NSException exceptionWithHTTPStatus:501 /* Not Implemented */
+                     reason:@"please use WebDAV for modifications!"];
+}
+
 @end /* SOGoICalHTTPHandler */
index 36842fc5e551c5e679af71d7e5dee5e46bf5304a..bbf7bd6367c2556c0266bc218c1bc4b375d6783e 100644 (file)
@@ -1,3 +1,3 @@
 # $Id: Version 368 2004-10-06 19:28:12Z znek $
 
-SUBMINOR_VERSION:=1
+SUBMINOR_VERSION:=2
index cd9ca91fcd0e1847bfb851cfa9f84e38897d7657..51e2e8cce26c36f050ae7caa2ceccace68c3bb83 100644 (file)
@@ -9,8 +9,24 @@
 
   classes = {
     SOGoICalHTTPHandler = {
-      superclass = "NSObject";
-      protectedBy = "View";
+      superclass    = "NSObject";
+      protectedBy   = "View";
+      methods = {
+        GET = {
+          protectedBy = "View";
+          selector = { 
+            name                = "assembleEventsInContext:"; 
+            addContextParameter = YES;
+          };
+        };
+        PUT = {
+          protectedBy = "View";
+          selector = {
+            name                = "updateEventsInContext:"; 
+            addContextParameter = YES;
+          };
+        };
+      };
     };
   };