Share Point People Editor

  • Upload
    bahba

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

  • 7/25/2019 Share Point People Editor

    1/10

    Gestion des utilisateurs et

    utilisation du contrle PeopleEditor

    Par Philippe Vialatte

    Date de publication : 8 janvier 2013

    Dans cet article, on va voir comment lister les utilisateurs d'un site SharePoint, ainsi que

    comment utiliser le contrle PeopleEditor pour ajouter ou modifier un utilisateur existant.

    http://philippe.developpez.com/http://www.developpez.net/forums/u42337/philippe-vialatte/http://www.developpez.com/
  • 7/25/2019 Share Point People Editor

    2/10

    Gestion des utilisateurs et utilisation du contrle PeopleEditor par Philippe Vialatte

    - 2 -

    Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par

    les droits d'auteur. Copyright 2013 Philippe Vialatte. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans

    l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.

    http://philippe.developpez.com/articles/SharepointPeopleEditor/

    I - Introduction..............................................................................................................................................................3

    II - Premire version du contrle.................................................................................................................................3

    III - Introduction du PeopleEditor.................................................................................................................................5

    III.1 - Les proprits importantes du PeopleEditor................................................................................................ 5

    III.2 - Ajout d'un champ de type PeopleEditor.......................................................................................................6

    IV - Sauvegarde / modification d'un utilisateur existant.............................................................................................. 6

    V - Fonctionalites "avances" du PeopleEditor...........................................................................................................7V-1 - Rcupration de donnes supplmentaires................................................................................................. 7

    V-2 - Appel de JavaScript aprs rsolution AD.....................................................................................................8

    VI - Remerciements...................................................................................................................................................10

    http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://www.developpez.net/forums/u42337/philippe-vialatte/http://www.developpez.com/
  • 7/25/2019 Share Point People Editor

    3/10

    Gestion des utilisateurs et utilisation du contrle PeopleEditor par Philippe Vialatte

    - 3 -

    Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par

    les droits d'auteur. Copyright 2013 Philippe Vialatte. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans

    l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.

    http://philippe.developpez.com/articles/SharepointPeopleEditor/

    I - Introduction

    La version 3 de Windows SharePoint Services contient une mine de nouveaux contrles trs intressants. Au nombre

    de ces contrles, le PeopleEditor est, mon avis, un des plus sympathiques avoir dans notre boite outils.

    Pour les besoins de l'article, on va dvelopper un petit contrle permettant de lister les utilisateurs, d'diter leurs

    informations, et d'ajouter des utilisateurs SharePoint.

    Classiquement, on l'utilisera ds que notre workflow, webpart ou page web ncessitera de slectionner une ou

    plusieurs personnes de faon dterministe (comprendre, en ayant une garantie que la personne slectionne existe

    bel et bien).

    Le dveloppement est fait sur une machine avec WSS install en local, et avec un utilisateur administrateur de liste.

    Pour gagner un peu de temps, les dveloppements sont faits sous forme de user control, et chargs dans

    SharePoint par le biais de la SmartPart (voir http://lefortludovic.developpez.com/tutoriels/sharepoint/smartpart/ pour

    une explication sur la SmartPart).

    II - Premire version du contrle

    On va commencer par une interface graphique minimale

    Pour raliser cette interface, on va crer un fichier ManageUsers.ascx dans un site web, ainsi que le fichier

    ManageUsers.ascx.cs correspondant pour le code-behind.

    http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://www.developpez.net/forums/u42337/philippe-vialatte/http://www.developpez.com/
  • 7/25/2019 Share Point People Editor

    4/10

    Gestion des utilisateurs et utilisation du contrle PeopleEditor par Philippe Vialatte

    - 4 -

    Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par

    les droits d'auteur. Copyright 2013 Philippe Vialatte. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans

    l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.

    http://philippe.developpez.com/articles/SharepointPeopleEditor/

    Une fois ce fichier cr, on va coder notre petite interface, ainsi que le code-behind permettant, lorsque l'on

    slectionne un utilisateur, d'afficher, dans lestextbox correspondantes, le nom, les informations de login, mail et les

    notes correspondant l'utilisateur.

    Users :

    Name :

    Login :

    Mail :

    Notes :

    Maintenant, le code-behind :

    usingSystem;

    usingSystem.Web.UI;usingSystem.Web.UI.WebControls;

    usingMicrosoft.SharePoint;

    publicpartial classManageUsers :UserControl {

    protectedvoidPage_Load(objectsender,EventArgs e) {

    if(!IsPostBack) LoadUsersCombobox();

    }

    privatevoidLoadUsersCombobox() {

    dropUsers.Items.Clear();

    dropUsers.Items.Add("");

    foreach(SPUser user inSPContext.Current.Web.SiteUsers) {

    dropUsers.Items.Add(newListItem(user.Name,user.ID.ToString()));

    }

    }

    protectedvoiddropUsers_SelectedIndexChanged (objectsender,EventArgs e) {

    ClearUserPanel();

    http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://www.developpez.net/forums/u42337/philippe-vialatte/http://www.developpez.com/
  • 7/25/2019 Share Point People Editor

    5/10

    Gestion des utilisateurs et utilisation du contrle PeopleEditor par Philippe Vialatte

    - 5 -

    Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par

    les droits d'auteur. Copyright 2013 Philippe Vialatte. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans

    l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.

    http://philippe.developpez.com/articles/SharepointPeopleEditor/

    if(!string.IsNullOrEmpty(dropUsers.SelectedValue)) { LoadUser(Convert.ToInt32(dropUsers.SelectedValue));

    }

    }

    privatevoidClearUserPanel() {

    tbName.Text =string.Empty;

    tbLogin.Text =string.Empty;

    tbMail.Text =string.Empty; tbNotes.Text =string.Empty;

    }

    privatevoidLoadUser(intuserId) {

    SPUser user =web.SiteUsers.GetByID(userId); tbName.Text =user.Name;

    tbLogin.Text =user.LoginName;

    tbMail.Text =user.Email;

    tbNotes.Text =user.Notes; }

    }

    Le code en lui-mme ne pose pas de relles difficults, on va tout de mme revenir sur la seule ligne concernant

    SharePoint pour le moment (ne vous inquitez pas, a ne va pas durer...), savoir:

    foreach(SPUser user inSPContext.Current.Web.SiteUsers)

    Ici, il faut noter que l'on demande SharePoint la liste des utilisateurs avec la proprit SiteUsers, et non pas Users.

    En effet, SiteUsers renvoie la liste des utilisateurs ayant des droits d'accs au site en question, tandis que Users

    ne renvoie que les utilisateurs que l'on a explicitement associs au site (en les ajoutant au groupe des visiteurs,

    membres ou propritaires du site). De faon plus concrte, imaginons que l'utilisateur domaine\pvialatte existe dans

    SharePoint, et que le site site1 contienne le groupe Everyone dans ses visiteurs.

    (Vous me suivez toujours, hein ?)

    SiteUsers contiendra la fois Everyone et domaine\pvialatte, mais Users ne contiendra qu'Everyone.

    C'est le genre de petite diffrence entre deux proprits qui a tendance envoyer les dveloppeurs l'asile...

    III - Introduction du PeopleEditor

    III.1 - Les proprits importantes du PeopleEditor

    Normalement, pour avoir le maximum d'informations sur un contrle, mon premier arrt est la MSDN....

    Malheureusement, pour ce contrle, la MSDN ne contient quasiment que les signatures des fonctions et proprits,

    sans indication sur le comportement du contrle en fonction de ses paramtres...

    On va s'intresser aux paramtres suivants : AfterCallbackClientScript : permet de spcifier le script appeler aprs une tentative de rsolution

    AllowEmpty : permet de spcifier si le champ peut tre vide

    AllowTypeIn : si vrai, autorise l'utilisateur taper du texte dans le champ

    MaximumEntities : nombre maximum d'entits rsolues

    MultiSelect : dfinir de definir si le champ peut contenir une (false) ou plusieurs (true) personnes

    NoMatchesText : texte affich si, aprs une tentative de rsolution de valeur, le texte entr ne correspond

    rien (ou plutt, personne)

    SelectionSet : dfinit le groupe dans lequel la recherche va s'effectuer. Peut prendre les valeurs

    User(Utilisateur), DL(liste de distribution), SecGroup(groupe AD), ou SPGroup(groupe Sharepoint)

    ValidatorEnabled : permet spcifier si un message d'erreur doit tre affich en cas de contenu invalide

    http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://www.developpez.net/forums/u42337/philippe-vialatte/http://www.developpez.com/
  • 7/25/2019 Share Point People Editor

    6/10

    Gestion des utilisateurs et utilisation du contrle PeopleEditor par Philippe Vialatte

    - 6 -

    Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par

    les droits d'auteur. Copyright 2013 Philippe Vialatte. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans

    l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.

    http://philippe.developpez.com/articles/SharepointPeopleEditor/

    III.2 - Ajout d'un champ de type PeopleEditor

    On va modifier notre page de faon ajouter un champ utilisateur. En premier lieu, on va ajouter notre contrle

    utilisateur une rfrence la bibliothque de contrles de SharePoint.

    Puis, on va ajouter notre PeopleEditor, avec un jeu de proprits minimal (une seule slection, de type utilisateur).

    Ct client, c'est tout ce qu'il y a faire...Par contre, ct serveur, il va falloir utiliser le mcanisme de rsolution de

    login du PeoplePicker pour pouvoir afficher notre utilisateur.

    SPUser user =web.SiteUsers.GetByID(userId);PickerEntity pe =newPickerEntity();

    pe.Key =user.LoginName;

    ArrayList entityArrayList =newArrayList();

    entityArrayList.Add(pe);

    tbUser.ResolvedEntities.Clear();

    tbUser.UpdateEntities(entityArrayList);

    tbUser.Validate();

    En effet, le seul moyen d'effectuer une rsolution d'une entit est de la passer au PeoplePicker l'intrieur d'une

    ArrayList d'entits. A noter, il n'est pas ncessaire de passer la proprit loginname, il est possible de passer un mail

    ou le nom et prnom de l'utilisateur.

    Aprs ces modifications, notre contrle ressemble a :

    IV - Sauvegarde / modification d'un utilisateur existant

    Maintenant que notre contrle est en place, on va ajouter, ct ascx, un bouton btnSave, auquel on va affecter

    la fonction btnSave_OnClick (ici, je vous laisse imaginer) Pour pouvoir sauvegarder notre contrle, on va devoir

    effectuer les actions suivantes :

    Tester si l'utilisateur existe dj

    http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://www.developpez.net/forums/u42337/philippe-vialatte/http://www.developpez.com/
  • 7/25/2019 Share Point People Editor

    7/10

    Gestion des utilisateurs et utilisation du contrle PeopleEditor par Philippe Vialatte

    - 7 -

    Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par

    les droits d'auteur. Copyright 2013 Philippe Vialatte. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans

    l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.

    http://philippe.developpez.com/articles/SharepointPeopleEditor/

    S'il existe dj, rcuprer l'utilisateur, et mettre jour son nom, ses notes et son email. Son login ne peut pas

    tre modifi. En effet, c'est la proprit qui permet de relier un compte Windows uncompte SharePoint.

    Cette proprit est donc en lecture seule.

    S'il n'existe pas, insrer le nouvel utilisateur dans la liste des utilisateurs de SharePoint.

    Le code appel par notre bouton Save sera le suivant :

    protectedvoidbtnSave_Click(objectsender,EventArgs e) {

    boolunsafeUpdateAllowed =web.AllowUnsafeUpdates; web.AllowUnsafeUpdates =true;

    if(string.IsNullOrEmpty(dropUsers.SelectedValue)) {

    PickerEntity objEntity =(PickerEntity)tbUser.ResolvedEntities[0]; String loginName =objEntity.Key;

    String name =objEntity.DisplayText;

    String notes =tbNotes.Text;

    String email =tbMail.Text; web.SiteUsers.Add(loginName,email,name,notes);

    }else{

    SPUser user =web.SiteUsers.GetByID(Convert.ToInt32(dropUsers.SelectedValue));

    user.Email =tbMail.Text; user.Notes =tbNotes.Text; user.Update();

    }

    web.AllowUnsafeUpdates =unsafeUpdateAllowed;}

    Maintenant, on va dissquer ces quelques lignes...pour voir ce qu'on a d'intressant...

    boolunsafeUpdateAllowed =web.AllowUnsafeUpdates;web.AllowUnsafeUpdates =true;

    ...

    ...

    web.AllowUnsafeUpdates =unsafeUpdateAllowed;

    Ces lignes vont nous permettre de faire la mise jour ou l'insertion. En effet, au niveau du modle de scurit de

    SharePoint, il n'est pas possible, par dfaut, de faire une mise jour pendant une requte GET, ce qui est notre

    cas actuellement.

    PickerEntity objEntity =(PickerEntity)tbUser.ResolvedEntities[0];

    Pour rcuprer des donnes depuis notre PeopleEditor, il est important de se rappeler qu'un PeopleEditor affiche en

    fait une liste d'entits. On va, dans notre cas, rcuprer uniquement la premire de ces entits, mais dans le cas o

    on voudrait grer plusieurs utilisateurs, on devrait traiter indpendamment chaque utilisateur.

    V - Fonctionalites "avances" du PeopleEditor

    Les quelques lignes de code vues prcdemment permettent assez facilement de grer finement les utilisateurs de

    SharePoint...Maintenant qu'on a rempli notre contrat d'origine, on va pouvoir s'amuser un peu avec le contrle

    V-1 - Rcupration de donnes supplmentaires

    Aprs ces petits exemples, la question qui doit vous brler les lvres, c'est "mais comment SharePoint fait-il pour

    rcuprer tout seul comme un grand le mail et le nom des utilisateurs que j'ajoute ?". En fait, SharePoint utilise bien

    le mme PeopleEditor pour grer les utilisateurs. Lorsque l'on fait une rsolution d'un utilisateur sur AD, SharePoint

    stocke dans des champs cachs le login de l'utilisateur (sous Firefox), voire toutes les informations disponibles sur

    l'utilisateur (pour IE).

    http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://www.developpez.net/forums/u42337/philippe-vialatte/http://www.developpez.com/
  • 7/25/2019 Share Point People Editor

    8/10

    Gestion des utilisateurs et utilisation du contrle PeopleEditor par Philippe Vialatte

    - 8 -

    Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par

    les droits d'auteur. Copyright 2013 Philippe Vialatte. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans

    l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.

    http://philippe.developpez.com/articles/SharepointPeopleEditor/

    Ces informations sont ensuite transmises dans le code-behind, dans le champ EntityData des entits rsolues, et

    peuvent ensuite tre manipules directement.

    Dans le cas o on voudrait entrer les donnes Active Directory de l'utilisateur slectionn, on pourrait rcrire le

    code ci-dessus ainsi :

    PickerEntity objEntity =(PickerEntity)tbUser.ResolvedEntities[0];

    String loginName =objEntity.Key;String name =objEntity.DisplayText;

    String notes =string.Empty;

    String email =string.Empty;

    if(objEntity.EntityData.ContainsKey("Department")){

    notes ="Departement : "+objEntity.EntityData["Department"];

    }

    if(objEntity.EntityData.ContainsKey("Email")){

    email =objEntity.EntityData["Email"];

    }

    Rien ne vous garantit que les donnes de mail ou de dpartement, soient bien remplies ct Active Directory.

    V-2 - Appel de JavaScript aprs rsolution AD

    Comme on l'a vu juste avant, SharePoint rcupre par dfaut les utilisateurs depuis Active Directory. Comment faire

    si notre rfrence principale n'est pas Active Directory, mais, par exemple, LDAP ?

    Imaginons que ce soit le cas, et que l'on veuille pr-remplir notre zone Note avec certaines informations venant de

    LDAP, comment pourrait-on faire ?

    En fait, on va utiliser une fonctionnalit dj existante de notre PeopleEditor, la proprit AfterCallbackClientScript,

    pour rcuprer ces donnes en Ajax.

    Pour cela, dans un premier temps, on va ajouter un fichier GetUserNotes qui va nous servir de bouchon (le but n'tant

    pas de montrer comment faire une requte sur LDAP...).

    http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://www.developpez.net/forums/u42337/philippe-vialatte/http://www.developpez.com/
  • 7/25/2019 Share Point People Editor

    9/10

    Gestion des utilisateurs et utilisation du contrle PeopleEditor par Philippe Vialatte

    - 9 -

    Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par

    les droits d'auteur. Copyright 2013 Philippe Vialatte. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans

    l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.

    http://philippe.developpez.com/articles/SharepointPeopleEditor/

    Et, dans notre page ascx, on va ajouter le code ncessaire l'appel Ajax. Je ne vais pas dtailler la logique derrire

    cet appel, c'est un appel assez standard l'objet XMLHttp, assez bien document sur Internet.

    function AjaxCall(fichier){

    if(window.XMLHttpRequest) // FIREFOX

    xhr_object =newXMLHttpRequest();

    elseif(window.ActiveXObject) // IE xhr_object =newActiveXObject("Microsoft.XMLHTTP");

    elsereturn(false);

    xhr_object.open("GET",fichier,false);

    xhr_object.send(null);

    if(xhr_object.readyState ==4) return(xhr_object.responseText);

    else

    return(false);

    }

    Finalement, il ne nous reste plus qu' ajouter un appel GetUserNotes. Ce n'est en fait pas si facile, car le

    PeoplePicker ne nous donne pas de moyen simple et rapide pour retrouver le contenu des entits rsolues...

    Aprs avoir fouill droite gauche dans le DOM, on s'aperoit que la donne que l'on cherche se trouve dans un

    span, lui-mme dans une div, dont l'id est l'id du contrle PeopleEditor, suffix par _upLevelDiv.

    Un moyen commun Firefox et Internet Explorer de rcuprer le login de l'utilisateur rsolu est donc:

    document.getElementById('_upLevelDiv').childNodes[0].getAttribute('title');

    On va donc crer (encore !) une nouvelle fonction dans notre fichier ascx

    function GetUserNotes(){var login =document.getElementById('_upLevelDiv').childNodes[0].getAttribute('title');

    var fileName ="http://"+location.host +'/GetUserNotes.aspx?login='+login;

    var notesValue =AjaxCall(fileName);document.getElementById('').value =notesValue;

    }

    Et enfin, on va modifier le code de notre PeoplePicker ainsi :

    Et voila ! Une dmonstration rapide nous donne l'cran suivant :

    http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://philippe.developpez.com/articles/SharepointPeopleEditor/http://www.developpez.net/forums/u42337/philippe-vialatte/http://www.developpez.com/
  • 7/25/2019 Share Point People Editor

    10/10

    Gestion des utilisateurs et utilisation du contrle PeopleEditor par Philippe Vialatte

    - 10 -

    Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par

    les droits d'auteur. Copyright 2013 Philippe Vialatte. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans

    l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.

    VI - Remerciements

    Merci SaumonAgilepour sa relecture.

    http://philippe.developpez.com/articles/SharepointPeopleEditor/http://www.developpez.net/forums/member.php?u=158820http://www.developpez.net/forums/u42337/philippe-vialatte/http://www.developpez.com/