summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2>2010-01-10 16:48:05 +0000
committerjoost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2>2010-01-10 16:48:05 +0000
commita2be21032bc12cbcb3915e20ff0eb74df97aae4a (patch)
tree33d1765a5baa746894b6a4b488f67d14bc3701f4
parent1b0af07e1931d80e8fc700991e37a8873583c202 (diff)
downloadfpc-a2be21032bc12cbcb3915e20ff0eb74df97aae4a.tar.gz
* Implemented TWebController.CleanupAfterRequest
* Implemented TWebController.FreeScript git-svn-id: http://svn.freepascal.org/svn/fpc/branches/fcl-web_joost@14603 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--packages/fcl-web/src/fphtml.pp7
-rw-r--r--packages/fcl-web/src/webpage.pp20
2 files changed, 25 insertions, 2 deletions
diff --git a/packages/fcl-web/src/fphtml.pp b/packages/fcl-web/src/fphtml.pp
index 17b36f70f2..00868aa118 100644
--- a/packages/fcl-web/src/fphtml.pp
+++ b/packages/fcl-web/src/fphtml.pp
@@ -85,11 +85,13 @@ type
function GetUrl(ParamNames, ParamValues, KeepParams: array of string; Action: string = ''): string; virtual; abstract;
procedure InitializeAjaxRequest; virtual;
procedure InitializeShowRequest; virtual;
+ procedure CleanupAfterRequest; virtual;
procedure FreeJavascriptStack; virtual; abstract;
procedure BindJavascriptCallstackToElement(AComponent: TComponent; AnElement: THtmlCustomElement; AnEvent: string); virtual; abstract;
function MessageBox(AText: String; Buttons: TWebButtons): string; virtual;
function DefaultMessageBoxHandler(Sender: TObject; AText: String; Buttons: TWebButtons): string; virtual; abstract;
function CreateNewScript: TStringList; virtual; abstract;
+ procedure FreeScript(var AScript: TStringList); virtual; abstract;
property ScriptFileReferences: TStringList read GetScriptFileReferences;
property Scripts: TFPObjectList read GetScripts;
property CurrentJavaScriptStack: TJavaScriptStack read GetCurrentJavaScriptStack;
@@ -1140,6 +1142,11 @@ begin
// do nothing
end;
+procedure TWebController.CleanupAfterRequest;
+begin
+ // Do Nothing
+end;
+
function TWebController.MessageBox(AText: String; Buttons: TWebButtons): string;
begin
if assigned(MessageBoxHandler) then
diff --git a/packages/fcl-web/src/webpage.pp b/packages/fcl-web/src/webpage.pp
index 18701106eb..1bf473d255 100644
--- a/packages/fcl-web/src/webpage.pp
+++ b/packages/fcl-web/src/webpage.pp
@@ -39,6 +39,7 @@ type
procedure AddScriptFileReference(AScriptFile: String); override;
function DefaultMessageBoxHandler(Sender: TObject; AText: String; Buttons: TWebButtons): string; override;
function CreateNewScript: TStringList; override;
+ procedure FreeScript(var AScript: TStringList); override;
end;
{ TWebPage }
@@ -84,6 +85,7 @@ type
procedure HandlePage(ARequest: TRequest; AResponse: TResponse; AWriter: THTMLwriter; AWebModule: TFPWebModule = nil); virtual;
procedure DoBeforeGenerateXML; virtual;
+ procedure CleanupAfterRequest; virtual;
property Designer: IWebPageDesigner read FDesigner write FDesigner;
property Request: TRequest read FRequest;
property ContentProducers[Index: integer]: THTMLContentProducer read GetContentProducer;
@@ -207,7 +209,7 @@ begin
AResponse.Content := ProduceContent;
end;
finally
- ForeachContentProducer(@DoCleanupAfterRequest, True);
+ CleanupAfterRequest;
end;
finally
SetRequest(nil);
@@ -220,9 +222,16 @@ begin
// Do Nothing
end;
+procedure TWebPage.CleanupAfterRequest;
+begin
+ ForeachContentProducer(@DoCleanupAfterRequest, True);
+ if HasWebController then
+ WebController.CleanupAfterRequest;
+end;
+
procedure TWebPage.DoCleanupAfterRequest(const AContentProducer: THTMLContentProducer);
begin
- AContentProducer.CleanupInstance;
+ AContentProducer.CleanupAfterRequest;
end;
procedure TWebPage.SetRequest(ARequest: TRequest);
@@ -339,6 +348,13 @@ begin
GetScripts.Add(result);
end;
+procedure TStandardWebController.FreeScript(var AScript: TStringList);
+begin
+ with GetScripts do
+ GetScripts.Delete(IndexOf(AScript));
+ AScript := nil;
+end;
+
function TStandardWebController.DefaultMessageBoxHandler(Sender: TObject;
AText: String; Buttons: TWebButtons): string;
var i : integer;