为论坛和Blog添加代码高亮显示的功能。
2007-10-24 09:14
936 查看
在cnblogs和许多其他论坛、Blog上都有插入程序代码高亮显示的功能。现参考cnblogs的为例,以discuz!NT 2.0 rc2为例,说明如何增加插入代码高亮功能。
cnblogs的代码高亮功能是通过一个共享软件实现的,可以到以下网址下载使用 http://www.actiprosoftware.com/Download/Freeware.aspx
此软件的Api很简单,就是一个Asp.net的控件。可以在网页上输出高亮显示的代码。但我们不想让高亮代码在网页上输出,而是插入到文章中。可以对discuz自带的Editor进行改造,以达到响应的功能。
首先将 ActiproSoftware.CodeHighlighter.Net20.dll、ActiproSoftware.Shared.Net20.dll、CodeHighlighterTest.dll Copy到discuz的bin目录。然后在discuz的页面文件价(aspx/1)下添加InsertCode.aspx文件,内容如下
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<%@ Page Language="C#" %>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<%@ Import Namespace="ActiproSoftware.CodeHighlighter" %>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<%@ Import Namespace="System.Reflection" %>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<script runat="server">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
protected string ReturnCode;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
protected override void OnLoad(EventArgs e)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
if (!IsPostBack)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif)
...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//从配置文件中获取支持的语言列表
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
CodeHighlighterConfiguration config = (CodeHighlighterConfiguration)ConfigurationManager.GetSection("codeHighlighter");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
string[] keys = new string[config.LanguageConfigs.Keys.Count];
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
config.LanguageConfigs.Keys.CopyTo(keys, 0);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
Array.Sort(keys);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
foreach (string key in keys)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif)
...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
LanguageDropDownList.Items.Add(key);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//将默认语言设置为C#
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
LanguageDropDownList.SelectedIndex = LanguageDropDownList.Items.IndexOf(LanguageDropDownList.Items.FindByText("C#"));
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
base.OnLoad(e);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
protected void Insert_Click(object sender, EventArgs e)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//初始化控件
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ActiproSoftware.CodeHighlighter.CodeHighlighter ch = new ActiproSoftware.CodeHighlighter.CodeHighlighter();
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ch.LanguageKey = LanguageDropDownList.SelectedValue;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ch.Text = Code.Text;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ch.Page = this;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
Type t = ch.GetType();
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//利用反射获取高亮显示的代码
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
MethodInfo method = t.GetMethod("a", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
method.Invoke(ch, null);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
FieldInfo field = t.GetField("i", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ReturnCode = (string)field.GetValue(ch);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//将代码放入 pre 标签中以保持格式,并输出到页面显示
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ReturnCode = JStringEncode("<pre style='background-color:#eeeeee;font-size:13px;BORDER:1px solid #CCCCCC;PADDING-RIGHT: 5px;PADDING-BOTTOM: 4px;PADDING-left: 4px;PADDING-TOP: 4px;WIDTH: 98%;word-break:break-all'>" + ReturnCode + "</pre>");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ReturnPanel.Visible = true;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
/**//// <summary>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
/// 替换掉字符串中的特殊字符,如把 " 替换成 "
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
/// </summary>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
/// <param name="str"></param>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
/// <returns></returns>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
public static string JStringEncode( string str )
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
if( str == null )
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif)
...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
return string.Empty;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//替换反斜杠
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
str = str.Replace( @"", @"/" );
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//替换回车
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
str = str.Replace( " ", @" " );
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
str = str.Replace( " ", @" " );
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//替换 " 号
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
str = str.Replace( """, "/"" );
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
return str;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</script>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<html xmlns="http://www.w3.org/1999/xhtml">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<head runat="server">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<title>插入源代码</title>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</head>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<body>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<form id="form1" runat="server">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<div>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<table id="Table1" class="tb" cellspacing="0" cellpadding="3" border="0">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<tr>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<th align="right" style="width: 80px;">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
编程语言:</th>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<td>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<asp:DropDownList ID="LanguageDropDownList" runat="server" Width="100px">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</asp:DropDownList></td>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</tr>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<tr>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<th valign="top" align="right">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
代码:</th>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<td>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<asp:TextBox ID="Code" runat="server" Height="200px" TextMode="MultiLine" Width="500px"></asp:TextBox></td>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</tr>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<tr>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<td>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</td>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<td>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<asp:Button ID="Insert" runat="server" OnClick="Insert_Click" Text="确定" /> <input
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
onclick="return window.close()" type="button" value="关闭"></td>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</tr>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</table>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</div>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<asp:Panel ID="ReturnPanel" runat="server" Visible="false">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<script language="javascript">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
window.opener.insertText("<% = ReturnCode %>");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
window.close();
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</script>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</asp:Panel>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</form>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</body>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</html>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
然后修改discuz的webconfig,如下所示
1
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<?xml version="1.0" encoding="utf-8" ?>
2
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<configuration>
3
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<configSections>
4
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<section name="codeHighlighter" requirePermission="false" type="ActiproSoftware.CodeHighlighter.CodeHighlighterConfigurationSectionHandler, ActiproSoftware.CodeHighlighter.Net20"/>
5
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</configSections>
6
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<system.web>
8
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<compilation
10
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
defaultLanguage="c#"
11
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
debug="false"
12
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/>
13
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<authorization>
15
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<allow users="*" /> <!-- 允许所有用户 -->
16
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</authorization>
17
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<trace
19
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
enabled="false"
20
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
requestLimit="10"
21
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
pageOutput="false"
22
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
traceMode="SortByTime"
23
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
localOnly="true"
24
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/>
25
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
26
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<!-- 以下为Discuz!NT相关的一些系统设置, 如果有疑问, 请访问 http://nt.discuz.net/config 获得更详细的说明
27
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
-->
28
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
29
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
30
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
31
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<!-- 注意:此节设置错误信息的显示
32
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
33
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
"On" 始终显示自定义(友好的)信息。
34
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
"Off" 始终显示详细的 ASP.NET 错误信息。
35
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
"RemoteOnly" 只对不在本地 Web 服务器上运行的
36
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
-->
37
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<customErrors
38
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
mode="RemoteOnly"
39
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/>
40
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
41
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<!-- 注意:此节设置全球化,Discuz!NT由此支持多语言。
42
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
-->
43
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<globalization
44
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
requestEncoding="utf-8"
45
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
responseEncoding="utf-8"
46
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
fileEncoding="utf-8"
47
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/>
48
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
49
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<!-- 注意:此节设置是否使用ASP.net表单安全验证,Discuz!NT使用自己的验证。
50
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
-->
51
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<pages
52
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
validateRequest="false"
53
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
enableEventValidation="false"
54
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
enableViewStateMac="false"
55
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
viewStateEncryptionMode ="Never"
56
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/>
57
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
58
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<!-- 注意:此节设置由Discuz!NT接管http请求。不会干涉对非Discuz!NT论坛路径下的请求。
59
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
-->
60
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<httpModules>
61
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<add type="Discuz.Forum.HttpModule, Discuz.Forum" name="HttpModule" />
62
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</httpModules>
63
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
64
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<xhtmlConformance mode="Legacy"/>
65
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
66
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<httpRuntime maxRequestLength="2097151" executionTimeout="3600"/>
67
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
68
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<webServices>
69
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<protocols>
70
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<add name="HttpGet" />
71
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<add name="HttpPost"/>
72
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</protocols>
73
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</webServices>
74
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
75
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
76
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</system.web>
77
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
78
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<codeHighlighter>
79
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<cache languageTimeout="3"/>
80
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<keywordLinking enabled="true" target="_blank" defaultKeywordCollectionKey="ActiproKeywords">
81
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<keywordCollection key="ActiproKeywords">
82
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<explicitKeyword tokenKey="IdentifierToken" patternValue="Actipro" url="http://www.actiprosoftware.com" caseSensitive="false"/>
83
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<explicitKeyword tokenKey="IdentifierToken" patternValue="CodeHighlighter" url="http://www.codehighlighter.com" caseSensitive="false"/>
84
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</keywordCollection>
85
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</keywordLinking>
86
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<languages>
87
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="Assembly" definitionPath="~/Languages/Lexers/ActiproSoftware.Assembly.xml"/>
88
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="BatchFile" definitionPath="~/Languages/Lexers/ActiproSoftware.BatchFile.xml"/>
89
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="C#" definitionPath="~/Languages/Lexers/ActiproSoftware.CSharp.xml"/>
90
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="CSS" definitionPath="~/Languages/Lexers/ActiproSoftware.CSS.xml"/>
91
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="HTML" definitionPath="~/Languages/Lexers/ActiproSoftware.HTML.xml"/>
92
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="INIFile" definitionPath="~/Languages/Lexers/ActiproSoftware.INIFile.xml"/>
93
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="Java" definitionPath="~/Languages/Lexers/ActiproSoftware.Java.xml"/>
94
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="JScript" definitionPath="~/Languages/Lexers/ActiproSoftware.JScript.xml"/>
95
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="Lua" definitionPath="~/Languages/Lexers/ActiproSoftware.Lua.xml"/>
96
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="MSIL" definitionPath="~/Languages/Lexers/ActiproSoftware.MSIL.xml"/>
97
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="Pascal" definitionPath="~/Languages/Lexers/ActiproSoftware.Pascal.xml"/>
98
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="Perl" definitionPath="~/Languages/Lexers/ActiproSoftware.Perl.xml"/>
99
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="PHP" definitionPath="~/Languages/Lexers/ActiproSoftware.PHP.xml"/>
100
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="PowerShell" definitionPath="~/Languages/Lexers/ActiproSoftware.PowerShell.xml"/>
101
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="Python" definitionPath="~/Languages/Lexers/ActiproSoftware.Python.xml"/>
102
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="SQL" definitionPath="~/Languages/Lexers/ActiproSoftware.SQL.xml"/>
103
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="VB.NET" definitionPath="~/Languages/Lexers/ActiproSoftware.VBDotNet.xml"/>
104
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="VBScript" definitionPath="~/Languages/Lexers/ActiproSoftware.VBScript.xml"/>
105
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="XAML" definitionPath="~/Languages/Lexers/ActiproSoftware.XAML.xml"/>
106
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="XML" definitionPath="~/Languages/Lexers/ActiproSoftware.XML.xml"/>
107
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</languages>
108
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<lineNumberMargin foreColor="Teal" paddingCharacter=" " visible="true"/>
109
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<outlining enabled="true" imagesPath="~/Images/OutliningIndicators/"/>
110
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<spacesInTabs count="4"/>
111
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</codeHighlighter>
112
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
113
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</configuration>
Copy高亮组件的 Languages/Lexers、Images/OutliningIndicators 目录到discuz的指定目录
在discuz的编辑器文件 editor/editor.js,在function discuzcode(cmd, arg)函数中if else组里添加处理insertcode的代码
if (cmd == "insertcode")
{
window.open('../InsertCode.aspx', null, 'height=500, width=600, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no');
}
修改discuz编辑器文件 editor/cp_editor.htm 在插入图片后变添加插入代码的命令
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<a id="posteditor_cmd_insertcode">插入代码</a>
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
现在,discuz的blog里就有插入高亮代码的功能了。
cnblogs的代码高亮功能是通过一个共享软件实现的,可以到以下网址下载使用 http://www.actiprosoftware.com/Download/Freeware.aspx
此软件的Api很简单,就是一个Asp.net的控件。可以在网页上输出高亮显示的代码。但我们不想让高亮代码在网页上输出,而是插入到文章中。可以对discuz自带的Editor进行改造,以达到响应的功能。
首先将 ActiproSoftware.CodeHighlighter.Net20.dll、ActiproSoftware.Shared.Net20.dll、CodeHighlighterTest.dll Copy到discuz的bin目录。然后在discuz的页面文件价(aspx/1)下添加InsertCode.aspx文件,内容如下
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<%@ Page Language="C#" %>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<%@ Import Namespace="ActiproSoftware.CodeHighlighter" %>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<%@ Import Namespace="System.Reflection" %>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<script runat="server">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
protected string ReturnCode;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
protected override void OnLoad(EventArgs e)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
if (!IsPostBack)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif)
...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//从配置文件中获取支持的语言列表
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
CodeHighlighterConfiguration config = (CodeHighlighterConfiguration)ConfigurationManager.GetSection("codeHighlighter");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
string[] keys = new string[config.LanguageConfigs.Keys.Count];
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
config.LanguageConfigs.Keys.CopyTo(keys, 0);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
Array.Sort(keys);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
foreach (string key in keys)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif)
...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
LanguageDropDownList.Items.Add(key);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//将默认语言设置为C#
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
LanguageDropDownList.SelectedIndex = LanguageDropDownList.Items.IndexOf(LanguageDropDownList.Items.FindByText("C#"));
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
base.OnLoad(e);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
protected void Insert_Click(object sender, EventArgs e)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//初始化控件
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ActiproSoftware.CodeHighlighter.CodeHighlighter ch = new ActiproSoftware.CodeHighlighter.CodeHighlighter();
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ch.LanguageKey = LanguageDropDownList.SelectedValue;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ch.Text = Code.Text;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ch.Page = this;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
Type t = ch.GetType();
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//利用反射获取高亮显示的代码
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
MethodInfo method = t.GetMethod("a", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
method.Invoke(ch, null);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
FieldInfo field = t.GetField("i", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ReturnCode = (string)field.GetValue(ch);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//将代码放入 pre 标签中以保持格式,并输出到页面显示
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ReturnCode = JStringEncode("<pre style='background-color:#eeeeee;font-size:13px;BORDER:1px solid #CCCCCC;PADDING-RIGHT: 5px;PADDING-BOTTOM: 4px;PADDING-left: 4px;PADDING-TOP: 4px;WIDTH: 98%;word-break:break-all'>" + ReturnCode + "</pre>");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ReturnPanel.Visible = true;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
/**//// <summary>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
/// 替换掉字符串中的特殊字符,如把 " 替换成 "
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
/// </summary>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
/// <param name="str"></param>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
/// <returns></returns>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
public static string JStringEncode( string str )
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
if( str == null )
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif)
...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
return string.Empty;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//替换反斜杠
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
str = str.Replace( @"", @"/" );
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//替换回车
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
str = str.Replace( " ", @" " );
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
str = str.Replace( " ", @" " );
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
//替换 " 号
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
str = str.Replace( """, "/"" );
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
return str;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</script>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<html xmlns="http://www.w3.org/1999/xhtml">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<head runat="server">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<title>插入源代码</title>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</head>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<body>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<form id="form1" runat="server">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<div>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<table id="Table1" class="tb" cellspacing="0" cellpadding="3" border="0">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<tr>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<th align="right" style="width: 80px;">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
编程语言:</th>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<td>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<asp:DropDownList ID="LanguageDropDownList" runat="server" Width="100px">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</asp:DropDownList></td>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</tr>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<tr>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<th valign="top" align="right">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
代码:</th>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<td>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<asp:TextBox ID="Code" runat="server" Height="200px" TextMode="MultiLine" Width="500px"></asp:TextBox></td>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</tr>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<tr>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<td>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</td>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<td>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<asp:Button ID="Insert" runat="server" OnClick="Insert_Click" Text="确定" /> <input
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
onclick="return window.close()" type="button" value="关闭"></td>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</tr>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</table>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</div>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<asp:Panel ID="ReturnPanel" runat="server" Visible="false">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<script language="javascript">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
window.opener.insertText("<% = ReturnCode %>");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
window.close();
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</script>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</asp:Panel>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</form>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</body>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</html>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
然后修改discuz的webconfig,如下所示
1
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<?xml version="1.0" encoding="utf-8" ?>
2
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<configuration>
3
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<configSections>
4
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<section name="codeHighlighter" requirePermission="false" type="ActiproSoftware.CodeHighlighter.CodeHighlighterConfigurationSectionHandler, ActiproSoftware.CodeHighlighter.Net20"/>
5
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</configSections>
6
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<system.web>
8
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<compilation
10
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
defaultLanguage="c#"
11
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
debug="false"
12
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/>
13
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<authorization>
15
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<allow users="*" /> <!-- 允许所有用户 -->
16
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</authorization>
17
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<trace
19
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
enabled="false"
20
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
requestLimit="10"
21
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
pageOutput="false"
22
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
traceMode="SortByTime"
23
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
localOnly="true"
24
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/>
25
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
26
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<!-- 以下为Discuz!NT相关的一些系统设置, 如果有疑问, 请访问 http://nt.discuz.net/config 获得更详细的说明
27
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
-->
28
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
29
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
30
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
31
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<!-- 注意:此节设置错误信息的显示
32
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
33
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
"On" 始终显示自定义(友好的)信息。
34
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
"Off" 始终显示详细的 ASP.NET 错误信息。
35
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
"RemoteOnly" 只对不在本地 Web 服务器上运行的
36
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
-->
37
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<customErrors
38
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
mode="RemoteOnly"
39
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/>
40
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
41
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<!-- 注意:此节设置全球化,Discuz!NT由此支持多语言。
42
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
-->
43
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<globalization
44
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
requestEncoding="utf-8"
45
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
responseEncoding="utf-8"
46
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
fileEncoding="utf-8"
47
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/>
48
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
49
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<!-- 注意:此节设置是否使用ASP.net表单安全验证,Discuz!NT使用自己的验证。
50
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
-->
51
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<pages
52
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
validateRequest="false"
53
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
enableEventValidation="false"
54
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
enableViewStateMac="false"
55
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
viewStateEncryptionMode ="Never"
56
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/>
57
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
58
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<!-- 注意:此节设置由Discuz!NT接管http请求。不会干涉对非Discuz!NT论坛路径下的请求。
59
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
-->
60
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<httpModules>
61
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<add type="Discuz.Forum.HttpModule, Discuz.Forum" name="HttpModule" />
62
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</httpModules>
63
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
64
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<xhtmlConformance mode="Legacy"/>
65
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
66
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<httpRuntime maxRequestLength="2097151" executionTimeout="3600"/>
67
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
68
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<webServices>
69
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<protocols>
70
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<add name="HttpGet" />
71
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<add name="HttpPost"/>
72
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</protocols>
73
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</webServices>
74
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
75
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
76
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</system.web>
77
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
78
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<codeHighlighter>
79
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<cache languageTimeout="3"/>
80
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<keywordLinking enabled="true" target="_blank" defaultKeywordCollectionKey="ActiproKeywords">
81
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<keywordCollection key="ActiproKeywords">
82
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<explicitKeyword tokenKey="IdentifierToken" patternValue="Actipro" url="http://www.actiprosoftware.com" caseSensitive="false"/>
83
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<explicitKeyword tokenKey="IdentifierToken" patternValue="CodeHighlighter" url="http://www.codehighlighter.com" caseSensitive="false"/>
84
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</keywordCollection>
85
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</keywordLinking>
86
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<languages>
87
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="Assembly" definitionPath="~/Languages/Lexers/ActiproSoftware.Assembly.xml"/>
88
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="BatchFile" definitionPath="~/Languages/Lexers/ActiproSoftware.BatchFile.xml"/>
89
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="C#" definitionPath="~/Languages/Lexers/ActiproSoftware.CSharp.xml"/>
90
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="CSS" definitionPath="~/Languages/Lexers/ActiproSoftware.CSS.xml"/>
91
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="HTML" definitionPath="~/Languages/Lexers/ActiproSoftware.HTML.xml"/>
92
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="INIFile" definitionPath="~/Languages/Lexers/ActiproSoftware.INIFile.xml"/>
93
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="Java" definitionPath="~/Languages/Lexers/ActiproSoftware.Java.xml"/>
94
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="JScript" definitionPath="~/Languages/Lexers/ActiproSoftware.JScript.xml"/>
95
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="Lua" definitionPath="~/Languages/Lexers/ActiproSoftware.Lua.xml"/>
96
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="MSIL" definitionPath="~/Languages/Lexers/ActiproSoftware.MSIL.xml"/>
97
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="Pascal" definitionPath="~/Languages/Lexers/ActiproSoftware.Pascal.xml"/>
98
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="Perl" definitionPath="~/Languages/Lexers/ActiproSoftware.Perl.xml"/>
99
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="PHP" definitionPath="~/Languages/Lexers/ActiproSoftware.PHP.xml"/>
100
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="PowerShell" definitionPath="~/Languages/Lexers/ActiproSoftware.PowerShell.xml"/>
101
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="Python" definitionPath="~/Languages/Lexers/ActiproSoftware.Python.xml"/>
102
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="SQL" definitionPath="~/Languages/Lexers/ActiproSoftware.SQL.xml"/>
103
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="VB.NET" definitionPath="~/Languages/Lexers/ActiproSoftware.VBDotNet.xml"/>
104
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="VBScript" definitionPath="~/Languages/Lexers/ActiproSoftware.VBScript.xml"/>
105
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="XAML" definitionPath="~/Languages/Lexers/ActiproSoftware.XAML.xml"/>
106
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<language key="XML" definitionPath="~/Languages/Lexers/ActiproSoftware.XML.xml"/>
107
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</languages>
108
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<lineNumberMargin foreColor="Teal" paddingCharacter=" " visible="true"/>
109
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<outlining enabled="true" imagesPath="~/Images/OutliningIndicators/"/>
110
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<spacesInTabs count="4"/>
111
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</codeHighlighter>
112
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
113
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</configuration>
Copy高亮组件的 Languages/Lexers、Images/OutliningIndicators 目录到discuz的指定目录
在discuz的编辑器文件 editor/editor.js,在function discuzcode(cmd, arg)函数中if else组里添加处理insertcode的代码
if (cmd == "insertcode")
{
window.open('../InsertCode.aspx', null, 'height=500, width=600, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no');
}
修改discuz编辑器文件 editor/cp_editor.htm 在插入图片后变添加插入代码的命令
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<a id="posteditor_cmd_insertcode">插入代码</a>
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
现在,discuz的blog里就有插入高亮代码的功能了。
相关文章推荐
- 为论坛和Blog添加代码高亮显示的功能
- ckeditor添加代码插入功能及高亮显示(插件)
- 给CuteEditor5增加了高亮代码显示功能
- 最全Pycharm教程(23)——Pycharm编辑器功能之代码高亮显示及错误提示机制
- 如何在启用SharePoint浏览器功能的InfoPath 表单中添加托管代码以动态地加载并显示图片
- 博客园_插入代码(推荐)_按钮功能实现_代码高亮显示
- [装载]给CuteEditor5增加了高亮代码显示功能(C#版)
- Visual Assist X添加默认包含路径+支持VS2010高亮显示CUDA代码(Windows 7)
- 给CuteEditor5增加了高亮代码显示功能(C#版)
- 给CuteEditor5增加了高亮代码显示功能(C#版)
- 最全Pycharm教程(23)——Pycharm编辑器功能之代码高亮显示及错误提示机制
- 论坛源码推荐(9月19日):iOS 8新功能示例代码,为UILabel添加动画计数功能
- 使用prettify为编辑器xhEditor添加代码(code)高亮显示
- 【前端】向blog或网站中添加语法高亮显示代码方法总结
- CuteEditor6加“高亮代码显示功能” 碰到的一个问题
- 使用prismjs为网站添加代码高亮功能
- 给CuteEditor5增加了高亮代码显示功能(C#版)
- 【前端】向blog或网站中添加语法高亮显示代码方法总结
- phpcms自带编辑器添加代码高亮功能
- 给CuteEditor5增加了高亮代码显示功能(C#版)