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

📄 forumimagebutton.cs

📁 本系统是在asp版《在线文件管理器》的基础上设计制作
💻 CS
字号:
//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
//     Copyright (c) Telligent Systems Corporation.  All rights reserved.
// </copyright> 
//------------------------------------------------------------------------------

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using CommunityServer.Components;
using CommunityServer.Discussions.Components;

namespace CommunityServer.Discussions.Controls 
{

    public class ForumImageButton : WebControl 
    {
		CSContext csContext = CSContext.Current;
		User user;


        public ForumImageButton() 
        {
			user = csContext.User;
        }

        public ForumImageButton(CSButtonType buttonType)
        {
            this.ButtonType = buttonType;
        }

        protected override void Render(HtmlTextWriter writer) 
        {

            Section section = null;

            // Are we looking up the section by section id or post id
            //

            if (csContext.ForumID > 0)
                section = Forums.GetForum(csContext.ForumID);
            else if (csContext.PostID > 0)
                section = Forums.GetForumByPostID(csContext.PostID);
            else
                return;

            if(section == null)
                return;

            ForumPermission forumPermission = section.ResolvePermission( CSContext.Current.User ) as ForumPermission;

			
            bool rolloverImage = false;
            string imagePath = string.Empty;
            string imagePathDown = string.Empty;
            string imagePathOver = string.Empty;
            string target = string.Empty;
            string alt = string.Empty;
            string text = string.Empty;

            // What type of button are we displaying?
            //
            switch (ButtonType) 
            {

                    // New Thread
                case CSButtonType.NewPost:

                    if( !forumPermission.Post )
                        return;

					// private forum?
					if ( section.SectionID == 0)
						return;

					NavigateUrl = Globals.GetSiteUrls().PostCreate(section.SectionID);
                    imagePath = Globals.GetSkinPath() + "/images/newtopic.gif";
                    imagePathDown = Globals.GetSkinPath() + "/images/newtopic.gif";
                    imagePathOver = Globals.GetSkinPath() + "/images/newtopic_Over.gif";
                    rolloverImage = true;
                    text = "Post";
                    break;

                case CSButtonType.Print:

					this.NavigateUrl = Globals.GetSiteUrls().PrintPost(csContext.PostID);
                    imagePath = Globals.GetSkinPath() + "/images/print.gif";
                    imagePathDown = Globals.GetSkinPath() + "/images/print.gif";
                    imagePathOver = Globals.GetSkinPath() + "/images/print_Over.gif";
                    rolloverImage = true;
                    text = "Print";

                    break;

                case CSButtonType.RateTopic:

                    imagePath = Globals.GetSkinPath() + "/images/ratetopic.gif";
                    imagePathDown = Globals.GetSkinPath() + "/images/ratetopic.gif";
                    imagePathOver = Globals.GetSkinPath() + "/images/ratetopic_Over.gif";
                    rolloverImage = true;
                    text = "Rate";

                    break;

                case CSButtonType.PreviousTopic:

                    imagePath = Globals.GetSkinPath() + "/images/previous.gif";
                    imagePathDown = Globals.GetSkinPath() + "/images/previous_Down.gif";
                    imagePathOver = Globals.GetSkinPath() + "/images/previous_Over.gif";
                    alt = ResourceManager.GetString("PostFlatView_PreviousThread");
                    rolloverImage = true;
                    text = "Previous";
                    break;

                case CSButtonType.Poll:

                    if( !forumPermission.CreatePoll )
                        return;

					// private forum?
					if ( section.SectionID == 0)
						return;

					this.NavigateUrl = Globals.GetSiteUrls().PollCreate(section.SectionID); 

                    imagePath = Globals.GetSkinPath() + "/images/poll.gif";
                    imagePathDown = Globals.GetSkinPath() + "/images/poll.gif";
                    imagePathOver = Globals.GetSkinPath() + "/images/poll_Over.gif";
                    //alt = ResourceManager.GetString("PostFlatView_PreviousThread");
                    rolloverImage = true;
                    text = "Poll";
                    break;

                case CSButtonType.NextTopic:

                    imagePath = Globals.GetSkinPath() + "/images/next.gif";
                    imagePathDown = Globals.GetSkinPath() + "/images/next.gif";
                    imagePathOver = Globals.GetSkinPath() + "/images/next_Over.gif";
                    alt = ResourceManager.GetString("PostFlatView_NextThread");
                    rolloverImage = true;
                    text = "Next";
                    break;

                case CSButtonType.Search:

                    imagePath = Globals.GetSkinPath() + "/images/search.gif";
                    imagePathDown = Globals.GetSkinPath() + "/images/search.gif";
                    imagePathOver = Globals.GetSkinPath() + "/images/search_Over.gif";
                    rolloverImage = true;
                    text = "Search";
                    break;

                case CSButtonType.ForumSettings:

                    imagePath = Globals.GetSkinPath() + "/images/forumoptions.gif";
                    imagePathDown = Globals.GetSkinPath() + "/images/forumoptions.gif";
                    imagePathOver = Globals.GetSkinPath() + "/images/forumoptions_Over.gif";
                    rolloverImage = true;
                    text = "Options";

                    break;

                    // Reply
                case CSButtonType.Reply:

                    // If this is a locked post we display the special locked icon
                    //
                    if (this.Post.IsLocked) 
                    {
                        writer.AddAttribute(HtmlTextWriterAttribute.Src, Globals.GetSkinPath() + "/images/post_button_locked.gif");
                        writer.RenderBeginTag(HtmlTextWriterTag.Img);

                        writer.RenderEndTag();

                        return;
                    }

					if( !forumPermission.Reply)
						return;

				    NavigateUrl = Globals.GetSiteUrls().PostReply(this.Post.PostID);
                    imagePath = Globals.GetSkinPath() + "/images/newpost.gif";
                    imagePathDown = Globals.GetSkinPath() + "/images/newpost.gif";
                    imagePathOver = Globals.GetSkinPath() + "/images/newpost_over.gif";
                    rolloverImage = true;
                    text = "Reply";
                    break;
                    
                    // Quote
                case CSButtonType.Quote:

                    if (this.Post.IsLocked)
                        return;

					if (Post.PostType == PostType.Poll)
						return;

                    if( !forumPermission.Reply )
                        return;

					NavigateUrl =Globals.GetSiteUrls().PostReply(this.Post.PostID, true);

					imagePath = Globals.GetSkinPath() + "/images/quote.gif";
                    imagePathDown = Globals.GetSkinPath() + "/images/quote.gif";
                    imagePathOver = Globals.GetSkinPath() + "/images/quote_Over.gif";
                    rolloverImage = true;
                    text = "Quote";
                    break;
					
                    // Delete
                case CSButtonType.Delete:

                    if (!forumPermission.Delete )
                        return;

					if ((user.UserID != Post.User.UserID) || (Post.IsLocked))
						return;

                    if(Post.PostLevel == 1)
                        NavigateUrl = Globals.GetSiteUrls().PostDelete(this.Post.PostID, HttpUtility.UrlEncode(ForumUrls.Instance().Forum(this.Post.SectionID)));
                    else
                        NavigateUrl = Globals.GetSiteUrls().PostDelete(this.Post.PostID, HttpUtility.UrlEncode(Globals.GetSiteUrls().Post(this.Post.ParentID) + "#" + this.Post.PostID.ToString()));

                    imagePath = Globals.GetSkinPath() + "/images/post_button_delete.gif";
                    imagePathDown = Globals.GetSkinPath() + "/images/post_button_delete.gif";
                    imagePathOver = Globals.GetSkinPath() + "/images/post_button_delete_Over.gif";
                    text = "Delete";
                    rolloverImage = true;
                    break;

                    // Edit
                case CSButtonType.Edit:

                    if(!forumPermission.Edit)
                        return;

					if ((user.UserID != Post.User.UserID) || (Post.IsLocked))
						return;

					if( this.Post.PostType == PostType.Poll )
						return;

					NavigateUrl = Globals.GetSiteUrls().PostEdit(this.Post.PostID, HttpUtility.UrlEncode(HttpContext.Current.Request.Url.PathAndQuery));
                    imagePath = Globals.GetSkinPath() + "/images/post_button_edit.gif";
                    imagePathDown = Globals.GetSkinPath() + "/images/post_button_edit.gif";
                    imagePathOver = Globals.GetSkinPath() + "/images/post_button_edit_Over.gif";
                    rolloverImage = true;
                    text = "Edit";
                    break;

            }

            // Write the start button
            //
            writer.AddAttribute(HtmlTextWriterAttribute.Src, Globals.GetSkinPath() + "/images/icon_toolbar_left.gif");
            writer.RenderBeginTag(HtmlTextWriterTag.Img);
            writer.RenderEndTag();

            switch (ButtonType) 
            {
                case CSButtonType.Search:
                    writer.AddAttribute("onMouseDown", "ToggleSearchMenu()");
                    writer.RenderBeginTag(HtmlTextWriterTag.A);
                    break;
				
                case CSButtonType.RateTopic:
                    writer.AddAttribute("onMouseDown", "ToggleRateMenu()");
                    writer.RenderBeginTag(HtmlTextWriterTag.A);
                    break;

                case CSButtonType.ForumSettings:
                    writer.AddAttribute("onMouseDown", "ToggleMenuOnOff('ForumSettings')");
                    writer.RenderBeginTag(HtmlTextWriterTag.A);
                    break;

                default:
                    writer.AddAttribute(HtmlTextWriterAttribute.Href, NavigateUrl);
                    writer.RenderBeginTag(HtmlTextWriterTag.A);
                    break;
            }

            if (rolloverImage) 
            {
                writer.AddAttribute("onMouseOver", "src='" + imagePathOver + "'");
                writer.AddAttribute("onMouseOut", "src='" + imagePath + "'");
                writer.AddAttribute("onMouseDown", "src='" + imagePathDown + "'");
            }

            writer.AddAttribute(HtmlTextWriterAttribute.Src, imagePath);
            if ( alt.Length > 0 ) 
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Alt, alt);
            } 
            else if ( text.Length > 0 ) 
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Alt, text);
            }
            writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
            writer.RenderBeginTag(HtmlTextWriterTag.Img);


            //			if (text != string.Empty) {
            //				writer.AddAttribute(HtmlTextWriterAttribute.Class, "imageButtonToolbar");
            //				writer.RenderBeginTag(HtmlTextWriterTag.Span);
            //				writer.Write("&nbsp;" + text + "&nbsp;");
            //				writer.RenderEndTag();
            //			}

            writer.RenderEndTag();
            writer.RenderEndTag();

            // Write the end button
            //
            writer.AddAttribute(HtmlTextWriterAttribute.Src, Globals.GetSkinPath() + "/images/icon_toolbar_right.gif");
            writer.RenderBeginTag(HtmlTextWriterTag.Img);
            writer.RenderEndTag();

        }

		
        #region Properties

        [
        System.ComponentModel.DefaultValue( CSButtonType.NewPost ),
        ]
        public virtual CSButtonType ButtonType 
        {
            get 
            {
                Object state = ViewState["ButtonType"];
                if ( state != null ) 
                {
                    return (CSButtonType)state;
                }
                return CSButtonType.NewPost;
            }
            set 
            {
                ViewState["ButtonType"] = value;
            }
        }

        public Post Post 
        {
            get 
            {
                if ( _post == null ) 
                {

                    Object state = ViewState["Post"];
                    if ( state != null ) 
                    {
                        Int32 postID = (Int32)state;
                        _post = Posts.GetPost( postID, CSContext.Current.User.UserID, false );
                    }
                }
                return _post;
            }
            set 
            {
                _post = value;
                if ( _post != null ) 
                {
                    ViewState[ "Post" ] = _post.PostID;
                } 
                else 
                {
                    ViewState.Remove( "Post" );
                }
            }
        }
        
        Post _post;

        

        [
        System.ComponentModel.DefaultValue( false ),
        ]
        public virtual Boolean OpenInNewWindow 
        {
            get 
            {
                Object state = ViewState["OpenInNewWindow"];
                if ( state != null ) 
                {
                    return (Boolean)state;
                }
                return false;
            }
            set 
            {
                ViewState["OpenInNewWindow"] = value;
            }
        }


        [
        System.ComponentModel.DefaultValue( "" ),
        ]
        public virtual String NavigateUrl 
        {
            get 
            {
                Object state = ViewState["NavigateUrl"];
                if ( state != null ) 
                {
                    return (String)state;
                }
                return "";
            }
            set 
            {
                ViewState["NavigateUrl"] = value;
            }
        }

        #endregion

    }

    public enum CSButtonType 
    {
        PostMessage,
        PreviewMessage,
        SaveMessage,
        NewPost,
        Reply,
        Quote,
        Delete,
        Edit,
        Print,
        Search,
        RateTopic,
        PreviousTopic,
        NextTopic,
        ForumSettings,
        Poll,
		AllowReply
    }
}

⌨️ 快捷键说明

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