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

📄 threadview.cs

📁 本系统是在asp版《在线文件管理器》的基础上设计制作
💻 CS
📖 第 1 页 / 共 2 页
字号:

            if (csContext.User.IsAnonymous) 
            {
                filterUsers.Visible = false;
                hideReadPosts.Visible = false;
                rememberSettingsButton.Visible = false;
                dateFilter.Items.FindByValue( ((int) CSContext.Current.SiteSettings.DefaultThreadDateFilter).ToString() );
				skin.FindControl( "FilterTopicRow" ).Visible = false;
				skin.FindControl( "EmailNotificationRow" ).Visible = false;
            }

			
            // User permissions on new post button
            //

			if (mode != ThreadViewMode.MyForums)
			{
				User user = CSContext.Current.User;
				if( forum.SectionID > 0 ) 
				{
					ForumPermission p = forum.ResolvePermission( user )  as ForumPermission;
					if( !p.Read )
						throw new CSException( CSExceptionType.AccessDenied );

					if( !p.Post ) 
					{
						ForumImageButton newPostButton = (ForumImageButton) skin.FindControl("NewPostButton");
						if (newPostButton != null) 
						{
							newPostButton.Visible = false;
						}
					}			
				}
			}
			else
			{
				ForumImageButton newPostButton = (ForumImageButton) skin.FindControl("NewPostButton");
				if (newPostButton != null) 
				{
					newPostButton.Visible = false;
				}
			}
            DataBind();


        }
        #endregion

        #region Internal helper methods
        private void SetSort() 
        {

            

            int _sortBy = csContext.GetIntFromQueryString("sb", -1);
            int _sortOrder = csContext.GetIntFromQueryString("d",-1);

            if (_sortBy > -1)
                sortBy = (SortThreadsBy) _sortBy;

            if (_sortOrder > -1)
                sortOrder = (SortOrder) _sortOrder;

        }
        #endregion

        #region Events
        public void Sort_Changed (Object sender, EventArgs e) 
        {

            DataBind();
        }

		public void forumFilterddl_Changed (Object sender, EventArgs e) 
		{

			DataBind();
		}

        public void RememberSortSettings_Click (Object sender, EventArgs e) 
        {
            string forumSettings = (int) threadSortddl.SelectedValue + ":" + (int) sortOrderddl.SelectedValue + ":" + (int) dateFilter.SelectedValue + ":" + hideReadPosts.SelectedValue.ToString().Substring(0,1) + ":" + (int) filterUsers.SelectedValue;
            UserCookie userCookie = new UserCookie( csContext.User );
            userCookie.SaveForumOptions(csContext.ForumID, forumSettings);
            Sort_Changed(sender, e);
        }

        #endregion

        #region Databinding
        public override void DataBind() 
        {
            DateTime dateFilterValue;
            
			int forumID = -1;

            if ((forum != null) && (forum.SectionID > 0))
                forumID = forum.SectionID;
			else
				if(mode != ThreadViewMode.PrivateMessages)
					forumID = forumFilterddl.SelectedForum;

            if (dateFilter.SelectedValue == ThreadDateFilterMode.LastVisit)
                dateFilterValue = CSContext.Current.User.GetUserCookie().LastVisit;
            else
                dateFilterValue = dateFilter.SelectedDate;


            // Get a populated thread set
            //
            switch (mode) 
            {

                case ThreadViewMode.Active:
                    threadSet = Threads.GetThreads(forumID, pager.PageIndex, pager.PageSize, csContext.User, dateFilterValue, threadSortddl.SelectedValue, SortOrder.Descending, ThreadStatus.NotSet, filterUsers.SelectedValue, true, hideReadPosts.SelectedValue, false, true);

                    // Do we have data?
                    //
                    if (threadSet.Threads.Count == 0) 
                    {
                        throw new CSException(CSExceptionType.ForumNoActivePosts);
                    }
                    
                    break;

                case ThreadViewMode.Unanswered:
                    
                    threadSet = Threads.GetThreads(forumID, pager.PageIndex, pager.PageSize, csContext.User, dateFilterValue, threadSortddl.SelectedValue, sortOrderddl.SelectedValue, ThreadStatus.NotSet, filterUsers.SelectedValue, false, hideReadPosts.SelectedValue, true, true);

                    // Do we have data?
                    //
                    if (threadSet.Threads.Count == 0) 
                    {
                        throw new CSException(CSExceptionType.ForumNoUnansweredPosts);
                    }

                    break;

                case ThreadViewMode.NotRead:
                    threadSet = Threads.GetThreads(forumID, pager.PageIndex, pager.PageSize, csContext.User, DateTime.Now.AddDays(-7), threadSortddl.SelectedValue, sortOrderddl.SelectedValue, ThreadStatus.NotSet, filterUsers.SelectedValue, false, true, false, true);

                    // Do we have data?
                    //
                    if (threadSet.Threads.Count == 0) {
                        throw new CSException(CSExceptionType.ForumNoUnreadPosts);
                    }

                    break;

				case ThreadViewMode.MyForums:
					threadSet = Threads.GetThreads(forumID, pager.PageIndex, pager.PageSize, CSContext.Current.User, dateFilterValue, threadSortddl.SelectedValue, sortOrderddl.SelectedValue, ThreadStatus.NotSet, ThreadUsersFilter.HideTopicsParticipatedIn, false, hideReadPosts.SelectedValue, false, true);

					// Do we have data?
					//
					if (threadSet.Threads.Count == 0) 
					{
						throw new CSException(CSExceptionType.ForumNoUnreadPosts);
					}

					break;


                case ThreadViewMode.PrivateMessages:
                    threadSet = Threads.GetThreads(0, pager.PageIndex, pager.PageSize, csContext.User, dateFilterValue, threadSortddl.SelectedValue, sortOrderddl.SelectedValue, ThreadStatus.NotSet, ThreadUsersFilter.All, false, false, false,  true);
                    break;

                default:
                    if (forumID > 0)
                        threadSet = Threads.GetThreads(forumID, pager.PageIndex, pager.PageSize, csContext.User, dateFilterValue, threadSortddl.SelectedValue, sortOrderddl.SelectedValue, ThreadStatus.NotSet, filterUsers.SelectedValue, false, hideReadPosts.SelectedValue, false, true);
                    else
                        throw new CSException(CSExceptionType.SectionNotFound);

                    break;

            }

            if ((threadSet.Announcements.Count > 0) && (mode != ThreadViewMode.Unanswered) && (mode != ThreadViewMode.Active) ) 
            {
                announcements.DataSource = threadSet.Announcements;
                announcements.DataBind();
            } 
            else if ( (mode != ThreadViewMode.Unanswered) && (mode != ThreadViewMode.Active) )  
            {
                announcements.DataSource = null;
                announcements.DataBind();
            }

            // Do we have posts to display?
            //
            if (threadSet.Threads.Count > 0) 
            {
                threads.DataSource = threadSet.Threads;
                threads.DataBind();
            } 
            else 
            {
                threads.DataSource = null;
                threads.DataBind();
            }

            // Do we have announcements or threads?
            //
            if ((threads.DataSource == null) && (announcements.DataSource == null)) 
            {
                noThreadsToDisplay.Visible = true;
            } 
            else 
            {
                noThreadsToDisplay.Visible = false;
            }


            pager.TotalRecords = currentPage.TotalRecords = threadSet.TotalRecords;
            currentPage.TotalPages = pager.CalculateTotalPages();
            currentPage.PageIndex = pager.PageIndex;

        }
        #endregion

        #region Public Properties
        /// <value>
        /// Controls the mode that the thread view control displays
        /// </value>
        public ThreadViewMode ThreadViewMode 
        {
            get 
            {
                return mode;
            }
            set 
            {
                mode = value;
            }
        }
        #endregion


        /// <summary>
        /// Added to handle Username displaying
        /// </summary>
        protected void Threads_ItemDataBound (Object Sender, RepeaterItemEventArgs e) {
            Thread thread = e.Item.DataItem as Thread;
            if (thread == null)
                return;
            
            bool isAnonymousPostingEnabled = thread.IsAnonymousPost && 
                CSContext.Current.SiteSettings.EnableUserPostingAsAnonymous &&
                thread.Forum.EnableAnonymousPostingForUsers;

            switch (e.Item.ItemType) {
                case  ListItemType.Item:
                case  ListItemType.AlternatingItem:
                    Label userName = e.Item.FindControl( "UsernameLink" ) as Label;
                    if (userName != null) {
                        userName.Text = Formatter.FormatUsername( thread.AuthorID, thread.Username, isAnonymousPostingEnabled, true ); 
                    }
                    break;
            }
        }

    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -