Bonjour,
Je suis arriv� � mettre en place le syst�me de visualisation des personnes
connect�es en 5 �tapes vous pourrez retrouver une doc dessus sur mon site
http://tlpb.free.fr
-Maintenant mon but serai d'automatiser ceci,
-donc encore une fois tout conseil de votre part sera le bienvenu,
- al'heure actuelle cela marche mais si vous avez des critiques n'hesitez
pas.
1) Tout d'abord nous allons modifier les propri�t�s des membres en ajoutant
quelques propri�t�s:
Dans portal_memberdata puis onglet properties ajout� 3variables
is_connect de type boolean � faux (decocher)
setConnect de type date (met � jour la date � chaque click)
idle de type int mis � 600 par defaut (seconde d'inactivit�
possible)
2) Copier le script suivant avec le nom listMembers.py attention �
l'indentation
def listMembers(self):
if self.portal_membership.getAuthenticatedMember().getUserName() !=
'Anonymous User':
self.portal_membership.getAuthenticatedMember().setProperties(setConnect=sel
f.ZopeTime())
member= []
members = self.portal_membership.listMembers()
for user in members:
if user.getProperty('is_connect') == 1:
if
(self.ZopeTime().timeTime()-user.getProperty('setConnect').timeTime()) <
user.getProperty('idle'):
mb=self.portal_memberdata.wrapUser(user)
member.append(mb)
return member
cr�� une external methode donnez lui le nom : listMembers et en module et
install name listMembers
3) Modifier les scripts logged_in dans cps_default et ajout� la ligne
suivante:
connect python: member.setProperties(is_connect=1);
timeconnect python: member.setProperties(setConnect=here.ZopeTime());
a chaque fois que vous voyez first_time
ajouter dans logout (se trouvant dans portal_skin/control) la ligne
context.portal_membership.getAuthenticatedMember().setProperties(is_connect=
0)
4) Enfin vous pouvez creer ajouter une box :
<metal:block define-macro="basebox_whoonline">
<div metal:define-macro="portlet"
tal:omit-tag="" class="box">
<div class="box">
<div class="body"
tal:define="
who_online here/listMembers | nothing;
view_more python:test(len(who_online)>5,1,0);">
<div class="content odd">
<div class="title2">Qui est en Ligne ?</div>
<hr class="netscape4">
<ul>
<li tal:condition="not: who_online" >Aucun Membre En
Ligne</li>
<span tal:condition="who_online">
<li>membre(s) connect�(s) :<span
tal:content="python: len(who_online)">0</span></li>
</span>
<ul>
<li tal:condition="who_online"
tal:repeat="member python: who_online[:5]">
<span tal:define="member_id
member/getUserName;
member_home
python:container.portal_membership.getHomeUrl(member_id);
">
<a href="#" tal:condition="member_home"
tal:attributes="href
member_home"
tal:content="member_id">id</a>
<span tal:condition="not: member_home"
tal:content="member_id">id
</span>
</span>
</li>
</ul>
</ul>
<div class="" tal:condition="view_more">
<a href="#" tal:attributes="href
string:${here/portal_url}/members_online;">
<span i18n:translate="">Voir les autres Membres en
ligne</span>...
</a>
</div>
</div>
</div>
</div>
</div>
</metal:block>
5) Enfin cr�er une page template nomme members_online avec le code suivant
qui fera un recapitulatif detaill� des personnes connect�es
<metal:html>
<metal:body use-macro="here/main_template/macros/master">
<div metal:fill-slot="main"
tal:define="who_online here/listMembers | nothing;">
<table border=0 cellspacing="1">
<tbody>
<tr bgcolor=#DEE7EC>
<td>Membre</td>
<td>eMail</td>
<td>derni�re connexion</td>
<td>en ligne depuis</td>
<td> Derni�re activit�e </td>
<tr>
<div>
<metal:block tal:repeat="member python: who_online[:5]">
<span tal:define="getUserName member/getUserName">
<tr tal:condition="python:not(len(getUserName)==0)">
<td>
<span tal:content="member/getUserName"> member
id</span>
</td>
<td><a tal:attributes="href
string:mailto:${member/email}">
<span tal:content="member/email"> email</span></a>
</td>
<td><span tal:define="time python:
member.login_time.strftime('%X %x') "
tal:content="time">time</span>
</td>
<td>
<span tal:define="time python:
here.ZopeTime().timeTime()-member.login_time.timeTime();
time python: int(time)/60"
tal:content="time"> en ligne</span> min
</td>
<td>
<span tal:define="time python:
member.setConnect.strftime('%X %x');
"
tal:content="time"> en ligne</span>
</td>
</tr>
</span>
</metal:block>
</div>
</tbody>
</table>
<br/>
</div>
</metal:body>
</metal:html>
Jonathan Briffaut
_______________________________________________
cps-users-fr
Adresse de la liste : [email protected]
Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>