(feat) screenname (x-aim) is now shown and editable

This commit is contained in:
Ludovic Marcotte
2015-11-27 10:58:56 -05:00
parent 4d0361759a
commit dbffc50f06
7 changed files with 470 additions and 420 deletions

View File

@@ -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

View File

@@ -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;

View File

@@ -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: @"<a href=\"%@%@\" %@>%@</a>", 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: @"<a href=\"%@%@\" %@>%@</a>", scheme, value, attrs, value];
if (label)
[cardString appendFormat: @"<dt>%@</dt><dd>%@</dd>\n",
[self labelForKey: label], value];
else
[cardString appendFormat: @"<dt></dt><dd>%@</dd>\n", value];
}
// if (label)
// [cardString appendFormat: @"<dt>%@</dt><dd>%@</dd>\n",
// [self labelForKey: label], value];
// else
// [cardString appendFormat: @"<dt></dt><dd>%@</dd>\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];

View File

@@ -149,6 +149,28 @@
</div>
</div>
<div class="section">
<div layout="row" layout-align="space-between end" ng-show="editor.card.c_screenname != null">
<md-input-container>
<label class="pseudo-input-label">
<var:string label:value="Screen Name"/>
</label>
<input type="text" ng-model="editor.card.c_screenname"/>
</md-input-container>
<md-button class="sg-icon-button" type="button" ng-click="editor.card.$delete('c_screenname', -1)">
<md-icon>remove_circle</md-icon>
</md-button>
</div>
<div class="md-layout-margin" layout="row" layout-align="start center" ng-show="editor.card.c_screenname == null">
<md-button class="sg-icon-button" type="button" ng-click="editor.addScreenName($event)">
<md-icon>add_circle</md-icon>
</md-button>
<label class="button-label">
<var:string label:value="Add Screen Name"/>
</label>
</div>
</div>
<!-- birthday -->
<div class="section">
<div layout="row" layout-align="space-between end" ng-show="editor.card.birthday">

View File

@@ -127,6 +127,16 @@
</div>
</div>
<div class="section" ng-show="editor.card.c_screenname">
<div class="pseudo-input-container">
<div class="key">
<label class="pseudo-input-label"><var:string label:value="Screen Name"/></label>
</div>
<div class="pseudo-input-field">{{editor.card.c_screenname}}</div>
</div>
</div>
<div class="section" ng-show="editor.card.phones.length > 0">
<div class="pseudo-input-container" ng-repeat="phone in editor.card.phones">
<div class="key">

View File

@@ -337,6 +337,10 @@
return this.emails.length - 1;
};
Card.prototype.$addScreenName = function(screenName) {
this.c_screenname = screenName;
}
Card.prototype.$addPhone = function(type) {
if (angular.isUndefined(this.phones)) {
this.phones = [{type: type, value: ''}];

View File

@@ -22,6 +22,7 @@
vm.userFilterResults = [];
vm.addOrgUnit = addOrgUnit;
vm.addBirthday = addBirthday;
vm.addScreenName = addScreenName;
vm.addEmail = addEmail;
vm.addPhone = addPhone;
vm.addUrl = addUrl;
@@ -43,6 +44,9 @@
function addBirthday() {
vm.card.birthday = new Date();
}
function addScreenName() {
vm.card.$addScreenName('');
}
function addEmail() {
var i = vm.card.$addEmail('');
focus('email_' + i);