打印

Dfive代码高亮 For Discuz! 6.1

本主题由 King.sEe 于 2008-10-20 17:40 分类

Dfive代码高亮 For Discuz! 6.1

一、插件相关信息
插件名称 Dfive代码高亮 For Discuz! 6.1
适用版本 Discuz!6.1
语言编码 不限
插件作者 King.sEe
版权所属 Dfive Team【bbs.dfive.com.cn
支持网站 http://bbs.dfive.com.cn

插件特性:
1.一款基于JavaScript利用正则表达式来解析文本
2.100%在客户端对标签内的代码进行高亮着色,没有服务器的依赖
3.多国语言支持
4.多浏览器支持(IE6/7,Mozilla Firefox,Opera,Safari,Netscape下测试通过)
5.多语法高亮支持(包括:C/C++, C#, CSS, Delphi/Pascal, Java, JavaScript, PHP, Python,Ruby, Sql, VB/VB.net, xml/html/xhtml/xslt)

具体安装:
一./templates/default/discuzcode.htm(修改代码框展现样式)
查找:
复制内容到剪贴板
代码:

function tpl_codedisp($discuzcodes, $code) {
<!--{block return}--><div class="blockcode"><em onclick="copycode($('code$discuzcodes[codecount]'));">{lang discuzcode_copyclipboard}</em><h5>{lang discuzcode_code}:</h5><code id="code$discuzcodes[codecount]">$code</code></div><!--{/block}-->
<!--{eval return $return;}-->
<!--{eval
}
替换为:
复制内容到剪贴板
代码:

function tpl_codedisp($discuzcodes, $code, $lang) {
if ($lang):
}-->
<!--{block return}--><div class="blockcode"><h5>The $lang code:</h5><div id="code$discuzcodes[codecount]"><pre name="code" class="$lang">$code</pre></div></div><br><!--{/block}-->
<!--{eval return $return;}-->
<!--{eval
else:
}-->
<!--{block return}--><div class="blockcode"><em onclick="copycode($('code$discuzcodes[codecount]'));">{lang discuzcode_copyclipboard}</em><h5>{lang discuzcode_code}:</h5><code id="code$discuzcodes[codecount]">$code</code></div><!--{/block}-->
<!--{eval return $return;}-->
<!--{eval
endif;
}-->
<!--{eval
}
二./templates/default/viewthread.htm (增加dp.SyntaxHighlighter脚本)
查找:
复制内容到剪贴板
代码:

{subtemplate header}
在其下添加:
复制内容到剪贴板
代码:
<link href="plugins/dp.SyntaxHighlighter/Styles/SyntaxHighlighter.css" type="text/css" rel="stylesheet" />
<script src="plugins/dp.SyntaxHighlighter/Scripts/shCore.js" type="text/javascript"></script>
<script class="javascript">
dp.SyntaxHighlighter.ClipboardSwf = 'plugins/dp.SyntaxHighlighter/Scripts/clipboard.swf';
</script>
查找:
复制内容到剪贴板
代码:

{subtemplate footer}
在其上添加:
复制内容到剪贴板
代码:

<script class="javascript">
dp.SyntaxHighlighter.ClipboardSwf = 'plugins/dp.SyntaxHighlighter/Scripts/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
</script>
三./include/discuzcode.func.php(修改代码语法标签的解析)
查找:
复制内容到剪贴板
代码:

function codedisp($code) {
global $discuzcodes;
$discuzcodes['pcodecount']++;
$code = htmlspecialchars(str_replace('\\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "\\1", $code)));
$discuzcodes['codehtml'][$discuzcodes['pcodecount']] = tpl_codedisp($discuzcodes, $code);
$discuzcodes['codecount']++;
return "[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]";
}
替换为:
复制内容到剪贴板
代码:

function codedisp($code) {
global $discuzcodes;
$discuzcodes['pcodecount']++;
$code = htmlspecialchars(str_replace('\\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "\\1", $code)));
$discuzcodes['codehtml'][$discuzcodes['pcodecount']] = tpl_codedisp($discuzcodes, $code, '');
$discuzcodes['codecount']++;
return "[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]";
}
function codedpdisp($code, $lang) {
global $discuzcodes;
$discuzcodes['pcodecount']++;
$code = htmlspecialchars(str_replace('\\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "\\1", $code)));
$discuzcodes['codehtml'][$discuzcodes['pcodecount']] = tpl_codedisp($discuzcodes, $code, $lang);
$discuzcodes['codecount']++;
return "[@DISCUZ_CODEDP_$discuzcodes[pcodecount]@]";
}
查找:
复制内容到剪贴板
代码:
$message = preg_replace("/\s*\[code\](.+?)\[\/code\]\s*/ies", "codedisp('\\1')", $message);
}
替换为:
复制内容到剪贴板
代码:

$message = preg_replace("/\s*\[code=\"(php|xhtml|sql|js|css|xml|html|jscript|javascript|cpp|c|c++|c#|c-sharp|csharp|delphi|pascal|java|py|python|ruby|rails|ror|vb|vb.net|xslt){1}\"\](.+?)\[\/code\]\s*/ies", "codedpdisp('\\2', '\\1')", $message);
$message = preg_replace("/\s*\[code\](.+?)\[\/code\]\s*/ies", "codedisp('\\1')", $message);
}
查找:
复制内容到剪贴板
代码:

return $htmlon || $allowhtml ? $message : nl2br(str_replace(array("\t", ' ', ' '), array(' ', ' ', ' '), $message));
替换为:
复制内容到剪贴板
代码:

$message = $htmlon || $allowhtml ? $message : nl2br(str_replace(array("\t", ' ', ' '), array(' ', ' ', ' '), $message));

for($i = 0; $i <= $discuzcodes['pcodecount']; $i++) {
$message = str_replace("[@DISCUZ_CODEDP_$i@]", $discuzcodes['codehtml'][$i], $message);
}
return $message;
四./include/javascript/editor.js(修改代码语法标签的插入命令)
查找:
复制内容到剪贴板
代码:

str += lang['post_discuzcode_' + cmd] + ':<br /><textarea id="' + ctrlid + '_param_1" cols="50" rows="5"></textarea>';
下面添加:
复制内容到剪贴板
代码:

if (cmd == 'code') {
str += '<br />Lang: <select id="' + ctrlid + '_param_2">'
+ '<option value="">请选择语言</option>'
+ '<option value="php">php</option>'
+ '<option value="xhtml">xhtml</option>'
+ '<option value="sql">sql</option>'
+ '<option value="js">js</option>'
+ '<option value="css">css</option>'
+ '<option value="xml">xml</option>'
+ '<option value="html">html</option>'
+ '<option value="jscript">jscript</option>'
+ '<option value="javascript">javascript</option>'
+ '<option value="cpp">cpp</option>'
+ '<option value="c">c</option>'
+ '<option value="c++">c++</option>'
+ '<option value="c#">c#</option>'
+ '<option value="c-sharp">c-sharp</option>'
+ '<option value="csharp">csharp</option>'
+ '<option value="delphi">delphi</option>'
+ '<option value="pascal">pascal</option>'
+ '<option value="java">java</option>'
+ '<option value="py">py</option>'
+ '<option value="python">python</option>'
+ '<option value="ruby">ruby</option>'
+ '<option value="rails">rails</option>'
+ '<option value="ror">ror</option>'
+ '<option value="vb">vb</option>'
+ '<option value="vb.net">vb.net</option>'
+ '<option value="xslt">xslt</option>'
+ '</select>';
}
查找:
复制内容到剪贴板
代码:

if(wysiwyg) {
if(cmd == 'code') {
text = preg_replace(['<', '>'], ['&lt;', '&gt;'], text);
}
text = text.replace(/\r?\n/g, '<br />');
}
下面添加:
复制内容到剪贴板
代码:

if (cmd == 'code' && $(ctrlid + '_param_2').value != '') {
opentag = '[code="' + $(ctrlid + '_param_2').value + '"]';
text = "\n" + text + "\n";
}
五.上传upload目录中的文件

shCore.js 文件中包含有中文.因此
GBK论坛 请将plugins\dp.SyntaxHighlighter\Scripts\shCore.js另存为ANSI
UTF-8 论坛 请将plugins\dp.SyntaxHighlighter\Scripts\shCore.js另存为UTF-8

如果不会转换的upload目录外我已经存有两个已经转换好的shCore.js
附件: 您所在的用户组无法下载或查看附件
路漫漫其修远兮,吾将上下而求索

TOP

狒狒

TOP

代码:
 <?
举例而已
?> 

怎么不举个例子啊

TOP

这个东西确实是好东西啊
不过好像有点小问题,你看下我发的代码上面那几个选择

TOP

可能是对一些浏览器兼容性还不是很好
路漫漫其修远兮,吾将上下而求索

TOP

我试了下在我的论坛上,不得行啊!!!

TOP

Processed in 0.055580 second(s), 8 queries.|