diff --git a/UI/Contacts/UIxContactEditor.m b/UI/Contacts/UIxContactEditor.m
index 72f702ff8..abb3e38a9 100644
--- a/UI/Contacts/UIxContactEditor.m
+++ b/UI/Contacts/UIxContactEditor.m
@@ -349,7 +349,7 @@ static Class SOGoContactGCSEntryK = Nil;
NSMutableArray *units, *categories;
NSCalendarDate *date;
id o;
- unsigned int i, year, month, day;
+ unsigned int i, year, month, day, seconds;
[card setNWithFamily: [attributes objectForKey: @"c_sn"]
given: [attributes objectForKey: @"c_givenname"]
@@ -358,7 +358,12 @@ static Class SOGoContactGCSEntryK = Nil;
[card setFn: [attributes objectForKey: @"c_cn"]];
[card setTitle: [attributes objectForKey: @"title"]];
- unsigned int seconds = [[NSString stringWithFormat: @"%@", [attributes objectForKey: @"birthday"]] intValue];
+ if ([attributes objectForKey: @"c_screenname"])
+ [[card uniqueChildWithTag: @"x-aim"]
+ setSingleValue: [attributes objectForKey: @"c_screenname"]
+ forKey: @""];
+
+ seconds = [[NSString stringWithFormat: @"%@", [attributes objectForKey: @"birthday"]] intValue];
if (seconds > 0)
{
date = [NSCalendarDate dateWithTimeIntervalSince1970: seconds];
@@ -519,6 +524,7 @@ static Class SOGoContactGCSEntryK = Nil;
* @apiParam {String} nickname Nickname
* @apiParam {String} c_sn Lastname
* @apiParam {String} c_cn Fullname
+ * @apiParam {String} c_screenname Screen Name (X-AIM for now)
* @apiParam {String} tz Timezone
* @apiParam {String} note Note
* @apiParam {String[]} allCategories All available categories
diff --git a/UI/Contacts/UIxContactView.h b/UI/Contacts/UIxContactView.h
index d5a9732c5..abffaa1ed 100644
--- a/UI/Contacts/UIxContactView.h
+++ b/UI/Contacts/UIxContactView.h
@@ -1,18 +1,18 @@
/*
- Copyright (C) 2004 SKYRIX Software AG
+ Copyright (C) 2005-2015 Inverse inc.
- This file is part of OpenGroupware.org.
-
- OGo is free software; you can redistribute it and/or modify it under
+ This file is part of SOGo.
+
+ SOGo is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
-
- OGo is distributed in the hope that it will be useful, but WITHOUT ANY
+
+ SOGo is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
-
+
You should have received a copy of the GNU Lesser General Public
License along with OGo; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
@@ -35,7 +35,7 @@
NSMutableArray *photosURL;
}
-- (NSString *) fullName;
+//- (NSString *) fullName;
- (NSArray *) orgUnits;
- (NSString *) photoURL;
diff --git a/UI/Contacts/UIxContactView.m b/UI/Contacts/UIxContactView.m
index e2d634746..ac61300c3 100644
--- a/UI/Contacts/UIxContactView.m
+++ b/UI/Contacts/UIxContactView.m
@@ -1,5 +1,4 @@
/*
- Copyright (C) 2004 SKYRIX Software AG
Copyright (C) 2005-2015 Inverse inc.
This file is part of SOGo.
@@ -69,70 +68,70 @@
/* accessors */
-- (NSString *) _cardStringWithLabel: (NSString *) label
- value: (NSString *) value
- byEscapingHTMLString: (BOOL) escapeHTML
- asLinkScheme: (NSString *) scheme
- withLinkAttributes: (NSString *) attrs
-{
- NSMutableString *cardString;
+// - (NSString *) _cardStringWithLabel: (NSString *) label
+// value: (NSString *) value
+// byEscapingHTMLString: (BOOL) escapeHTML
+// asLinkScheme: (NSString *) scheme
+// withLinkAttributes: (NSString *) attrs
+// {
+// NSMutableString *cardString;
- cardString = [NSMutableString stringWithCapacity: 80];
- value = [value stringByReplacingString: @"\r" withString: @""];
- if ([value length] > 0)
- {
- if (escapeHTML)
- value = [value stringByEscapingHTMLString];
- if ([scheme length] > 0)
- value = [NSString stringWithFormat: @"%@ ", scheme, value, attrs, value];
+// cardString = [NSMutableString stringWithCapacity: 80];
+// value = [value stringByReplacingString: @"\r" withString: @""];
+// if ([value length] > 0)
+// {
+// if (escapeHTML)
+// value = [value stringByEscapingHTMLString];
+// if ([scheme length] > 0)
+// value = [NSString stringWithFormat: @"%@ ", scheme, value, attrs, value];
- if (label)
- [cardString appendFormat: @"
%@ %@ \n",
- [self labelForKey: label], value];
- else
- [cardString appendFormat: @"%@ \n", value];
- }
+// if (label)
+// [cardString appendFormat: @"%@ %@ \n",
+// [self labelForKey: label], value];
+// else
+// [cardString appendFormat: @"%@ \n", value];
+// }
- return cardString;
-}
+// return cardString;
+// }
-- (NSString *) _cardStringWithLabel: (NSString *) label
- value: (NSString *) value
-{
- return [self _cardStringWithLabel: label
- value: value
- byEscapingHTMLString: YES
- asLinkScheme: nil
- withLinkAttributes: nil];
-}
+// - (NSString *) _cardStringWithLabel: (NSString *) label
+// value: (NSString *) value
+// {
+// return [self _cardStringWithLabel: label
+// value: value
+// byEscapingHTMLString: YES
+// asLinkScheme: nil
+// withLinkAttributes: nil];
+// }
-- (NSString *) _cardStringWithLabel: (NSString *) label
- value: (NSString *) value
- asLinkScheme: (NSString *) scheme
-{
- return [self _cardStringWithLabel: label
- value: value
- byEscapingHTMLString: YES
- asLinkScheme: scheme
- withLinkAttributes: nil];
-}
+// - (NSString *) _cardStringWithLabel: (NSString *) label
+// value: (NSString *) value
+// asLinkScheme: (NSString *) scheme
+// {
+// return [self _cardStringWithLabel: label
+// value: value
+// byEscapingHTMLString: YES
+// asLinkScheme: scheme
+// withLinkAttributes: nil];
+// }
-- (NSString *) displayName
-{
- return [self _cardStringWithLabel: @"Display Name:"
- value: [card fn]];
-}
+// - (NSString *) displayName
+// {
+// return [self _cardStringWithLabel: @"Display Name:"
+// value: [card fn]];
+// }
-- (NSString *) nickName
-{
- return [self _cardStringWithLabel: @"Nickname:"
- value: [card nickname]];
-}
+// - (NSString *) nickName
+// {
+// return [self _cardStringWithLabel: @"Nickname:"
+// value: [card nickname]];
+// }
-- (NSString *) fullName
-{
- return [card fullName];
-}
+// - (NSString *) fullName
+// {
+// return [card fullName];
+// }
- (NSArray *) _languageContactsCategories
{
@@ -173,345 +172,345 @@
return cats;
}
-- (NSString *) primaryEmail
-{
- NSString *email, *fn, *attrs;
+// - (NSString *) primaryEmail
+// {
+// NSString *email, *fn, *attrs;
- email = [card preferredEMail];
- if ([email length] > 0)
- {
- fn = [card fn];
- if ([fn length] > 0)
- attrs = [NSString stringWithFormat: @"%@ <%@>", fn, email];
- else
- attrs = email;
- attrs = [attrs stringByReplacingString: @"'" withString: @"\\'"];
- attrs = [attrs stringByReplacingString: @"\"" withString: @"\\\""];
- attrs = [NSString stringWithFormat: @"onclick=\"return openMailTo('%@');\"", attrs];
- }
- else
- {
- attrs = nil;
- }
+// email = [card preferredEMail];
+// if ([email length] > 0)
+// {
+// fn = [card fn];
+// if ([fn length] > 0)
+// attrs = [NSString stringWithFormat: @"%@ <%@>", fn, email];
+// else
+// attrs = email;
+// attrs = [attrs stringByReplacingString: @"'" withString: @"\\'"];
+// attrs = [attrs stringByReplacingString: @"\"" withString: @"\\\""];
+// attrs = [NSString stringWithFormat: @"onclick=\"return openMailTo('%@');\"", attrs];
+// }
+// else
+// {
+// attrs = nil;
+// }
- return [self _cardStringWithLabel: @"Email:"
- value: email
- byEscapingHTMLString: YES
- asLinkScheme: @"mailto:"
- withLinkAttributes: attrs];
-}
+// return [self _cardStringWithLabel: @"Email:"
+// value: email
+// byEscapingHTMLString: YES
+// asLinkScheme: @"mailto:"
+// withLinkAttributes: attrs];
+// }
-- (NSArray *) secondaryEmails
-{
- NSMutableArray *secondaryEmails;
- NSString *email, *fn, *attrs;
- NSArray *emails;
+// - (NSArray *) secondaryEmails
+// {
+// NSMutableArray *secondaryEmails;
+// NSString *email, *fn, *attrs;
+// NSArray *emails;
- emails = [card secondaryEmails];
- secondaryEmails = [NSMutableArray array];
- attrs = nil;
+// emails = [card secondaryEmails];
+// secondaryEmails = [NSMutableArray array];
+// attrs = nil;
- // We might not have a preferred item but rather something like this:
- // EMAIL;TYPE=work:dd@ee.com
- // EMAIL;TYPE=home:ff@gg.com
- //
- // or:
- //
- // EMAIL;TYPE=INTERNET:a@a.com
- // EMAIL;TYPE=INTERNET,HOME:b@b.com
- //
- // In this case, we always return the entry NOT matching the primaryEmail
- if ([emails count] > 0)
- {
- int i;
+// // We might not have a preferred item but rather something like this:
+// // EMAIL;TYPE=work:dd@ee.com
+// // EMAIL;TYPE=home:ff@gg.com
+// //
+// // or:
+// //
+// // EMAIL;TYPE=INTERNET:a@a.com
+// // EMAIL;TYPE=INTERNET,HOME:b@b.com
+// //
+// // In this case, we always return the entry NOT matching the primaryEmail
+// if ([emails count] > 0)
+// {
+// int i;
- for (i = 0; i < [emails count]; i++)
- {
- email = [[emails objectAtIndex: i] flattenedValuesForKey: @""];
- if ([email length])
- {
- fn = [card fn];
- if ([fn length])
- attrs = [NSString stringWithFormat: @"%@ <%@>", fn, email];
- else
- attrs = email;
- attrs = [attrs stringByReplacingString: @"'" withString: @"\\'"];
- attrs = [attrs stringByReplacingString: @"\"" withString: @"\\\""];
- attrs = [NSString stringWithFormat: @"onclick=\"return openMailTo('%@');\"", attrs];
+// for (i = 0; i < [emails count]; i++)
+// {
+// email = [[emails objectAtIndex: i] flattenedValuesForKey: @""];
+// if ([email length])
+// {
+// fn = [card fn];
+// if ([fn length])
+// attrs = [NSString stringWithFormat: @"%@ <%@>", fn, email];
+// else
+// attrs = email;
+// attrs = [attrs stringByReplacingString: @"'" withString: @"\\'"];
+// attrs = [attrs stringByReplacingString: @"\"" withString: @"\\\""];
+// attrs = [NSString stringWithFormat: @"onclick=\"return openMailTo('%@');\"", attrs];
- [secondaryEmails addObject: [self _cardStringWithLabel: nil
- value: email
- byEscapingHTMLString: YES
- asLinkScheme: @"mailto:"
- withLinkAttributes: attrs]];
- }
- }
- }
- else
- {
- [secondaryEmails addObject: [self _cardStringWithLabel: nil
- value: nil]];
- }
+// [secondaryEmails addObject: [self _cardStringWithLabel: nil
+// value: email
+// byEscapingHTMLString: YES
+// asLinkScheme: @"mailto:"
+// withLinkAttributes: attrs]];
+// }
+// }
+// }
+// else
+// {
+// [secondaryEmails addObject: [self _cardStringWithLabel: nil
+// value: nil]];
+// }
- return secondaryEmails;
-}
+// return secondaryEmails;
+// }
-- (NSString *) screenName
-{
- NSString *screenName;
+// - (NSString *) screenName
+// {
+// NSString *screenName;
- screenName = [[card uniqueChildWithTag: @"x-aim"] flattenedValuesForKey: @""];
+// screenName = [[card uniqueChildWithTag: @"x-aim"] flattenedValuesForKey: @""];
- return [self _cardStringWithLabel: @"Screen Name:"
- value: screenName
- asLinkScheme: @"aim:goim?screenname="];
-}
+// return [self _cardStringWithLabel: @"Screen Name:"
+// value: screenName
+// asLinkScheme: @"aim:goim?screenname="];
+// }
-- (NSString *) preferredTel
-{
- return [self _cardStringWithLabel: @"Phone Number:"
- value: [card preferredTel] asLinkScheme: @"tel:"];
-}
+// - (NSString *) preferredTel
+// {
+// return [self _cardStringWithLabel: @"Phone Number:"
+// value: [card preferredTel] asLinkScheme: @"tel:"];
+// }
-- (NSString *) preferredAddress
-{
- return @"";
-}
+// - (NSString *) preferredAddress
+// {
+// return @"";
+// }
-- (BOOL) hasTelephones
-{
- if (!phones)
- phones = [card childrenWithTag: @"tel"];
+// - (BOOL) hasTelephones
+// {
+// if (!phones)
+// phones = [card childrenWithTag: @"tel"];
- return ([phones count] > 0);
-}
+// return ([phones count] > 0);
+// }
-- (NSString *) workPhone
-{
- // We do this (exclude FAX) in order to avoid setting the WORK number as the FAX
- // one if we do see the FAX field BEFORE the WORK number.
- return [self _cardStringWithLabel: @"Work:" value: [card workPhone] asLinkScheme: @"tel:"];
-}
+// - (NSString *) workPhone
+// {
+// // We do this (exclude FAX) in order to avoid setting the WORK number as the FAX
+// // one if we do see the FAX field BEFORE the WORK number.
+// return [self _cardStringWithLabel: @"Work:" value: [card workPhone] asLinkScheme: @"tel:"];
+// }
-- (NSString *) homePhone
-{
- return [self _cardStringWithLabel: @"Home:" value: [card homePhone] asLinkScheme: @"tel:"];
-}
+// - (NSString *) homePhone
+// {
+// return [self _cardStringWithLabel: @"Home:" value: [card homePhone] asLinkScheme: @"tel:"];
+// }
-- (NSString *) fax
-{
- return [self _cardStringWithLabel: @"Fax:" value: [card fax] asLinkScheme: @"tel:"];
-}
+// - (NSString *) fax
+// {
+// return [self _cardStringWithLabel: @"Fax:" value: [card fax] asLinkScheme: @"tel:"];
+// }
-- (NSString *) mobile
-{
- return [self _cardStringWithLabel: @"Mobile:" value: [card mobile] asLinkScheme: @"tel:"];
-}
+// - (NSString *) mobile
+// {
+// return [self _cardStringWithLabel: @"Mobile:" value: [card mobile] asLinkScheme: @"tel:"];
+// }
-- (NSString *) pager
-{
- return [self _cardStringWithLabel: @"Pager:" value: [card pager] asLinkScheme: @"tel:"];
-}
+// - (NSString *) pager
+// {
+// return [self _cardStringWithLabel: @"Pager:" value: [card pager] asLinkScheme: @"tel:"];
+// }
-- (BOOL) hasHomeInfos
-{
- BOOL result;
- NSArray *elements;
+// - (BOOL) hasHomeInfos
+// {
+// BOOL result;
+// NSArray *elements;
- elements = [card childrenWithTag: @"adr"
- andAttribute: @"type"
- havingValue: @"home"];
- if ([elements count] > 0)
- {
- result = YES;
- homeAdr = [elements objectAtIndex: 0];
- }
- else
- result = ([[card childrenWithTag: @"url"
- andAttribute: @"type"
- havingValue: @"home"] count] > 0);
+// elements = [card childrenWithTag: @"adr"
+// andAttribute: @"type"
+// havingValue: @"home"];
+// if ([elements count] > 0)
+// {
+// result = YES;
+// homeAdr = [elements objectAtIndex: 0];
+// }
+// else
+// result = ([[card childrenWithTag: @"url"
+// andAttribute: @"type"
+// havingValue: @"home"] count] > 0);
- return result;
-}
+// return result;
+// }
-- (NSString *) homePobox
-{
- return [self _cardStringWithLabel: nil
- value: [homeAdr flattenedValueAtIndex: 0
- forKey: @""]];
-}
+// - (NSString *) homePobox
+// {
+// return [self _cardStringWithLabel: nil
+// value: [homeAdr flattenedValueAtIndex: 0
+// forKey: @""]];
+// }
-- (NSString *) homeExtendedAddress
-{
- return [self _cardStringWithLabel: nil
- value: [homeAdr flattenedValueAtIndex: 1
- forKey: @""]];
-}
+// - (NSString *) homeExtendedAddress
+// {
+// return [self _cardStringWithLabel: nil
+// value: [homeAdr flattenedValueAtIndex: 1
+// forKey: @""]];
+// }
-- (NSString *) homeStreetAddress
-{
- return [self _cardStringWithLabel: nil
- value: [homeAdr flattenedValueAtIndex: 2
- forKey: @""]];
-}
+// - (NSString *) homeStreetAddress
+// {
+// return [self _cardStringWithLabel: nil
+// value: [homeAdr flattenedValueAtIndex: 2
+// forKey: @""]];
+// }
-- (NSString *) homeCityAndProv
-{
- NSString *city, *prov;
- NSMutableString *data;
+// - (NSString *) homeCityAndProv
+// {
+// NSString *city, *prov;
+// NSMutableString *data;
- city = [homeAdr flattenedValueAtIndex: 3 forKey: @""];
- prov = [homeAdr flattenedValueAtIndex: 4 forKey: @""];
+// city = [homeAdr flattenedValueAtIndex: 3 forKey: @""];
+// prov = [homeAdr flattenedValueAtIndex: 4 forKey: @""];
- data = [NSMutableString string];
- [data appendString: city];
- if ([city length] > 0 && [prov length] > 0)
- [data appendString: @", "];
- [data appendString: prov];
+// data = [NSMutableString string];
+// [data appendString: city];
+// if ([city length] > 0 && [prov length] > 0)
+// [data appendString: @", "];
+// [data appendString: prov];
- return [self _cardStringWithLabel: nil value: data];
-}
+// return [self _cardStringWithLabel: nil value: data];
+// }
-- (NSString *) homePostalCodeAndCountry
-{
- NSString *postalCode, *country;
- NSMutableString *data;
+// - (NSString *) homePostalCodeAndCountry
+// {
+// NSString *postalCode, *country;
+// NSMutableString *data;
- postalCode = [homeAdr flattenedValueAtIndex: 5 forKey: @""];
- country = [homeAdr flattenedValueAtIndex: 6 forKey: @""];
+// postalCode = [homeAdr flattenedValueAtIndex: 5 forKey: @""];
+// country = [homeAdr flattenedValueAtIndex: 6 forKey: @""];
- data = [NSMutableString string];
- [data appendString: postalCode];
- if ([postalCode length] > 0 && [country length] > 0)
- [data appendFormat: @", "];
- [data appendString: country];
+// data = [NSMutableString string];
+// [data appendString: postalCode];
+// if ([postalCode length] > 0 && [country length] > 0)
+// [data appendFormat: @", "];
+// [data appendString: country];
- return [self _cardStringWithLabel: nil value: data];
-}
+// return [self _cardStringWithLabel: nil value: data];
+// }
-- (NSString *) _formattedURL: (NSString *) url
-{
- NSRange schemaR;
- NSString *schema, *data;
+// - (NSString *) _formattedURL: (NSString *) url
+// {
+// NSRange schemaR;
+// NSString *schema, *data;
- if ([url length] > 0)
- {
- schemaR = [url rangeOfString: @"://"];
- if (schemaR.length > 0)
- {
- schema = [url substringToIndex: schemaR.location + schemaR.length];
- data = [url substringFromIndex: schemaR.location + schemaR.length];
- }
- else
- {
- schema = @"http://";
- data = url;
- }
- }
- else
- {
- schema = nil;
- data = nil;
- }
+// if ([url length] > 0)
+// {
+// schemaR = [url rangeOfString: @"://"];
+// if (schemaR.length > 0)
+// {
+// schema = [url substringToIndex: schemaR.location + schemaR.length];
+// data = [url substringFromIndex: schemaR.location + schemaR.length];
+// }
+// else
+// {
+// schema = @"http://";
+// data = url;
+// }
+// }
+// else
+// {
+// schema = nil;
+// data = nil;
+// }
- return [self _cardStringWithLabel: nil
- value: data
- byEscapingHTMLString: YES
- asLinkScheme: schema
- withLinkAttributes: @"target=\"_blank\""];
-}
+// return [self _cardStringWithLabel: nil
+// value: data
+// byEscapingHTMLString: YES
+// asLinkScheme: schema
+// withLinkAttributes: @"target=\"_blank\""];
+// }
-- (NSString *) _urlOfType: (NSString *) aType
-{
- NSArray *elements;
- NSString *url;
+// - (NSString *) _urlOfType: (NSString *) aType
+// {
+// NSArray *elements;
+// NSString *url;
- elements = [card childrenWithTag: @"url"
- andAttribute: @"type"
- havingValue: aType];
- if ([elements count] > 0)
- url = [[elements objectAtIndex: 0] flattenedValuesForKey: @""];
- else
- url = nil;
+// elements = [card childrenWithTag: @"url"
+// andAttribute: @"type"
+// havingValue: aType];
+// if ([elements count] > 0)
+// url = [[elements objectAtIndex: 0] flattenedValuesForKey: @""];
+// else
+// url = nil;
- return [self _formattedURL: url];
-}
+// return [self _formattedURL: url];
+// }
-- (NSString *) homeUrl
-{
- NSString *s;
+// - (NSString *) homeUrl
+// {
+// NSString *s;
- s = [self _urlOfType: @"home"];
+// s = [self _urlOfType: @"home"];
- if (!s || [s length] == 0)
- {
- NSArray *elements;
- NSString *workURL;
- int i;
+// if (!s || [s length] == 0)
+// {
+// NSArray *elements;
+// NSString *workURL;
+// int i;
- elements = [card childrenWithTag: @"url"
- andAttribute: @"type"
- havingValue: @"work"];
- workURL = nil;
+// elements = [card childrenWithTag: @"url"
+// andAttribute: @"type"
+// havingValue: @"work"];
+// workURL = nil;
- if ([elements count] > 0)
- workURL = [[elements objectAtIndex: 0] flattenedValuesForKey: @""];
+// if ([elements count] > 0)
+// workURL = [[elements objectAtIndex: 0] flattenedValuesForKey: @""];
- elements = [card childrenWithTag: @"url"];
+// elements = [card childrenWithTag: @"url"];
- if (workURL && [elements count] > 1)
- {
- for (i = 0; i < [elements count]; i++)
- {
- if ([[[elements objectAtIndex: i] flattenedValuesForKey: @""]
- caseInsensitiveCompare: workURL] != NSOrderedSame)
- {
- s = [[elements objectAtIndex: i] flattenedValuesForKey: @""];
- break;
- }
- }
+// if (workURL && [elements count] > 1)
+// {
+// for (i = 0; i < [elements count]; i++)
+// {
+// if ([[[elements objectAtIndex: i] flattenedValuesForKey: @""]
+// caseInsensitiveCompare: workURL] != NSOrderedSame)
+// {
+// s = [[elements objectAtIndex: i] flattenedValuesForKey: @""];
+// break;
+// }
+// }
- }
- else if (!workURL && [elements count] > 0)
- {
- s = [[elements objectAtIndex: 0] flattenedValuesForKey: @""];
- }
+// }
+// else if (!workURL && [elements count] > 0)
+// {
+// s = [[elements objectAtIndex: 0] flattenedValuesForKey: @""];
+// }
- if (s && [s length] > 0)
- s = [self _formattedURL: s];
- }
+// if (s && [s length] > 0)
+// s = [self _formattedURL: s];
+// }
- return s;
-}
+// return s;
+// }
-- (BOOL) hasWorkInfos
-{
- BOOL result;
- NSArray *elements;
+// - (BOOL) hasWorkInfos
+// {
+// BOOL result;
+// NSArray *elements;
- elements = [card childrenWithTag: @"adr"
- andAttribute: @"type"
- havingValue: @"work"];
- if ([elements count] > 0)
- {
- result = YES;
- workAdr = [elements objectAtIndex: 0];
- }
- else
- result = (([[card childrenWithTag: @"url"
- andAttribute: @"type"
- havingValue: @"work"] count] > 0)
- || [[card childrenWithTag: @"org"] count] > 0);
+// elements = [card childrenWithTag: @"adr"
+// andAttribute: @"type"
+// havingValue: @"work"];
+// if ([elements count] > 0)
+// {
+// result = YES;
+// workAdr = [elements objectAtIndex: 0];
+// }
+// else
+// result = (([[card childrenWithTag: @"url"
+// andAttribute: @"type"
+// havingValue: @"work"] count] > 0)
+// || [[card childrenWithTag: @"org"] count] > 0);
- return result;
-}
+// return result;
+// }
-- (NSString *) workTitle
-{
- return [self _cardStringWithLabel: nil value: [card title]];
-}
+// - (NSString *) workTitle
+// {
+// return [self _cardStringWithLabel: nil value: [card title]];
+// }
- (NSArray *) orgUnits
{
@@ -608,65 +607,65 @@
return addresses;
}
-- (NSString *) workService
-{
- NSMutableArray *orgServices;
- NSArray *values;
- CardElement *org;
- NSString *service, *services;
- NSUInteger count, max;
+// - (NSString *) workService
+// {
+// NSMutableArray *orgServices;
+// NSArray *values;
+// CardElement *org;
+// NSString *service, *services;
+// NSUInteger count, max;
- org = [card org];
- values = [org valuesForKey: @""];
- max = [values count];
- if (max > 1)
- {
- orgServices = [NSMutableArray arrayWithCapacity: max];
- for (count = 1; count < max; count++)
- {
- service = [org flattenedValueAtIndex: count forKey: @""];
- if ([service length] > 0)
- [orgServices addObject: service];
- }
+// org = [card org];
+// values = [org valuesForKey: @""];
+// max = [values count];
+// if (max > 1)
+// {
+// orgServices = [NSMutableArray arrayWithCapacity: max];
+// for (count = 1; count < max; count++)
+// {
+// service = [org flattenedValueAtIndex: count forKey: @""];
+// if ([service length] > 0)
+// [orgServices addObject: service];
+// }
- services = [orgServices componentsJoinedByString: @", "];
- }
- else
- services = nil;
+// services = [orgServices componentsJoinedByString: @", "];
+// }
+// else
+// services = nil;
- return [self _cardStringWithLabel: nil value: services];
-}
+// return [self _cardStringWithLabel: nil value: services];
+// }
-- (NSString *) workUrl
-{
- return [self _urlOfType: @"work"];
-}
+// - (NSString *) workUrl
+// {
+// return [self _urlOfType: @"work"];
+// }
-- (BOOL) hasOtherInfos
-{
- return ([[card note] length] > 0
- || [[card bday] length] > 0
- || [[card tz] length] > 0);
-}
+// - (BOOL) hasOtherInfos
+// {
+// return ([[card note] length] > 0
+// || [[card bday] length] > 0
+// || [[card tz] length] > 0);
+// }
-- (NSString *) bday
-{
- SOGoDateFormatter *dateFormatter;
- NSCalendarDate *date;
- NSString *bday;
+// - (NSString *) bday
+// {
+// SOGoDateFormatter *dateFormatter;
+// NSCalendarDate *date;
+// NSString *bday;
- date = [card birthday];
- bday = nil;
+// date = [card birthday];
+// bday = nil;
- if (date)
- {
- dateFormatter = [[[self context] activeUser] dateFormatterInContext: context];
- bday = [dateFormatter formattedDate: date];
- }
+// if (date)
+// {
+// dateFormatter = [[[self context] activeUser] dateFormatterInContext: context];
+// bday = [dateFormatter formattedDate: date];
+// }
- return bday;
- //return [self _cardStringWithLabel: @"Birthday:" value: bday];
-}
+// return bday;
+// //return [self _cardStringWithLabel: @"Birthday:" value: bday];
+// }
// - (NSString *) tz
// {
@@ -693,29 +692,29 @@
/* hrefs */
-- (NSString *) completeHrefForMethod: (NSString *) _method
- withParameter: (NSString *) _param
- forKey: (NSString *) _key
-{
- NSString *href;
+// - (NSString *) completeHrefForMethod: (NSString *) _method
+// withParameter: (NSString *) _param
+// forKey: (NSString *) _key
+// {
+// NSString *href;
- [self setQueryParameter:_param forKey:_key];
- href = [self completeHrefForMethod:[self ownMethodName]];
- [self setQueryParameter:nil forKey:_key];
+// [self setQueryParameter:_param forKey:_key];
+// href = [self completeHrefForMethod:[self ownMethodName]];
+// [self setQueryParameter:nil forKey:_key];
- return href;
-}
+// return href;
+// }
-- (NSString *)attributesTabLink {
- return [self completeHrefForMethod:[self ownMethodName]
- withParameter:@"attributes"
- forKey:@"tab"];
-}
-- (NSString *)debugTabLink {
- return [self completeHrefForMethod:[self ownMethodName]
- withParameter:@"debug"
- forKey:@"tab"];
-}
+// - (NSString *)attributesTabLink {
+// return [self completeHrefForMethod:[self ownMethodName]
+// withParameter:@"attributes"
+// forKey:@"tab"];
+// }
+// - (NSString *)debugTabLink {
+// return [self completeHrefForMethod:[self ownMethodName]
+// withParameter:@"debug"
+// forKey:@"tab"];
+// }
/* action */
@@ -751,6 +750,7 @@
* @apiSuccess (Success 200) {String} [nickname] Nickname
* @apiSuccess (Success 200) {String} [c_sn] Lastname
* @apiSuccess (Success 200) {String} [c_fn] Fullname
+ * @apiSuccess (Success 200) {String} [c_screenname] Screen Name (X-AIM for now)
* @apiSuccess (Success 200) {String} [tz] Timezone
* @apiSuccess (Success 200) {String} [note] Note
* @apiSuccess (Success 200) {String[]} allCategories All available categories
@@ -812,6 +812,10 @@
if ([firstName length] > 0)
[data setObject: firstName forKey: @"c_givenname"];
}
+
+ o = [[card uniqueChildWithTag: @"x-aim"] flattenedValuesForKey: @""];
+ if ([o length]) [data setObject: o forKey: @"c_screenname"];
+
o = [card nickname];
if (o) [data setObject: o forKey: @"nickname"];
o = [card title];
diff --git a/UI/Templates/ContactsUI/UIxContactEditorTemplate.wox b/UI/Templates/ContactsUI/UIxContactEditorTemplate.wox
index 9eb97a8f3..33cfe31f0 100644
--- a/UI/Templates/ContactsUI/UIxContactEditorTemplate.wox
+++ b/UI/Templates/ContactsUI/UIxContactEditorTemplate.wox
@@ -149,6 +149,28 @@
+
+
+
+
+
+
+
+
+
+ remove_circle
+
+
+
+
+ add_circle
+
+
+
+
+
+
+
diff --git a/UI/Templates/ContactsUI/UIxContactViewTemplate.wox b/UI/Templates/ContactsUI/UIxContactViewTemplate.wox
index 7acb6e263..fdacd004a 100644
--- a/UI/Templates/ContactsUI/UIxContactViewTemplate.wox
+++ b/UI/Templates/ContactsUI/UIxContactViewTemplate.wox
@@ -127,6 +127,16 @@
+
+