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

📄 threadview.cs

📁 community server 源码
💻 CS
📖 第 1 页 / 共 3 页
字号:
					if ((mode != ThreadViewMode.Default) && (mode != ThreadViewMode.PrivateMessages))
					{
						if (forumSettings != null)
							forumSettings.Visible = false;
					}
                }
            }
            else
            {
				if (newPostButton != null) 
					newPostButton.Visible = false;

				if (poll != null)
					poll.Visible = false;

				if (newPostButtonDown != null)
					newPostButtonDown.Visible = false;

				if (forumSettings != null)
					forumSettings.Visible = false;
            }
            #endregion

            #region Get a populated ThreadSet
            // Get a populated thread set
            //
            if ((forum != null) && (forum.SectionID > 0))
                forumID = forum.SectionID;
            else
                if (mode != ThreadViewMode.PrivateMessages)
                    forumID = forumFilterddl.SelectedForum;

            // Fix #1308: don't show private messages unless if asked
            // occurs when forumGroup or blank is selected
            if ((forumID == 0) && (mode != ThreadViewMode.PrivateMessages))
            {
                forumID = -1;						// show all
                forumFilterddl.SelectedIndex = 0;	// select all filter
            }

            if (dateFilterMode == ThreadDateFilterMode.LastVisit)
                dateFilterValue = csContext.User.GetUserCookie().LastVisit;
            else
                dateFilterValue = dateFilter.SelectedDate;

            ForumThreadQuery query = new ForumThreadQuery();
            query.ForumID = forumID;
            query.PageIndex = pager.PageIndex;
            query.PageSize = pager.PageSize;
            query.ThreadsNewerThan = dateFilterValue;
            query.SortBy = this.sortBy;
            query.Order = this.sortOrder;
            query.UserFilter = this.userFilter;
			query.PostMedia = this.postMedia;

            switch (mode) 
            {
                case ThreadViewMode.Active:
                    query.ActiveTopics = true;
                    query.UnReadOnly = this.hideReadPost;
                    threadSet = Threads.GetThreads(query);

                    pager.UrlPattern = this.BuildQuerystringFilter(ForumUrls.Instance().PostsActivePaged( forumID ), mode);
                    break;

                case ThreadViewMode.Unanswered:    
                    
                    query.UnReadOnly = this.hideReadPost;
                    query.UnAnsweredOnly = true;
                    threadSet = Threads.GetThreads(query);

                    pager.UrlPattern = this.BuildQuerystringFilter(ForumUrls.Instance().PostsUnansweredPaged( forumID ), mode);
                    break;

                case ThreadViewMode.NotRead:

                    query.UnReadOnly = true;
                    threadSet = Threads.GetThreads(query);

                    pager.UrlPattern = this.BuildQuerystringFilter(ForumUrls.Instance().PostsNotReadPaged( forumID ), mode);
                    break;
                
                case ThreadViewMode.MyForums:

                    query.UserFilter = ThreadUsersFilter.HideTopicsParticipatedIn;
                    query.UnReadOnly = this.hideReadPost;
                    threadSet = Threads.GetThreads(query);

                    pager.UrlPattern = this.BuildQuerystringFilter(SiteUrls.Instance().UserMyForums, mode);

                    break;
                
                case ThreadViewMode.PrivateMessages:
                    query.ForumID = 0;
                    query.UserFilter = ThreadUsersFilter.All;
                    threadSet = Threads.GetThreads(query);
                    pager.UrlPattern = this.BuildQuerystringFilter( SiteUrls.Instance().UserPrivateMessages, mode );
                    break;

				case ThreadViewMode.Videos:
					query.PostMedia = PostMediaType.Video;
					threadSet = Threads.GetThreads(query);
					break;

                default:
                    if (forumID > 0) 
                    {
                        query.UnReadOnly = this.hideReadPost;
                        threadSet = Threads.GetThreads(query);
                    }   
                    else
                        throw new CSException(CSExceptionType.SectionNotFound);

                    pager.UrlPattern = this.BuildQuerystringFilter( ForumUrls.Instance().Forum( forumID ), mode );

                    break;
            }

			// If we have sub forums display them
			if ((null != forum) && (forum.Sections.Count > 0)) 
			{
				subForumContainer.Visible = true;

				// Sort subforums by name
				forum.Sections.Sort(new SectionSorter(SectionSortBy.Name));

				subForums.DataSource = forum.Sections;
				subForums.DataBind();
			}

            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;
				
				if (moveThreads != null)
				{
					moveThreads.Visible = false;
				}
				
            } 
            else 
            {
                noThreadsToDisplay.Visible = false;
            }
            #endregion

            pager.TotalRecords = currentPage.TotalRecords = threadSet.TotalRecords;
            if (pager2 != null)
            {
                pager2.PageIndex = pager.PageIndex;
                pager2.UrlPattern = pager.UrlPattern;
                pager2.TotalRecords = pager.TotalRecords;
            }

            currentPage.TotalPages = pager.CalculateTotalPages();
            currentPage.PageIndex = pager.PageIndex;
            if (currentPage2 != null)
            {
                currentPage2.TotalRecords = currentPage.TotalRecords;
                currentPage2.TotalPages = currentPage.TotalPages;
                currentPage2.PageIndex = pager.PageIndex;
            }

			if ((aggregateRssLink != null) && (forumFilterddl.SelectedIndex == 0))
			{
				switch (mode)
				{
					case ThreadViewMode.Active:
					case ThreadViewMode.Unanswered:
					case ThreadViewMode.Videos:
						aggregateRssLink.Mode = mode;
						aggregateRssLink.Visible = true;
						break;
				}

				if (rssLink != null)
					rssLink.Visible = false;
			}

			if ((rssLink != null) && (forumFilterddl.SelectedIndex != 0))
			{
				csContext.SectionID = forumFilterddl.SelectedForum;

				rssLink.Mode = mode;
				rssLink.Visible = true;

				if (aggregateRssLink != null)
					aggregateRssLink.Visible = false;
			}
        }
		
        #endregion		

		[AjaxMethod(IncludeControlValuesWithCallBack=false)]
		public void UpdateForumName(string name)
		{
			if(csContext.User.IsForumAdministrator)
			{
				Forum f = Forums.GetForum(csContext.SectionID);
				if(f != null)
				{
					f.Name = name;
					Sections.UpdateSection(f);
				}
			}
		}

        [AjaxMethod(IncludeControlValuesWithCallBack=false)]
        public void UpdateForumDescription(string description) 
		{
			if(csContext.User.IsForumAdministrator)
			{
				Forum f = Forums.GetForum(csContext.SectionID);
				if(f != null) 
				{
					f.Description = description;
					Sections.UpdateSection(f);
				}
			}
        }


        #region Skin
                
        protected override void AttachChildControls() 
        {
            forumName = (InlineTextEdit) FindControl("ForumName");
            forumDescription = (InlineTextEdit) FindControl("ForumDescription");
            //threadDisplay = FindControl("ThreadDisplay");
            noThreadsToDisplay = FindControl("NoThreadsToDisplay");
            filterUsers = (FilterUsersDropDownList) FindControl("FilterUsers");
            threads = (Repeater) FindControl("Threads");
            announcements = (Repeater) FindControl("Announcements");
			subForumContainer = FindControl("SubForumContainer") as Control;
			subForums = FindControl("SubForumRepeater") as ForumRepeater;
            hideReadPosts = (HideReadPostsDropDownList) FindControl("HideReadPosts");
            threadSortddl = (ThreadSortDropDownList) FindControl("SortThreads");
            sortOrderddl = (SortOrderDropDownList) FindControl("SortOrder");
            forumFilterddl = (ForumDropDownList) FindControl("ForumDropDownList1");
            forumFilterText = (Label) FindControl("ForumFilterText");
            moveThreads = (LinkButton) FindControl("moveThreads");
            filterTopicRow = (HtmlTableRow) FindControl("FilterTopicRow");
            emailNotificationRow = (HtmlTableRow) FindControl("EmailNotificationRow");
            ddlTracking = (EmailNotificationDropDownList) FindControl("ForumTrackingDDL");                                    
            sortButton = (Button) FindControl("SortThreadsButton");
            rememberSettingsButton = (Button) FindControl("RememberSettingsButton");
            dateFilter = (DateFilter) FindControl("DateFilter");
            pager = (ForumPager) FindControl("Pager");
            pager2 = (ForumPager) FindControl("Pager2");
            currentPage = (CurrentPage) FindControl("CurrentPage");
            currentPage2 = (CurrentPage) FindControl("CurrentPage2");
            newPostButton = (ForumImageButton) FindControl("NewPostButton");
			poll = (ForumImageButton) FindControl("Poll");
			newPostButtonDown = (ForumImageButton) FindControl("NewPostButtonDown");
			forumSettings = (ForumImageButton) FindControl("ForumSettings");
            //postbackSourceControl = GetPostBackControl();
			aggregateRssLink = (AggregateRssLink) FindControl("aggregateRssLink");
			rssLink = (RssLink) FindControl("rssLink");

            InitializeChildControls();
        }

        private void InitializeChildControls() 
        {
            if (announcements != null)
                announcements.ItemDataBound += new RepeaterItemEventHandler( Threads_ItemDataBound );

            if (threads != null)
                threads.ItemDataBound += new RepeaterItemEventHandler( Threads_ItemDataBound );		

            // We don't need to move threads that are private messages, so the skin doesn't have the move button.
            //
            if (moveThreads != null && 
                mode != ThreadViewMode.PrivateMessages)
            {
                moveThreads.Click += new EventHandler( MoveThreads_OnClick );
            }

            if (sortButton != null) 
                sortButton.Click += new EventHandler( ThreadFilterSettings_Changed );

            if (rememberSettingsButton != null) 
                rememberSettingsButton.Click += new EventHandler( RememberThreadFilterSettings_Click );

            if (forumFilterddl != null)
            {
                switch (mode) 
                {
                    case ThreadViewMode.Active:
                    case ThreadViewMode.Unanswered:
                    case ThreadViewMode.NotRead:
					case ThreadViewMode.MyForums:
                        forumFilterddl.SelectedIndexChanged += new EventHandler( ForumFilter_Changed );
                        break;
                }
            }

			if (dateFilter != null)
			{
				if ((mode != ThreadViewMode.Default) && (mode != ThreadViewMode.PrivateMessages))
				{
					if ((FindControl("DateFilter2") as DateFilter) != null)
					{
						dateFilter = FindControl("DateFilter2") as DateFilter;
						dateFilter.Visible = true;
						dateFilter.DateChanged += new EventHandler( ForumFilter_Changed );
					}
				}
			}
        }
		        
        #endregion

        #region Properties

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

        #endregion

        #region Event Handlers

        #region ForumFilter_Changed
        /// <summary>
        /// Fired when thread's forum filter has changed.
        /// </summary>
        public void ForumFilter_Changed (Object sender, EventArgs e) 
        {
            // Set pager to 1st page
            pager.PageIndex = 0;

			if (dateFilter != null)
				dateFilterMode = dateFilter.SelectedValue;

            DataBind();
        }
        #endregion

        #region ThreadFilterSettings_Changed
        /// <summary>
        /// Fired when current thread's filter settigs should be changed 
        /// and applied.
        /// </summary>
        public void ThreadFilterSettings_Changed(Object sender, EventArgs e) 
        {
            // Set pager to 1st page
            //
            pager.PageIndex = 0;

            // If user have chosen Apply then we shall use local filter.
            // This applies only to authenticated users.
            //
            authUseLocalFilter = true;

            // Update filtering field values
            //
            this.SetFilteringFieldValues();
            
            DataBind();
        }
        #endregion

        #region RememberThreadFilterSettings_Click
        /// <summary>
        /// Fired when current thread's filter settigs should be remembered 
        /// in current user's cookie and applied.
        /// </summary>

⌨️ 快捷键说明

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