diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 579aac189a..da1dea083d 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,23 @@ The license applies to all entries newer than 2009-04-28. */ +c2012-11-17 16:29 UTC+0100 Viktor Szakats (vszakats syenar.net) + * website/samples.html + - website/samples/dosshell.html + - website/samples/dosshell.prg.html + - website/samples/screenshots/dosshell_linux.png + - website/samples/screenshots/dosshell_w32.png + + website/samples/osshell.html + + website/samples/osshell.prg.html + + website/samples/screenshots/osshell_linux.png + + website/samples/screenshots/osshell_w32.png + - website/samples/dates4.html + - website/samples/dates4.prg.html + - website/samples/testcgi.html + - website/samples/testcgi.prg.html + - website/samples/screenshots/testcgi.gif + * synced files with /tests dir + 2012-11-17 14:56 UTC+0100 Viktor Szakats (vszakats syenar.net) * contrib/hbodbc/hbodbc.hbp * contrib/hbodbc/odbc.c diff --git a/harbour/website/samples.html b/harbour/website/samples.html index 516fdfa384..a8ae3f8868 100644 --- a/harbour/website/samples.html +++ b/harbour/website/samples.html @@ -96,11 +96,10 @@
  • Codeblock support sample (codebloc.prg)
  • Codeblock advanced sample (codebl.prg)
  • Manipulation of date values (dates3.prg)
  • -
  • Dates values with hbct.lib & hbmisc.lib (dates4.prg)
  • Manipulating variables by reference (byref.prg)
  • Test for Ini file reading/writing (parseini.prg)
  • INIT and EXIT functions support (initexit.prg)
  • -
  • Run command: About to shell to DOS (dosshell.prg)
  • +
  • Run command: About to shell to OS (osshell.prg)
  • Testing long string handling support (longdev.prg)
  • Mouse sample support (mousetst.prg)
  • @@ -274,7 +273,6 @@     diff --git a/harbour/website/samples/dates4.html b/harbour/website/samples/dates4.html deleted file mode 100644 index eb57c8a1bb..0000000000 --- a/harbour/website/samples/dates4.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - -Harbour Project - Samples -> dates3 - - - - - - - -
    - - - - - - - - - - - - -
    - - - - - - -
    - - - - -
    - - - - - -
     
    - - - - - - - - -
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - - - - - - -
    Manipulation of date values
    Example of dates with several functions of hbct.lib & hbmisc.lib
       
     Files: 
      
     Screenshot: 
     
     
       
     How to compile: 
     To learn how to compile/link this example see our specific section on this link. 
     
    - - - - - -
    - - diff --git a/harbour/website/samples/dates4.prg.html b/harbour/website/samples/dates4.prg.html deleted file mode 100644 index 8384bde289..0000000000 --- a/harbour/website/samples/dates4.prg.html +++ /dev/null @@ -1,59 +0,0 @@ - -dates4.prg - - - - - -
    // Testing Harbour dates management.
    -#include "set.ch"
    -
    -STATIC s_cNewLine
    -
    -function main()
    -   LOCAL i
    -   LOCAL dDate := date()
    -
    -   s_cNewLine := hb_eol()
    -
    -   set( _SET_DATEFORMAT, "dd/mm/yyyy" )
    -
    -   for i := 7 to 49 step 7
    -      CheckDate( dDate )
    -      dDate += i
    -   next
    -
    -return nil
    -
    -function CheckDate( dDate )
    -   OutStd( "Testing date:", dDate , s_cNewLine )
    -   OutStd( "Days in month..:", daysinmonth( dDate ), s_cNewLine )
    -   OutStd( "Day of year....:", doy( dDate ), s_cNewLine )
    -   OutStd( "Begin of month.:", bom( dDate ), s_cNewLine )
    -   OutStd( "End of month...:", eom( dDate ), s_cNewLine )
    -   OutStd( "Week of month..:", wom( dDate ), s_cNewLine )
    -   OutStd( "Week of year...:", woy( dDate ), s_cNewLine )
    -   OutStd( "Begin of year..:", boy( dDate ), s_cNewLine )
    -   OutStd( "End of year....:", eoy( dDate ), s_cNewLine )
    -   __Accept( "Press ENTER to continue..." )
    -   OutStd( chr( 10 ), chr( 10 ) )
    -
    -return nil
    - diff --git a/harbour/website/samples/dosshell.html b/harbour/website/samples/osshell.html similarity index 93% rename from harbour/website/samples/dosshell.html rename to harbour/website/samples/osshell.html index d154c06cb8..2644776717 100644 --- a/harbour/website/samples/dosshell.html +++ b/harbour/website/samples/osshell.html @@ -2,7 +2,7 @@ -Harbour Project - Samples -> dosshell +Harbour Project - Samples -> osshell @@ -64,7 +64,7 @@     @@ -81,11 +81,11 @@   -

    -dosshell sample running on Windows Vista
    +

    +osshell sample running on Windows Vista

    -
    -dosshell sample running on Linux
    +
    +osshell sample running on Linux

    Note: To get the same result on Linux, you could execute a command "run bash"
    to forcing the beginning of a new shell.
    diff --git a/harbour/website/samples/dosshell.prg.html b/harbour/website/samples/osshell.prg.html similarity index 100% rename from harbour/website/samples/dosshell.prg.html rename to harbour/website/samples/osshell.prg.html diff --git a/harbour/website/samples/screenshots/dosshell_linux.png b/harbour/website/samples/screenshots/osshell_linux.png similarity index 100% rename from harbour/website/samples/screenshots/dosshell_linux.png rename to harbour/website/samples/screenshots/osshell_linux.png diff --git a/harbour/website/samples/screenshots/dosshell_w32.png b/harbour/website/samples/screenshots/osshell_w32.png similarity index 100% rename from harbour/website/samples/screenshots/dosshell_w32.png rename to harbour/website/samples/screenshots/osshell_w32.png diff --git a/harbour/website/samples/screenshots/testcgi.gif b/harbour/website/samples/screenshots/testcgi.gif deleted file mode 100644 index e95d10d937..0000000000 Binary files a/harbour/website/samples/screenshots/testcgi.gif and /dev/null differ diff --git a/harbour/website/samples/testcgi.html b/harbour/website/samples/testcgi.html deleted file mode 100644 index e0619dfa66..0000000000 --- a/harbour/website/samples/testcgi.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - -Harbour Project - Samples -> testcgi - - - - - - - -
    - - - - - - - - - - - - -
    - - - - - - -
    - - - - -
    - - - - - -
     
    - - - - - - - - -
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - - - - - - -
    Harbour Test of a CGI/HTML-Generator class
    This example shows how to work with Web pages using a custom class to manipulate data coming from a file and returns it to web browser.
       
     Files: 
      
     Screenshot: 
     
     
       
     How to compile: 
     To learn how to compile/link this example see our specific section on this link. 
     
    - - - - - -
    - - diff --git a/harbour/website/samples/testcgi.prg.html b/harbour/website/samples/testcgi.prg.html deleted file mode 100644 index 0721b81b52..0000000000 --- a/harbour/website/samples/testcgi.prg.html +++ /dev/null @@ -1,494 +0,0 @@ - -testcgi.prg - - - - - -
    /*
    - *
    - * Harbour Test of a CGI/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
    - *
    - * 1999/05/31  Initial CGI functionality.
    - * 1999/06/01  Translated %nn to correct chars.
    - * 1999/06/02  Dynamic TAG matching routines (inspired on Delphi).
    - *             First attempt to convert Delphi's ISAPI dll of WebSites'
    - *             Function List
    - *             (See http://www.flexsys-ci.com/harbour-project/functions.htm)
    - * 1999/06/11  List can be viewed online at
    - *             http://www.flexsys-ci.com/cgi-bin/testcgi.exe
    - * 1999/07/29  Changed qOut() calls to OutStd() calls.
    - *
    - */
    -
    -#define CGI_SERVER_SOFTWARE     01
    -#define CGI_SERVER_NAME         02
    -#define CGI_GATEWAY_INTERFACE   03
    -#define CGI_SERVER_PROTOCOL     04
    -#define CGI_SERVER_PORT         05
    -#define CGI_REQUEST_METHOD      06
    -#define CGI_HTTP_ACCEPT         07
    -#define CGI_HTTP_USER_AGENT     08
    -#define CGI_HTTP_REFERER        09
    -#define CGI_PATH_INFO           10
    -#define CGI_PATH_TRANSLATED     11
    -#define CGI_SCRIPT_NAME         12
    -#define CGI_QUERY_STRING        13
    -#define CGI_REMOTE_HOST         14
    -#define CGI_REMOTE_ADDR         15
    -#define CGI_REMOTE_USER         16
    -#define CGI_AUTH_TYPE           17
    -#define CGI_CONTENT_TYPE        18
    -#define CGI_CONTENT_LENGTH      19
    -#define CGI_ANNOTATION_SERVER   20
    -
    -#define IF_BUFFER 65535
    -
    -FUNCTION Main()
    -
    -   LOCAL oHTML := THTML():New()
    -   LOCAL hFile, nPos, cString, cBuf, i, cTable, cLine
    -
    -   oHTML:SetHTMLFile( "function.cfm" )
    -
    -   hFile := fOpen( "list.txt", 0 )
    -
    -   cString := space( IF_BUFFER )
    -   cBuf    := ""
    -   cTable  := ""
    -
    -   // Builds dynamic table replacement
    -   WHILE hFile != -1 .AND. (nPos := fRead( hFile, @cString, IF_BUFFER )) > 0
    -      i := 1
    -      DO WHILE i <= nPos
    -
    -         IF substr( cString, i, 1 ) = chr( 13 )
    -            i := i + 1
    -            cLine := cBuf
    -            cBuf  := ""
    -
    -            IF left( cLine, 1 ) <> ';'
    -               cTable += '<TR>' + chr(10)+chr(13) + ;
    -                 '<TD WIDTH="50%"><FONT SIZE="2" FACE="Tahoma">' +                 ;
    -                 ParseString( cLine, ';', 1 ) + '</FONT></TD>' + chr(10)+chr(13) + ;
    -                 '<TD WIDTH="16%">' +                                              ;
    -                 if( ParseString( cLine, ';', 2 ) = 'R',                           ;
    -                    '<CENTER><IMG SRC="images/purple-m.gif">',                     ;
    -                    '&nbsp' ) +                                                    ;
    -                 '</TD>' + chr(10)+chr(13) +                                       ;
    -                 '<TD WIDTH="16%">' +                                              ;
    -                 if( ParseString( cLine, ';', 2 ) = 'S',                           ;
    -                    '<CENTER><IMG SRC="images/purple-m.gif">',                     ;
    -                    '&nbsp' ) +                                                    ;
    -                 '</TD>' + chr(10)+chr(13) +                                       ;
    -                 '<TD WIDTH="16%">' +                                              ;
    -                 if( ParseString( cLine, ';', 2 ) = 'N',                           ;
    -                    '<CENTER><IMG SRC="images/purple-m.gif">',                     ;
    -                    '&nbsp' ) +                                                    ;
    -                 '</TD>' + chr(10)+chr(13) +                                       ;
    -                 '</TR>'
    -            ENDIF
    -         ELSE
    -            cBuf := cBuf + substr( cString, i, 1 )
    -         ENDIF
    -
    -         i++
    -      ENDDO
    -   ENDDO
    -
    -   fClose( hFile )
    -
    -   oHTML:AddReplaceTag( "Functions", cTable )
    -   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 ParseString( cString, cDelim, nRet )
    -
    -   LOCAL cBuf, aElem, nPosFim, nSize, i
    -
    -   nSize := len( cString ) - len( StrTran( cString, cDelim, '' ) ) + 1
    -   aElem := array( nSize )
    -
    -   cBuf := cString
    -   i := 1
    -   FOR i := 1 TO nSize
    -      nPosFim := at( cDelim, cBuf )
    -
    -      IF nPosFim > 0
    -         aElem[i] := substr( cBuf, 1, nPosFim - 1 )
    -      ELSE
    -         aElem[i] := cBuf
    -      ENDIF
    -
    -      cBuf := substr( cBuf, nPosFim + 1, len( cBuf ) )
    -
    -   NEXT i
    -
    -   RETURN( aElem[ nRet ] )
    -
    -FUNCTION Hex2Dec( cHex )
    -
    -   LOCAL aHex := { { "0", 00 }, ;
    -                   { "1", 01 }, ;
    -                   { "2", 02 }, ;
    -                   { "3", 03 }, ;
    -                   { "4", 04 }, ;
    -                   { "5", 05 }, ;
    -                   { "6", 06 }, ;
    -                   { "7", 07 }, ;
    -                   { "8", 08 }, ;
    -                   { "9", 09 }, ;
    -                   { "A", 10 }, ;
    -                   { "B", 11 }, ;
    -                   { "C", 12 }, ;
    -                   { "D", 13 }, ;
    -                   { "E", 14 }, ;
    -                   { "F", 15 } }
    -   LOCAL nRet
    -   LOCAL nRes
    -
    -   nRet := ascan( aHex, {| x | upper( x[1] ) = upper( left( cHex, 1 ) ) } )
    -   nRes := aHex[nRet, 2] * 16
    -   nRet := ascan( aHex, {| x | upper( x[1] ) = upper( right( cHex, 1 ) ) } )
    -   nRes += aHex[nRet, 2]
    -
    -   RETURN( nRes )
    -
    -/*-------------------------------------------------------------------------*/
    -
    -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:AddData( "aCGIContents" )
    -      oClass:AddData( "aQueryFields" )
    -      oClass:AddData( "cHTMLFile" )
    -      oClass:AddData( "aReplaceTags" )
    -
    -      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( "SaveToFile", @SaveToFile() )  // Saves Content to File
    -      oClass:AddMethod( "ShowResult", @ShowResult() )  // Show Result - SEE Fcn
    -      oClass:AddMethod( "Generate",   @Generate() )    // Generate HTML
    -      oClass:AddMethod( "SetHTMLFile",@SetHTMLFile() ) // Sets source HTML file
    -
    -      oClass:AddMethod( "ProcessCGI",    @ProcessCGI() )
    -      oClass:AddMethod( "GetCGIParam",   @GetCGIParam() )
    -      oClass:AddMethod( "QueryFields",   @QueryFields() )
    -      oClass:AddMethod( "AddReplaceTag", @AddReplaceTag() )
    -
    -      oClass:Create()
    -
    -   ENDIF
    -
    -   RETURN( oClass:Instance() )
    -
    -STATIC FUNCTION New()
    -
    -   LOCAL Self := QSelf()
    -
    -   ::cTitle       := "Untitled"
    -   ::cBGColor     := "#FFFFFF"
    -   ::cLinkColor   := "#0000FF"
    -   ::cvLinkColor  := "#FF0000"
    -   ::cContent     := ""
    -   ::cBody        := ""
    -   ::aCGIContents := {}
    -   ::aQueryFields := {}
    -   ::aReplaceTags := {}
    -   ::cHTMLFile    := ""
    -
    -   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()
    -
    -   ::cBody := ::cBody + ;
    -      "<P ALIGN='" + cAlign + "'>" + hb_eol() + ;
    -      cPara + hb_eol() + ;
    -      "</P>"
    -
    -   RETURN( Self )
    -
    -STATIC FUNCTION Generate()
    -
    -   LOCAL Self := QSelf()
    -   LOCAL cFile, i, hFile, nPos, cRes := ""
    -   LOCAL lFlag := .f.
    -
    -   // Is this a meta file or hand generated script?
    -   IF empty( ::cHTMLFile )
    -      ::cContent :=                                                        ;
    -         "<HTML><HEAD>"                                        + hb_eol() + ;
    -         "<TITLE>" + ::cTitle + "</TITLE>"                     + hb_eol() + ;
    -         "<BODY link='" + ::cLinkColor + "' " +                            ;
    -         "vlink='" + ::cvLinkColor + "'>" +                    + hb_eol() + ;
    -         ::cBody                                               + hb_eol() + ;
    -         "</BODY></HTML>"
    -   ELSE
    -      ::cContent := ""
    -
    -      // Does cHTMLFile exists?
    -      IF !File( ::cHTMLFile )
    -         ::cContent := "<H1>Server Error</H1><P><I>No such file: " + ;
    -           ::cHTMLFile
    -      ELSE
    -         // Read from file
    -         hFile := fOpen( ::cHTMLFile, 0 )
    -         cFile := space( IF_BUFFER )
    -         DO WHILE (nPos := fRead( hFile, @cFile, IF_BUFFER )) > 0
    -
    -            cFile := left( cFile, nPos )
    -            cRes += cFile
    -            cFile := space( IF_BUFFER )
    -
    -         ENDDO
    -
    -         fClose( hFile )
    -
    -         // Replace matched tags
    -         i := 1
    -         ::cContent := cRes
    -         /* TODO: Replace this DO WHILE with FOR..NEXT */
    -         DO WHILE i <= len( ::aReplaceTags )
    -            ::cContent := strtran( ::cContent, ;
    -               "<#" + ::aReplaceTags[i, 1] + ">", ::aReplaceTags[i, 2] )
    -            i++
    -         ENDDO
    -
    -         /* TODO: Clear remaining (not matched) tags */
    -         /*
    -         cRes := ""
    -         FOR i := 1 TO Len( ::cContent )
    -            IF SubStr( ::cContent, i, 1 ) == "<" .AND. ;
    -               SubStr( ::cContent, i + 1, 1 ) == "#"
    -               lFlag := .t.
    -            ELSEIF SubStr( ::cContent, i, 1 ) == ">" .AND. lFlag
    -               lFlag := .f.
    -            ELSEIF ! lFlag
    -               cRes += SubStr( ::cContent, i, 1 )
    -            ENDIF
    -         NEXT
    -
    -         ::cContent := cRes
    -         */
    -
    -      ENDIF
    -   ENDIF
    -
    -   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 )
    -
    -STATIC FUNCTION ProcessCGI()
    -
    -   LOCAL Self   := QSelf()
    -   LOCAL cQuery := ""
    -   LOCAL cBuff  := ""
    -   LOCAL nBuff  := 0
    -   LOCAL i
    -
    -   IF empty( ::aCGIContents )
    -      ::aCGIContents := {               ;
    -         GetEnv( "SERVER_SOFTWARE"   ), ;
    -         GetEnv( "SERVER_NAME"       ), ;
    -         GetEnv( "GATEWAY_INTERFACE" ), ;
    -         GetEnv( "SERVER_PROTOCOL"   ), ;
    -         GetEnv( "SERVER_PORT"       ), ;
    -         GetEnv( "REQUEST_METHOD"    ), ;
    -         GetEnv( "HTTP_ACCEPT"       ), ;
    -         GetEnv( "HTTP_USER_AGENT"   ), ;
    -         GetEnv( "HTTP_REFERER"      ), ;
    -         GetEnv( "PATH_INFO"         ), ;
    -         GetEnv( "PATH_TRANSLATED"   ), ;
    -         GetEnv( "SCRIPT_NAME"       ), ;
    -         GetEnv( "QUERY_STRING"      ), ;
    -         GetEnv( "REMOTE_HOST"       ), ;
    -         GetEnv( "REMOTE_ADDR"       ), ;
    -         GetEnv( "REMOTE_USER"       ), ;
    -         GetEnv( "AUTH_TYPE"         ), ;
    -         GetEnv( "CONTENT_TYPE"      ), ;
    -         GetEnv( "CONTENT_LENGTH"    ), ;
    -         GetEnv( "ANNOTATION_SERVER" )  ;
    -          }
    -
    -      cQuery := ::GetCGIParam( CGI_QUERY_STRING )
    -
    -      IF !empty( cQuery )
    -
    -        ::aQueryFields := {}
    -
    -        FOR i := 1 TO len( cQuery ) + 1
    -
    -          IF i > len( cQuery ) .OR. substr( cQuery, i, 1 ) == "&"
    -
    -             aadd( ::aQueryFields,                          ;
    -                { substr( cBuff, 1, at( "=", cBuff ) - 1 ), ;
    -                  strtran( substr( cBuff, at( "=", cBuff ) + 1,      ;
    -                     len( cBuff ) - at( "=", cBuff ) + 1 ), "+", " " ) } )
    -             cBuff := ""
    -          ELSE
    -             IF substr( cQuery, i, 1 ) = "%"
    -                cBuff += chr( Hex2Dec( substr( cQuery, i + 1, 2 ) ) )
    -                nBuff := 3
    -             ENDIF
    -
    -             IF nBuff = 0
    -                cBuff += substr( cQuery, i, 1 )
    -             ELSE
    -                nBuff--
    -             ENDIF
    -          ENDIF
    -
    -        NEXT
    -
    -      ENDIF
    -
    -   ENDIF
    -
    -   RETURN( Self )
    -
    -STATIC FUNCTION GetCGIParam( nParam )
    -
    -   LOCAL Self := QSelf()
    -
    -   ::ProcessCGI()
    -
    -   IF nParam > 20 .OR. nParam < 1
    -      outerr( "Invalid CGI parameter" )
    -      RETURN( NIL )
    -   ENDIF
    -
    -   RETURN( ::aCGIContents[nParam] )
    -
    -STATIC FUNCTION QueryFields( cQueryName )
    -
    -   LOCAL Self := QSelf()
    -   LOCAL cRet := ""
    -   LOCAL nRet
    -
    -   ::ProcessCGI()
    -
    -   nRet := aScan( ::aQueryFields, ;
    -      {| x | upper( x[1] ) = upper( cQueryName ) } )
    -
    -   IF nRet > 0
    -      cRet := ::aQueryFields[nRet, 2]
    -   ENDIF
    -
    -   RETURN( cRet )
    -
    -STATIC FUNCTION SetHTMLFile( cFile )
    -
    -   LOCAL Self := QSelf()
    -
    -   ::cHTMLFile := cFile
    -
    -   RETURN( Self )
    -
    -STATIC FUNCTION AddReplaceTag( cTag, cReplaceText )
    -
    -   LOCAL Self := QSelf()
    -
    -   aAdd( ::aReplaceTags, { cTag, cReplaceText } )
    -
    -   RETURN( Self )
    -
    -
    -