Fork me on GitHub




« 1 ... 3 4 5 (6) 7 8 9 ... 17 »


Re: Dialogue en direct de type Popup
Régulier
Inscrit: 01/04/2007 20:31
De Ile de France
Messages: 461
Voici ma contribution sur la façon que j'utilise le bloc Flaschat
Je l'appellerai "info_embedded4" puisque la 2 et 3 sont utilisés
Une couleur de texte est imposée(blanche #ffffff; car le fond de mon thème est noir, il suffit de la changée) avec un menu déroulants des personnes dans le salon et la possibilité en cliquant sur le nom d'accéder à son profil

<?php

    header
('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    
header('Last-Modified: ' gmdate('D, d M Y H:i:s') . ' GMT');
    
header('Cache-Control: no-store, no-cache, must-revalidate');
    
header('Cache-Control: post-check=0, pre-check=0'false);
    
header('Pragma: no-cache');


/**
If this file is not in the FlashChat root folder, then change this
path to the location of the inc/common.php file.
*/

$GLOBALS['my_file_name'] = 'info_embedded4';

require_once(
'inc/common.php');

ChatServer::purgeExpired();

/**
Retrieves the number of users who are chatting in any room.
Leave the $room parameter empty to return the number of users in all room.
*/
function numusers$room '' )
{
    if(
$room)
    {
        
$stmt = new Statement("SELECT COUNT(*) AS numb FROM {$GLOBALS['fc_config']['db']['pref']}connections WHERE userid IS NOT NULL AND userid <> ? AND roomid=?",214);
        
$rs $stmt->processSPY_USERID $room );
    }
    else
    {
        
$stmt = new Statement("SELECT COUNT(*) AS numb FROM {$GLOBALS['fc_config']['db']['pref']}connections,{$GLOBALS['fc_config']['db']['pref']}rooms
                              WHERE userid IS NOT NULL AND userid <> ? AND ispublic IS NOT NULL
                              AND 
{$GLOBALS['fc_config']['db']['pref']}connections.roomid = {$GLOBALS['fc_config']['db']['pref']}rooms.id");
        
$rs $stmt->processSPY_USERID );
    }

    
$rec $rs->next();
    return 
$rec?$rec['numb']:0;
}

/**
Retrieves a list of the users (by login ID) who are in $room.
Leave the $room parameter empty to return a list of all users in all rooms.
*/
function usersinroom$room '' )
{
    
$list = array();

    if(
$room) {
        
$stmt = new Statement("SELECT userid, state, color, lang, roomid FROM {$GLOBALS['fc_config']['db']['pref']}connections WHERE userid IS NOT NULL AND userid <> ?  AND roomid=?");
        
$rs $stmt->processSPY_USERID $room);
    } else {
        
$stmt = new Statement("SELECT userid, state, color, lang, roomid FROM {$GLOBALS['fc_config']['db']['pref']}connections WHERE userid IS NOT NULL AND userid <> ? ");
        
$rs $stmt->processSPY_USERID );
    }

    while(
$rec $rs->next())
    {
        
$usr ChatServer::getUser($rec['userid']);
        if(
$usr == null && $GLOBALS['fc_config']['enableBots']) $usr $GLOBALS['fc_config']['bot']->getUser($rec['userid']);
        
$list[] = array_merge($usr$rec);
    }


    return 
$list;
}

/**
Retrieves a list of all available rooms, as an array.
*/
function roomlist()
{
    
$list = array();

    
// populate $list with the names of all available rooms
    
$stmt = new Statement('SELECT * FROM '.$GLOBALS['fc_config']['db']['pref'].'rooms WHERE ispublic IS NOT NULL order by ispermanent' 54 );
    
$rs $stmt->process();

    while(
$rec $rs->next()) $list[] = $rec;

    
//result will be an array of arrays like ('id' => <room id>, 'updated' = <timestamp>, 'created' => <timestamp>, 'name' => <room name>, 'ispublic' => <public flag>, 'ispermanent' => <autoclose flag>)
    
return $list;
}


$rooms roomlist();
$roomnumb sizeof($rooms);
$usernumb numusers();
?>

<html>
<head>
<title>Who's in the chat?</title>
<meta http-equiv=Content-Type content="text/html;  charset=UTF-8">

<style type="text/css">
<!--

body { background-color: transparent; color: #ffffff; margin: 0; padding: 0; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: normal; font-size: 11px;}
....normal {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
    font-weight: normal;
  color: #ffffff;
    margin: 0; padding: 0;
        text-align: left;
}

#roomList { margin: 0; padding: 0; }
#roomList a { color: #ffffff; text-decoration: none; } #roomList a:hover { text-decoration: underline; }
....userList { color: #ffffff; margin-left: 7px; margin-right: 0; margin-bottom: 0; margin-top: 0;  padding: 0; }

-->
</style>
<script type="text/javascript">
function toggleUserList(id) {
   if (l = document.getElementById(id)) {
      if (l.style.display == '' || l.style.display == 'block') l.style.display = 'none';
      else l.style.display = 'block';
   }
   return false;
}

</script>
</head>
<body> 
<p class=normal> En ligne ? (<?php echo $usernumb ?>)</p>
<ul id="roomList">
<?php if($roomnumb) { ?>
        <?php foreach($rooms as $room) { ?>
                <li><strong><a href="#" onclick="javascript:toggleUserList('room_<?php echo $room['id']?>')"><?php echo $room['name']?> (<?php echo numusers($room['id']) ?>)</a></strong>
                <?php

                    $users 
usersinroom($room['id']);
                                        if (
$users) {
                                          echo 
'<ul class="userList" id="room_'.$room['id'].'">';
                                          foreach( 
$users as $user ) {
                        echo 
'<li><a href="http://www.monsite.com/userinfo.php?uid='.$user['userid'].'" target=_blank>'.$user['login'].'</a></li>'; }
                                          echo 
'</ul>';
                                        }

                
?> </li>
        <?php ?>
<?php 
?>
</ul>

</body>
</html>

Posté le : 19/10/2008 21:07
Partager Twitter Partagez cette article sur GG+
Re: Dialogue en direct de type Popup
Xoops accro
Inscrit: 16/08/2005 19:46
De Nanterre
Messages: 2331
Citation :

blueteen a écrit:
Je viens de modifier le fichier pour créer : info_embedded3.php

Cette fois, en cliquant sur le nom du salon, on ouvre une fenêtre avec le tchat, et en cliquant sur le pseudo d'un des membres connectés, on ouvre son profil dans une nouvelle fenêtre.

Penser à changer les adresses en dur dans le code. (Je vais voir pour récupérer l'adresse à partir du mainfile.php automatiquement).


Bonsoir, je ne parviens pas à reproduire celui-là alors que les autres sans problême.
et je peux aller sur le profil, mais coté salon... rien
Quoi qu'est-ce que je fais ?

Bonne nuit

Posté le : 19/10/2008 22:06

eparcyl... tranquille.
Partager Twitter Partagez cette article sur GG+
Re: Dialogue en direct de type Popup
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
Salut, as-tu fais attention, lorsque tu colles ton script, à enlever l'espace entre java et script ? (obligé de le mettre dans le code ici, sinon, c'est remplacé par : (script removed).

Posté le : 20/10/2008 08:46
Partager Twitter Partagez cette article sur GG+
Re: Dialogue en direct de type Popup
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
J'ai mis les codes de la page précédente à jour, avec l'utilisation de XOOPS_URL : de cette façon, il n'y a presque plus rien à changer dans le code avant de le coller sur votre site (juste les espaces entre java et script, mais tout est indiqué sur les posts en question).

Posté le : 20/10/2008 09:21
Partager Twitter Partagez cette article sur GG+
Re: Dialogue en direct de type Popup
Régulier
Inscrit: 17/04/2005 10:25
De Belgique
Messages: 173
Merci 1000 fois a toi Blueteen pour ce code plus que précieux en ce qui me concerne

Je teste ceci cette après midi et je fais un retour


Ps: en ce qui me concerne c'est avec joie que j'ai pris la licence de FlashChat (a ce prix là... lol)

@++


Apo

Posté le : 20/10/2008 11:19
Partager Twitter Partagez cette article sur GG+
Re: Dialogue en direct de type Popup
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
Un nouveau code de ce matin !
Créer un fichier info_embedded5.php (puisque le 4 est déjà pris

Il contiendra ceci :
<?php

    header
('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    
header('Last-Modified: ' gmdate('D, d M Y H:i:s') . ' GMT');
    
header('Cache-Control: no-store, no-cache, must-revalidate');
    
header('Cache-Control: post-check=0, pre-check=0'false);
    
header('Pragma: no-cache');


/**
If this file is not in the FlashChat root folder, then change this
path to the location of the inc/common.php file.
*/

$GLOBALS['my_file_name'] = 'info_embedded5';

require_once(
'inc/common.php');

ChatServer::purgeExpired();

/**
Retrieves the number of users who are chatting in any room.
Leave the $room parameter empty to return the number of users in all room.
*/
function numusers$room '' )
{
    if(
$room)
    {
        
$stmt = new Statement("SELECT COUNT(*) AS numb FROM {$GLOBALS['fc_config']['db']['pref']}connections WHERE userid IS NOT NULL AND userid <> ? AND roomid=?",214);
        
$rs $stmt->processSPY_USERID $room );
    }
    else
    {
        
$stmt = new Statement("SELECT COUNT(*) AS numb FROM {$GLOBALS['fc_config']['db']['pref']}connections,{$GLOBALS['fc_config']['db']['pref']}rooms
                              WHERE userid IS NOT NULL AND userid <> ? AND ispublic IS NOT NULL
                              AND 
{$GLOBALS['fc_config']['db']['pref']}connections.roomid = {$GLOBALS['fc_config']['db']['pref']}rooms.id");
        
$rs $stmt->processSPY_USERID );
    }

    
$rec $rs->next();
    return 
$rec?$rec['numb']:0;
}

/**
Retrieves a list of the users (by login ID) who are in $room.
Leave the $room parameter empty to return a list of all users in all rooms.
*/
function usersinroom$room '' )
{
    
$list = array();

    if(
$room) {
        
$stmt = new Statement("SELECT userid, state, color, lang, roomid FROM {$GLOBALS['fc_config']['db']['pref']}connections WHERE userid IS NOT NULL AND userid <> ?  AND roomid=?");
        
$rs $stmt->processSPY_USERID $room);
    } else {
        
$stmt = new Statement("SELECT userid, state, color, lang, roomid FROM {$GLOBALS['fc_config']['db']['pref']}connections WHERE userid IS NOT NULL AND userid <> ? ");
        
$rs $stmt->processSPY_USERID );
    }

    while(
$rec $rs->next())
    {
        
$usr ChatServer::getUser($rec['userid']);
        if(
$usr == null && $GLOBALS['fc_config']['enableBots']) $usr $GLOBALS['fc_config']['bot']->getUser($rec['userid']);
        
$list[] = array_merge($usr$rec);
    }


    return 
$list;
}

/**
Retrieves a list of all available rooms, as an array.
*/
function roomlist()
{
    
$list = array();

    
// populate $list with the names of all available rooms
    
$stmt = new Statement('SELECT * FROM '.$GLOBALS['fc_config']['db']['pref'].'rooms WHERE ispublic IS NOT NULL order by ispermanent' 54 );
    
$rs $stmt->process();

    while(
$rec $rs->next()) $list[] = $rec;

    
//result will be an array of arrays like ('id' => <room id>, 'updated' = <timestamp>, 'created' => <timestamp>, 'name' => <room name>, 'ispublic' => <public flag>, 'ispermanent' => <autoclose flag>)
    
return $list;
}


$rooms roomlist();
$roomnumb sizeof($rooms);
$usernumb numusers();
?>

<html>
<head>
<title>Qui est sur le tchat</title>
<meta http-equiv=Content-Type content="text/html;  charset=8859-1">

<style type="text/css">
<!--

body { background-color: transparent; margin: 0; padding: 0; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: normal; font-size: 10px;}
.normal {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
    font-weight: normal;
    margin: 0; padding: 0;
    text-align: left;
}

#roomList { margin: 0; padding: 0; }
#roomList a { color: black; text-decoration: none; }
#roomList a:hover { text-decoration: underline; }
.userList { margin-left: 5px; margin-right: 0; margin-bottom: 0; margin-top: 0;  padding: 0; }

-->
</style>
<script type="text/javascript">

</script>
</head>
<body>
<p class="normal"><?php echo $usernumb ?> membre<?php if ($usernumb 1) echo "s" ?> connecté<?php if ($usernumb 1) echo "s"?>.</p><br />
<ul id="roomList">
<?php if($roomnumb) { ?>
        <?php foreach($rooms as $room) { ?>
                <form name="form_<?php echo $room['id']; ?>">
                <!-- <select name="sel_<?php echo $room['name']; ?>" onchange="location=this.options[this.options.selectedIndex].value"> -->
                <select name="sel_<?php echo $room['id']; ?>" onchange="window.open(form_<?php echo $room['id']; ?>.sel_<?php echo $room['id']; ?>.options[selectedIndex].value)">
                <?php
                
echo "<option value='".XOOPS_URL."/chat/flashchat.php' selected>".$room['name']." (".numusers($room['id']).")</option>";
                echo 
"<option value='".XOOPS_URL."/chat/flashchat.php'>Accéder au tchat</option>";
                    
$users usersinroom($room['id']);
                                        if (
$users) {
                                          foreach( 
$users as $user )
                                            {
                                            echo 
"<option value="".XOOPS_URL."/userinfo.php?uid=".$user['userid']."">".$user['login']."</option>";
                                            }
                                        }
                
?> </select><!-- <input type="submit" value="Go" /> --></form>
        <?php ?>
<?php 
?>
</ul>

</body>
</html>


Créer un bloc personnalisé (html), contenant ce code :
<iframe frameborder="0" src="http://votre_site/chat/info_embedded5.php" style="width: 100%; margin: 0; padding: 0; border: 0; overflow: hidden;" scrolling="no" border="0" allowtransparency="true"></iframe>


Pensez à changer l'adresse du site et éventuellement le nom du dossier contenant votre tchat.

Vous aurez le rendu que l'on voit sur les captures d'écran ci-jointes.

Il y a un lien pour accéder au tchat dans chaque menu déroulant (ouvre une nouvelle fenêtre), et on accède au profil d'un membre en sélectionnant son nom dans le menu déroulant (nouvelle fenêtre par défaut, mais j'ai laissé dans le code, ce qu'il faut pour ouvrir le profil dans la fenêtre courante, il suffit de décommenter la ligne 128 et commenter la ligne 129).

Attacher un fichier:



png  2008-10-20_113627.png (2.48 KB)
5661_48fc52be0df3b.png 194X183 px

png  2008-10-20_114314.png (2.99 KB)
5661_48fc52c3e9a05.png 191X209 px

Posté le : 20/10/2008 11:43
Partager Twitter Partagez cette article sur GG+
Re: Dialogue en direct de type Popup
Régulier
Inscrit: 17/04/2005 10:25
De Belgique
Messages: 173
MA-GN-IF-IQUE!

J'ai juste un petit probleme..

les "é" me donnent des �

"connect�."


Posté le : 20/10/2008 13:50
Partager Twitter Partagez cette article sur GG+
Re: Dialogue en direct de type Popup
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
A quel endroit ? Dans le bloc ?
Dans ce cas, essaie de remplacer les caractères accentués dans le code de info_embeddedX.php par les vrais lettres accentuées (et non pas par & eacute; comme je l'ai fait.

Posté le : 20/10/2008 14:01
Partager Twitter Partagez cette article sur GG+
Re: Dialogue en direct de type Popup
Régulier
Inscrit: 17/04/2005 10:25
De Belgique
Messages: 173
ok cela fonctionne!

Par contre sur 3 salles ouvertes je n'ai que la salle du centre (dans le bloc) qui veut bien s'ouvrir ..



Apo (qui abuse )

Posté le : 20/10/2008 14:45
Partager Twitter Partagez cette article sur GG+
Re: Dialogue en direct de type Popup
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
Bizarre, étant donné que le code source est généré dans unn boucle, il doit être ok pour tous les menus déroulant.
Là je regarde de mon côté, et j'ouvre sans souci le tchat à partir de n'importe quel menu déroulant (après c'est à moi de choisir manuellement le salon une fois dans le tchat par contre).

Tu peux nous montrer le code source de ton bloc tel qu'il est dans ton navigateur ?

Posté le : 20/10/2008 14:56
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
« 1 ... 3 4 5 (6) 7 8 9 ... 17 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

102 Personne(s) en ligne (78 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 102 | Plus ...