-/*
- 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$
-
-#import <NGExtensions/NGExtensions.h>
-#import <NGCards/iCalPerson.h>
-
-#import <SOGoUI/UIxComponent.h>
-#import <SOGo/AgenorUserManager.h>
-
-#import "common.h"
-
-#import "UIxContactSelector.h"
-
-@implementation UIxContactSelector
-
-- (id)init {
- if ((self = [super init])) {
- [self setTitle:@"UIxContacts"];
- [self setWindowId:@"UIxContacts"];
- [self setCallback:@"undefined"];
- checkedBoxes = nil;
- userColors = nil;
- }
- 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)setSelectorId:(NSString *)_selId {
- ASSIGNCOPY(selectorId, _selId);
-}
-
-- (NSString *)selectorId {
- return selectorId;
-}
-
-- (NSString *)selectorIdList {
- return [NSString stringWithFormat: @"uixselector-%@-uidList", selectorId];
-}
-
-- (NSString *)selectorIdDisplay {
- return [NSString stringWithFormat: @"uixselector-%@-display", selectorId];
-}
-
-- (void)setCallback:(NSString *)_callback {
- ASSIGNCOPY(self->callback, _callback);
-}
-- (NSString *)callback {
- return self->callback;
-}
-
-/* Helper */
-
-- (NSString *)relativeContactsPath {
- return [self relativePathToUserFolderSubPath:@"Contacts/select"];
-}
-
-/* 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 = '%@?callback=%@';\n"
- @" var contactsWindow = window.open(url, '%@', 'width=600, 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 relativeContactsPath],
- [self callback],
- [self windowId]];
-}
-
-- (void) setContacts: (NSArray *) _contacts
-{
- contacts = _contacts;
-}
-
-- (NSArray *) contacts
-{
- return contacts;
-}
-
-- (NSArray *) getICalPersonsFromValue: (NSString *) selectorValue
-{
- NSMutableArray *persons;
- NSEnumerator *uids;
- NSString *uid;
- AgenorUserManager *um;
-
- um = [AgenorUserManager sharedUserManager];
-
- persons = [NSMutableArray new];
- [persons autorelease];
-
- if ([selectorValue length] > 0)
- {
- uids = [[selectorValue componentsSeparatedByString: @","]
- objectEnumerator];
- uid = [uids nextObject];
- while (uid)
- {
- [persons addObject: [um iCalPersonWithUid: uid]];
- uid = [uids nextObject];
- }
- }
-
- return persons;
-}
-
-- (void) takeValuesFromRequest: (WORequest *) _rq
- inContext: (WOContext *) _ctx
-{
- contacts = [self getICalPersonsFromValue: [_rq formValueForKey: selectorId]];
- if ([contacts count] > 0)
- NSLog (@"got %i attendees: %@", [contacts count], contacts);
- else
- NSLog (@"got no attendees!");
-}
-
-- (void) setCurrentContact: (iCalPerson *) aContact
-{
- currentContact = aContact;
-}
-
-- (NSString *) initialContactsAsString
-{
- NSEnumerator *persons;
- iCalPerson *person;
- NSMutableArray *participants;
-
- participants = [NSMutableArray arrayWithCapacity: [contacts count]];
- persons = [contacts objectEnumerator];
- person = [persons nextObject];
- while (person)
- {
- [participants addObject: [person cn]];
- person = [persons nextObject];
- }
-
- return [participants componentsJoinedByString: @","];
-}
-
-- (NSString *) currentContactId
-{
- return [currentContact cn];
-}
-
-- (NSString *) currentContactName
-{
- return [currentContact cn];
-}
-
-- (void) setCheckedBoxes: (NSArray *) boxes
-{
- checkedBoxes = boxes;
-}
-
-- (void) setHasCheckBoxes: (BOOL) aBool
-{
- hasCheckBoxes = aBool;
-}
-
-- (BOOL) hasCheckBoxes
-{
- return hasCheckBoxes;
-}
-
-- (BOOL) isCheckBoxChecked
-{
- return (checkedBoxes != nil
- && [checkedBoxes containsObject: currentContact]);
-}
-
-- (void) setCheckBoxOnChange: (NSString *) aString
-{
- checkBoxOnChange = aString;
-}
-
-- (NSString *) checkBoxOnChange
-{
- return checkBoxOnChange;
-}
-
-- (void) setColors: (NSDictionary *) colors
-{
- userColors = colors;
-}
-
-- (BOOL) hasColors
-{
- return (userColors != nil);
-}
-
-- (NSString *) currentContactStyle
-{
- return [NSString stringWithFormat: @"background-color: %@;",
- [userColors objectForKey: [currentContact cn]]];
-}
-
-@end /* UIxContactSelector */