发新话题
打印

代码高亮(dp.SyntaxHighlighter) For Discuz! 6.1 beta

代码高亮(dp.SyntaxHighlighter) For Discuz! 6.1 beta

一、插件相关信息
插件名称 代码高亮语法着色插件【dp.SyntaxHighlighter For Discuz!6.1】
适用版本 Discuz!6.1
语言编码 不限  
插件作者 hhyisw@163.com(瓶子.龙)
版权所属 瓶子.龙社区【Www.stksky.com
支持网站 Http://Www.stksky.com
演示地址:
http://www.stksky.com/thread-46313-1-1.html
插件特性:
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)
6.支持"运行代码" (需下载:http://www.stksky.com/plugins/dp ... r/Scripts/shCore.js覆盖plugins/dp.SyntaxHighlighter/Scripts/shCore.js)

修改文件:
1./templates/default/discuzcode.htm(修改代码框展现样式)
2./templates/default/viewthread.htm (增加dp.SyntaxHighlighter脚本)
3./include/discuzcode.func.php(修改代码语法标签的解析)
4./include/javascript/editor.js(修改代码语法标签的插入命令)
具体安装:
一./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]@]";
}
查找:
复制内容到剪贴板
代码:
if($parsetype != 1 && !$bbcodeoff && $allowbbcode && strpos($message, '
') !== FALSE) {
  $message = preg_replace("/\s*\[code\](.+?)\[\/code\]\s*/ies", "codedisp('\\1')", $message);
}
[/code]替换为:
复制内容到剪贴板
代码:
if($parsetype != 1 && !$bbcodeoff && $allowbbcode && strpos($message, '
') !== FALSE) {
  $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);
}
[/code]查找:
复制内容到剪贴板
代码:
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="">Choose Language</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";
            }
五.下载dp.SyntaxHighlighter
http://syntaxhighlighter.googlec ... ghlighter_1.5.1.rar
将其解压到:plugins/目录内
下载http://www.stksky.com/plugins/dp ... r/Scripts/shCore.js 覆盖plugins/dp.SyntaxHighlighter/Scripts/shCore.js文件
shCore.js 文件中包含有中文.因此
GBK论坛 请将shCore.js另存为ANSI
UTF-8 论坛 请将shCore.js另存为UTF-8
附件: 您所在的用户组无法下载或查看附件
空间出租:P4 3.0+1G+RIAD 1 160G+PHP+IIS+MYSQL+MDaemon

QQ:126682182
Email:hhyisw@163.com
Home:http://www.stksky.com

TOP

发新话题