mirror of
https://github.com/gnustep/libs-gsweb.git
synced 2025-02-23 03:31:16 +00:00
* GSWeb.framework/GSWWOCompatibility.h/.m: added * GSWeb.framework/GNUmakefile: added GSWWOCompatibility.h/.m * GSWeb.framework/GSWApplication.h/m: added WOApplicationMain, handle WO/GSWeb names * GSWeb.framework/GSWContext.m: handle WO/GSWeb names, added traces * GSWeb.framework/GSWConstants.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWDynamicURLString.m: handle WO/GSWeb names * GSWeb.framework/GSWProjectBundle.m/.h: handle WO/GSWeb names, suppress warnings * GSWeb.framework/GSWSession.m: handle WO/GSWeb names * GSWeb.framework/GSWRequest.m: handle WO/GSWeb names * GSWeb.framework/GSWTemplateParser.m: handle WO/GSWeb names, added tag counts to help errors hunt * GSWeb.framework/GSWBundle.m: handle WO/GSWeb names, added traces * GSWeb.framework/GSWResourceManager.m: handle WO/GSWeb names * GSWeb.framework/GSWURLValuedElementData.m: handle WO/GSWeb names * GSWeb.framework/GSWComponentRequestHandler.m: handle WO/GSWeb names * GSWeb.framework/GSWDirectAction.m: handle WO/GSWeb names * GSWeb.framework/GSWForm.m/.h: handle WO/GSWeb names * GSWeb.framework/GSWHyperlink.m/.h: handle WO/GSWeb names * GSWeb.framework/GSWResourceRequestHandler.m: handle WO/GSWeb names * GSWeb.framework/GSWDirectActionRequestHandler.m: handle WO/GSWeb names * GSWeb.framework/GSWActiveImage.m/.h: handle WO/GSWeb names * GSWeb.framework/GSWBindingNameAssociation.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWBrowser.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWComponent.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWHTMLURLValuedElement.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWImageButton.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWInput.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWPopUpButton.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWString.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWAssociation.m: handle WO/GSWeb names * GSWeb.framework/GSWCheckBox.m: handle WO/GSWeb names * GSWeb.framework/GSWCheckBoxList.m: handle WO/GSWeb names * GSWeb.framework/GSWComponentDefinition.m: handle WO/GSWeb names * GSWeb.framework/GSWRadioButton.m: handle WO/GSWeb names * GSWeb.framework/GSWRadioButtonList.m: handle WO/GSWeb names * GSWeb.framework/GSWText.m: handle WO/GSWeb names * GSWeb.framework/GSWTextField.m: handle WO/GSWeb names * GSWeb.framework/GSWDeployedBundle.m: warnings * GSWeb.framework/GSWeb.h: added include GSWeb/GSWSessionTimeOut.h, GSWWOCompatibility.h * GSWeb.framework/GSWAdaptor.m: traces * GSWeb.framework/GSWDefaultAdaptor.m: handle WO/GSWeb names, added traces * GSWeb.framework/GSWDefaultAdaptorThread.m/.h: handle WO/GSWeb names * GSWeb.framework/NSNonBlockingFileHandle.m: added traces * GSWeb.framework/GSWTemplateParserANTLR.m: handle WO/GSWeb names * GSWeb.framework/GSWTemplateParserXML.m: handle WO/GSWeb names added tag count to help errors hunt remove "Tag gsweb invalid" message handle unicode strings in node content traces remove html and body tags if they are not present in the template * GSWeb.framework/GSWTemplateParseXML.h: added ivar _isHTMLTag, _isBodyTag * GSWeb.framework/GSWSessionTimeOutManager.m: dealloc sessionOrderedTimeOuts instead of deallocating 2 times sessionTimeOuts * GSWExtensions.framework/French.lproj/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.html: tag mismatch, Encode french characters * GSWExtensions.framework/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.html: tag mismatch * GSWHTMLBareString.m: handle unicode strings in description * GSWExtensions.framework/French.lproj/GSWExceptionPage.gswc/GSWExceptionPage.html: Encode french characters, Tag Mismatch * GSWExtensions.framework/French.lproj/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.html: Encode french characters * GSWExtensions.framework/French.lproj/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.html: Encode french characters * GSWExtensions.framework/GSWExceptionPage.gswc/GSWExceptionPage.html: Tag Mismatch * GSWExtensions.framework/GSWExceptionPage.gswc/GSWExceptionPage.gswd: added convertHTMLEntities for strings * GSWeb.framework/GSWRepetition.m: added traces, fix "count" property bug, standardize ivars * GSWeb.framework/NSObject+IVarAccess+PerformSel.m: added traces, handle underscored ivars search git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@9332 72102866-910b-0410-8b05-ffd578937521
359 lines
11 KiB
Objective-C
359 lines
11 KiB
Objective-C
/* GSWInput.m - GSWeb: Class GSWInput
|
|
Copyright (C) 1999 Free Software Foundation, Inc.
|
|
|
|
Written by: Manuel Guesdon <mguesdon@sbuilders.com>
|
|
Date: Feb 1999
|
|
|
|
This file is part of the GNUstep Web Library.
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
This library 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
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public
|
|
License along with this library; if not, write to the Free
|
|
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*/
|
|
|
|
static char rcsId[] = "$Id$";
|
|
|
|
#include <GSWeb/GSWeb.h>
|
|
|
|
//====================================================================
|
|
@implementation GSWInput
|
|
|
|
//--------------------------------------------------------------------
|
|
-(id)initWithName:(NSString*)name_
|
|
associations:(NSDictionary*)associations_
|
|
contentElements:(NSArray*)elements_
|
|
{
|
|
NSMutableDictionary* _attributedAssociations=[[associations_ mutableCopy] autorelease];
|
|
LOGObjectFnStartC("GSWInput");
|
|
NSDebugMLLog(@"gswdync",@"name_=%@ associations_:%@ elements_=%@",name_,associations_,elements_);
|
|
[_attributedAssociations removeObjectForKey:disabled__Key];
|
|
[_attributedAssociations removeObjectForKey:enabled__Key];//??
|
|
[_attributedAssociations removeObjectForKey:value__Key];//??
|
|
if (!WOStrictFlag)
|
|
[_attributedAssociations removeObjectForKey:handleValidationException__Key];
|
|
value = [[associations_ objectForKey:value__Key
|
|
withDefaultObject:[value autorelease]] retain];
|
|
NSDebugMLLog(@"gswdync",@"GSWInput: value=%@",value);
|
|
if ((self=[super initWithName:name_
|
|
attributeAssociations:_attributedAssociations
|
|
contentElements:elements_]))
|
|
{
|
|
disabled = [[associations_ objectForKey:disabled__Key
|
|
withDefaultObject:[disabled autorelease]] retain];
|
|
NSDebugMLLog(@"gswdync",@"GSWInput: disabled=%@",disabled);
|
|
if (!WOStrictFlag)
|
|
{
|
|
enabled = [[associations_ objectForKey:enabled__Key
|
|
withDefaultObject:[enabled autorelease]] retain];
|
|
NSDebugMLLog(@"gswdync",@"GSWInput: enabled=%@",enabled);
|
|
if (disabled && enabled)
|
|
{
|
|
ExceptionRaise0(@"GSWInput",@"You can't use 'diabled' and 'enabled' parameters at the same time.");
|
|
};
|
|
};
|
|
name = [[associations_ objectForKey:name__Key
|
|
withDefaultObject:[name autorelease]] retain];
|
|
NSDebugMLLog(@"gswdync",@"GSWInput: name=%@",name);
|
|
|
|
if (!WOStrictFlag)
|
|
{
|
|
handleValidationException = [[associations_ objectForKey:handleValidationException__Key
|
|
withDefaultObject:[handleValidationException autorelease]] retain];
|
|
NSDebugMLLog(@"gswdync",@"GSWInput: handleValidationException=%@",handleValidationException);
|
|
};
|
|
};
|
|
LOGObjectFnStopC("GSWInput");
|
|
return self;
|
|
};
|
|
|
|
//--------------------------------------------------------------------
|
|
-(void)dealloc
|
|
{
|
|
DESTROY(disabled);
|
|
DESTROY(enabled);//GSWeb Only
|
|
DESTROY(name);
|
|
DESTROY(value);
|
|
DESTROY(handleValidationException);//GSWeb Only
|
|
[super dealloc];
|
|
};
|
|
|
|
//--------------------------------------------------------------------
|
|
-(NSString*)elementName
|
|
{
|
|
return @"INPUT";
|
|
};
|
|
|
|
@end
|
|
|
|
//==============================================================================
|
|
@implementation GSWInput (GSWInputA)
|
|
|
|
//--------------------------------------------------------------------
|
|
-(NSString*)nameInContext:(GSWContext*)_context
|
|
{
|
|
//OK
|
|
GSWComponent* _component=nil;
|
|
NSString* _name=nil;
|
|
LOGObjectFnStartC("GSWInput");
|
|
if (name)
|
|
{
|
|
_component=[_context component];
|
|
_name=[name valueInComponent:_component];
|
|
}
|
|
else
|
|
{
|
|
_name=[_context elementID];
|
|
NSDebugMLLog(@"gswdync",@"_elementID=%@",[_context elementID]);
|
|
};
|
|
LOGObjectFnStopC("GSWInput");
|
|
return _name;
|
|
};
|
|
|
|
static int countAutoValue = 0;
|
|
|
|
//--------------------------------------------------------------------
|
|
- (NSString *)valueInContext:(GSWContext *)_context
|
|
{
|
|
//OK
|
|
GSWComponent *_component=nil;
|
|
NSString *_value=nil;
|
|
|
|
LOGObjectFnStartC("GSWInput");
|
|
countAutoValue++;
|
|
if(value)
|
|
{
|
|
_component=[_context component];
|
|
_value=[value valueInComponent:_component];
|
|
}
|
|
else
|
|
{
|
|
_value=[NSString stringWithFormat:@"%@.%d", [_context elementID], countAutoValue];
|
|
NSDebugMLLog(@"gswdync",@"_elementID=%@ _countAutoValue",[_context elementID], countAutoValue);
|
|
}
|
|
LOGObjectFnStopC("GSWInput");
|
|
return _value;
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
- (void)resetAutoValue
|
|
{
|
|
LOGObjectFnStartC("GSWInput");
|
|
|
|
countAutoValue = 0;
|
|
|
|
LOGObjectFnStopC("GSWInput");
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
-(BOOL)disabledInContext:(GSWContext*)_context
|
|
{
|
|
//OK
|
|
if (!WOStrictFlag && enabled)
|
|
return ![self evaluateCondition:enabled
|
|
inContext:_context];
|
|
else
|
|
return [self evaluateCondition:disabled
|
|
inContext:_context];
|
|
};
|
|
|
|
@end
|
|
|
|
//==============================================================================
|
|
@implementation GSWInput (GSWInputB)
|
|
|
|
//--------------------------------------------------------------------
|
|
-(void)takeValuesFromRequest:(GSWRequest*)request_
|
|
inContext:(GSWContext*)context_
|
|
{
|
|
//OK
|
|
BOOL _disabledInContext=NO;
|
|
LOGObjectFnStartC("GSWInput");
|
|
GSWAssertCorrectElementID(context_);// Debug Only
|
|
_disabledInContext=[self disabledInContext:context_]; //return 0
|
|
if (!_disabledInContext)
|
|
{
|
|
BOOL _wasFormSubmitted=[context_ _wasFormSubmitted];
|
|
if (_wasFormSubmitted)
|
|
{
|
|
GSWComponent* _component=[context_ component];
|
|
NSString* _nameInContext=[self nameInContext:context_];
|
|
NSString* _value=[request_ formValueForKey:_nameInContext];
|
|
NSDebugMLLog(@"gswdync",@"_nameInContext=%@",_nameInContext);
|
|
NSDebugMLLog(@"gswdync",@"_value=%@",_value);
|
|
if (!WOStrictFlag)
|
|
{
|
|
NS_DURING
|
|
{
|
|
[value setValue:_value
|
|
inComponent:_component];
|
|
};
|
|
NS_HANDLER
|
|
{
|
|
[self handleValidationException:localException
|
|
inContext:context_];
|
|
}
|
|
NS_ENDHANDLER;
|
|
}
|
|
else
|
|
[value setValue:_value
|
|
inComponent:_component];
|
|
};
|
|
|
|
};
|
|
LOGObjectFnStopC("GSWInput");
|
|
};
|
|
|
|
@end
|
|
|
|
//====================================================================
|
|
@implementation GSWInput (GSWInputC)
|
|
|
|
//--------------------------------------------------------------------
|
|
-(void)appendGSWebObjectsAssociationsToResponse:(GSWResponse*)response_
|
|
inContext:(GSWContext*)context_
|
|
{
|
|
//OK
|
|
BOOL _disabledInContext=NO;
|
|
LOGObjectFnStartC("GSWInput");
|
|
_disabledInContext=[self disabledInContext:context_]; //return 0
|
|
if (_disabledInContext)
|
|
[response_ _appendContentAsciiString:@" disabled"];
|
|
[self appendValueToResponse:response_
|
|
inContext:context_];
|
|
[self appendNameToResponse:response_
|
|
inContext:context_];
|
|
LOGObjectFnStopC("GSWInput");
|
|
};
|
|
|
|
//--------------------------------------------------------------------
|
|
-(void)appendValueToResponse:(GSWResponse*)response_
|
|
inContext:(GSWContext*)context_
|
|
{
|
|
//OK
|
|
GSWComponent* _component=nil;
|
|
LOGObjectFnStartC("GSWInput");
|
|
GSWSaveAppendToResponseElementID(context_);//Debug Only
|
|
_component=[context_ component];
|
|
if (value)
|
|
{
|
|
id _value=[value valueInComponent:_component];
|
|
NSDebugMLLog(@"gswdync",@"_value=%@",_value);
|
|
if (_value)
|
|
{
|
|
[response_ appendContentCharacter:' '];
|
|
[response_ _appendContentAsciiString:@"value"];
|
|
[response_ appendContentCharacter:'='];
|
|
[response_ appendContentCharacter:'"'];
|
|
[response_ appendContentHTMLAttributeValue:_value];
|
|
[response_ appendContentCharacter:'"'];
|
|
};
|
|
};
|
|
LOGObjectFnStopC("GSWInput");
|
|
};
|
|
|
|
//--------------------------------------------------------------------
|
|
-(void)appendNameToResponse:(GSWResponse*)response_
|
|
inContext:(GSWContext*)context_
|
|
{
|
|
//OK
|
|
NSString* _name=nil;
|
|
LOGObjectFnStartC("GSWInput");
|
|
_name=[self nameInContext:context_];
|
|
NSDebugMLLog(@"gswdync",@"_name=%@",_name);
|
|
if (_name)
|
|
{
|
|
[response_ appendContentCharacter:' '];
|
|
[response_ _appendContentAsciiString:@"name"];
|
|
[response_ appendContentCharacter:'='];
|
|
[response_ appendContentCharacter:'"'];
|
|
[response_ appendContentHTMLAttributeValue:_name];
|
|
[response_ appendContentCharacter:'"'];
|
|
};
|
|
LOGObjectFnStopC("GSWInput");
|
|
};
|
|
|
|
@end
|
|
|
|
//====================================================================
|
|
@implementation GSWInput (GSWInputD)
|
|
|
|
//--------------------------------------------------------------------
|
|
+(BOOL)hasGSWebObjectsAssociations
|
|
{
|
|
return YES;
|
|
};
|
|
|
|
@end
|
|
|
|
//====================================================================
|
|
@implementation GSWInput (GSWInputE)
|
|
|
|
//GSWeb additions {
|
|
-(void)handleValidationException:(NSException*)exception_
|
|
inContext:(GSWContext*)context_
|
|
{
|
|
BOOL _isValidationException=[exception_ isValidationException];
|
|
BOOL _raise=YES;
|
|
LOGObjectFnStartC("GSWInput");
|
|
if (_isValidationException)
|
|
{
|
|
GSWComponent* _component=[context_ component];
|
|
id _handleValidationException=[handleValidationException valueInComponent:_component];
|
|
BOOL _handle=NO;
|
|
if (!_handleValidationException)
|
|
{
|
|
_handleValidationException = [_component handleValidationExceptionDefault];
|
|
};
|
|
if (_handleValidationException)
|
|
{
|
|
if ([_handleValidationException isEqualToString:@"handleAndRaise"])
|
|
{
|
|
_handle=YES;
|
|
_raise=YES;
|
|
}
|
|
else if ([_handleValidationException isEqualToString:@"handle"])
|
|
{
|
|
_handle=YES;
|
|
_raise=NO;
|
|
}
|
|
else if ([_handleValidationException isEqualToString:@"raise"])
|
|
{
|
|
_handle=NO;
|
|
_raise=YES;
|
|
}
|
|
else
|
|
{
|
|
NSDebugMLog(@"Unknown case for handleValidationException %@",_handleValidationException);
|
|
};
|
|
};
|
|
if (_handle)
|
|
{
|
|
NSDebugMLog(@"Handled validation exception %@",exception_);
|
|
[_component setValidationFailureMessage:[[exception_ userInfo]objectForKey:@"message"]
|
|
forElement:self];
|
|
}
|
|
else
|
|
{
|
|
NSDebugMLog(@"Unhandled validation exception %@",exception_);
|
|
};
|
|
};
|
|
if (_raise)
|
|
{
|
|
NSDebugMLog(@"Raise exception %@",exception_);
|
|
exception_=ExceptionByAddingUserInfoObjectFrameInfo0(exception_,@"handleValidationException:inContext");
|
|
[exception_ raise];
|
|
};
|
|
LOGObjectFnStopC("GSWInput");
|
|
};
|
|
// }
|
|
@end
|