代码改变世界

[原创]Discuz!NT1.1高亮代码插件1.5稳定版!

2007-08-09 13:50  w i n s o n  阅读(931)  评论(0编辑  收藏  举报
Discuz!NT 1.1高亮代码插件FOR .NET2.0
作者:winson
版本:1.5稳定版
支持网站:http://bbs.szblogs.com
功能:
为论坛增加高亮代码显示,类似cnblogs的形式

一、1.5版修复的问题:

        之前发布的版本由于并未做具体的过滤处理,因此只有以牺牲论坛安全性(去掉了HTML过滤)
为前提的条件下使用,同时为了让代码显示,还将论坛的一些UBB代码功能取消了(如在可视化编辑
状态下不能增加换行),就是在代码编辑状态下,会出现很多HTML代码,让人看起来非常乱

        现已对上面问题进行了修复,在完全不影响论坛正常UBB代码和安全性下,也可达到很好的
高亮代码显示效果。因此现在也可以在可视化编辑状态下任意修改或者增加其他页面内容了

        同时也修复了一个小BUG,就是有时发代码帖多时,会出现“存储空间不足,无法完成此操作”
的JS错误,虽然不影响正常使用,但看着也不爽,呵呵

        但最后一点比较遗憾的就是,现在还没办法在编辑状态中显示代码效果,只有发布后才能显示

二、新增功能:

    主要是增加了可记忆上次所选择的代码语言功能,像cnblogs那样,即只要你选择了一个语言后,
下次进来会自动定位到该语言的选中状态

三、安装:

1、全新安装:
1)进入相应的模板,然后修改 _editor 模板

2)、搜索“插入表格”,找到以下代码段:

<td><div class="editor_buttonnormal" id="posteditor_cmd_table" onclick="discuzcode('table')" onMouseOver="buttonContext(this, 'mouseover')" onMouseOut="buttonContext(this, 'mouseout')"><img src="editor/images/table.gif" width="21" height="20" title="插入表格" alt="插入表格" /></div></td>


在其下添加:

<td><div class="editor_buttonnormal" id="posteditor_cmd_wrap0_code" onclick="discuzcode('mycode')" onMouseOver="buttonContext(this, 'mouseover')" onMouseOut="buttonContext(this, 'mouseout')"><img src="editor/images/insertcode.gif" width="21" height="20" title="插入高亮代码" alt="插入高亮代码"></div></td>


3)修改 showtopic模板,在此模板第一行下加入

<%namespace Discuz.Plugin%>


4)提交此模板的修改,然后更新editpost、postreply、posttopic、showtopic四个模板文件,即对这几个模板生成新的页面

5)修改生成好的showtopic.aspx文件,在你模板的目录下,找到

post["message"].ToString().Trim()


改为:

Writer.OutputCode(post["message"].ToString().Trim())


这里需要说明的一点是,我已原此OutputCode方法做了重载,如果你同时安装了LEE的手写板插件,此方法只需再添加一个模板ID的参数即可,具体方法看手写板插件说明吧

6)修改web.config文件,在< configuration >后面添加以下代码:

<!--配置代码高亮插件-->
<configSections>
<section name="codeHighlighter" requirePermission="false" type="ActiproSoftware.CodeHighlighter.CodeHighlighterConfigurationSectionHandler, ActiproSoftware.CodeHighlighter.Net20"/>
</configSections>
<!--定义代码高亮插件-->
<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="BatchFile" definitionPath="~/Languages/Lexers/ActiproSoftware.BatchFile.xml"/>
<language key="C#" definitionPath="~/Languages/Lexers/ActiproSoftware.CSharp.xml"/>
<language key="CSS" definitionPath="~/Languages/Lexers/ActiproSoftware.CSS.xml"/>
<language key="HTML" definitionPath="~/Languages/Lexers/ActiproSoftware.HTML.xml"/>
<language key="INIFile" definitionPath="~/Languages/Lexers/ActiproSoftware.INIFile.xml"/>
<language key="Java" definitionPath="~/Languages/Lexers/ActiproSoftware.Java.xml"/>
<language key="JScript" definitionPath="~/Languages/Lexers/ActiproSoftware.JScript.xml"/>
<language key="Lua" definitionPath="~/Languages/Lexers/ActiproSoftware.Lua.xml"/>
<language key="Pascal" definitionPath="~/Languages/Lexers/ActiproSoftware.Pascal.xml"/>
<language key="Perl" definitionPath="~/Languages/Lexers/ActiproSoftware.Perl.xml"/>
<language key="PHP" definitionPath="~/Languages/Lexers/ActiproSoftware.PHP.xml"/>
<language key="Python" definitionPath="~/Languages/Lexers/ActiproSoftware.Python.xml"/>
<language key="SQL" definitionPath="~/Languages/Lexers/ActiproSoftware.SQL.xml"/>
<language key="VB.NET" definitionPath="~/Languages/Lexers/ActiproSoftware.VBDotNet.xml"/>
<language key="VBScript" definitionPath="~/Languages/Lexers/ActiproSoftware.VBScript.xml"/>
<language key="XML" definitionPath="~/Languages/Lexers/ActiproSoftware.XML.xml"/>
</languages>
<lineNumberMargin foreColor="Teal" paddingCharacter=" " visible="true"/>
<outlining enabled="true" imagesPath="~/Images/OutliningIndicators/"/>
<spacesInTabs count="4"/>
</codeHighlighter>


5)将附件中全新安装目录里的文件均上传到你的论坛目录就OK啦!

2、升级安装:

1)先按上面全新安装的3-5的步骤安装,同时可以删除在_editor模板之前版本所增加的JS代码:

<script type="text/javascript">
var message=document.getElementById('posteditor_textarea').value;
if(message.indexOf("id=bbs.szblogs.com")>0)
document.getElementById(
'iscode').value='1';
</script>


2)恢复原来论坛的安全性,你可将论坛默认的Discuz.ForumPage.dll、bbcode.js复盖你的文件,或者使用我的附件里升级安装目录里的文件

3)将升级安装目录里的文件上传到你的论坛相应目录,安装完成!


另附件还有一个Discuz.Plugin.CodeHighWrite项目,即生成Discuz.Plugin.Write.dll文件的,可自行根据需要修改,有什么问题欢迎到本论坛提出

下载:
https://files.cnblogs.com/winsonet/CodeHigh.rar