none
Webpart d'utilisateurs Online RRS feed

  • Question

  • Bonjour,

    j'essaie de créer un Webpart avec les utilisateurs online!

    pour l'instant, je liste les utilisateurs du site à l'aide du code suivant :

    Extrait de code

    protected override void Render(HtmlTextWriter _output)
    {  

    SPSecurity.RunWithElevatedPrivileges(delegate()

         {

         using (SPSite mySite = new SPSite("http://serveur/default.aspx"))

              {                   

              using (SPWeb myWeb = mySite.OpenWeb())

                   {

                   foreach (SPUser curUser in myWeb.Users)

                        {

                        if (curUser.Name != "")

                             _output.Write("<b>{0}</b><br/>", curUser.Name);

                             else

                             _output.Write("<b>{0}</b><br/>",curUser.LoginName);                           

                        }
                    }
               }
          });
    }


    cependant, je cherche dans le SDK un moyen d'obtenir les informations sur le status de l'utilisateur pour savoir s'il est online ou non, mais je ne trouve rien Tongue Tied

    est ce que quelquelqu'un aurait une idée?

    merki

    question bonus Big Smile
    comment je peux remplacer new SPSite("http://serveur/default.aspx") pour ne pas renseigner l'url du serveur?
    jeudi 3 janvier 2008 09:13

Toutes les réponses

  • J'ai trouvé pour ma 2e question, et corriger un peu mon code précédent

    Extrait de code

    protected override void Render(HtmlTextWriter _output)
            { 
                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    //recupere l'id du site parent
                    Guid currentSiteID = SPContext.Current.Site.ID;
                   
                    using (SPSite mySiteCollection = new SPSite(currentSiteID))
                    {    
                        using (SPWeb myWeb = mySiteCollection.OpenWeb())
                        {
                            foreach (SPUser curUser in myWeb.SiteUsers)
                            {

                               if (curUser.Name != "")
                                    _output.Write("<b>{0}</b><br/>", curUser.Name);
                                else
                                    _output.Write("<b>{0}</b><br/>",curUser.LoginName);                         
                            }

                        }
                    }
                });
            }


    jeudi 3 janvier 2008 10:16
  • Bonjour

     

    En fait, c'est le Membership Provider qui gère cette info, pas SharePoint.

     

    Soit votre provider le gère (par exemple le SqlMembershipProvider) et vous avez configuré la fenê^tre de présence dans le Web.config (attribut userIsOnlineTimeWindow="20" du noeud ), soit vous êtes bon pour le gérer à la main (en gardant en cache, en session, en base, ...) la présence.

     

    Pour info, dans le premier cas (support de la présence, voici le bout de code qui vous sert à récupérer l'utilisateur et retrouver son statut :

     

    Extrait de code

    MembershipUser mUser = Membership.FindUsersByName(curUser.LoginName);

    _output.Write("Is online : {0}, mUser.IsOnline);

     

     

    N'hésitez pas à me dire si cela vous a avancé.

    vendredi 4 janvier 2008 23:28
  • Bonjour,

    Je suis un collègue de Ominius.
    Pour la réalisation de ce webpart nous utilisons l'authentification par active directory et non pas par SQL.
    La première solution, en utilisant le Membership Provider ne semble donc pas possible dans notre cas.

    Concernant la seconde solution, de gérer la connexion manuellement, je ne vois pas comment créer une fonction sous sharepoint qui serait appellée toutes les "n" secondes pour tester le status d'un utilisateur.


    lundi 7 janvier 2008 10:10
  • Bonsoir

    Vous pouvez vous inspirer de ce qui est expliqué ici : http://msdn2.microsoft.com/fr-fr/library/ms178583(VS.80).aspx et ici : http://blogs.sqlxml.org/bryantlikes/pages/583.aspx

    Après, à vous de voir si vous stockez en base, en mémoire ou ailleurs les données.
    lundi 7 janvier 2008 22:02