8
Classes, SysUtils, FileUtil, LResources, HTTPDefs, websession, fpHTTP, fpWeb;
14
TFPWebModule1 = class(TFPWebModule)
15
procedure func1callRequest(Sender: TObject; ARequest: TRequest;
16
AResponse: TResponse; var Handled: Boolean);
18
{ private declarations }
19
procedure func1callReplaceTag(Sender: TObject; const TagString:String;
20
TagParams: TStringList; Out ReplaceText: String);
22
{ public declarations }
26
FPWebModule1: TFPWebModule1;
32
procedure TFPWebModule1.func1callRequest(Sender: TObject; ARequest: TRequest;
33
AResponse: TResponse; var Handled: Boolean);
34
begin //Template:TFPTemplate is a property of the web module
35
Template.FileName := 'mytemplate3.html';{template file with
36
the template tag -> REPORTRESULT}
37
Template.AllowTagParams := true;
38
Template.StartDelimiter := '{+';
39
Template.EndDelimiter := '+}';
40
Template.OnReplaceTag := @func1callReplaceTag;
42
AResponse.Content := Template.GetContent;
47
procedure TFPWebModule1.func1callReplaceTag(Sender: TObject; const TagString:
48
String; TagParams: TStringList; Out ReplaceText: String);
50
header, footer, onerow:String;
51
NoRecordsToShow:Boolean;
52
ColumnHeaders:array[1..2] of String;
53
ColumnValues:array[1..3,1..2]of String;
55
begin//HTML template tag handling for an html template file
57
if AnsiCompareText(TagString, 'DATETIME') = 0 then
59
ReplaceText := FormatDateTime(TagParams.Values['FORMAT'], Now);
62
//Replace the REPORTRESULT html tag using it's tag parameters
63
if AnsiCompareText(TagString, 'REPORTRESULT') = 0 then
65
//fill up some arrays with data (could come from a SQL query)
66
NoRecordsToShow := false;
68
ColumnHeaders[1] := 'Amount';
69
ColumnHeaders[2] := 'Percentage';
71
ColumnValues[1,1] := '10.00';
72
ColumnValues[1,2] := '5';
74
ColumnValues[2,1] := '15.00';
75
ColumnValues[2,2] := '4';
77
ColumnValues[3,1] := '20.00';
78
ColumnValues[3,2] := '3';
80
//NoRecordsToShow could be something like SQL1.IsEmpty , etc.
81
if NoRecordsToShow then
82
begin //if there's nothing to list, just replace the whole tag with the
83
//"Not Found" message that the template contains
84
ReplaceText := TagParams.Values['NOTFOUND'];
88
header := TagParams.Values['HEADER'];
89
//insert header parameters
90
header := StringReplace(header, '~Column1', ColumnHeaders[1], []);
91
header := StringReplace(header, '~Column2', ColumnHeaders[2], []);
93
ReplaceText := header;//done with the header (could have been looping
94
//through table field names also)
96
onerow := TagParams.Values['ONEROW'];//template for 1 row
97
//loop through the rows, it could be someting like "while not SQL1.EOF do"
100
ReplaceText := ReplaceText + StringReplace(StringReplace(onerow
101
,'~Column1Value', '$' + ColumnValues[I, 1], [])
102
,'~Column2value', ColumnValues[I, 2] + '%', []) + #13#10;
106
footer := TagParams.Values['FOOTER'];
107
//replace footer parameters if needed
110
ReplaceText := ReplaceText + footer;
113
//Not found value for tag -> TagString
114
ReplaceText := 'Template tag {+' + TagString + '+} is not implemented yet.';
121
RegisterHTTPModule('TFPWebModule1', TFPWebModule1);