Monotone-Parent: 3db701467b1629fef3baaecc995b170c04847ae0
Monotone-Revision: 0e4026f4e1fdce64a64a67f1a4769316ea49d102 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2006-09-15T22:25:43 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
parent
1dda2ab545
commit
988f56a95d
|
@ -1,5 +1,10 @@
|
||||||
2006-09-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
2006-09-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||||
|
|
||||||
|
* UI/Contacts/UIxContactView.m ([UIxContactView -preferredEmail]):
|
||||||
|
return a string with a "mailto" url.
|
||||||
|
([UIxContactView -_urlOfType:aType]): generic method to return a
|
||||||
|
url string with a html anchor pointing to it.
|
||||||
|
|
||||||
* UI/Contacts/UIxContactEditor.[hm]: UIxContactEditorBase renamed
|
* UI/Contacts/UIxContactEditor.[hm]: UIxContactEditorBase renamed
|
||||||
since subclass "UIxContactEditor" did nothing. Implemented code to
|
since subclass "UIxContactEditor" did nothing. Implemented code to
|
||||||
display and modify the values parsed from the vcards, displayed in
|
display and modify the values parsed from the vcards, displayed in
|
||||||
|
|
|
@ -84,8 +84,18 @@
|
||||||
|
|
||||||
- (NSString *) preferredEmail
|
- (NSString *) preferredEmail
|
||||||
{
|
{
|
||||||
|
NSString *email, *mailTo;
|
||||||
|
|
||||||
|
email = [card preferredEMail];
|
||||||
|
if (email && [email length] > 0)
|
||||||
|
mailTo = [NSString stringWithFormat: @"<a href=\"mailto:%@\""
|
||||||
|
@" onclick=\"return onContactMailTo(this);\">"
|
||||||
|
@"%@</a>", email, email];
|
||||||
|
else
|
||||||
|
mailTo = nil;
|
||||||
|
|
||||||
return [self _cardStringWithLabel: @"Email Address: "
|
return [self _cardStringWithLabel: @"Email Address: "
|
||||||
value: [card preferredEMail]];
|
value: mailTo];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *) preferredTel
|
- (NSString *) preferredTel
|
||||||
|
@ -221,22 +231,32 @@
|
||||||
return [self _cardStringWithLabel: nil value: data];
|
return [self _cardStringWithLabel: nil value: data];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *) homeUrl
|
- (NSString *) _urlOfType: (NSString *) aType
|
||||||
{
|
{
|
||||||
NSArray *elements;
|
NSArray *elements;
|
||||||
NSString *data;
|
NSString *data, *url;
|
||||||
|
|
||||||
elements = [card childrenWithTag: @"url"
|
elements = [card childrenWithTag: @"url"
|
||||||
andAttribute: @"type"
|
andAttribute: @"type"
|
||||||
havingValue: @"home"];
|
havingValue: aType];
|
||||||
if ([elements count] > 0)
|
if ([elements count] > 0)
|
||||||
data = [[elements objectAtIndex: 0] value: 0];
|
{
|
||||||
|
url = [[elements objectAtIndex: 0] value: 0];
|
||||||
|
data = [NSString stringWithFormat:
|
||||||
|
@"<a href=\"%@\" onclick=\"return openExternalLink(this);\">%@</a>",
|
||||||
|
url, url];
|
||||||
|
}
|
||||||
else
|
else
|
||||||
data = nil;
|
data = nil;
|
||||||
|
|
||||||
return [self _cardStringWithLabel: nil value: data];
|
return [self _cardStringWithLabel: nil value: data];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (NSString *) homeUrl
|
||||||
|
{
|
||||||
|
return [self _urlOfType: @"home"];
|
||||||
|
}
|
||||||
|
|
||||||
- (BOOL) hasWorkInfos
|
- (BOOL) hasWorkInfos
|
||||||
{
|
{
|
||||||
BOOL result;
|
BOOL result;
|
||||||
|
@ -273,7 +293,7 @@
|
||||||
org = [card org];
|
org = [card org];
|
||||||
if (org && [org count] > 1)
|
if (org && [org count] > 1)
|
||||||
{
|
{
|
||||||
aRange = NSMakeRange (1, [org count] - 2);
|
aRange = NSMakeRange (1, [org count] - 1);
|
||||||
orgServices = [org subarrayWithRange: aRange];
|
orgServices = [org subarrayWithRange: aRange];
|
||||||
services = [orgServices componentsJoinedByString: @", "];
|
services = [orgServices componentsJoinedByString: @", "];
|
||||||
}
|
}
|
||||||
|
@ -348,25 +368,12 @@
|
||||||
|
|
||||||
- (NSString *) workUrl
|
- (NSString *) workUrl
|
||||||
{
|
{
|
||||||
NSArray *elements;
|
return [self _urlOfType: @"home"];
|
||||||
NSString *data;
|
|
||||||
|
|
||||||
elements = [card childrenWithTag: @"url"
|
|
||||||
andAttribute: @"type"
|
|
||||||
havingValue: @"work"];
|
|
||||||
if ([elements count] > 0)
|
|
||||||
data = [[elements objectAtIndex: 0] value: 0];
|
|
||||||
else
|
|
||||||
data = nil;
|
|
||||||
|
|
||||||
return [self _cardStringWithLabel: nil value: data];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL) hasOtherInfos
|
- (BOOL) hasOtherInfos
|
||||||
{
|
{
|
||||||
return ([card note]
|
return ([card note] || [card bday] || [card tz]);
|
||||||
|| [card bday]
|
|
||||||
|| [card tz]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *) bday
|
- (NSString *) bday
|
||||||
|
@ -416,16 +423,16 @@
|
||||||
WOResponse *response;
|
WOResponse *response;
|
||||||
|
|
||||||
card = [[self clientObject] vCard];
|
card = [[self clientObject] vCard];
|
||||||
if (!card)
|
if (card)
|
||||||
return [NSException exceptionWithHTTPStatus: 404 /* Not Found */
|
|
||||||
reason:@"could not locate contact"];
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
response = [WOResponse new];
|
response = [WOResponse new];
|
||||||
[response autorelease];
|
[response autorelease];
|
||||||
[response setHeader: @"text/vcard" forKey: @"Content-type"];
|
[response setHeader: @"text/vcard" forKey: @"Content-type"];
|
||||||
[response appendContentString: [card versitString]];
|
[response appendContentString: [card versitString]];
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
return [NSException exceptionWithHTTPStatus: 404 /* Not Found */
|
||||||
|
reason:@"could not locate contact"];
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
@ -433,14 +440,17 @@
|
||||||
- (id <WOActionResults>) defaultAction
|
- (id <WOActionResults>) defaultAction
|
||||||
{
|
{
|
||||||
card = [[self clientObject] vCard];
|
card = [[self clientObject] vCard];
|
||||||
if (!card)
|
if (card)
|
||||||
|
{
|
||||||
|
NSLog (@"displaying card for contact id: %@", [[self clientObject] nameInContainer]);
|
||||||
|
phones = nil;
|
||||||
|
homeAdr = nil;
|
||||||
|
workAdr = nil;
|
||||||
|
}
|
||||||
|
else
|
||||||
return [NSException exceptionWithHTTPStatus:404 /* Not Found */
|
return [NSException exceptionWithHTTPStatus:404 /* Not Found */
|
||||||
reason:@"could not locate contact"];
|
reason:@"could not locate contact"];
|
||||||
|
|
||||||
phones = nil;
|
|
||||||
homeAdr = nil;
|
|
||||||
workAdr = nil;
|
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,334 +72,4 @@
|
||||||
</div>
|
</div>
|
||||||
</var:if>
|
</var:if>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<table id="skywintable" class="wintable" cellspacing="0" cellpadding="5"
|
|
||||||
width="100%"
|
|
||||||
>
|
|
||||||
<tr>
|
|
||||||
<td class="wintitle">
|
|
||||||
<table cellpadding="0" cellspacing="0" width="100%">
|
|
||||||
<tr>
|
|
||||||
<td width="5"/>
|
|
||||||
<td class="wintitle">
|
|
||||||
<!-- localize me -->
|
|
||||||
<span class="window_label"
|
|
||||||
><var:string label:value="Contact viewer" /></span>
|
|
||||||
</td>
|
|
||||||
<td width="36" align="right" valign="center">
|
|
||||||
<var:component className="UIxWinClose"/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<table border="0" cellpadding="2" width="100%" cellspacing="0">
|
|
||||||
<tr bgcolor="#e8e8e0">
|
|
||||||
<td align="left">
|
|
||||||
<span class="aptview_title">
|
|
||||||
<var:if condition="clientObject.isVCardRecord" const:negate="1">
|
|
||||||
<var:string value="clientObject.cn"/>
|
|
||||||
</var:if>
|
|
||||||
<var:if condition="clientObject.isVCardRecord">
|
|
||||||
<var:string label:value="vCard" />:
|
|
||||||
<var:string value="clientObject.vCard.fn"/>
|
|
||||||
</var:if>
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
<td align="right" >
|
|
||||||
<table border='0' cellpadding='0' cellspacing='1'>
|
|
||||||
<tr>
|
|
||||||
<td class="button_auto_env" nowrap="true"
|
|
||||||
valign='middle' align='center'>
|
|
||||||
<a class="button_auto"
|
|
||||||
href="edit"
|
|
||||||
var:queryDictionary="queryParameters"
|
|
||||||
><var:string label:value="edit" /></a>
|
|
||||||
</td>
|
|
||||||
<td class="button_auto_env" nowrap="true"
|
|
||||||
valign='middle' align='center'>
|
|
||||||
<a class="button_auto"
|
|
||||||
href="delete"
|
|
||||||
var:queryDictionary="queryParameters"
|
|
||||||
><var:string label:value="delete" /></a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td valign="top" width="100%">
|
|
||||||
<table width="100%" border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<var:if condition="clientObject.isVCardRecord" const:negate="1">
|
|
||||||
<!-- general contact info -->
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="Name" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string value="clientObject.cn" />
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="Unit" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string value="clientObject.departmentNumber"/></span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="Location" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string value="clientObject.l" />
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</var:if>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td valign="top" width="100%">
|
|
||||||
<uix:tabview var:selection="tabSelection"
|
|
||||||
const:tabStyle="tab"
|
|
||||||
const:selectedTabStyle="tab_selected"
|
|
||||||
const:bodyStyle="tabview_body"
|
|
||||||
>
|
|
||||||
<!-- ******************** Tab for PLists ******************* -->
|
|
||||||
|
|
||||||
<var:if condition="clientObject.isVCardRecord" const:negate="1">
|
|
||||||
<uix:tab const:key="attributes"
|
|
||||||
const:label="attributes"
|
|
||||||
var:href="attributesTabLink"
|
|
||||||
>
|
|
||||||
<table width="100%" border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="EMail" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string value="clientObject.mail"/></span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="OfficePhone" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string value="clientObject.telephoneNumber"/></span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="HomePhone" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string value="clientObject.homeTelephoneNumber"/></span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="MobilePhone" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string value="clientObject.mobile"/></span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="Fax" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string value="clientObject.facsimileTelephoneNumber"
|
|
||||||
/></span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<!--
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="Organisation" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string value="clientObject.o"/></span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
-->
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="Postal" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string value="clientObject.postalAddress"
|
|
||||||
const:insertBR="YES"
|
|
||||||
/>
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="Home" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string value="clientObject.homePostalAddress"
|
|
||||||
const:insertBR="YES"
|
|
||||||
/>
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="URL" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string value="clientObject.labeledURI"/>
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</uix:tab>
|
|
||||||
</var:if>
|
|
||||||
|
|
||||||
<!-- ******************** Tab for vCards ******************* -->
|
|
||||||
|
|
||||||
<var:if condition="clientObject.isVCardRecord">
|
|
||||||
<uix:tab const:key="attributes"
|
|
||||||
const:label="attributes"
|
|
||||||
var:href="attributesTabLink"
|
|
||||||
>
|
|
||||||
<table width="100%" border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="EMail" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string
|
|
||||||
value="clientObject.vCard.preferredEMail.stringValue"/>
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="Phone" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string
|
|
||||||
value="clientObject.vCard.preferredTel.stringValue"/>
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="Address" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string
|
|
||||||
value="clientObject.vCard.preferredAdr.street"/><br />
|
|
||||||
<var:string
|
|
||||||
value="clientObject.vCard.preferredAdr.locality"/><br />
|
|
||||||
<var:string
|
|
||||||
value="clientObject.vCard.preferredAdr.country"/><br />
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="Role" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string value="clientObject.vCard.role"/></span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="Title" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string value="clientObject.vCard.title"/></span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr valign="top">
|
|
||||||
<td align="right" width="15%" bgcolor="#E8E8E0">
|
|
||||||
<span class="aptview_text"
|
|
||||||
><var:string label:value="Note" />:</span>
|
|
||||||
</td>
|
|
||||||
<td align="left" bgcolor="#FFFFF0">
|
|
||||||
<span class="aptview_text">
|
|
||||||
<var:string value="clientObject.vCard.note"/></span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</uix:tab>
|
|
||||||
</var:if>
|
|
||||||
|
|
||||||
<!-- ******************** Debugging Tab ******************** -->
|
|
||||||
|
|
||||||
<var:if condition="isUIxDebugEnabled">
|
|
||||||
<uix:tab const:key="debug"
|
|
||||||
const:label="DEBUG"
|
|
||||||
var:href="debugTabLink">
|
|
||||||
<small>
|
|
||||||
SOGo Server - <var:string value="name"/>
|
|
||||||
<br />
|
|
||||||
Client: <var:string value="clientObject"/>
|
|
||||||
<hr />
|
|
||||||
Raw :<br />
|
|
||||||
<pre><var:string value="clientObject.contentAsString"/></pre>
|
|
||||||
</small>
|
|
||||||
</uix:tab>
|
|
||||||
</var:if>
|
|
||||||
</uix:tabview>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<var:if condition="isUIxDebugEnabled">
|
|
||||||
<small>
|
|
||||||
<hr />
|
|
||||||
clientObject: <var:string value="clientObject" />
|
|
||||||
</small>
|
|
||||||
</var:if>
|
|
||||||
</var:component>
|
</var:component>
|
||||||
|
|
Loading…
Reference in a new issue