From 1eb4cc93ce4fc1fad0884b4799a2f5fcbc9850a3 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 4 Nov 2010 18:08:06 +0000 Subject: [PATCH 01/11] Fix for bug #459 Monotone-Parent: e0e6c176d8cb78a7e264cc9d2f05c2cf5bfb77f5 Monotone-Revision: c8d3bf05ef46d0c8d36879db7366c665f4dacd3d Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2010-11-04T18:08:06 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/UIxAttendeesEditor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UI/WebServerResources/UIxAttendeesEditor.js b/UI/WebServerResources/UIxAttendeesEditor.js index 5d27dbce4..709377310 100644 --- a/UI/WebServerResources/UIxAttendeesEditor.js +++ b/UI/WebServerResources/UIxAttendeesEditor.js @@ -180,7 +180,7 @@ function performSearch(input) { if (input.value.trim().length > 0) { var urlstr = (UserFolderURL + "Contacts/allContactSearch?excludeGroups=1&search=" - + escape(input.value)); + + encodeURIComponent(input.value)); triggerAjaxRequest(urlstr, performSearchCallback, input); } input.searchTimeout = null; From dd099c9eca5d5b56212f3d855db0755e788f422b Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 4 Nov 2010 18:34:51 +0000 Subject: [PATCH 02/11] Fix for bug #803 Monotone-Parent: c8d3bf05ef46d0c8d36879db7366c665f4dacd3d Monotone-Revision: 303b1e781872f11eb1260c7f21d6ad5e73b55be7 Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2010-11-04T18:34:51 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 ++++++ SoObjects/SOGo/SOGoMailer.m | 22 ++++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index c295a459e..d2e138db7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2010-11-04 Ludovic Marcotte + + SoObjects/SOGo/SOGoMailer.m + We stop when we see an invalid recipient and we inform the + client back with what are the invalid recipients + 2010-11-04 Wolfgang Sourdeau * Tools/SOGoSockDOperation.m (_getFolderWithId:forUser:): invoke diff --git a/SoObjects/SOGo/SOGoMailer.m b/SoObjects/SOGo/SOGoMailer.m index 13cd16398..44cdffdb6 100644 --- a/SoObjects/SOGo/SOGoMailer.m +++ b/SoObjects/SOGo/SOGoMailer.m @@ -1,6 +1,6 @@ /* SOGoMailer.m - this file is part of SOGo * - * Copyright (C) 2007-2009 Inverse inc. + * Copyright (C) 2007-2010 Inverse inc. * * Author: Wolfgang Sourdeau * @@ -96,12 +96,9 @@ - (NSException *) _sendMailData: (NSData *) mailData withClient: (NGSmtpClient *) client - andRejections: (unsigned int) toErrors { NSException *result; - if (toErrors > 0) - [self logWithFormat: @"sending email despite address rejections"]; if ([client sendData: mailData]) result = nil; else @@ -118,12 +115,13 @@ { NGInternetSocketAddress *addr; NSString *currentTo, *host; + NSMutableArray *toErrors; NSEnumerator *addresses; NGSmtpClient *client; NSException *result; NSRange r; - unsigned int toErrors, port; + unsigned int port; client = [NGSmtpClient smtpClient]; host = smtpServer; @@ -145,7 +143,7 @@ { if ([client mailFrom: sender]) { - toErrors = 0; + toErrors = [NSMutableArray array]; addresses = [recipients objectEnumerator]; currentTo = [addresses nextObject]; while (currentTo) @@ -153,17 +151,21 @@ if (![client recipientTo: [currentTo pureEMailAddress]]) { [self logWithFormat: @"error with recipient '%@'", currentTo]; - toErrors++; + [toErrors addObject: [currentTo pureEMailAddress]]; } currentTo = [addresses nextObject]; } - if (toErrors == [recipients count]) + if ([toErrors count] == [recipients count]) result = [NSException exceptionWithHTTPStatus: 500 reason: @"cannot send message:" @" (smtp) all recipients discarded"]; + else if ([toErrors count] > 0) + result = [NSException exceptionWithHTTPStatus: 500 + reason: [NSString stringWithFormat: + @"cannot send message (smtp) - recipients discarded:\n%@", + [toErrors componentsJoinedByString: @", "]]]; else - result = [self _sendMailData: mailData withClient: client - andRejections: toErrors]; + result = [self _sendMailData: mailData withClient: client]; } else result = [NSException exceptionWithHTTPStatus: 500 From 0aaee17d2b1961b009f03893e8ead289024b2689 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Fri, 5 Nov 2010 21:29:08 +0000 Subject: [PATCH 03/11] Monotone-Parent: 303b1e781872f11eb1260c7f21d6ad5e73b55be7 Monotone-Revision: bb6767d882b80a6dcb30d6487153b189ee367d0d Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2010-11-05T21:29:08 Monotone-Branch: ca.inverse.sogo --- UI/MailerUI/product.plist | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/UI/MailerUI/product.plist b/UI/MailerUI/product.plist index 4c91aa418..45fa5e6f9 100644 --- a/UI/MailerUI/product.plist +++ b/UI/MailerUI/product.plist @@ -79,17 +79,17 @@ methods = { getMail = { protectedBy = "View"; - actionClass = "UIxMailListActions"; + actionClass = "UIxMailListActions"; actionName = "getMail"; }; uids = { protectedBy = ""; - actionClass = "UIxMailListActions"; + actionClass = "UIxMailListActions"; actionName = "getSortedUIDs"; }; headers = { protectedBy = ""; - actionClass = "UIxMailListActions"; + actionClass = "UIxMailListActions"; actionName = "getHeaders"; }; subscribe = { From 30c268412e7cf85de594a3d5189c5b510a412828 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Fri, 5 Nov 2010 21:32:00 +0000 Subject: [PATCH 04/11] See Changelog Monotone-Parent: bb6767d882b80a6dcb30d6487153b189ee367d0d Monotone-Revision: 58cf6fbba1f009a9bedc373454f61ed082ccfae0 Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2010-11-05T21:32:00 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 21 +++++++++++++++++ UI/MailerUI/UIxMailListActions.m | 16 +++++++++---- UI/WebServerResources/SOGoDataTable.js | 25 ++++++++++++--------- UI/WebServerResources/SOGoMailDataSource.js | 19 ++++++++++------ 4 files changed, 60 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index d2e138db7..d12a14ada 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,24 @@ +2010-11-05 Francis Lachapelle + + * UI/MailerUI/UIxMailListActions.m (-getSortedUIDsAction): now + accepts the form parameter "no_headers" so only the UIDs are + returned, without the prefetched headers. + + * UI/WebServerResources/SOGoMailDataSource.js (init): made the + headers argument optional. + (_loadCallback): handled the case when the server doesn't send the + prefetched headers. + + * UI/WebServerResources/SOGoDataTable.js (_refresh): new method to + force the refresh of the data table with the data of the data source. + (remove): don't update the internal variables (index and count) if + the UID was not found in the data source. + + * UI/WebServerResources/MailerUI.js (openMailbox): when reloading + a mailbox, only fetch the messages UIDs (without the headers). + (loadMessageCallback): only reload the headers if the seen state + has changed. + 2010-11-04 Ludovic Marcotte SoObjects/SOGo/SOGoMailer.m diff --git a/UI/MailerUI/UIxMailListActions.m b/UI/MailerUI/UIxMailListActions.m index 834d82337..e43e3e065 100644 --- a/UI/MailerUI/UIxMailListActions.m +++ b/UI/MailerUI/UIxMailListActions.m @@ -558,17 +558,25 @@ - (id ) getSortedUIDsAction { - NSDictionary *data; + id data; + NSString *noHeaders; SOGoMailFolder *folder; + WORequest *request; WOResponse *response; + request = [context request]; response = [context response]; - folder = [self clientObject]; - data = [self getUIDsAndHeadersInFolder: folder]; [response setHeader: @"text/plain; charset=utf-8" forKey: @"content-type"]; + folder = [self clientObject]; + noHeaders = [request formValueForKey: @"no_headers"]; + if ([noHeaders length]) + data = [self getSortedUIDsInFolder: folder]; + else + data = [self getUIDsAndHeadersInFolder: folder]; + [response appendContentString: [data jsonRepresentation]]; - + return response; } diff --git a/UI/WebServerResources/SOGoDataTable.js b/UI/WebServerResources/SOGoDataTable.js index a28edb566..3d3f53def 100644 --- a/UI/WebServerResources/SOGoDataTable.js +++ b/UI/WebServerResources/SOGoDataTable.js @@ -159,6 +159,7 @@ var SOGoDataTableInterface = { count = end - start; this.currentRenderID = index + "-" + count; + // Query the data source only if at least one row is not loaded if (refresh === true || this.renderedIndex < 0 || @@ -168,12 +169,16 @@ var SOGoDataTableInterface = { this.dataSource.getData(this.currentRenderID, index, count, - this._render.bind(this), + (refresh === true)?this._refresh.bind(this):this._render.bind(this), this.renderDelay); } }, - _render: function(renderID, start, max, data) { + _refresh: function(renderID, start, max, data) { + this._render(renderID, start, max, data, true); + }, + + _render: function(renderID, start, max, data, refresh) { if (this.currentRenderID != renderID) { // log ("DataTable._render() ignore render for " + renderID + " (current is " + this.currentRenderID + ")"); return; @@ -201,17 +206,16 @@ var SOGoDataTableInterface = { this.renderedCount = 0; } - if (start > (this.renderedIndex + this.renderedCount) || + if (refresh === true || + start > (this.renderedIndex + this.renderedCount) || start + data.length < this.renderedIndex) { // No reusable row in the viewport; // refresh the complete view port - for (i = 0, j = start; i < this.renderedCount && i < data.length; i++, j++) { // Render all existing rows with new data var row = rows[i+1]; // must skip the first row (this.rowTop) - row.removeClassName('_selected'); this.rowRenderCallback(row, data[i], false); } @@ -314,11 +318,12 @@ var SOGoDataTableInterface = { } var index = this.dataSource.remove(uid); // log ("DataTable.remove(" + uid + ") at index " + index); - if (this.renderedIndex > index) - this.renderedIndex--; - else if ((this.renderedIndex + this.renderedCount) > index) - this.renderedCount--; - + if (index >= 0) { + if (this.renderedIndex > index) + this.renderedIndex--; + else if ((this.renderedIndex + this.renderedCount) > index) + this.renderedCount--; + } return index; }, diff --git a/UI/WebServerResources/SOGoMailDataSource.js b/UI/WebServerResources/SOGoMailDataSource.js index 8f32cb40d..daa5366f0 100644 --- a/UI/WebServerResources/SOGoMailDataSource.js +++ b/UI/WebServerResources/SOGoMailDataSource.js @@ -45,12 +45,14 @@ SOGoMailDataSource = Class.create({ init: function(uids, headers) { this.uids = uids; - var keys = headers[0]; - for (var i = 1; i < headers.length; i++) { - var header = []; - for (var j = 0; j < keys.length; j++) - header[keys[j]] = headers[i][j]; - this.cache.set(header["uid"], header); + if (headers) { + var keys = headers[0]; + for (var i = 1; i < headers.length; i++) { + var header = []; + for (var j = 0; j < keys.length; j++) + header[keys[j]] = headers[i][j]; + this.cache.set(header["uid"], header); + } } this.loaded = true; @@ -78,7 +80,10 @@ SOGoMailDataSource = Class.create({ if (http.status == 200) { if (http.responseText.length > 0) { var data = http.responseText.evalJSON(true); - this.init(data.uids, data.headers); + if (data.uids) + this.init(data.uids, data.headers); + else + this.init(data); this.loaded = true; if (this.delayedGetData) { this.delayedGetData(); From b96a9def9d24a82b6667dc3b1eef79d455615aa0 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Sun, 7 Nov 2010 18:22:30 +0000 Subject: [PATCH 05/11] Fix for bug #954 Monotone-Parent: 58cf6fbba1f009a9bedc373454f61ed082ccfae0 Monotone-Revision: e988df7e3c59b0528a5aac84c8963a900af5bd8b Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2010-11-07T18:22:30 Monotone-Branch: ca.inverse.sogo --- UI/PreferencesUI/French.lproj/Localizable.strings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UI/PreferencesUI/French.lproj/Localizable.strings b/UI/PreferencesUI/French.lproj/Localizable.strings index 424bc2ba4..aa8e60d28 100644 --- a/UI/PreferencesUI/French.lproj/Localizable.strings +++ b/UI/PreferencesUI/French.lproj/Localizable.strings @@ -21,7 +21,7 @@ "contacts_category_labels" = "Ami, Client, Collègue, Concurrent, Famille, Fournisseur, Partenaire d'affaire, Presse, VIP"; /* vacation (auto-reply) */ -"Enable vacation auto reply" = "Activer message d'absense prolongée"; +"Enable vacation auto reply" = "Activer message d'absence prolongée"; "Auto reply message :" = "Message de réponse automatique :"; "Email addresses (separated by commas) :" = "Adresses courriels (séparées par des virgules) :"; "Add default email addresses" = "Ajouter les adresses par défaut"; From 0ea74f9536f8b440bea2a29b71bade6d58803d33 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Mon, 8 Nov 2010 16:21:18 +0000 Subject: [PATCH 06/11] Monotone-Parent: 58cf6fbba1f009a9bedc373454f61ed082ccfae0 Monotone-Revision: 1df0fdb407abf8f535893384237b5ab2c788ca50 Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2010-11-08T16:21:18 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/MailerUI.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/UI/WebServerResources/MailerUI.js b/UI/WebServerResources/MailerUI.js index 612c462bb..3a28e9588 100644 --- a/UI/WebServerResources/MailerUI.js +++ b/UI/WebServerResources/MailerUI.js @@ -425,7 +425,7 @@ function deleteSelectedMessages(sender) { triggerAjaxRequest(url, deleteSelectedMessagesCallback, data, parameters, { "Content-type": "application/x-www-form-urlencoded" }); } - else + if (uids.length == 0) showAlertDialog(_("Please select a message.")); return false; @@ -440,7 +440,7 @@ function deleteSelectedMessagesCallback(http) { if (Mailer.currentMailbox == data["mailbox"]) { var div = $('messageContent'); if (Mailer.currentMessages[Mailer.currentMailbox] == data["id"][i]) { - div.update(); + div.innerHTML = ''; Mailer.currentMessages[Mailer.currentMailbox] = null; } if (deleteMessageRequestCount == 0) { @@ -457,7 +457,7 @@ function deleteSelectedMessagesCallback(http) { } } else { - div.update(); + div.innerHTML = ''; } Mailer.dataTable.remove(data["id"][i]); Mailer.dataTable.refresh(); @@ -731,7 +731,7 @@ function openMailbox(mailbox, reload) { } var dataSource = Mailer.dataSources.get(key); - if (!dataSource || reload) { + if (!dataSource) { dataSource = new SOGoMailDataSource(Mailer.dataTable, url); if (inboxData) { dataSource.init(inboxData['uids'], inboxData['headers']); @@ -742,9 +742,16 @@ function openMailbox(mailbox, reload) { Mailer.dataSources.set(key, dataSource); getUnseenCountForFolder(mailbox); } - messageList.deselectAll(); - Mailer.dataTable.setSource(dataSource); - Mailer.dataTable.render(); + else if (reload) { + urlParams.set("no_headers", "1"); + dataSource.load(urlParams); + } + if (reload) + Mailer.dataTable.refresh(); + else { + Mailer.dataTable.setSource(dataSource); + Mailer.dataTable.render(); + } configureDraggables(); Mailer.currentMailbox = mailbox; @@ -767,7 +774,6 @@ function openMailbox(mailbox, reload) { */ function messageListCallback(row, data, isNew) { var currentMessage = Mailer.currentMessages[Mailer.currentMailbox]; - row.id = data['rowID']; row.writeAttribute('labels', (data['labels']?data['labels']:"")); row.className = data['rowClasses']; @@ -1511,7 +1517,8 @@ function loadMessageCallback(http) { var msguid = http.callbackData.msguid; // Warning: If the user can't set the read/unread flag, it won't // be reflected in the view unless we force the refresh. - //Mailer.dataTable.invalidate(msguid, true); + if (http.callbackData.seenStateHasChanged) + Mailer.dataTable.invalidate(msguid, true); cachedMessage['idx'] = Mailer.currentMailbox + '/' + msguid; cachedMessage['time'] = (new Date()).getTime(); cachedMessage['text'] = http.responseText; From 3dbf39d548eb3c71a17a5c7f49d609ebc0dacb36 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Mon, 8 Nov 2010 16:28:50 +0000 Subject: [PATCH 07/11] See Changelog Monotone-Parent: 0c176852c57ca5f012fd36464ced594b6ef6c9fb Monotone-Revision: f98db9e0d0c41fc50f243d8f21ff421712d14518 Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2010-11-08T16:28:50 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 5 +++++ UI/WebServerResources/SOGoDragHandles.js | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d12a14ada..dd7064e81 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2010-11-08 Francis Lachapelle + + * UI/WebServerResources/SOGoDragHandles.js (adjust): for vertical + drag handles, prioritize the top limit rather than the bottom one. + 2010-11-05 Francis Lachapelle * UI/MailerUI/UIxMailListActions.m (-getSortedUIDsAction): now diff --git a/UI/WebServerResources/SOGoDragHandles.js b/UI/WebServerResources/SOGoDragHandles.js index c2d037b01..b7f789402 100644 --- a/UI/WebServerResources/SOGoDragHandles.js +++ b/UI/WebServerResources/SOGoDragHandles.js @@ -39,8 +39,10 @@ var SOGoDragHandlesInterface = { } } else if (this.dhType == 'vertical') { - this.dhLimit = window.height() - 20 - this.upperBlock.cumulativeOffset()[1] + this.upperBlock.offsetTop; - if (parseInt(this.getStyle("top")) > this.dhLimit) { + var windowHeight = window.height(); + this.dhLimit = windowHeight - 20 - this.upperBlock.cumulativeOffset().top + this.upperBlock.offsetTop; + if (parseInt(this.getStyle("top")) > this.dhLimit && + windowHeight > this.topMargin) { this.setStyle({ top: this.dhLimit + 'px' }); this.lowerBlock.setStyle({ top: this.dhLimit + 'px' }); this.upperBlock.setStyle({ height: (this.dhLimit - this.upperBlock.offsetTop) + 'px' }); From 2646e93e5f41b89a67086b3eab52d1d66318fd86 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Mon, 8 Nov 2010 18:25:18 +0000 Subject: [PATCH 08/11] See Changelog Monotone-Parent: f98db9e0d0c41fc50f243d8f21ff421712d14518 Monotone-Revision: 54b01b70fe55f24f29ed00a93826637acb076c5f Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2010-11-08T18:25:18 Monotone-Branch: ca.inverse.sogo --- SOPE/NGCards/ChangeLog | 6 ++++++ SOPE/NGCards/NSString+NGCards.m | 13 ++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/SOPE/NGCards/ChangeLog b/SOPE/NGCards/ChangeLog index f906ac05a..c3dae2208 100644 --- a/SOPE/NGCards/ChangeLog +++ b/SOPE/NGCards/ChangeLog @@ -1,3 +1,9 @@ +2010-11-08 Francis Lachapelle + + * NSString+NGCards.m (-vCardSubvaluesWithSeparator:): now returns + an empty array when the string is empty, instead of an array with + an empty string. + 2010-10-28 Francis Lachapelle * iCalRecurrenceRule.m (-isInfinite): a repeat count set to 0 is diff --git a/SOPE/NGCards/NSString+NGCards.m b/SOPE/NGCards/NSString+NGCards.m index 30280e7f7..d090bfe00 100644 --- a/SOPE/NGCards/NSString+NGCards.m +++ b/SOPE/NGCards/NSString+NGCards.m @@ -322,11 +322,14 @@ static NSString *commaSeparator = nil; } } - substring = [[NSString alloc] initWithCharactersNoCopy: substringBuffer - length: substringLength - freeWhenDone: YES]; - [components addObject: substring]; - [substring release]; + if (substringLength > 0) + { + substring = [[NSString alloc] initWithCharactersNoCopy: substringBuffer + length: substringLength + freeWhenDone: YES]; + [components addObject: substring]; + [substring release]; + } NSZoneFree (NULL, stringBuffer); From 50a2cd899425496df787cff881a51389346004f5 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 8 Nov 2010 16:49:52 +0000 Subject: [PATCH 09/11] See ChangeLog Monotone-Parent: 54b01b70fe55f24f29ed00a93826637acb076c5f Monotone-Revision: b35d04c6cd2614e48feea1b1dacb0a61aa27fe44 Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2010-11-08T16:49:52 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 ++++++ SOPE/GDLContentStore/GCSAlarmsFolder.m | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index dd7064e81..7b9d7666f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2010-11-08 Ludovic Marcotte + + * SOPE/GDLContentStore/GCSAlarmsFolder.m + We now check for non-nil values before calling + -timeInterval... + 2010-11-08 Francis Lachapelle * UI/WebServerResources/SOGoDragHandles.js (adjust): for vertical diff --git a/SOPE/GDLContentStore/GCSAlarmsFolder.m b/SOPE/GDLContentStore/GCSAlarmsFolder.m index 69c358840..be86a18b2 100644 --- a/SOPE/GDLContentStore/GCSAlarmsFolder.m +++ b/SOPE/GDLContentStore/GCSAlarmsFolder.m @@ -326,8 +326,10 @@ static NSString *alarmsFolderURLString = nil; { NSNumber *tRecId, *tADate; - tRecId = [NSNumber numberWithInt: (int) [recId timeIntervalSince1970]]; - tADate = [NSNumber numberWithInt: (int) [alarmDate timeIntervalSince1970]]; + // We check if recId and alarmDate are nil prior calling -timeIntervalSince1970 + // Weird gcc optimizations can cause issue here. + tRecId = [NSNumber numberWithInt: (recId ? (int)[recId timeIntervalSince1970] : 0)]; + tADate = [NSNumber numberWithInt: (alarmDate ? (int)[alarmDate timeIntervalSince1970] : 0)]; return [NSDictionary dictionaryWithObjectsAndKeys: cname, @"c_name", path, @"c_path", From 861a90b970c1395d8ab2086a907a83ece3e160bc Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 8 Nov 2010 17:04:29 +0000 Subject: [PATCH 10/11] See ChangeLog Monotone-Parent: b35d04c6cd2614e48feea1b1dacb0a61aa27fe44 Monotone-Revision: 19bd38381f65942b0903a2e2aaa8abbc9c9862ab Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2010-11-08T17:04:29 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 3 +++ SoObjects/Mailer/SOGoMailAccount.m | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/ChangeLog b/ChangeLog index 7b9d7666f..fb29ac4a1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,9 @@ * SOPE/GDLContentStore/GCSAlarmsFolder.m We now check for non-nil values before calling -timeInterval... + * SoObjects/Mailer/SOGoMailAccount.m + We try to fallback to the imap server prior falling + back to localhost 2010-11-08 Francis Lachapelle diff --git a/SoObjects/Mailer/SOGoMailAccount.m b/SoObjects/Mailer/SOGoMailAccount.m index e2d8e45ff..1d2845d66 100644 --- a/SoObjects/Mailer/SOGoMailAccount.m +++ b/SoObjects/Mailer/SOGoMailAccount.m @@ -353,7 +353,22 @@ static NSString *sieveScriptName = @"sogo"; if (!sieveServer) { + NSString *s; + sieveServer = @"localhost"; + s = [dd imapServer]; + + if (s) + { + NSURL *url; + + url = [NSURL URLWithString: s]; + + if ([url host]) + sieveServer = [url host]; + else + sieveServer = s; + } } else { From b28a1bee6e9f9d3a020078a90194766e2a584074 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Mon, 8 Nov 2010 18:47:11 +0000 Subject: [PATCH 11/11] See Changelog Monotone-Parent: 19bd38381f65942b0903a2e2aaa8abbc9c9862ab Monotone-Revision: 6c9151f261ad9f73f6614808f73d4ca224c2cb8e Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2010-11-08T18:47:11 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 7 ++++ UI/Templates/ContactsUI/UIxContactEditor.wox | 1 + UI/WebServerResources/ContactsUI.js | 42 +++++++++++--------- UI/WebServerResources/UIxContactEditor.js | 2 +- 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index fb29ac4a1..bac5db313 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,6 +12,13 @@ * UI/WebServerResources/SOGoDragHandles.js (adjust): for vertical drag handles, prioritize the top limit rather than the bottom one. + * UI/WebServerResources/UIxContactEditor.js (onComboButtonClick): + return false so the form is not submitted when the button is clicked. + + * UI/WebServerResources/ContactsUI.js + (onCategoriesMenuPrepareVisibility): don't verify the selection if + the list doesn't exist (happens in the contact editor). + 2010-11-05 Francis Lachapelle * UI/MailerUI/UIxMailListActions.m (-getSortedUIDsAction): now diff --git a/UI/Templates/ContactsUI/UIxContactEditor.wox b/UI/Templates/ContactsUI/UIxContactEditor.wox index af9c49758..ebb3eb41c 100644 --- a/UI/Templates/ContactsUI/UIxContactEditor.wox +++ b/UI/Templates/ContactsUI/UIxContactEditor.wox @@ -8,6 +8,7 @@ xmlns:label="OGo:label" className="UIxPageFrame" title="name" + const:userDefaultsKeys="SOGoContactsCategories" const:popup="YES" >