Monotone-Parent: 3db701467b1629fef3baaecc995b170c04847ae0

Monotone-Revision: 0e4026f4e1fdce64a64a67f1a4769316ea49d102

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2006-09-15T22:25:43
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2006-09-15 22:25:43 +00:00
parent 1dda2ab545
commit 988f56a95d
3 changed files with 45 additions and 360 deletions

View File

@ -1,5 +1,10 @@
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
since subclass "UIxContactEditor" did nothing. Implemented code to
display and modify the values parsed from the vcards, displayed in

View File

@ -84,8 +84,18 @@
- (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: "
value: [card preferredEMail]];
value: mailTo];
}
- (NSString *) preferredTel
@ -221,22 +231,32 @@
return [self _cardStringWithLabel: nil value: data];
}
- (NSString *) homeUrl
- (NSString *) _urlOfType: (NSString *) aType
{
NSArray *elements;
NSString *data;
NSString *data, *url;
elements = [card childrenWithTag: @"url"
andAttribute: @"type"
havingValue: @"home"];
havingValue: aType];
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
data = nil;
return [self _cardStringWithLabel: nil value: data];
}
- (NSString *) homeUrl
{
return [self _urlOfType: @"home"];
}
- (BOOL) hasWorkInfos
{
BOOL result;
@ -273,7 +293,7 @@
org = [card org];
if (org && [org count] > 1)
{
aRange = NSMakeRange (1, [org count] - 2);
aRange = NSMakeRange (1, [org count] - 1);
orgServices = [org subarrayWithRange: aRange];
services = [orgServices componentsJoinedByString: @", "];
}
@ -348,25 +368,12 @@
- (NSString *) workUrl
{
NSArray *elements;
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];
return [self _urlOfType: @"home"];
}
- (BOOL) hasOtherInfos
{
return ([card note]
|| [card bday]
|| [card tz]);
return ([card note] || [card bday] || [card tz]);
}
- (NSString *) bday
@ -416,16 +423,16 @@
WOResponse *response;
card = [[self clientObject] vCard];
if (!card)
return [NSException exceptionWithHTTPStatus: 404 /* Not Found */
reason:@"could not locate contact"];
else
if (card)
{
response = [WOResponse new];
[response autorelease];
[response setHeader: @"text/vcard" forKey: @"Content-type"];
[response appendContentString: [card versitString]];
}
else
return [NSException exceptionWithHTTPStatus: 404 /* Not Found */
reason:@"could not locate contact"];
return response;
}
@ -433,14 +440,17 @@
- (id <WOActionResults>) defaultAction
{
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 */
reason:@"could not locate contact"];
phones = nil;
homeAdr = nil;
workAdr = nil;
return self;
}

View File

@ -72,334 +72,4 @@
</div>
</var:if>
</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>