diff options
author | joost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2010-01-10 16:48:05 +0000 |
---|---|---|
committer | joost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2010-01-10 16:48:05 +0000 |
commit | a2be21032bc12cbcb3915e20ff0eb74df97aae4a (patch) | |
tree | 33d1765a5baa746894b6a4b488f67d14bc3701f4 | |
parent | 1b0af07e1931d80e8fc700991e37a8873583c202 (diff) | |
download | fpc-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.pp | 7 | ||||
-rw-r--r-- | packages/fcl-web/src/webpage.pp | 20 |
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; |