Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[发布] 【eMule[电驴]链接的发布及按钮的添加】For 5.5(5.14修正空格问题)[版主安装测试通过]

[复制链接]
sospost 发表于 2007-5-10 23:41:33 | 显示全部楼层 |阅读模式
本插件由版主sakurakawaii于07年5月11日16:01分
在Windows XP Discuz!5.5.0标准模版 IE6 Mysql4.1下测试安装无错
本测试仅代表此插件安装无错,不包括今后长期使用中可能出现的问题


《eMule[电驴]链接的发布及按钮的添加》For Discuz!5.5.0(真正完美无错版)

☆★☆声明:版权属于Discuz原有作者!功能仿照VeryCD。如需转载,请注明转自Discuz官方!

#############################################
插件名称:[eMule]电驴电骡链接的发布及按钮的添加 For Discuz!5.5.0(真正完美无错版)
适用版本:Discuz!5.5.0 GBK
作  者:未知
修 改 者:sakurakawaii   sospost   小铭铭
最后更新:2007年5月14日
数据结构:未修改数据库
演示地址:http://www.007mov.com/viewthread.php?tid=26079
特别说明:如果您觉着这个作品侵犯了您的权利请您和我联系
修正:1.原版本复制无效问题 2.表格少量美化 3.空格问题

5月14日之前安装的请参照7楼重新修改一步
#############################################

1.修改 ./include/discuzcode.func.php

查找:
  1. $message = preg_replace("/\s*\[code\](.+?)\[\/code\]\s*/ies", "codedisp('\\1')", $message);
复制代码
在下面添加:
  1. $message = preg_replace("/\s*\[emule\](.+?)\[\/emule\]\s*/ies", "emu('\\1')", $message);
复制代码
查找:
  1. return $htmlon || $allowhtml ? $message : nl2br(str_replace(array("\t", '   ', '  '), array('        ', '   ', '  '), $message));
复制代码
替换为:
  1. $message = $htmlon || $allowhtml ? $message : nl2br(str_replace(array("\t", ' ', ' '), array(' ', ' ', ' '), $message));
  2.              return str_replace("/<br />","/\n",$message);
复制代码
查找:
  1. "/\[url=(https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|ed2k){1}:\/\/([^\["']+?)\](.+?)\[\/url\]/is",
复制代码
替换为:
  1. "/\[url=(https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp){1}:\/\/([^\["']+?)\](.+?)\[\/url\]/is",
复制代码
查找:
  1. ?>
复制代码
在上面添加:
  1. function emu($code) {
  2.         global $discuzcodes;
  3.         $discuzcodes['pcodecount']++;
  4.         $codecount=$discuzcodes['pcodecount'];
  5.         $code = htmlspecialchars(str_replace('\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "\\1", $code)));
  6.         $view = '';$temp = $total = 0;
  7.         $searcharray = explode("\n",$code);
  8.            $view = "<table width=90% align=center cellspacing=1 cellpadding=5 class=tableborder><tr><td colspan=2 align=center class=header>下面是eMule专用的下载链接,您必须<a href='http://www.emule.org.cn/download/' target='_blank'>安装eMule</a>才能点击下载</td></tr>";
  9.   foreach($searcharray as $emule) {
  10.                 if($emule!='' && eregi("^ed2k:\/\/",$emule)){
  11.                         $temp++;
  12.                         $emule = dhtmlspecialchars(trim($emule));
  13.                         $emule_array = explode("|",$emule);
  14.                         $total += $emule_array[3];
  15.                         $totalper = esizecount($emule_array[3]);
  16.                         $view.="<tr class=category><td class=smalltxt width=90%><input type="checkbox" name="em$codecount" value="$emule" onclick="em_size('em$codecount');" checked="checked"><a href="$emule"><script language="javascript">document.write(unescape(decodeURIComponent("$emule_array[2]")));</script></a></td><td class=smalltxt align=center>$totalper</td></tr>";
  17.                 }
  18.         }
  19.   $total=esizecount($total);
  20.         if($temp>0){
  21.                  $view.="<tr><td align=left><input type="checkbox" id="checkall_em$codecount" onclick="echeckAll('em$codecount',this.checked)" checked="checked"/> <label for="checkall_em$codecount">全选</label> <input type="button" value="下载选中的文件" onclick="download('em$codecount',0,1)"> <input type="button" value="复制选中的链接" onclick="ed2kcopy('em$codecount')"><div id="ed2kcopy_em$codecount" style="position:absolute;height:0px;width:0px;overflow:hidden;"></div></td><td class=smalltxt align=center id="size_em$codecount">$total</div></table><br>";
  22.         }
  23.         $discuzcodes['codehtml'][$discuzcodes['pcodecount']] = "<div class="eMuleMain">$view</div></div>";
  24.         $discuzcodes['codecount']++;
  25.         return "[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]";
  26. }


  27. function esizecount($filesize) {
  28.         if($filesize >= 1073741824) {
  29.                 $filesize = round($filesize / 1073741824 * 100) / 100 . ' G';
  30.         } elseif($filesize >= 1048576) {
  31.                 $filesize = round($filesize / 1048576 * 100) / 100 . ' M';
  32.         } elseif($filesize >= 1024) {
  33.                 $filesize = round($filesize / 1024 * 100) / 100 . ' K';
  34.         } else {
  35.                 $filesize = $filesize . ' bytes';
  36.         }
  37.         return $filesize;
  38. }
复制代码
2.修改./include/javascript/common.js

在结尾添加:
  1. function echeckAll(str,checked) {
  2. var a = document.getElementsByName(str);
  3. var n = a.length;

  4. for (var i = 0; i < n; i++) {
  5. a[i].checked = checked;
  6. }
  7. em_size(str);
  8. }

  9. function download(str, i, first) {
  10. var a = document.getElementsByName(str);
  11. var n = a.length;

  12. for (var i = i; i < n; i++) {
  13. if(a[i].checked) {
  14. window.location=a[i].value;
  15. if (first)
  16. timeout = 6000;
  17. else
  18. timeout = 500;
  19. i++;
  20. window.setTimeout("download('"+str+"', "+i+", 0)", timeout);
  21. break;
  22. }
  23. }

  24. }

  25. function ed2kcopy(str) {
  26. var a = document.getElementsByName(str);
  27. var n = a.length;
  28. var ed2kcopy = document.getElementById("ed2kcopy_"+str)
  29. ed2kcopy.innerHTML = ""
  30. for (var i = 0; i < n; i++) {
  31. if(a[i].checked)
  32. {
  33. ed2kcopy.innerHTML += a[i].value;
  34. ed2kcopy.innerHTML += "<br />";
  35. }
  36. }
  37. var rng = document.body.createTextRange();
  38. rng.moveToElementText(ed2kcopy)
  39. rng.scrollIntoView();
  40. rng.select();
  41. rng.execCommand("Copy");
  42. rng.collapse(false);
  43. }

  44. function em_size(str) {
  45. var a = document.getElementsByName(str);
  46. var n = a.length;
  47. try {
  48. var input_checkall = document.getElementById("checkall_"+str);
  49. var size = 0;
  50. input_checkall.checked = true ;
  51. for (var i=0; i < n; i++) {
  52. if (a[i].checked) {
  53. var piecesArray = a[i].value.split( "|" );
  54. size += piecesArray[3]*1;
  55. } else {
  56. input_checkall.checked = false;
  57. }
  58. }
  59. test = document.getElementById("size_"+str);
  60. test.innerHTML = gen_size(size, 3, 2);
  61. } catch (e) {

  62. }
  63. }

  64. function gen_size(val, li, sepa ) {
  65. sep = Math.pow(10, sepa); //小数点后的位数
  66. li = Math.pow(10, li); //开始截断的长度
  67. retval = val;
  68. unit = 'Bytes';
  69. if (val >= li*1000000000) {
  70. val = Math.round( val / (1099511627776/sep) ) / sep;
  71. unit = 'TB';
  72. } else if (val >= li*1000000) {
  73. val = Math.round( val / (1073741824/sep) ) / sep;
  74. unit = 'GB';
  75. } else if (val >= li*1000) {
  76. val = Math.round( val / (1048576/sep) ) / sep;
  77. unit = 'MB';
  78. } else if (val >= li) {
  79. val = Math.round( val / (1024/sep) ) / sep;
  80. unit = 'KB';
  81. }
  82. return val + unit;
  83. }
复制代码
3.后台按钮添加

后台:Discuz! 代码
中新增标签:“emule”
图标文件"bb_emule.gif"
将按钮的图片bb_emule.gif,上传到./images/common/下



4、修改 ./include/javascript/bbcode.js

在最下方增加:
  1. function bb_emule() {
  2. if (helpmode){
  3. alert('ed2k标记\\n使用ed2k标记,可以使输入的ed2k地址以超链接的形式在帖子中显示.\\n使用方法:\\n [ed2k]ed2k下载地址[/ed2k]');
  4. } else if (document.selection && document.selection.type == "Text") {
  5. var range = document.selection.createRange();
  6. range.text = "[emule]" + range.text + "[/emule]";
  7. } else if (advmode) {
  8. AddTxt="[emule] [/emule]";
  9. AddText(AddTxt);
  10. } else {
  11. txt=prompt('ed2k链接',"ed2k://");
  12. if (txt!=null) {
  13. AddTxt="\r[emule]"+txt;
  14. AddText(AddTxt);
  15. AddText("[/emule]");
  16. }
  17. }
  18. }
复制代码
发贴格式为:

[emule]ed2k://
ed2k://
ed2K://
[/emule]
注意是一个链接一换行

如果你安装还有问题的话可以PM我来帮你!

[ 本帖最后由 sakurakawaii 于 2007-5-14 13:57 编辑 ]

评分

1

查看全部评分

 楼主| sospost 发表于 2007-5-10 23:42:17 | 显示全部楼层
沙发再次感谢sakurakawaii 斑竹!你真的很热心!
回复

使用道具 举报

尐強 发表于 2007-5-10 23:47:48 | 显示全部楼层
演示请看签名站!!!!!!!!!
回复

使用道具 举报

天使别哭 发表于 2007-5-11 18:19:21 | 显示全部楼层
回复

使用道具 举报

sakurakawaii 发表于 2007-5-11 18:21:01 | 显示全部楼层
那帖有错。
回复

使用道具 举报

天使别哭 发表于 2007-5-11 18:25:29 | 显示全部楼层
好,偶去试试这个
回复

使用道具 举报

小铭铭 发表于 2007-5-11 18:25:46 | 显示全部楼层
7.30日在次更新第一步最下面文件内容,就解决了空格及折行问题
1.修改 ./include/discuzcode.func.php

查找:

  1. function emu($code) {
  2.         global $discuzcodes;
  3.         $discuzcodes['pcodecount']++;
  4.         $codecount=$discuzcodes['pcodecount'];
  5.         $code = htmlspecialchars(str_replace('\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "\\1", $code)));
  6.         $view = '';$temp = $total = 0;
  7.         $searcharray = explode("\n",$code);
  8.            $view = "<br><br><table width=80% align=center cellspacing=1 cellpadding=5 class=tableborder><tr><td colspan=2 align=center class=header>下面是eMule专用的下载链接,您必须<a href='http://www.emule.org.cn/download/' target='_blank'>安装eMule</a>才能点击下载</td></tr>";
  9.   foreach($searcharray as $emule) {
  10.                 if($emule!='' && eregi("^ed2k:\/\/",$emule)){
  11.                         $temp++;
  12.                         $emule = dhtmlspecialchars(trim($emule));
  13.                         $emule_array = explode("|",$emule);
  14.                         $total += $emule_array[3];
  15.                         $totalper = esizecount($emule_array[3]);
  16.                         $view.="<tr class=category><td class=smalltxt width=100%><input type="checkbox" name="em$codecount" value="$emule" onclick="em_size('em$codecount');" checked="checked"><a href="$emule"><script language="javascript">document.write(unescape(decodeURIComponent("$emule_array[2]")));</script></a></td><td class=smalltxt align=center>$totalper</td></tr>";
  17.                 }
  18.         }
  19.   $total=esizecount($total);
  20.         if($temp>0){
  21.                  $view.="<tr><td align=left><input type="checkbox" id="checkall_em$codecount" onclick="echeckAll('em$codecount',this.checked)" checked="checked"/> <label for="checkall_em$codecount">全选</label> <input type="button" value="下载选中的文件" onclick="download('em$codecount',0,1)"> <input type="button" value="复制选中的链接" onclick="ed2kcopy('em$codecount')"><div id="ed2kcopy_em$codecount" style="position:absolute;height:0px;width:0px;overflow:hidden;"></div></td><td class=smalltxt align=center id="size_em$codecount">$total</div></table><br>";
  22.         }
  23.         $discuzcodes['codehtml'][$discuzcodes['pcodecount']] = "<div class="eMuleMain">$view</div></div>";
  24.         $discuzcodes['codecount']++;
  25.         return "[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]";
  26. }


  27. function esizecount($filesize) {
  28.         if($filesize >= 1073741824) {
  29.                 $filesize = round($filesize / 1073741824 * 100) / 100 . ' G';
  30.         } elseif($filesize >= 1048576) {
  31.                 $filesize = round($filesize / 1048576 * 100) / 100 . ' M';
  32.         } elseif($filesize >= 1024) {
  33.                 $filesize = round($filesize / 1024 * 100) / 100 . ' K';
  34.         } else {
  35.                 $filesize = $filesize . ' bytes';
  36.         }
  37.         return $filesize;
  38. }
复制代码


替换为

  1. function emu($code) {
  2.         global $discuzcodes;
  3.         $discuzcodes['pcodecount']++;
  4.         $codecount=$discuzcodes['pcodecount'];
  5.         $code = htmlspecialchars(str_replace('\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "\\1", $code)));
  6.         $view = '';$temp = $total = 0;
  7.         $searcharray = explode("\n",$code);
  8.            $view = "<table width=90% align=center cellspacing=1 cellpadding=5 class=tableborder><tr><td colspan=2 align=center class=header>下面是eMule专用的下载链接,您必须<a href='http://www.emule.org.cn/download/' target='_blank'>安装eMule</a>才能点击下载</td></tr>";
  9.   foreach($searcharray as $emule) {
  10.                 if($emule!='' && eregi("^ed2k:\/\/",$emule)){
  11.                         $temp++;
  12.                         $emule = dhtmlspecialchars(trim($emule));
  13.                         $emule_array = explode("|",$emule);
  14.                         $total += $emule_array[3];
  15.                         $totalper = esizecount($emule_array[3]);
  16.                         $view.="<tr class=category><td class=smalltxt width=90%><input type="checkbox" name="em$codecount" value="$emule" onclick="em_size('em$codecount');" checked="checked"><a href="$emule"><script language="javascript">document.write(unescape(decodeURIComponent("$emule_array[2]")));</script></a></td><td class=smalltxt align=center>$totalper</td></tr>";
  17.                 }
  18.         }
  19.   $total=esizecount($total);
  20.         if($temp>0){
  21.                  $view.="<tr><td align=left><input type="checkbox" id="checkall_em$codecount" onclick="echeckAll('em$codecount',this.checked)" checked="checked"/> <label for="checkall_em$codecount">全选</label> <input type="button" value="下载选中的文件" onclick="download('em$codecount',0,1)"> <input type="button" value="复制选中的链接" onclick="ed2kcopy('em$codecount')"><div id="ed2kcopy_em$codecount" style="position:absolute;height:0px;width:0px;overflow:hidden;"></div></td><td class=smalltxt align=center id="size_em$codecount">$total</div></table>";
  22.         }
  23.         $discuzcodes['codehtml'][$discuzcodes['pcodecount']] = "<div class="eMuleMain">$view</div>";
  24.         $discuzcodes['codecount']++;
  25.         return "[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]";
  26. }


  27. function esizecount($filesize) {
  28.         if($filesize >= 1073741824) {
  29.                 $filesize = round($filesize / 1073741824 * 100) / 100 . ' G';
  30.         } elseif($filesize >= 1048576) {
  31.                 $filesize = round($filesize / 1048576 * 100) / 100 . ' M';
  32.         } elseif($filesize >= 1024) {
  33.                 $filesize = round($filesize / 1024 * 100) / 100 . ' K';
  34.         } else {
  35.                 $filesize = $filesize . ' bytes';
  36.         }
  37.         return $filesize;
  38. }
复制代码

[ 本帖最后由 小铭铭 于 2007-7-30 19:38 编辑 ]

评分

2

查看全部评分

回复

使用道具 举报

sakurakawaii 发表于 2007-5-11 18:31:10 | 显示全部楼层
全选本来就没问题的吧。。。
回复

使用道具 举报

天使别哭 发表于 2007-5-11 18:39:06 | 显示全部楼层
出错了:
出现文件大小折行
回复

使用道具 举报

 楼主| sospost 发表于 2007-5-11 20:47:34 | 显示全部楼层
给出你的网站地址....我看下先
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-23 16:14 , Processed in 0.031007 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表