]> err.no Git - scalable-opengroupware.org/commitdiff
WebDAV enhancements
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Fri, 8 Oct 2004 13:57:14 +0000 (13:57 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Fri, 8 Oct 2004 13:57:14 +0000 (13:57 +0000)
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@371 d1b88da0-ebda-0310-925b-ed51d893ca5b

SOGo/SoObjects/Mailer/ChangeLog
SOGo/SoObjects/Mailer/SOGoMailFolder.m
SOGo/SoObjects/Mailer/SOGoMailObject.m
SOGo/SoObjects/Mailer/Version
SOGo/SoObjects/SOGo/ChangeLog
SOGo/SoObjects/SOGo/SOGoObject.m
SOGo/SoObjects/SOGo/Version

index 440bfab560d4ffbd4549931c07679d31bc66de99..812f584935cfa68a5bfffc80218498d90e0f8bfd 100644 (file)
@@ -1,5 +1,13 @@
 2004-10-08  Helge Hess  <helge.hess@opengroupware.org>
 
+       * v0.9.29
+
+       * SOGoMailObject.m: added toOneRelationshipKeys/toManyRelationshipKeys
+         (return the contained body parts)
+
+       * SOGoMailFolder.m: added toOneRelationshipKeys (returns the message
+         uids)
+
        * marked collections as WebDAV collections (v0.9.28)
 
 2004-10-06  Helge Hess  <helge.hess@opengroupware.org>
index 425389c836763d871b4798aed6c6e1dd2240c98d..b2104556fde3338f5392dabb1c0a8e02cde33b2a 100644 (file)
   return [[self mailManager] subfoldersForURL:[self imap4URL] 
                             password:[self imap4Password]];
 }
+- (NSArray *)toOneRelationshipKeys {
+  return [[self fetchUIDsMatchingQualifier:nil sortOrdering:@"DATE"]
+               valueForKey:@"stringValue"];
+}
 
 /* messages */
 
 - (NSArray *)fetchUIDsMatchingQualifier:(id)_q sortOrdering:(id)_so {
+  /* seems to return an NSArray of NSNumber's */
   return [[self mailManager] fetchUIDsInURL:[self imap4URL]
                             qualifier:_q sortOrdering:_so
                             password:[self imap4Password]];
index c3d17e0db4337b8f7d3342cf4761ddd8069e37ff..d6505d28f1c5e504b2e8d32c067453cd8b32d0d0 100644 (file)
@@ -55,6 +55,68 @@ static NSArray *coreInfoKeys = nil;
   return self;
 }
 
+/* part hierarchy */
+
+- (NSString *)keyExtensionForPart:(id)_partInfo {
+  NSString *mt, *st;
+  
+  if (_partInfo == nil)
+    return nil;
+  
+  mt = [_partInfo valueForKey:@"type"];
+  st = [[_partInfo valueForKey:@"subtype"] lowercaseString];
+  if ([mt isEqualToString:@"text"]) {
+    if ([st isEqualToString:@"plain"])
+      return @".txt";
+    if ([st isEqualToString:@"html"])
+      return @".html";
+  }
+  else if ([mt isEqualToString:@"image"])
+    return [@"." stringByAppendingString:st];
+  
+  return nil;
+}
+
+- (NSArray *)relationshipKeysWithParts:(BOOL)_withParts {
+  /* should return non-multipart children */
+  NSMutableArray *ma;
+  NSArray *parts;
+  unsigned i, count;
+  
+  parts = [[self bodyStructure] valueForKey:@"parts"];
+  if (![parts isNotNull]) 
+    return nil;
+  if ((count = [parts count]) == 0)
+    return nil;
+  
+  for (i = 0, ma = nil; i < count; i++) {
+    NSString *key, *ext;
+    id   part;
+    BOOL hasParts;
+    
+    part     = [parts objectAtIndex:i];
+    hasParts = [part valueForKey:@"parts"] != nil ? YES:NO;
+    if ((hasParts && !_withParts) || (_withParts && !hasParts))
+      continue;
+
+    if (ma == nil)
+      ma = [NSMutableArray arrayWithCapacity:count - i];
+    
+    ext = [self keyExtensionForPart:part];
+    key = [[NSString alloc] initWithFormat:@"%d%@", i, ext?ext:@""];
+    [ma addObject:key];
+    [key release];
+  }
+  return ma;
+}
+
+- (NSArray *)toOneRelationshipKeys {
+  return [self relationshipKeysWithParts:NO];
+}
+- (NSArray *)toManyRelationshipKeys {
+  return [self relationshipKeysWithParts:YES];
+}
+
 /* message */
 
 - (id)fetchParts:(NSArray *)_parts {
index 42d0a3b80cd7c5cbc793862161337200792359c1..3631f8fc66cdf21de4aff18dbdf3b1e05e3abf16 100644 (file)
@@ -1,3 +1,3 @@
 # $Id$
 
-SUBMINOR_VERSION:=28
+SUBMINOR_VERSION:=29
index 68f1da953cf7169d8287dd779ec1f66237e02b7b..eb38acfdcd0fc59a18a11bebd1a286c5697ec2fc 100644 (file)
@@ -1,8 +1,10 @@
 2004-10-08  Helge Hess  <helge.hess@opengroupware.org>
 
-       * v0.9.22
-
+       * SOGoObject.m: fixed not implemented return status (501, not 502)
+         (v0.9.23)
+       
        * SOGoUserFolder.m: do not try to fetch file names in this folder
+         (v0.9.22)
 
        * v0.9.21
 
index b18c9e3b669b1d551dee93f8a936fb835f403c4b..f7b1c080bdd427d875612409467213f1172b1bcf 100644 (file)
     if ([self respondsToSelector:@selector(contentAsString)])
       return [self contentAsString];
     
-    return [NSException exceptionWithHTTPStatus:502 /* not implemented */
+    return [NSException exceptionWithHTTPStatus:501 /* not implemented */
                        reason:@"no WebDAV GET support?!"];
   }
   
index 4bb2a0be763dcd54d6cb850623d69c8912c48f3d..134290ff530c4da43ceb43846968a5faf79fa51c 100644 (file)
@@ -1,3 +1,3 @@
 # $Id: Version 170 2004-08-11 10:45:40Z helge $
 
-SUBMINOR_VERSION:=22
+SUBMINOR_VERSION:=23