* 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> 2017-11-16 David Wetzel <dave@turbocat.de>
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.html * GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.html
* GSWExtensions/GSWExceptionPage.gswc/GSWExceptionPage.html * GSWExtensions/GSWExceptionPage.gswc/GSWExceptionPage.html

View file

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

View file

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

View file

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

View file

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

View file

@ -438,7 +438,7 @@ GSWResponse * _dispatchWithPreparedApplication(GSWApplication *app, GSWContext *
// used in GSWApplication _componentRequestHandler // used in GSWApplication _componentRequestHandler
+(id)handler +(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* GSWResourceRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWComponentRequestHandlerKey[2]; GSWEB_EXPORT NSString* GSWComponentRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWDirectActionRequestHandlerKey[2]; GSWEB_EXPORT NSString* GSWDirectActionRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWAjaxRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWPingActionRequestHandlerKey[2]; GSWEB_EXPORT NSString* GSWPingActionRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWStaticResourceRequestHandlerKey[2]; GSWEB_EXPORT NSString* GSWStaticResourceRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWComponentTemplateSuffix; GSWEB_EXPORT NSString* GSWComponentTemplateSuffix;
@ -207,6 +209,7 @@ GSWEB_EXPORT NSString* GSWOPT_DebuggingEnabled[2];
GSWEB_EXPORT NSString* GSWOPT_StatusDebuggingEnabled[2]; GSWEB_EXPORT NSString* GSWOPT_StatusDebuggingEnabled[2];
GSWEB_EXPORT NSString* GSWOPT_StatusLoggingEnabled[2]; GSWEB_EXPORT NSString* GSWOPT_StatusLoggingEnabled[2];
GSWEB_EXPORT NSString* GSWOPT_DirectActionRequestHandlerKey[2]; GSWEB_EXPORT NSString* GSWOPT_DirectActionRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWOPT_AjaxRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWOPT_DirectConnectEnabled[2]; GSWEB_EXPORT NSString* GSWOPT_DirectConnectEnabled[2];
GSWEB_EXPORT NSString* GSWOPT_FrameworksBaseURL[2]; GSWEB_EXPORT NSString* GSWOPT_FrameworksBaseURL[2];
GSWEB_EXPORT NSString* GSWOPT_OutputPath[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_ComponentRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWOPTValue_ResourceRequestHandlerKey[2]; GSWEB_EXPORT NSString* GSWOPTValue_ResourceRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWOPTValue_DirectActionRequestHandlerKey[2]; GSWEB_EXPORT NSString* GSWOPTValue_DirectActionRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWOPTValue_AjaxRequestHanderKey[2];
GSWEB_EXPORT NSString* GSWOPTValue_StreamActionRequestHandlerKey[2]; GSWEB_EXPORT NSString* GSWOPTValue_StreamActionRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWOPTValue_PingActionRequestHandlerKey[2]; GSWEB_EXPORT NSString* GSWOPTValue_PingActionRequestHandlerKey[2];
GSWEB_EXPORT NSString* GSWOPTValue_StaticResourceRequestHandlerKey[2]; GSWEB_EXPORT NSString* GSWOPTValue_StaticResourceRequestHandlerKey[2];

View file

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

View file

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

View file

@ -740,6 +740,21 @@ GSWEB_EXPORT BOOL GSWContext_isSenderIDSearchOver(GSWContext* aContext)
} }
#endif #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 -(GSWDynamicURLString*)directActionURLForActionNamed:(NSString*)actionName
urlPrefix:(NSString*)urlPrefix urlPrefix:(NSString*)urlPrefix

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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