Fork me on GitHub




(1) 2 »


afficher tous les pm's/messages dans un bloc
Supporter Xoops
Inscrit: 07/06/2003 14:31
Messages: 572
Bonjour,

suite d'une conversation avec mes users(profs),je voudrais afficher tous les messages perso dans un bloc directement apres la connection.Comment je peux faire ca?

Posté le : 30/11/2005 13:36
Partager Twitter Partagez cette article sur GG+
Re: afficher tous les pm's/messages dans un bloc
Régulier
Inscrit: 24/08/2005 18:35
Messages: 220
je ne sais pas si ca peut marcher mais en copiant le contenu du fichier index.php du module xoopsmembers dans un bloc perso, en spécifiant qu'il s'agit de php dans ce bloc...

Posté le : 30/11/2005 19:50
Partager Twitter Partagez cette article sur GG+
Re: afficher tous les pm's/messages dans un bloc
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
salut,
suite à ta demande, j'ai testé ce qu'on pouvait faire (même si je n'en vois pas un intérêt direct
A part que les profs sont trop fatigués pour cliquer sur leur lien de messagerie (enfin perso, j'ai déjà un truc bien fluo qui leur annonce qu'il y a de nouveaux messages)

Dans un bloc personnalisé, tu peux essayer de coller le code suivant :

global $xoopsUser;
global 
$xoopsConfig;
$xoopsOption['pagetype'] = "pmsg";
include_once 
XOOPS_ROOT_PATH."/language/".$xoopsConfig['language']."/pmsg.php";
include_once 
XOOPS_ROOT_PATH."/mainfile.php";

if (!
is_object($xoopsUser)) {
    
$errormessage _PM_SORRY."<br />"._PM_PLZREG."";
    
redirect_header(XOOPS_URL."/user.php",2,$errormessage);
} else {
    
$pm_handler =& xoops_gethandler('privmessage');
    
$pm_arr =& $pm_handler->getObjects(new Criteria('to_userid'$xoopsUser->getVar('uid')));
    echo 
"<table border='0' cellspacing='1' width='100%' class='outer'>n";
    
$total_messages count($pm_arr);
    if ( 
$total_messages == ) {
        echo 
"<tr><td class='even' align='center'>"._PM_YOUDONTHAVE."</td></tr> ";
        
$display0;
    } else {
    echo 
"<tr align='center' valign='middle'><th>&nbsp;</th><th>"_PM_FROM ."</th><th>"_PM_SUBJECT ."</th><th align='center'>"_PM_DATE ."</th></tr>n";
        
$display 1;
    }
    for (
$i 0$i $total_messages$i++) {

        if (
$pm_arr[$i]->getVar('read_msg') == 1) {
            echo 
"<td valign='top' width='5%' align='center'>&nbsp;</td>n";
        } else {
            echo 
"<td valign='top' width='5%' align='center'><img src=".XOOPS_URL."/images/read.gif' alt='"._PM_NOTREAD."' /></td>n";
        }

        
$postername XoopsUser::getUnameFromId($pm_arr[$i]->getVar("from_userid"));
        echo 
"<td valign='middle' width='10%'>";
        
// no need to show deleted users
        
if ($postername) {
            echo 
"<a href=".XOOPS_URL."/userinfo.php?uid=".$pm_arr[$i]->getVar("from_userid").">".$postername."</a>";
        } else {
            echo 
$xoopsConfig['anonymous'];
        }
        echo 
"</td>n";
        echo 
"<td valign='middle' width='10%'><a href='".XOOPS_URL."/readpmsg.php?start=$i&amp;total_messages=$total_messages'>".$pm_arr[$i]->getVar("subject")."</a></td>";
        echo 
"<td valign='middle' align='center' width='20%'>".formatTimestamp($pm_arr[$i]->getVar("msg_time"))."</td></tr>";
    }
    echo 
"</table>";
}


Il y a sans doute un peu de travail au niveau de la mise en page (largeur de colonne, etc...)

Je te laisse voir ce que ça donne ici :

http://xoops.romanais.info

avec chess/chess (en login/mot de passe)
puis archives/archives (login/mot de passe)

bien entendu, tu peux placer le bloc où tu veux, là je l'ai calé à gauche, et uniquement sur la page d'accueil.

Exemple avec 2 messages dans la boîte, un lu, l'autre non

Open in new window

Exemple, avec aucun message dans la boîte

Open in new window

Posté le : 01/12/2005 11:43
Partager Twitter Partagez cette article sur GG+
Re: afficher tous les pm's/messages dans un bloc
Supporter Xoops
Inscrit: 07/06/2003 14:31
Messages: 572
Salut,

merci blueteen pour ton script,ce excactement ce que cherché.Ca marche pile poil. :banane:

Citation :

blueteen a écrit:
salut,
suite à ta demande, j'ai testé ce qu'on pouvait faire (même si je n'en vois pas un intérêt direct
A part que les profs sont trop fatigués pour cliquer sur leur lien de messagerie (enfin perso, j'ai déjà un truc bien fluo qui leur annonce qu'il y a de nouveaux messages)


Bah enfaite je veux les personnes voit vraiment leur messages,car qq fois il sont tres important.Comme ca il sont pas d'excuses de ne le pas voir.

Parcontre je supose ton script affiche tout les messages de la boite perso.Comment il faut faire il affiche que les dernier 10 Messages pour pas trop encombre le site?

Posté le : 01/12/2005 19:15
Partager Twitter Partagez cette article sur GG+
Re: afficher tous les pm's/messages dans un bloc
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
tout à fait, ça récupère tous les messages.
c'est pour ça que dans un second temps j'allais regarder pour limiter à 5 ou 10.
je regarde ça demain

Posté le : 01/12/2005 19:29
Partager Twitter Partagez cette article sur GG+
Re: afficher tous les pm's/messages dans un bloc
Supporter Xoops
Inscrit: 07/06/2003 14:31
Messages: 572
Trop sympa

Je sais je vais apparaitre chiant,mais j'aime bien quand les choses sont carré.Ce possible d'ajouter une image devant pour les messages deja lu comme sur les messages non lu et de mettre un lien sur les deux.Car je vois grand comme une maison la question avenir de mes profs."Pkoi ca marche pas,si je clique sur l'enveloppe?"
(Je remplacer l'image d'origine avec une envelope fermé pour les messages non lu)

Enfin une toute dernier choses ajouter des lignes de separation entre les lignes de messages pour ca soit plus visible.Voila apres je t'enbete plus.Promis

Posté le : 01/12/2005 20:05
Partager Twitter Partagez cette article sur GG+
Re: afficher tous les pm's/messages dans un bloc
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
Je viens de rajouter l'enveloppe comme tu le souhaitais.
je te laisse modifier le lien vers l'image pour que ça colle avec tes propres images !

Ca, ce n'était pas très dur à faire.
J'ai cherché où se trouvait l'image qui apparaissait à l'écran, dans le code (read.gif)

Et j'ai rajouté une copie du lien vers cette image (en changeant le nom de l'image)

if ($pm_arr[$i]->getVar('read_msg') == 1)
{
echo 
"<td valign='top' width='5%' align='center'>
<img src="
.XOOPS_URL."/images/read.gif' alt='Lu' /></td>n";
}
else {
     echo 
"<td valign='top' width='5%' align='center'>
     <img src="
.XOOPS_URL."/images/notread.gif' alt='Non Lu' /></td>n";
     }


Ca donne ça à présent

Open in new window

Je vais rajouter le lien sur ces images dans la foulée.

Posté le : 02/12/2005 09:49
Partager Twitter Partagez cette article sur GG+
Re: afficher tous les pm's/messages dans un bloc
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
Ca y est, les images sont cliquables aussi

global $xoopsUser;
global 
$xoopsConfig;
$xoopsOption['pagetype'] = "pmsg";
include_once 
XOOPS_ROOT_PATH."/language/".$xoopsConfig['language']."/pmsg.php";
include_once 
XOOPS_ROOT_PATH."/mainfile.php";

if (!
is_object($xoopsUser)) {
    
$errormessage _PM_SORRY."<br />"._PM_PLZREG."";
    
redirect_header(XOOPS_URL."/user.php",2,$errormessage);
} else {
    
$pm_handler =& xoops_gethandler('privmessage');
    
$pm_arr =& $pm_handler->getObjects(new Criteria('to_userid'$xoopsUser->getVar('uid')));
    echo 
"<table border='0' cellspacing='1' width='100%' class='outer'>n";
    
$total_messages count($pm_arr);
    if ( 
$total_messages == ) {
        echo 
"<tr><td class='even' align='center'>"._PM_YOUDONTHAVE."</td></tr> ";
        
$display0;
    } else {
    echo 
"<tr align='center' valign='middle'><th>&nbsp;</th><th>"_PM_FROM ."</th><th>"_PM_SUBJECT ."</th><th align='center'>"_PM_DATE ."</th></tr>n";
        
$display 1;
    }
    for (
$i 0$i $total_messages$i++) {

        if (
$pm_arr[$i]->getVar('read_msg') == 1) {
            echo 
"<td valign='top' width='5%' align='center'><a href='".XOOPS_URL."/readpmsg.php?start=$i&amp;total_messages=$total_messages'><img src=".XOOPS_URL."/images/read.gif' alt='Lu' /></a></td>n";
        } else {
            echo 
"<td valign='top' width='5%' align='center'><a href='".XOOPS_URL."/readpmsg.php?start=$i&amp;total_messages=$total_messages'><img src=".XOOPS_URL."/images/notread.gif' alt='Non Lu' /></a></td>n";
        }

        
$postername XoopsUser::getUnameFromId($pm_arr[$i]->getVar("from_userid"));
        echo 
"<td valign='middle' width='10%'>";
        
// no need to show deleted users
        
if ($postername) {
            echo 
"<a href=".XOOPS_URL."/userinfo.php?uid=".$pm_arr[$i]->getVar("from_userid").">".$postername."</a>";
        } else {
            echo 
$xoopsConfig['anonymous'];
        }
        echo 
"</td>n";
        echo 
"<td valign='middle' width='10%'><a href='".XOOPS_URL."/readpmsg.php?start=$i&amp;total_messages=$total_messages'>".$pm_arr[$i]->getVar("subject")."</a></td>";
        echo 
"<td valign='middle' align='center' width='20%'>".formatTimestamp($pm_arr[$i]->getVar("msg_time"))."</td></tr>";
    }
    echo 
"</table>";
}


Je regarde pour rajouter une séparation entre les mesages, et limiter à 5 ou 10 messages privés.

Posté le : 02/12/2005 09:54
Partager Twitter Partagez cette article sur GG+
Re: afficher tous les pm's/messages dans un bloc
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
Voilà, j'ai limité dans le cas présent à 2 messages privés affichés, les plus récents (voir sur http://xoops.romanais.info avec le compte chess/chess)
Il y a 3 Pm dans la boîte, mais seuls 2 sont affichés.

J'ai rajouté des lignes pour éclaircir tout ça.
Tu peux en rajouter/modifier (des verticales par exemple), en modifiant la feuille de style de ton thème (j'ai rajouté le code suivant)

.pm1 {border-left1px solid silverborder-bottom1px solid silver;}
.
pm2 {border-right1px solid silverborder-bottom1px solid silver;}
.
pm3 {border-bottom1px solid silver;}


global $xoopsUser;
global 
$xoopsConfig;
$xoopsOption['pagetype'] = "pmsg";
include_once 
XOOPS_ROOT_PATH."/language/".$xoopsConfig['language']."/pmsg.php";
include_once 
XOOPS_ROOT_PATH."/mainfile.php";

if (!
is_object($xoopsUser)) {
    
$errormessage _PM_SORRY."<br />"._PM_PLZREG."";
    
redirect_header(XOOPS_URL."/user.php",2,$errormessage);
} else {
    
$pm_handler =& xoops_gethandler('privmessage');
    
$pm_arr =& $pm_handler->getObjects(new Criteria('to_userid'$xoopsUser->getVar('uid')));
    echo 
"<table border='0' cellspacing='1' width='100%'>n";
    
$total_messages count($pm_arr);
    if ( 
$total_messages == ) {
        echo 
"<tr><td class='even' align='center'>"._PM_YOUDONTHAVE."</td></tr> ";
        
$display0;
    } else {
    echo 
"<tr align='center' valign='middle'><th>&nbsp;</th><th>"_PM_FROM ."</th><th>"_PM_SUBJECT ."</th><th align='center'>"_PM_DATE ."</th></tr>n";
        
$display 1;
    }

$max_messages 0;
if (
$total_messages >2)
    {
    
$max_messages $total_messages-2;
    }

    for (
$i $max_messages$i $total_messages$i++) {

        if (
$pm_arr[$i]->getVar('read_msg') == 1) {
            echo 
"<td valign='top' width='5%' align='center' class='pm1'><a href='".XOOPS_URL."/readpmsg.php?start=$i&amp;total_messages=$total_messages'><img src='".XOOPS_URL."/images/read.gif' alt='Lu' /></a></td>n";
        } else {
            echo 
"<td valign='top' width='5%' align='center' class='pm1'><a href='".XOOPS_URL."/readpmsg.php?start=$i&amp;total_messages=$total_messages'><img src='".XOOPS_URL."/images/notread.gif' alt='Non Lu' /></a></td>n";
        }

        
$postername XoopsUser::getUnameFromId($pm_arr[$i]->getVar("from_userid"));
        echo 
"<td valign='middle' width='10%' class='pm3'>";
        
// no need to show deleted users
        
if ($postername) {
            echo 
"<a href=".XOOPS_URL."/userinfo.php?uid=".$pm_arr[$i]->getVar("from_userid").">".$postername."</a>";
        } else {
            echo 
$xoopsConfig['anonymous'];
        }
        echo 
"</td>n";
        echo 
"<td valign='middle' width='10%' class='pm3'><a href='".XOOPS_URL."/readpmsg.php?start=$i&amp;total_messages=$total_messages'>".$pm_arr[$i]->getVar("subject")."</a></td>";
        echo 
"<td valign='middle' align='center' width='20%' class='pm2'>".formatTimestamp($pm_arr[$i]->getVar("msg_time"))."</td></tr>";
    }

    echo 
"</table>";
}


Les valeurs à changer selon le nombre de Pm que tu veux afficher sont dans cette partie de code

Citation :

if ($total_messages >2) //remplacer le 2 par la valeur choisie
{
$max_messages = $total_messages-2; //remplacer le 2 par la valeur choisie
}


Il faut remplacer les valeurs '2' par celle correspondant au nombre de messages à afficher.

Posté le : 02/12/2005 10:58

Edité par blueteen sur 02/12/2005 11:22:15
Edité par blueteen sur 04/12/2005 18:39:52
Partager Twitter Partagez cette article sur GG+
Re: afficher tous les pm's/messages dans un bloc
Supporter Xoops
Inscrit: 07/06/2003 14:31
Messages: 572
La vraiment pour moi ce parfait un mega grand graciasdankemercithanks à toi.

Je le tester cette aprem ce bloc et franchment ce pratique de voir tout suite les messages en navigent sur un site.Si tu recois tout le 5 min un message.

p.S:
Je essayer d'ajouter a la fin du bloc "Lire tous vos messages ..." en ajoutent <a href="<{$xoops_url}>/viewpmsg.php">Lire tous les messages ...<</a> mais ca marche pas.Peut tu me dire comment il faut faire.Apres ca, ce vraiment ma dernier dernier demande niv ce sujet

Posté le : 02/12/2005 18:34
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 »



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

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