Setup the webmaster menu as a tree of C-Interface articles. This creates the master page templates for viewing/managing the data model. Includes the forms and form handlers for creating/editing classes, class members and repositories.

Return TypeFunction nameArguments
hzEcodehdsApp::SetupMasterMenu(void)

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

Function Logic:

0:START 1:unknown 2:items 3:m_DataModel items items H T items root H T items R T pArtCIF items R T pArtCIF items R T pArtCIF items R T pArtCIF items R T pArtCIF items H T items R T pArtCIF items R T pArtCIF items R T pArtCIF items R T pArtCIF items R T pArtCIF items R T pArtCIF items R T pArtCIF items H T items 4:unknown 5:X T items items 6:unknown 7:pEnum 8:unknown 9:items R T pArtCIF VE_CT_ACTIVE VE_AT_ACTIVE pArtCIF items 10:unknown 11:X T items items 12:unknown 13:pClass 14:unknown 15:items Y T pArtCIF VE_CT_ACTIVE VE_AT_ACTIVE pArtCIF items 16:unknown 17:pMbr pType pSub 18:unknown 19:items 20:items 21:R T pArtCIF VE_CT_ACTIVE VE_AT_ACTIVE pArtCIF items 22:unknown 23:X T items items 24:unknown 25:pRepos 26:unknown 27:items R T pArtCIF VE_CT_ACTIVE VE_AT_ACTIVE pArtCIF items 28:items 29:Return E_OK

Function body:

hzEcode hdsApp::SetupMasterMenu (void)
{
   //  Setup the webmaster menu as a tree of C-Interface articles.
   //  
   //  This creates the master page templates for viewing/managing the data model. Includes the forms and form handlers for creating/editing classes, class members and repositories.
   _hzfunc("hdsApp::SetupDataModel") ;
   const hdbMember*        pMbr ;      //  Class member
   const hdbDatatype*      pType ;     //  Data type (base class)
   const hdbClass*         pSub ;      //  Sub-class
   const hdbEnum*          pEnum ;     //  Data Enum
   const hdbClass*         pClass ;    //  Class
   const hdbObjRepos*      pRepos ;    //  Repository
   //  hdsArticle*  pRoot ;   // Tree item
   //  hdsArticle*  pHead ;   // Tree heading
   //  hdsArticle*  pItem_E ;  // Tree item "Enums"
   //  hdsArticle*  pItem_C ;  // Tree item "Classes"
   //  hdsArticle*  pItem_R ;  // Tree item "Repositories"
   //  hdsArticle*  pItemCC ;  // Tree item of current class
   hdsArticleCIF*  pArtCIF ;       //  Current article
   hzString        root ;          //  Header title
   hzString        H ;             //  Header ref name
   hzString        X ;             //  Subheader ref name
   hzString        Y ;             //  sub sub header ref name
   hzString        R ;             //  Article ref name
   hzString        T ;             //  Article title
   hzString        S ;             //  Temp string
   uint32_t        n ;             //  Loop iterator
   uint32_t        mbrNo ;         //  Member number
   char            namBuf[16]; //  Numeric based name
   if (!this)
       hzexit(E_SEQUENCE, "No application") ;
   //  Set name of hdsApp::m_DataModel to 'master'
   m_DataModel.m_Groupname = "master" ;
    //  m_DataModel.m_USL.SetGroup(m_ArticleGroups.Count()) ;
    m_ArticleGroups.Insert(m_DataModel.m_Groupname, &m_DataModel) ;
   //  LOAD TREE
   root.Clear() ;
   H = "Master_Main_Menu" ;
   T = m_Appname ;
   m_DataModel.AddHead(root, H, T, true) ;
   root = H ;
   //  Add the menu items applicable at the Sphere level
   H = "SphereLevel" ;
   T = "Sphere Level Resources" ;
   m_DataModel.AddHead(root, H, T, true) ;
   R = "S.1" ; T = "Blacklisted IPs" ; pArtCIF = new hdsArticleCIF(R, T, &_masterBanned) ;     m_DataModel.AddItem(H, R, T, pArtCIF, false) ;
   R = "S.2" ; T = "Memory Stats" ;    pArtCIF = new hdsArticleCIF(R, T, &_masterMemstat) ;    m_DataModel.AddItem(H, R, T, pArtCIF, false) ;
   R = "S.3" ; T = "Domain names" ;    pArtCIF = new hdsArticleCIF(R, T, &_masterDomain) ;     m_DataModel.AddItem(H, R, T, pArtCIF, false) ;
   R = "S.4" ; T = "Email addresses" ; pArtCIF = new hdsArticleCIF(R, T, &_masterEmaddr) ;     m_DataModel.AddItem(H, R, T, pArtCIF, false) ;
   R = "S.5" ; T = "Strings (Fixed)" ; pArtCIF = new hdsArticleCIF(R, T, &_masterStrFix) ;     m_DataModel.AddItem(H, R, T, pArtCIF, false) ;
   //  Add the resources and stats stuff
   H = "AppResoures" ;
   T = "Application Resources" ;
   m_DataModel.AddHead(root, H, T, true) ;
   R = "A.1" ; T = "Application Parameters" ;  pArtCIF = new hdsArticleCIF(R, T, &_masterAppParam) ;   m_DataModel.AddItem(H, R, T, pArtCIF, false) ;
   R = "A.2" ; T = "Config Files" ;            pArtCIF = new hdsArticleCIF(R, T, &_masterCfgList) ;    m_DataModel.AddItem(H, R, T, pArtCIF, false) ;
   R = "A.3" ; T = "Misc Fixed Files" ;        pArtCIF = new hdsArticleCIF(R, T, &_masterFileList) ;   m_DataModel.AddItem(H, R, T, pArtCIF, false) ;
   R = "A.4" ; T = "Pages" ;                   pArtCIF = new hdsArticleCIF(R, T, &_masterResList) ;    m_DataModel.AddItem(H, R, T, pArtCIF, false) ;
   R = "A.5" ; T = "Article Groups" ;          pArtCIF = new hdsArticleCIF(R, T, &_masterResList) ;    m_DataModel.AddItem(H, R, T, pArtCIF, false) ;
   R = "A.6" ; T = "Site Visitors" ;           pArtCIF = new hdsArticleCIF(R, T, &_masterVisList) ;    m_DataModel.AddItem(H, R, T, pArtCIF, false) ;
   R = "A.7" ; T = "Strings (Standard)" ;      pArtCIF = new hdsArticleCIF(R, T, &_masterStrGen) ;     m_DataModel.AddItem(H, R, T, pArtCIF, false) ;
   //  R = "A.8" ; T = "USL Assignments" ;   pArtCIF = new hdsArticleCIF(R, T, &_masterUSL) ;  m_DataModel.AddItem(H, R, T, pArtCIF, false) ;
   //  Add the Data Object Model stuff
   H = "masterDOM" ;
   T = "Data Object Model" ;
   m_DataModel.AddHead(root, H, T, true) ;
   //  Any enums
   //  if (m_ADP.CountDataEnum())  { R = "enum" ; T = "Enums" ;   pItem_E = m_DataModel.AddHead(H, R, T, true) ; }
   //  if (m_ADP.CountDataClass())  { R = "class" ; T = "Classes" ;   pItem_C = m_DataModel.AddHead(H, R, T, true) ; }
   //  if (m_ADP.CountObjRepos())  { R = "repos" ; T = "Repositories" ; pItem_R = m_DataModel.AddHead(H, R, T, true) ; }
   //  Enums
   if (m_ADP.CountDataEnum())
   {
       X = "enums" ;
       T = "Enums" ;
       m_DataModel.AddHead(H, X, T, true) ;
       threadLog("%d enums\n", m_ADP.CountDataEnum()) ;
       for (n = 0; n < m_ADP.CountDataEnum() ; n++)
       {
           pEnum = m_ADP.GetDataEnum(n) ;
           if (pEnum)
           {
               sprintf(namBuf, "E.%d", n+1);
               R = namBuf ;
               T = pEnum->strType() ;
               pArtCIF = new hdsArticleCIF(R, T, &_masterEnumEdit) ;
               pArtCIF->m_flagVE |= VE_ACTIVE ;
               m_DataModel.AddItem(X, R, T, pArtCIF, false) ;
           }
       }
   }
   //  Classes
   if (m_ADP.CountDataClass())
   {
       X = "class" ;
       T = "Classes" ;
       m_DataModel.AddHead(H, X, T, true) ;
       threadLog("%d classes\n", m_ADP.CountDataClass()) ;
       for (n = 0; n < m_ADP.CountDataClass() ; n++)
       {
           pClass = m_ADP.GetDataClass(n) ;
           if (pClass)
           {
               sprintf(namBuf, "C.%d", pClass->ClassId()) ;
               Y = namBuf ;
               T = pClass->strType() ;
               pArtCIF = new hdsArticleCIF(Y, T, &_masterClassEdit) ;
               pArtCIF->m_flagVE |= VE_ACTIVE ;
               m_DataModel.AddItem(X, Y, T, pArtCIF, false) ;
               for (mbrNo = 0; mbrNo < pClass->MbrCount() ; mbrNo++)
               {
                   pMbr = pClass->GetMember(mbrNo) ;
                   pType = pMbr->Datatype() ;
                   pSub = dynamic_cast<const hdbClass*>(pType) ;
                   if (pSub)
                       sprintf(namBuf, "C%d.S.%d",pClass->ClassId(), mbrNo) ;
                   else
                       sprintf(namBuf, "C%d.M.%d",pClass->ClassId(), mbrNo) ;
                   R = namBuf ;
                   T = pMbr->strName() ;
                   pArtCIF = new hdsArticleCIF(R, T, &_masterMbrEdit) ;
                   pArtCIF->m_flagVE |= VE_ACTIVE ;
                   m_DataModel.AddItem(Y, R, T, pArtCIF, false) ;
               }
           }
       }
   }
   //  Repositories
   if (m_ADP.CountObjRepos())
   {
       X = "repos" ;
       T = "Repositories" ;
       m_DataModel.AddHead(H, X, T, true) ;
       threadLog("%d repos\n", m_ADP.CountObjRepos()) ;
       for (n = 0; n < m_ADP.CountObjRepos() ; n++)
       {
           pRepos = m_ADP.GetObjRepos(n) ;
           if (pRepos)
           {
               sprintf(namBuf, "R.%d", n+1);
               R = namBuf ;
               T = pRepos->strName() ;
               pArtCIF = new hdsArticleCIF(R, T, &_masterReposEdit) ;
               pArtCIF->m_flagVE |= VE_ACTIVE ;
               m_DataModel.AddItem(X, R, T, pArtCIF, false) ;
           }
       }
   }
   //  CREATE PAGES and ARTICLES
   threadLog("done\n") ;
   return E_OK ;
}