static public PageUi GetPageUi(IDnaDataReaderCreator creator, Article guide, BBC.Dna.Objects.User viewingUser) { PageUi pageUi = new PageUi(viewingUser.UserId); // Update the edit link if the user is allowed bool editable = false; string editableLink = "/UserEdit"; if (!guide.IsDeleted && guide.HasEditPermission(viewingUser)) { editable = true; editableLink += guide.H2g2Id.ToString(); } // Now set the recommended link string recommendLink = "RecommendEntry?h2g2ID=" + guide.H2g2Id.ToString() + "&mode=POPUP"; bool recommendable = guide.ArticleInfo.Status.Type == 3 && viewingUser.UserId > 0 && (viewingUser.IsEditor || viewingUser.IsScout); // If this is a sub editors copy of a recommended entry, and the viewer is // the sub editor, then give them a button to say they have finished subbing // it and want to return the entry to the editors string subbedLink = "SubmitSubbedEntry?h2g2ID=" + guide.ArticleInfo.H2g2Id.ToString() + "&mode=POPUP"; bool subeditor = viewingUser.UserId > 0 && (viewingUser.IsEditor || viewingUser.IsSubEditor) && guide.CheckIsSubEditor(viewingUser, creator); // Setup the discuss UI string discussLink = "AddThread?forum=" + guide.ArticleInfo.ForumId.ToString() + "&article=" + guide.ArticleInfo.H2g2Id.ToString(); bool discussable = !guide.IsDeleted && guide.ArticleInfo.ForumId > 0 && viewingUser.UserId > 0; pageUi.EditPage = new PageUiElement(editableLink, editable); pageUi.RecommendEntry = new PageUiElement(recommendLink, recommendable); pageUi.EntrySubbed = new PageUiElement(subbedLink, subeditor); pageUi.Discuss = new PageUiElement(discussLink, discussable); pageUi.SiteHome = new PageUiElement("/", true); pageUi.DontPanic = new PageUiElement("/DONTPANIC", true); pageUi.Search = new PageUiElement("/Search", true); return pageUi; }