+2007-08-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
+ -bodyStructure]): fetch the "bodystructure" key instead of "body".
+
+2007-08-02 Francis Lachapelle <flachapelle@inverse.ca>
+
+ * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView _responseForResults:]):
+ has to return only one element.
+
2007-08-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer
SoObjects \
Main \
UI \
- Protocols \
+# Protocols \
include $(GNUSTEP_MAKEFILES)/aggregate.make
#import "SOGoMailObject.h"
#import "SOGoMailAccount.h"
#import "SOGoMailManager.h"
-#import "SOGoMailFolderDataSource.h"
#import "SOGoMailFolder.h"
static NSString *defaultUserID = @"anyone";
return filenames;
}
-- (EODataSource *) contentDataSourceInContext: (id) _ctx
-{
- SOGoMailFolderDataSource *ds;
-
- ds = [[SOGoMailFolderDataSource alloc] initWithImap4URL:[self imap4URL]
- imap4Password:[self imap4Password]];
- return [ds autorelease];
-}
-
/* messages */
- (NSArray *) fetchUIDsMatchingQualifier: (id) _q
+++ /dev/null
-/*
- Copyright (C) 2005 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.
-*/
-
-#ifndef __Mailer_SOGoMailFolderDataSource_H__
-#define __Mailer_SOGoMailFolderDataSource_H__
-
-#include <EOControl/EODataSource.h>
-
-/*
- SOGoMailFolderDataSource
-
- This is used as the contentDataSource in the SOGoMailFolder, that is, as the
- object to retrieve WebDAV listings of an IMAP4 folder.
-*/
-
-@class NSString, NSURL, NSArray;
-@class EOFetchSpecification;
-
-@interface SOGoMailFolderDataSource : EODataSource
-{
- EOFetchSpecification *fetchSpecification;
- NSURL *imap4URL;
- NSString *imap4Password;
-}
-
-- (id)initWithImap4URL:(NSURL *)_imap4URL imap4Password:(NSString *)_pwd;
-
-/* accessors */
-
-- (void)setFetchSpecification:(EOFetchSpecification *)_fetchSpec;
-- (EOFetchSpecification *)fetchSpecification;
-
-- (NSURL *)imap4URL;
-
-/* operations */
-
-- (NSArray *)fetchObjects;
-
-@end
-
-#endif /* SOGoMailFolderDataSource */
+++ /dev/null
-/*
- Copyright (C) 2005 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.
-*/
-
-#import <Foundation/NSArray.h>
-#import <Foundation/NSAutoreleasePool.h>
-#import <Foundation/NSString.h>
-#import <Foundation/NSUserDefaults.h>
-
-#import <NGObjWeb/EOFetchSpecification+SoDAV.h>
-#import <NGExtensions/EODataSource+NGExtensions.h>
-#import <NGExtensions/NSObject+Logs.h>
-#import <EOControl/EOQualifier.h>
-#import <EOControl/EOSortOrdering.h>
-#import <NGImap4/NGImap4Envelope.h>
-
-#import "SOGoMailManager.h"
-
-#import "SOGoMailFolderDataSource.h"
-
-@implementation SOGoMailFolderDataSource
-
-static BOOL debugOn = NO;
-
-- (id)initWithImap4URL:(NSURL *)_imap4URL imap4Password:(NSString *)_pwd {
- if (_imap4URL == nil) {
- [self release];
- return nil;
- }
-
- if ((self = [super init])) {
- self->imap4URL = [_imap4URL copy];
- self->imap4Password = [_pwd copy];
- }
- return self;
-}
-- (id)init {
- return [self initWithImap4URL:nil imap4Password:nil];
-}
-
-- (void)dealloc {
- [self->imap4Password release];
- [self->imap4URL release];
- [self->fetchSpecification release];
- [super dealloc];
-}
-
-/* accessors */
-
-- (void)setFetchSpecification:(EOFetchSpecification *)_fetchSpec {
- if ([_fetchSpec isEqual:self->fetchSpecification]) return;
-
- ASSIGN(self->fetchSpecification, _fetchSpec);
- [self postDataSourceChangedNotification];
-}
-- (EOFetchSpecification *)fetchSpecification {
- return self->fetchSpecification;
-}
-
-- (NSURL *)imap4URL {
- return self->imap4URL;
-}
-
-- (NGImap4ConnectionManager *)mailManager {
- static NGImap4ConnectionManager *mm = nil;
- if (mm == nil)
- mm = [[NGImap4ConnectionManager defaultConnectionManager] retain];
- return mm;
-}
-
-/* fetches */
-
-- (NSArray *)partsForWebDAVPropertyNames:(NSArray *)_names {
- // TODO: implement
- static NSArray *parts = nil;
-
- // [self logWithFormat:@"props: %@", _names];
-
- if (parts == nil) {
- parts = [[NSArray alloc] initWithObjects:
- @"FLAGS", @"ENVELOPE", @"RFC822.SIZE", nil];
- }
- return parts;
-}
-
-- (void)addRecordsForFolderNames:(NSArray *)_n toArray:(NSMutableArray *)_r {
- unsigned i, count;
-
- for (i = 0, count = [_n count]; i < count; i++) {
- NSDictionary *rec;
- NSString *keys[2], *values[2];
-
- keys[0] = @"{DAV:}href"; values[0] = [_n objectAtIndex:i];
- keys[1] = @"davResourceType"; values[1] = @"collection";
- rec = [[NSDictionary alloc] initWithObjects:values forKeys:keys count:2];
- [_r addObject:rec];
- [rec release];
- }
-}
-
-- (void)addRecordsForUIDs:(NSArray *)_uids toArray:(NSMutableArray *)_r {
- NSAutoreleasePool *pool;
- NSArray *partNames, *results;
- unsigned i, count;
-
- if ([_uids count] == 0)
- return;
-
- pool = [[NSAutoreleasePool alloc] init];
-
- partNames = [self partsForWebDAVPropertyNames:
- [[self fetchSpecification] selectedWebDAVPropertyNames]];
-
- results = [[self mailManager] fetchUIDs:_uids inURL:self->imap4URL
- parts:partNames password:self->imap4Password];
- results = [results valueForKey:@"fetch"];
-
- for (i = 0, count = [results count]; i < count; i++) {
- NGImap4Envelope *envelope;
- NSDictionary *result;
- NSDictionary *rec;
- NSString *keys[6];
- id values[6];
-
- result = [results objectAtIndex:i];
- envelope = [result valueForKey:@"envelope"];
- // NSLog(@"RES: %@", result);
-
- keys[0] = @"{DAV:}href";
- values[0] = [[[result objectForKey:@"uid"] stringValue]
- stringByAppendingString:@".mail"];
- keys[1] = @"davResourceType";
- values[1] = @"";
- keys[2] = @"davContentLength";
- values[2] = [result objectForKey:@"size"];
- keys[3] = @"davDisplayName";
- values[3] = [envelope subject];
- keys[4] = @"davLastModified";
- values[4] = [envelope date];
-
- rec = [[NSDictionary alloc] initWithObjects:values forKeys:keys count:5];
- [_r addObject:rec];
- [rec release];
- }
-
- [pool release];
-}
-
-/* operations */
-
-- (NSArray *)fetchObjects {
- NSMutableArray *results;
- EOQualifier *qualifier;
- NSArray *sortOrderings;
- NSArray *uids, *folderNames;
- unsigned total;
-
- // TODO: support [fs davBulkTargetKeys]
- if ([[self fetchSpecification] davBulkTargetKeys] != nil) {
- [self logWithFormat:@"unsupported fetch specification"];
- return nil;
- }
-
- /* fetch message uids */
-
- // TODO: translate WebDAV qualifier and sort-ordering into IMAP4 one
- uids = [[self mailManager] fetchUIDsInURL:self->imap4URL
- qualifier:nil sortOrdering:@"DATE"
- password:self->imap4Password];
-
- /* fetch folders */
-
- folderNames = [[self mailManager] subfoldersForURL:self->imap4URL
- password:self->imap4Password];
-
- /* builds results */
-
- if ((total = ([uids count] + [folderNames count])) == 0)
- return [NSArray array];
-
- results = [NSMutableArray arrayWithCapacity:total];
-
- [self addRecordsForFolderNames:folderNames toArray:results];
- [self addRecordsForUIDs:uids toArray:results];
-
- /* filter and sort results */
-
- if ((qualifier = [[self fetchSpecification] qualifier]) != nil)
- results = (id)[results filteredArrayUsingQualifier:qualifier];
-
- if ((sortOrderings = [[self fetchSpecification] sortOrderings]) != nil) {
- if (qualifier != nil)
- results = (id)[results sortedArrayUsingKeyOrderArray:sortOrderings];
- else
- [results sortUsingKeyOrderArray:sortOrderings];
- }
-
- return results;
-}
-
-/* logging */
-
-- (NSString *)loggingPrefix {
- return @"[mailfolder-ds]";
-}
-- (BOOL)isDebuggingEnabled {
- return debugOn;
-}
-
-@end /* SOGoMailFolderDataSource */
- (id)bodyStructure {
id body;
- body = [[self fetchCoreInfos] valueForKey:@"body"];
+ body = [[self fetchCoreInfos] valueForKey:@"bodystructure"];
if (debugBodyStructure)
[self logWithFormat:@"BODY: %@", body];
return body;
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
*/
-// $Id: common.h,v 1.1 2003/11/24 01:24:40 helge Exp $
-#import <Foundation/Foundation.h>
-
-#warning importing common.h is baaad
-
-#if LIB_FOUNDATION_LIBRARY
-# include <Foundation/exceptions/GeneralExceptions.h>
-#elif NeXT_Foundation_LIBRARY || COCOA_Foundation_LIBRARY
-# include <NGExtensions/NGObjectMacros.h>
-# include <NGExtensions/NSString+Ext.h>
-#endif
-
-#include <NGExtensions/NGExtensions.h>
-#include <NGObjWeb/NGObjWeb.h>
-#include <NGObjWeb/SoObjects.h>
+#import <NGObjWeb/WOAssociation.h>
+#import <NGObjWeb/WOContext+SoObjects.h>
+#import <NGObjWeb/WODynamicElement.h>
+#import <NGObjWeb/WORequest.h>
+#import <NGObjWeb/WOResourceManager.h>
+#import <NGObjWeb/WOSession.h>
+#import <NGExtensions/NSObject+Logs.h>
@interface WOContext(WOExtensionsPrivate)
- (void)addActiveFormElement:(WOElement *)_element;
#import <Foundation/NSObject.h>
@interface ContactsUIProduct : NSObject
-{
-}
-
@end
-#include "common.h"
-
@implementation ContactsUIProduct
@end /* ContactsUIProduct */
#import <NGObjWeb/NSException+HTTP.h>
#import <NGObjWeb/SoObject.h>
-#import <NGObjWeb/WOResponse.h>
+#import <NGObjWeb/SoSecurityManager.h>
#import <NGObjWeb/WOContext.h>
+#import <NGObjWeb/WORequest.h>
+#import <NGObjWeb/WOResponse.h>
#import <GDLContentStore/GCSFolder.h>
#import <GDLContentStore/GCSFolderManager.h>
#import <SoObjects/SOGo/LDAPUserManager.h>
+#import <SoObjects/SOGo/SOGoPermissions.h>
#import <SoObjects/SOGo/SOGoUser.h>
#import <SoObjects/SOGo/NSString+Utilities.h>
#import <SoObjects/Contacts/SOGoContactFolders.h>
#import <SoObjects/Contacts/SOGoContactGCSFolder.h>
#import <SoObjects/Contacts/SOGoContactLDAPFolder.h>
-#import "common.h"
-
#import "UIxContactFoldersView.h"
@implementation UIxContactFoldersView
{
contacts = [results objectEnumerator];
contact = [contacts nextObject];
- while (contact)
+ if (contact)
{
responseString = [NSString stringWithFormat: @"%@:%@:%@",
[contact objectForKey: @"c_uid"],
// [response setHeader: @"text/plain; charset=iso-8859-1"
// forKey: @"Content-Type"];
[response appendContentString: responseString];
- contact = [contacts nextObject];
+// contact = [contacts nextObject];
}
}
else
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
*/
-// $Id$
-
-#import <Contacts/SOGoContactObject.h>
+#import <NGObjWeb/NSException+HTTP.h>
+#import <NGObjWeb/WOResponse.h>
#import <NGCards/NGVCard.h>
#import <NGCards/CardElement.h>
#import <NGCards/NSArray+NGCards.h>
#import <NGExtensions/NSString+Ext.h>
-#import "common.h"
+#import <SoObjects/Contacts/SOGoContactObject.h>
#import "UIxContactView.h"
02111-1307, USA.
*/
-#include <SOGoUI/UIxComponent.h>
+#import <SOGoUI/UIxComponent.h>
@interface UIxContactsFilterPanel : UIxComponent
{
@end
-#include <SOGoUI/UIxComponent.h>
-#include "common.h"
-
@implementation UIxContactsFilterPanel
static NSArray *filters = nil;
- (void) dealloc
{
- [self->searchCriteria release];
- [self->searchText release];
+ [searchCriteria release];
+ [searchText release];
[super dealloc];
}
- (void) setSearchText: (NSString *)_txt
{
- ASSIGNCOPY(self->searchText, _txt);
+ ASSIGNCOPY(searchText, _txt);
}
- (void) setSearchCriteria: (NSString *)_txt
{
- ASSIGNCOPY(self->searchText, _txt);
+ ASSIGNCOPY(searchText, _txt);
}
- (NSString *) searchText
- (NSString *) filterLabel
{
#if 1
- return [[[self context] page] labelForKey: [self valueForKey:@"filter"]];
+ return [[[self context] page] labelForKey: @"filter"];
#else
return [self valueForKey: @"filter"];
#endif
+++ /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$
-
-#import <Foundation/Foundation.h>
-
-#if LIB_FOUNDATION_LIBRARY
-# include <Foundation/exceptions/GeneralExceptions.h>
-#elif NeXT_Foundation_LIBRARY || COCOA_Foundation_LIBRARY
-# include <NGExtensions/NGObjectMacros.h>
-# include <NGExtensions/NSString+Ext.h>
-#endif
-
-#include <NGExtensions/NGExtensions.h>
-#include <NGObjWeb/NGObjWeb.h>
-#include <NGObjWeb/SoObjects.h>
-
-#warning importing common.h is baaad
02111-1307, USA.
*/
-#include <NGObjWeb/SoComponent.h>
+#import <NGObjWeb/SoComponent.h>
@interface SOGoGroupPage : SoComponent
@end
-#include "common.h"
-
@implementation SOGoGroupPage
@end /* SOGoGroupPage */
*/
// $Id: SOGoGroupsPage.m 106 2004-06-30 09:44:35Z helge $
-#include <NGObjWeb/SoComponent.h>
+#import <NGObjWeb/SoComponent.h>
@interface SOGoGroupsPage : SoComponent
{
@end
-#include "common.h"
-
@implementation SOGoGroupsPage
@end /* SOGoGroupsPage */
02111-1307, USA.
*/
-#include <NGObjWeb/SoComponent.h>
+#import <Foundation/NSUserDefaults.h>
+
+#import <NGObjWeb/SoComponent.h>
+#import <NGObjWeb/SoObject.h>
+#import <NGObjWeb/WOApplication.h>
+#import <NGObjWeb/WOContext.h>
+#import <NGObjWeb/WORequest.h>
+#import <NGObjWeb/WOResponse.h>
+#import <NGExtensions/NSNull+misc.h>
+#import <NGExtensions/NSObject+Logs.h>
+#import <NGExtensions/NSString+misc.h>
+#import <SOGo/SOGoAuthenticator.h>
+#import <SOGo/SOGoUser.h>
@interface SOGoRootPage : SoComponent
{
@end
-#include <SOGo/SOGoAuthenticator.h>
-#include "common.h"
-
@implementation SOGoRootPage
static BOOL doNotRedirect = NO;
+++ /dev/null
-/*
- Copyright (C) 2002-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$
-
-#import <Foundation/Foundation.h>
-
-#if NeXT_Foundation_LIBRARY || COCOA_Foundation_LIBRARY
-# include <NGExtensions/NGObjectMacros.h>
-# include <NGExtensions/NSString+Ext.h>
-#endif
-
-#include <NGExtensions/NGExtensions.h>
-#include <NGObjWeb/NGObjWeb.h>
-#include <NGObjWeb/SoObjects.h>
-
-#include <GDLAccess/GDLAccess.h>
-
-#warning importing common.h is baaad
+++ /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.
-*/
-
-#import <Foundation/Foundation.h>
-#include <NGExtensions/NGExtensions.h>
-
-#include <NGObjWeb/NGObjWeb.h>
-#include <NGObjWeb/SoObjects.h>
-
-#warning importing common.h is baaad
string="itemZoomText" selection="zoom"/>
<a href="#" class="button _disabled"><var:string label:value="+" /></a>
</div>
+ <div/>
<div id="freeBusyView">
<table id="freeBusy"
xmlns="http://www.w3.org/1999/xhtml"
if (node.nodeType == 1)
$(node).deselect();
}
- }
+ },
+
+ setCaretTo: function(element, pos) {
+ element = $(element);
+ if (element.selectionStart) { // For Mozilla and Safari
+ element.focus();
+ element.setSelectionRange(pos, pos);
+ }
+ else if (element.createTextRange) { // For IE
+ var range = element.createTextRange();
+ range.move("character", pos);
+ range.select();
+ }
+ },
+
+ selectText: function(element, start, end) {
+ element = $(element);
+ if (element.setSelectionRange) { // For Mozilla and Safari
+ element.setSelectionRange(start, end);
+ }
+ else if (element.createTextRange) { // For IE
+ var textRange = element.createTextRange();
+ textRange.moveStart("character", start);
+ textRange.moveEnd("character", end-element.value.length);
+ textRange.select();
+ }
+ else {
+ element.select();
+ }
+ }
});
TABLE#freeBusy TH.attendees,
TABLE#freeBusy TD.attendees
-{ position: absolute;
+{ /*position: absolute;*/
+ position: fixed;
padding: 0px .5em;
margin: 0px;
width: 11em;
var attendeesEmails;
function onContactKeydown(event) {
- if (event.keyCode == 9) {
+ if (event.ctrlKey || event.metaKey) {
+ this.focussed = true;
+ return;
+ }
+ if (event.keyCode == 9) { // Tab
preventDefault(event);
if (this.confirmedValue)
this.value = this.confirmedValue;
if (input.readOnly)
newAttendee(null);
else {
- input.focus();
- input.select();
input.focussed = true;
+ input.activate();
}
}
else if (!running) {
- if (event.keyCode == 8
- || event.keyCode == 32
+ if (event.keyCode == 0
+ || event.keyCode == 8 // Backspace
+ || event.keyCode == 32 // Space
|| event.keyCode > 47) {
running = true;
requestField = this;
setTimeout("triggerRequest()", delay);
}
else if (this.confirmedValue) {
- if (event.keyCode == 13) {
- this.setSelectionRange(this.value.length, this.value.length);
+ if (event.keyCode == 13) { // Enter
+ $(this).setCaretTo(this.value.length);
}
}
}
document.contactLookupAjaxRequest.abort();
}
var urlstr = ( UserFolderURL + "Contacts/contactSearch?search="
- + requestField.value );
+ + escape(requestField.value) );
+ //log (urlstr);
document.contactLookupAjaxRequest = triggerAjaxRequest(urlstr,
updateResults,
requestField);
searchField.confirmedValue = completeEmail;
if (searchField.focussed) {
var end = searchField.value.length;
- searchField.setSelectionRange(start, end);
+ $(searchField).selectText(start, end);
}
else
searchField.value = text[1];
}
function newAttendee(event) {
- var table = $("freeBusy");
- var tbody = table.tBodies[0];
- var model = tbody.rows[tbody.rows.length - 1];
- var newAttendeeRow = tbody.rows[tbody.rows.length - 2];
- var newRow = model.cloneNode(true);
- newRow.setAttribute("class", "");
- tbody.insertBefore(newRow, newAttendeeRow);
- //table.tBodies[0].appendChild(newRow);
- var input = $(newRow.cells[0]).childNodesWithTag("input")[0];
- input.setAttribute("autocomplete", "off");
- input.serial = "pouet";
- Event.observe(input, "blur", checkAttendee.bindAsEventListener(input));
- Event.observe(input, "keydown", onContactKeydown.bindAsEventListener(input));
- input.focus();
- input.focussed = true;
+ var table = $("freeBusy");
+ var tbody = table.tBodies[0];
+ var model = tbody.rows[tbody.rows.length - 1];
+ var newAttendeeRow = tbody.rows[tbody.rows.length - 2];
+ var newRow = model.cloneNode(true);
+ tbody.insertBefore(newRow, newAttendeeRow);
+
+ $(newRow).className = "";
+
+ var input = $(newRow.cells[0]).childNodesWithTag("input")[0];
+ input.setAttribute("autocomplete", "off");
+ Event.observe(input, "blur", checkAttendee.bindAsEventListener(input));
+ Event.observe(input, "keydown", onContactKeydown.bindAsEventListener(input));
+
+ input.focussed = true;
+ input.activate();
}
-function checkAttendee() {
+function checkAttendee() { log ("checkAttendee (loosing focus)");
this.focussed = false;
var th = this.parentNode.parentNode;
var tbody = th.parentNode;
var nodes = node.parentNode.parentNode.cells;
if (node.uid) {
for (var i = 1; i < nodes.length; i++) {
- nodes[i].removeClassName("noFreeBusy");
+ $(nodes[i]).removeClassName("noFreeBusy");
nodes[i].innerHTML = ('<span class="freeBusyZoneElement"></span>'
+ '<span class="freeBusyZoneElement"></span>'
+ '<span class="freeBusyZoneElement"></span>'
node);
} else {
for (var i = 1; i < nodes.length; i++) {
- nodes[i].addClassName("noFreeBusy");
+ $(nodes[i]).addClassName("noFreeBusy");
nodes[i].innerHTML = '';
}
}
currentInput.setAttribute("uid", null);
}
currentInput.setAttribute("autocomplete", "off");
- Event.observe(currentInput, "keydown", onContactKeydown.bindAsEventListener(currentInput), false);
- Event.observe(currentInput, "blur", checkAttendee.bindAsEventListener(currentInput), false);
+ //Event.observe(currentInput, "keydown", onContactKeydown.bindAsEventListener(currentInput));
+ //Event.observe(currentInput, "blur", checkAttendee.bindAsEventListener(currentInput));
}
inputs[inputs.length - 2].setAttribute("autocomplete", "off");
- Event.observe(inputs[inputs.length - 2], "click", newAttendee, false);
+ Event.observe(inputs[inputs.length - 2], "click", newAttendee);
}
function resetAllFreeBusys() {
var searchValue = $("searchValue");
var url = (ApplicationBaseURL
- + "/foldersSearch?ldap-only=YES&search=" + searchValue.value
+ + "/foldersSearch?ldap-only=YES&search=" + escape(searchValue.value)
+ "&type=" + window.opener.userFolderType);
if (document.userFoldersRequest) {
document.userFoldersRequest.aborted = true;