+ contrib/hbgt/tests
+ contrib/hbgt/tests/test.prg
+ contrib/hbmisc/tests/rtfclass.prg
- tests/rtfclass.prg
- tests/test10.prg
- tests/testgt.prg
* tests/ac_test.prg
* tests/alias.prg
* tests/begin.prg
* tests/boxtest.prg
* tests/cdow.prg
* tests/clasinh.prg
* tests/dates.prg
* tests/dates2.prg
* tests/dates3.prg
* tests/dates4.prg
* tests/ddate.prg
* tests/debugtst.prg
* tests/delimtst.prg
* tests/devtest.prg
* tests/disptest.prg
* tests/foreach.prg
* tests/gtstdtst.prg
* tests/ipclnt.prg
* tests/ipsvr.prg
* tests/langapi.prg
* tests/memtst.prg
* tests/memvar.prg
* tests/menutest.prg
* tests/mousetst.prg
* tests/multiarg.prg
* tests/newrdd.prg
* tests/nums.prg
* tests/objarr.prg
* tests/objasign.prg
* tests/objects.prg
* tests/omacro.prg
* tests/onidle.prg
* tests/os.prg
* tests/output.prg
* tests/overload.prg
* tests/parexpr.prg
* tests/passref.prg
* tests/procline.prg
* tests/procname.prg
* tests/recursiv.prg
* tests/returns.prg
* tests/round.prg
* tests/say.prg
* tests/sbartest.prg
* tests/scroll.prg
* tests/sdf_test.prg
* tests/seconds.prg
* tests/server.prg
* tests/set_num.prg
* tests/set_test.prg
* tests/setkeys.prg
* tests/sound.prg
* tests/speed.prg
* tests/statfun.prg
* tests/statics.prg
* tests/statics1.prg
* tests/statics2.prg
* tests/statinit.prg
* tests/strdelim.prg
* tests/stripem.prg
* tests/switch.prg
* tests/symbolt.prg
* tests/t1.prg
* tests/tb1.prg
* tests/testbrdb.prg
* tests/testbrw.prg
* tests/testcdx.prg
* tests/testcls.prg
* tests/testdbf.prg
* tests/testdecl.prg
* tests/testerro.prg
* tests/testfor.prg
* tests/testget.prg
* tests/testhrb.prg
* tests/testhtml.prg
* tests/testidle.prg
* tests/testmem.prg
* tests/testpers.prg
* tests/testtok.prg
* tests/testwarn.prg
* tests/tstalias.prg
* tests/tstasort.prg
* tests/tstblock.prg
* tests/tstdbi.prg
* tests/tstmacro.prg
* tests/varparam.prg
* tests/wvt_fs.prg
* cleaning up tests
160 lines
4.2 KiB
Plaintext
160 lines
4.2 KiB
Plaintext
/*
|
|
* $Id$
|
|
*/
|
|
|
|
/*
|
|
*
|
|
* testhtml.prg
|
|
* Harbour Test of a HTML-Generator class.
|
|
*
|
|
* 1999/05/30 First implementation.
|
|
*
|
|
* Tips: - Use ShowResults to make dynamic html (to test dynamic
|
|
* results, put the exe file on CGI-BIN dir or equivalent);
|
|
* - Use SaveToFile to make static html page
|
|
*
|
|
**/
|
|
|
|
FUNCTION Main()
|
|
|
|
LOCAL oHTML := THTML():New()
|
|
|
|
oHTML:SetTitle( "Harbour Power Demonstration" )
|
|
oHTML:AddHead( "Harbour" )
|
|
oHTML:AddPara( "<b>Harbour</b> is xBase at its best. Have a taste today!", "LEFT" )
|
|
oHTML:AddPara( "<b>L i n k s</b>", "CENTER" )
|
|
oHTML:AddLink( "http://harbour-project.org", "Meet the Harbour power!" )
|
|
oHTML:Generate()
|
|
|
|
// Uncomment the following if you don't have a Web Server to test
|
|
// this sample
|
|
|
|
// oHTML:SaveToFile( "test.htm" )
|
|
|
|
// If the above is uncommented, you may comment this line:
|
|
|
|
oHTML:ShowResult()
|
|
|
|
RETURN NIL
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
FUNCTION THTML()
|
|
|
|
STATIC oClass
|
|
|
|
IF oClass == NIL
|
|
oClass := HBClass():New( "THTML" )
|
|
|
|
oClass:AddData( "cTitle" ) // Page Title
|
|
oClass:AddData( "cBody" ) // HTML Body Handler
|
|
oClass:AddData( "cBGColor" ) // Background Color
|
|
oClass:AddData( "cLinkColor" ) // Link Color
|
|
oClass:AddData( "cvLinkColor" ) // Visited Link Color
|
|
oClass:AddData( "cContent" ) // Page Content Handler
|
|
|
|
oClass:AddMethod( "New", @New() ) // New Method
|
|
oClass:AddMethod( "SetTitle", @SetTitle() ) // Set Page Title
|
|
oClass:AddMethod( "AddHead", @AddHead() ) // Add <H1> Header
|
|
oClass:AddMethod( "AddLink", @AddLink() ) // Add Hyperlink
|
|
oClass:AddMethod( "AddPara", @AddPara() ) // Add Paragraph
|
|
oClass:AddMethod( "Generate", @Generate() ) // Generate HTML
|
|
oClass:AddMethod( "SaveToFile", @SaveToFile() ) // Saves Content to File
|
|
oClass:AddMethod( "ShowResult", @ShowResult() ) // Show Result - SEE Fcn
|
|
|
|
oClass:Create()
|
|
ENDIF
|
|
|
|
RETURN oClass:Instance()
|
|
|
|
STATIC FUNCTION New()
|
|
|
|
LOCAL Self := QSelf()
|
|
|
|
::cTitle := "Untitled"
|
|
::cBGColor := "#FFFFFF"
|
|
::cLinkColor := "#0000FF"
|
|
::cvLinkColor := "#FF0000"
|
|
::cContent := ""
|
|
::cBody := ""
|
|
|
|
RETURN Self
|
|
|
|
STATIC FUNCTION SetTitle( cTitle )
|
|
|
|
LOCAL Self := QSelf()
|
|
|
|
::cTitle := cTitle
|
|
|
|
RETURN Self
|
|
|
|
STATIC FUNCTION AddLink( cLinkTo, cLinkName )
|
|
|
|
LOCAL Self := QSelf()
|
|
|
|
::cBody := ::cBody + ;
|
|
"<a href='" + cLinkTo + "'>" + cLinkName + "</a>"
|
|
|
|
RETURN Self
|
|
|
|
STATIC FUNCTION AddHead( cDescr )
|
|
|
|
LOCAL Self := QSelf()
|
|
|
|
// Why this doesn't work?
|
|
// ::cBody += ...
|
|
// ???
|
|
|
|
::cBody := ::cBody + ;
|
|
"<h1>" + cDescr + "</h1>"
|
|
|
|
RETURN NIL
|
|
|
|
STATIC FUNCTION AddPara( cPara, cAlign )
|
|
|
|
LOCAL Self := QSelf()
|
|
|
|
cAlign := iif( cAlign == NIL, "Left", cAlign ) // Added Patrick Mast 2000-06-17
|
|
|
|
::cBody := ::cBody + ;
|
|
"<p align='" + cAlign + "'>" + hb_eol() + ;
|
|
cPara + hb_eol() + ;
|
|
"</p>"
|
|
|
|
RETURN Self
|
|
|
|
STATIC FUNCTION Generate()
|
|
|
|
LOCAL Self := QSelf()
|
|
|
|
::cContent := ;
|
|
"<html><head>" + hb_eol() + ;
|
|
"<title>" + ::cTitle + "</title>" + hb_eol() + ;
|
|
"<body link='" + ::cLinkColor + "' " + ;
|
|
"vlink='" + ::cvLinkColor + "'>" + + hb_eol() + ;
|
|
::cBody + hb_eol() + ;
|
|
"</body></html>"
|
|
|
|
RETURN Self
|
|
|
|
STATIC FUNCTION ShowResult()
|
|
|
|
LOCAL Self := QSelf()
|
|
|
|
OutStd( ;
|
|
;// "HTTP/1.0 200 OK" + hb_eol() + ;
|
|
"CONTENT-TYPE: TEXT/HTML" + hb_eol() + hb_eol() + ;
|
|
::cContent )
|
|
|
|
RETURN Self
|
|
|
|
STATIC FUNCTION SaveToFile( cFile )
|
|
|
|
LOCAL Self := QSelf()
|
|
LOCAL hFile := FCreate( cFile )
|
|
|
|
FWrite( hFile, ::cContent )
|
|
FClose( hFile )
|
|
|
|
RETURN Self
|