mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-03-06 07:36:24 +00:00
(feat) added custom fields support from Thunderbird's address book
This commit is contained in:
1
NEWS
1
NEWS
@@ -5,6 +5,7 @@ Enhancements
|
||||
- [core] improved event initation for all day events (#4145)
|
||||
- [core] now possible to {un}subscribe to folders using sogo-tool
|
||||
- [eas] added photo support for GAL search operations
|
||||
- [web] added custom fields support from Thunderbird's address book
|
||||
|
||||
Bug fixes
|
||||
- [core] fixed calendar component move across collections (#4116)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* NGVCard+SOGo.h - this file is part of SOGo
|
||||
*
|
||||
* Copyright (C) 2009-2014 Inverse inc.
|
||||
* Copyright (C) 2009-2017 Inverse inc.
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -45,6 +45,10 @@
|
||||
- (NSString *) pager;
|
||||
- (NSCalendarDate *) birthday;
|
||||
|
||||
- (void) addElementWithTag: (NSString *) elementTag
|
||||
ofType: (NSString *) type
|
||||
withValue: (id) value;
|
||||
|
||||
@end
|
||||
|
||||
#endif /* NGVCARD_SOGO_H */
|
||||
|
||||
@@ -217,9 +217,9 @@ convention:
|
||||
- (void) updateFromLDIFRecord: (NSDictionary *) ldifRecord
|
||||
{
|
||||
NSInteger year, yearOfToday, month, day;
|
||||
NSArray *units, *elements;
|
||||
CardElement *element;
|
||||
NSCalendarDate *now;
|
||||
NSArray *units;
|
||||
NSString *fn, *ou;
|
||||
id o;
|
||||
|
||||
@@ -320,6 +320,43 @@ convention:
|
||||
else
|
||||
[self setCategories: [o componentsSeparatedByString: @","]];
|
||||
|
||||
// Custom fields from Thunderbird
|
||||
if ((o = [ldifRecord objectForKey: @"custom1"]))
|
||||
{
|
||||
elements = [self childrenWithTag: @"custom1"];
|
||||
[self removeChildren: elements];
|
||||
|
||||
if ([o length])
|
||||
[self addElementWithTag: @"custom1" ofType: nil withValue: o];
|
||||
}
|
||||
|
||||
if ((o = [ldifRecord objectForKey: @"custom2"]))
|
||||
{
|
||||
elements = [self childrenWithTag: @"custom2"];
|
||||
[self removeChildren: elements];
|
||||
|
||||
if ([o length])
|
||||
[self addElementWithTag: @"custom2" ofType: nil withValue: o];
|
||||
}
|
||||
|
||||
if ((o = [ldifRecord objectForKey: @"custom3"]))
|
||||
{
|
||||
elements = [self childrenWithTag: @"custom3"];
|
||||
[self removeChildren: elements];
|
||||
|
||||
if ([o length])
|
||||
[self addElementWithTag: @"custom3" ofType: nil withValue: o];
|
||||
}
|
||||
|
||||
if ((o = [ldifRecord objectForKey: @"custom4"]))
|
||||
{
|
||||
elements = [self childrenWithTag: @"custom4"];
|
||||
[self removeChildren: elements];
|
||||
|
||||
if ([o length])
|
||||
[self addElementWithTag: @"custom4" ofType: nil withValue: o];
|
||||
}
|
||||
|
||||
[self cleanupEmptyChildren];
|
||||
}
|
||||
|
||||
@@ -646,6 +683,19 @@ convention:
|
||||
dn = @"";
|
||||
[ldifRecord setObject: dn forKey: @"dn"];
|
||||
|
||||
// Custom fields from Thunderbird
|
||||
if ((stringValue = [[self uniqueChildWithTag: @"custom1"] flattenedValuesForKey: @""]) && [stringValue length])
|
||||
[ldifRecord setObject: stringValue forKey: @"custom1"];
|
||||
|
||||
if ((stringValue = [[self uniqueChildWithTag: @"custom2"] flattenedValuesForKey: @""]) && [stringValue length])
|
||||
[ldifRecord setObject: stringValue forKey: @"custom2"];
|
||||
|
||||
if ((stringValue = [[self uniqueChildWithTag: @"custom3"] flattenedValuesForKey: @""]) && [stringValue length])
|
||||
[ldifRecord setObject: stringValue forKey: @"custom3"];
|
||||
|
||||
if ((stringValue = [[self uniqueChildWithTag: @"custom4"] flattenedValuesForKey: @""]) && [stringValue length])
|
||||
[ldifRecord setObject: stringValue forKey: @"custom4"];
|
||||
|
||||
return ldifRecord;
|
||||
}
|
||||
|
||||
@@ -871,4 +921,33 @@ convention:
|
||||
return fields;
|
||||
}
|
||||
|
||||
- (void) addElementWithTag: (NSString *) elementTag
|
||||
ofType: (NSString *) type
|
||||
withValue: (id) value
|
||||
{
|
||||
NSArray *allValues;
|
||||
NSEnumerator *list;
|
||||
CardElement *element;
|
||||
|
||||
// value is either an array or a string
|
||||
if ([value isKindOfClass: [NSString class]])
|
||||
allValues = [NSArray arrayWithObject: value];
|
||||
else
|
||||
allValues = value;
|
||||
|
||||
// Add all values as separate elements
|
||||
list = [allValues objectEnumerator];
|
||||
while ((value = [list nextObject]))
|
||||
{
|
||||
if ([type length])
|
||||
element = [CardElement simpleElementWithTag: elementTag
|
||||
singleType: type
|
||||
value: value];
|
||||
else
|
||||
element = [CardElement simpleElementWithTag: elementTag
|
||||
value: value];
|
||||
[self addChild: element];
|
||||
}
|
||||
}
|
||||
|
||||
@end /* NGVCard */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
Copyright (C) 2004-2005 SKYRIX Software AG
|
||||
Copyright (C) 2005-2015 Inverse inc.
|
||||
Copyright (C) 2005-2017 Inverse inc.
|
||||
|
||||
This file is part of SOGo
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
Copyright (C) 2004 SKYRIX Software AG
|
||||
Copyright (C) 2005-2015 Inverse inc.
|
||||
Copyright (C) 2005-2017 Inverse inc.
|
||||
|
||||
This file is part of SOGo.
|
||||
|
||||
@@ -573,11 +573,55 @@
|
||||
return [self _urlOfType: @"work"];
|
||||
}
|
||||
|
||||
- (NSString *) custom1
|
||||
{
|
||||
NSString *value;
|
||||
|
||||
value = [[card uniqueChildWithTag: @"custom1"] flattenedValuesForKey: @""];
|
||||
value = [value stringByEscapingHTMLString];
|
||||
|
||||
return [self _cardStringWithLabel: @"Custom 1" value: value];
|
||||
}
|
||||
|
||||
- (NSString *) custom2
|
||||
{
|
||||
NSString *value;
|
||||
|
||||
value = [[card uniqueChildWithTag: @"custom2"] flattenedValuesForKey: @""];
|
||||
value = [value stringByEscapingHTMLString];
|
||||
|
||||
return [self _cardStringWithLabel: @"Custom 2" value: value];
|
||||
}
|
||||
|
||||
- (NSString *) custom3
|
||||
{
|
||||
NSString *value;
|
||||
|
||||
value = [[card uniqueChildWithTag: @"custom3"] flattenedValuesForKey: @""];
|
||||
value = [value stringByEscapingHTMLString];
|
||||
|
||||
return [self _cardStringWithLabel: @"Custom 3" value: value];
|
||||
}
|
||||
|
||||
- (NSString *) custom4
|
||||
{
|
||||
NSString *value;
|
||||
|
||||
value = [[card uniqueChildWithTag: @"custom4"] flattenedValuesForKey: @""];
|
||||
value = [value stringByEscapingHTMLString];
|
||||
|
||||
return [self _cardStringWithLabel: @"Custom 4" value: value];
|
||||
}
|
||||
|
||||
- (BOOL) hasOtherInfos
|
||||
{
|
||||
return ([[card note] length] > 0
|
||||
|| [[card bday] length] > 0
|
||||
|| [[card tz] length] > 0);
|
||||
|| [[card tz] length] > 0
|
||||
|| [[[card uniqueChildWithTag: @"custom1"] flattenedValuesForKey: @""] length] > 0
|
||||
|| [[[card uniqueChildWithTag: @"custom1"] flattenedValuesForKey: @""] length] > 0
|
||||
|| [[[card uniqueChildWithTag: @"custom1"] flattenedValuesForKey: @""] length] > 0
|
||||
|| [[[card uniqueChildWithTag: @"custom1"] flattenedValuesForKey: @""] length] > 0);
|
||||
}
|
||||
|
||||
- (NSString *) bday
|
||||
|
||||
@@ -377,6 +377,42 @@
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label><var:string label:value="Custom 1"
|
||||
/>
|
||||
<input type="text" class="textField" name="custom1"
|
||||
id="nsaimid" var:value="ldifRecord.custom1"
|
||||
/></label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label><var:string label:value="Custom 2"
|
||||
/>
|
||||
<input type="text" class="textField" name="custom2"
|
||||
id="nsaimid" var:value="ldifRecord.custom2"
|
||||
/></label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label><var:string label:value="Custom 3"
|
||||
/>
|
||||
<input type="text" class="textField" name="custom3"
|
||||
id="nsaimid" var:value="ldifRecord.custom3"
|
||||
/></label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label><var:string label:value="Custom 4"
|
||||
/>
|
||||
<input type="text" class="textField" name="custom4"
|
||||
id="nsaimid" var:value="ldifRecord.custom4"
|
||||
/></label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label><var:string label:value="Note" /></label>
|
||||
|
||||
@@ -48,6 +48,10 @@
|
||||
<dl class="dl-horizontal">
|
||||
<var:string value="bday" escapeHTML="NO"
|
||||
/><var:string value="tz" escapeHTML="NO"
|
||||
/><var:string value="custom1" escapeHTML="NO"
|
||||
/><var:string value="custom2" escapeHTML="NO"
|
||||
/><var:string value="custom3" escapeHTML="NO"
|
||||
/><var:string value="custom4" escapeHTML="NO"
|
||||
/><var:string value="note" escapeHTML="NO"
|
||||
/>
|
||||
</dl>
|
||||
|
||||
Reference in New Issue
Block a user