diff options
author | joost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2010-01-04 21:36:50 +0000 |
---|---|---|
committer | joost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2010-01-04 21:36:50 +0000 |
commit | e5f6b54ba99d800035a93a172d92270294ad3a48 (patch) | |
tree | f948d7dd821680729d9a77c6ef5b48ac35955c05 | |
parent | 3a2008750c57ea437db4cf3e2c8dfeae55a23837 (diff) | |
download | fpc-e5f6b54ba99d800035a93a172d92270294ad3a48.tar.gz |
* Pass the Component to BindJavascriptCallstackToElement
* Do not sort the external script-files
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/fcl-web_joost@14540 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | packages/fcl-web/src/fphtml.pp | 4 | ||||
-rw-r--r-- | packages/fcl-web/src/webpage.pp | 12 |
2 files changed, 10 insertions, 6 deletions
diff --git a/packages/fcl-web/src/fphtml.pp b/packages/fcl-web/src/fphtml.pp index 5f50821372..901dcbcb2e 100644 --- a/packages/fcl-web/src/fphtml.pp +++ b/packages/fcl-web/src/fphtml.pp @@ -83,7 +83,7 @@ type procedure InitializeAjaxRequest; virtual; procedure InitializeShowRequest; virtual; procedure FreeJavascriptStack; virtual; abstract; - procedure BindJavascriptCallstackToElement(AnElement: THtmlCustomElement; AnEvent: string); 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; @@ -593,7 +593,7 @@ begin events[i].csCallback(self, AJSClass, Handled); if not handled and assigned(events[i].ServerEvent) then AJSClass.CallServerEvent(self,events[i].ServerEventID); - wc.BindJavascriptCallstackToElement(AHtmlElement,events[i].JavaEventName); + wc.BindJavascriptCallstackToElement(Self, AHtmlElement,events[i].JavaEventName); AJSClass.clear; end; finally diff --git a/packages/fcl-web/src/webpage.pp b/packages/fcl-web/src/webpage.pp index 940c818226..2b824dc72f 100644 --- a/packages/fcl-web/src/webpage.pp +++ b/packages/fcl-web/src/webpage.pp @@ -35,7 +35,7 @@ type function InitializeJavaScriptStack: TJavaScriptStack; override; function GetUrl(ParamNames, ParamValues, KeepParams: array of string; Action: string = ''): string; override; procedure FreeJavascriptStack; override; - procedure BindJavascriptCallstackToElement(AnElement: THtmlCustomElement; AnEvent: string); override; + procedure BindJavascriptCallstackToElement(AComponent: TComponent; AnElement: THtmlCustomElement; AnEvent: string); override; procedure AddScriptFileReference(AScriptFile: String); override; function DefaultMessageBoxHandler(Sender: TObject; AText: String; Buttons: TWebButtons): string; override; function CreateNewScript: TStringList; override; @@ -375,7 +375,9 @@ constructor TStandardWebController.Create(AOwner: TComponent); begin inherited Create(AOwner); FScriptFileReferences := TStringList.Create; - FScriptFileReferences.Sorted:=true; + // For some reason the Duplicates property does not work when sorted is true, + // But we don't want a sorted list so do a manual check in AddScriptFileReference + //FScriptFileReferences.Sorted:=true; FScriptFileReferences.Duplicates:=dupIgnore; end; @@ -470,7 +472,7 @@ begin FreeAndNil(FCurrentJavascriptStack); end; -procedure TStandardWebController.BindJavascriptCallstackToElement(AnElement: THtmlCustomElement; AnEvent: string); +procedure TStandardWebController.BindJavascriptCallstackToElement(AComponent: TComponent; AnElement: THtmlCustomElement; AnEvent: string); begin case AnEvent of 'onclick' : (AnElement as THTMLAttrsElement).onclick:=CurrentJavaScriptStack.GetScript; @@ -479,8 +481,10 @@ begin end; procedure TStandardWebController.AddScriptFileReference(AScriptFile: String); +var i: integer; begin - FScriptFileReferences.Add(AScriptFile); + if not FScriptFileReferences.Find(AScriptFile,i) then + FScriptFileReferences.Add(AScriptFile); end; end. |