summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2>2010-01-04 21:36:50 +0000
committerjoost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2>2010-01-04 21:36:50 +0000
commite5f6b54ba99d800035a93a172d92270294ad3a48 (patch)
treef948d7dd821680729d9a77c6ef5b48ac35955c05
parent3a2008750c57ea437db4cf3e2c8dfeae55a23837 (diff)
downloadfpc-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.pp4
-rw-r--r--packages/fcl-web/src/webpage.pp12
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.