PDA

Afficher la version complète : Widgets Qui est en ligne dans la Sidebar



OlijO
18/12/2009, 22h49
Ce Gadget ou Widget vous permet d'afficher un cadre avec les utilisateurs en ligne sur votre page d'accueil CMS.

Hack mis à jour en version 1.1 le 10/10/2010.


Remerciements et support


Ce Hack a été traduit en français pour vBulletin-Ressources avec l'autorisation explicite de son auteur. / This Hack was translated into French for vBulletin-Ressources with the explicit authorization of its author.



vBulletin-Ressources et son équipe offrira du support vis à vis des hacks traduits, bien sûr, dans la mesure du possible de chacun, autant en terme de temps que de connaissances/ vBulletin-Ressources and its team will offer support for the translated hacks, of course, as far as possible for everyone, as much in term of time that knowledge.



vBulletin-Ressources remercie l'auteur du hack pour avoir fourni son autorisation. / vBulletin-Ressources thanks the author for the hack to have provided its authorization.


Conception


Auteur du Hack / Author Of Hack : Lynne (http://www.vbulletin.org/forum/member.php?u=65230)
Source / Link of Thread : Widget - Users Online (http://www.vbulletin.org/forum/showthread.php?t=230428)
Version du hack / Hack version : 1.1
Version vBulletin Requise / Version vBulletin Required : vB 4.x
Testé / Tested: oui sur 4.0 RC2

Traducteur / Translator: OlijO



Copyright © 2006-2009 vBulletin-Ressources.com - Tous droits réservés Uniquement pour nos traductions / Copyright © 2006-2009 vBulletin-Ressources.com - All Rights Reserved Only for ours translations


Installation


Création d'un nouveau Template :
Aller dans votre AdminCP et dans gestion de style, choisir le style pour lequel vous désirez ajouter le Widget et dans le menu de droite choisir l'option ajouter un template.
-Titre : vbcms_widget_execphp_activeusers
-Code à ajouter :

<vb:if condition="$show['loggedinusers']"> <div class="cms_widget"> <div class="block"> <div class="cms_widget_header"> <h3><img src="{vb:stylevar imgdir_misc}/users_online.png" alt="{vb:rawphrase currently_active_users}" />{vb:rawphrase currently_active_users}</h3> </div> <div class="cms_widget_content"> <div> <p>{vb:rawphrase there_are_x_online, {vb:raw totalonline}} <span class="shade">{vb:rawphrase x_members_and_y_guests, {vb:raw numberregistered}, {vb:raw numberguest}}</span></p> <ol class="commalist" id="wgo_onlineusers_list"> {vb:raw activeusers} </ol> </div> </div> </div> </div> </vb:if>
Créer un nouveau Plugin : Dans votre AdminCP, Modules et Produits, choisir "ajouter un module"
-Produit : vBulletin
-Emplacement du crochet : cache_templates
-Titre : Cache template for Users Online Widget
-Code :

if (THIS_SCRIPT == 'vbcms')
{
$cache[] = 'forumhome_loggedinuser';
}
-Plugin actif : Oui
Créer un nouveau Widget : Dans votre AdminCP menu vBulletin CMS choisir Widget (Gadget).
-Créer un nouveau Widget (gadget).
-Type de Widget : PHP Direct Execution
-Titre : Users Online
-Sauver.
Une fois sauver cliquer sur le lien pour le configurer.
-Changer le nom du template par : vbcms_widget_execphp_activeusers
-Ajouter au code déjà présent le code suivant :

require_once(DIR . '/includes/functions_bigthree.php');

$activeusers = '';
if ((vB::$vbulletin->options['displayloggedin'] == 1 OR vB::$vbulletin->options['displayloggedin'] == 2 OR (vB::$vbulletin->options['displayloggedin'] > 2 AND vB::$vbulletin->userinfo['userid'])) AND !$show['search_engine'])
{
$datecut = TIMENOW - vB::$vbulletin->options['cookietimeout'];
$numbervisible = 0;
$numberregistered = 0;
$numberguest = 0;

$forumusers = vB::$db->query_read_slave("
SELECT
user.username, (user.options & " . vB::$vbulletin->bf_misc_useroptions['invisible'] . ") AS invisible, user.usergroupid, user.lastvisit,
session.userid, session.inforum, session.lastactivity, session.badlocation,
IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid
$hook_query_fields
FROM " . TABLE_PREFIX . "session AS session
LEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = session.userid)
$hook_query_joins
WHERE session.lastactivity > $datecut
$hook_query_where
" . iif(vB::$vbulletin->options['displayloggedin'] == 1 OR vB::$vbulletin->options['displayloggedin'] == 3, "ORDER BY username ASC") . "
");

if (vB::$vbulletin->userinfo['userid'])
{
// fakes the user being online for an initial page view of index.php
vB::$vbulletin->userinfo['joingroupid'] = iif(vB::$vbulletin->userinfo['displaygroupid'], vB::$vbulletin->userinfo['displaygroupid'], vB::$vbulletin->userinfo['usergroupid']);
$userinfos = array
(
vB::$vbulletin->userinfo['userid'] => array
(
'userid' =>& vB::$vbulletin->userinfo['userid'],
'username' =>& vB::$vbulletin->userinfo['username'],
'invisible' =>& vB::$vbulletin->userinfo['invisible'],
'inforum' => 0,
'lastactivity' => TIMENOW,
'lastvisit' =>& vB::$vbulletin->userinfo['lastvisit'],
'usergroupid' =>& vB::$vbulletin->userinfo['usergroupid'],
'displaygroupid' =>& vB::$vbulletin->userinfo['displaygroupid'],
'infractiongroupid' =>& vB::$vbulletin->userinfo['infractiongroupid'],
)
);
}
else
{
$userinfos = array();
}
$inforum = array();

while ($loggedin = vB::$db->fetch_array($forumusers))
{
$userid = $loggedin['userid'];
if (!$userid)
{ // Guest
$numberguest++;
if (!isset($inforum["$loggedin[inforum]"]))
{
$inforum["$loggedin[inforum]"] = 0;
}
if (!$loggedin['badlocation'])
{
$inforum["$loggedin[inforum]"]++;
}
}
else if (empty($userinfos["$userid"]) OR ($userinfos["$userid"]['lastactivity'] < $loggedin['lastactivity']))
{
$userinfos["$userid"] = $loggedin;
}
}

if (!vB::$vbulletin->userinfo['userid'] AND $numberguest == 0)
{
$numberguest++;
}

foreach ($userinfos AS $userid => $loggedin)
{
$numberregistered++;
if ($userid != vB::$vbulletin->userinfo['userid'] AND !$loggedin['badlocation'])
{
if (!isset($inforum["$loggedin[inforum]"]))
{
$inforum["$loggedin[inforum]"] = 0;
}
$inforum["$loggedin[inforum]"]++;
}
fetch_musername($loggedin);

if (fetch_online_status($loggedin))
{
$numbervisible++;
$show['comma_leader'] = ($activeusers != '');
$templater = vB_Template::create('forumhome_loggedinuser');
$templater->register('loggedin', $loggedin);
$activeusers .= $templater->render();
vB_Template::preRegister('vbcms_widget_execphp_act iveusers', array('activeusers' => $activeusers));
}
}

// memory saving
unset($userinfos, $loggedin);

vB::$db->free_result($forumusers);

$totalonline = $numberregistered + $numberguest;
$numberinvisible = $numberregistered - $numbervisible;

vB::$vbulletin->datastore->fetch(array('maxloggedin'));
if (vB::$vbulletin->maxloggedin === NULL)
{
vB::$vbulletin->maxloggedin = array();
}
if (intval(vB::$vbulletin->maxloggedin['maxonline']) <= $totalonline)
{
vB::$vbulletin->maxloggedin['maxonline'] = $totalonline;
vB::$vbulletin->maxloggedin['maxonlinedate'] = TIMENOW;
build_datastore('maxloggedin', serialize(vB::$vbulletin->maxloggedin), 1);
}

$recordusers = vb_number_format(vB::$vbulletin->maxloggedin['maxonline']);
$recorddate = vbdate(vB::$vbulletin->options['dateformat'], vB::$vbulletin->maxloggedin['maxonlinedate'], true);
$recordtime = vbdate(vB::$vbulletin->options['timeformat'], vB::$vbulletin->maxloggedin['maxonlinedate']);

$show['loggedinusers'] = true;

$statsarray = array('onlinestats' => $onlinestats,
'totalonline' => $totalonline,
'numberregistered' => $numberregistered,
'numberguest' => $numberguest,
'show' => $show,
'recordusers' => $recordusers,
'recorddate' => $recorddate,
'recordtime' => $recordtime,
);

vB_Template::preRegister('vbcms_widget_execphp_act iveusers', $statsarray);
}
-Enregistrer.
Optionnel, si votre nouveau Widget ne s'affiche pas il faut le configurer dans le gestionnaire de mise en page pour qu'il s'affiche. il faut donc éditer (modifier) la mise en page par défaut.
Là, les Widget s'affiche à gauche, sélectionner le widget à ajouter et un clic sur la flèche le fait passer à droite dans la mise en page. Il suffit ensuite de le sélectionner avec la souris pour pouvoir le placer où on le souhaite. Sauvegardez et c'est ok.


Démonstration/Captures


et en pièces jointes des screenshots explicatifs

Ombre
18/12/2009, 23h10
Bonsoir, merci pour cette traduction.

Allan
18/12/2009, 23h41
Merci pour la trad, titre renommé ;)

windows
12/02/2010, 19h50
Excellent !!!! En plus j'ai réussi du premier coup ^^ Bon tuto merci merci merci :)

Ombre
12/02/2010, 19h53
Ah ça rigole pas sur vb-r :D

Par contre tu es sous vb4 il me semble? change ton profile stp ;)

windows
12/02/2010, 19h55
C'est fait ^^

Simon
12/02/2010, 22h46
Tiens je l'avais loupé celui-là. Merci pour la traduction Olijo :)

windows
13/02/2010, 18h05
Cela fonctionne aussi pour le Forum. J'ai testé et sa fonctionne :) Donc, c'est ok pour le CMS et pour le Forum ;)

Simple information !

Billyboule
13/02/2010, 19h04
Merci Olijo ;)

SynthaxError
28/03/2010, 11h41
Bonjour et merci pour cette trad byby

Lo'
29/03/2010, 19h16
Merci pour cette traduction ;)

Spider-Man
01/04/2010, 21h44
Bonjour et encore une autre fois j'est louper celui ouff sa commence à devenir une habitude de ma part :D

Merci pour cette trad ;)

Ombre
01/04/2010, 21h48
Bonjour et encore une autre fois j'est louper celui ouff sa commence à devenir une habitude de ma part :D

Merci pour cette trad ;)Bonsoir Spider, que veux tu la vieillesse :D

Billyboule
10/10/2010, 13h36
Hack mis à jour en version 1.1.

Bonne installation. :)

Ombre
10/10/2010, 14h42
Merci pour cette mise à jour Billy :)

cobra1162
11/10/2010, 00h39
merci pour la trad et j'ai une question il n'y a pas possibilité de montrer juste le staff en ligne ? modo et admin

Edward
11/10/2010, 21h12
merci bcp

please The module in EN

Ombre
11/10/2010, 21h25
Bonsoir, pourquoi t'orienter sur vb-r qui est un site francophone :)

Le mieux est d'aller recherché sur vb.org ce que tu désires, tu auras aucuns soucis pour trouvé ton bonheur en Anglais, sinon tu peux toujours au travers de nos sujets de ressources trouvé le lien de la ressource traduite pointent sur la discussion original qui est le plus souvent sur vb.org: http://www.vbulletin.org/forum/showthread.php?t=230428.