Exemple de code : page d’application de liaison de mise en réseau pour l’approbation des collègues
Dernière modification : lundi 22 août 2011
S’applique à : SharePoint Server 2010
La page d’application de liaison de mise en réseau pour l’approbation des collègues est une page d’application qui répertorie vos collègues et vous permet de noter l’approbation de chaque collègue en activant une case à cocher. Cet exemple est un projet de page d’application SharePoint Microsoft Visual Studio 2010. Après avoir généré ce projet et déployé celui-ci sur votre site Microsoft SharePoint Server 2010, vous pouvez utiliser cette page pour exprimer l’approbation d’un utilisateur figurant dans votre liste de collègues. Dans sa forme actuelle, la page affiche uniquement un astérisque pour indiquer l’approbation. Vous pouvez remplacer l’astérisque par une image ou un symbole approprié pour votre contexte.
Installez cet exemple de code sur votre ordinateur en téléchargeant le Kit de développement logiciel (SDK) Microsoft SharePoint 2010 (éventuellement en anglais) ou l’exemple disponible sur le site Galerie de code (éventuellement en anglais). Si vous téléchargez le SDK SharePoint 2010, l’exemple est installé dans votre système de fichiers à l’emplacement suivant : C:\Program Files\Microsoft SDKs\SharePoint 2010\Samples\Social Data and User Profiles.
Utilisation de liens de mise en réseau pour exprimer l’approbation d’un élément
L’application crée un objet UserProfileManager et un objet SocialTagManager en utilisant un objet SPServiceContext créé par vos soins avec un site ou une collection de sites que vous écrivez directement dans votre code. En outre, il récupère l’objet UserProfile qui représente l’utilisateur actuel. L’application récupère tous les liens de mise en réseau de l’utilisateur actuel et crée une liste de chaînes qui contiennent les noms des collègues de l’utilisateur. Chaque objet UserProfile qui représente un collègue de l’utilisateur actuel possède une propriété PublicUrl. Tout objet pouvant être représenté par une URL peut être balisé avec un lien de mise en réseau, si bien qu’il est possible de réviser cette application afin de permettre aux utilisateurs d’exprimer l’approbation de n’importe quel ensemble d’éléments pouvant être représentés par des URL, tels que les éléments d’une bibliothèque de documents ou d’une liste SharePoint.
string mySite = "http://mysite";
protected void Page_Load(object sender, EventArgs e)
{
using ( SPSite site = new SPSite(mySite) )
{
//Create UserProfileManager with desired SPContext.
SPServiceContext serviceContext = SPServiceContext.GetContext(site);
UserProfileManager myUserProfileManager = new UserProfileManager(serviceContext);
UserProfile myUserProfile = myUserProfileManager.GetUserProfile(true);
SocialTagManager mySocialTagManager = new SocialTagManager(serviceContext);
string [] colleagueAccountNames = new string [myUserProfile.Colleagues.GetItems().GetLength(0)];
SocialTag[] mySocialTags = mySocialTagManager.GetTags(myUserProfile);
Seuls les utilisateurs répertoriés dans la liste de contrôle d’accès Autorisations de l’application de service Profil utilisateur peuvent créer une instance d’un objet UserProfileManager. Pour ajouter un utilisateur à la liste de contrôle d’accès Autorisations de l’application de service Profil utilisateur, effectuez les étapes de la procédure suivante.
Pour ajouter un utilisateur à la liste de contrôle d’accès Autorisations de l’application de service Profil utilisateur
Dans votre navigateur, accédez à votre page d’accueil Administration centrale de SharePoint.
Naviguez jusqu’à la page Gérer les applications de service, mentionnée sous l’en-tête Gestion des applications.
Sélectionnez l’option Application de service Profil utilisateur. Cliquez sur Autorisations.
Dans la boîte de dialogue, ajoutez les comptes d’utilisateurs. Cliquez sur OK.
Étant donné que les liens de mise en réseau utilisent uniquement des termes de taxonomie valides, la première tâche que l’application doit effectuer consiste à récupérer l’objet TaxonomySession de l’objet SocialTagManager. L’application vérifie ensuite si le terme à utiliser pour l’expression de l’approbation existe actuellement dans le magasin de termes de mots clés par défaut (emplacement par défaut des termes de taxonomie). Cet exemple utilise le terme Thumbs Up, mais vous pouvez à la place recourir au terme de votre choix. En outre, ce code peut être placé dans le récepteur d’événements FeatureActivated, afin qu’il ne s’exécute qu’une seule fois.
TaxonomySession taxSession = mySocialTagManager.TaxonomySession;
TermStore termStore = taxSession.DefaultKeywordsTermStore;
TermCollection thumbsUp = termStore.KeywordsTermSet.GetTerms("Thumbs Up", true, StringMatchOption.ExactMatch, 1, true);
Term thumbsUpTerm;
if (thumbsUp.Count < 1 || !thumbsUp[0].IsAvailableForTagging)
{
thumbsUpTerm = termStore.KeywordsTermSet.CreateTerm("Thumbs Up", termStore.DefaultLanguage);
termStore.CommitAll();
}
else
{
thumbsUpTerm = thumbsUp[0];
}
Ensuite, l’application stocke chaque collègue dans un tableau d’objets string.
int n = 0;
foreach (Colleague colleague in myUserProfile.Colleagues.GetItems())
{
colleagueAccountNames[n] = (string)colleague.Profile[PropertyConstants.AccountName].Value;
n++;
}
Après avoir récupéré les collègues de l’utilisateur et défini le terme de taxonomie à utiliser pour baliser chaque collègue, l’application vérifie si la page a été chargée après qu’un utilisateur a activé ou désactivé une case à cocher dans la liste qui affiche chacun des collègues de l’utilisateur. Si le chargement de la page est le résultat de l’activation ou de la désactivation par un utilisateur d’une case à cocher sur le formulaire, l’application détermine le collègue que l’utilisateur a sélectionné ou désélectionné. Le lien de mise en réseau est ajouté à tout collègue dont le nom a été activé et est supprimé de tout collègue dont le nom a été désactivé. L’objet UserProfileManager récupère l’objet UserProfile qui représente chaque collègue, afin de pouvoir récupérer, ajouter ou supprimer des liens de mise en réseau à partir de l’URL publique de chaque collègue. L’application utilise la référence de caractère HTML pour un astérisque (*) afin de représenter l’expression d’approbation de l’utilisateur actuel. Au besoin, vous pouvez modifier ou supprimer ce symbole.
if (IsPostBack)
{
for (int i = 0; i < CheckBoxList1.Items.Count; i++)
{
UserProfile userProfile = myUserProfileManager.GetUserProfile(CheckBoxList1.Items[i].Value);
Uri userUrl = userProfile.PublicUrl;
bool itemProcessed = false;
foreach (SocialTag tag in mySocialTags)
{
if (tag.Term == thumbsUpTerm && tag.Url == userUrl && CheckBoxList1.Items[i].Selected == false)
{
mySocialTagManager.DeleteTag(userUrl, thumbsUpTerm);
CheckBoxList1.Items[i].Text = CheckBoxList1.Items[i].Value;
itemProcessed = true;
}
else if (tag.Term == thumbsUpTerm && tag.Url == userUrl)
{
CheckBoxList1.Items[i].Text = CheckBoxList1.Items[i].Value + " *";
itemProcessed = true;
}
}
if (CheckBoxList1.Items[i].Selected == true && !itemProcessed)
{
SocialTag thumbsUpTag = mySocialTagManager.AddTag(userUrl, thumbsUpTerm);
CheckBoxList1.Items[i].Text = CheckBoxList1.Items[i].Value + " *";
itemProcessed = true;
}
else if (!itemProcessed)
{
CheckBoxList1.Items[i].Text = CheckBoxList1.Items[i].Value;
}
}
}
Si le chargement de la page est dû au fait qu’un utilisateur a accédé à la page sans activer ou désactiver une case à cocher dans la liste, l’application remplit la liste des cases à cocher avec les noms de chaque collègue de l’utilisateur et vérifie si chaque collègue a été balisé.
else
{
CheckBoxList1.DataSource = colleagueAccountNames;
CheckBoxList1.DataBind();
for (int i = 0; i < CheckBoxList1.Items.Count; i++)
{
UserProfile userProfile = myUserProfileManager.GetUserProfile(CheckBoxList1.Items[i].Value);
Uri userUrl = userProfile.PublicUrl;
bool itemProcessed = false;
foreach (SocialTag tag in mySocialTags)
{
if (tag.Term == thumbsUpTerm && tag.Url == userUrl && !itemProcessed)
{
CheckBoxList1.Items[i].Selected = true;
CheckBoxList1.Items[i].Text = CheckBoxList1.Items[i].Value + " *";
itemProcessed = true;
}
}
if ( !itemProcessed )
{
CheckBoxList1.Items[i].Text = CheckBoxList1.Items[i].Value;
}
}
}
}
}
Génération et exécution de l’exemple
Les étapes suivantes montrent comment tester ce projet sur le site de développement ou de test.
Pour générer l’exemple
Créez un dossier nommé Microsoft.SDK.Server.Samples, puis décompressez le fichier RatingColleagues.zip dans ce dossier.
Démarrez Visual Studio 2010, puis ouvrez le fichier RatingColleagues.sln qui se trouve dans le dossier créé à l’étape 1.
Dans la fenêtre Propriétés, spécifiez la valeur d’URL de site correspondant à l’adresse absolue de votre site de test ou de développement (par exemple, http:// monsite/). Pensez à inclure la barre oblique de fermeture. Faites également en sorte que cette URL ait la valeur de la variable mySite dans le fichier ColleagueRating.aspx.cs.
Si elles ne sont pas déjà présentes, ajoutez au projet des références aux assemblys suivants :
Microsoft.SharePoint.dll
Microsoft.SharePoint.Taxonomy.dll
Microsoft.Office.Server.dll
Microsoft.Office.Server.UserProfiles.dll
Dans le menu Générer, sélectionnez Déployer la solution. Une fois la génération terminée, la page d’application est installée sur votre site de test ou de développement.
Exécution de l’exemple
- Une fois la solution générée et déployée, accédez à http://monsite/_layouts/ColleagueRating.aspx. Les noms des comptes d’utilisateur de vos collègues apparaissent en regard des cases à cocher dans la page.
Voir aussi
Concepts
Création et utilisation de données sociales avec le modèle objet