AL8 Forum
»
Discuz 4.0 及 4.1 插件發佈
» [原創] 承諾 (21/11更新)
‹‹ 上一主題
|
下一主題 ››
56
1/3
1
2
3
››
標題:
[D4.0 & 4.1]
[原創] 承諾 (21/11更新)
打印
|
推薦
|
訂閱
|
收藏
小康@HK
0027215
頭銜: Moderator
暱稱: 小康
帖子: 1219
精華: 0
積分: 13955 點
現金: 261 元
存款: 1019 元
閱讀權限: 100
註冊: 2005-7-26
來自: HK
狀態: 離線
#1
大
中
小
發表於 2006-8-20 18:18
資料
個人空間
短消息
加為好友
[原創] 承諾 (21/11更新)
插件名稱: 承諾
適用版本: 4.1、(4.0唔知,成功請通知)
作 者: 小康
修 改: viewthread.php、misc.php、commoon.inc.php、discuzcode.func.php、newreply.inc.php、./archiver/include/thread.inc.php、post_bbinsert模版、./include/bbcode.js
用 途: 當會員在發主題時,如把內容使用了『承諾』,內容會被隱藏。如果不是版主或作者,其他會員如要瀏覽隱藏的內容,必須按下"承諾",才可看到內容。而瀏覽過那些隱藏內容後,必須回覆該主題,才可瀏覽論壇的其他地方。
QUOTE:
使用方法:
[Copy to clipboard]
[
-
]
CODE:
[promise]要隱藏的內容[/promise]
17/9:
(_請重新裝第3步_)
21/11:
(_更新第4步_)
1. 升級數據庫:
[Copy to clipboard]
[
-
]
CODE:
ALTER TABLE cdb_members ADD `promise` mediumint(8) unsigned NOT NULL DEFAULT '0';
ALTER TABLE cdb_threads ADD `promiseid` text NOT NULL DEFAULT '';
************************************************************************************
2.修改viewthread.php,找:
[Copy to clipboard]
[
-
]
CODE:
showmessage('thread_nonexistence');
上加:
[Copy to clipboard]
[
-
]
CODE:
if ($promise && $promise == $tid) $db->query("UPDATE {$tablepre}members SET promise='0' WHERE uid='$discuz_uid'");
找:
[Copy to clipboard]
[
-
]
CODE:
showmessage('thread_nopermission', NULL, 'NOPERM');
上加:
[Copy to clipboard]
[
-
]
CODE:
if ($promise && $promise == $tid) $db->query("UPDATE {$tablepre}members SET promise='0' WHERE uid='$discuz_uid'");
************************************************************************************
3. 修改misc.php,找:
[Copy to clipboard]
[
-
]
CODE:
} elseif($action == 'viewthreadmod' && $tid) {
上加:
[Copy to clipboard]
[
-
]
CODE:
} elseif($action == 'promise' && $tid) {
if (!$discuz_uid) showmessage('not_loggedin');
if ($promise) showmessage("你還有承諾主題未回覆!", "viewthread.php?tid={$promise}");
$query = $db->query("SELECT * FROM {$tablepre}threads WHERE tid='$tid' AND displayorder>='0'");
if(!$thread = $db->fetch_array($query)) {
showmessage('thread_nonexistence');
}
$promiseid = explode(',', $thread[promiseid]);
if ($discuz_uid && in_array($discuz_uid, $promiseid)) showmessage("你承諾過了,請返回!");
$newpromiseid = !$thread[promiseid] ? $discuz_uid : $thread[promiseid].','.$discuz_uid;
$db->query("UPDATE {$tablepre}threads SET promiseid='$newpromiseid' WHERE tid='$tid'");
$db->query("UPDATE {$tablepre}members SET promise='$tid' WHERE uid='$discuz_uid'");
showmessage("承諾成功!請在瀏覽內容後回覆,以履行承諾!", "viewthread.php?tid={$tid}");
************************************************************************************
4. 修改./include/common.inc.php,找(共兩處):
[Copy to clipboard]
[
-
]
CODE:
m.accessmasks
後加:
[Copy to clipboard]
[
-
]
CODE:
, m.promise
找:
[Copy to clipboard]
[
-
]
CODE:
newpm, accessmasks
後加:
[Copy to clipboard]
[
-
]
CODE:
, promise
找:
[Copy to clipboard]
[
-
]
CODE:
?>
上加:
[Copy to clipboard]
[
-
]
CODE:
if ($promise && $promise != $tid && $action != 'logout' && $credits > 0) {
showmessage("你還沒有履行承諾!", "viewthread.php?tid={$promise}");
}
************************************************************************************
5. 修改./include/discuzcode.func.php,找:
[Copy to clipboard]
[
-
]
CODE:
$maxsmilies, $db, $tablepre
後加:
[Copy to clipboard]
[
-
]
CODE:
, $thread
找:
[Copy to clipboard]
[
-
]
CODE:
if(preg_match("/\[hide=?\d*\].+?\[\/hide\]/is", $message)) {
*這種是原始風格顯示,上加:
[Copy to clipboard]
[
-
]
CODE:
if(preg_match("/\[promise\].+?\[\/promise\]/is", $message)) {
if (stristr($message, '[promise]')) {
$promiseid = explode(',', $thread[promiseid]);
$promisenum = !$thread[promiseid] ? 0 : count($promiseid);
if($GLOBALS['forum']['ismoderator'] || ($discuz_uid && in_array($discuz_uid, $promiseid)) || $thread[authorid] == $discuz_uid) {
$message = preg_replace("/\[promise\]\s*(.+?)\s*\[\/promise\]/is",
'<span class="bold">以下內容跟帖承諾後才能看到(承諾人數: '.$promisenum.')</span><br>'.
'==============================<br><br>'.
'\\1<br><br>'.
'==============================',
$message);
} else {
$message = preg_replace("/\[promise\](.+?)\[\/promise\]/is", '<b>**** 本內容跟帖承諾後才可瀏覽,<a href="misc.php?action=promise&tid='.$tid.'">按此承諾『瀏覽內容後回覆』</a>(承諾人數: '.$promisenum.') *****</b>', $message);
}
}
}
*美化版顯示,改成上加:
[Copy to clipboard]
[
-
]
CODE:
if(preg_match("/\[promise\].+?\[\/promise\]/is", $message)) {
if (stristr($message, '[promise]')) {
$promiseid = explode(',', $thread[promiseid]);
$promisenum = !$thread[promiseid] ? 0 : count($promiseid);
$mha = "<br><fieldset style=\"padding: 5px;width:95%;border:1px solid ".BORDERCOLOR."\" align=\"center\"><legend><span class=\"smalltxt\"> 內容隱藏:承諾後才能看到 (承諾人數: ".$promisenum.") </span></legend><table width=\"100%\" cellpadding=\"5\"><tr><td>";
$mhb = "</td></tr></table></fieldset><br><br>";
if($GLOBALS['forum']['ismoderator'] || ($discuz_uid && in_array($discuz_uid, $promiseid)) || $thread[authorid] == $discuz_uid) {
$message = preg_replace("/\[promise\]\s*(.+?)\s*\[\/promise\]/is",
$mha."\\1".$mhb,
$message);
} else {
$message = preg_replace("/\[promise\](.+?)\[\/promise\]/is", $mha.'本內容跟帖承諾後才可瀏覽,<a href="misc.php?action=promise&tid='.$tid.'">按此承諾『瀏覽內容後回覆』</a>'.$mhb, $message);
}
}
}
************************************************************************************
6. 修改./include/newreply.inc.php,找:
[Copy to clipboard]
[
-
]
CODE:
$message = preg_replace("/\[hide=?\d*\](.+?)\[\/hide\]/is", "[b]$language[post_hidden][/b]", $message);
上加:
[Copy to clipboard]
[
-
]
CODE:
$message = preg_replace("/\[promise\](.+?)\[\/promise\]/is", "[b]$language[post_hidden][/b]", $message);
找:
[Copy to clipboard]
[
-
]
CODE:
showmessage('post_thread_closed');
上加:
[Copy to clipboard]
[
-
]
CODE:
if ($promise && $promise == $tid) $db->query("UPDATE {$tablepre}members SET promise='0' WHERE uid='$discuz_uid'");
找:
[Copy to clipboard]
[
-
]
CODE:
showmessage($post_autoclose);
上加:
[Copy to clipboard]
[
-
]
CODE:
if ($promise && $promise == $tid) $db->query("UPDATE {$tablepre}members SET promise='0' WHERE uid='$discuz_uid'");
找:
[Copy to clipboard]
[
-
]
CODE:
!$allowuseblog || empty($isblog) ? showmessage('post_reply_succeed', "viewthread.php?tid=$tid&pid=$pid&page=".(@ceil(($thread['replies'] + 2) / $ppp))."&extra=$extra#pid$pid")
上加:
[Copy to clipboard]
[
-
]
CODE:
if ($promise && $promise == $tid) $db->query("UPDATE {$tablepre}members SET promise='0' WHERE uid='$discuz_uid'");
************************************************************************************
7. 修改./archiver/include/thread.inc.php,找:
QUOTE:
array('/
&
amp;(#\d{3,5};)/', "/\[hide=?\d*\](.+?)\[\/hide\]/is"),
前加:
QUOTE:
preg_replace(array('/
&
amp;(#\d{3,5};)/', "/\[promise\](.+?)\[\/promise\]/is"),array('&\\1', '<b>**** Hidden Message *****</b>'),
找:
[Copy to clipboard]
[
-
]
CODE:
$post['message'])));
換成:
[Copy to clipboard]
[
-
]
CODE:
$post['message']))));
承諾功能完成!!!
************************************************************************************
製作『承諾』按鈕
1. 修改post_bbinsert模版,找:
[Copy to clipboard]
[
-
]
CODE:
</td></tr><!--{/if}-->
按Enter將這句移到下一行,在前加:
[Copy to clipboard]
[
-
]
CODE:
<a href="javascript:promise()"><img src="{IMGDIR}/bb_promise.gif" border="0" alt="插入承諾"></a>
************************************************************************************
2. 修改./include/bbcode.js,找:
[Copy to clipboard]
[
-
]
CODE:
function setfocus() {
上加:
[Copy to clipboard]
[
-
]
CODE:
function promise() {
if (helpmode) {
alert('將內容隱藏,非那區版主的會員必需承諾後才可看到內容。會員承諾後,必需回覆,否則不能瀏覽其他地方!\n例如:[promise]Discuz! 版權所有 - Crossday Studio[/promise]');
} else if (getSelectedText()) {
var range = document.selection.createRange();
range.text = "[promise]" + range.text + "[/promise]";
} else if (advmode) {
AddTxt="[promise][/promise]";
AddText(AddTxt);
} else {
txt=prompt("輸入要隱藏的內容:",text_input);
if (txt!=null) {
AddTxt="[promise]"+txt;
AddText(AddTxt);
AddText("[/promise]");
}
}
}
3. 下載附件的按鈕,上傳到
./images/模版名稱/
內
承諾按鈕完成!!!
[
本帖最後由 小康@HK 於 2007-3-20 18:06 編輯
]
附件:
您所在的用戶組無法下載或查看附件
AL8 Forum © All rights reserved.
riva1993
0041803
頭銜: Lord
帖子: 342
精華: 0
積分: 437 點
現金: 2640 元
存款: 104 元
閱讀權限: 25
註冊: 2006-3-17
狀態: 離線
#2
大
中
小
發表於 2006-8-20 18:24
資料
個人空間
主頁
短消息
加為好友
好好呀!
下次裝^^
正!
AL8 Forum © All rights reserved.
是真是假
0049314
頭銜: Member
帖子: 71
精華: 0
積分: 470 點
現金: 162 元
存款: 0 元
閱讀權限: 15
註冊: 2006-8-5
狀態: 離線
#3
大
中
小
發表於 2006-8-20 18:25
資料
個人空間
短消息
加為好友
我知你地會唔明佢個用途係咩
即係= hide , 但是按下承諾=逼你回覆
[
本帖最後由 是真是假 於 2006-8-20 18:33 編輯
]
AL8 Forum © All rights reserved.
nonameandy
0048187
此發帖者已被禁止訪問
頭銜: Banned
帖子: 186
精華: 0
積分: 1340 點
現金: 554 元
存款: 0 元
閱讀權限: 0
註冊: 2006-7-17
狀態: 離線
#4
大
中
小
發表於 2006-8-20 18:27
資料
個人空間
短消息
加為好友
*** 作者被禁止或刪除 內容自動屏蔽 ***
riva1993
0041803
頭銜: Lord
帖子: 342
精華: 0
積分: 437 點
現金: 2640 元
存款: 104 元
閱讀權限: 25
註冊: 2006-3-17
狀態: 離線
#5
大
中
小
發表於 2006-8-20 18:27
資料
個人空間
主頁
短消息
加為好友
QUOTE:
原帖由
是真是假
於 2006-8-20 18:25 發表。
我知你地會唔明佢個用途係咩
即係= hide , 但是按下承諾=逼你回覆
咁串咀= ="
AL8 Forum © All rights reserved.
小康@HK
0027215
頭銜: Moderator
暱稱: 小康
帖子: 1219
精華: 0
積分: 13955 點
現金: 261 元
存款: 1019 元
閱讀權限: 100
註冊: 2005-7-26
來自: HK
狀態: 離線
#6
大
中
小
發表於 2006-8-20 18:28
資料
個人空間
短消息
加為好友
QUOTE:
原帖由
riva1993
於 2006-8-20 18:27 發表。
咁串咀= ="
人地幫緊我呀~
因為好難解釋呀~~~
AL8 Forum © All rights reserved.
riva1993
0041803
頭銜: Lord
帖子: 342
精華: 0
積分: 437 點
現金: 2640 元
存款: 104 元
閱讀權限: 25
註冊: 2006-3-17
狀態: 離線
#7
大
中
小
發表於 2006-8-20 18:29
資料
個人空間
主頁
短消息
加為好友
QUOTE:
原帖由
小康@HK
於 2006-8-20 18:28 發表。
人地幫緊我呀~
因為好難解釋呀~~~
好多野要改=.=
要慢慢黎..........
AL8 Forum © All rights reserved.
nonameandy
0048187
此發帖者已被禁止訪問
頭銜: Banned
帖子: 186
精華: 0
積分: 1340 點
現金: 554 元
存款: 0 元
閱讀權限: 0
註冊: 2006-7-17
狀態: 離線
#8
大
中
小
發表於 2006-8-20 18:30
資料
個人空間
短消息
加為好友
*** 作者被禁止或刪除 內容自動屏蔽 ***
是真是假
0049314
頭銜: Member
帖子: 71
精華: 0
積分: 470 點
現金: 162 元
存款: 0 元
閱讀權限: 15
註冊: 2006-8-5
狀態: 離線
#9
大
中
小
發表於 2006-8-20 18:34
資料
個人空間
短消息
加為好友
QUOTE:
原帖由
nonameandy
於 2006-8-20 18:27 發表。
咁我可以唔怕人呃post!好!下次裝!
其實逼佢回覆,.佢都可以呃
不過呢個至少佢唔會睇完走左佢
AL8 Forum © All rights reserved.
TANK
0044184
頭銜: Lord
帖子: 341
精華: 0
積分: 4659 點
現金: 797 元
存款: 1000 元
閱讀權限: 25
註冊: 2006-4-28
狀態: 離線
#10
大
中
小
發表於 2006-8-20 18:43
資料
個人空間
短消息
加為好友
果然是好樣的插件
要強制回覆的承諾
AL8 Forum © All rights reserved.
riva1993
0041803
頭銜: Lord
帖子: 342
精華: 0
積分: 437 點
現金: 2640 元
存款: 104 元
閱讀權限: 25
註冊: 2006-3-17
狀態: 離線
#11
大
中
小
發表於 2006-8-20 18:46
資料
個人空間
主頁
短消息
加為好友
HELP
搵唔到$post['message'])));
AL8 Forum © All rights reserved.
riva1993
0041803
頭銜: Lord
帖子: 342
精華: 0
積分: 437 點
現金: 2640 元
存款: 104 元
閱讀權限: 25
註冊: 2006-3-17
狀態: 離線
#12
大
中
小
發表於 2006-8-20 18:48
資料
個人空間
主頁
短消息
加為好友
QUOTE:
原帖由
riva1993
於 2006-8-20 18:46 發表。
搵唔到$post['message'])));
SORRY
搵到啦= ="
AL8 Forum © All rights reserved.
riva1993
0041803
頭銜: Lord
帖子: 342
精華: 0
積分: 437 點
現金: 2640 元
存款: 104 元
閱讀權限: 25
註冊: 2006-3-17
狀態: 離線
#13
大
中
小
發表於 2006-8-20 18:57
資料
個人空間
主頁
短消息
加為好友
安裝失敗=0="
是否改錯了???
附件:
您所在的用戶組無法下載或查看附件
AL8 Forum © All rights reserved.
sukibb
0049566
此發帖者已被禁止訪問
頭銜: Banned
暱稱: 桑高娜是也=]
自述: 我 是 朱 ...
帖子: 2164
精華: 0
積分: 1044 點
現金: 159 元
存款: 117 元
閱讀權限: 0
註冊: 2006-8-9
狀態: 離線
#14
大
中
小
發表於 2006-8-20 19:01
資料
個人空間
短消息
加為好友
*** 作者被禁止或刪除 內容自動屏蔽 ***
Jay.W
0049861
頭銜: Conqueror
帖子: 105
精華: 0
積分: 600 點
現金: 256 元
存款: 0 元
閱讀權限: 20
註冊: 2006-8-14
狀態: 離線
#15
大
中
小
發表於 2006-8-20 20:39
資料
個人空間
主頁
短消息
加為好友
回覆第 13 帖由 riva1993 所發的帖子
提供四個方法
1.建議你重裝看看
2.可能有之前安裝的插件相衝到
3.後台更新緩衝
4.下載Discuz程式包,重新上傳thread.inc.php,在安裝一次插件
-------------
[Copy to clipboard]
[
-
]
CODE:
$post['message'])));
位於下列代碼附近
thread.inc.php
[Copy to clipboard]
[
-
]
CODE:
<?
$query = $db->query("SELECT author, dateline, subject, message, anonymous
FROM {$tablepre}posts
WHERE tid='$tid' AND invisible='0'
ORDER BY dateline LIMIT $start, $ppp");
while($post = $db->fetch_array($query)) {
$post['dateline'] = gmdate($_DCACHE['settings']['dateformat'].' '.$_DCACHE['settings']['timeformat'], $post['dateline'] + $_DCACHE['timeoffset'] * 3600);
$post['message'] = ($post['subject'] ? '<b>'.$post['subject'].'</b><br><br>' : '').nl2br(preg_replace(array('/&(#\d{3,5};)/', "/\[hide=?\d*\](.+?)\[\/hide\]/is"),
array('&\\1', '<b>**** Hidden Message *****</b>'),
str_replace(array('&', '"', '<', '>', "\t", ' ', ' '),
array('&', '"', '<', '>', ' ', ' ', ' '),
$post['message'])));
if($thread['jammer']) {
$post['message'] = preg_replace("/\<br \/\>/e", "jammer()", $post['message']);
}
$post['author'] = !$post['anonymous'] ? $post['author'] : $lang['anonymous'];
?>
AL8 Forum © All rights reserved.
riva1993
0041803
頭銜: Lord
帖子: 342
精華: 0
積分: 437 點
現金: 2640 元
存款: 104 元
閱讀權限: 25
註冊: 2006-3-17
狀態: 離線
#16
大
中
小
發表於 2006-8-20 20:51
資料
個人空間
主頁
短消息
加為好友
搵唔到array('/&(#\d{3,5}
/', "/\[hide=?\d*\](.+?)\[\/hide\]/is"
,
附件:
您所在的用戶組無法下載或查看附件
AL8 Forum © All rights reserved.