Chat fürs Forum

phpBB 3.0.x Support und Diskussions Forum.
Melimaus
Hat sich bedankt: 0
Danksagung erhalten: 0

Chat fürs Forum

Beitrag von Melimaus »

Deine phpBB Version: 3.0.8
Typ Deines phpBB Forums: Standard phpBB (auch Vanilla (phpbb2) oder Olympus (phpBB3) genannt)
MODs installiert: Ja
Dein Wissensstand: Grundwissen
Link zu Deinem Forum: http://www.tierunddu.de

Was hast Du gemacht, bevor das Problem aufgetreten ist?


Was hast Du bereits versucht um das Problem zu lösen?


Fehlerbeschreibung und Nachricht
Hallo,

hatte im 2er den x7-Chat. Habe gelesen, dass dieser auch im 3er eingebaut werden kann. Wenn ich aber dem Link folge, komme ich auf die x7chat-Seite und dort dann folgende Meldung:

Error - 403
You do not have the proper authorization to access the requested page or directory. :x

Also hab ich mal nach einem anderen Chat geschaut und da fiel mir der von AJAX ins Auge.

Jetzt stellt sich mir die Frage, welcher Chat ist der bessere?

Ich brauche einen Chat, bei dem sich die User mit ihren Forennamen anmelden können und keine Gäste Zutritt haben. Und ich brauche auch nur einen Chat, keine Shoutbox dabei. Und er sollte schon vom Style her zum Forum passen (subsilver2).
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

Re: Chat fürs Forum

Beitrag von Mahony »

Hallo
Alles notwendige zum Ajax-Chat findest du hier http://sourceforge.net/apps/mediawiki/a ... =Main_Page
MOD-Download-Seite: https://blueimp.net/ajax/ bzw. http://sourceforge.net/projects/ajax-chat/files/


Grüße: Mahony
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Melimaus
Hat sich bedankt: 0
Danksagung erhalten: 0

Re: Chat fürs Forum

Beitrag von Melimaus »

Danke Mahony, der hört sich wirklich gut an. Werde ihn einfach mal ausprobieren und schauen was die User von halten :D
Melimaus
Hat sich bedankt: 0
Danksagung erhalten: 0

Re: Chat fürs Forum

Beitrag von Melimaus »

Hallo,

bin jetzt auf einen anderen Chat umgeschwenkt, da ich den anderen einfach nicht eingebaut bekommen habe :oops:

Habe nun diesen hier eingebaut: http://startrekguide.com/community/view ... =27&t=1250

Integrierte Shoutbox hab ich rausgeschmissen. Hab auch den Chatlink im Header nur für Registrierte sichtbar, aber (musste ja jetzt kommen), wenn ein Nichtregistrierter jetzt so schlau wäre und einfach das .../chat.php manuell eingeben würde, könnte dieser munter mitlesen.

Könnte ich das auch durch

Code: Alles auswählen

<!-- IF S_USER_LOGGED_IN --><!-- ENDIF -->
lösen? Muss ich das dann in der chat.php eintragen? Wenn ja, wo genau?

Die Datei (chat.php) fängt ja so an

Code: Alles auswählen

<?php
/**
*
* @package phpBB3
* @version $Id: chat.php 52 2007-11-04 05:56:17Z Handyman $
* @copyright (c) 2007 StarTrekGuide
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('chat');
.........
und hört so auf

Code: Alles auswählen

	
	return $user;
}

?>
Was mich noch stört. Wenn ich aus dem Chat gehe, bleiben alle Beiträge ehalten und jeder der auf Chat geht, kann diese lesen.

Würde mir das weiterhelfen? (steht auf der Seite bei der Modbeschreibung mit dabei)

Troubleshooting:

1. Can't post bbcode or smilies in the chat -- Run the sql statement in the upgrade from beta 7 below.
2. Forum header is included in the chat box when I make a post -- this is a problem with a few portals which annoyingly add their header/footer automatically to the template engine.
To fix it, replace the chat_body.html with this (subsilver2 style)

Code: Alles auswählen

    <!-- IF S_GET_CHAT -->
       <!-- IF S_READ or S_ADD -->
          --!--
          <!-- BEGIN chatrow -->
             <div id="p{chatrow.MESSAGE_ID}">
                <table class="tablebg" cellspacing="1" width="100%">
                <tr>
                   <td class="<!-- IF chatrow.CLASS is even -->row2<!-- ELSEIF chatrow.CLASS is odd -->row1<!-- ENDIF -->" width="100%" align="left"><!-- IF U_ACP or U_MCP --> <a href="javascript:void({chatrow.MESSAGE_ID})" title="{L_DELETE_POST}" onClick="delete_post('{chatrow.MESSAGE_ID}')"><img src="{T_IMAGESET_LANG_PATH}/icon_post_delete.gif" /></a> <!-- ENDIF --> <b class="postauthor">{chatrow.USERNAME_FULL}</b> « {chatrow.TIME} » &nbsp; <span class="postbody">{chatrow.MESSAGE}</span> </td>
                </tr>
                </table>
             </div>
          <!-- END chatrow -->--!--{LAST_ID}
          <!-- IF S_WHOISONLINE -->--!--
             <!-- BEGIN whoisrow -->
                <div><img src="{T_IMAGESET_PATH}/{whoisrow.USER_STATUS}.png" class="online_img" /> {whoisrow.USERNAME_FULL}</div>
             <!-- END whoisrow -->--!--{LAST_TIME}--!--{DELAY}--!--{LAST_POST}
          <!-- ENDIF -->
       <!-- ENDIF -->
    <!-- ELSE -->
       <!-- IF S_CHAT -->
       <!-- INCLUDE overall_header.html -->
       <!-- ENDIF -->
       <script type="text/javascript">
       <!--
       var fieldname = 'chat';
       var last_time = 0;
       var xmlHttp = http_object();
       var last_id = {LAST_ID};
       var type = 'receive';
       var post_time = {TIME};
       var read_interval = 15000;
       var interval = setInterval('handle_send("read", last_id);', read_interval);

       function handle_send(mode, f)
       {
          if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
          {
             indicator_switch('on');
             type = 'receive';
             param = 'mode=' + mode;
             param += '&last_id=' + last_id;
             param += '&last_time=' + last_time;
             param += '&last_post=' + post_time;
             param += '&read_interval=' + read_interval;

             if (mode == 'add' && document.text.message.value != '')
             {
                type = 'send';
                for(var i = 0; i < f.elements.length; i++)
                {
                   elem = f.elements[i];
                   param += '&' + elem.name + '=' + encodeURIComponent(elem.value);
                }
                document.text.message.value = '';
             }
             else if (mode == 'delete')
             {
                type = 'delete';
                param += '&chat_id=' + f;
             }
             xmlHttp.open("POST", '{FILENAME}', true);
             xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
             xmlHttp.onreadystatechange = handle_return;
             xmlHttp.send(param);
          }
       }

       function handle_return()
       {
          if (xmlHttp.readyState == 4)
          {
             if (type != 'delete')
             {
                results = xmlHttp.responseText.split('--!--');
                if (results[2])
                {
                   if (last_id == 0)
                   {
                      document.getElementById(fieldname).innerHTML = results[1];
                   }
                   else
                   {
                      document.getElementById(fieldname).innerHTML = results[1] + document.getElementById(fieldname).innerHTML;
                   }
                   last_id = results[2];

                   if (results[3])
                   {
                      document.getElementById('whois_online').innerHTML = results[3];
                      last_time = results[4];
                      if (results[5] != read_interval * 1000)
                      {
                         window.clearInterval(interval);
                         read_interval = results[5] * 1000;
                         interval = setInterval('handle_send("read", last_id);', read_interval);
                         document.getElementById('update_seconds').innerHTML = results[5];
                      }
                      post_time = results[6];
                   }
                }
             }
             indicator_switch('off');
          }
       }

       function delete_post(chatid)
       {
          document.getElementById('p' + chatid).style.display = 'none';
          handle_send('delete', chatid);
       }

       function indicator_switch(mode)
       {
          if(document.getElementById("act_indicator"))
          {
             var img = document.getElementById("act_indicator");
             if(img.style.visibility == "hidden" && mode == 'on')
             {
                img.style.visibility = "visible";
             }
             else if (mode == 'off')
             {
                img.style.visibility = "hidden"
             }
          }
       }

       function http_object()
       {
          if (window.XMLHttpRequest)
          {
             return new XMLHttpRequest();
          }
          else if(window.ActiveXObject)
          {
             return new ActiveXObject("Microsoft.XMLHTTP");
          }
          else
          {
             document.getElementById('p_status').innerHTML = 'Status: Cound not create XmlHttpRequest Object.  Consider upgrading your browser.';
          }
       }
       -->
       </script>
       <style type="text/css">
       <!--
          .box
          {
             width: 100%;
             margin-left: auto;
             margin-right: auto;
          }
          .shouts {
             width: 100%;
             height:300px;
             overflow:auto;
          }
          #chat {
             width: 99%;
             text-align:left;
          }
          #message {
             width: 65%;
          }
          #whois_online{
             vertical-align:text-top;
             text-align:left;
          }
          .online_img {
             vertical-align:middle;
          }
          #act_indicator {
             visibility:hidden;
          }
       -->
       </style>
       <div class="box">
          <br />
          <table class="tablebg" cellspacing="1" width="100%">
          <tr>
             <td class="cat" width="100%" height="28" nowrap="nowrap">
             <h4 align="center">{SITENAME} {L_CHAT_EXPLAIN}</h4>
             </td>
          </tr>
          </table>
          <table class="tablebg" cellspacing="1" width="100%">
          <tr>
             <th align="center" width="85%">
          <!-- IF S_USER_LOGGED_IN -->
             <form name="text" id="text" method="post" action="javascript:void(0);" onSubmit="handle_send('add', this)" autocomplete="off">{L_MESSAGE}:
             <input type="text" tabindex="1" name="message" id="message" class="inputbox" size="28" />
             <input class="btnmain" type="submit" name="submit" value="{L_SUBMIT}" />
             </form>
          <!-- ENDIF -->
             </th>
             <th align="center" width="15%" nowrap="nowrap">
             {L_ONLINE_LIST}
             </th>
          </tr>
          <tr>
             <td class="row3" style="text-align:left;" height="220">
                <div class="shouts">
                   <div id="chat">
                   <!-- BEGIN chatrow -->
             <div id="p{chatrow.MESSAGE_ID}">
                <table class="tablebg" cellspacing="1" width="100%">
                     
                         <tr>
                            <td class="<!-- IF chatrow.CLASS is even -->row2<!-- ELSE -->row1<!-- ENDIF -->" align="left">
                         <!-- IF U_ACP or U_MCP -->
                            <a href="javascript:void({chatrow.MESSAGE_ID})" title="{L_DELETE_POST}" onClick="delete_post('{chatrow.MESSAGE_ID}')"><img src="{T_IMAGESET_LANG_PATH}/icon_post_delete.gif" /></a>
                         <!-- ENDIF -->
                            <b class="postauthor">{chatrow.USERNAME_FULL}</b> « {chatrow.TIME} » &nbsp; <span class="postbody">{chatrow.MESSAGE}</span>
                            </td>
                         </tr>
                         </table>
                      </div>
                   <!-- END chatrow -->
                   </div>
                </div>
             </td>
             <td class="row1" width="15%" nowrap="nowrap">
                <div class="shouts">
                   <div id="whois_online">
                   <!-- BEGIN whoisrow -->
                      <div>
                         <img src="{T_IMAGESET_PATH}/{whoisrow.USER_STATUS}.png" class="online_img" /> {whoisrow.USERNAME_FULL}
                      </div>
                   <!-- END whoisrow -->
                   </div>
                </div>
             </td>
          </tr>
          <tr>
             <td class="cat" colspan="2" width="100%" height="28">
             <div style="float: left;">&nbsp;<img src="{T_THEME_PATH}/images/icon_mini_chat.png"> <a href="http://startrekguide.com/community/viewtopic.php?p=16364#p16364"><strong>AJAX Chat</strong></a>&nbsp;&copy; 2007 <strong style="color: #7B95B2;">StarTrek</strong><strong style="color: #D98303;">Guide</strong></div><div style="float: right;"><img src="{T_IMAGESET_PATH}/act_indicator.gif" id="act_indicator" />&nbsp;&nbsp;<strong>{L_UPDATES} <span id="update_seconds"> {DELAY} </span> {L_UNIT}</strong> &nbsp;&nbsp;</div>
             </td>
          </tr>
          </table>
       </div>
    <!-- IF S_CHAT -->
    <!-- ENDIF -->
    <!-- ENDIF -->
Roadmap

* Add smilies button
* Show smilies in chat room
* Multiple Rooms (Progress = 25%)
* Report Post/Users
* Add Quote Button
* Enable Author Delete
* Private Rooms
* Send Chat Requests
* Reset Chat button
* Avatar Thumbnails with Fullsize Rollovers.
* Chat Logs


Oder brauch ich das nur hier zu ändern (chat.php)

Code: Alles auswählen

/******************************************/
/* EDIT these for custom online settings */
/****************************************/
$session_time = 300;
$default_delay = 15;
//set status
$times = array(
	'online'	=> 0,
	'idle'		=> 300,
	'offline'	=> 1800,
);
//set delay for each status
$delay = array(
	'online'	=> 5,
	'idle'		=> 60,
	'offline'	=> 300,
);
Ich glaube das wären meine Probleme fürs Erste :lol:
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

Re: Chat fürs Forum

Beitrag von Mahony »

Hallo
Damit die Gäste keinen Zugriff haben:

suche in der chat.php

Code: Alles auswählen

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('chat');
Füge danach ein

Code: Alles auswählen

if ($user->data['user_id'] == ANONYMOUS)
{
	login_box();
}
Was mich noch stört. Wenn ich aus dem Chat gehe, bleiben alle Beiträge ehalten und jeder der auf Chat geht, kann diese lesen.
Hm, da solltest du mal den Autor des MODs ansprechen, da ich den MOD nicht verwende kann ich nichts dazu sagen.


Grüße: Mahony
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Melimaus
Hat sich bedankt: 0
Danksagung erhalten: 0

Re: Chat fürs Forum

Beitrag von Melimaus »

Supi Gäste können den Chat jetzt nicht mehr sehen :D

Was sagen diese Werte eigentlich aus, weißt du das?

Code: Alles auswählen

    /******************************************/
    /* EDIT these for custom online settings */
    /****************************************/
    $session_time = 300;
    $default_delay = 15;
    //set status
    $times = array(
       'online'   => 0,
       'idle'      => 300,
       'offline'   => 1800,
    );
    //set delay for each status
    $delay = array(
       'online'   => 5,
       'idle'      => 60,
       'offline'   => 300,
    );
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

Re: Chat fürs Forum

Beitrag von Mahony »

Hallo
Diese Werte beziehen sich auf den Online-Status.

Grüße: Mahony
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Melimaus
Hat sich bedankt: 0
Danksagung erhalten: 0

Re: Chat fürs Forum

Beitrag von Melimaus »

Mmh ok dann teste ich einfach mal, wenn ich da was veränder, ob dann die Beiträge nicht mehr zu sehen sind, wenn ich raus gehe...sind ja nicht viele Werte :lol:
,
Melimaus
Hat sich bedankt: 0
Danksagung erhalten: 0

Re: Chat fürs Forum

Beitrag von Melimaus »

Nach zig Seiten englisch durchschauen (das war nicht einfach :lol: ) habe ich folgendes gefunden:

That will then delete all messages older than the last one displayed in the chat and will also only delete when you first view the chat.
http://startrekguide.com/community/view ... 675#p91220

Habs so ersetzt wie beschrieben und auch die zwei Dateien mit runtergeladen (wobei da nicht dabei stand, wo die hin sollen. Hab die chat_arch_body.htlm ins subsilver-template und die chat_archive.php direkt ins root gepackt).

Aber das will einfach nicht funktionieren. Kannst du am Code erkennen, ob das überhaupt klappen würde?

Smilies und BB-Code hab ich ohne Problem eingebaut bekommen. Nur das will nicht funzen :evil:
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

Re: Chat fürs Forum

Beitrag von Mahony »

Hallo
Ja, die Änderung am Code sollte eigentlich funktionieren. Die Änderung musst du in der chat.php machen.
Suche

Code: Alles auswählen

$sql = 'SELECT * FROM ' . CHAT_TABLE . ' ORDER BY message_id DESC';
		$result = $db->sql_query_limit($sql, 25);
		$rows = $db->sql_fetchrowset($result);

		foreach ($rows as $row)
		{
			if ($count++ == 0)
			{
				$last_id = $row['message_id'];
			}
			$template->assign_block_vars('chatrow', array(
				'MESSAGE_ID'	=> $row['message_id'],
				'USERNAME_FULL'	=> clean_username(get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST'])),
				'MESSAGE'		=> generate_text_for_display($row['message'], $row['bbcode_uid'], $row['bbcode_bitfield'], $row['bbcode_options']),
				'TIME'			=> $user->format_date($row['time']),
				'CLASS'			=> ($row['message_id'] % 2) ? 1 : 2,
			));
		}
		$db->sql_freeresult($result);
Ersetze mit

Code: Alles auswählen

$sql = 'SELECT * FROM ' . CHAT_TABLE . ' ORDER BY message_id DESC';
		$result = $db->sql_query_limit($sql, 25);
		$rows = $db->sql_fetchrowset($result);
                $db->sql_freeresult($result);

                $delete_id = 0;

		foreach ($rows as $row)
		{
			if ($count++ == 0)
			{
				$last_id = $row['message_id'];
			}
			$template->assign_block_vars('chatrow', array(
				'MESSAGE_ID'	=> $row['message_id'],
				'USERNAME_FULL'	=> clean_username(get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST'])),
				'MESSAGE'		=> generate_text_for_display($row['message'], $row['bbcode_uid'], $row['bbcode_bitfield'], $row['bbcode_options']),
				'TIME'			=> $user->format_date($row['time']),
				'CLASS'			=> ($row['message_id'] % 2) ? 1 : 2,
			));
            $delete_id = $row['message_id'];
		}
        
        $sql = 'DELETE FROM ' . CHAT_TABLE . '
            WHERE message_id < ' . $delete_id;
        $db->sql_query($sql);

Grüße: Mahony
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Antworten