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

📄 roleicons.cs

📁 本系统是在asp版《在线文件管理器》的基础上设计制作
💻 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 + -