merge of 'be11ede9b39c76d3a71c05143a448ab27a83a818'
and 'f0542255e31c3d8ac8c2d9b48083294de7e0308c' Monotone-Parent: be11ede9b39c76d3a71c05143a448ab27a83a818 Monotone-Parent: f0542255e31c3d8ac8c2d9b48083294de7e0308c Monotone-Revision: 4716c9e3a88b72ca631ad4d08c69388764bf28d5 Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2009-02-07T00:20:02 Monotone-Branch: ca.inverse.sogomaint-2.0.2
commit
9d9e5c0e55
46
ChangeLog
46
ChangeLog
|
@ -4,6 +4,52 @@
|
||||||
add CardDAV stuff. Currently only implements the
|
add CardDAV stuff. Currently only implements the
|
||||||
addressbook-home-set report from the principal URL.
|
addressbook-home-set report from the principal URL.
|
||||||
|
|
||||||
|
2009-02-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||||
|
|
||||||
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
||||||
|
([SOGoAppointmentFolder
|
||||||
|
-fetchFields:_fieldsfrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filtersincludeProtectedInformation:_includeProtectedInformation]):
|
||||||
|
added the "c_cycleinfo" and "c_cycleenddate" fields to the list of
|
||||||
|
fields that should not be stripped when removing protected informations.
|
||||||
|
|
||||||
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -dealloc])
|
||||||
|
([UIxTaskEditor -todo]): same as below (apts).
|
||||||
|
|
||||||
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
||||||
|
-event]): retain the event parent calendar object instead of the
|
||||||
|
event itself.
|
||||||
|
([UIxAppointmentEditor -dealloc]): release the above calendar.
|
||||||
|
|
||||||
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
||||||
|
([UIxMailPartICalViewer -dealloc]): no longer release "inEvent"
|
||||||
|
since it does not need to be retained.
|
||||||
|
|
||||||
|
* Main/SOGo.m ([SOGo +initialize]): added handling of the
|
||||||
|
"SOGoDebugLeaks" configuration variable.
|
||||||
|
([SOGo -dispatchRequest:_request]): log the classes of instances
|
||||||
|
that were leaked between the handling of the request, if
|
||||||
|
SOGoDebugLeaks is set.
|
||||||
|
|
||||||
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
||||||
|
-aclsForUser:uidforObjectAtPath:objectPathArray]): cache an empty
|
||||||
|
array if not acl have been returned for the specified user.
|
||||||
|
|
||||||
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
||||||
|
-lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]):
|
||||||
|
same as below.
|
||||||
|
([SOGoContactGCSFolder -fixupContactRecord:contactRecord]): new
|
||||||
|
method that initializes c_mail, c_screenname, c_o,
|
||||||
|
c_telephonenumber to empty strings if not found.
|
||||||
|
|
||||||
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
||||||
|
([SOGoContactLDAPFolder
|
||||||
|
-lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]):
|
||||||
|
no longer make use of the displayName, mail, screenName, phone and
|
||||||
|
org intermediary keys.
|
||||||
|
|
||||||
|
* UI/Contacts/UIxContactsListView.m ([-currentCName]): removed
|
||||||
|
useless method.
|
||||||
|
|
||||||
2009-02-05 Francis Lachapelle <flachapelle@inverse.ca>
|
2009-02-05 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
* UI/SOGoUI/UIxComponent.m ([UIxComponent -responseWithStatus:):
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -responseWithStatus:):
|
||||||
|
|
20
Main/SOGo.m
20
Main/SOGo.m
|
@ -19,6 +19,7 @@
|
||||||
02111-1307, USA.
|
02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#import <Foundation/NSAutoreleasePool.h>
|
||||||
#import <Foundation/NSDebug.h>
|
#import <Foundation/NSDebug.h>
|
||||||
#import <Foundation/NSData.h>
|
#import <Foundation/NSData.h>
|
||||||
#import <Foundation/NSDate.h>
|
#import <Foundation/NSDate.h>
|
||||||
|
@ -64,6 +65,7 @@ static unsigned int vMemSizeLimit = 0;
|
||||||
static BOOL doCrashOnSessionCreate = NO;
|
static BOOL doCrashOnSessionCreate = NO;
|
||||||
static BOOL hasCheckedTables = NO;
|
static BOOL hasCheckedTables = NO;
|
||||||
static BOOL debugRequests = NO;
|
static BOOL debugRequests = NO;
|
||||||
|
static BOOL debugLeaks = NO;
|
||||||
|
|
||||||
#ifdef GNUSTEP_BASE_LIBRARY
|
#ifdef GNUSTEP_BASE_LIBRARY
|
||||||
static BOOL debugObjectAllocation = NO;
|
static BOOL debugObjectAllocation = NO;
|
||||||
|
@ -91,6 +93,7 @@ static BOOL debugObjectAllocation = NO;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
debugRequests = [ud boolForKey: @"SOGoDebugRequests"];
|
debugRequests = [ud boolForKey: @"SOGoDebugRequests"];
|
||||||
|
debugLeaks = [ud boolForKey: @"SOGoDebugLeaks"];
|
||||||
/* vMem size check - default is 200MB */
|
/* vMem size check - default is 200MB */
|
||||||
|
|
||||||
tmp = [ud objectForKey: @"SxVMemLimit"];
|
tmp = [ud objectForKey: @"SxVMemLimit"];
|
||||||
|
@ -394,6 +397,7 @@ static BOOL debugObjectAllocation = NO;
|
||||||
static NSArray *runLoopModes = nil;
|
static NSArray *runLoopModes = nil;
|
||||||
WOResponse *resp;
|
WOResponse *resp;
|
||||||
NSDate *startDate, *endDate;
|
NSDate *startDate, *endDate;
|
||||||
|
NSAutoreleasePool *pool;
|
||||||
|
|
||||||
if (debugRequests)
|
if (debugRequests)
|
||||||
{
|
{
|
||||||
|
@ -403,6 +407,13 @@ static BOOL debugObjectAllocation = NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
cache = [SOGoCache sharedCache];
|
cache = [SOGoCache sharedCache];
|
||||||
|
if (debugLeaks)
|
||||||
|
{
|
||||||
|
GSDebugAllocationActive (YES);
|
||||||
|
GSDebugAllocationList (NO);
|
||||||
|
pool = [NSAutoreleasePool new];
|
||||||
|
}
|
||||||
|
|
||||||
resp = [super dispatchRequest: _request];
|
resp = [super dispatchRequest: _request];
|
||||||
[SOGoCache killCache];
|
[SOGoCache killCache];
|
||||||
|
|
||||||
|
@ -413,6 +424,15 @@ static BOOL debugObjectAllocation = NO;
|
||||||
[endDate timeIntervalSinceDate: startDate]];
|
[endDate timeIntervalSinceDate: startDate]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (debugLeaks)
|
||||||
|
{
|
||||||
|
[resp retain];
|
||||||
|
[pool release];
|
||||||
|
[resp autorelease];
|
||||||
|
NSLog (@"allocated classes:\n%s", GSDebugAllocationList (YES));
|
||||||
|
GSDebugAllocationActive (NO);
|
||||||
|
}
|
||||||
|
|
||||||
if (![self isTerminating])
|
if (![self isTerminating])
|
||||||
{
|
{
|
||||||
if (!runLoopModes)
|
if (!runLoopModes)
|
||||||
|
|
|
@ -105,7 +105,6 @@
|
||||||
|
|
||||||
- (void) dealloc
|
- (void) dealloc
|
||||||
{
|
{
|
||||||
[parent release];
|
|
||||||
[tag release];
|
[tag release];
|
||||||
[group release];
|
[group release];
|
||||||
[attributes release];
|
[attributes release];
|
||||||
|
@ -115,8 +114,7 @@
|
||||||
|
|
||||||
- (void) setParent: (CardGroup *) aParent
|
- (void) setParent: (CardGroup *) aParent
|
||||||
{
|
{
|
||||||
#warning THIS CAUSES A LEAK. We need this for the moment because of a design error.
|
parent = aParent;
|
||||||
ASSIGN (parent, aParent);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (id) parent
|
- (id) parent
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
2008-12-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
2009-02-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||||
|
|
||||||
* CardElement.m ([CardElement -setParent:aParent]): no longer
|
* CardElement.m ([CardElement -setParent:aParent]): no longer
|
||||||
retain the parent passed as parameter.
|
retain the parent passed as parameter.
|
||||||
|
|
|
@ -880,6 +880,8 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir
|
||||||
@"c_uid", @"c_startdate",
|
@"c_uid", @"c_startdate",
|
||||||
@"c_enddate", @"c_isallday",
|
@"c_enddate", @"c_isallday",
|
||||||
@"c_iscycle", @"c_isopaque",
|
@"c_iscycle", @"c_isopaque",
|
||||||
|
@"c_cycleinfo",
|
||||||
|
@"c_cycleenddate",
|
||||||
@"c_classification",
|
@"c_classification",
|
||||||
@"c_component", nil]];
|
@"c_component", nil]];
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,8 @@
|
||||||
|
|
||||||
@interface SOGoContactGCSFolder : SOGoGCSFolder <SOGoContactFolder>
|
@interface SOGoContactGCSFolder : SOGoGCSFolder <SOGoContactFolder>
|
||||||
|
|
||||||
|
- (void) fixupContactRecord: (NSMutableDictionary *) contactRecord;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
#endif /* __Contacts_SOGoContactGCSFolder_H__ */
|
#endif /* __Contacts_SOGoContactGCSFolder_H__ */
|
||||||
|
|
|
@ -232,13 +232,33 @@
|
||||||
return qualifier;
|
return qualifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void) fixupContactRecord: (NSMutableDictionary *) contactRecord
|
||||||
|
{
|
||||||
|
NSString *data;
|
||||||
|
|
||||||
|
data = [contactRecord objectForKey: @"c_cn"];
|
||||||
|
if (![data length])
|
||||||
|
{
|
||||||
|
data = [contactRecord keysWithFormat: @"%{c_givenname} %{c_sn}"];
|
||||||
|
[contactRecord setObject: data forKey: @"c_cn"];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (![contactRecord objectForKey: @"c_mail"])
|
||||||
|
[contactRecord setObject: @"" forKey: @"c_mail"];
|
||||||
|
if (![contactRecord objectForKey: @"c_screenname"])
|
||||||
|
[contactRecord setObject: @"" forKey: @"c_screenname"];
|
||||||
|
if (![contactRecord objectForKey: @"c_o"])
|
||||||
|
[contactRecord setObject: @"" forKey: @"c_o"];
|
||||||
|
if (![contactRecord objectForKey: @"c_telephonenumber"])
|
||||||
|
[contactRecord setObject: @"" forKey: @"c_telephonenumber"];
|
||||||
|
}
|
||||||
|
|
||||||
- (NSArray *) _flattenedRecords: (NSArray *) records
|
- (NSArray *) _flattenedRecords: (NSArray *) records
|
||||||
{
|
{
|
||||||
NSMutableArray *newRecords;
|
NSMutableArray *newRecords;
|
||||||
NSEnumerator *oldRecords;
|
NSEnumerator *oldRecords;
|
||||||
NSDictionary *oldRecord;
|
NSDictionary *oldRecord;
|
||||||
NSMutableDictionary *newRecord;
|
NSMutableDictionary *newRecord;
|
||||||
NSString *data;
|
|
||||||
|
|
||||||
newRecords = [NSMutableArray arrayWithCapacity: [records count]];
|
newRecords = [NSMutableArray arrayWithCapacity: [records count]];
|
||||||
|
|
||||||
|
@ -246,40 +266,8 @@
|
||||||
oldRecord = [oldRecords nextObject];
|
oldRecord = [oldRecords nextObject];
|
||||||
while (oldRecord)
|
while (oldRecord)
|
||||||
{
|
{
|
||||||
newRecord = [NSMutableDictionary new];
|
newRecord = [NSMutableDictionary dictionaryWithDictionary: oldRecord];
|
||||||
[newRecord autorelease];
|
[self fixupContactRecord: newRecord];
|
||||||
|
|
||||||
[newRecord setObject: [oldRecord objectForKey: @"c_name"]
|
|
||||||
forKey: @"c_uid"];
|
|
||||||
[newRecord setObject: [oldRecord objectForKey: @"c_name"]
|
|
||||||
forKey: @"c_name"];
|
|
||||||
|
|
||||||
data = [oldRecord objectForKey: @"c_cn"];
|
|
||||||
if (![data length])
|
|
||||||
data = [oldRecord keysWithFormat: @"%{c_givenname} %{c_sn}"];
|
|
||||||
[newRecord setObject: data
|
|
||||||
forKey: @"displayName"];
|
|
||||||
|
|
||||||
data = [oldRecord objectForKey: @"c_mail"];
|
|
||||||
if (!data)
|
|
||||||
data = @"";
|
|
||||||
[newRecord setObject: data forKey: @"mail"];
|
|
||||||
|
|
||||||
data = [oldRecord objectForKey: @"c_screenname"];
|
|
||||||
if (!data)
|
|
||||||
data = @"";
|
|
||||||
[newRecord setObject: data forKey: @"screenName"];
|
|
||||||
|
|
||||||
data = [oldRecord objectForKey: @"c_o"];
|
|
||||||
if (!data)
|
|
||||||
data = @"";
|
|
||||||
[newRecord setObject: data forKey: @"org"];
|
|
||||||
|
|
||||||
data = [oldRecord objectForKey: @"c_telephonenumber"];
|
|
||||||
if (![data length])
|
|
||||||
data = @"";
|
|
||||||
[newRecord setObject: data forKey: @"phone"];
|
|
||||||
|
|
||||||
[newRecords addObject: newRecord];
|
[newRecords addObject: newRecord];
|
||||||
oldRecord = [oldRecords nextObject];
|
oldRecord = [oldRecords nextObject];
|
||||||
}
|
}
|
||||||
|
|
|
@ -167,11 +167,12 @@
|
||||||
if (!obj)
|
if (!obj)
|
||||||
{
|
{
|
||||||
ldifEntry = [ldapSource lookupContactEntryWithUIDorEmail: objectName];
|
ldifEntry = [ldapSource lookupContactEntryWithUIDorEmail: objectName];
|
||||||
obj = ((ldifEntry)
|
if (ldifEntry)
|
||||||
? [SOGoContactLDIFEntry contactEntryWithName: objectName
|
obj = [SOGoContactLDIFEntry contactEntryWithName: objectName
|
||||||
withLDIFEntry: ldifEntry
|
withLDIFEntry: ldifEntry
|
||||||
inContainer: self]
|
inContainer: self];
|
||||||
: [NSException exceptionWithHTTPStatus: 404]);
|
else
|
||||||
|
obj = [NSException exceptionWithHTTPStatus: 404];
|
||||||
}
|
}
|
||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
|
@ -212,24 +213,24 @@
|
||||||
data = [oldRecord objectForKey: @"c_cn"];
|
data = [oldRecord objectForKey: @"c_cn"];
|
||||||
if (!data)
|
if (!data)
|
||||||
data = @"";
|
data = @"";
|
||||||
[newRecord setObject: data forKey: @"displayName"];
|
[newRecord setObject: data forKey: @"c_cn"];
|
||||||
|
|
||||||
data = [oldRecord objectForKey: @"mail"];
|
data = [oldRecord objectForKey: @"mail"];
|
||||||
if (!data)
|
if (!data)
|
||||||
data = @"";
|
data = @"";
|
||||||
[newRecord setObject: data forKey: @"mail"];
|
[newRecord setObject: data forKey: @"c_mail"];
|
||||||
|
|
||||||
data = [oldRecord objectForKey: @"nsAIMid"];
|
data = [oldRecord objectForKey: @"nsAIMid"];
|
||||||
if (![data length])
|
if (![data length])
|
||||||
data = [oldRecord objectForKey: @"nscpaimscreenname"];
|
data = [oldRecord objectForKey: @"nscpaimscreenname"];
|
||||||
if (![data length])
|
if (![data length])
|
||||||
data = @"";
|
data = @"";
|
||||||
[newRecord setObject: data forKey: @"screenName"];
|
[newRecord setObject: data forKey: @"c_screenname"];
|
||||||
|
|
||||||
data = [oldRecord objectForKey: @"o"];
|
data = [oldRecord objectForKey: @"o"];
|
||||||
if (!data)
|
if (!data)
|
||||||
data = @"";
|
data = @"";
|
||||||
[newRecord setObject: data forKey: @"org"];
|
[newRecord setObject: data forKey: @"c_o"];
|
||||||
|
|
||||||
data = [oldRecord objectForKey: @"telephoneNumber"];
|
data = [oldRecord objectForKey: @"telephoneNumber"];
|
||||||
if (![data length])
|
if (![data length])
|
||||||
|
@ -238,7 +239,7 @@
|
||||||
data = [oldRecord objectForKey: @"homePhone"];
|
data = [oldRecord objectForKey: @"homePhone"];
|
||||||
if (![data length])
|
if (![data length])
|
||||||
data = @"";
|
data = @"";
|
||||||
[newRecord setObject: data forKey: @"phone"];
|
[newRecord setObject: data forKey: @"c_telephonenumber"];
|
||||||
|
|
||||||
contactInfo = [ud stringForKey: @"SOGoLDAPContactInfoAttribute"];
|
contactInfo = [ud stringForKey: @"SOGoLDAPContactInfoAttribute"];
|
||||||
if ([contactInfo length] > 0) {
|
if ([contactInfo length] > 0) {
|
||||||
|
|
|
@ -817,6 +817,8 @@ static NSArray *childRecordFields = nil;
|
||||||
if (!acls)
|
if (!acls)
|
||||||
{
|
{
|
||||||
acls = [self _fetchAclsForUser: uid forObjectAtPath: objectPath];
|
acls = [self _fetchAclsForUser: uid forObjectAtPath: objectPath];
|
||||||
|
if (!acls)
|
||||||
|
acls = [NSArray array];
|
||||||
[self _cacheRoles: acls forUser: uid forObjectAtPath: objectPath];
|
[self _cacheRoles: acls forUser: uid forObjectAtPath: objectPath];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,15 +60,6 @@
|
||||||
return currentContact;
|
return currentContact;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *) currentCName
|
|
||||||
{
|
|
||||||
NSString *cName;
|
|
||||||
|
|
||||||
cName = [currentContact objectForKey: @"c_name"];
|
|
||||||
|
|
||||||
return [cName stringByEscapingURL];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (id <WOActionResults>) mailerContactsAction
|
- (id <WOActionResults>) mailerContactsAction
|
||||||
{
|
{
|
||||||
selectorComponentClass = @"UIxContactsMailerSelection";
|
selectorComponentClass = @"UIxContactsMailerSelection";
|
||||||
|
|
|
@ -57,7 +57,6 @@
|
||||||
[attendee release];
|
[attendee release];
|
||||||
[item release];
|
[item release];
|
||||||
[inCalendar release];
|
[inCalendar release];
|
||||||
[inEvent release];
|
|
||||||
[dateFormatter release];
|
[dateFormatter release];
|
||||||
[super dealloc];
|
[super dealloc];
|
||||||
}
|
}
|
||||||
|
@ -67,7 +66,7 @@
|
||||||
- (void) resetPathCaches
|
- (void) resetPathCaches
|
||||||
{
|
{
|
||||||
[super resetPathCaches];
|
[super resetPathCaches];
|
||||||
[inEvent release]; inEvent = nil;
|
inEvent = nil;
|
||||||
[inCalendar release]; inCalendar = nil;
|
[inCalendar release]; inCalendar = nil;
|
||||||
[storedEventObject release]; storedEventObject = nil;
|
[storedEventObject release]; storedEventObject = nil;
|
||||||
[storedEvent release]; storedEvent = nil;
|
[storedEvent release]; storedEvent = nil;
|
||||||
|
@ -104,7 +103,7 @@
|
||||||
{
|
{
|
||||||
events = [[self inCalendar] events];
|
events = [[self inCalendar] events];
|
||||||
if ([events count] > 0)
|
if ([events count] > 0)
|
||||||
inEvent = [[events objectAtIndex: 0] retain];
|
inEvent = [events objectAtIndex: 0];
|
||||||
}
|
}
|
||||||
|
|
||||||
return inEvent;
|
return inEvent;
|
||||||
|
|
|
@ -74,7 +74,7 @@
|
||||||
- (void) dealloc
|
- (void) dealloc
|
||||||
{
|
{
|
||||||
[item release];
|
[item release];
|
||||||
[event release];
|
[[event parent] release];
|
||||||
[aptStartDate release];
|
[aptStartDate release];
|
||||||
[aptEndDate release];
|
[aptEndDate release];
|
||||||
[componentCalendar release];
|
[componentCalendar release];
|
||||||
|
@ -87,7 +87,7 @@
|
||||||
if (!event)
|
if (!event)
|
||||||
{
|
{
|
||||||
event = (iCalEvent *) [[self clientObject] occurence];
|
event = (iCalEvent *) [[self clientObject] occurence];
|
||||||
[event retain];
|
[[event parent] retain];
|
||||||
}
|
}
|
||||||
|
|
||||||
return event;
|
return event;
|
||||||
|
|
|
@ -67,7 +67,7 @@
|
||||||
[statusDate release];
|
[statusDate release];
|
||||||
[status release];
|
[status release];
|
||||||
[statusPercent release];
|
[statusPercent release];
|
||||||
[todo release];
|
[[todo parent] release];
|
||||||
[super dealloc];
|
[super dealloc];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@
|
||||||
if (!todo)
|
if (!todo)
|
||||||
{
|
{
|
||||||
todo = (iCalToDo *) [[self clientObject] component: YES secure: YES];
|
todo = (iCalToDo *) [[self clientObject] component: YES secure: YES];
|
||||||
[todo retain];
|
[[todo parent] retain];
|
||||||
}
|
}
|
||||||
|
|
||||||
return todo;
|
return todo;
|
||||||
|
|
|
@ -29,14 +29,13 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
<var:foreach list="contactInfos" item="currentContact">
|
<var:foreach list="contactInfos" item="currentContact">
|
||||||
<tr class="tableview"
|
<tr class="tableview"
|
||||||
var:id="currentCName"
|
var:id="currentContact.c_name"
|
||||||
var:contactname="currentContact.displayName"
|
var:contactname="currentContact.c_cn">
|
||||||
var:contactid="currentContact.c_uid">
|
<td class="displayName"><var:string value="currentContact.c_cn" const:escapeHTML="YES" /></td>
|
||||||
<td class="displayName"><var:string value="currentContact.displayName" const:escapeHTML="YES" /></td>
|
<td><var:string value="currentContact.c_mail"/></td>
|
||||||
<td><var:string value="currentContact.mail"/></td>
|
<td><var:string value="currentContact.c_screenname"/></td>
|
||||||
<td><var:string value="currentContact.screenName"/></td>
|
<td><var:string value="currentContact.c_o"/></td>
|
||||||
<td><var:string value="currentContact.org"/></td>
|
<td><var:string value="currentContact.c_telephonenumber"/></td>
|
||||||
<td><var:string value="currentContact.phone"/></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</var:foreach>
|
</var:foreach>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -351,10 +351,10 @@ function moveTo(uri) {
|
||||||
|
|
||||||
/* contact menu entries */
|
/* contact menu entries */
|
||||||
function onContactRowDblClick(event) {
|
function onContactRowDblClick(event) {
|
||||||
var contactId = this.getAttribute('contactid');
|
var cname = this.getAttribute('id');
|
||||||
|
|
||||||
openContactWindow(URLForFolderID(Contact.currentAddressBook)
|
openContactWindow(URLForFolderID(Contact.currentAddressBook)
|
||||||
+ "/" + contactId + "/edit", contactId);
|
+ "/" + cname + "/edit", cname);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -364,7 +364,7 @@ function onContactSelectionChange(event) {
|
||||||
|
|
||||||
if (rows.length == 1) {
|
if (rows.length == 1) {
|
||||||
var node = $(rows[0]);
|
var node = $(rows[0]);
|
||||||
loadContact(node.getAttribute('contactid'));
|
loadContact(node.getAttribute('id'));
|
||||||
}
|
}
|
||||||
else if (rows.length > 1) {
|
else if (rows.length > 1) {
|
||||||
$('contactView').update();
|
$('contactView').update();
|
||||||
|
@ -551,7 +551,7 @@ function onConfirmContactSelection(event) {
|
||||||
var contactsList = $("contactsList");
|
var contactsList = $("contactsList");
|
||||||
var rows = contactsList.getSelectedRows();
|
var rows = contactsList.getSelectedRows();
|
||||||
for (i = 0; i < rows.length; i++) {
|
for (i = 0; i < rows.length; i++) {
|
||||||
var cid = rows[i].getAttribute("contactid");
|
var cid = rows[i].getAttribute("id");
|
||||||
var cname = '' + rows[i].getAttribute("contactname");
|
var cname = '' + rows[i].getAttribute("contactname");
|
||||||
var email = '' + rows[i].cells[1].innerHTML;
|
var email = '' + rows[i].cells[1].innerHTML;
|
||||||
|
|
||||||
|
@ -562,10 +562,10 @@ function onConfirmContactSelection(event) {
|
||||||
preventDefault(event);
|
preventDefault(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
function refreshContacts(contactId) {
|
function refreshContacts(cname) {
|
||||||
openContactsFolder(Contact.currentAddressBook, true, contactId);
|
openContactsFolder(Contact.currentAddressBook, true, cname);
|
||||||
delete cachedContacts[Contact.currentAddressBook + "/" + contactId];
|
delete cachedContacts[Contact.currentAddressBook + "/" + cname];
|
||||||
loadContact(contactId);
|
loadContact(cname);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -207,7 +207,7 @@ function openUserFolderSelector(callback, type) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function openContactWindow(url, wId) {
|
function openContactWindow(url, wId) {
|
||||||
if (typeof wId == "undefined")
|
if (!wId)
|
||||||
wId = "_blank";
|
wId = "_blank";
|
||||||
else {
|
else {
|
||||||
wId = sanitizeWindowName(wId);
|
wId = sanitizeWindowName(wId);
|
||||||
|
@ -223,7 +223,7 @@ function openContactWindow(url, wId) {
|
||||||
function openMailComposeWindow(url, wId) {
|
function openMailComposeWindow(url, wId) {
|
||||||
var parentWindow = this;
|
var parentWindow = this;
|
||||||
|
|
||||||
if (typeof wId == "undefined")
|
if (!wId)
|
||||||
wId = "_blank";
|
wId = "_blank";
|
||||||
else {
|
else {
|
||||||
wId = sanitizeWindowName(wId);
|
wId = sanitizeWindowName(wId);
|
||||||
|
|
Loading…
Reference in New Issue