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

📄 htmleditor.cs

📁 一个超强的在线WORD汉化版ASP程序5...
💻 CS
字号:
using System;
using System.Web;
using System.Web.UI;
using System.Collections;
using System.Xml;
using System.Drawing;
using System.Web.UI.WebControls;
using System.ComponentModel;
using Lion.Data.Library.HtmlEditor.Core;
using Lion.Data.Library.HtmlEditor.License;
namespace Lion.Data.Library.HtmlEditor
{
	/// <summary>
	/// 专用于 ASP.Net 的Web编辑器
	/// </summary>
	[DefaultProperty("Text"),
	DefaultEvent("TextChanged"),
	PersistChildren(false),
	Description("专用于 ASP.Net 的Web编辑器"),
	Designer(typeof(HtmlEditorDesigner)),
    ToolboxData("<{0}:HtmlEditor runat=server></{0}:HtmlEditor>"),
	LicenseProviderAttribute(typeof(MyLicenseProvider))]
	public class HtmlEditor : System.Web.UI.WebControls.WebControl
	{
		#region License

		private System.ComponentModel.License _license = null;

		/// <summary>
		/// 实例化 <see cref="HtmlEditor"/>
		/// </summary>
		public HtmlEditor()
		{
			_license = LicenseManager.Validate(typeof(HtmlEditor), this);
			
		}

		#endregion

		#region Other

		/// <summary>
		/// <see cref="HtmlEditor"/> 的配置文件目录,默认配置文件默认放置在:/lionsky_client/Lion.Data.Library.HtmlEditor.x/目录下面
		/// </summary>
		[Browsable(true),
		Category("外观"),
		DefaultValue(false),
		Description("是否使用配置文件,默认配置文件放置在:/lionsky_client/Lion.Data.Library.HtmlEditor.x/目录下面")]
		public string ConfigFile
		{
			get
			{
				object obj=ViewState["ConfigFile"];
				return (obj==null)?null:(((string)obj).Trim()==String.Empty?null:(string)obj);
			}
			set
			{
				ViewState["ConfigFile"]=value;
			}
		}

		/// <summary>
		/// <see cref="Lion.Data.Library.HtmlEditor.HtmlEditor"/> 的Text值
		/// </summary>
		[Browsable(true),
		Description("Text值"),
		Category("外观"),
		DefaultValue(null)]
		public string Text
		{
			get
			{
				object obj=ViewState["Text"];
				return (obj==null)?String.Empty:(string)obj;
			}
			set
			{
				ViewState["Text"]=value;
			}
		}

		/// <summary>
		/// 保存上传文件成功返回原文件名[如:Logo.gif]的控件ID
		/// </summary>
		[Browsable(true),
		Category("杂项"),
		DefaultValue(false),
		Description("保存上传文件成功返回原文件名[如:Logo.gif]的控件ID")]
		public string OriginalFileName
		{
			get
			{
				object obj=ViewState["OriginalFileName"];
				return (obj==null)?null:(((string)obj).Trim()==String.Empty?null:(string)obj);
			}
			set
			{
				ViewState["OriginalFileName"]=value;
			}
		}

		/// <summary>
		/// 保存上传文件成功后的随机文件名[如:200406082044129049.gif]的控件ID
		/// </summary>
		[Browsable(true),
		Category("杂项"),
		DefaultValue(false),
		Description("保存上传文件成功后的随机文件名[如:200406082044129049.gif]的控件ID")]
		public string SaveFileName
		{
			get
			{
				object obj=ViewState["SaveFileName"];
				return (obj==null)?null:(((string)obj).Trim()==String.Empty?null:(string)obj);
			}
			set
			{
				ViewState["SaveFileName"]=value;
			}
		}		

		/// <summary>
		/// 保存上传文件成功后的路径文件名[如:/UploadFile/200406082044129049.gif]的控件ID
		/// </summary>
		[Browsable(true),
		Category("杂项"),
		DefaultValue(false),
		Description("保存上传文件成功后的路径文件名[如:/UploadFile/200406082044129049.gif]的控件ID")]
		public string SavePathFileName
		{
			get
			{
				object obj=ViewState["SavePathFileName"];
				return (obj==null)?null:(((string)obj).Trim()==String.Empty?null:(string)obj);
			}
			set
			{
				ViewState["SavePathFileName"]=value;
			}
		}	

		#region 行为
	
		/// <summary>
		/// 是否允许<see cref="Lion.Data.Library.HtmlEditor.HtmlEditor"/> 的Text值使用javascript,vbscript等,事件onclick,ondlbclick等
		/// </summary>
		[Browsable(true),
		Description("是否允许 HtmlEditor 的Text值使用javascript,vbscript等,事件onclick,ondlbclick等"),
		Category("行为"),
		DefaultValue(false)]
		public bool Scriptfilter
		{
			get
			{
				object obj=ViewState["Scriptfilter"];
				return (obj==null)?false:(bool)obj;
			}
			set
			{
				ViewState["Scriptfilter"]=value;
			}
		}

		/// <summary>
		/// 是否允许<see cref="Lion.Data.Library.HtmlEditor.HtmlEditor"/> 的Text值使用table,th,td,tr标签
		/// </summary>
		[Browsable(true),
		Description("是否允许 HtmlEditor 的Text值使用table,th,td,tr标签"),
		Category("行为"),
		DefaultValue(false)]
		public bool Tablefilter
		{
			get
			{
				object obj=ViewState["Tablefilter"];
				return (obj==null)?false:(bool)obj;
			}
			set
			{
				ViewState["Tablefilter"]=value;
			}
		}

		/// <summary>
		/// 是否允许<see cref="Lion.Data.Library.HtmlEditor.HtmlEditor"/> 的Text值使用class= 这样的标签
		/// </summary>
		[Browsable(true),
		Description("是否允许 HtmlEditor 的Text值使用class= 这样的标签"),
		Category("行为"),
		DefaultValue(false)]
		public bool Classfilter
		{
			get
			{
				object obj=ViewState["Classfilter"];
				return (obj==null)?false:(bool)obj;
			}
			set
			{
				ViewState["Classfilter"]=value;
			}
		}

		/// <summary>
		/// 是否允许<see cref="Lion.Data.Library.HtmlEditor.HtmlEditor"/> 的Text值使用style= 这样的标签
		/// </summary>
		[Browsable(true),
		Description("是否允许 HtmlEditor 的Text值使用style= 这样的标签"),
		Category("行为"),
		DefaultValue(false)]
		public bool Stylefilter
		{
			get
			{
				object obj=ViewState["Stylefilter"];
				return (obj==null)?false:(bool)obj;
			}
			set
			{
				ViewState["Stylefilter"]=value;
			}
		}

		/// <summary>
		/// 是否允许<see cref="Lion.Data.Library.HtmlEditor.HtmlEditor"/> 的Text值使用xml 标签
		/// </summary>
		[Browsable(true),
		Description("是否允许 HtmlEditor 的Text值使用xml 标签"),
		Category("行为"),
		DefaultValue(false)]
		public bool XMLfilter
		{
			get
			{
				object obj=ViewState["XMLfilter"];
				return (obj==null)?false:(bool)obj;
			}
			set
			{
				ViewState["XMLfilter"]=value;
			}
		}

		/// <summary>
		/// 是否允许<see cref="Lion.Data.Library.HtmlEditor.HtmlEditor"/> 的Text值使用<o:p></o:p> 这种格式
		/// </summary>
		[Browsable(true),
		Description("是否允许 HtmlEditor 的Text值使用<o:p></o:p> 这种格式"),
		Category("行为"),
		DefaultValue(false)]
		public bool NAMESPACEfilter
		{
			get
			{
				object obj=ViewState["NAMESPACEfilter"];
				return (obj==null)?false:(bool)obj;
			}
			set
			{
				ViewState["NAMESPACEfilter"]=value;
			}
		}

		/// <summary>
		/// 是否允许<see cref="Lion.Data.Library.HtmlEditor.HtmlEditor"/> 的Text值使用font 标签,不建议使用
		/// </summary>
		[Browsable(true),
		Description("是否允许 HtmlEditor 的Text值使用font 标签,不建议使用"),
		Category("行为"),
		DefaultValue(false)]
		public bool Fontfilter
		{
			get
			{
				object obj=ViewState["Fontfilter"];
				return (obj==null)?false:(bool)obj;
			}
			set
			{
				ViewState["Fontfilter"]=value;
			}
		}

		/// <summary>
		/// 是否允许<see cref="Lion.Data.Library.HtmlEditor.HtmlEditor"/> 的Text值使用marquee 标签,也就没有移动滚动的特殊
		/// </summary>
		[Browsable(true),
		Description("是否允许 HtmlEditor 的Text值使用marquee 标签,也就没有移动滚动的特殊"),
		Category("行为"),
		DefaultValue(false)]
		public bool Marqueefilter
		{
			get
			{
				object obj=ViewState["Marqueefilter"];
				return (obj==null)?false:(bool)obj;
			}
			set
			{
				ViewState["Marqueefilter"]=value;
			}
		}

		/// <summary>
		/// 是否允许<see cref="Lion.Data.Library.HtmlEditor.HtmlEditor"/> 的Text值使用bject, param, embed 标签,不能嵌入对象
		/// </summary>
		[Browsable(true),
		Description("是否允许 HtmlEditor 的Text值使用bject, param, embed 标签,不能嵌入对象"),
		Category("行为"),
		DefaultValue(false)]
		public bool OBJECTfilter
		{
			get
			{
				object obj=ViewState["OBJECTfilter"];
				return (obj==null)?false:(bool)obj;
			}
			set
			{
				ViewState["OBJECTfilter"]=value;
			}
		}

		#endregion

		/// <summary>
		/// 获取或设置一个值,该值指示 HtmlEditor 服务器控件是否向发出请求的客户端保持自己的视图状态,该属性经重写后不允许设为false。
		/// </summary>
		/// <remarks><see cref="HtmlEditor"/> 服务器控件将一些重要的信息保存在ViewState中
		/// <p><note>该属性并不能禁止用户用<![CDATA[<%@Page EnableViewState=false%> ]]>页指令来禁用整个页面的视图状态。</note></p></remarks>
		[Browsable(false),
		Description("是否启用控件的视图状态,该属性的值必须为true,不允许用户设置。"),
		DefaultValue(true),
		Category("Behavior")]
		public override bool EnableViewState
		{
			get
			{
				return base.EnableViewState;
			}
			set
			{
				base.EnableViewState=true;
			}
		}

		#endregion

		#region Control Rendering Logic

		/// <summary>
		/// 重写 <see cref="System.Web.UI.Control.OnLoad"/> 方法。
		/// </summary>
		/// <param name="e">包含事件数据的 <see cref="EventArgs"/> 对象。</param>
		protected override void OnLoad(EventArgs e)
		{
			if(Page.Request.Form[this.UniqueID]!=null)
			{
				if(Page.Request.Form[this.UniqueID].Trim().ToString()!=String.Empty)
				{
					this.Text = DecodeFilter(Page.Request.Form[this.UniqueID]);
				}
			}
			base.OnLoad(e);
		}


		/// <summary>
		/// 将此控件呈现给指定的输出参数。
		/// </summary>
		/// <param name="output"> 要写出到的 HTML 编写器 </param>
		protected override void RenderContents(HtmlTextWriter output)
		{
			Helper.InitResources();			
			//加入自己的版权信息!	
			string path = (ConfigFile==null?Helper.ResolvePath("/"):Helper.Context.Request.ApplicationPath+(ConfigFile.StartsWith("/")?ConfigFile:"/"+ConfigFile));
			Helper.InitConfigFile(path);
			Hashtable hs = ((System.Collections.Hashtable)Context.Application[path]);
			System.Xml.XmlDocument doc = (System.Xml.XmlDocument)hs["Style"];
			System.Xml.XmlNode node = doc.SelectSingleNode("/Root/Style[@Selected='true']");;
			if(node==null)
			{
				output.Write(typeof(HtmlEditor).FullName+" 载入失败!配置文件格式不正确!");return;
			}
			node = node.SelectSingleNode("S_Name");
			if(node==null)
			{
				output.Write(typeof(HtmlEditor).FullName+" 载入失败!配置文件格式不正确!");return;
			}
			string style = node.InnerText;
			string width = doc.SelectSingleNode("/Root/Style/S_Name[text()='"+ style +"']").ParentNode.SelectSingleNode("S_Width").InnerText;
			string height = doc.SelectSingleNode("/Root/Style/S_Name[text()='"+ style +"']").ParentNode.SelectSingleNode("S_Height").InnerText;
			

			output.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Type,"hidden");
			output.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Name,this.ClientID);
			output.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Value,this.Text);
			output.RenderBeginTag(System.Web.UI.HtmlTextWriterTag.Input);			
			output.RenderEndTag();
			

			output.Write("<IFRAME ID=\"LionSky_HtmlEditor\" src=\""+ Helper.ResolvePath("/") +"htmleditor.aspx?id="+ this.ClientID +"&style="+ Helper.Context.Server.UrlEncode(style)  +"&configfile="+ path + (OriginalFileName==null?"":"&originalfilename="+OriginalFileName) + (SavePathFileName==null?"":"&savepathfilename="+SavePathFileName) + (SaveFileName==null?"":"&savefilename="+SaveFileName) +"\" frameborder=\"0\" scrolling=\"no\" width=\""+ width +"\" height=\""+ height +"\"></IFRAME>");
			
			base.RenderContents(output);
			//加入自己的版权信息!	
		}

		/// <summary>
		/// 将 HTML 元素的开始标记写入 HtmlTextWriter 输出流。
		/// </summary>
		/// <param name="writer">HtmlTextWriter 输出流</param>
		public override void RenderBeginTag(HtmlTextWriter writer)
		{
			//加入自己的版权信息!	
			writer.WriteLine();
			writer.WriteLine();
			writer.Write("<!---------------------------- ");
			writer.Write("HtmlEditor Start");
			writer.WriteLine(" ------------------------------->");
			writer.Write("<!-------- ");
			writer.Write("Copyright:2003 Lion (lion.net@163.com , www.lionsky.net)");
			writer.Write(" -----------");
			writer.WriteLine(">");	
			writer.WriteLine();
		}

		/// <summary>
		/// 将 HTML 元素的结束标记写入 HtmlTextWriter 输出流
		/// </summary>
		/// <param name="writer">HtmlTextWriter 输出流</param>
		public override void RenderEndTag(HtmlTextWriter writer)
		{
			writer.WriteLine();
			writer.WriteLine();
			writer.Write("<!---------------------------- ");
			writer.Write("HtmlEditor End");
			writer.Write(" ---------------------------------");
			writer.WriteLine(">");
			writer.WriteLine();
			writer.WriteLine();
		}

		/// <summary>
		/// 处置使用的资源。
		/// </summary>
		public override void Dispose() 
		{  		
			try
			{
				if (_license != null) 
				{
					_license.Dispose();
					_license = null;
				}
			}
			catch{}
			base.Dispose();
		}



		#endregion

		#region Private Helper Functions
		
		private string DecodeFilter(string html)
		{
			string str = html;
			if(this.Scriptfilter)
			{
				str = Helper.DecodeFilter(html,"script");
			}
			if(this.Tablefilter)
			{
				str = Helper.DecodeFilter(html,"table");
			}
			if(this.Classfilter)
			{
				str = Helper.DecodeFilter(html,"class");
			}
			if(this.Stylefilter)
			{
				str = Helper.DecodeFilter(html,"style");
			}
			if(this.XMLfilter)
			{
				str = Helper.DecodeFilter(html,"xml");
			}
			if(this.NAMESPACEfilter)
			{
				str = Helper.DecodeFilter(html,"NAMESPACE");
			}
			if(this.Fontfilter)
			{
				str = Helper.DecodeFilter(html,"font");
			}
			if(this.Marqueefilter)
			{
				str = Helper.DecodeFilter(html,"marquee");
			}
			if(this.OBJECTfilter)
			{
				str = Helper.DecodeFilter(html,"object");
			}
			return str;
		}


		#endregion		
		
	}
}

⌨️ 快捷键说明

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