**
** wwresponse.fxp
**
*
DEFINE CLASS wwResponse AS RELATION
laSpobject = .F.
caUtosessioncookiename = "wwSessionId"
caUtosessioncookie = ""
laUtosessioncookiepersist = .F.
csTylesheet = ""
coUtput = .NULL.
coNtenttype = ""
PROTECTED lnOoutput
lnOoutput = .F.
*
FUNCTION Write
LPARAMETER lcText, llNooutput
RETURN ""
ENDFUNC
*
FUNCTION Send
LPARAMETER lcText, llNooutput
RETURN ""
ENDFUNC
*
FUNCTION FastWrite
LPARAMETER lcText, llNotused
RETURN ""
ENDFUNC
*
FUNCTION GetOutput
LPARAMETER llNoclear
RETURN ""
ENDFUNC
*
PROCEDURE Clear
ENDPROC
*
PROCEDURE Rewind
ENDPROC
*
PROCEDURE Reset
ENDPROC
*
PROCEDURE reset
STORE "" TO thIs.caUtosessioncookie, thIs.caUtosessioncookiename
STORE .F. TO thIs.lnOoutput
ENDPROC
*
FUNCTION HTMLHeader
LPARAMETER tcHeader, tcTitle, tcBackground, tcContenttype, tlNooutput
LOCAL lcOuttext
tcHeader = IIF(EMPTY(tcHeader), "", tcHeader)
tcTitle = IIF(EMPTY(tcTitle), tcHeader, tcTitle)
tcBackground = IIF(EMPTY(tcBackground), "", tcBackground)
thIs.coNtenttypeheader(tcContenttype)
IF .NOT. EMPTY(tcBackground)
lcBackground = IIF(AT("#", tcBackground)>0, 'BGCOLOR="', ;
'BACKGROUND="')+LOWER(tcBackground)+'"'
ELSE
lcBackground = ""
ENDIF
lcOuttext = ""+CHR(13)+CHR(10)+"
"+tcTitle+ ;
""+CHR(13)+CHR(10)+IIF( .NOT. ;
EMPTY(thIs.csTylesheet), ;
'', "")+CHR(13)+CHR(10)+''+CHR(13)+CHR(10)
IF ATC("<", tcHeader)>0 .AND. ATC(">", tcHeader)>0
lcOuttext = lcOuttext+thIs.wrIte(tcHeader+CHR(13)+CHR(10),.T.)+ ;
CHR(13)+CHR(10)
ELSE
IF .NOT. EMPTY(tcHeader)
lcOuttext = lcOuttext+''+ ;
tcHeader+'
'+CHR(13)+CHR(10)
ENDIF
ENDIF
RETURN thIs.wrIte(@lcOuttext,tlNooutput)
ENDFUNC
*
PROCEDURE HTMLHeaderEx
LPARAMETER lvHtmlheader, loHttpheader
thIs.coNtenttypeheader(loHttpheader)
IF VARTYPE(lvHtmlheader)="O"
thIs.wrIte(lvHtmlheader.geToutput())
ELSE
IF VARTYPE(lvHtmlheader)="C"
thIs.wrIte(""+lvHtmlheader+"")
ELSE
thIs.wrIte("")
ENDIF
ENDIF
ENDPROC
*
FUNCTION HTMLFooter
LPARAMETER tcText, tlNooutput
tcText = IIF(EMPTY(tcText), "", tcText)
RETURN thIs.wrIte(tcText+CHR(13)+CHR(10)+""+CHR(13)+ ;
CHR(10)+""+CHR(13)+CHR(10),tlNooutput)
ENDFUNC
*
FUNCTION WriteLn
LPARAMETER lcOutput, llNooutput
IF EMPTY(lcOutput)
lcOutput = ""
ENDIF
RETURN thIs.wrIte(lcOutput+CHR(13)+CHR(10),llNooutput)
ENDFUNC
*
FUNCTION Sendln
LPARAMETER lcOutput, llNooutput
IF EMPTY(lcOutput)
lcOutput = ""
ENDIF
RETURN thIs.wrIte(lcOutput+CHR(13)+CHR(10),llNooutput)
ENDFUNC
*
FUNCTION ContentTypeHeader
LPARAMETER lvContenttype, tlNooutput
LOCAL loHeader, lcType, lcOutput
lcType = VARTYPE(lvContenttype)
DO CASE
CASE lcType="O"
IF .NOT. lvContenttype.lpAssedhtmlobject
RETURN thIs.wrIte(lvContenttype.geToutput(),tlNooutput)
ELSE
lvContenttype.coMpleteheader()
ENDIF
RETURN ""
CASE lcType="C"
lvContenttype = LOWER(lvContenttype)
IF lvContenttype="none" .OR. EMPTY(lvContenttype)
RETURN ""
ENDIF
lvContenttype = LOWER(lvContenttype)
loHeader = CREATEOBJECT('wwHTTPHeader', thIs)
IF lvContenttype="force reload"
loHeader.deFaultheader()
loHeader.adDforcereload()
loHeader.coMpleteheader()
RETURN ""
ENDIF
loHeader.seTprotocol()
loHeader.seTcontenttype(lvContenttype)
loHeader.coMpleteheader()
RETURN ""
OTHERWISE
loHeader = CREATEOBJECT('wwHTTPHeader', thIs)
loHeader.deFaultheader()
loHeader.coMpleteheader()
RETURN ""
ENDCASE
RETURN thIs.wrIte(loHeader.geToutput(),tlNooutput)
ENDFUNC
*
FUNCTION WriteMemo
LPARAMETER lcText, llNooutput
LOCAL lcOutput
lcOutput = STRTRAN(lcText, CHR(13)+CHR(10), CHR(13))
lcOutput = STRTRAN(lcOutput, CHR(13)+CHR(13), "
")
lcOutput = STRTRAN(lcOutput, CHR(13), "
")
RETURN thIs.wrIte(@lcOutput,llNooutput)
ENDFUNC
*
FUNCTION ExpandTemplate
LPARAMETER tcPagename, tcContenttype, tlTemplatestring, tlNooutput
LOCAL lcOutput, lcOldalias, lnHandle, loEval
IF EMPTY(tcPagename)
RETURN ""
ENDIF
thIs.coNtenttypeheader(tcContenttype)
lcOutput = ""
IF .NOT. tlTemplatestring
lnHandle = FOPEN(tcPagename, 0)
IF lnHandle<>-1
lnSize = FSEEK(lnHandle, 0, 2)
FSEEK(lnHandle, 0, 0)
lcOutput = FREAD(lnHandle, lnSize)
= FCLOSE(lnHandle)
loEval = CREATEOBJECT('wwEval')
RETURN thIs.wrIte(loEval.meRgetext(@lcOutput),tlNooutput)
ELSE
RETURN thIs.wrIte(lcOutput+[
Can't find or open page ]+ ;
tcPagename+'
',tlNooutput)
ENDIF
ENDIF
loEval = CREATEOBJECT("wwEval")
RETURN thIs.wrIte(loEval.meRgetext(@tcPagename),tlNooutput)
ENDFUNC
*
FUNCTION ExpandScript
LPARAMETER tcPagename, tnMode, tvContenttype, tlTemplatestring, ;
llNooutput
LOCAL lcOutput, lnHandle, osCript
tcPagename = IIF(EMPTY(tcPagename), "", tcPagename)
tnMode = IIF(EMPTY(tnMode), 3, tnMode)
thIs.coNtenttypeheader(tvContenttype)
lcOutput = ""
IF llNooutput
loResponse = CREATEOBJECT('wwResponseStringNoBuffer')
ELSE
loResponse = thIs
ENDIF
osCript = CREATEOBJECT('wwVFPScript', IIF(tlTemplatestring, .F., ;
tcPagename), loResponse)
osCript.laLwaysunloadscript = .T.
IF tnMode=3
IF tlTemplatestring
lcCode = osCript.coNvertpage(tcPagename,.T.)
ELSE
lcCode = osCript.coNvertpage(fiLe2var(osCript.cfIlename),.T.)
ENDIF
osCript.reNderpagefromvar(lcCode)
IF llNooutput
RETURN loResponse.geToutput()
ENDIF
RETURN
ENDIF
IF tnMode=2
osCript.reNderpage()
ENDIF
IF tnMode=1
osCript.coNvertpage()
osCript.reNderpage()
ENDIF
IF llNooutput
RETURN loResponse.geToutput()
ENDIF
RETURN
ENDFUNC
*
FUNCTION ShowCursor
LPARAMETER lvHeader, lcTitle, llSumnumbers, llNooutput, lcTabletags
LOCAL lcHeader, lnX, laTotals, lcOutput, lnSizeloc, lnSize, lvValue
IF EMPTY(ALIAS())
RETURN ""
ENDIF
lcOutput = ""
lnFields = AFIELDS(laFields)
lnReccount = RECCOUNT()
IF llSumnumbers
DIMENSION laTotals[1, lnFields]
laTotals = 0
ENDIF
lcTitle = IIF(TYPE("lcTitle")="C", lcTitle, "")
IF .NOT. llNooutput
loShowcursor = CREATEOBJECT("wwShowCursor", thIs)
ELSE
loShowcursor = CREATEOBJECT("wwShowCursor")
ENDIF
loShowcursor.ctAbletitle = lcTitle
loShowcursor.lsUmnumerics = llSumnumbers
loShowcursor.laLternaterows = .T.
IF .NOT. EMPTY(lcTabletags)
loShowcursor.ceXtratabletags = lcTabletags
ENDIF
IF TYPE("lvHeader[1]")<>"U"
loShowcursor.buIldfieldlistheader(@lvHeader)
ENDIF
loShowcursor.shOwcursor()
IF llNooutput
RETURN loShowcursor.geToutput()
ENDIF
RETURN ""
ENDFUNC
*
PROCEDURE NoOutput
LPARAMETER llNooutput
thIs.lnOoutput = .T.
ENDPROC
*
FUNCTION StandardPage
LPARAMETER lcHeader, lcBody, lvHeader, lnRefresh, lcRefreshurl, ;
llNooutput
LOCAL lcOutput
lcHeader = IIF( .NOT. EMPTY(lcHeader), lcHeader, "")
lcBody = IIF( .NOT. EMPTY(lcBody), lcBody, "")
lnRefresh = IIF(EMPTY(lnRefresh), 0, lnRefresh)
IF lnRefresh>0
lcRefreshurl = IIF(EMPTY(lcRefreshurl), "", lcRefreshurl)
ENDIF
loHtml = CREATEOBJECT('wwResponseStringNoBuffer')
loHtml.coNtenttypeheader(lvHeader)
lcOutput = ''+ ;
CHR(13)+CHR(10)+ ;
' | '+ ;
CHR(13)+CHR(10)+ ;
' '+ ;
CHR(13)+CHR(10)+lcHeader+''+CHR(13)+CHR(10)+ ;
' |
'+CHR(13)+CHR(10)+'
'+ ;
CHR(13)+CHR(10)+' '+CHR(13)+ ;
CHR(10)+lcBody+''+CHR(13)+CHR(10)+' |
'+ ;
CHR(13)+CHR(10)+'
'
lcOutput = ''+CHR(13)+CHR(10)+''+lcHeader+ ;
''+CHR(13)+CHR(10)+IIF(lnRefresh>0, ;
'', '')+ ;
CHR(13)+CHR(10)+''+CHR(13)+CHR(10)+ ;
''+ ;
CHR(13)+CHR(10)+lcOutput
loHtml.wrIte(lcOutput)
loHtml.htMlfooter()
RETURN thIs.wrIte(loHtml.geToutput(),llNooutput)
ENDFUNC
*
FUNCTION tagtext
LPARAMETER lcTag, lcText, llNooutput
RETURN thIs.wrIte("<"+lcTag+">"+lcText+""+lcTag+">",llNooutput)
ENDFUNC
*
FUNCTION Authenticate
LPARAMETER lcRealm, lcErrormsg, llNooutput
LOCAL loHeader, lcOutput
loHeader = CREATEOBJECT('wwHTTPHeader')
loHeader.auThenticate(lcRealm,lcErrormsg)
thIs.clEar()
lcOutput = thIs.wrIte(loHeader.geToutput(),llNooutput)
thIs.lnOoutput = .T.
RETURN lcOutput
ENDFUNC
*
FUNCTION Redirect
LPARAMETER tcUrl, tlNooutput
LOCAL loHeader, lcOutput
loHeader = CREATEOBJECT('wwHTTPHeader')
loHeader.reDirect(tcUrl)
thIs.clEar()
lcOutput = thIs.wrIte(loHeader.geToutput(),tlNooutput)
thIs.lnOoutput = .T.
RETURN lcOutput
ENDFUNC
*
FUNCTION FormHeader
LPARAMETER lcAction, lcMethod, lcTarget, lcExtratags, llNooutput
IF EMPTY(lcMethod)
lcMethod = "POST"
ENDIF
IF EMPTY(lcExtratags)
lcExtratags = ""
ENDIF
RETURN thIs.wrIte('