*/
#import <Foundation/NSArray.h>
+#import <Foundation/NSDictionary.h>
#import <SaxObjC/SaxAttributes.h>
#import <SaxObjC/SaxContentHandler.h>
#import <SaxObjC/SaxLexicalHandler.h>
BOOL inStyle;
BOOL inScript;
BOOL inCSSDeclaration;
+ BOOL hasEmbeddedCSS;
NSMutableArray *crumb;
}
inStyle = NO;
inScript = NO;
inCSSDeclaration = NO;
+ hasEmbeddedCSS = NO;
}
- (void) endDocument
showWhoWeAre();
}
-- (NSString *) _valueForCSSIdentifier: (NSString *) primaryValue
-{
- NSMutableString *value;
- NSEnumerator *classes;
- NSString *currentValue;
-
- value = [NSMutableString new];
- [value autorelease];
-
- classes = [[primaryValue componentsSeparatedByString: @" "] objectEnumerator];
- currentValue = [classes nextObject];
- while (currentValue)
- {
- [value appendFormat: @"SOGoHTMLMail-%@ ", currentValue];
- currentValue = [classes nextObject];
- }
-
- return value;
-}
-
- (void) _appendStyle: (unichar *) _chars
length: (int) _len
{
if (inCSSDeclaration)
{
if (*(char *) currentChar == '}')
- inCSSDeclaration = NO;
+ {
+ inCSSDeclaration = NO;
+ hasEmbeddedCSS = NO;
+ }
}
else
{
if (*(char *) currentChar == '{')
inCSSDeclaration = YES;
- else if (*(char *) currentChar == '.'
- || *(char *) currentChar == '#')
+ if (*(char *) currentChar == ',')
+ hasEmbeddedCSS = NO;
+ else if (!hasEmbeddedCSS)
{
- [css appendString: [NSString stringWithCharacters: start
- length: (currentChar - start + 1)]];
- [css appendString: @"SOGoHTMLMail-"];
- start = currentChar + 1;
+ if (*(char *) currentChar == '@')
+ hasEmbeddedCSS = YES;
+ else
+ if (*(char *) currentChar > 32)
+ {
+ [css appendString: [NSString stringWithCharacters: start
+ length: (currentChar - start)]];
+ [css appendString: @".SOGoHTMLMail-CSS-Delimiter "];
+ hasEmbeddedCSS = YES;
+ start = currentChar;
+ }
}
}
}
[css appendString: [NSString stringWithCharacters: start
- length: (currentChar - start + 1)]];
+ length: (currentChar - start)]];
}
- (void) startElement: (NSString *) _localName
{
skipAttribute = NO;
name = [_attributes nameAtIndex: count];
- if ([name caseInsensitiveCompare: @"class"] == NSOrderedSame
- || [name caseInsensitiveCompare: @"id"] == NSOrderedSame)
- value = [self _valueForCSSIdentifier: [_attributes valueAtIndex: count]];
- else if ([[name lowercaseString] hasPrefix: @"on"])
+ if ([[name lowercaseString] hasPrefix: @"on"])
skipAttribute = YES;
else if ([name caseInsensitiveCompare: @"src"] == NSOrderedSame)
{
NSMutableDictionary *attachmentIds;
UIxMailPartViewer *parent;
unsigned int count, max;
+ NSMutableString *url;
NSString *baseURL;
NSArray *parts;
isEqualToString: @"UIxMailPartAlternativeViewer"])
{
baseURL = [[self clientObject] baseURLInContext: context];
+ url = [NSMutableString new];
+ [url appendString: baseURL];
+ [url appendFormat: @"/%@", [partPath componentsJoinedByString: @"/"]];
+ [url deleteCharactersInRange: NSMakeRange([url length] - 3, 2)];
parts = [[parent bodyInfo] objectForKey: @"parts"];
max = [parts count];
for (count = 0; count < max; count++)
[self _convertReferencesForPart: [parts objectAtIndex: count]
withCount: count + 1
- andBaseURL: baseURL
+ andBaseURL: url
intoDictionary: attachmentIds];
+ [url release];
}
- NSLog(@"attc: '%@'", attachmentIds);
return attachmentIds;
}