diff --git a/ChangeLog b/ChangeLog index 711bd8747..f96850412 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-02-26 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + ([_UIxHTMLMailContentHandler -_appendStyle:_charslength:_len]): + don't prepend anything to the class and id named. Instead, we + make each style embedded in the ".SOGoHTMLMail-CSS-Delimiter" + class. + 2007-02-21 Wolfgang Sourdeau * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject diff --git a/UI/MailPartViewers/UIxMailPartHTMLViewer.m b/UI/MailPartViewers/UIxMailPartHTMLViewer.m index 4b926e1e1..5203d85e5 100644 --- a/UI/MailPartViewers/UIxMailPartHTMLViewer.m +++ b/UI/MailPartViewers/UIxMailPartHTMLViewer.m @@ -42,6 +42,7 @@ BOOL inStyle; BOOL inScript; BOOL inCSSDeclaration; + BOOL hasEmbeddedCSS; NSMutableArray *crumb; } @@ -107,6 +108,7 @@ inStyle = NO; inScript = NO; inCSSDeclaration = NO; + hasEmbeddedCSS = NO; } - (void) endDocument @@ -133,26 +135,6 @@ 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 { @@ -167,24 +149,35 @@ 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 @@ -215,10 +208,7 @@ { 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) { diff --git a/UI/Templates/MailPartViewers/UIxMailPartHTMLViewer.wox b/UI/Templates/MailPartViewers/UIxMailPartHTMLViewer.wox index bafb05470..ba3db2f03 100644 --- a/UI/Templates/MailPartViewers/UIxMailPartHTMLViewer.wox +++ b/UI/Templates/MailPartViewers/UIxMailPartHTMLViewer.wox @@ -5,5 +5,5 @@ xmlns:const="http://www.skyrix.com/od/constant" xmlns:rsrc="OGo:url" xmlns:label="OGo:label" - class="mailer_htmlcontent" + class="mailer_htmlcontent SOGoHTMLMail-CSS-Delimiter" >