* GSWeb/GSWAjaxRequestHandler.*

new files
    * GSWeb/GNUmakefile
      add GSWAjaxRequestHandler.*, WOAjaxRequestHandler.h
    * GSWeb/GSWApplication+Defaults.*
      add AjaxRequestHanderKey
    * GSWeb/GSWApplication.h
      add +ajaxRequestHandlerKey
      add +setAjaxRequestHandlerKey:
    * GSWeb/GSWApplication.m
      create ajax request handler in registerRequestHandlers
    * GSWeb/GSWComponentRequestHandler.m
      return current class instance in +handler (works in subclasses too..)
    * GSWConstants.*
      added ajax
    * GSWContext.*
      added +shouldNotStorePageInBacktrackCache
    * GSWeb/GSWMessage.*
      added storePageInBacktrackCache
    * GSWeb/GSWRequest.*
      added -isAjaxSubmit, ajaxFormSubmitKey
    * GSWeb/GSWSession.m
    * GSWeb/GSWeb.h
    * GSWeb/GSWWOCompatibility.h
      ajax adjustments
This commit is contained in:
David Wetzel 2017-11-19 13:45:05 -05:00
parent 237ae78d01
commit 2bb828acb7
17 changed files with 260 additions and 113 deletions

View file

@ -1,3 +1,30 @@
2017-11-19 David Wetzel <dave@turbocat.de>
* GSWeb/GSWAjaxRequestHandler.*
new files
* GSWeb/GNUmakefile
add GSWAjaxRequestHandler.*, WOAjaxRequestHandler.h
* GSWeb/GSWApplication+Defaults.*
add AjaxRequestHanderKey
* GSWeb/GSWApplication.h
add +ajaxRequestHandlerKey
add +setAjaxRequestHandlerKey:
* GSWeb/GSWApplication.m
create ajax request handler in registerRequestHandlers
* GSWeb/GSWComponentRequestHandler.m
return current class instance in +handler (works in subclasses too..)
* GSWConstants.*
added ajax
* GSWContext.*
added +shouldNotStorePageInBacktrackCache
* GSWeb/GSWMessage.*
added storePageInBacktrackCache
* GSWeb/GSWRequest.*
added -isAjaxSubmit, ajaxFormSubmitKey
* GSWeb/GSWSession.m
* GSWeb/GSWeb.h
* GSWeb/GSWWOCompatibility.h
ajax adjustments
2017-11-16 David Wetzel <dave@turbocat.de>
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.html
* GSWExtensions/GSWExceptionPage.gswc/GSWExceptionPage.html

View file

@ -122,6 +122,7 @@ GSWDefaultAdaptor.m \
GSWUtils.m \
GSWClientSideScript.m \
GSWActiveImage.m \
GSWAjaxRequestHandler.m \
GSWBody.m \
GSWTextField.m \
GSWForm.m \
@ -213,6 +214,7 @@ GSWeb_HEADER_FILES = \
GSWeb.h \
GSWActiveImage.h \
GSWAdaptor.h \
GSWAjaxRequestHandler.h \
GSWApplet.h \
GSWApplication.h \
GSWAssociation.h \
@ -350,6 +352,7 @@ WO_HEADER_FILES = \
WOMailDelivery.h \
WORequest.h \
WORequestHandler.h \
WOAjaxRequestHandler.h \
WOResourceManager.h \
WOResponse.h \
WOSession.h \

View file

@ -261,6 +261,10 @@ GSWeb_InitializeGlobalAppDefaultOptions(void)
LOGOPT_NC(GSWOPTValue_DirectActionRequestHandlerKey);
LOGOPT_NC(GSWOPT_DirectActionRequestHandlerKey);
// ajax
LOGOPT_NC(GSWOPTValue_AjaxRequestHanderKey);
LOGOPT_NC(GSWOPT_AjaxRequestHandlerKey);
LOGOPT_NC(GSWOPTValue_PingActionRequestHandlerKey);
LOGOPT_NC(GSWOPT_PingActionRequestHandlerKey);
@ -386,7 +390,10 @@ GSWeb_InitializeGlobalAppDefaultOptions(void)
GSWOPTValue_DirectActionRequestHandlerKey[GSWebNamingConv],
GSWOPT_DirectActionRequestHandlerKey[GSWebNamingConv],
GSWOPTValue_AjaxRequestHanderKey[GSWebNamingConv],
GSWOPT_AjaxRequestHandlerKey[GSWebNamingConv],
GSWOPTValue_StreamActionRequestHandlerKey[GSWebNamingConv],
GSWOPT_StreamActionRequestHandlerKey[GSWebNamingConv],
@ -1082,13 +1089,29 @@ static NSString *_dflt_directActionRequestHandlerKey;
GSWOPT_DirectActionRequestHandlerKey[GSWebNamingConv]);
return _dflt_directActionRequestHandlerKey;
};
//--------------------------------------------------------------------
+(void)setDirectActionRequestHandlerKey:(NSString*)aKey
{
ASSIGNCOPY(_dflt_directActionRequestHandlerKey, aKey);
_dflt_init_directActionRequestHandlerKey = YES;
};
//--------------------------------------------------------------------
static BOOL _dflt_init_ajaxRequestHandlerKey = NO;
static NSString *_dflt_ajaxRequestHandlerKey;
+(NSString*)ajaxRequestHandlerKey
{
INIT_DFLT_OBJ(ajaxRequestHandlerKey,
GSWOPT_AjaxRequestHandlerKey[GSWebNamingConv]);
return _dflt_ajaxRequestHandlerKey;
};
+(void)setAjaxRequestHandlerKey:(NSString*)aKey
{
ASSIGNCOPY(_dflt_ajaxRequestHandlerKey, aKey);
_dflt_init_ajaxRequestHandlerKey = YES;
};
//--------------------------------------------------------------------
static BOOL _dflt_init_resourceRequestHandlerKey = NO;

View file

@ -615,6 +615,8 @@ GSWEB_EXPORT GSWApplication* GSWApp;
+(void)setComponentRequestHandlerKey:(NSString*)aKey;
+(NSString*)directActionRequestHandlerKey;
+(void)setDirectActionRequestHandlerKey:(NSString*)aKey;
+(NSString*)ajaxRequestHandlerKey;
+(void)setAjaxRequestHandlerKey:(NSString*)aKey;
+(NSString*)resourceRequestHandlerKey;
+(void)setResourceRequestHandlerKey:(NSString*)aKey;
+(NSString*)statisticsStoreClassName;

View file

@ -583,91 +583,100 @@ int GSWApplicationMain(NSString* applicationClassName,
//--------------------------------------------------------------------
-(void)registerRequestHandlers
{
//OK
NSString* componentRequestHandlerKey=nil;
NSString* resourceRequestHandlerKey=nil;
NSString* directActionRequestHandlerKey=nil;
NSString* pingDirectActionRequestHandlerKey=nil;
NSString* streamDirectActionRequestHandlerKey=nil;
//OK
NSString* componentRequestHandlerKey=nil;
NSString* resourceRequestHandlerKey=nil;
NSString* directActionRequestHandlerKey=nil;
NSString* pingDirectActionRequestHandlerKey=nil;
NSString* streamDirectActionRequestHandlerKey=nil;
NSString* ajaxRequestHandlerKey=nil;
GSWRequestHandler* componentRequestHandler=nil;
GSWResourceRequestHandler* resourceRequestHandler=nil;
GSWDirectActionRequestHandler* directActionRequestHandler=nil;
GSWDirectActionRequestHandler* pingDirectActionRequestHandler=nil;
GSWDirectActionRequestHandler* streamDirectActionRequestHandler=nil;
GSWRequestHandler* defaultRequestHandler=nil;
Class defaultRequestHandlerClass=nil;
// Component Handler
componentRequestHandler=[[self class] _componentRequestHandler];
componentRequestHandlerKey=[[self class] componentRequestHandlerKey];
// Resource Handler
resourceRequestHandler=(GSWResourceRequestHandler*)
GSWRequestHandler* componentRequestHandler=nil;
GSWResourceRequestHandler* resourceRequestHandler=nil;
GSWDirectActionRequestHandler* directActionRequestHandler=nil;
GSWDirectActionRequestHandler* pingDirectActionRequestHandler=nil;
GSWDirectActionRequestHandler* streamDirectActionRequestHandler=nil;
GSWAjaxRequestHandler* ajaxRequestHander=nil;
GSWRequestHandler* defaultRequestHandler=nil;
Class defaultRequestHandlerClass=nil;
// Component Handler
componentRequestHandler=[[self class] _componentRequestHandler];
componentRequestHandlerKey=[[self class] componentRequestHandlerKey];
// Resource Handler
resourceRequestHandler=(GSWResourceRequestHandler*)
[GSWResourceRequestHandler handler];
resourceRequestHandlerKey=[[self class] resourceRequestHandlerKey];
// DirectAction Handler
directActionRequestHandler=(GSWDirectActionRequestHandler*)
resourceRequestHandlerKey=[[self class] resourceRequestHandlerKey];
// DirectAction Handler
directActionRequestHandler=(GSWDirectActionRequestHandler*)
[GSWDirectActionRequestHandler handler];
directActionRequestHandlerKey=[[self class] directActionRequestHandlerKey];
// "Ping" Handler
pingDirectActionRequestHandler=(GSWDirectActionRequestHandler*)
directActionRequestHandlerKey=[[self class] directActionRequestHandlerKey];
// "Ping" Handler
pingDirectActionRequestHandler=(GSWDirectActionRequestHandler*)
[GSWDirectActionRequestHandler handlerWithDefaultActionClassName:@"GSWAdminAction"
defaultActionName:@"ping"
shouldAddToStatistics:NO];
pingDirectActionRequestHandlerKey=[[self class] pingActionRequestHandlerKey];
// Stream Handler
streamDirectActionRequestHandler=(GSWDirectActionRequestHandler*)
defaultActionName:@"ping"
shouldAddToStatistics:NO];
pingDirectActionRequestHandlerKey=[[self class] pingActionRequestHandlerKey];
// Stream Handler
streamDirectActionRequestHandler=(GSWDirectActionRequestHandler*)
[GSWDirectActionRequestHandler handler];
streamDirectActionRequestHandlerKey=[[self class] streamActionRequestHandlerKey];
[streamDirectActionRequestHandler setAllowsContentInputStream:YES];
// Ajax
ajaxRequestHandlerKey = [[self class] ajaxRequestHandlerKey];
ajaxRequestHander = [GSWAjaxRequestHandler handler];
[self registerRequestHandler:componentRequestHandler
forKey:componentRequestHandlerKey];
[self registerRequestHandler:resourceRequestHandler
forKey:resourceRequestHandlerKey];
[self registerRequestHandler:directActionRequestHandler
forKey:directActionRequestHandlerKey];
[self registerRequestHandler:directActionRequestHandler
forKey:GSWDirectActionRequestHandlerKey[GSWebNamingConvInversed]];
[self registerRequestHandler:pingDirectActionRequestHandler
forKey:pingDirectActionRequestHandlerKey];
[self registerRequestHandler:streamDirectActionRequestHandler
forKey:streamDirectActionRequestHandlerKey];
[self registerRequestHandler:ajaxRequestHander
forKey:ajaxRequestHandlerKey];
streamDirectActionRequestHandlerKey=[[self class] streamActionRequestHandlerKey];
[streamDirectActionRequestHandler setAllowsContentInputStream:YES];
[self registerRequestHandler:componentRequestHandler
forKey:componentRequestHandlerKey];
[self registerRequestHandler:resourceRequestHandler
forKey:resourceRequestHandlerKey];
[self registerRequestHandler:directActionRequestHandler
forKey:directActionRequestHandlerKey];
[self registerRequestHandler:directActionRequestHandler
forKey:GSWDirectActionRequestHandlerKey[GSWebNamingConvInversed]];
[self registerRequestHandler:pingDirectActionRequestHandler
forKey:pingDirectActionRequestHandlerKey];
[self registerRequestHandler:streamDirectActionRequestHandler
forKey:streamDirectActionRequestHandlerKey];
// Default Request Handler
defaultRequestHandlerClass=[self defaultRequestHandlerClass];
if (defaultRequestHandlerClass)
// Default Request Handler
defaultRequestHandlerClass=[self defaultRequestHandlerClass];
if (defaultRequestHandlerClass)
defaultRequestHandler=(GSWRequestHandler*)[defaultRequestHandlerClass handler];
else
else
defaultRequestHandler=componentRequestHandler;
[self setDefaultRequestHandler:defaultRequestHandler];
// If direct connect enabled, add static resources handler
if ([[self class] isDirectConnectEnabled])
[self setDefaultRequestHandler:defaultRequestHandler];
// If direct connect enabled, add static resources handler
if ([[self class] isDirectConnectEnabled])
{
GSWStaticResourceRequestHandler* staticResourceRequestHandler = (GSWStaticResourceRequestHandler*)
GSWStaticResourceRequestHandler* staticResourceRequestHandler = (GSWStaticResourceRequestHandler*)
[GSWStaticResourceRequestHandler handler];
NSString* staticResourceRequestHandlerKey=[[self class] staticResourceRequestHandlerKey];
[self registerRequestHandler:staticResourceRequestHandler
forKey:staticResourceRequestHandlerKey];
NSString* staticResourceRequestHandlerKey=[[self class] staticResourceRequestHandlerKey];
[self registerRequestHandler:staticResourceRequestHandler
forKey:staticResourceRequestHandlerKey];
};
};

View file

@ -438,7 +438,7 @@ GSWResponse * _dispatchWithPreparedApplication(GSWApplication *app, GSWContext *
// used in GSWApplication _componentRequestHandler
+(id)handler
{
return [[GSWComponentRequestHandler new] autorelease];
return [[self new] autorelease];
}

View file

@ -60,6 +60,8 @@ GSWEB_EXPORT NSString* GSWScriptPSuffix[2];
GSWEB_EXPORT NSString* GSWResourceRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWComponentRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWDirectActionRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWAjaxRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWPingActionRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWStaticResourceRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWComponentTemplateSuffix;
@ -207,6 +209,7 @@ GSWEB_EXPORT NSString* GSWOPT_DebuggingEnabled[2];
GSWEB_EXPORT NSString* GSWOPT_StatusDebuggingEnabled[2];
GSWEB_EXPORT NSString* GSWOPT_StatusLoggingEnabled[2];
GSWEB_EXPORT NSString* GSWOPT_DirectActionRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWOPT_AjaxRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWOPT_DirectConnectEnabled[2];
GSWEB_EXPORT NSString* GSWOPT_FrameworksBaseURL[2];
GSWEB_EXPORT NSString* GSWOPT_OutputPath[2];
@ -258,6 +261,7 @@ GSWEB_EXPORT NSString* GSWOPTValue_DefaultTemplateParser_RawHTML;
GSWEB_EXPORT NSString* GSWOPTValue_ComponentRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWOPTValue_ResourceRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWOPTValue_DirectActionRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWOPTValue_AjaxRequestHanderKey[2];
GSWEB_EXPORT NSString* GSWOPTValue_StreamActionRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWOPTValue_PingActionRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWOPTValue_StaticResourceRequestHandlerKey[2];

View file

@ -57,6 +57,7 @@ NSString* GSWScriptPSuffix[2]={ @".gsws", @".wos" };
NSString* GSWResourceRequestHandlerKey[2]={ @"rr", @"wr" };
NSString* GSWComponentRequestHandlerKey[2]={ @"cr", @"wo" };
NSString* GSWDirectActionRequestHandlerKey[2]={ @"dr", @"wa" };
NSString* GSWAjaxRequestHandlerKey[2]={ @"ja", @"ja" };
NSString* GSWPingActionRequestHandlerKey[2]={ @"lb", @"wlb" };
NSString* GSWComponentDeclarationsSuffix[2]={ @"gswd", @"wod" };
NSString* GSWComponentDeclarationsPSuffix[2]={ @".gswd", @".wod" };
@ -202,6 +203,7 @@ NSString* GSWOPT_DebuggingEnabled[2]={ @"GSWDebuggingEnabled", @"WODebuggingEnab
NSString* GSWOPT_StatusDebuggingEnabled[2]={ @"GSWStatusDebuggingEnabled", @"WOStatusDebuggingEnabled" };//NDFN
NSString* GSWOPT_StatusLoggingEnabled[2]={ @"GSWStatusLoggingEnabled", @"WOStatusLoggingEnabled" };//NDFN
NSString* GSWOPT_DirectActionRequestHandlerKey[2]={ @"GSWDirectActionRequestHandlerKey", @"WODirectActionRequestHandlerKey" };
NSString* GSWOPT_AjaxRequestHandlerKey[2]={ @"AjaxRequestHandlerKey", @"AjaxRequestHandlerKey" };
NSString* GSWOPT_PingActionRequestHandlerKey[2]={ @"GSWPingActionRequestHandlerKey", @"WOPingActionRequestHandlerKey" };
NSString* GSWOPT_StaticResourceRequestHandlerKey[2]={ @"GSWStaticResourceRequestHandlerKey", @"WOStaticResourceRequestHandlerKey" };
NSString* GSWOPT_DirectConnectEnabled[2]={ @"GSWDirectConnectEnabled", @"WODirectConnectEnabled" };
@ -253,6 +255,8 @@ NSString* GSWOPTValue_DefaultTemplateParser_RawHTML = @"RawHTML";
NSString* GSWOPTValue_ComponentRequestHandlerKey[2]={ @"cr", @"wo" };
NSString* GSWOPTValue_ResourceRequestHandlerKey[2]={ @"rr", @"wr" };
NSString* GSWOPTValue_DirectActionRequestHandlerKey[2]={ @"dr", @"wa" };
// Ajax
NSString* GSWOPTValue_AjaxRequestHanderKey[2]={ @"ja", @"ja" };
NSString* GSWOPTValue_StreamActionRequestHandlerKey[2]={ @"sr", @"wis" };
NSString* GSWOPTValue_PingActionRequestHandlerKey[2]={ @"lb", @"wlb" };
NSString* GSWOPTValue_StaticResourceRequestHandlerKey[2]={ @"_rr_", @"_wr_" };

View file

@ -177,6 +177,8 @@ GSWEB_EXPORT BOOL GSWContext_isSenderIDSearchOver(GSWContext* aContext);
-(NSString*)docStructure;
#endif
- (BOOL) shouldNotStorePageInBacktrackCache;
-(GSWDynamicURLString*)directActionURLForActionNamed:(NSString*)actionName
urlPrefix:(NSString*)urlPrefix
queryDictionary:(NSDictionary*)queryDictionary;

View file

@ -740,6 +740,21 @@ GSWEB_EXPORT BOOL GSWContext_isSenderIDSearchOver(GSWContext* aContext)
}
#endif
//--------------------------------------------------------------------
- (BOOL) shouldNotStorePageInBacktrackCache
{
BOOL shouldNot = NO;
BOOL requestNotStorePageInBacktrackCache = ((_request) && ([_request storePageInBacktrackCache] == NO));
BOOL responseNotStorePageInBacktrackCache = ((_response) && ([_response storePageInBacktrackCache] == NO));
BOOL requestIsAjaxSubmit = ((_request) && [_request isAjaxSubmit]);
shouldNot = (responseNotStorePageInBacktrackCache || requestNotStorePageInBacktrackCache || requestIsAjaxSubmit);
return shouldNot;
}
//--------------------------------------------------------------------
-(GSWDynamicURLString*)directActionURLForActionNamed:(NSString*)actionName
urlPrefix:(NSString*)urlPrefix

View file

@ -84,22 +84,27 @@ GSWEB_EXPORT NSString* GSWMessage_stringByConvertingToHTML(GSWMessage* aMessage,
//====================================================================
@interface GSWMessage : NSObject <NSCopying>
{
NSString* _httpVersion;
NSMutableDictionary* _headers;
NSMutableArray* _cookies;
NSStringEncoding _contentEncoding;
NSDictionary* _userInfo;
NSMutableData* _contentData;
IMP _contentDataADImp;
NSMutableArray* _cachesStack; // Cache Stacks
NSMutableData* _currentCacheData; // Current Cache Data (last object of _cachesStack). Do not retain/release
IMP _currentCacheDataADImp;
BOOL _storePageInBacktrackCache;
NSString* _httpVersion;
NSMutableDictionary* _headers;
NSMutableArray* _cookies;
NSStringEncoding _contentEncoding;
NSDictionary* _userInfo;
NSMutableData* _contentData;
IMP _contentDataADImp;
NSMutableArray* _cachesStack; // Cache Stacks
NSMutableData* _currentCacheData; // Current Cache Data (last object of _cachesStack). Do not retain/release
IMP _currentCacheDataADImp;
@public // For functions
GSWMessageIMPs _selfMsgIMPs;
GSWMessageIMPs _selfMsgIMPs;
};
-(BOOL)storePageInBacktrackCache;
-(void)setStorePageInBacktrackCache:(BOOL) yn;
-(void)setHTTPVersion:(NSString*)version;
-(NSString*)httpVersion;

View file

@ -455,6 +455,7 @@ static __inline__ NSMutableData *_checkBody(GSWMessage *self) {
{
GetGSWMessageIMPs(&_selfMsgIMPs,self);
ASSIGN(_httpVersion,@"HTTP/1.0");
_storePageInBacktrackCache = YES;
_headers=[NSMutableDictionary new];
_contentEncoding=[[self class] defaultEncoding];
_checkBody(self);
@ -538,6 +539,16 @@ static __inline__ NSMutableData *_checkBody(GSWMessage *self) {
return isEqual;
}
-(BOOL)storePageInBacktrackCache
{
return _storePageInBacktrackCache;
}
-(void)setStorePageInBacktrackCache:(BOOL) yn
{
_storePageInBacktrackCache = yn;
}
//--------------------------------------------------------------------
// setHTTPVersion:

View file

@ -64,25 +64,25 @@ Cf RFC 2616 (http://www.rfc-editor.org/rfc/rfc2616.txt)
@interface GSWRequest : GSWMessage
{
@private
NSString* _method;
GSWDynamicURLString* _uri;
NSStringEncoding _defaultFormValueEncoding;
NSStringEncoding _formValueEncoding;
NSDictionary* _formValues;
NSDictionary* _uriElements;
NSDictionary* _cookie;
BOOL _finishedParsingMultipartFormData;
NSString* _applicationURLPrefix;
NSArray* _requestHandlerPathArray;
NSArray* _browserLanguages;
NSArray* _browserAcceptedEncodings;
int _requestType;
NSString* _originatingAddress;
uint16_t _originatingPort;
BOOL _isUsingWebServer;
BOOL _formValueEncodingDetectionEnabled;
int _applicationNumber;
GSWContext* _context;//Don't retain/release because request is retained by context
NSString* _method;
GSWDynamicURLString* _uri;
NSStringEncoding _defaultFormValueEncoding;
NSStringEncoding _formValueEncoding;
NSDictionary* _formValues;
NSDictionary* _uriElements;
NSDictionary* _cookie;
BOOL _finishedParsingMultipartFormData;
NSString* _applicationURLPrefix;
NSArray* _requestHandlerPathArray;
NSArray* _browserLanguages;
NSArray* _browserAcceptedEncodings;
int _requestType;
NSString* _originatingAddress;
uint16_t _originatingPort;
BOOL _isUsingWebServer;
BOOL _formValueEncodingDetectionEnabled;
int _applicationNumber;
GSWContext* _context;//Don't retain/release because request is retained by context
};
-(id)initWithMethod:(NSString*)aMethod
@ -166,6 +166,12 @@ Cf RFC 2616 (http://www.rfc-editor.org/rfc/rfc2616.txt)
-(NSString*)_contentType;
-(NSString*)_urlQueryString;
-(BOOL)isAjaxSubmit;
+(NSString*)ajaxFormSubmitKey;
+(void)setAjaxFormSubmitKey:(NSString*) value;
-(BOOL)_isUsingWebServer;
-(BOOL)isUsingWebServer;

View file

@ -4,10 +4,6 @@
Written by: Manuel Guesdon <mguesdon@orange-concept.com>
Date: Jan 1999
$Revision$
$Date$
$Id$
This file is part of the GNUstep Web Library.
@ -198,6 +194,8 @@
@implementation GSWRequest
static NSString * __AJAX_FORM_SUBMIT_KEY = @"AJAX_SUBMIT_BUTTON_NAME";
//--------------------------------------------------------------------
// initWithMethod:uri:httpVersion:headers:content:userInfo:
@ -722,6 +720,10 @@
{
id formValue=nil;
NSArray* formValuesForKey=nil;
if (!key) {
return nil;
}
formValuesForKey=[self formValuesForKey:key];
NSAssert3(!formValuesForKey || [formValuesForKey isKindOfClass:[NSArray class]],@"formValues:%@ ForKey:%@ is not a NSArray it's a %@",
@ -1369,6 +1371,22 @@
};
//--------------------------------------------------------------------
-(BOOL) isAjaxSubmit
{
return ([self formValueForKey:[[self class] ajaxFormSubmitKey]] != nil);
}
+ (NSString*) ajaxFormSubmitKey
{
return (__AJAX_FORM_SUBMIT_KEY == nil) ? @"" : __AJAX_FORM_SUBMIT_KEY;
}
+ (void) setAjaxFormSubmitKey:(NSString*) value
{
ASSIGN(__AJAX_FORM_SUBMIT_KEY,(value == nil) ? @"" : value);
}
// FIXME:check if that is needed for 4.5 compat
-(BOOL)_isUsingWebServer
{

View file

@ -588,7 +588,22 @@ extern id gcObjectsToBeVisited;
//--------------------------------------------------------------------
-(void)savePageInPageFragmentCache:(GSWComponent*)page
{
// TODO
}
-(void)savePage:(GSWComponent*)page
{
if ([_currentContext shouldNotStorePageInBacktrackCache]) {
[self savePageInPageFragmentCache:page];
} else {
[self savePageInPageCache:page];
}
}
-(void)savePageInPageCache:(GSWComponent*)page
{
GSWTransactionRecord * transactionrec = nil;
BOOL pageChanged = [_currentContext _pageChanged];

View file

@ -66,6 +66,7 @@
#define GSWBundle WOBundle
#define GSWMultiKeyDictionary WOMultiKeyDictionary
#define GSWElementID WOElementIDString
#define GSWAjaxRequestHandler WOAjaxRequestHandler
#define GSWComponentRequestHandler WOComponentRequestHandler
#define GSWResourceRequestHandler WOResourceRequestHandler
#define GSWDirectActionRequestHandler WODirectActionRequestHandler

View file

@ -111,6 +111,7 @@
@class GSWResourceRequestHandler;
@class GSWStaticResourceRequestHandler;
@class GSWActionRequestHandler;
@class GSWAjaxRequestHandler;
@class GSWDirectActionRequestHandler;
@class GSWKeyValueAssociation;
@class GSWConstantValueAssociation;
@ -236,6 +237,7 @@
#include "GSWResourceRequestHandler.h"
#include "GSWStaticResourceRequestHandler.h"
#include "GSWActionRequestHandler.h"
#include "GSWAjaxRequestHandler.h"
#include "GSWDirectActionRequestHandler.h"
#include "GSWKeyValueAssociation.h"
#include "GSWConstantValueAssociation.h"