tabWidth = 8;
usesTabs = 1;
};
+ AD494C6106F5EA6600E51EC9 = {
+ fileEncoding = 4;
+ isa = PBXFileReference;
+ lastKnownFileType = text.xml;
+ path = UIxContactSelector.wox;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ AD494C6206F5EA6600E51EC9 = {
+ fileEncoding = 4;
+ indentWidth = 2;
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.objc;
+ path = UIxContactSelector.m;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ AD494C8D06F606F900E51EC9 = {
+ fileEncoding = 4;
+ isa = PBXFileReference;
+ lastKnownFileType = text.xml;
+ path = UIxContactsSelectionView.wox;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ AD494C8E06F606F900E51EC9 = {
+ fileEncoding = 4;
+ indentWidth = 2;
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.objc;
+ path = UIxContactsSelectionView.m;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ AD494C9006F6072C00E51EC9 = {
+ fileEncoding = 4;
+ indentWidth = 2;
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ path = UIxContactsListView.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
AD5ED0AF06B1385700E3EC4B = {
fileEncoding = 4;
isa = PBXFileReference;
};
ADDF4B6D06DCEBB400C4E7F8 = {
children = (
+ AD494C9006F6072C00E51EC9,
ADDF4B7006DCEC4300C4E7F8,
ADDF4B6F06DCEC4300C4E7F8,
+ AD494C8E06F606F900E51EC9,
+ AD494C8D06F606F900E51EC9,
ADDF4B7306DCEC5200C4E7F8,
ADDF4B7206DCEC5200C4E7F8,
ADDF4B7606DCEC5F00C4E7F8,
ADDF4B7506DCEC5F00C4E7F8,
+ AD494C6206F5EA6600E51EC9,
+ AD494C6106F5EA6600E51EC9,
);
isa = PBXGroup;
name = Components;
Select a set of attendees using Anais.
Bindings:
- attendees - array of iCalPerson objects
- selectorID - string to be used as the identifier for form/JS elements
- withCN - show CN of person (eg disabled for resources)
- division - Anais division
- emailForUser - default EMail
- cnForUser - default CN
- role - role for submitted attendees
+ attendees - array of iCalPerson objects
+ selectorID - string to be used as the identifier for form/JS elements
+ withCN - show CN of person (eg disabled for resources)
+ withAddressBook - allow selection from private address book (default:NO)
+ division - Anais division
+ emailForUser - default EMail
+ cnForUser - default CN
+ role - role for submitted attendees
Sample:
<var:component className="AnaisAttendeeSelector"
NSString *role;
struct {
int withCN:1;
- int reserved:31;
+ int withAddressBook:1;
+ int reserved:30;
} flags;
}
return self->flags.withCN ? YES : NO;
}
+- (void)setWithAddressBook:(BOOL)_flag {
+ self->flags.withAddressBook = _flag ? 1 : 0;
+}
+- (BOOL)withAddressBook {
+ return self->flags.withAddressBook ? YES : NO;
+}
+
- (void)setAttendee:(iCalPerson *)_attendee {
ASSIGN(self->attendee, _attendee);
}
var:windowId="windowId"
var:division="division"
var:callback="callbackName" />
+ <var:if condition="withAddressBook">
+ <var:component className="UIxContactSelector"
+ label:title="Search in Addressbook"
+ var:windowId="windowId"
+ var:callback="callbackName" />
+ </var:if>
<hr />
<table var:id="tableId">
<var:if condition="showDefaultAttendees">
+2004-09-13 Marcus Mueller <znek@mulle-kybernetik.com>
+
+ * v0.9.13
+
+ * AnaisAttendeeSelector.[m|wox]: new binding "withAddressBook", if
+ YES will add a button to open the private addressbook. Default is
+ NO.
+
+ * {English|French}.lproj/default.strings: new localizable string
+
2004-09-10 Marcus Mueller <znek@mulle-kybernetik.com>
* AnaisSelector.wox, AnaisUidSelector.wox: use the new button_submit
// open Anais dialog
"Search in Anais" = "Search in Anaïs";
+// open private Addressbook
+"Search in Addressbook" = "Search in Addressbook";
// add myself to the list of uids to display
"me too" = "me too";
// clear the list of uids
// open Anais dialog
"Search in Anais" = "Search in Anaïs";
+// open private Addressbook
+"Search in Addressbook" = "Search in Addressbook";
// add myself to the list of uids to display
"me too" = "me too";
// clear the list of uids
# $Id: Version 165 2004-08-05 17:55:50Z znek $
-SUBMINOR_VERSION:=12
+SUBMINOR_VERSION:=13
+2004-09-13 Marcus Mueller <znek@mulle-kybernetik.com>
+
+ * v0.9.10
+
+ * UIxContactsListView.h: new header for subclassers
+
+ * UIxContactsSelectionView.[m|wox]: new subclass of UIxContactsListView
+ which is basically the same only in its own window frame to mimic
+ the appearance of Anais.
+
+ * UIxContactSelector.[m|wox]: component for opening
+ UIxContactsSelectionView in a separate window
+
+ * product.plist: new method "select"
+
2004-09-03 Marcus Mueller <znek@mulle-kybernetik.com>
* UIxContactView.wox: added some more properties for display (v0.9.9)
ContactsUIProduct.m \
\
UIxContactsListView.m \
+ UIxContactsSelectionView.m \
UIxContactView.m \
UIxContactEditor.m \
+ UIxContactSelector.m \
ContactsUI_RESOURCE_FILES += \
Version \
ContactsUI_RESOURCE_FILES += \
UIxContactsListView.wox \
+ UIxContactsSelectionView.wox \
UIxContactView.wox \
UIxContactEditor.wox \
+ UIxContactSelector.wox \
ContactsUI_LOCALIZED_RESOURCE_FILES += \
default.strings \
--- /dev/null
+/*
+ Copyright (C) 2000-2004 SKYRIX Software AG
+
+ This file is part of OGo
+
+ OGo is free software; you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ OGo is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with OGo; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA.
+ */
+// $Id$
+
+
+#include <SOGoUI/UIxComponent.h>
+
+@interface UIxContactSelector : UIxComponent
+{
+ NSString *title;
+ NSString *windowId;
+ NSString *callback;
+}
+
+- (void)setTitle:(NSString *)_title;
+- (NSString *)title;
+- (void)setWindowId:(NSString *)_winId;
+- (NSString *)windowId;
+- (void)setCallback:(NSString *)_callback;
+- (NSString *)callback;
+
+- (NSString *)jsFunctionName;
+- (NSString *)jsFunctionHref;
+- (NSString *)jsCode;
+@end
+
+#include "common.h"
+
+@implementation UIxContactSelector
+
+- (id)init {
+ if ((self = [super init])) {
+ [self setTitle:@"UIxContacts"];
+ [self setWindowId:@"UIxContacts"];
+ [self setCallback:@"undefined"];
+ }
+ return self;
+}
+
+- (void)dealloc {
+ [self->title release];
+ [self->windowId release];
+ [self->callback release];
+ [super dealloc];
+}
+
+/* accessors */
+
+- (void)setTitle:(NSString *)_title {
+ ASSIGNCOPY(self->title, _title);
+}
+- (NSString *)title {
+ return self->title;
+}
+
+- (void)setWindowId:(NSString *)_winId {
+ ASSIGNCOPY(self->windowId, _winId);
+}
+- (NSString *)windowId {
+ return self->windowId;
+}
+
+- (void)setCallback:(NSString *)_callback {
+ ASSIGNCOPY(self->callback, _callback);
+}
+- (NSString *)callback {
+ return self->callback;
+}
+
+/* JavaScript */
+
+- (NSString *)jsFunctionName {
+ return [NSString stringWithFormat:@"openUIxContactsListViewWindowWithId%@",
+ [self windowId]];
+}
+
+- (NSString *)jsFunctionHref {
+ return [NSString stringWithFormat:@"javascript:%@()",
+ [self jsFunctionName]];
+}
+
+- (NSString *)jsCode {
+ static NSString *codeFmt = \
+ @"function %@() {\n"
+ @" var url = '../../Contacts/select?callback=%@';\n"
+ @" var contactsWindow = window.open(url, '%@', 'width=420, height=400, left=10, top=10, toolbar=no, dependent=yes, menubar=no, location=no, resizable=yes, scrollbars=yes, directories=no, status=no');\n"
+ @" contactsWindow.focus();\n"
+ @"}";
+ return [NSString stringWithFormat:codeFmt,
+ [self jsFunctionName],
+ [self callback],
+ [self windowId]];
+}
+
+@end /* UIxContactSelector */
--- /dev/null
+<?xml version='1.0' standalone='yes'?>
+<span xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:var="http://www.skyrix.com/od/binding"
+ xmlns:const="http://www.skyrix.com/od/constant"
+ xmlns:rsrc="OGo:url"
+ class="button_submit_env"
+>
+ <script language="JavaScript">
+ <var:string value="jsCode" const:escapeHTML="NO" />
+ </script>
+ <a var:href="jsFunctionHref"
+ class="button_submit"
+ ><var:string value="title" /></a>
+</span>
--- /dev/null
+/*
+ Copyright (C) 2004 SKYRIX Software AG
+
+ This file is part of OpenGroupware.org.
+
+ OGo is free software; you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ OGo is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with OGo; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA.
+ */
+// $Id$
+
+
+#include <SOGoUI/UIxComponent.h>
+
+@interface UIxContactsListView : UIxComponent
+{
+ NSArray *allRecords;
+ NSArray *filteredRecords;
+ NSString *searchText;
+ id contact;
+}
+
+@end
// $Id$
-#include <SOGoUI/UIxComponent.h>
-
-@interface UIxContactsListView : UIxComponent
-{
- NSArray *allRecords;
- NSArray *filteredRecords;
- NSString *searchText;
- id contact;
-}
-
-@end
-
+#include "UIxContactsListView.h"
#include <Contacts/SOGoContactFolder.h>
#include "common.h"
--- /dev/null
+/*
+ Copyright (C) 2000-2004 SKYRIX Software AG
+
+ This file is part of OGo
+
+ OGo is free software; you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ OGo is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with OGo; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA.
+ */
+// $Id$
+
+
+#include "UIxContactsListView.h"
+
+
+@interface UIxContactsSelectionView : UIxContactsListView
+{
+ NSString *callback;
+}
+@end
+
+#include "common.h"
+
+@implementation UIxContactsSelectionView
+
+- (void)dealloc {
+ [self->callback release];
+ [super dealloc];
+}
+
+- (NSString *)callback {
+ if(!self->callback) {
+ WORequest *r = [[self context] request];
+ self->callback = [[r formValueForKey:@"callback"] retain];
+ }
+ return self->callback;
+}
+
+- (NSString *)jsOnClickCode {
+ static NSString *jsCode = @"javascript:opener.window.%@" \
+ @"('', '%@', '', '%@', '', '');";
+ NSString *cn;
+
+ cn = [NSString stringWithFormat:@"%@ %@",
+ [self->contact valueForKey:@"sn"],
+ [self->contact valueForKey:@"givenname"]];
+
+ return [NSString stringWithFormat:jsCode,
+ [self callback],
+ cn,
+ [self->contact valueForKey:@"mail"]];
+}
+
+@end /* UIxContactsInlineListView */
--- /dev/null
+<?xml version='1.0' standalone='yes'?>
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:var="http://www.skyrix.com/od/binding"
+ xmlns:const="http://www.skyrix.com/od/constant"
+ xmlns:rsrc="OGo:url"
+ xmlns:label="OGo:label"
+>
+ <head>
+ <title>
+ <var:string label:value="Addressbook"/>
+ </title>
+ <meta name="description" content="SOGo Web Interface"/>
+ <meta name="author" content="SKYRIX Software AG"/>
+ <meta name="robots" content="stop"/>
+ <link type="text/css" rel="stylesheet" rsrc:href="uix.css"/>
+ <link type="text/css" rel="stylesheet" rsrc:href="calendar.css"/>
+ <link href="mailto:hh@skyrix.com" rev="made"/>
+ <style>
+ table.contacttableview {
+ text-decoration: none;
+ font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
+ font-size: 9pt;
+ color: #000000;
+ }
+ table.contacttableview th {
+ text-align: left;
+ }
+ input.searchfield {
+ font-size: 8pt;
+ }
+ </style>
+ </head>
+ <body>
+ <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="Addressbook"/></span>
+ </td>
+ <td width="36" align="right" valign="center">
+ <var:component className="UIxWinClose"/>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td id="skywinbodycell" class="wincontent">
+ <form name="searchform" var:href="view" var:_sort="sortKey"
+ method="GET">
+ <table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="4" width="100%" cellspacing="0">
+ <tr bgcolor="#e8e8e0">
+ <td align="left">
+ <input type="text" name="search" class="searchfield"
+ var:value="searchText" />
+ </td>
+ </tr>
+ </table>
+
+ <!-- the content -->
+ <table border="0" width="100%" class="contacttableview">
+ <tr>
+ <!-- localize -->
+ <th>
+ <var:if condition="sortKey" const:value="sn"
+ const:negate="YES">
+ <a href="view"
+ _sort="sn"
+ var:_search="searchText"
+ ><var:string label:value="Lastname" /></a>
+ </var:if>
+ <var:if condition="sortKey" const:value="sn">
+ <i><var:string label:value="Lastname" /></i>
+ </var:if>
+ </th>
+ <th>
+ <var:if condition="sortKey" const:value="givenname"
+ const:negate="YES">
+ <a href="view"
+ _sort="givenname"
+ var:_search="searchText"
+ ><var:string label:value="Firstname" /></a>
+ </var:if>
+ <var:if condition="sortKey" const:value="givenname">
+ <i><var:string label:value="Firstname" /></i>
+ </var:if>
+ </th>
+ <th>
+ <var:if condition="sortKey" const:value="mail"
+ const:negate="YES">
+ <a href="view"
+ _sort="mail"
+ var:_search="searchText"
+ ><var:string label:value="EMail" /></a>
+ </var:if>
+ <var:if condition="sortKey" const:value="mail">
+ <i><var:string label:value="EMail" /></i>
+ </var:if>
+ </th>
+ <th>
+ <var:string label:value="Phone" />
+ </th>
+ <th>
+ <var:string label:value="Location" />
+ </th>
+ </tr>
+ <var:foreach list="contactInfos" item="contact">
+ <tr>
+ <td>
+ <a var:href="jsOnClickCode"
+ ><var:string value="contact.sn" /></a>
+ </td>
+ <td><var:string value="contact.givenname" /></td>
+ <td><var:string value="contact.mail" /></td>
+ <td><var:string value="contact.telephonenumber" /></td>
+ <td><var:string value="contact.l" /></td>
+ </tr>
+ </var:foreach>
+ </table>
+ </td>
+ </tr>
+
+ <tr bgcolor="#F5F5E9">
+ <td align="left" width="10">
+ <var:entity const:name="nbsp"/>
+ </td>
+ <td align="right">
+ <img border="0"
+ alt=""
+ src="/sogod.woa/so/ControlPanel/Products/CommonUI/Resources/corner_right.gif"
+ />
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" bgcolor="#F5F5E9">
+ <table border="0" width="100%" cellpadding="10" cellspacing="0">
+ <tr/>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </td>
+ </tr>
+ </table>
+ <var:if condition="isUIxDebugEnabled">
+ <hr />
+ <small>clientObject: <var:string value="clientObject" /></small>
+ </var:if>
+ </body>
+</html>
\ No newline at end of file
# $Id$
-SUBMINOR_VERSION:=9
+SUBMINOR_VERSION:=10
pageName = "UIxContactEditor";
actionName = "new";
};
+ select = {
+ protectedBy = "View";
+ pageName = "UIxContactsSelectionView";
+ };
};
};
+2004-09-13 Marcus Mueller <znek@mulle-kybernetik.com>
+
+ * English.lproj/default.strings: fixed a missing ';' (v0.9.82)
+
2004-09-10 Marcus Mueller <znek@mulle-kybernetik.com>
* v0.9.81
/* Misc */
-"OpenGroupware.org" = "OpenGroupware.org"
+"OpenGroupware.org" = "OpenGroupware.org";
/* Button titles */
<td align="left" bgcolor="#FFFFF0">
<span class="aptview_text">
<var:component className="AnaisAttendeeSelector"
- const:selectorID="participant"
- const:division="CC"
- const:withCN="YES"
- const:role="REQ-PARTICIPANT"
- attendees="participants"
- var:emailForUser="emailForUser"
- var:cnForUser="cnForUser"
+ const:selectorID="participant"
+ const:division="CC"
+ const:withCN="YES"
+ const:role="REQ-PARTICIPANT"
+ attendees="participants"
+ var:emailForUser="emailForUser"
+ var:cnForUser="cnForUser"
+ const:withAddressBook="YES"
/>
</span>
</td>
<td align="left" bgcolor="#FFFFF0">
<span class="aptview_text">
<var:component className="AnaisAttendeeSelector"
- const:selectorID="resource"
- const:role="NON-PARTICIPANT"
- attendees="resources"
- const:division="CC"
+ const:selectorID="resource"
+ const:role="NON-PARTICIPANT"
+ attendees="resources"
+ const:division="CC"
/>
</span>
</td>
# $Id$
-SUBMINOR_VERSION:=81
+SUBMINOR_VERSION:=82
# v0.9.70 requires libNGExtensions v4.3.107
# v0.9.67 requires SOPE 4.3