summaryrefslogtreecommitdiff
path: root/packages/fcl-web
diff options
context:
space:
mode:
authorjoost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-02-08 16:58:48 +0000
committerjoost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-02-08 16:58:48 +0000
commitd160982391cb578f8302b77b805e39b62fd02c32 (patch)
treea4cf0e53254601eb3e190f24444bf7acc4bb97ab /packages/fcl-web
parenta948829e77f764ebf373f253b4b9bedcd75efcdc (diff)
downloadfpc-d160982391cb578f8302b77b805e39b62fd02c32.tar.gz
* Implemented TContainerStylesheets
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@16896 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-web')
-rw-r--r--packages/fcl-web/src/base/fphtml.pp43
-rw-r--r--packages/fcl-web/src/base/webpage.pp19
2 files changed, 62 insertions, 0 deletions
diff --git a/packages/fcl-web/src/base/fphtml.pp b/packages/fcl-web/src/base/fphtml.pp
index f2bf67807d..6c5bdb96d5 100644
--- a/packages/fcl-web/src/base/fphtml.pp
+++ b/packages/fcl-web/src/base/fphtml.pp
@@ -63,6 +63,28 @@ type
property WebController: TWebController read GetWebController;
end;
+ { TContainerStylesheet }
+
+ TContainerStylesheet = class(TCollectionItem)
+ private
+ Fhref: string;
+ Fmedia: string;
+ published
+ property href: string read Fhref write Fhref;
+ property media: string read Fmedia write Fmedia;
+ end;
+
+ { TContainerStylesheets }
+
+ TContainerStylesheets = class(TCollection)
+ private
+ function GetItem(Index: integer): TContainerStylesheet;
+ procedure SetItem(Index: integer; const AValue: TContainerStylesheet);
+ public
+ function Add: TContainerStylesheet;
+ property Items[Index: integer]: TContainerStylesheet read GetItem write SetItem;
+ end;
+
{ TWebController }
TWebController = class(TComponent)
@@ -77,12 +99,14 @@ type
protected
function GetScriptFileReferences: TStringList; virtual; abstract;
function GetCurrentJavaScriptStack: TJavaScriptStack; virtual;
+ function GetStyleSheetReferences: TContainerStylesheets; virtual; abstract;
function GetScripts: TFPObjectList; virtual; abstract;
function GetRequest: TRequest;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure AddScriptFileReference(AScriptFile: String); virtual; abstract;
+ procedure AddStylesheetReference(Ahref, Amedia: String); virtual; abstract;
function CreateNewJavascriptStack: TJavaScriptStack; virtual; abstract;
function InitializeJavaScriptStack: TJavaScriptStack;
procedure FreeJavascriptStack; virtual;
@@ -100,6 +124,7 @@ type
function AddrelativeLinkPrefix(AnURL: string): string;
procedure FreeScript(var AScript: TStringList); virtual; abstract;
property ScriptFileReferences: TStringList read GetScriptFileReferences;
+ property StyleSheetReferences: TContainerStylesheets read GetStyleSheetReferences;
property Scripts: TFPObjectList read GetScripts;
property CurrentJavaScriptStack: TJavaScriptStack read GetCurrentJavaScriptStack;
property MessageBoxHandler: TMessageBoxHandler read FMessageBoxHandler write FMessageBoxHandler;
@@ -455,6 +480,24 @@ resourcestring
SErrRequestNotHandled = 'Web request was not handled by actions.';
SErrNoContentProduced = 'The content producer "%s" didn''t produce any content.';
+{ TcontainerStylesheets }
+
+function TcontainerStylesheets.GetItem(Index: integer): TContainerStylesheet;
+begin
+ result := TContainerStylesheet(Inherited GetItem(Index));
+end;
+
+procedure TcontainerStylesheets.SetItem(Index: integer; const AValue: TContainerStylesheet);
+begin
+ inherited SetItem(Index, AValue);
+end;
+
+function TcontainerStylesheets.Add: TContainerStylesheet;
+begin
+ result := inherited Add as TContainerStylesheet;
+end;
+
+
{ TJavaScriptStack }
function TJavaScriptStack.GetWebController: TWebController;
diff --git a/packages/fcl-web/src/base/webpage.pp b/packages/fcl-web/src/base/webpage.pp
index 5e5c1bb977..21911f1e29 100644
--- a/packages/fcl-web/src/base/webpage.pp
+++ b/packages/fcl-web/src/base/webpage.pp
@@ -37,9 +37,11 @@ type
private
FScriptFileReferences: TStringList;
FScripts: TFPObjectList;
+ FStyleSheetReferences: TContainerStylesheets;
protected
function GetScriptFileReferences: TStringList; override;
function GetScripts: TFPObjectList; override;
+ function GetStyleSheetReferences: TContainerStylesheets; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
@@ -47,6 +49,7 @@ type
function GetUrl(ParamNames, ParamValues, KeepParams: array of string; Action: string = ''): string; override;
procedure BindJavascriptCallstackToElement(AComponent: TComponent; AnElement: THtmlCustomElement; AnEvent: string); override;
procedure AddScriptFileReference(AScriptFile: String); override;
+ procedure AddStylesheetReference(Ahref, Amedia: String); override;
function DefaultMessageBoxHandler(Sender: TObject; AText: String; Buttons: TWebButtons; ALoaded: string = ''): string; override;
function CreateNewScript: TStringList; override;
procedure FreeScript(var AScript: TStringList); override;
@@ -364,6 +367,11 @@ begin
Result:=FScripts;
end;
+function TStandardWebController.GetStyleSheetReferences: TContainerStylesheets;
+begin
+ Result:=FStyleSheetReferences;
+end;
+
function TStandardWebController.CreateNewScript: TStringList;
begin
Result:=TStringList.Create;
@@ -407,6 +415,7 @@ end;
constructor TStandardWebController.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
+ FStyleSheetReferences := TContainerStylesheets.Create(TContainerStylesheet);
FScriptFileReferences := TStringList.Create;
// 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
@@ -418,6 +427,7 @@ destructor TStandardWebController.Destroy;
begin
FScriptFileReferences.Free;
FScripts.Free;
+ FStyleSheetReferences.Free;
inherited Destroy;
end;
@@ -523,5 +533,14 @@ begin
FScriptFileReferences.Add(AScriptFile);
end;
+procedure TStandardWebController.AddStylesheetReference(Ahref, Amedia: String);
+begin
+ with FStyleSheetReferences.Add do
+ begin
+ href:=Ahref;
+ media:=Amedia;
+ end;
+end;
+
end.