📄 forumimagebutton.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(" " + text + " ");
// 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 + -