/* 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 /* AnaisSelector Open a satellite window providing access to Anais. Bindings: title - button title to display to user windowId - string to be used for uniquing this window to a particular purpose (i.e. for adding participants) division - Anais division callback - name of JavaScript callback function to use in caller's page extraAttributes - extra attributes to add as paramaters to the callback Sample: */ @interface AnaisSelector : UIxComponent { NSString *title; NSString *windowId; NSString *division; NSString *callback; NSString *extraAttributes; } - (void)setTitle:(NSString *)_title; - (NSString *)title; - (void)setWindowId:(NSString *)_winId; - (NSString *)windowId; - (void)setDivision:(NSString *)_division; - (NSString *)division; - (void)setCallback:(NSString *)_callback; - (NSString *)callback; - (NSString *)jsFunctionName; - (NSString *)jsFunctionHref; - (NSString *)jsCode; @end #include "common.h" @implementation AnaisSelector - (id)init { if ((self = [super init])) { [self setTitle:@"Anais"]; [self setWindowId:@"Anais"]; [self setCallback:@"undefined"]; } return self; } - (void)dealloc { [self->title release]; [self->windowId release]; [self->division release]; [self->callback release]; [self->extraAttributes 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)setDivision:(NSString *)_division { ASSIGNCOPY(self->division, _division); } - (NSString *)division { return self->division; } - (void)setCallback:(NSString *)_callback { ASSIGNCOPY(self->callback, _callback); } - (NSString *)callback { return self->callback; } - (void)setExtraAttributes:(NSString *)_extraAttributes { ASSIGN(self->extraAttributes, _extraAttributes); } - (NSString *)extraAttributes { return self->extraAttributes; } /* JavaScript */ - (NSString *)jsFunctionName { return [NSString stringWithFormat:@"openAnaisWindowWithId%@", [self windowId]]; } - (NSString *)jsFunctionHref { return [NSString stringWithFormat:@"javascript:%@()", [self jsFunctionName]]; } - (NSString *)jsCode { static NSString *codeFmt = \ @"function %@() {\n" @" var url = '/anais/Admin/Autres/aideFonc.php?m_fonc=%@&m_data=data1&m_type=Pour&m_nom=Titre,Bandeau%@&m_champ=mail,uid,sn%@&m_nature=BALI&m_agenda0#mon_etiquette';\n" @" var anaisWindow = window.open(url, '%@', 'width=350, height=600, left=10, top=10, toolbar=no, dependent=yes, menubar=no, location=no, resizable=yes, scrollbars=yes, directories=no, status=no');\n" @" anaisWindow.focus();\n" @"}"; static NSString *divFmt = @"&m_type=%@"; NSString *fmt, *exAttrFmt; if([self division]) fmt = [NSString stringWithFormat:divFmt, [self division]]; else fmt = @""; if([self extraAttributes]) exAttrFmt = [NSString stringWithFormat:@",%@", [self extraAttributes]]; else exAttrFmt = @""; return [NSString stringWithFormat:codeFmt, [self jsFunctionName], [self callback], fmt, exAttrFmt, [self windowId]]; } @end /* AnaisSelector */