Display HTML according to listed entities in the page. Returns: None
| Return Type | Function name | Arguments |
|---|---|---|
| void | hdsPage::Display | (hzHttpEvent*,) |
Declared in file: hzDissemino.h
Defined in file : hdsGenerate.cpp
Function Logic:
Function body:
void hdsPage::Display (hzHttpEvent* pE)
{
// Display HTML according to listed entities in the page.
//
// Argument: pE The HTTP event being responded to
//
// Returns: None
_hzfunc("hdsPage::Display") ;
hzList<hdsExec*>::Iter ei ; // Page exec commands iterator
hzList<hdsVE*>::Iter ih ; // Html entity iterator
hzList<hdsFormref*>::Iter iF ; // Form iterator
hzChain C ; // For formulating HTML
hdsExec* pExec ; // Exec function
hdsVE* pVE ; // Html entity
hdsFormref* pFormref ; // Form
hdsFormdef* pFormdef ; // Form definition
uint32_t relLn ; // Relative line
uint32_t nV ; // Visual entity iterator
hzEcode rc ; // Return code
if (!pE) Fatal("No HTTP Event\n") ;
if (!pE->m_pContextLang) Fatal("No Language\n") ;
m_pApp->m_pLog->Log("PAGE %s Script Flags %x\n", *m_Title, m_bScriptFlags) ;
// Run executable commands
for (ei = m_Exec ; ei.Valid() ; ei++)
{
pExec = ei.Element() ;
m_pApp->m_pLog->Log("HAVE EXEC %s\n", Exec2Txt(pExec->m_Command)) ;
rc = pExec->Exec(C, pE) ;
m_pApp->m_pLog->Out(C) ;
C.Clear() ;
}
// Construct the output HTML
if (!m_Title)
m_Title = "untitled" ;
C << "<!DOCTYPE html>\n<html>\n<head>\n"
;
if (pE && pE->m_Resarg)
C.Printf("<title>%s-%s</title>\n", *m_Title, *pE->m_Resarg) ;
else
C << "<title>" << m_Title << "</title>\n" ;
if (m_Desc)
C.Printf("<meta name=\"description\" content=\"%s\"/>\n", *m_Desc) ;
else
C.Printf("<meta name=\"description\" content=\"%s\"/>\n", *m_Title) ;
if (m_Keys)
C.Printf("<meta name=\"keywords\" content=\"%s\"/>\n", *m_Keys) ;
C << s_std_metas ;
C << "<link rel=\"stylesheet\" href=\"" << m_pApp->m_namCSS << "\"/>\n" ;
if (m_bScriptFlags || m_xForms.Count())
{
if (m_bScriptFlags & INC_SCRIPT_RECAPTCHA)
C << s_Recaptcha ;
C << "<script language=\"javascript\">\n" ;
if (m_bScriptFlags & INC_SCRIPT_WINDIM)
C << _dsmScript_gwp ;
if (m_bScriptFlags & INC_SCRIPT_NAVTREE)
{
C << _dsmScript_tog ;
C << _dsmScript_loadArticle ;
C << _dsmScript_navtree ;
}
// If page contains forms then it must include validation javascript in the HTML
if (m_xForms.Count())
{
if (m_bScriptFlags & INC_SCRIPT_CKEMAIL) C << _dsmScript_ckEmail ;
if (m_bScriptFlags & INC_SCRIPT_CKURL) C << _dsmScript_ckUrl ;
if (m_bScriptFlags & INC_SCRIPT_EXISTS) C << _dsmScript_ckExists ;
for (iF = m_xForms ; iF.Valid() ; iF++)
{
pFormref = iF.Element() ;
pFormdef = m_pApp->m_FormDefs[pFormref->m_Formname] ;
C << pFormdef->m_ValJS ;
}
C << m_validateJS ;
}
C << "</script>\n" ;
}
C << "</head>\n\n" ;
// Construct the <body> tag
C << "<body" ;
if (m_CSS)
C.Printf(" class=\"%s\"", *m_CSS) ;
else
C.Printf(" bgcolor=\"#%06x\" marginwidth=\"%d\" marginheight=\"%d\" leftmargin=\"%d\" topmargin=\"%d\"",
m_BgColor, m_Width, m_Height, m_Width, m_Top) ;
if (m_Onpage) C.Printf(" onpageshow=\"%s\"", *m_Onpage) ;
if (m_Onload) C.Printf(" onload=\"%s\"", *m_Onload) ;
if (m_Resize) C.Printf(" onresize=\"%s\"", *m_Resize) ;
C << ">\n" ;
// Now construct the page elements
relLn = m_Line ;
for (nV = 0; nV < m_VEs.Count() ; nV++)
{
pVE = m_VEs[nV] ; pVE->Generate(C, pE, relLn) ;
}
// End page construction
C << "</body>\n</html>\n" ;
// Send out page. Note all generated pages are sent out raw, not zipped
rc = pE->SendRawChain(HTTPMSG_OK, HMTYPE_TXT_HTML, C, 0,false) ;
}