merge of '286ef895fa5866cbba4e854f1db4225df88da0b5'

and '43873f327e4f2327b78f3b1c2f2c079cbe5f76d0'

Monotone-Parent: 286ef895fa5866cbba4e854f1db4225df88da0b5
Monotone-Parent: 43873f327e4f2327b78f3b1c2f2c079cbe5f76d0
Monotone-Revision: 4557d2116359d7e6bf6cc5b09aa5249747d99199

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2007-10-26T15:36:34
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2007-10-26 15:36:34 +00:00
14 changed files with 196 additions and 20 deletions
+26
View File
@@ -1,3 +1,29 @@
2007-10-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -messageCheckList])
([UIxPreferences -itemMessageCheckText])
([UIxPreferences -userMessageCheck])
([UIxPreferences -setUserMessageCheck:newMessageCheck]): new
methods for handling the retrieval of new messages automatically.
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -messageCheck]): new method
that returns the interval of time between automatic message
retrievals.
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
-defaultAction]): now expunges the last folder marked for expunge.
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
-trashInContext:_ctx]): now marks the container folder for
expunge.
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
-markForExpunge]): new method that marks the folder for the next
automatic expunge operation in the user settings.
([SOGoMailFolder -expungeLastMarkedFolder]): new methods that
takes the last folder marked for expunge, expunges it and removes
it from the user settings, if it exists.
2007-10-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
+3
View File
@@ -52,6 +52,9 @@
- (NSException *) postData: (NSData *) _data flags: (id) _flags;
- (void) markForExpunge;
- (void) expungeLastMarkedFolder;
- (NSException *) expunge;
/* flags */
+44
View File
@@ -19,9 +19,12 @@
02111-1307, USA.
*/
#import <Foundation/NSDictionary.h>
#import <Foundation/NSURL.h>
#import <Foundation/NSUserDefaults.h>
#import <NGObjWeb/NSException+HTTP.h>
#import <NGObjWeb/WOContext+SoObjects.h>
#import <NGExtensions/NSNull+misc.h>
#import <NGExtensions/NSURL+misc.h>
#import <NGExtensions/NSObject+Logs.h>
@@ -236,6 +239,47 @@ static NSString *defaultUserID = @"anyone";
return [[self imap4Connection] expungeAtURL: [self imap4URL]];
}
- (void) markForExpunge
{
NSUserDefaults *ud;
NSMutableDictionary *mailSettings;
ud = [[context activeUser] userSettings];
mailSettings = [ud objectForKey: @"Mail"];
if (!mailSettings)
{
mailSettings = [NSMutableDictionary dictionaryWithCapacity: 1];
[ud setObject: mailSettings forKey: @"Mail"];
}
[mailSettings setObject: [self imap4URLString] forKey: @"folderForExpunge"];
[ud synchronize];
}
- (void) expungeLastMarkedFolder
{
NSUserDefaults *ud;
NSMutableDictionary *mailSettings;
NSString *expungeURL;
NSURL *folderURL;
ud = [[context activeUser] userSettings];
mailSettings = [ud objectForKey: @"Mail"];
if (mailSettings)
{
expungeURL = [mailSettings objectForKey: @"folderForExpunge"];
if (expungeURL)
{
folderURL = [NSURL URLWithString: expungeURL];
if (![[self imap4Connection] expungeAtURL: folderURL])
{
[mailSettings removeObjectForKey: @"folderForExpunge"];
[ud synchronize];
}
}
}
}
/* flags */
- (NSException *) addFlagsToAllMessages: (id) _f
+3 -1
View File
@@ -874,7 +874,9 @@ static BOOL debugSoParts = NO;
error = [[self imap4Connection] markURLDeleted: [self imap4URL]];
if (error != nil) return error;
[container markForExpunge];
[self flushMailCaches];
return nil;
+1
View File
@@ -112,6 +112,7 @@ extern NSString *SOGoWeekStartFirstFullWeek;
- (NSArray *) allIdentities;
- (NSDictionary *) primaryIdentity;
- (NSString *) messageForwarding;
- (NSString *) messageCheck;
/* folders */
+12
View File
@@ -499,6 +499,18 @@ NSString *SOGoWeekStartFirstFullWeek = @"FirstFullWeek";
return messageForwarding;
}
- (NSString *) messageCheck
{
NSString *messageCheck;
messageCheck
= [[self userDefaults] stringForKey: @"MessageCheck"];
if (![messageCheck length])
messageCheck = @"manually";
return messageCheck;
}
/* folders */
// TODO: those methods should check whether the traversal stack in the context
+5 -1
View File
@@ -516,10 +516,13 @@ static int attachmentFlagSize = 8096;
{
WORequest *request;
NSString *specificMessage, *searchCriteria, *searchValue;
SOGoUserFolder *co;
request = [context request];
[[self clientObject] flushMailCaches];
co = [self clientObject];
[co flushMailCaches];
[co expungeLastMarkedFolder];
specificMessage = [request formValueForKey: @"pageforuid"];
searchCriteria = [request formValueForKey: @"search"];
@@ -532,6 +535,7 @@ static int attachmentFlagSize = 8096;
= ((specificMessage)
? [self firstMessageOfPageFor: [specificMessage intValue]]
: [[request formValueForKey:@"idx"] intValue]);
return self;
}
+9 -4
View File
@@ -24,6 +24,7 @@
#import <Foundation/NSCalendarDate.h>
#import <Foundation/NSDictionary.h>
#import <Foundation/NSURL.h>
#import <Foundation/NSTimeZone.h>
#import <Foundation/NSUserDefaults.h>
#import <Foundation/NSValue.h>
#import <NGObjWeb/WOCookie.h>
@@ -213,15 +214,19 @@ static NSString *defaultModule = nil;
[response setHeader: [container baseURLInContext: context]
forKey: @"location"];
auth = [[self clientObject] authenticatorInContext: context];
date = [NSCalendarDate calendarDate];
[date setTimeZone: [NSTimeZone timeZoneWithAbbreviation: @"GMT"]];
cookie = [WOCookie cookieWithName: [auth cookieNameInContext: context]
value: @"discard"];
[cookie setPath: @"/"];
date = [NSCalendarDate calendarDate];
[cookie setExpires: [date yesterday]];
[response addCookie: cookie];
[response setHeader: date forKey: @"Last-Modified"];
[response setHeader: @"no-store, no-cache, must-revalidate, max-age=0" forKey: @"Cache-Control"];
[response setHeader: [date rfc822DateString] forKey: @"Last-Modified"];
[response setHeader: @"no-store, no-cache, must-revalidate, max-age=0"
forKey: @"Cache-Control"];
[response setHeader: @"post-check=0, pre-check=0" forKey: @"Cache-Control"];
[response setHeader: @"no-cache" forKey: @"Pragma"];
@@ -68,6 +68,16 @@
"reminderTime_4800" = "2 days";
/* Mailer */
"Check for new mail:" = "Check for new mail:";
"messagecheck_manually" = "Manually";
"messagecheck_every_minute" = "Every minute";
"messagecheck_every_2_minutes" = "Every 2 minutes";
"messagecheck_every_5_minutes" = "Every 5 minutes";
"messagecheck_every_10_minutes" = "Every 10 minutes";
"messagecheck_every_20_minutes" = "Every 20 minutes";
"messagecheck_every_30_minutes" = "Every 30 minutes";
"messagecheck_once_per_hour" = "Once per hour";
"Forward messages:" = "Forward messages:";
"messageforward_inline" = "Inline";
"messageforward_attached" = "As Attachment";
@@ -65,6 +65,16 @@
"reminderTime_4800" = "2 journées";
/* Mailer */
"Check for new mail:" = "Vérifier l'arrivée de messages:";
"messagecheck_manually" = "Manuellement";
"messagecheck_every_minute" = "Chaque minute";
"messagecheck_every_2_minutes" = "Toutes les 2 minutes";
"messagecheck_every_5_minutes" = "Toutes les 5 minutes";
"messagecheck_every_10_minutes" = "Toutes les 10 minutes";
"messagecheck_every_20_minutes" = "Toutes les 20 minutes";
"messagecheck_every_30_minutes" = "Toutes les 30 minutes";
"messagecheck_once_per_hour" = "Une fois par heure";
"Forward messages:" = "Transérer les messages :";
"messageforward_inline" = "intégrés";
"messageforward_attached" = "en pièces jointes";
@@ -65,6 +65,16 @@
"reminderTime_4800" = "2 Tage";
/* Mailer */
"Check for new mail:" = "Check for new mail:";
"messagecheck_manually" = "Manually";
"messagecheck_every_minute" = "Every minute";
"messagecheck_every_2_minutes" = "Every 2 minutes";
"messagecheck_every_5_minutes" = "Every 5 minutes";
"messagecheck_every_10_minutes" = "Every 10 minutes";
"messagecheck_every_20_minutes" = "Every 20 minutes";
"messagecheck_every_30_minutes" = "Every 30 minutes";
"messagecheck_once_per_hour" = "Once per hour";
"Forward messages:" = "Nachrichten weiterleiten:";
"messageforward_inline" = "Eingebunden";
"messageforward_attached" = "Als Anhang";
+24
View File
@@ -421,6 +421,30 @@ static BOOL shouldDisplayPasswordChange = NO;
}
/* Mailer */
- (NSArray *) messageCheckList
{
return [NSArray arrayWithObjects: @"manually", @"every_minute",
@"every_2_minutes", @"every_5_minutes", @"every_10_minutes",
@"every_20_minutes", @"every_30_minutes", @"once_per_hour",
nil];
}
- (NSString *) itemMessageCheckText
{
return [self labelForKey:
[NSString stringWithFormat: @"messagecheck_%@", item]];
}
- (NSString *) userMessageCheck
{
return [user messageCheck];
}
- (void) setUserMessageCheck: (NSString *) newMessageCheck
{
[userDefaults setObject: newMessageCheck forKey: @"MessageCheck"];
}
- (NSArray *) messageForwardingList
{
return [NSArray arrayWithObjects: @"inline", @"attached", nil];
+16 -14
View File
@@ -25,8 +25,8 @@
</ul>
<div id="generalView" class="tab">
<label><var:string label:value="Current Time Zone :"/>
<var:popup list="timeZonesList" item="item"
string="item" selection="userTimeZone" /></label><br/>
<var:popup list="timeZonesList" item="item"
string="item" selection="userTimeZone" /></label><br/>
<br/>
<div id="dateTimeFormat">
<label><var:string label:value="Short Date Format :"/>
@@ -58,7 +58,7 @@
/></label><br/>
<label><var:string label:value="First week of year :"/>
<var:popup list="firstWeekList" item="item"
string="itemFirstWeekText" selection="userFirstWeek"
string="itemFirstWeekText" selection="userFirstWeek"
/></label><br/>
<br/>
<label><input class="checkBox"
@@ -74,23 +74,25 @@
string="itemReminderTimeText" selection="userReminderTime"/></label>
</div>
<div id="mailOptionsView" class="tab">
<label><var:string label:value="Check for new mail:"/>
<var:popup list="messageCheckList" item="item"
string="itemMessageCheckText" selection="userMessageCheck"/></label><br/>
<label><var:string label:value="Forward messages:"/>
<var:popup list="messageForwardingList" item="item"
string="itemMessageForwardingText" selection="userMessageForwarding"/></label><br/>
<!-- <label><input
const:name="inTheOffice" type="radio" const:value="YES"
var:selection="inTheOffice"/>
<var:string label:value="I'm currently in the office"/></label><br/>
<label><input
const:name="inTheOffice" type="radio" const:value="YES"
var:selection="inTheOffice"/>
<var:string label:value="I'm currently in the office"/></label><br/>
<label><input
const:name="inTheOffice" type="radio" const:value="NO"
var:selection="inTheOffice"/>
<var:string label:value="I'm currently out of the office"/></label><br/>
const:name="inTheOffice" type="radio" const:value="NO"
var:selection="inTheOffice"/>
<var:string label:value="I'm currently out of the office"/></label><br/>
<br/>
<div id="outOfOfficeMessage">
<label><var:string label:value="AutoReply only once to each sender with the following text :"/><br/>
<textarea const:name="autoReplyText" var:value="autoReplyText"/>
</label>
</div>
<label><var:string label:value="AutoReply only once to each sender with the following text :"/><br/>
<textarea const:name="autoReplyText" var:value="autoReplyText"/>
</label> -->
</div>
<var:if condition="shouldDisplayPasswordChange">
<div id="passwordView" class="tab">
+23
View File
@@ -18,6 +18,8 @@ var pageContent;
var deleteMessageRequestCount = 0;
var messageCheckTimer;
/* mail list */
function openMessageWindow(msguid, url) {
@@ -1106,9 +1108,30 @@ function initMailer(event) {
if (!document.body.hasClassName("popup")) {
// initDnd();
initMailboxTree();
initMessageCheckTimer();
}
}
function initMessageCheckTimer() {
var messageCheck = userDefaults["MessageCheck"];
if (messageCheck && messageCheck != "manually") {
var interval;
if (messageCheck == "once_per_hour")
interval = 3600;
else if (messageCheck == "every_minute")
interval = 60;
else {
interval = parseInt(messageCheck.substr(6)) * 60;
}
messageCheckTimer = window.setInterval(onMessageCheckCallback,
interval * 1000);
}
}
function onMessageCheckCallback(event) {
refreshMailbox();
}
function initMailboxTree() {
mailboxTree = new dTree("mailboxTree");
mailboxTree.config.folderLinks = true;