亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

asp.net 為FCKeditor開發代碼高亮插件實現代碼

2024-07-21 02:53:25
字體:
來源:轉載
供稿:網友
昨天已經將BlogEngine的可視化編輯器換成了FCKeditor,作為一個程序員,在博客中插入代碼是很重要的一塊。網上現有的都是修改FCKeditor的fckeditorcode_gecko.js和fckeditorcode_ie.js以達到InsertCode的目的。這個方法非常麻煩,當要使用FCKeditor新版本時都要重新修改這兩個文件,非常影響我們的效率。
 
所以就為FCKeditor寫了個InsertCode的插件。整個插件的制作過程非常簡單:
FCKeditor插件開發請參考FCKeditor官網的文檔: 

http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Customization/Plug-ins 
首先,我們在FCKeditor/editor/plugins目錄下新建一個insertcode目錄,并在insertcode目錄下新建一個fckplugin.js文件。 
在新建的fckplugin.js文件中插入下面的代碼: 
//插入代碼 
復制代碼代碼如下:

FCKCommands.RegisterCommand('InsertCode', new FCKDialogCommand('InsertCode', FCKLang.InsertCode, FCKPlugins.Items['insertcode'].Path + 'insertcode.aspx', 700, 600)) ; 
var insertcodeItem = new FCKToolbarButton('InsertCode', FCKLang['InsertCode']) ; 
insertcodeItem.IconPath = FCKPlugins.Items['insertcode'].Path + 'images/insertcode.gif'; 
FCKToolbarItems.RegisterItem('InsertCode', insertcodeItem); 



在FCKeditor/editor/plugins/insertcode目錄下創建images,lang,languages目錄,在lang目錄下新建en.js,zh-cn.js。en.js的內容為: 
FCKLang.InsertCode = 'Insert Codes' ; 
zh-cn.js的內容為: 
FCKLang.InsertCode = '插入代碼' ; 
下載CodeHighlighter
控件并解壓,把CodeHighlighter/bin目錄下的ActiproSoftware.CodeHighlighter.Net20.dll,ActiproSoftware.Shared.Net20.dll,CodeHighlighterTest.dll三個DLL復制到BlogEngine.Web/bin目錄, 
將CodeHighlighter/Languages里的Lexers整個目錄復制到FCKeditor/editor/plugins/insertcode/languages目錄, 
將CodeHighlighter/Images/OutliningIndicators/目錄下的所有圖片復制到FCKeditor/editor/plugins/insertcode/images目錄,并將這個圖片下載保存到FCKeditor/editor/plugins/insertcode/images/insertcode.gif。 

在FCKeditor/editor/plugins/insertcode/目錄下新建insertcode.aspx,注意,如果是用Visual Studio新建的話
asp.net 為FCKeditor開發代碼高亮插件實現代碼
insertcode.aspx內容如下: 
復制代碼代碼如下:

<%@ Page Language="C#" ValidateRequest="false" %> 

<%@ Register TagPrefix="CH" Namespace="ActiproSoftware.CodeHighlighter" Assembly="ActiproSoftware.CodeHighlighter.Net20" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<script runat="server"> 
static string code = string.Empty; 

protected void btnSubmit_Click(object sender, EventArgs e) 
...{ 
code = txtCode.Text; 
Highlighter.LanguageKey = ddlLangType.SelectedItem.Text; 
Highlighter.OutliningEnabled = chkOutLining.Checked; 
Highlighter.LineNumberMarginVisible = chkLineNum.Checked; 
Highlighter.Text = code; 

protected void Page_Load(object sender, EventArgs e) 
...{ 
if (!Page.IsPostBack) 
...{ 
CodeHighlighterConfiguration config = (CodeHighlighterConfiguration)ConfigurationManager.GetSection("codeHighlighter"); 
string[] keys = new string[config.LanguageConfigs.Keys.Count]; 
config.LanguageConfigs.Keys.CopyTo(keys, 0); 
Array.Sort(keys); 
foreach (string key in keys) 
...{ 
ddlLangType.Items.Add(key); 

ddlLangType.SelectedIndex = ddlLangType.Items.IndexOf(ddlLangType.Items.FindByText("C#")); 



protected void CodeHighlighter_PostRender(object sender, EventArgs e) 
...{ 
if (!string.IsNullOrEmpty(Highlighter.Output)) 
...{ 
lblCode.Text = Highlighter.Output.Replace(" ", "  ").Replace("/n", "<br />"); 
Response.Write("<scr" + "ipt>window.parent.SetOkButton( true );</scr" + "ipt>"); 


</script> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title>InsertCode By Moozi.Net</title> 

<script src="http://www.cnblogs.com/dialog/common/fck_dialog_common.js" type="text/javascript"></script> 

<script type="text/javascript"> 

var oEditor = window.parent.InnerDialogLoaded() ; 

// Gets the document DOM 
var oDOM = oEditor.FCK.EditorDocument ; 

var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ; 

window.onload = function() 
...{ 
//window.parent.SetOkButton( false ); 


function Ok() 
...{ 
if(GetE('txtCode').value == '') 
...{ 
alert("代碼內容不能為空!"); 
return false; 

oEditor.FCK.InsertHtml(document.getElementById("lblCode").innerHTML) ; 
return true ; 


</script> 

<style type="text/css"> 
.langType 
...{ 
padding-bottom: 5px; 

.btnRun 
...{ 
padding-top: 5px; 
text-align: right; 

pre 
...{ 
background-color: #f4f4f4; 
border-style: solid; 
border-width: 1px; 
border-color: #C0C0C0; 
font-family: Courier New, monospace; 
font-size: 10pt; 

</style> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
<div class="langType"> 
語言類型:<asp:DropDownList ID="ddlLangType" runat="server"> 
</asp:DropDownList> 
<asp:CheckBox ID="chkOutLining" Text="折疊代碼" runat="server" Checked="true" /> 
<asp:CheckBox ID="chkLineNum" Text="允許行號" runat="server" Checked="false" /> 
</div> 
<div> 
<asp:TextBox ID="txtCode" runat="server" TextMode="multiline" Width="640px" Height="390px"></asp:TextBox> 
</div> 
<div class="btnRun"> 
<asp:Button ID="btnSubmit" runat="server" Text=" 轉 換 " OnClick="btnSubmit_Click" /> 
<pre id="pre1" style="display: none;"> 
<CH:CodeHighlighter runat="server" ID="Highlighter" OnPostRender="CodeHighlighter_PostRender" /> 
</pre> 
<asp:Label ID="lblCode" Style="display: none;" runat="server"></asp:Label> 
</div> 
</div> 
</form> 
</body> 
</html>



接下來修改FCKeditor/fckconfig.js,在原文件中我們能找到// FCKConfig.Plugins.Add( 'autogrow' ) ;這段代碼,在這段代碼下一行插入:FCKConfig.Plugins.Add( 'insertcode' , 'zh-cn,en' ) ; 

最后修改Web.config文件:(請參考CodeHighlighter/Web.config) 
在<configuration>里插入: 
<configSections> 
<section name="codeHighlighter" requirePermission="false" type="ActiproSoftware.CodeHighlighter.CodeHighlighterConfigurationSectionHandler, ActiproSoftware.CodeHighlighter.Net20" /> 
</configSections> 




在<system.web></system.web>后插入: 
<codeHighlighter> 
<cache languageTimeout="3" /> 
<keywordLinking enabled="true" target="_blank" defaultKeywordCollectionKey="ActiproKeywords"> 
<keywordCollection key="ActiproKeywords"> 
<explicitKeyword tokenKey="IdentifierToken" patternValue="Actipro" url="http://www.actiprosoftware.com" caseSensitive="false" /> 
<explicitKeyword tokenKey="IdentifierToken" patternValue="CodeHighlighter" url="http://www.codehighlighter.com" caseSensitive="false" /> 
</keywordCollection> 
</keywordLinking> 
<languages> 
<language key="Assembly" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.Assembly.xml" /> 
<language key="BatchFile" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.BatchFile.xml" /> 
<language key="C#" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.CSharp.xml" /> 
<language key="CSS" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.CSS.xml" /> 
<language key="HTML" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.HTML.xml" /> 
<language key="INIFile" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.INIFile.xml" /> 
<language key="Java" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.Java.xml" /> 
<language key="JScript" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.JScript.xml" /> 
<language key="Lua" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.Lua.xml" /> 
<language key="MSIL" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.MSIL.xml" /> 
<language key="Pascal" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.Pascal.xml" /> 
<language key="Perl" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.Perl.xml" /> 
<language key="PHP" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.PHP.xml" /> 
<language key="PowerShell" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.PowerShell.xml" /> 
<language key="Python" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.Python.xml" /> 
<language key="SQL" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.SQL.xml" /> 
<language key="VB.NET" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.VBDotNet.xml" /> 
<language key="VBScript" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.VBScript.xml" /> 
<language key="XAML" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.XAML.xml" /> 
<language key="XML" definitionPath="~/fckeditor/editor/plugins/insertcode/languages/lexers/ActiproSoftware.XML.xml" /> 
</languages> 
<lineNumberMargin foreColor="Teal" paddingCharacter=" " visible="true" /> 
<outlining enabled="true" imagesPath="~/fckeditor/editor/plugins/insertcode/images/" /> 
<spacesInTabs count="4" /> 
</codeHighlighter> 


這次的插件就完工了。這種方法可以說是一勞永逸,以后更換高版本的FCKeditor時,只需要修改fckconfig.js將這個插件加入就可以了


注:相關教程知識閱讀請移步到編輯器頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产日韩欧美在线视频观看| 日韩在线观看网址| 亚洲第一级黄色片| 成人激情视频在线| 在线色欧美三级视频| 久久99热精品这里久久精品| 欧美日韩一区二区在线| 91免费看视频.| 中文字幕精品在线视频| 国产一区二区在线免费视频| 在线观看国产成人av片| 亚洲第一区中文字幕| 日本精品一区二区三区在线| 国产成人精品免高潮在线观看| 国产日产欧美精品| 色视频www在线播放国产成人| 97精品一区二区视频在线观看| 欧美成人精品xxx| 91av国产在线| 亚洲欧美制服综合另类| 2019中文字幕在线免费观看| 亚洲欧美日韩图片| 欧美日韩亚洲成人| 国产啪精品视频网站| 一区二区三区美女xx视频| 91老司机精品视频| 国产婷婷97碰碰久久人人蜜臀| 国产精品久久久久久久久粉嫩av| 粗暴蹂躏中文一区二区三区| 国产精品免费久久久久久| 国产999在线观看| 亚洲有声小说3d| 综合网日日天干夜夜久久| 深夜福利亚洲导航| 午夜精品国产精品大乳美女| 国产成人在线一区二区| 麻豆一区二区在线观看| 日韩最新中文字幕电影免费看| 一区二区欧美日韩视频| 国产香蕉97碰碰久久人人| 97色伦亚洲国产| 亚洲福利小视频| 在线性视频日韩欧美| 欧美日韩国产综合视频在线观看中文| 尤物九九久久国产精品的分类| 国产欧美一区二区| 精品性高朝久久久久久久| 国产免费一区二区三区香蕉精| 精品国产自在精品国产浪潮| 亚洲欧洲在线视频| 欧美激情精品久久久久久蜜臀| 日韩av在线网页| 欧美影院成年免费版| 成人a在线观看| 欧美日韩精品国产| 欧美激情在线播放| 亚洲欧美成人在线| 欧美日韩激情视频8区| 亚洲伊人成综合成人网| 欧美黄网免费在线观看| 精品国内产的精品视频在线观看| 热re91久久精品国99热蜜臀| 精品视频在线导航| 欧美精品国产精品日韩精品| 国产精品久久久久77777| 国产免费亚洲高清| 精品国产乱码久久久久久虫虫漫画| 91在线免费观看网站| 亚洲欧美国产精品专区久久| 中文字幕欧美精品日韩中文字幕| 色偷偷噜噜噜亚洲男人的天堂| 中文字幕亚洲欧美日韩2019| 日韩av电影院| 亚洲国产精品网站| 欧美大片免费观看在线观看网站推荐| 欧美午夜片欧美片在线观看| 欧美极品少妇xxxxⅹ免费视频| 日韩国产中文字幕| 国产精品久久久久久久久久99| 精品久久久久久久久久ntr影视| 国产在线观看一区二区三区| 91精品免费看| 中日韩美女免费视频网址在线观看| 国产盗摄xxxx视频xxx69| 777午夜精品福利在线观看| 久久人人爽人人爽人人片av高清| 92国产精品久久久久首页| 日韩中文在线中文网在线观看| 国产一区二区激情| 国产精品自产拍在线观看中文| 大胆人体色综合| 欧美激情国产日韩精品一区18| 亚洲激情电影中文字幕| 日韩中文字幕在线视频| 91久久精品视频| 狠狠做深爱婷婷久久综合一区| 国产激情视频一区| 中文字幕免费国产精品| 中文字幕亚洲自拍| 91中文字幕在线| 日韩高清电影免费观看完整| 国产成人avxxxxx在线看| 中文字幕久久久av一区| 精品欧美aⅴ在线网站| 国产精品久久久久久久久久久新郎| 亚洲色图国产精品| 国产成人精品一区二区| 欧美极品欧美精品欧美视频| 亚洲国产精品va在线看黑人动漫| 成人黄色大片在线免费观看| 国产亚洲精品一区二区| 在线亚洲男人天堂| 成人动漫网站在线观看| 97国产精品人人爽人人做| 欧美人成在线视频| 国产午夜精品麻豆| 日本欧美黄网站| 日韩精品视频三区| 亚洲欧美日韩视频一区| 欧美精品一区二区三区国产精品| 日韩麻豆第一页| 91情侣偷在线精品国产| 91精品久久久久久久久| 亚洲精品suv精品一区二区| 91在线中文字幕| 国产亚洲欧美另类中文| 国产自产女人91一区在线观看| 日韩在线观看网址| 欧美午夜xxx| 久久韩国免费视频| 精品视频在线播放色网色视频| 日韩成人在线观看| 久久久久久成人精品| 日本免费在线精品| 久久精品亚洲精品| 亚洲欧美综合图区| 久久久久久久久久亚洲| 黑人巨大精品欧美一区二区一视频| 日韩电影免费观看中文字幕| 国产精品白丝av嫩草影院| 亚洲人成网站在线播| 色先锋资源久久综合5566| 色与欲影视天天看综合网| 国产一区二区三区毛片| 国产成人精品在线播放| 久久精品国产2020观看福利| 91成人福利在线| 亚洲毛茸茸少妇高潮呻吟| 午夜精品一区二区三区在线视频| 日韩www在线| 欧美成人全部免费| 欧美在线性爱视频| 懂色av影视一区二区三区| 久久人人爽人人爽爽久久| 久久影院资源站| 国产欧美日韩免费| 亚洲欧美一区二区三区情侣bbw| 国产精品白嫩初高中害羞小美女| 久久久国产影院| 亚洲精品国产品国语在线| 在线精品高清中文字幕| 欧美高清在线观看| 欧美多人乱p欧美4p久久| 亚洲久久久久久久久久久|