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

View file

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

View file

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