📄 roleicons.cs
字号:
//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
// Copyright (c) Telligent Systems Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
using System;
using System.Collections;
using System.IO;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using CommunityServer.Components;
namespace CommunityServer.Controls
{
public class RoleIcons : PlaceHolder
{
bool isCloakedUser = false;
#region Render functions
protected override void Render(HtmlTextWriter writer)
{
// if the user is anonymous or we don't have a roleID, return
if((RoleID == null) && (User.IsAnonymous) || IsCloakedUser)
return;
string imagePath = Globals.GetSkinPath() +"/images/roleicons/";
ArrayList roles;
LiteralControl literal = new LiteralControl("<br>");
HtmlAnchor anchor;
Image image;
// if we have an id we can skip some work
if(RoleID != null)
{
roles = new ArrayList();
roles.Add( Roles.GetRole( new Guid(RoleID) ) );
}
else
{
roles = Roles.GetRoles(this.User.UserID, true);
}
// Loop though the user's roles and render the controls
foreach(Role role in roles)
{
string vpath = string.Format( "{0}{1}.gif", imagePath, role.RoleID.ToString().Replace(" ", "_") );
string pathToImage = Context.Server.MapPath(vpath);
if(FileExists( pathToImage ))
{
writer.Write( Formatter.Whitespace(2, 0, false, true) );
image = new Image();
anchor = new HtmlAnchor();
image.AlternateText = role.Name;
image.ImageUrl = vpath;
literal.RenderControl(writer);
anchor.Controls.Add(image);
anchor.HRef = Globals.GetSiteUrls().UserRoles( role.RoleID.ToString() );
anchor.RenderControl(writer);
}
}
}
#endregion
#region Private methods
private bool FileExists (string filename)
{
string cacheKey = "fileExistsLookupTable";
Hashtable fileLookup = CSCache.Get(cacheKey) as Hashtable;
if (fileLookup == null)
{
fileLookup = new Hashtable();
CSCache.Insert(cacheKey, fileLookup, CSCache.HourFactor);
}
if(!fileLookup.ContainsKey(filename))
fileLookup.Add(filename, File.Exists(filename));
return (bool) fileLookup[filename];
}
#endregion
#region Public properties
string roleID = null;
public string RoleID
{
get { return roleID; }
set { roleID = value; }
}
public User User
{
get
{
if ( _user == null )
{
Object state = ViewState[ "UserID" ];
if ( state != null )
{
Int32 userID = (Int32)state;
_user = Users.GetUser( userID, false );
}
}
return _user;
}
set
{
_user = value;
if ( _user != null )
{
ViewState[ "UserID" ] = _user.UserID;
}
else
{
ViewState.Remove( "UserID" );
}
}
}
User _user;
/// <summary>
/// Added to specify if this user should be displayed as anonymous
/// </summary>
public bool IsCloakedUser {
get { return isCloakedUser; }
set { isCloakedUser = value; }
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -