Return TypeFunction nameArguments
voidhdsApp::MasterArticle(hzHttpEvent*,)

Declared in file: hzDissemino.h
Defined in file : hdsMaster.cpp

Function Logic:

0:START 1:hzHttpEvent::Session pInfo 2:!pInfo 3:hzHttpEvent::SendAjaxResult 4: No text 5:hzHttpEvent::GetResource pRes memcmp 6:memcmp(pRes,/masterAction,13) 7:hzHttpEvent::SendAjaxResult 8: No text 9:!pE->QueryLen() 10:hzHttpEvent::SendAjaxResult 11: No text 12:hzMapS::GetKey argA hzMapS::GetObj argB 13:argA==editfile 14:_masterCfgEdit 15: No text 16:memcmp(pRes,/master_dme-,12) 17:hzHttpEvent::SendAjaxResult 18: No text 19:pRes[12]!='E'&&pRes[12]!='C'&&pRes[12]!='M'&&pRes[12]!='R' 20:hzHttpEvent::SendAjaxResult 21: No text 22:pRes[13]==(char)46 23:pRes[12] 24:'E' 25:IsPosint(numId,pRes+14) 26:hdbADP::GetDataEnum pEnum 27:pEnum 28:hdbDatatype::txtType entName

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) ;
}