📄 postflatview.cs
字号:
topPost = (ForumPost) postSet.Posts[postSet.Posts.Count-1];
info[0] = Formatter.FormatUsername(postThread.MostRecentPostAuthorID, postThread.MostRecentPostAuthor, false);
info[1] = Formatter.FormatAgoDate( postThread.ThreadDate );
info[2] = Convert.ToString( postSet.TotalRecords - 1 );
}
threadStats.Text = String.Format( ResourceManager.GetString("PostFlatView_BriefInfo"), info);
}
#endregion
}
private void postRepeater_ItemDataBound(Object sender, RepeaterItemEventArgs e) {
if( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
{
ForumPost post = e.Item.DataItem as ForumPost;
User user = post.User;
switch ( e.Item.ItemType )
{
case ListItemType.Item:
case ListItemType.AlternatingItem:
RatePost ratePost = (RatePost) e.Item.FindControl("RatePost");
ForumImageButton replyButton = (ForumImageButton) e.Item.FindControl("ReplyButton");
ForumImageButton quoteButton = (ForumImageButton) e.Item.FindControl("QuoteButton");
ForumImageButton deleteButton = (ForumImageButton) e.Item.FindControl("DeleteButton");
ForumImageButton editButton = (ForumImageButton) e.Item.FindControl("EditButton");
ModerationPopupMenu modPopupMenu = (ModerationPopupMenu)e.Item.FindControl( "ModerationPopupMenu" );
UserOnlineStatus onlineStatus = (UserOnlineStatus)e.Item.FindControl( "OnlineStatus" );
UserAvatar avatar = (UserAvatar)e.Item.FindControl( "Avatar" );
Literal username = (Literal)e.Item.FindControl( "Username" );
PostIcons postIcon = (PostIcons)e.Item.FindControl( "PostIcon" );
RoleIcons roleIcon = (RoleIcons)e.Item.FindControl( "RoleIcon" );
UserAttribute joinedAttribute = (UserAttribute)e.Item.FindControl( "JoinedAttribute" );
UserAttribute locationAttribute = (UserAttribute)e.Item.FindControl( "LocationAttribute" );
UserAttribute postsAttribute = (UserAttribute)e.Item.FindControl( "PostsAttribute" );
UserAttribute pointsAttribute = (UserAttribute)e.Item.FindControl( "PointsAttribute" );
Literal emoticon = (Literal)e.Item.FindControl( "Emoticon" );
Literal subject = (Literal)e.Item.FindControl( "Subject" );
PostAttachment postAttachment = (PostAttachment)e.Item.FindControl( "PostAttachment" );
PostView postView = (PostView)e.Item.FindControl( "PostView" );
HtmlAnchor postAnchor = (HtmlAnchor)e.Item.FindControl( "PostAnchor" );
PostImageButtons buttonsForPoster = (PostImageButtons)e.Item.FindControl( "ButtonsForPoster" );
IText postPoints = TextControlHelper.Create(e.Item.FindControl( "PostPoints" ));
IText postIPAddress = TextControlHelper.Create(e.Item.FindControl( "PostIPAddress" ));
HyperLink reportLink = (HyperLink)e.Item.FindControl( "ReportLink" );
HyperLink quickReply = (HyperLink)e.Item.FindControl( "quickReplyLink" );
Panel answerPanel = e.Item.FindControl("AnswerPanel") as Panel;
StatusDropDownList threadStatus = e.Item.FindControl( "ThreadStatus" ) as StatusDropDownList;
ResourceControl threadStatusLabel = e.Item.FindControl( "ThreadStatusLabel" ) as ResourceControl;
HtmlGenericControl PostViewWrapper = e.Item.FindControl("PostViewWrapper") as HtmlGenericControl;
FavoritePopupMenu favoritePopupMenu = e.Item.FindControl("FavoritePopupMenu") as FavoritePopupMenu;
ContactPopupMenu contactPopupMenu = e.Item.FindControl("ContactPopupMenu") as ContactPopupMenu;
//HtmlGenericControl ForumPostTitleArea = e.Item.FindControl("ForumPostTitleArea") as HtmlGenericControl;
Href postLink = e.Item.FindControl("PostLink") as Href;
Href parentLink = e.Item.FindControl("ParentLink") as Href;
ResourceControl replyToLabel = e.Item.FindControl("ReplyToLabel") as ResourceControl;
InlineTagEditorPanel tagEditorPanel = e.Item.FindControl("InlineTagEditorPanel") as InlineTagEditorPanel;
Boolean userCanReply = UserCanReply();
CSContext cntx = CSContext.Current;
if (tagEditorPanel != null)
{
tagEditorPanel.PostID = post.PostID;
tagEditorPanel.SelectedTags = post.Categories;
}
if(postLink != null)
{
postLink.NavigateUrl = ForumUrls.Instance().PostPermaLink(cntx.PostID, post.PostID);
postLink.Text = post.PostID.ToString();
if(post.PostLevel == 1)
{
postLink.ToolTip = String.Format(ResourceManager.GetString("PostView_PostLink_ThreadTitle"), post.PostID.ToString());
}
else
{
postLink.ToolTip = ResourceManager.GetString("PostView_PostLink_PostTitle");
}
}
if(replyToLabel != null)
{
if(post.PostLevel > 1)
{
replyToLabel.Visible = true;
}
else
{
replyToLabel.Visible = false;
}
}
if(parentLink != null && post.PostLevel > 1)
{
parentLink.NavigateUrl = ForumUrls.Instance().PostPermaLink(cntx.PostID, post.ParentID);
parentLink.Text = post.ParentID.ToString();
parentLink.ToolTip = ResourceManager.GetString("PostView_PostLink_PostTitle");
}
if (ratePost != null)
{
ratePost.Post = post;
if (cntx.SiteSettings.SectionRatingType == SectionRatingType.PostRating)
ratePost.Visible = true;
}
if (replyButton != null)
{
replyButton.Post = post;
replyButton.Visible = userCanReply;
}
if (quoteButton != null)
{
quoteButton.Post = post;
quoteButton.Visible = userCanReply;
}
if (deleteButton != null)
{
deleteButton.Post = post;
deleteButton.Visible = permission.Delete;
}
if (editButton != null)
{
editButton.Post = post;
editButton.Visible = permission.Edit && (!forum.IsModerated || (user.ModerationLevel == ModerationLevel.Unmoderated));
}
if (answerPanel != null)
{
bool isAnswer = (post.PostStatus & PostStatus.IsAnswer) == PostStatus.IsAnswer;
bool available = (post.PostLevel > 1) &&
ForumConfiguration.Instance().EnableThreadStatus &&
forum.EnableThreadStatus;
bool visible = permission.MarkAsAnswer ||
(csContext.User.UserID == postThread.AuthorID && (!isAnswer));
answerPanel.Visible = available && visible;
}
if (threadStatus != null) {
// set it ready for postback
threadStatus.AutoPostBack = true;
threadStatus.StatusChanged += new ThreadStatusEventHandler( ThreadStatus_Changed );
threadStatus.ThreadID = post.ThreadID;
// Check if it is visible
bool isVisible = ( (post.PostLevel == 1) &&
ForumConfiguration.Instance().EnableThreadStatus &&
forum.EnableThreadStatus &&
(csContext.User.IsAdministrator ||
(csContext.User.UserID == post.User.UserID) ||
(csContext.User.IsModerator))
) ? true : false;
// Set controls if they are visible
threadStatus.Visible = isVisible;
threadStatusLabel.Visible = isVisible;
// Only if visible get thread details. Thas happens only one time per thread listing.
if (isVisible) {
if (postThread != null) {
threadStatus.SelectedValue = postThread.Status;
}
}
}
if (modPopupMenu != null)
{
modPopupMenu.Post = post;
modPopupMenu.Forum = forum;
modPopupMenu.PostModerateRefresh += new EventHandler(ModerationMenu_PostModerateRefresh);
}
if (favoritePopupMenu != null)
{
favoritePopupMenu.PostID = post.PostID;
favoritePopupMenu.SectionID = forum.SectionID;
favoritePopupMenu.UserID = post.User.UserID;
favoritePopupMenu.ApplicationType = ApplicationType.Forum;
}
if (contactPopupMenu != null)
{
if(post.User.IsAnonymous)
contactPopupMenu.Visible = false;
else
contactPopupMenu.User = post.User;
}
// Notice the following controls that the user should be seen as anonymous
//
bool showUserAsAnonymous = (post.IsAnonymousPost && siteEnableUserPostingAsAnonymous && forumEnableUserPostingAsAnonymous);
if (onlineStatus != null)
{
onlineStatus.User = user;
onlineStatus.IsCloakedUser = showUserAsAnonymous;
}
if (avatar != null)
{
avatar.User = user;
avatar.IsCloakedUser = showUserAsAnonymous;
}
if (username != null)
{
if (post.PostShouldBeIgnored)
{
username.Text = Formatter.FormatUsername ( user.UserID, post.Username, true, false, true );
}
else
{
username.Text = Formatter.FormatUsername ( user.UserID, post.Username, showUserAsAnonymous );
}
}
if (postIcon != null)
{
postIcon.User = user;
postIcon.IsCloakedUser = showUserAsAnonymous;
}
if (roleIcon != null)
{
roleIcon.User = user;
roleIcon.IsCloakedUser = showUserAsAnonymous;
}
if (joinedAttribute != null)
{
joinedAttribute.User = user;
joinedAttribute.IsCloakedUser = showUserAsAnonymous;
}
if (locationAttribute != null)
{
locationAttribute.User = user;
locationAttribute.IsCloakedUser = showUserAsAnonymous;
}
if (postsAttribute != null)
{
postsAttribute.User = user;
postsAttribute.IsCloakedUser = showUserAsAnonymous;
}
if (pointsAttribute != null)
{
pointsAttribute.User = user;
pointsAttribute.IsCloakedUser = showUserAsAnonymous;
}
if (emoticon != null)
emoticon.Text = Formatter.GetEmotionMarkup( post.EmoticonID );
if (subject != null)
subject.Text = post.Subject;
if (postAttachment!= null)
postAttachment.Post = post;
if (postView != null)
postView.Post = post;
if(quickReply != null)
{
if(!post.IsLocked && !currentUser.IsAnonymous && userCanReply)
{
quickReply.NavigateUrl = "javascript:" + "showQuickReply(" + post.PostID.ToString() + ")";
quickReply.Attributes.Add("onclick", "showQuickReply(" + post.PostID.ToString() + ")");
quickReply.Text = ResourceManager.GetString("QuickReply");
}
else
{
quickReply.Visible = false;
}
//PostViewWrapper.Attributes.Add("ondblclick", "showQuickReply(" + post.PostID.ToString() + ")");
//JavaScript.RegisterControlForToolTip(PostViewWrapper,string.Format(ResourceManager.GetString("QuickReply_Popup_Message"),post.User.DisplayName),150);
}
if (postAnchor != null)
postAnchor.Name = post.PostID.ToString();
if (buttonsForPoster != null)
{
buttonsForPoster.User = user;
buttonsForPoster.IsCloakedUser = showUserAsAnonymous;
}
if (postPoints != null)
postPoints.Text = Formatter.PostPoints( post );
if (postIPAddress != null)
postIPAddress.Text = Formatter.PostIPAddress( post );
if ((reportLink != null) && (reportForum != null))
{
reportLink.Visible = !user.IsAnonymous;
ForumUrls forumUrls = new ForumUrls();
reportLink.NavigateUrl = forumUrls.Report(reportForum.SectionID) + "&ReportPostID=" + post.PostID.ToString();
reportLink.Text = ResourceManager.GetString("Report");
}
break;
}
}
}
private Boolean UserCanReply()
{
if (currentUser.IsAnonymous)
return true;
Boolean permissionToReply = permission.Reply;
Boolean anonUserCanPost = ( CSContext.Current.SiteSettings.EnableAnonymousUserPosting && forum.EnableAnonymousPosting );
return ( permissionToReply && ( !currentUser.IsAnonymous || anonUserCanPost ) );
}
private Boolean UserCanPost()
{
if (currentUser.IsAnonymous)
return true;
Boolean permissionToPost = permission.Post;
Boolean anonUserCanPost = ( CSContext.Current.SiteSettings.EnableAnonymousUserPosting && forum.EnableAnonymousPosting );
return ( permissionToPost && ( !currentUser.IsAnonymous || anonUserCanPost ) );
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -