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>

Répondre à