View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002775 | SOGo | ActiveSync | public | 2014-05-18 14:45 | 2014-05-22 13:21 |
Reporter | tfu | Assigned To | ludovic | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Product Version | 2.2.3 | ||||
Target Version | 2.2.4 | Fixed in Version | 2.2.4 | ||
Summary | 0002775: Some values are not sycned for contacts | ||||
Description | There are several values which are currently not handled when syncing conatcts. | ||||
Tags | No tags attached. | ||||
0002-category-sync.patch (6,164 bytes)
From de2731ec74cd42770bbd46f04ddd9412ab37fd72 Mon Sep 17 00:00:00 2001 From: root <root@example.com> Date: Sun, 18 May 2014 16:17:41 +0200 Subject: [PATCH 2/2] category sync --- ActiveSync/NGDOMElement+ActiveSync.m | 5 ++- ActiveSync/NGVCard+ActiveSync.m | 66 +++++++++++++++++++++++++--- ActiveSync/SOGoActiveSyncDispatcher+Sync.m | 2 +- 3 files changed, 66 insertions(+), 7 deletions(-) diff --git a/ActiveSync/NGDOMElement+ActiveSync.m b/ActiveSync/NGDOMElement+ActiveSync.m index 1a44e8a..b5e7764 100644 --- a/ActiveSync/NGDOMElement+ActiveSync.m +++ b/ActiveSync/NGDOMElement+ActiveSync.m @@ -101,7 +101,7 @@ static NSArray *asElementArray = nil; int i, count; if (!asElementArray) - asElementArray = [[NSArray alloc] initWithObjects: @"Attendee", nil]; + asElementArray = [[NSArray alloc] initWithObjects: @"Attendee", @"Category", nil]; data = [NSMutableDictionary dictionary]; @@ -153,6 +153,9 @@ static NSArray *asElementArray = nil; if ([innerTag isEqualToString: [innerElement tagName]]) { + if ([(id)innerElement isTextNode]) + [innerElements addObject: [(NGDOMElement *)innerElement textValue]]; + else [innerElements addObject: [(NGDOMElement *)innerElement applicationData]]; } else diff --git a/ActiveSync/NGVCard+ActiveSync.m b/ActiveSync/NGVCard+ActiveSync.m index d6f8fa1..dd326c3 100644 --- a/ActiveSync/NGVCard+ActiveSync.m +++ b/ActiveSync/NGVCard+ActiveSync.m @@ -48,7 +48,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - (NSString *) activeSyncRepresentationInContext: (WOContext *) context { CardElement *n, *homeAdr, *workAdr; - NSArray *emails, *addresses; + NSArray *emails, *addresses, *categories; NSMutableString *s; id o; @@ -65,7 +65,39 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. if ((o = [self workCompany])) [s appendFormat: @"<CompanyName xmlns=\"Contacts:\">%@</CompanyName>", [o activeSyncRepresentationInContext: context]]; - + + if ((o = [[self org] flattenedValueAtIndex: 1 forKey: @""])) + [s appendFormat: @"<Department xmlns=\"Contacts:\">%@</Department>", [o activeSyncRepresentationInContext: context]]; + + categories = [self categories]; + if ([categories count]) { + [s appendFormat: @"<Categories xmlns=\"Contacts:\">"]; + for (i = 0; i < [categories count]; i++) + { + [s appendFormat: @"<Category xmlns=\"Contacts:\">%@</Category>", [categories objectAtIndex: i]]; + } + [s appendFormat: @"</Categories>"]; + } + + NSArray *elements; + NSString *url; + + elements = [self childrenWithTag: @"url" + andAttribute: @"type" + havingValue: @"work"]; + if ([elements count] > 0) { + url = [[elements objectAtIndex: 0] flattenedValuesForKey: @""]; + [s appendFormat: @"<WebPage xmlns=\"Contacts:\">%@</WebPage>", [url activeSyncRepresentationInContext: context]]; + } + + + if ((o = [[self uniqueChildWithTag: @"x-aim"] flattenedValuesForKey: @""])) + [s appendFormat: @"<IMAddress xmlns=\"Contacts:\">%@</IMAddress>", [o activeSyncRepresentationInContext: context]]; + + if ((o = [self nickname])) + [s appendFormat: @"<NickName xmlns=\"Contacts:\">%@</NickName>", [o activeSyncRepresentationInContext: context]]; + + if ((o = [self title])) [s appendFormat: @"<JobTitle xmlns=\"Contacts:\">%@</JobTitle>", [o activeSyncRepresentationInContext: context]]; @@ -183,6 +215,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. if ((o = [[theValues objectForKey: @"Body"] objectForKey: @"Data"])) [self setNote: o]; + // Categories + if ((o = [theValues objectForKey: @"Categories"])) { + [self setCategories: o]; + } + // Birthday if ((o = [theValues objectForKey: @"Birthday"])) { @@ -241,21 +278,36 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. { [self setOrg: o units: nil]; } + + + // Department + if ((o = [theValues objectForKey: @"Department"])) + { + [self setOrg: nil units: [NSArray arrayWithObjects:o,nil]]; + } + // Email addresses if ((o = [theValues objectForKey: @"Email1Address"])) { - [self addEmail: o types: [NSArray arrayWithObject: @"pref"]]; + element = [self elementWithTag: @"email" ofType: @"work"]; + [element setSingleValue: o forKey: @""]; + } if ((o = [theValues objectForKey: @"Email2Address"])) { - [self addEmail: o types: nil]; + element = [self elementWithTag: @"email" ofType: @"home"]; + [element setSingleValue: o forKey: @""]; + } + // sogo supports just 2 emails ... but mobile might send 3 if ((o = [theValues objectForKey: @"Email3Address"])) { - [self addEmail: o types: nil]; + element = [self elementWithTag: @"email" ofType: @"three"]; + [element setSingleValue: o forKey: @""]; + } // Formatted name @@ -303,6 +355,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [[self elementWithTag: @"url" ofType: @"work"] setSingleValue: o forKey: @""]; } + + if ((o = [theValues objectForKey: @"NickName"])) + [self setNickname: o]; + } @end diff --git a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m index 14fb5db..a3eec3b 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m +++ b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m @@ -800,7 +800,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. break; } - if ([[dateCache objectForKey:key] compare: theFilterType ] == NSOrderedAscending ) + if ([[dateCache objectForKey:key] compare: theFilterType ] == NSOrderedAscending ) { [s appendString: @"<SoftDelete xmlns=\"AirSync:\">"]; [s appendFormat: @"<ServerId xmlns=\"AirSync:\">%@</ServerId>", key]; -- 1.7.9.5 |
|
Updated patch pushed here: https://github.com/inverse-inc/sogo/commit/7b60ad4797167202dfba52c3956a0f4f48c723e2 Thanks for your excellent work! |
|
Date Modified | Username | Field | Change |
---|---|---|---|
2014-05-18 14:45 | tfu | New Issue | |
2014-05-18 14:45 | tfu | File Added: 0002-category-sync.patch | |
2014-05-22 13:21 | ludovic | Target Version | => 2.2.4 |
2014-05-22 13:21 | ludovic | Note Added: 0007065 | |
2014-05-22 13:21 | ludovic | Status | new => resolved |
2014-05-22 13:21 | ludovic | Fixed in Version | => 2.2.4 |
2014-05-22 13:21 | ludovic | Resolution | open => fixed |
2014-05-22 13:21 | ludovic | Assigned To | => ludovic |