本文整理汇总了C++中CUser::GetMasthead方法的典型用法代码示例。如果您正苦于以下问题:C++ CUser::GetMasthead方法的具体用法?C++ CUser::GetMasthead怎么用?C++ CUser::GetMasthead使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CUser
的用法示例。
在下文中一共展示了CUser::GetMasthead方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CreatePageArticle
bool CUserPageBuilder::CreatePageArticle(int iUserID, CUser& PageOwner, CGuideEntry &Article)
{
bool bSuccess = false;
int ih2g2ID = 0;
// if we have a page owner and can get their masthead then try to
// initialise it in an appropriate way for the user page
// are these flags right ???
if (!PageOwner.IsEmpty() &&
PageOwner.GetMasthead(&ih2g2ID) &&
ih2g2ID > 0)
{
CUser* pViewingUser = m_InputContext.GetCurrentUser();
bSuccess = Article.Initialise(ih2g2ID, m_InputContext.GetSiteID(), pViewingUser, true, true, true, true);
}
// now check if the XSLT parser finds any errors in the XML
// if it does then try to fail gracefully by keeping the rest of the page
// and just not displaying the masthead
if (bSuccess)
{
CTDVString sArticleXML;
CTDVString sErrors;
CTDVString sErrorLine;
int iLine;
int iChar;
// get the article in text form and see if the xslt parser chokes on it
bSuccess = Article.GetAsString(sArticleXML);
// OutputDebugString(sArticleXML);
bSuccess = bSuccess && m_InputContext.GetParsingErrors(sArticleXML, &sErrors, &sErrorLine, &iLine, &iChar);
if (!bSuccess)
{
// XSLT object had parse errors, so keep the ARTICLEINFO stuff
// but throw away anything else inside the ARTICLE tag
CTDVString sArticleInfoXML;
int iLeftPos, iRightPos;
iLeftPos = sArticleXML.FindText("<ARTICLEINFO");
iRightPos = sArticleXML.FindText("</ARTICLEINFO>");
if (iLeftPos >= 0 && iRightPos >= 0 && iRightPos >= iLeftPos)
{
// adjust right pos to end of tag
iRightPos += 14;
sArticleInfoXML = sArticleXML.Mid(iLeftPos, iRightPos - iLeftPos);
}
else
{
// no article info available
// TODO: could try to construct it from other data
sArticleInfoXML = "<ARTICLEINFO></ARTICLEINFO>";
}
bSuccess = Article.RemoveTagContents("ARTICLE");
TDVASSERT(bSuccess, "RemoveTagContents(...) failed in CUserPageBuilder::CreatePageArticle(...)");
// insert an ERROR tag with a type and some contents that can be used by the stylesheet or
// ignored as it sees fit
sArticleXML = "<ERROR TYPE='XML-PARSE-ERROR'>Error parsing GuideML</ERROR>";
bSuccess = Article.AddInside("ARTICLE", sArticleXML);
bSuccess = bSuccess && Article.AddInside("ARTICLE", sArticleInfoXML);
}
}
// return the object, or NULL if couldn't make one
return bSuccess;
}
示例2: CreateUserInterface
bool CUserPageBuilder::CreateUserInterface(CUser* pViewer, CUser& Owner, CGuideEntry& Masthead, CPageUI &Interface)
{
// TODO: will need to take into account viewing users preferences at some
// point if they are allowed to switch off some buttons
bool bSuccess = Interface.Initialise(pViewer);
// I've guessed at what the URLs might look like => should the url
// parameters be filled in at this time as well?
if (bSuccess)
{
bool bDiscuss = true;
bool bEdit = false;
bool bViewerActive = false;
int iViewerID = 0;
int iOwnerID = 0;
int iForumID = 0;
// get the ID of the forum if we have been given a masthead article and
// it actually has a forum (which it should)
if (!Masthead.IsEmpty())
{
iForumID = Masthead.GetForumID();
}
if (iForumID == 0)
{
bDiscuss = false;
}
// check if we have a registered viewer and also if this happens to be their
// own home page and set the appropriate button flags
if (pViewer != NULL && pViewer->GetActive(&bViewerActive) && bViewerActive)
{
if (pViewer->GetUserID(&iViewerID) &&
!Owner.IsEmpty() &&
Owner.GetUserID(&iOwnerID) &&
iViewerID == iOwnerID &&
iViewerID != 0)
{
// also if this is their own home page they have
// an edit page button
bEdit = true;
}
}
// TODO: forum ID seems to not work???
CTDVString sDiscuss = "AddThread?forum=";
sDiscuss << iForumID << "&article=";
int ih2g2ID = 0;
CTDVString sEditLink = "";
// get masthead ID if there is one
if (!Owner.IsEmpty())
{
ih2g2ID = Owner.GetMasthead();
}
else if (!Masthead.IsEmpty())
{
ih2g2ID = Masthead.GetH2G2ID();
}
sEditLink << "/UserEdit" << ih2g2ID << "?Masthead=1";
sDiscuss << ih2g2ID;
// now set the apppropriate buttons in the UI object
// currently you only get the eidt page button if this is actually your homepage, i.e. you
// wont get it if you have editor status
bSuccess = Interface.SetDiscussVisibility(bDiscuss, sDiscuss) &&
Interface.SetEditPageVisibility(bEdit, sEditLink);
// TODO: may wish to fail in this case, but just log the error currently
TDVASSERT(bSuccess, "Couldn't set a visibility option in CUserPageBuilder::CreateUserInterface()");
}
// if something went wrong then delete object and return NULL
// return object or NULL for failure
return bSuccess;
}