merge of '6233812eac33115667675d01081adb1fed7344fd'

and 'aca422868e377bcf123be4fcaa0a258238b473a6'

Monotone-Parent: 6233812eac33115667675d01081adb1fed7344fd
Monotone-Parent: aca422868e377bcf123be4fcaa0a258238b473a6
Monotone-Revision: c4d172fda57e0bd72cb109b117dbc93d996684f0

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2007-12-17T20:46:13
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2007-12-17 20:46:13 +00:00
12 changed files with 245 additions and 172 deletions
+2 -22
View File
@@ -19,6 +19,8 @@
02111-1307, USA.
*/
#import <SoObjects/Mailer/SOGoMailBodyPart.h>
#import "UIxMailPartViewer.h"
@interface UIxMailPartImageViewer : UIxMailPartViewer
@@ -29,26 +31,4 @@
@implementation UIxMailPartImageViewer
/* URLs */
- (NSString *) pathToImage
{
NSMutableString *url;
NSString *s;
s = [[self clientObject] baseURLInContext: [self context]];
url = [NSMutableString stringWithString: s];
if (![url hasSuffix: @"/"])
[url appendString: @"/"];
s = [[self partPath] componentsJoinedByString:@"/"];
[url appendString: s];
s = [self preferredPathExtension];
if (s)
[url appendFormat: @".%@", s];
return url;
}
@end /* UIxMailPartImageViewer */
+7 -1
View File
@@ -41,7 +41,11 @@
content.
*/
@class NSData, NSArray, NSFormatter;
@class NSArray;
@class NSData;
@class NSFormatter;
@class SOGoMailBodyPart;
@interface UIxMailPartViewer : UIxComponent
{
@@ -58,6 +62,8 @@
- (void)setBodyInfo:(id)_info;
- (id)bodyInfo;
- (SOGoMailBodyPart *) clientPart;
- (NSData *)flatContent;
- (NSData *)decodedFlatContent;
- (NSString *)flatContentAsString;
+42 -37
View File
@@ -134,29 +134,25 @@
return [self flatContent];
}
- (NSData *) content
- (SOGoMailBodyPart *) clientPart
{
NSData *content;
NSEnumerator *parts;
id currentObject;
NSString *currentPart;
content = nil;
NSEnumerator *parts;
currentObject = [self clientObject];
parts = [partPath objectEnumerator];
currentPart = [parts nextObject];
while (currentPart)
{
currentObject = [currentObject lookupName: currentPart
inContext: context
acquire: NO];
currentPart = [parts nextObject];
}
while ((currentPart = [parts nextObject]))
currentObject = [currentObject lookupName: currentPart
inContext: context
acquire: NO];
content = [currentObject fetchBLOB];
return currentObject;
}
return content;
- (NSData *) content
{
return [[self clientPart] fetchBLOB];
}
- (NSString *) flatContentAsString
@@ -323,32 +319,41 @@
return url;
}
- (NSString *) _filenameForAttachment: (SOGoMailBodyPart *) bodyPart
{
NSMutableString *filename;
NSString *extension;
filename = [NSMutableString stringWithString: [bodyPart filename]];
if (![filename length])
[filename appendFormat: @"%@-%@",
[self labelForKey: @"Untitled"],
[bodyPart nameInContainer]];
if (![[filename pathExtension] length])
{
extension = [self preferredPathExtension];
if (extension)
[filename appendFormat: @".%@", extension];
}
return [filename stringByEscapingURL];
}
- (NSString *) pathToAttachment
{
/* this generates a more beautiful 'download' URL for a part */
NSString *fn;
NSMutableString *url;
NSString *s;
SOGoMailBodyPart *bodyPart;
fn = [self filename];
if ([fn length] > 0)
{
/* get basic URL */
url = [NSMutableString stringWithString: [self pathToAttachmentObject]];
/*
If we have an attachment name, we attach it, this is properly handled by
SOGoMailBodyPart.
*/
if (![url hasSuffix: @"/"])
[url appendString: @"/"];
if (isdigit([url characterAtIndex: 0]))
[url appendString: @"fn-"];
[url appendString: [fn stringByEscapingURL]];
// TODO: should we check for a proper extension?
}
else
url = nil;
bodyPart = [self clientPart];
s = [bodyPart baseURLInContext: [self context]];
url = [NSMutableString stringWithString: s];
if (![url hasSuffix: @"/"])
[url appendString: @"/"];
// s = [[self partPath] componentsJoinedByString: @"/"];
[url appendString: [self _filenameForAttachment: bodyPart]];
return url;
}
+3 -3
View File
@@ -396,11 +396,11 @@ static NSArray *infoKeys = nil;
{
NSArray *a;
if (attachmentNames)
if (!attachmentNames)
{
a = [[self clientObject] fetchAttachmentNames];
a = [a sortedArrayUsingSelector: @selector (compare:)];
attachmentNames = [a copy];
ASSIGN (attachmentNames,
[a sortedArrayUsingSelector: @selector (compare:)]);
}
return attachmentNames;
@@ -3,7 +3,7 @@
xmlns="http://www.w3.org/1999/xhtml"
xmlns:var="http://www.skyrix.com/od/binding"
var:src="pathToImage"
var:src="pathToAttachment"
var:title="filenameForDisplay"
class="mailer_imagecontent"
></img>
+15 -15
View File
@@ -23,15 +23,15 @@
</div>
<form const:href="send" name="pageform" enctype="multipart/form-data">
<div id="attachmentsArea">
<var:string label:value="Attachments:" />
<ul id="attachments">
<var:foreach list="attachmentNames" item="attachmentName"
><li><img rsrc:src="attachment.gif"
/><var:string value="attachmentName"
/></li></var:foreach>
</ul>
</div>
<div id="attachmentsArea">
<var:string label:value="Attachments:" />
<ul id="attachments">
<var:foreach list="attachmentNames" item="attachmentName"
><li><img rsrc:src="attachment.gif"
/><var:string value="attachmentName"
/></li></var:foreach>
</ul>
</div>
<div id="headerArea">
<span class="headerField"><var:string label:value="From" />:</span>
<var:popup const:name="from"
@@ -47,12 +47,12 @@
><span class="headerField"><var:string label:value="Subject"
/>:</span
>
<input name="subject"
type="text"
class="textField"
var:value="subject"
/></div>
<!-- separator line --><hr/>
<input name="subject"
type="text"
class="textField"
var:value="subject"
/></div>
<!-- separator line --><hr/>
</div>
<textarea id="text" name="text" rows="30" var:value="text"/>
<!-- img rsrc:src="tbird_073_compose.png" alt="screenshot" / -->