mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-05-23 12:25:23 +00:00
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:
@@ -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
|
||||
|
||||
@@ -52,6 +52,9 @@
|
||||
|
||||
- (NSException *) postData: (NSData *) _data flags: (id) _flags;
|
||||
|
||||
- (void) markForExpunge;
|
||||
- (void) expungeLastMarkedFolder;
|
||||
|
||||
- (NSException *) expunge;
|
||||
|
||||
/* flags */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -112,6 +112,7 @@ extern NSString *SOGoWeekStartFirstFullWeek;
|
||||
- (NSArray *) allIdentities;
|
||||
- (NSDictionary *) primaryIdentity;
|
||||
- (NSString *) messageForwarding;
|
||||
- (NSString *) messageCheck;
|
||||
|
||||
/* folders */
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user