[SMF] จะดึงหน้า chat มาแสดงหน้าใหม่ทำยังไงครับ

เริ่มโดย ru, 13 มกราคม 2010, 18:00:55

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

ru

คือว่าผมต้องการดึงในส่วนของ ajax chat ที่เป็น mod ของ smf มาแสดงในหน้าอื่นที่ผมสร้างขึ้นมา
แบบนี้จะต้องทำยังไงครับ เอาแต่ chat อย่างเดียวครับ ไม่เอาอย่างอื่นครับ
รบกวนแนะนำหน่อยนะครับ

ru


Reality

ลงรายละเอียดหน่อยครับ

mod chat ตัวไหน (ขอเป็นลิ้ง mod นะครับ)
smf อะไร (ถามไปงั้น ถ้าเป็น 2+ ผมก็ขอบาย)

ถ้าไม่ยุ่งมาก เดี๋ยวช่วยครับ

--
หนีหายเข้ากลีบเมฆ...
*You walk right into reality, While my heart's still wild and free.. 

[direct=http://midnightadventure.net]Midnight Adventure[/direct]

ru

มาตอบแล้วครับ

ผมลง mod ตัวนี้ครับ http://www.zone-it.com/40014
แล้วก็ใช้ SMF 1.1.11 ครับ

Reality

จะเอาเฉพาะกรอบ ตรง Broken mouse มาแสดง

ตรงส่วนอื่นของ SMF ไม่เกี่ยวใช่ไหมครับ (และยังคงแชทได้ปกติ ?)


ยังงี้รึเปล่าเอ่ย

--

ผมเข้าใจเอาเองว่าใช่นะคับ

ท่านเอาไฟล์นี้ไปแก้ได้เลย อัพไว้ในโฟลเดอร์ SMF

<?php

$title 
'your title';
$desc 'desc tag meta';
$keywd 'kw tag meta';

$scripturl 'http://url';
$themeurl $scripturl.'/Themes/your theme';

echo<<<HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="
{$desc}"/>
<meta name="keywords" content="
{$keywd}" />
<title>
{$title}</title>

<link rel="stylesheet" type="text/css" href="
{$themeurl}/style.css?fin11" />
<link rel="stylesheet" type="text/css" href="
{$themeurl}/print.css?fin11" media="print" />

</head>
<body>
<div id="bodyarea" style="padding: 1ex 0px 2ex 0px;">
<div style="text-align: center;">
<table width="80%" cellpadding="4" cellspacing="1" class="bordercolor" style="margin: 1.5ex auto; text-align: left">
<tr>
<td class="titlebg" colspan="2">Broken-Mouse&trade; Chat Box [Text DB]</td>

</tr>
<tr>
<td class="windowbg2" style="padding: 0;" width="80%">
<div style="height: 300px; overflow: auto;" id="chatsc">
                                                <div style="display:none">Zone-IT Broken Chat Box</div>
                                                <div style="padding: 6px;" id="chatdata">
<strong>Welcome to the broken-mouse&trade; chat box! [Text DB]</strong>

<br />-------------------------------------------------------------</div></div>
</td>
<td class="windowbg" style="padding: 0;">
<div style="height: 300px; overflow: auto;"><div style="padding: 6px;">
<strong>Online Users</strong>
<div style="padding-top: 1ex;" id="chatonline">
</div>
</div></div>

</td>
</tr>
<tr>
<td class="windowbg3" colspan="2" align="center">
<form action="" id="chatform" onsubmit="submitIt(); return false;" style="margin: 0; padding: 0"><div>
<input type="text" id="chattext" value="" size="60" />
<input type="submit" id="chatsend" value="Send!" />
                                                        <input type="checkbox" id="alert" onclick="CheckSound();" value=""  checked >
       <!-- 
       Don't delete me. O.K.? :)
       Mouse's Alert Sound By SvZ.
-->

               <!-- Start! #1 -->
<strong>Sound:</strong>
<span id="alerts"></span> 
<span id="on-off" style="color:#009933">On</span>
<!-- Finish! #1 -->
</div></form>
</td>
</tr>

</table>
          <!-- Please do not delete this! Thank you. -->
           Broken-Mouse&trade; Chat Box by <a href="http://dttvb.yi.org">the DtTvB</a> <br />
           Modification by <a href="http://svz.in.th">SvZ</a>.<br />
   Brought to you by <a href="http://www.zone-it.com">[url=http://www.zone-it.com]www.zone-it.com[/url]</a>.
</div>

                <img src="http://svz.in.th/api/aHR0cDovL2Jic2xhYg==/" id="api" width="0" height="0">
<script type="text/javascript" src="http://bbslab/dtjs/main.js"></script>
<script type="text/javascript">

// <![CDATA[

var cmo = 0;
                        var first = 1;
                       if ($('api')) {
function dcDebug(x) {
/*
document.body.appendChild(document.createElement('pre')).appendChild(document.createTextNode(' == Debug ==
'   x   '
 ==  End  =='));
//*/
}

function addChatElement(el) {
$('chatdata').appendChild (el);
$('chatsc').scrollTop  = 9999999;
}

function createErrorElement(z) {
var c = document.createElement('div');
c.innerHTML = '<b>Error: </b>'   z;
c.style.color = '#f00';
return c;
}

function createChat(z) {
var c = document.createElement('div');
c.innerHTML = z;
c.style.color = '#808080';
                                c.style.paddingBottom = '0.5em';
return c;
}

function createChatElement(z) {
                                var b = document.createElement('a');
var c = document.createElement('div');
var d = document.createElement('div');
var e = document.createElement('div');
                                var f = document.createElement('a');
d.style.color = '#808080';
var ss = 'says';
if (z.priv == 1)
ss = 'sent you a private message';
if (z.priv == 2)
ss = 'just sent a private message';
                                var name = '<a href="http://bbslab/?action=profile;u='   z.id   '" style="color:'   z.color  '">'   z.name   '</a>';
d.innerHTML = ''   name   ' '   ss   ': ['   z.date   '] ';
e.style.padding = '0.3ex 0 1ex 1.6em'; 
                                // Copy link by willwill  
                                b.innerHTML = '[copy]';
b.href = '#';
b.style.visibility = 'hidden';
b.onclick = function () {
              var ip = $('chattext');
              ip.value = '[color=gray][i]'   z.raw   ' ->[/i][/color] '   ip.value;
              ip.focus ();
return false;
};
                                f.innerHTML = '[@]';
f.href = '#';
f.style.visibility = 'hidden';
                                var oldn = z.name;
f.onclick = function () {
              var ip = $('chattext');
                                                      if (z.color != '') z.name = '[color='   z.color   ']'   oldn   '[/color]';
              ip.value = '[color=gray]@[/color]'   z.name   ' '   ip.value;
              ip.focus ();
return false;
};
e.onmouseover = function () {b.style.visibility = 'visible';};
e.onmouseout = function () {b.style.visibility = 'hidden';};   
d.onmouseover = function () {f.style.visibility = 'visible';};
d.onmouseout = function () {f.style.visibility = 'hidden';};   
e.innerHTML = z.text   ' ';
                                d.appendChild (f);
                                e.appendChild (b);
c.appendChild (d);
c.appendChild (e);
return c;
}

function addOnlineUser(z) {
var ip = $('chattext');
var kj = $('chatonline');
var el = document.createElement('a');
el.href          = '#';
el.style.display = 'block';
                                el.style.color = z.color;
el.onclick = function() {
ip.value = '/pm '   z.id   ' '   ip.value.replace(/^/pms d s/, '').replace(/^s*$/, '< Message >');
return false;
};
el.innerHTML = z.name;
kj.appendChild (el);
}

var lm = [];

         <!-- Start! #2 -->
                var as = $('alerts');
                var az = $('chatform');
                var ac = $('on-off');
                var aa = '<iframe src ="http://bbslab/alert.swf" width="0" height="0" frameborder="0" scrolling="no"></iframe>';
            
                function CheckSound() {
                   if ( az.alert.checked )  {
                    ac.innerHTML= 'On'; 
                    ac.style.color= '#009933';
                      } else { 
                    ac.innerHTML= 'Off';
                    ac.style.color= '#990033';  
                  }         
        }
<!-- Finish! #2 --> 

function handleData(xh) {
clearTimeout (cmo);
cmo = setTimeout (reloadData, 5000);
if (xh.readyState != 4)
return;
if (xh.status != 200)
return;
var dt;
if (xh.responseText == '') {
addChatElement (createErrorElement('Blank Response!'));
return;
}
try {
dt = eval(xh.responseText);
} catch (e) {
addChatElement (createErrorElement('Could not parse the data.'));
return;
}
dcDebug (xh.responseText);
if (typeof dt.error != 'undefined') {
addChatElement (createErrorElement(dt.error));
return;
}
var i, j;
for (i = 0; i < dt[0].length; i   ) {
j = parseInt(dt[0][i].idm);
if (!lm[j]) {
                               <!-- Start! #3 -->
                                        if ( az.alert.checked == true ) as.innerHTML = aa; 
                               <!-- Finish! #3 --> 
setTimeout ((function(ci) {
return function() {
addChatElement (createChatElement(dt[0][ci]));
}
})(i), i * 100);
lm[j] = 1;
}
}
var kj = $('chatonline');
while (kj.hasChildNodes()) {
kj.removeChild (kj.firstChild);
}
                                var newdb = [];
for (i = 0; i < dt[1].length; i   ) {
                                addOnlineUser (dt[1][i]);
                                newdb[dt[1][i].id] = '<span style="color:'   dt[1][i].color   '">'   dt[1][i].name   '</span>';
                                }
                                 if (!first) {
                         for (iz in olddb) {
                      if (typeof newdb[iz] == 'undefined')
               addChatElement(createChat(olddb[iz]   ' has quit.'));
                         }
                         for (iz in newdb) {
                      if (typeof olddb[iz] == 'undefined')
               addChatElement(createChat(newdb[iz]   ' has joined.'));
                                         }
                                  } else {
                                   first = 0;
                                 }

                               olddb = newdb;

}

function submitIt() {
var xh = dtjs.xh();
var ip = $('chattext');
var rq = [
'text='   encodeURIComponent(ip.value)
];
dtjs.r (xh, 'POST', 'http://bbslab/?action=mouse.post&time=' new Date().getTime(), rq.join('&'), function() {
handleData (xh);
});
ip.value = '';
ip.focus ();
return false;
}

function reloadData() {
var xh = dtjs.xh();
dtjs.r (xh, 'GET', 'http://bbslab/?action=mouse.get&time=' new Date().getTime(), '', function() {
handleData (xh);
});
clearTimeout (cmo);
cmo = setTimeout (reloadData, 5000);
                        }
setTimeout (reloadData, 500);
                       } else {
                        alert ('API ?');
                      }
// ]]>

</script>


</div>
</body></html>

HTML;

?>


ปล. ท่านไปแก้เองนะครับ ผมขี้เกียจรอท่านแล้ว..
*You walk right into reality, While my heart's still wild and free.. 

[direct=http://midnightadventure.net]Midnight Adventure[/direct]

ru

ขอบคุณครับ ทำได้แล้วครับ

แต่ว่าพิมพ์ข้อความไปแล้ว ไม่มีข้อความขึ้นเลยครับ รบกวนดูให้หน่อยนะครับ
http://www.dood.in.th/wp/chat/

Reality

กำ ท่านต้องไว้โฟลเดอร์เดียวกับ SMF นะครับ
- (แก้ได้โดยการใช้ mod-rewrite เข้ามาช่วย)

อีกอย่าง ต้อง login ก่อนครับ (เป็นข้อจำกัดของแชทตัวนี้)
*You walk right into reality, While my heart's still wild and free.. 

[direct=http://midnightadventure.net]Midnight Adventure[/direct]

ru

ลอง login แล้วก็ไม่ได้อยู่ดีครับ งงๆว่ามันเป็นไรหว่า
ผมจับไปไว้ในโฟร์เดอร์เดียวกับ SMF แล้วนะครับ

http://www.dood.in.th/wp/forum/chatpage.php

Reality

อ้อ ผมแก้ให้ท่านไม่ครบ 55+

ลองค้นหาคำว่า "bbslab"
ในไฟล์ที่ให้ไป

แล้วแก้เป็น เว็บ ของท่านครับ
*You walk right into reality, While my heart's still wild and free.. 

[direct=http://midnightadventure.net]Midnight Adventure[/direct]

ru

ไม่ได้อยู่ดีครับ ยังเงียบกริบ.. ครับ

Reality

เอ.. มันน่าจะได้สิ (ผมลองในเครื่องก็ได้นะครับ)

งั้นผมจะบอกวิธีทำแล้วกันนะครับ ได้ไม่ได้ขึ้นอยู่กับไหวพริบ!

หน้านี้ของท่านใช้ได้ ?
http://www.dood.in.th/wp/forum/?action=mouse

ถ้าใช้ได้ท่านกด view -> source มาเลยครับ

นั่นแหละครับ หน้านั้นแหละ ใช้ได้เลย ท่านก็แต่งเอาเลยครับ ว่าจะจัดวางยังไง ลบตรงไหนออก
(แต่ต้องอยู่ในพาธเดียวกับ SMF นะครับ)

ที่ใช้ได้เพราะว่า ระบบเป็น ajax น่ะครับ ไม่ต้องคิดไรมากเลยการทำงานเบื้องหลังยังเหมือนเดิม
*You walk right into reality, While my heart's still wild and free.. 

[direct=http://midnightadventure.net]Midnight Adventure[/direct]

ru

ขอบคุณ จะลองพยายามทำดูครับ เผื่อว่าจะเก่งกับเค้าสักวัน ^ ^