Monotone-Parent: 3db701467b1629fef3baaecc995b170c04847ae0
Monotone-Revision: 0e4026f4e1fdce64a64a67f1a4769316ea49d102 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2006-09-15T22:25:43 Monotone-Branch: ca.inverse.sogomaint-2.0.2
parent
1dda2ab545
commit
988f56a95d
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue