⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 postflatview.cs

📁 community server 源码
💻 CS
📖 第 1 页 / 共 2 页
字号:
                        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 + -