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

📄 siteurls.cs

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

using System;
using System.Collections;
using System.Collections.Specialized;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Caching;
using System.Xml;
using CommunityServer.Configuration;

namespace CommunityServer.Components {

	public class SiteUrls 
	{

		public static readonly string SiteUrlsProviderName = "SiteUrlsProvider";

        #region Initializer

        /// <summary>
        /// Returns a intance of SiteUrls. We first check the cache and if not found
        /// we parse the SiteUrls.config file and build it.
        /// </summary>
        /// <returns></returns>
		public static SiteUrls Instance()
		{
			const string cacheKey = "SiteUrls";

			SiteUrls siteUrls = CSCache.Get(cacheKey) as SiteUrls;
            
			if(siteUrls == null)
			{
				try
				{
					HttpContext Context = HttpContext.Current;
					CSConfiguration config = CSConfiguration.GetConfig();
                    
					Provider siteUrlProvider = config.Providers["SiteUrlsDataProvider"] as Provider;

					if(siteUrlProvider == null)
					{
						if(Context != null)
						{
							Context.Response.Write("<h1>SiteUrl Provider was NOT found!</h1>");
							Context.Response.Write("A provider named SiteUrlsDataProvider with the type or derived type of CommunityServer.Components.SiteUrlsData, CommunityServer.Components must be added to the provider list");
							Context.Response.End();
						}
						else
						{
							throw new CSException(CSExceptionType.SiteUrlDataProvider,"Could not load SiteUrlsProvider");
						}
					}

					string siteUrlsXmlFile = config.FilesPath +  siteUrlProvider.Attributes["path"];
					string file = CSContext.Current.PhysicalPath(siteUrlProvider.Attributes["path"]); // CSContext.Current.MapPath(Globals.ApplicationPath + siteUrlsXmlFile);
					Type type = Type.GetType(siteUrlProvider.Type);
					SiteUrlsData data = Activator.CreateInstance(type,new object[]{file}) as SiteUrlsData;

					// Create the instance for the provider, or fall back on the builtin one
					//
					Provider urlProvider = (Provider) CSConfiguration.GetConfig().Providers[SiteUrlsProviderName];
					if(urlProvider != null)
						siteUrls = ApplicationUrls.CreateInstance(urlProvider, data) as SiteUrls;
					else
						siteUrls = new SiteUrls(data);

					CacheDependency dep = new CacheDependency(file);
					CSCache.Max(cacheKey, siteUrls, dep);
				}
				catch(Exception ex)
				{
					

					if (ex.InnerException != null && ex.InnerException is CSException) 
					{
						throw ex.InnerException;
					}

					string message = "<p>" +  ex.Message + "</p>";

					Exception inner = ex.InnerException;

					while(inner != null)
					{
						message = string.Format("{0}<p>{1}</p>", message, inner.Message);
						inner = inner.InnerException;

					}

					CSException csex =  new CSException(CSExceptionType.SiteUrlDataProvider,message,ex);
					CatastrophicMessage.Write(HttpContext.Current,csex,"[SiteUrlData]","SiteUrlData.htm");
				}
			}
 
			return siteUrls;
		}

		#endregion

		#region Force Refresh

		public static void ForceRefresh()
		{
			const string cacheKey = "SiteUrls";
			CSCache.Remove(cacheKey);
		}

		#endregion

		#region Member variables & constructor

		//CSContext forumContext = CSContext.Current;
		bool enableWaitPage = false;
        private SiteUrlsData urlData = null;

		// Constructor loads all the site urls from the SiteUrls.config file
		// or returns from the cache
		//
        // Updated 8/17/2004 by ScottW >> Moved Initializate to Static instance method
        // This should enable us to cache on instance of SiteUrls and not 3 unique collections
        public SiteUrls(SiteUrlsData data) 
        {
            urlData = data;
        }

        public virtual string RawPath(string rawpath)
        {
            return urlData.FormatUrl(rawpath);
        }

		#endregion

		#region Who is online
		// Who is online
		//
		public virtual string WhoIsOnline 
		{
			get { return urlData.FormatUrl("whoIsOnline"); }
		}
		#endregion

		#region Moderation
		// Moderation
		//
		public virtual string Moderate 
		{
			get { return urlData.FormatUrl("moderate"); }
		}

		public virtual string ModerationHome 
		{
			get { return urlData.FormatUrl("moderate_home"); }
		}

		public virtual string ModerateViewPost (int postID) 
		{
			return urlData.FormatUrl("moderate_ViewPost", postID.ToString() );
		}

		public virtual string ModeratePostDelete (int postID, string returnUrl) 
		{
			return urlData.FormatUrl("moderate_Post_Delete", postID.ToString(), returnUrl );
		}

		public virtual string ModeratePostEdit (int postID, string returnUrl) 
		{
			return urlData.FormatUrl("moderate_Post_Edit", postID.ToString(), returnUrl );
		}

		public virtual string ModerateViewUserProfile (int userID) 
		{
			return urlData.FormatUrl("moderate_ViewUserProfile", userID.ToString() );
		}

		public virtual string ModeratePostMove (int postID, string returnUrl) 
		{
			return urlData.FormatUrl("moderate_Post_Move", postID.ToString(), returnUrl );
		}

		public virtual string ModerateThreadSplit (int postID, string returnUrl) 
		{
			return urlData.FormatUrl("moderate_Thread_Split", postID.ToString(), returnUrl );
		}

		public virtual string ModerateThreadJoin (int postID, string returnUrl) 
		{
			return urlData.FormatUrl("moderate_Thread_Join", postID.ToString(), returnUrl );
		}

        public virtual string ModerationHistory (int postID) {
            return ModerationHistory( postID, null );
        }

		public virtual string ModerationHistory (int postID, string returnUrl) {
			string outString = ""; 

            if (Globals.IsNullorEmpty( returnUrl )) { 
                outString = urlData.FormatUrl("moderation_History", postID.ToString(), "");
                outString = outString.Replace( "&ReturnUrl=", "" );
            } 
            else { 
                outString = urlData.FormatUrl("moderation_History", postID.ToString(), returnUrl);
            }

            return outString;
		}

		public virtual string ModerateForum (int forumID) 
		{
			return urlData.FormatUrl("moderate_Forum", forumID.ToString()) ;
		}

        public virtual string UserModerationHistory (int userID) {
            return UserModerationHistory( userID, -1 ) ;
        }

        public virtual string UserModerationHistory (int userID, int action) {
            string outString = urlData.FormatUrl( "admin_User_ModerationHistory", userID.ToString(), action.ToString() );
            
            if (action <= 0) {                
                outString = outString.Replace( "&Action=" + action.ToString(), "" );
            } 

            return outString;
        }
		#endregion

		#region Admin
		// Admin
		//
		public virtual string Admin 
		{
			get { return urlData.FormatUrl("admin"); }
		}

		public virtual string AdminConfiguration 
		{
			get{ return urlData.FormatUrl("admin_Configuration"); }
		}
		public virtual string AdminManageForums 
		{
			get{ return urlData.FormatUrl("admin_Forums");}
		}
		public virtual string AdminUserEdit ( int userID ) 
		{
			return urlData.FormatUrl("admin_User_Edit", userID.ToString()) ;
		}

		public virtual string AdminForumGroup( int forumID ) 
		{
			return urlData.FormatUrl("admin_ForumGroup", forumID.ToString() );
		}

		public virtual string AdminForumEdit ( int forumID ) 
		{
			return urlData.FormatUrl("admin_Forum_Edit", forumID.ToString() );
		}

		public virtual string AdminForumPermissions 
		{
			get{ return urlData.FormatUrl("admin_Forum_Permissions"); }
		}
		
        public virtual string AdminDefaultForumPermissions 
        {
            get{ return urlData.FormatUrl("admin_Forum_Default_Permissions"); }
        }

		
		public virtual string AdminForumModeratorsEdit( int forumId, int groupId ) 
		{
			return urlData.FormatUrl("admin_Forum_Moderators_Edit", forumId, groupId );
		}
        
		
		public virtual string AdminForumPermissionEdit( int forumId, Guid roleId ) 
		{
            if(forumId == -1)
                return urlData.FormatUrl("admin_Forum_Default_Permissions_Edit",roleId);
            else
			return urlData.FormatUrl("admin_Forum_Permissions_Edit", forumId, roleId );
		}

		public virtual string AdminDefaultPermissions {
			get{ return urlData.FormatUrl("admin_Default_Permissions"); }
		}

		public virtual string AdminDefaultPermissionsEdit {
			get{ return urlData.FormatUrl("admin_Default_Permissions_Edit"); }
		}

		public virtual string AdminHome 
		{
			get { return urlData.FormatUrl("admin_Home"); }
		}

		public virtual string AdminManageUsers 
		{
			get { return urlData.FormatUrl("admin_User_List"); }
		}

		public virtual string AdminManageUsersFilter(UserAccountStatus statusFilter)
		{
			return urlData.FormatUrl("admin_User_List_Filter", (int)statusFilter);
		}

		public virtual string AdminManageRoles 
		{
			get { return urlData.FormatUrl("admin_Roles"); }
		}

		public virtual string AdminUserRoles (int userID) 
		{
			return urlData.FormatUrl("admin_User_UserRolesAdmin", userID.ToString()) ;
		}

		public virtual string AdminUserPasswordChange (int userID) 
		{
			return urlData.FormatUrl("admin_User_ChangePassword", userID.ToString()) ;
		}

		public virtual string AdminUserPasswordAnswerChange (int userID) 
		{
			return urlData.FormatUrl("admin_User_ChangePasswordAnswer", userID.ToString()) ;
		}

		public virtual string AdminUserConfiguration 
		{
			get { return urlData.FormatUrl("admin_User_Configuration"); }
		}

		public virtual string AdminManageRanks 
		{
			get{ return urlData.FormatUrl("admin_Ranks"); }
		}

		public virtual string AdminManageNames 
		{
			get{ return urlData.FormatUrl("admin_Names"); }
		}

		public virtual string AdminManageCensorships 
		{
			get{ return urlData.FormatUrl("admin_Censorships");}
		}

		public virtual string AdminManageSmilies 
		{
			get{ return urlData.FormatUrl("admin_Smilies"); }
		}

		public virtual string AdminMassEmail 
		{
			get{ return urlData.FormatUrl("admin_MassEmail"); }
		}

		public virtual string AdminRoleEdit( Guid roleID ) 
		{
			return urlData.FormatUrl("admin_Role_Edit", roleID.ToString() );
		}

		public virtual string AdminReportsBuiltIn 
		{
			get { return urlData.FormatUrl("admin_Reports_BuiltIn"); }
		}
		#endregion

		#region KnowledgeBase
		public virtual string KbArticle (int articleID) 
        {
			return KbArticle(articleID, CSContext.Current.SiteSettings.EnableSearchFriendlyURLs);
		}

		public virtual string KbArticle (int articleID, bool searchFriendly) {
			return urlData.FormatUrl("kbArticle", articleID.ToString());
		}

		#endregion

		#region Posts

		// Post related properties
		//
		/// <summary>
		/// If possible use Post (int postID, int forumID)
		/// </summary>
		public virtual string Post (int postID) 
		{
			return Post(postID, CSContext.Current.SiteSettings.EnableSearchFriendlyURLs);
		}

		public virtual string Post (int postID, bool searchFriendly) 
		{
			if (searchFriendly)
				return urlData.FormatUrl("searchFriendlyPost", postID.ToString());
			else
				return urlData.FormatUrl("post", postID.ToString());
		}

		public virtual string PrintPost (int postID) 
		{
			return urlData.FormatUrl("post_Print", postID.ToString());
		}

		public virtual string PostRating (int postID) 
		{
			return urlData.FormatUrl("post_Rating", postID.ToString());
		}

		public virtual string PostCloseWindow (string url) {
			return urlData.FormatUrl("post_CloseWindow",  url);
		}
		
		public virtual string PostInPage (int postID, int postInPageID) 
		{
			return urlData.FormatUrl("post_InPage", postID.ToString(), postInPageID.ToString());
		}

		public virtual string PostAttachment (int postID) 
		{
			return urlData.FormatUrl("post_Attachment", postID.ToString());
		}

		public virtual string PostPaged (int postID, int page) 
		{
			return urlData.FormatUrl("post_Paged", page.ToString(), postID.ToString(), postID.ToString());
		}

		public virtual string PostPagedFormat (int postID) 
		{
			return urlData.FormatUrl("post_Paged", "{0}", postID.ToString(), postID.ToString());
		}

		public virtual string PostCreate (int forumID) 
		{
			return urlData.FormatUrl("post_Create", forumID.ToString());
		}

		public virtual string PostReply (int postID) 
		{
			return urlData.FormatUrl("post_Reply",  postID.ToString());
		}

		public virtual string PostReply (int postID, bool isQuote) 
		{
			return urlData.FormatUrl("post_Quote", postID.ToString(), isQuote.ToString());
		}

		public virtual string PostEdit (int postID, string returnUrl) 
		{
			return urlData.FormatUrl("post_Edit", postID.ToString(), returnUrl);
		}

		public virtual string PostDelete (int postID, string returnUrl) 
		{
			return urlData.FormatUrl("post_Delete", postID.ToString(), returnUrl);
		}

		public virtual string PostsUnanswered 
		{
			get { return urlData.FormatUrl("post_Unanswered"); }
		}

		public virtual string PostsActive 
		{
			get { return urlData.FormatUrl("post_Active"); }
		}

        public virtual string PostsNotRead {
            get { return urlData.FormatUrl("post_NotRead"); }
        }
		#endregion

		#region Help
		public virtual string HelpThreadIcons 
		{
			get { return urlData.FormatUrl("help_ThreadIcons", Globals.Language); }
		}
		#endregion

		#region User
		// User related properties
		//
		public virtual string UserBanned
		{
			get { return urlData.FormatUrl("user_Banned"); }
		}

		public virtual string UserProfile (string username) {
			return urlData.FormatUrl("user_ByName", username);
		}

		public virtual string UserProfile (int userID) 
		{
			return UserProfile (userID, CSContext.Current.SiteSettings.EnableSearchFriendlyURLs);
		}

		public virtual string UserProfile (int userID, bool searchFriendly) 
		{
			if (searchFriendly)
				return urlData.FormatUrl("searchFriendlyUser", userID.ToString());
			else
				return urlData.FormatUrl("user", userID.ToString());
		}

		public virtual string UserEditProfile 
		{
			get 
			{ 
				string currentPath = CSContext.Current.Context.Request.Url.PathAndQuery;
				string returnUrl = null;

				if (ExtractQueryParams(currentPath)["ReturnUrl"] != null)
					returnUrl = ExtractQueryParams(currentPath)["ReturnUrl"];

				if ((returnUrl == null) || (returnUrl == string.Empty))
					return urlData.FormatUrl("user_EditProfile", currentPath);
				else
					return urlData.FormatUrl("user_EditProfile", returnUrl);
			}
                
		}

		public virtual string CleanUserEditProfile
		{
			get { return urlData.FormatUrl("user_EditProfile_Clean");}
		}

		public virtual string UserMyForums 
		{
			get { return urlData.FormatUrl("user_MyForums"); }
		}

		public virtual string UserChangePassword 
		{
			get { return urlData.FormatUrl("user_ChangePassword"); }
		}

⌨️ 快捷键说明

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