mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-06-24 19:34:17 +00:00
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:
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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" / -->
|
||||
|
||||
Reference in New Issue
Block a user