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

📄 htmleditor.cs

📁 一个超强的在线WORD汉化版ASP程序5...
💻 CS
字号:
using System;
using System.Collections;
using System.Web;
using System.IO;
using Lion.Data.Library.HtmlEditor;
namespace Lion.Data.Library.HtmlEditor.Core
{
	/// <summary>
	/// HtmlEditor 的摘要说明。
	/// </summary>
	internal class HtmlEditor:IHttpHandler
	{
		private string sStyleName, sStyleDir, sStyleCSS, sStyleUploadDir, nStateFlag, sDetectFromWord, sInitMode, sBaseUrl, sBaseHref, sAutoRemote, sShowBorder ,sButtonImgPath;
		private string sVersion,sReleaseDate,sLicense;
		private string sContentID,sFullScreen,originalfilename,savepathfilename,savefilename;
		private string Argument;
		private Hashtable aButton;

		#region IHttpHandler interface

		

		/// <summary>
		/// 通过实现 IHttpHandler 接口的自定义 HttpHandler 启用 HTTP Web 请求的处理。
		/// </summary>
		/// <param name="context">HttpContext 对象,它提供对用于为 HTTP 请求提供服务的内部服务器对象(如 Request、Response、Session 和 Server)的引用</param>
		public void ProcessRequest(HttpContext context)
		{				
			Argument = context.Request.QueryString["configfile"];
			string filename = context.Request.FilePath;
			filename = filename.Substring(filename.LastIndexOf("/")+1).ToUpper();
			bool flag = false;
			if(filename=="HTMLEDITOR.ASPX")
				initSystem();
			else if(filename=="HTMLHANDLER.ASPX")
				HtmlHandler.HtmlDialogContent(context);
			else if(filename=="IMAGEHANDLER.ASPX")
				ImageHandler.ImageContent(context);
			else if(filename=="SCRIPTHANDLER.ASPX")
				ScriptHandler.ScriptContent(context);
			else if(filename=="UPLOAD.ASPX")
			{
				UpLoadHandler upload = new UpLoadHandler();
				upload.initSystem(context);
			}
			else
				flag = true;

			if(flag)
				throw(new HttpException(500,"unknown request"));			
		}

		/// <summary>
		/// 获取一个值,该值指示其他请求是否可以使用 IHttpHandler 实例。
		/// </summary>
		public bool IsReusable
		{
			get { return true; }
		}

		#endregion

		#region Function Custom
		
		/// <summary>
		/// 初始化系统信息
		/// </summary>
		internal void initSystem()
		{

			HttpContext context = Helper.Context;
			InitPara();	
			InitButtonArray();
			System.Text.StringBuilder Sb = Helper.GetHtml("/Htmleditor.txt");
			Sb.Replace("{sContentID}",sContentID);
			Sb.Replace("{sStyleName}",sStyleName);
			Sb.Replace("{originalfilename}",originalfilename);
			Sb.Replace("{savepathfilename}",savepathfilename);
			Sb.Replace("{savefilename}",savefilename);
			Sb.Replace("{configfile}",Argument);			
			Sb.Replace("{sVersion}",sVersion);
			Sb.Replace("{sReleaseDate}",sReleaseDate);
			Sb.Replace("{sLicense}",sLicense);
			Sb.Replace("{sStyleName}",sStyleName);
			Sb.Replace("{sStyleCSS}",sStyleCSS);
			Sb.Replace("{sStyleDir}",sStyleDir);
			Sb.Replace("{sStyleUploadDir}",sStyleUploadDir);
			Sb.Replace("{sInitMode}",sInitMode);
			Sb.Replace("{sDetectFromWord}",sDetectFromWord);
			Sb.Replace("{sBaseUrl}",sBaseUrl);
			Sb.Replace("{sBaseHref}",sBaseHref);
			Sb.Replace("{sToolBar}",GetToolBar().ToString());
			Sb.Replace("{sAutoRemote}",sAutoRemote);
			Sb.Replace("{sShowBorder}",sShowBorder);
			Sb.Replace("{sButtonImgPath}",sButtonImgPath);
			
			context.Response.ContentType = "text/html";
			context.Response.Output.Write(Sb.ToString());
			Sb.Remove(0,Sb.Length);
		}

		/// <summary>
		/// 初始化输入参数
		/// </summary>
		private void InitPara()
		{
			HttpContext context = Helper.Context;
			//取全屏标志
			sFullScreen = ((context.Request.QueryString["fullscreen"]!=null)?context.Request.QueryString["fullscreen"]:"0");
			//取对应的内容ID
			if(context.Request.QueryString["ID"]!=null)
			{
				sContentID = context.Request.QueryString["ID"];
			}
			else
			{
				context.Response.Clear();
				context.Response.Output.WriteLine("请传入调用参数ID,即隐藏的内容表单项ID!");
				context.Response.End();
				return;
			}
			originalfilename = context.Request.QueryString["originalfilename"];
			savepathfilename = context.Request.QueryString["savepathfilename"];
			savefilename = context.Request.QueryString["savefilename"];
			//取样式初始值
			sStyleName = ((context.Request.QueryString["style"]!=null)?Helper.Context.Server.UrlDecode(context.Request.QueryString["style"]):"standard");
			System.Xml.XmlNode node = Helper.GetStyleNode(sStyleName);

			if(node!=null)
			{							
				sStyleName = node.SelectSingleNode("S_Name").InnerText;
				sStyleDir = node.SelectSingleNode("S_Dir").InnerText;
				sStyleCSS = node.SelectSingleNode("S_CSS").InnerText;
				sStyleUploadDir = node.SelectSingleNode("S_UploadDir").InnerText;
				sStyleUploadDir = (sStyleUploadDir.EndsWith("/")?sStyleUploadDir:sStyleUploadDir+"/");
				nStateFlag = node.SelectSingleNode("S_StateFlag").InnerText;
				sDetectFromWord = node.SelectSingleNode("S_DetectFromWord").InnerText;
				sInitMode = node.SelectSingleNode("S_InitMode").InnerText;
				sBaseUrl = node.SelectSingleNode("S_BaseUrl").InnerText;
				sBaseHref = node.SelectSingleNode("S_BaseHref").InnerText;
				
				sAutoRemote = node.SelectSingleNode("S_AutoRemote").InnerText;
				sShowBorder = node.SelectSingleNode("S_ShowBorder").InnerText;
				sButtonImgPath = node.SelectSingleNode("S_ButtonImagesPath").InnerText;
			}
			else
			{
				context.Response.Clear();
				context.Response.Output.WriteLine("无效的样式Style参数传入,如果要使用默认值,请留空!");
				context.Response.End();
				return;
			}
			sVersion = "2.0.0";
			sReleaseDate = "2004-06-08";
			sLicense = "";
		}		


		/// <summary>
		/// 初始化按钮数组
		/// </summary>
		private void InitButtonArray()
		{
			HttpContext context = Helper.Context;
			aButton = new Hashtable();			
			System.Collections.Hashtable hs = (Hashtable)context.Application[Argument];
			System.Xml.XmlDocument doc = (System.Xml.XmlDocument)hs["Button"];
			System.Xml.XmlNodeList nodelist = doc.SelectNodes("/Root/Button");
			foreach(System.Xml.XmlNode node in nodelist)
			{
				switch(node["B_Type"].InnerText)
				{
					case "0":
						aButton.Add(node["B_Code"].InnerText,"<DIV CLASS=\"" + node["B_Class"].InnerText + "\" TITLE=\"" + node["B_Title"].InnerText + "\" onclick=\"" + node["B_Event"].InnerText + "\"><IMG CLASS=\"Ico\" SRC=\"{sButtonImgPath}"+ node["B_Image"].InnerText +"\"></DIV>");
						break;
					case "1":
						aButton.Add(node["B_Code"].InnerText,"<SELECT CLASS=\"" + node["B_Class"].InnerText + "\" onchange=\"" + node["B_Event"].InnerText + "\">" + node["B_HTML"].InnerText + "</SELECT>");
						break;
					case "2":
						aButton.Add(node["B_Code"].InnerText,"<DIV CLASS=\"" + node["B_Class"].InnerText + "\">" + node["B_HTML"].InnerText + "</DIV>");
						break;
				}
			}
			
		}


		/// <summary>
		/// 初始化工具栏
		/// </summary>
		private System.Text.StringBuilder GetToolBar()
		{
			HttpContext context = Helper.Context;
			System.Xml.XmlNodeList nodelist = Helper.GetToolBarNodeList(sStyleName);
			if(nodelist.Count==0)
			{
				context.Response.Clear();
				context.Response.Output.WriteLine("对应样式没有设置工具栏!");
				context.Response.End();
				return null;
			}
			System.Text.StringBuilder Sb = new System.Text.StringBuilder();
			Sb.Append("<table border=0 cellpadding=0 cellspacing=0 width='100%' class='Toolbar' id='LionSky_Editor_Toolbar'>");
			
			foreach(System.Xml.XmlNode node in nodelist)
			{
				Sb.Append("<tr><td><div class=yToolbar>");
				string[] _buttonname = node.ParentNode["T_Button"].InnerText.Split('|');
				foreach(string name in _buttonname)
				{
					if(sFullScreen == "1" && name.ToUpper() == "MAXIMIZE")
						Sb.Append(aButton["Minimize"].ToString().Trim());
					Sb.Append(aButton[name].ToString().Trim());
				}
				Sb.Append("</div></td></tr>");
			}
			Sb.Append("</table>");
			return Sb;
		}


		#endregion

	}
}

⌨️ 快捷键说明

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