]> err.no Git - scalable-opengroupware.org/commitdiff
added special ical/vcard part subclasses
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Fri, 15 Jul 2005 14:26:17 +0000 (14:26 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Fri, 15 Jul 2005 14:26:17 +0000 (14:26 +0000)
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@778 d1b88da0-ebda-0310-925b-ed51d893ca5b

SOGo/SoObjects/Mailer/ChangeLog
SOGo/SoObjects/Mailer/GNUmakefile
SOGo/SoObjects/Mailer/SOGoCalendarMailBodyPart.m [new file with mode: 0644]
SOGo/SoObjects/Mailer/SOGoMailBodyPart.m
SOGo/SoObjects/Mailer/SOGoMailFolder.m
SOGo/SoObjects/Mailer/SOGoMailObject.m
SOGo/SoObjects/Mailer/SOGoVCardMailBodyPart.m [new file with mode: 0644]
SOGo/SoObjects/Mailer/Version
SOGo/SoObjects/Mailer/product.plist

index 58cda7475de9daa8d118689d41501137edc45430..2e7ab97ff4290b73773288e211d5823619946e1c 100644 (file)
@@ -1,14 +1,22 @@
 2005-07-15  Helge Hess  <helge.hess@opengroupware.org>
 
-       * SOGoMailFolder.m: fixed a stupid bug in permission parsing (v0.9.106)
+       * v0.9.107
 
-2005-07-15  Helge Hess  <helge.hess@opengroupware.org>
+       * SOGoMailBodyPart.m: check lookup key path extension to determine the
+         part subclass to instantiate (note: the link generator in the UI
+         must generate proper links including the extension to make this work)
+
+       * added special part subclasses SOGoVCardMailBodyPart and
+         SOGoCalendarMailBodyPart
+
+       * SOGoMailObject.m: map vcf extension to vcard mime type, added some
+         debug logging
+
+       * SOGoMailFolder.m: fixed a stupid bug in permission parsing (v0.9.106)
 
        * SOGoMailFolder.m: added support for more Cyrus permission flags
          (v0.9.105)
 
-2005-07-15  Helge Hess  <helge.hess@opengroupware.org>
-
        * SOGoMailObject.m, SOGoMailBodyPart.m, SOGoDraftObject.m: fixed gcc4.0
          warnings (v0.9.104)
 
index 916836d129002cf026192a12f6cb0b041582ef11..cdb90d47c3050e1312e65cf71761798ab65b4ec4 100644 (file)
@@ -24,6 +24,8 @@ Mailer_OBJC_FILES += \
        SOGoMailBodyPart.m              \
        SOGoImageMailBodyPart.m         \
        SOGoMessageMailBodyPart.m       \
+       SOGoCalendarMailBodyPart.m      \
+       SOGoVCardMailBodyPart.m         \
        \
        SOGoDraftsFolder.m              \
        SOGoDraftObject.m               \
diff --git a/SOGo/SoObjects/Mailer/SOGoCalendarMailBodyPart.m b/SOGo/SoObjects/Mailer/SOGoCalendarMailBodyPart.m
new file mode 100644 (file)
index 0000000..50d0a28
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+  Copyright (C) 2005 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.
+*/
+
+#include <Mailer/SOGoMailBodyPart.h>
+
+/*
+  SOGoCalendarMailBodyPart
+  
+  A specialized SOGoMailBodyPart subclass for text/calendar attachments. Can
+  be used to attach special SoMethods.
+  
+  See the superclass for more information on part objects.
+*/
+
+@interface SOGoCalendarMailBodyPart : SOGoMailBodyPart
+{
+}
+
+@end
+
+#include "common.h"
+
+@implementation SOGoCalendarMailBodyPart
+@end /* SOGoCalendarMailBodyPart */
index 286d59252bbcd66a41b14e7665c6069a133f6224..b9884fb5d6e78f9f4ae804603fbd985e13aa68de 100644 (file)
@@ -130,7 +130,8 @@ static BOOL debugOn = NO;
     return self;
   
   /* return 404 to stop acquisition */
-  return [NSException exceptionWithHTTPStatus:404 /* Not Found */];
+  return [NSException exceptionWithHTTPStatus:404 /* Not Found */
+                     reason:@"Did not find a subpart for the given name!"];
 }
 
 /* fetch */
@@ -265,12 +266,19 @@ static BOOL debugOn = NO;
        [pe isEqualToString:@"png"] ||
        [pe isEqualToString:@"jpg"])
       return NSClassFromString(@"SOGoImageMailBodyPart");
+    if ([pe isEqualToString:@"ics"])
+      return NSClassFromString(@"SOGoCalendarMailBodyPart");
+    if ([pe isEqualToString:@"vcf"])
+      return NSClassFromString(@"SOGoVCardMailBodyPart");
+    break;
   case 4:
     if ([pe isEqualToString:@"mail"])
       return NSClassFromString(@"SOGoMessageMailBodyPart");
+    break;
   default:
     return self;
   }
+  return self;
 }
 
 /* debugging */
index 38e4de4ea5ccb71845779716cae1543f246b8632..c8009fefe09841fba3bfc176d509137b193de1a9 100644 (file)
     return;
   }
   
+  // [self logWithFormat:@"GOT PERM: %@", rights];
+  
   self->somfFlags.didCheckMyRights = 1;
   
   /* reset flags */
index 47832c8ae2dcbde129298cb42de626e3d6b49cff..6cbfc51a67695f7b280b2b77c47cc29941135f28 100644 (file)
 @implementation SOGoMailObject
 
 static NSArray *coreInfoKeys = nil;
-static BOOL heavyDebug = NO;
-static BOOL debugOn = NO;
+static BOOL heavyDebug         = NO;
+static BOOL debugOn            = NO;
 static BOOL debugBodyStructure = NO;
+static BOOL debugSoParts       = NO;
 
 + (void)initialize {
   /* Note: see SOGoMailManager.m for allowed IMAP4 keys */
@@ -73,12 +74,10 @@ static BOOL debugBodyStructure = NO;
   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";
-    if ([st isEqualToString:@"calendar"])
-      return @".ics";
+    if ([st isEqualToString:@"plain"])    return @".txt";
+    if ([st isEqualToString:@"html"])     return @".html";
+    if ([st isEqualToString:@"calendar"]) return @".ics";
+    if ([st isEqualToString:@"x-vcard"])  return @".vcf";
   }
   else if ([mt isEqualToString:@"image"])
     return [@"." stringByAppendingString:st];
@@ -542,12 +541,16 @@ static BOOL debugBodyStructure = NO;
   /* lookup body part */
   
   if ([self isBodyPartKey:_key inContext:_ctx]) {
-    if ((obj = [self lookupImap4BodyPartKey:_key inContext:_ctx]) != nil)
+    if ((obj = [self lookupImap4BodyPartKey:_key inContext:_ctx]) != nil) {
+      if (debugSoParts) 
+       [self logWithFormat:@"mail looked up part %@: %@", _key, obj];
       return obj;
+    }
   }
   
   /* return 404 to stop acquisition */
-  return [NSException exceptionWithHTTPStatus:404 /* Not Found */];
+  return [NSException exceptionWithHTTPStatus:404 /* Not Found */
+                     reason:@"Did not find mail method or part-reference!"];
 }
 
 /* WebDAV */
diff --git a/SOGo/SoObjects/Mailer/SOGoVCardMailBodyPart.m b/SOGo/SoObjects/Mailer/SOGoVCardMailBodyPart.m
new file mode 100644 (file)
index 0000000..8dabfc8
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+  Copyright (C) 2005 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.
+*/
+
+#include <Mailer/SOGoMailBodyPart.h>
+
+/*
+  SOGoVCardMailBodyPart
+  
+  A specialized SOGoMailBodyPart subclass for text/x-vcard attachments. Can
+  be used to attach special SoMethods.
+  
+  See the superclass for more information on part objects.
+*/
+
+@interface SOGoVCardMailBodyPart : SOGoMailBodyPart
+{
+}
+
+@end
+
+#include "common.h"
+
+@implementation SOGoVCardMailBodyPart
+@end /* SOGoVCardMailBodyPart */
index ab4f68146e145f2287e6766d14bda932ac626fcd..db945487d01d238b4f62098cc8cff6b5c6de132d 100644 (file)
@@ -1,6 +1,6 @@
 # Version file
 
-SUBMINOR_VERSION:=106
+SUBMINOR_VERSION:=107
 
 # v0.9.96 requires libNGMime       v4.5.223
 # v0.9.91 requires libNGMime       v4.5.222
index 1171c1ae19cc30d5917e64f36ab02877fcd897d2..31eacb15ba928b198d6e34af0d2aa6a0ab71a59f 100644 (file)
     SOGoImageMailBodyPart = {
       superclass    = "SOGoMailBodyPart";
     };
+    SOGoMessageMailBodyPart = {
+      superclass    = "SOGoMailBodyPart";
+    };
+    SOGoCalendarMailBodyPart = {
+      superclass    = "SOGoMailBodyPart";
+    };
+    SOGoVCardMailBodyPart = {
+      superclass    = "SOGoMailBodyPart";
+    };
 
     SOGoDraftsFolder = {
       superclass    = "SOGoMailBaseObject";