]> err.no Git - scalable-opengroupware.org/commitdiff
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1312 d1b88da0-ebda-0310...
authorwolfgang <wolfgang@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Thu, 20 Dec 2007 21:59:45 +0000 (21:59 +0000)
committerwolfgang <wolfgang@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Thu, 20 Dec 2007 21:59:45 +0000 (21:59 +0000)
ChangeLog
SOPE/NGCards/ChangeLog
SOPE/NGCards/NGCardsSaxHandler.m
SOPE/NGCards/NSString+NGCards.h
SOPE/NGCards/NSString+NGCards.m
SoObjects/SOGo/SOGoContentObject.m
UI/Contacts/UIxContactEditor.m
UI/Scheduler/UIxComponentEditor.m
UI/WebServerResources/MailerUI.css

index 2e2565e9337ec97b1c9ee28a53304e957015afe6..cefc413c399fb39bbb37a721605cb3dc472de01d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-12-20  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
+       -aclsForUser:uid]): removed useless ACL checks on the current
+       object to reduce DB usage.
+
 2007-12-17  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
 
        * UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -attachmentNames]):
index 5e6348e4f8523e74bd05e1530a3a8bfd76336ace..15921e0c0b0a92c3a108557c201253024b512580 100644 (file)
@@ -1,3 +1,10 @@
+2007-12-20  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * NSString+NGCards.m ([NSString
+       -componentsWithSafeSeparator:separator]): new method that
+       separated the elements of a string into an array while avoiding
+       escaped instances of the separator passed as parameter.
+
 2007-12-12  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
 
        * iCalTimeZone.m ([iCalTimeZone -periodForDate:date]): at least
index dd939c179b64da42498ae0d0783a28f5de059a3e..f010973947ffd6510731f80e84c654ccc25f8af5 100644 (file)
       free (content);
       content = NULL;
 //       NSLog (@"content: '%@'", s);
-      contentValues = [s componentsSeparatedByString: @";"];
+      contentValues = [s componentsWithSafeSeparator: ';'];
     }
   else
     contentValues = nil;
       else
         {
           /* increase content */
-          content = 
+          content =
             realloc (content, (contentLength + _len+2) * sizeof(unichar));
           memcpy (&(content[contentLength]), _chars, 
                   (_len * sizeof(unichar)));
index 0311ab6be12ad7a958b28541d9ee1230fa2f9e12..b0ccf2d861c3bc4c985e2af04a0bdb0538fddfe8 100644 (file)
@@ -25,6 +25,7 @@
 
 #import <Foundation/NSString.h>
 
+@class NSArray;
 @class NSCalendarDate;
 @class NSTimeZone;
 
@@ -39,7 +40,7 @@
 - (NSCalendarDate *) asCalendarDate;
 - (BOOL) isAllDayDate;
 
-- (NSArray *) commaSeparatedValues;
+- (NSArray *) componentsWithSafeSeparator: (unichar) separator;
 
 @end
 
index 2076e63b1842723841980f95367bbd35a557f48d..2c96e2bdca55043f56e5d7463446994e0c7381f3 100644 (file)
@@ -261,26 +261,50 @@ static NSString *commaSeparator = nil;
   return ([self length] == 8);
 }
 
-- (NSArray *) commaSeparatedValues
+- (NSArray *) componentsWithSafeSeparator: (unichar) separator
 {
-  NSEnumerator *rawValues;
-  NSMutableArray *values;
-  NSString *currentValue, *newValue;
+  NSMutableArray *components;
+  NSRange currentRange;
+  unichar *stringBuffer;
+  unichar currentChar;
+  unsigned int count, length;
+  BOOL escaped;
 
-  values = [NSMutableArray new];
-  [values autorelease];
+  components = [NSMutableArray array];
+
+  length = [self length];
+  stringBuffer = malloc (sizeof (unichar) * length);
+  [self getCharacters: stringBuffer];
 
-  rawValues = [[self componentsSeparatedByString: @","] objectEnumerator];
-  currentValue = [rawValues nextObject];
-  while (currentValue)
+  currentRange = NSMakeRange(0, 0);
+  escaped = NO;
+  count = 0;
+  while (count < length)
     {
-      newValue = [currentValue stringByTrimmingSpaces];
-      if ([newValue length])
-        [values addObject: newValue];
-      currentValue = [rawValues nextObject];
+      if (escaped)
+       currentRange.length++;
+      else
+       {
+         currentChar = *(stringBuffer + count);
+         if (currentChar == '\\')
+           escaped = YES;
+         else if (currentChar == separator)
+           {
+             [components
+               addObject: [self substringWithRange: currentRange]];
+             currentRange = NSMakeRange (count + 1, 0);
+           }
+         else
+           currentRange.length++;
+       }
+      count++;
     }
+  [components
+    addObject: [self substringWithRange: currentRange]];
 
-  return values;
+  free (stringBuffer);
+
+  return components;
 }
 
 @end
index 73cc1401e1c322474d0dee8ebeb726663716419c..9665eda90ef1b5a98f1d8cc53d694160b7adea69 100644 (file)
   NSArray *ownAcls, *containerAcls;
 
   acls = [NSMutableArray array];
-  ownAcls = [container aclsForUser: uid
-                      forObjectAtPath: [self pathArrayToSOGoObject]];
-  [acls addObjectsFromArray: ownAcls];
+  /* this is unused... */
+//   ownAcls = [container aclsForUser: uid
+//                    forObjectAtPath: [self pathArrayToSOGoObject]];
+//   [acls addObjectsFromArray: ownAcls];
   containerAcls = [container aclsForUser: uid];
   if ([containerAcls count] > 0)
     {
index 7181f47a6d01575be6297a5d8f14ff385065455e..754b6ea7887d22fe1fb3502c8141e306017a9809 100644 (file)
@@ -50,7 +50,7 @@
 
 - (void) dealloc
 {
-  [snapshot      release];
+  [snapshot release];
   [preferredEmail release];
   [super dealloc];
 }
 
 /* load/store content format */
 
-- (void) _fixupSnapshot
-{
-  // TODO: perform sanity checking, eg build CN on demand
-  NSString *cn, *gn, *sn;
-  
-  cn = [snapshot objectForKey: @"cn"];
-  gn = [snapshot objectForKey: @"givenName"];
-  sn = [snapshot objectForKey: @"sn"];
-  
-  if (![sn isNotNull] || [sn length] == 0)
-    sn = nil;
-  if (![cn isNotNull] || [cn length] == 0)
-    cn = nil;
-  
-  if (sn == nil) {
-    if (cn == nil)
-      sn = @"[noname]";
-    else {
-      // TODO: need a better name parser here
-      NSRange r;
-      
-      r = [cn rangeOfString: @" "];
-      sn = (r.length > 0)
-       ? [cn substringFromIndex:(r.location + r.length)]
-       : cn;
-    }
-    [snapshot setObject:sn forKey: @"sn"];
-  }
-  if (sn == nil && gn == nil)
-    cn = @"[noname]";
-  else if (sn == nil)
-    cn = gn;
-  else if (gn == nil)
-    cn = sn;
-  else
-    cn = [[gn stringByAppendingString: @" "] stringByAppendingString:sn];
-  [snapshot setObject:cn forKey: @"cn"];
-}
+// - (void) _fixupSnapshot
+// {
+//   NSString *currentKey, *currentString;
+//   NSMutableString *newString;
+//   NSArray *keys;
+//   unsigned int count, max;
+
+//   keys = [snapshot allKeys];
+//   max = [keys count];
+//   for (count = 0; count < max; count++)
+//     {
+//       currentKey = [keys objectAtIndex: count];
+//       currentString = [snapshot objectForKey: currentKey];
+//       newString = [currentString mutableCopy];
+//       [newString autorelease];
+//       [newString replaceString: @";" withString: @"\\;"];
+//       if (![newString isEqualToString: currentString])
+//     [snapshot setObject: newString forKey: currentKey];
+//     }
+// }
 
 /* helper */
 
   card = [contact vCard];
   if (card)
     {
+//       [self _fixupSnapshot];
       [self _saveSnapshot];
       [contact save];
 
index aa756c844cd1050c75dd8e7fee8a464ce8ede524..40a77b11b12033289b9b7ec987d60a3b02f69a5d 100644 (file)
          ASSIGN (privacy, [component accessClass]);
          ASSIGN (priority, [component priority]);
          ASSIGN (status, [component status]);
-         ASSIGN (categories, [[component categories] commaSeparatedValues]);
+         ASSIGN (categories,
+                 [[component categories] componentsWithSafeSeparator: ',']);
          ASSIGN (organizer, [component organizer]);
          [self _loadCategories];
          [self _loadAttendees];
index c19f0004de91dba655ed862e9de6d2e51b73c7b0..be7fca9bc4c6bdf6aa4651e6a887e1f6fb003d01 100644 (file)
@@ -540,7 +540,7 @@ TABLE#messageList
 
 TABLE#messageList TD,
 TABLE#messageList TH
-{ height: 1.2em;
+{ height: 20px;
   overflow: hidden;
   white-space: nowrap; }
 
@@ -552,6 +552,10 @@ TABLE#messageList TD.messageFlagColumn
 { width: 22px;
   text-align: center; }
 
+TABLE#messageList TD.messageFlagColumn IMG
+{ width: 14px;
+  height: 14px; }
+
 TD#subjectHeader,
 TABLE#messageList TD.tbtv_subject_headercell,
 TABLE#messageList TD.mailer_unreadmailsubject,