| Return Type | Function name | Arguments |
|---|---|---|
| void | hdsApp::MasterArticle | (hzHttpEvent*,) |
Declared in file: hzDissemino.h
Defined in file : hdsMaster.cpp
Function Logic:
Function body:
void hdsApp::MasterArticle (hzHttpEvent* pE)
{
_hzfunc("hdsApp::MasterArticle") ;
const hdbEnum* pEnum = 0;
const hdbClass* pClass = 0;
const hdbMember* pMbr = 0;
const hdbObjRepos* pRepos = 0;
hzChain Z ;
hdsInfo* pInfo ;
const char* pRes ;
const char* i ;
hzString entName ;
hzString argA ;
hzString argB ;
hzString S ;
uint32_t numId ;
uint32_t mbrNo ;
uint32_t n ;
pInfo = (hdsInfo*) pE->Session() ;
if (!pInfo)
{
threadLog("Forbiden\n") ;
pE->SendAjaxResult(HTTPMSG_FORBIDDEN, "No Access") ;
return ;
}
pRes = pE->GetResource() ;
if (memcmp(pRes, "/masterAction", 13))
{
threadLog("No such path\n") ;
pE->SendAjaxResult(HTTPMSG_NOTFOUND, "No such path") ;
return ;
}
if (!pE->QueryLen())
{
threadLog("Called with no arguments\n") ;
pE->SendAjaxResult(HTTPMSG_NOTFOUND, "No such path") ;
return ;
}
argA = pE->m_mapStrings.GetKey(0);
argB = pE->m_mapStrings.GetObj(0);
if (argA == "editfile")
{
_masterCfgEdit(pE, argB) ;
return ;
}
if (memcmp(pRes, "/master_dme-", 12))
{
threadLog("No such path\n") ;
pE->SendAjaxResult(HTTPMSG_NOTFOUND, "No such path") ;
return ;
}
if (pRes[12]!=''E''&&pRes[12]!=''C''&&pRes[12]!=''M''&&pRes[12]!=''R'')
{
threadLog("No such path\n") ;
pE->SendAjaxResult(HTTPMSG_NOTFOUND, "No such path") ;
return ;
}
if (pRes[13]==CHAR_PERIOD)
{
switch (pRes[12])
{
case ''E'': if (IsPosint(numId, pRes + 14))
pEnum = m_ADP.GetDataEnum(numId) ;
if (pEnum)
entName = pEnum->txtType() ;
break ;
case ''C'': if (IsPosint(numId, pRes + 14))
{
for (n = 0; n < m_ADP.CountDataClass() ; n++)
{
pClass = m_ADP.GetDataClass(n) ;
if (pClass->ClassId() == numId)
{
entName = pClass->txtType() ;
break ;
}
}
if (!entName)
pClass = 0;
}
case ''M'': if (IsPosint(numId, pRes + 14))
{
for (n = 0; n < m_ADP.CountDataClass() ; n++)
{
pClass = m_ADP.GetDataClass(n) ;
if (pClass->ClassId() == numId)
{
entName = pClass->txtType() ;
break ;
}
}
if (!entName)
pClass = 0;
if (pClass)
{
for (i = pRes + 14;*i && *i != CHAR_PERIOD ; i++) ;
if (*i == CHAR_PERIOD)
{
if (IsPosint(numId, i+1))
pMbr = pClass->GetMember(numId) ;
}
}
}
if (pMbr)
{ entName = pClass->txtType() ; entName += "::" ; entName += pMbr->strName() ; }
case ''R'': if (IsPosint(numId, pRes + 14))
pRepos = m_ADP.GetObjRepos(numId) ;
if (pRepos)
entName = pRepos->strName() ;
}
}
Z.Printf("<form method="POST" action="%s">\n" , pRes) ;
Z << "<table width="100%" align="center" border="0" cellspacing="0" cellpadding="0" class="main">\n" ;
switch (pRes[9])
{
case ''E'':
Z <<
"<tr><td align="center">Enum Editor</td></tr>\n<tr><td height="20"> </td></tr>\n</table>\n<table width="100%" align="center" border="0" cellspacing="0" cellpadding="0" class="main">\n"
;
Z.Printf("<tr height="25"><td>Name: </td><td><input type="text" name="username_master" size="40" maxlen="40" value="%s"/></td></tr>\n" , *entName) ;
Z <<
"</table>\n<table width="100%" align="center" border="1" cellspacing="0" cellpadding="0" class="main">\n"
;
for (n = 0; n < pEnum->Count() ; n++)
{
S = pEnum->GetStr(n) ;
Z.Printf("<tr><td>%d</td><td>%s</td></tr>\n", n+1,*S) ;
}
break ;
case ''C'':
Z <<
"<tr><td align="center">Class Editor</td></tr>\n<tr><td height="20"> </td></tr>\n</table>\n<table width="100%" align="center" border="0" cellspacing="0" cellpadding="0" class="main">\n"
;
Z.Printf("<tr height="25"><td>Name: </td><td><input type="text" name="username_master" size="40" maxlen="40" value="%s"/></td></tr>\n" , *entName) ;
Z <<
"</table>\n<table width="100%" align="center" border="1" cellspacing="0" cellpadding="0" class="main">\n<tr>\n <th>Posn</th>\n <th>Name</th>\n <th>Data type</th>\n <th>MinP</th>\n <th>MaxP</th>\n <th>Description</th>\n</tr>\n"
;
for (mbrNo = 0; mbrNo < pClass->MbrCount() ; mbrNo++)
{
pMbr = pClass->GetMember(mbrNo) ;
Z << "<tr>" ;
Z.Printf("<td align="right">%d</td>" , mbrNo) ;
Z.Printf("<td><a href="#" onclick="loadArticle('/master_dme-M.%d.%d');">%s</a></td>" , pClass->ClassId(), mbrNo, pMbr->txtName()) ;
Z.Printf("<td>%s</td>", pMbr->Datatype()->txtType()) ;
Z.Printf("<td>%s</td>", PopCtl2Txt(pMbr->PopCtl())) ;
Z.Printf("<td>%s</td>", pMbr->txtDesc()) ;
Z << "</tr>" ;
}
break ;
case ''M'':
if (pMbr)
Z.Printf("<tr><td align="center">%s::%s</td></tr>\n" , pClass->txtType(), pMbr->txtName()) ;
else
Z << "<tr><td align="center">Class Member Editor</td></tr>\n" ;
Z <<
"<tr><td height="60"> </td></tr>\n</table>\n<table width="66%" align="center" border="0" cellspacing="0" cellpadding="0" class="main">\n"
;
Z <<
"<tr height="25"><td>Name: </td><td><input type="text" name="username_master" size="40" maxlen="40"/></td></tr>\n<tr height="25"><td>Type: </td><td><input type="select" name="password_master" size="40" maxlen="40"/></td></tr>\n<tr height="25"><td>Min Value: </td><td><input type="select" name="password_master" size="40" maxlen="40"/></td></tr>\n<tr height="25"><td>Max Value: </td><td><input type="select" name="password_master" size="40" maxlen="40"/></td></tr>\n<tr height="25"><td>Compusory: </td><td><input type="select" name="password_master" size="40" maxlen="40"/></td></tr>\n<tr height="25"><td>Multiple: </td><td><input type="select" name="password_master" size="40" maxlen="40"/></td></tr>\n"
;
break ;
case ''R'': if (pRes[10]==CHAR_PERIOD)
{
if (IsPosint(numId, pRes + 11))
pRepos = m_ADP.GetObjRepos(numId) ;
}
break ;
}
Z <<
"</table>\n</form>\n"
;
if (entName)
pE->SetHdr("x-title", entName) ;
else
pE->SetHdr("x-title", pRes) ;
pE->SendRawChain(HTTPMSG_OK, HMTYPE_TXT_HTML, Z, 0,false) ;
}