列印

即時聊天室 for Discuz! 6.0.0 (updated: 2007-09-21)

即時聊天室 for Discuz! 6.0.0 (updated: 2007-09-21)

引用:
# HACK 名稱:即時聊天室   
# HACK 作者:oytktk
# 2.5 繁體中文:2.5F SP1
# 版本延續 (4.0.0/4.1.0/5.0.0RC1/5.0.0RC2/5.0.0/5.5.0 正式版):   Linux0911
# 最後更新:2007-09-21 20:00 詳看備註
# 這個文章只適合 Discuz! 6.0.0 正式版本
# 如果您需要 4.0.0/4.1.0/5.0.0RC1/5.0.0RC2/ 版本:
http://linux0911.no-ip.info/Discuz/viewthread.php?tid=1585
# 如果您需要 5.0.0 版本:
http://linux0911.no-ip.info/Discuz/viewthread.php?tid=7533
# 如果您需要 5.5.0 版本:
http://linux0911.no-ip.info/Discuz/viewthread.php?tid=8721
# 轉載請註明本站來源:http://linux0911.no-ip.info/Discuz/
>> Installation

注意: 6.0.0 的 config.inc.php 部分需要修改才可以使用後台資料庫升級
引用:
$admincp['runquery'] = 0;                // 是否允許\後台運行 SQL 語句 1=是 0=否[安全]
紅字先改為 1, 才可在後台做資料庫升級語句

下載本帖附件後解壓縮,按結構上傳附件內所有資料夾及檔案

結構如下所示:
複製內容到剪貼簿
代碼:
./論壇目錄/admin/chat_admin.inc.php
./論壇目錄/chat.php
./論壇目錄/chatwrite.php
./論壇目錄/chatlist.php
./論壇目錄/templates/default/chat.htm
./論壇目錄/templates/default/chat_msg.htm
./論壇目錄/templates/default/chatlist.htm
./論壇目錄/templates/default/index_chat.htm
1. 升級資料庫 ( 2.5, 4.0.0, 4.1.0, 5.0.0RC1, 5.0.0RC2, 5.0.0, 5.5.0 裝過的不須升級 )
引用:
CREATE TABLE `cdb_chat` (
  `cid` mediumint(18) unsigned NOT NULL auto_increment,
  `fn` varchar(15) NOT NULL,
  `tn` varchar(15) NOT NULL,
  `tim` varchar(20) NOT NULL,
  `col` varchar(20) NOT NULL,
  `says` varchar(127) NOT NULL,
  `oth` varchar(1) NOT NULL,
  `deltime` int(15) NOT NULL,
  KEY `cid` (`cid`)
) ENGINE=MyISAM  AUTO_INCREMENT=2 ;
如有亂碼請先升級
複製內容到剪貼簿
代碼:
DROP TABLE `cdb_chat`
再用這個升級
引用:
CREATE TABLE `cdb_chat` (
  `cid` mediumint(18) unsigned NOT NULL auto_increment,
  `fn` varchar(15) NOT NULL,
  `tn` varchar(15) NOT NULL,
  `tim` varchar(20) NOT NULL,
  `col` varchar(20) NOT NULL,
  `says` varchar(127) NOT NULL,
  `oth` varchar(1) NOT NULL,
  `deltime` int(15) NOT NULL,
  KEY `cid` (`cid`)
) ENGINE=MyISAM  DEFAULT CHARSET=big5 AUTO_INCREMENT=2 ;
其中 big5 是你的資料表編碼校對, utf-8 版的則改為 utf8
其中  `says` VARCHAR(127) 為輸入字元數,最多可顯示 255 字元,或是你可以轉換成 TEXT 型態

如果你曾經安裝過此插件, 想變更字數

請到 phpMyAdmin -> 論壇資料庫 database -> 資料表 cdb_chat -> says 欄位




2. 修改 admincp.php

複製內容到剪貼簿
代碼:
                } elseif($action == 'plugins' || $action == 'pluginsconfig' || $action == 'pluginsedit' || $action == 'pluginhooks' || $action == 'pluginvars') {
                        $cpscript = 'plugins';
下面加
複製內容到剪貼簿
代碼:
// 即時聊天室 - START
                } elseif($action == 'chat_one' || $action == 'chat_set') {
                        $cpscript ='chat_admin';
// 即時聊天室 - END
3. 修改 ./include/global.func.php

複製內容到剪貼簿
代碼:
function debuginfo() {
        if($GLOBALS['debug']) {
                global $db, $discuz_starttime, $debuginfo;
                $mtime = explode(' ', microtime());
                $debuginfo = array('time' => number_format(($mtime[1] + $mtime[0] - $discuz_starttime), 6), 'queries' => $db->querynum);
                return TRUE;
        } else {
                return FALSE;
        }
}
上面添加
複製內容到剪貼簿
代碼:
// 即時聊天室 - START
function implode_ids($array)
{
        $ids = $comma = '';
        if(is_array($array) && count($array))
        {
                foreach($array as $id)
                {
                        $ids .= "$comma'$id'";
                        $comma = ", ";
                }
        }
        return $ids;
}
function chat_msg($show_message, $url_forward = '')
{
        @include_once language('messages');
        if(isset($language[$show_message]))
        {
                eval ("\$show_message = \"".$language[$show_message]."\";");
        }
        if($url_forward=='')
        {
                $url_forward = "";
        }
        /*$url_redirect = '<meta http-equiv="refresh" content="1; url='.$url_forward.'">';*/
        include template('chat_msg');
        dexit();
}
// 即時聊天室 - END
4. 修改 ./admin/menu.inc.php

查找
複製內容到剪貼簿
代碼:
array('name' => $lang['menu_ecommerce_trade_orders'], 'url' => 'admincp.php?action=tradelog')));
下面添加
複製內容到剪貼簿
代碼:
// 即時聊天室 - START
                        showmenu($lang['chat_set'], array(
                                                        array('name' => $lang['chat_one_one'], 'url' => 'admincp.php?action=chat_one'),
                                                        array('name' => $lang['chat_set_set'], 'url' => 'admincp.php?action=chat_set')));
// 即時聊天室 - END
5. messages.lang.php

查找
複製內容到剪貼簿
代碼:
        'not_loggedin' => '對不起,您還沒有登錄,無法進行此操作。',
在下面添加
複製內容到剪貼簿
代碼:
// 即時聊天室 - START
        'chat_msg_you' => '<span style="font-weight: bold"> 你 </span>',
        'chat_msg_oth' => '<span style="color: red">悄悄地</span>',
        'chat_msg_to' => '對【',
        'chat_msg_say' => '】說道:',
        'chat_msg_think' => '】自言自語道:',
        'chat_msg_noreg' => '對不起,您現在不能通過聊天室註冊,請至論壇註冊!',
        'chat_msg_sorry' => '如果您還沒有註冊過本論壇,本次登錄將直接記錄您的訊息!',
// 即時聊天室 - END
6. admincp.lang.php

複製內容到剪貼簿
代碼:
        'menu_home' => '首頁',
在上面添加
複製內容到剪貼簿
代碼:
// 即時聊天室 - START
        'chat_tips1' => '<ul><li>聊天室後台管理 -&gt; 您目前所在位置:<span style="color: red">記錄整理</span></li>
<li>你可以勾選欲刪除的項目。</li>',
        'chat_tips2' => '<ul><li>聊天室後台管理 -&gt; 您目前所在位置:<span style="color: red">高級管理選項</span></li>
<li>你可以指定欲刪除一定範圍的項目。</li>',
        'chat_set' => '即時聊天室',
        'chat_dele_err' => '<span style="color: red">您沒有指定要操作的對象,重新修改</span>',
        'chat_dele_ups' => '<span style="color: blue">操作成功,所選擇的記錄已經被刪除</span>',
        'chat_set_fname' => '發言人:',
        'chat_set_tname' => '發言對像:',
        'chat_set_dtime' => '某時間之前(選中 "全選" 刪除所有記錄):',
        'chat_set_error' => '程式意外中止,請返回並稍候重試。',
        'chat_one_enter' => '確認刪除',
        'chat_one_return' => '重設所選',
        'chat_one_one' => '記錄整理',
        'chat_set_set' => '高級管理',
        'chat_one_fname' => '發言人',
        'chat_one_tname' => '發言對像',
        'chat_one_time' => '發言時間',
        'chat_one_says' => '發言內容',
        'chat_set_system' => '高級管理選項',
        'chat_sele_year' => ' 年 ',
        'chat_sele_moon' => ' 月 ',
        'chat_sele_day' => ' 日 ',
        'chat_sele_hour' => ' 時 ',
        'chat_sele_minute' => ' 分 ',
        'chat_sele_second' => ' 秒 ',
        'chat_sele_all' => ' 全選 ',
        'chat_list_hide' => '<span style="color: red">***** 私聊內容,不公開 *****</span>',
// 即時聊天室 - END
如果你出現以下狀況, 就是尚未完整添加以上程式碼所造成的, 請仔細閱讀安裝步驟:




7. 修改 actions.lang.php

添加
複製內容到剪貼簿
代碼:
        231 => '即時聊天室',
8. 修改 index.php (非必要,如果你要顯示在首頁)

找到
複製內容到剪貼簿
代碼:
$catlist = $forumlist = $sublist = $pmlist = array();
上面添加
複製內容到剪貼簿
代碼:
// 即時聊天室 - START
$query = $db->query("SELECT username FROM {$tablepre}sessions");
while($onliner = $db->fetch_array($query))
{
        if($onliner['username'])
        {
                $chatmn.="<option value=\"".$onliner['username']."\">".$onliner['username']."</option>";
        }
}
// 即時聊天室 - END
並在 discuz.htm 適合的位置加上
複製內容到剪貼簿
代碼:
{template index_chat}
如果你不想讓遊客看到請修改為
複製內容到剪貼簿
代碼:
<!--{if $discuz_uid}-->
{template index_chat}
<!--{/if}-->
更新快取  OK


備註:

1. 後台可以看見悄悄話

2. 可以導入 txt 檔,也可直接在 header.htm 添加連結

3. 後台的管理選項是在 擴展設置 項目裡,不要找不到喔!

4. 關於發言的時差部分,可以開啟 chatwrite.php
找到
複製內容到剪貼簿
代碼:
$timer = date("m月d日H:i");
改為
引用:
$timer = date("m月d日H:i",time()+數值);
數值填什麼呢? 一個小時是 3600 秒,看你時差多少就成上多少,然後把數字填入紅字便可.
(eg. 3600*8=28800), 就是時差 8 小時,將數值填入 28800 便可修正時差

5. 後臺清理會出現
引用:
Parse error: syntax error, unexpected T_STRING in /home/public_html/discuz/admin/global.func.php(18) : eval()'d code on line 1
本人找不到原因, 但不影響刪除資料的功能, 一樣可以刪到

希望有高手提出~

6. 如果你不希望遊客看到
修改 chat.php
複製內容到剪貼簿
代碼:
$discuz_action = 231;
下面添加
複製內容到剪貼簿
代碼:
if(!$discuz_uid)
{
        showmessage('group_nopermission', NULL, 'NOPERM');
}
7. 2007-09-21 修正 IE 7 & Firefox 2.x 下正常無法使用表情悄悄話功能

8. 你要修改聊天內容高度, 可以修改 chat.htm or index_chat.htm

找到 (修改其紅字數值即可)
引用:
<iframe name="wog_vvt5" src="chatlist.php" style="width: 100%; height: 333px"
10. 你要修改聊天內容的字體大小跟間距可以修改 chatlist.php

找到 (修改其紅字數值即可)
引用:
$word_height = '25px';        // 設定文字之間的距離
$word_size = '10pt';        // 設定文字大小
11. 你要修改重新整理速度的話, 修改 ./templates/default/chatlist.htm
引用:
<meta http-equiv="refresh" content="10" src="chatlist.php" />
紅字數值為秒數, 預設值為 10 秒重新整理聊天內容一次

12. 如果進入聊天內容出現亂碼, 請修改 chatlist.htm

複製內容到剪貼簿
代碼:
<meta http-equiv="refresh" content="10" src="chatlist.php" />
上面加上
複製內容到剪貼簿
代碼:
<meta http-equiv="Content-Type" content="text/html; charset=$charset" />
附件: 您所在的用戶組無法下載或查看附件
Hack 安裝錯誤, 80% 來自粗心, 請專心安裝
Linux0911 打造您的個性論壇

本人現在忙於研究所, 沒多的時間管論壇, 有問題別發 pm 給我, 謝謝~
Linux0911 Forum © 2004-2009 All Rights Reserved.

TOP

回報一下

回報一下!!!
在chat.php的檔案裡~~
最後面...
也就是找到
複製內容到剪貼簿
代碼:
</map>
<b r />
之後和在{template footer}之前
會有一段多餘的字!!
會導致聊天室的最下方會重複出現目前的所在位置!!

另外在chat.htm的模板中....
第一行的
複製內容到剪貼簿
代碼:
<!DOCTYPE.........
這一段也要移除
不然進到聊天室後...
下拉的選單功能...會變成一排的...
而不是原始的並列!!

在此提出!!

[ 本帖最後由 opoepev 於 2007-9-10 11:25 PM 編輯 ]
Linux0911 Forum © 2004-2009 All Rights Reserved.

TOP

回覆 2# 的帖子

因為 firefox 如果不加上
<!DOCTYPE>
表情符號便會沒辦法顯示出來, 只好加上來..

加了 Firefox 可以正常使用表情, 也不會影響到下拉選單

但 IE 加了會影響下拉選單, 但不加, 表情依然可以正常使用


那不過有好的修改方式也歡迎提出來完善這個插件
Hack 安裝錯誤, 80% 來自粗心, 請專心安裝
Linux0911 打造您的個性論壇

本人現在忙於研究所, 沒多的時間管論壇, 有問題別發 pm 給我, 謝謝~
Linux0911 Forum © 2004-2009 All Rights Reserved.

TOP

不以checkbox的形式顯示表情,直接顯示表情不行嗎??
Linux0911 Forum © 2004-2009 All Rights Reserved.

TOP

記錄整理
提交出現
Fatal error: Call to undefined function: implode_ids() in /home/ecioucom62/domains/eciou.com/public_html/dream/admin/chat_admin.inc.php on line 97
Linux0911 Forum © 2004-2009 All Rights Reserved.

TOP

引用:
原帖由 天之驕子 於 2007-9-15 03:07 PM 發表
記錄整理
提交出現
Fatal error: Call to undefined function: implode_ids() in /home/ecioucom62/domains/eciou.com/public_html/dream/admin/chat_admin.inc.php on line 97
未添加 ./include/global.func.php 函式
引用:
原帖由 天之驕子 於 2007-9-15 02:58 PM 發表
不以checkbox的形式顯示表情,直接顯示表情不行嗎??
可以, 不過佔空間

將 checkbox 去掉

將 qqface style="display: none" 去掉即可
Hack 安裝錯誤, 80% 來自粗心, 請專心安裝
Linux0911 打造您的個性論壇

本人現在忙於研究所, 沒多的時間管論壇, 有問題別發 pm 給我, 謝謝~
Linux0911 Forum © 2004-2009 All Rights Reserved.

TOP

去掉qqface style="display: none"在Firefox不能使用。
板主有什麼方法可開啟全部表情圖示!
Linux0911 Forum © 2004-2009 All Rights Reserved.

TOP

關於<!doctype...>

版大!
我找到解決方法了!

在firefox裡可正常使用表情!
並且在IE中下拉式選單也不會有問題!

方法如下:
先找header.htm模板
找到
複製內容到剪貼簿
代碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
改成
複製內容到剪貼簿
代碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
意即把
引用:
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
改成
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
然後再將chat.htm模板中的<!DOCTYPE....>移除
即可!

我在自己的論壇這樣設定!沒問題!回報一下!

[ 本帖最後由 opoepev 於 2007-9-17 02:25 AM 編輯 ]
本帖最近評分記錄
  • Linux0911 現金 +200 很用心! 感激萬分~ 2007-9-17 08:56 PM
Linux0911 Forum © 2004-2009 All Rights Reserved.

TOP

回覆 8# 的帖子

挖真厲害耶~

好感激你, 測試成功~

我一直找不到方法

不過我是不想去改原裝的模板, 改插件的檔案比較安全~

綠色安裝法, 隨時可以抽離或添加而不影響論壇運行~
Hack 安裝錯誤, 80% 來自粗心, 請專心安裝
Linux0911 打造您的個性論壇

本人現在忙於研究所, 沒多的時間管論壇, 有問題別發 pm 給我, 謝謝~
Linux0911 Forum © 2004-2009 All Rights Reserved.

TOP

引用:
原帖由 Linux0911 於 2007-9-17 09:04 PM 發表
挖真厲害耶~

好感激你, 測試成功~

我一直找不到方法

不過我是不想去改原裝的模板, 改插件的檔案比較安全~

綠色安裝法, 隨時可以抽離或添加而不影響論壇運行~ ...
其實我也是誤打誤撞成功的!
後面的http那一段如果加上二個雙引號或全部移除就會失效...
如果只有一個或都沒有就會成功,因此我才提出來...
如果版大不想改原裝模板的話...
試試在chat的模板中加入一樣的句子...
不知道行不行就是了!^^提出來參考一下!!
Linux0911 Forum © 2004-2009 All Rights Reserved.

TOP



論壇聲明
  • 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
    如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
    請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!
最佳瀏覽解析度:不低於 1024 (最佳 1280 以上).(支援 IE 7, Mozilla Firefox, Safari, Chrome)
The Best Surfing Resolution: No Lower than 1024 (Best: above 1280).(IE 7, Mozilla Firefox, Safari, Chrome Supported)