+ contrib/hbnf/tests/fttext.prg
+ added test code for FTTEXT API
* contrib/hbnf/fttext.c
+ added MT compatibility by moving static vars to a structure
and that structure to TSD
* contrib/hbnf/menutonf.prg
* use HB_KEYPUT() instead of FT_PUTKEY()
* extras/gtwvw/tests/cbtest1.prg
* extras/gtwvw/tests/cbtest6.prg
* extras/gtwvw/tests/inpfocus.prg
* extras/gtwvw/tests/wvwmouse.prg
* KEYBOARD/__KEYBOARD() -> hb_keyPut()
* extras/gtwvw/tests/inpfocus.prg
! Do not use K_* constants for characters.
* contrib/gtwvg/tests/demowvg.prg
* extras/gtwvw/tests/wvwtest9.prg
* minor code cleanup
* contrib/gtwvg/class.prg
* contrib/gtwvg/menubar.prg
* contrib/gtwvg/paint.prg
* contrib/hbct/fcopy.prg
* contrib/hbcups/tests/test.prg
* contrib/hbcurl/tests/ftp_uldl.prg
* contrib/hbmisc/hb_f.c
* contrib/hbmisc/tests/testhbf.prg
* contrib/hbmysql/utils/dbf2mysq.prg
* contrib/hbnf/amedian.prg
* contrib/hbnf/tests/dfile.prg
* contrib/hbpgsql/tests/dbf2pg.prg
* contrib/hbpgsql/tests/test.prg
* contrib/hbtip/tests/upld_ftp.prg
* contrib/hbwin/tests/testcopy.prg
* contrib/hbwin/tests/testmapi.prg
* contrib/xhb/tests/testcp.prg
* contrib/xhb/xhbtedit.prg
* tests/ac_test.prg
* tests/db_brows.prg
* tests/stripem.prg
* tests/testhtml.prg
* deleted references to self-filename, or replaced them
with __FILE__, so they will continue to work (and there
won't be outdated comments) when files are renamed.
* tests/sbartest.prg
* minor
155 lines
4.0 KiB
Plaintext
155 lines
4.0 KiB
Plaintext
/*
|
|
* $Id$
|
|
*/
|
|
|
|
/*
|
|
*
|
|
* Harbour Test of a HTML-Generator class.
|
|
*
|
|
* 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
|
|
*
|
|
**/
|
|
|
|
PROCEDURE 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
|
|
|
|
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
|