Procédure : ajouter un événement périodique à des listes sur plusieurs sites
Dernière modification : mardi 30 mars 2010
S’applique à : SharePoint Foundation 2010
Disponible dans SharePoint Online
Cette tâche de programmation montre comment ajouter un événement périodique avec un site d’espace de travail de réunion à la liste de calendriers de chaque site Web d’une collection de sites.
Pour ajouter un événement périodique avec un site d’espace de travail de réunion à la liste de calendriers de chaque site d’une collection de sites
Créez une application console dans Microsoft Visual Studio 2010, comme décrit dans Procédure : créer une application console.
Ajoutez une directive using ou Imports à l’ouverture du fichier .cs ou .vb pour les espaces de noms Microsoft.SharePoint et Microsoft.SharePoint.Meetings, comme suit.
Imports Microsoft.SharePoint Imports Microsoft.SharePoint.Meetings
using Microsoft.SharePoint; using Microsoft.SharePoint.Meetings;
Utilisez le constructeur SPSite pour instancier une collection de sites spécifiée. Cet exemple utilise la propriété AllWebs de la classe SPSite pour retourner tous les sites Web de la collection de sites. L’exemple utilise une boucle foreach pour énumérer les sites Web et, si un site Web a été créé par le biais du modèle SharePoint Foundation standard (WebTemplateSTS), l’exemple obtient la liste de calendriers pour le site et la collection d’éléments de liste dans la liste.
Dim evtTitle As String = Console.ReadLine() Using siteCollection As New SPSite("https://Server/sites/SiteCollection") Dim collWeb As SPWebCollection = siteCollection.AllWebs For Each oWebsite As SPWeb In collWeb If oWebsite.WebTemplate = SPWebTemplate.WebTemplateSTS Then Dim list As SPList = oWebsite.Lists("Calendar") Dim listItems As SPListItemCollection = list.Items
string evtTitle = Console.ReadLine(); using (SPSite siteCollection = new SPSite("https://Server/sites/SiteCollection")) { SPWebCollection collWeb = siteCollection.AllWebs; foreach (SPWeb oWebsite in collWeb) { if (oWebsite.WebTemplate == SPWebTemplate.WebTemplateSTS) { SPList list = oWebsite.Lists["Calendar"]; SPListItemCollection listItems = list.Items;
Pour créer un élément de liste, utilisez la méthode Add de la classe SPListItemCollection pour créer un élément de liste non initialisé, utilisez des indexeurs afin de définir plusieurs propriétés pour le nouvel élément, puis utilisez la méthode Update pour terminer la création de l’élément.
Dim recEvent As SPListItem = listItems.Add() Dim recdata As String = "<recurrence><rule>" & "<firstDayOfWeek>su</firstDayOfWeek>" & "<repeat><daily dayFrequency='1' /></repeat>" & "<repeatInstances>5</repeatInstances></rule></recurrence>" recEvent("Title") = evtTitle recEvent("RecurrenceData") = recdata recEvent("EventType") = 1 recEvent("EventDate") = New DateTime(2011, 8, 15, 8, 0, 0) recEvent("EndDate") = New DateTime(2011, 9, 25, 9, 0, 0) recEvent("UID") = System.Guid.NewGuid() recEvent("TimeZone") = 13 recEvent("Recurrence") = - 1 recEvent("XMLTZone") = "<timeZoneRule>" & "<standardBias>480</standardBias>" & "<additionalDaylightBias>-60</additionalDaylightBias>" & "<standardDate><transitionRule month='10' day='su' weekdayOfMonth='last' />" & "<transitionTime>2:0:0</transitionTime></standardDate>" & "<daylightDate><transitionRule month='4' day='su' weekdayOfMonth='first' />" & "<transitionTime>2:0:0</transitionTime>" & "</daylightDate></timeZoneRule>" recEvent.Update()
SPListItem recEvent = listItems.Add(); string recData = "<recurrence><rule>" + "<firstDayOfWeek>su</firstDayOfWeek>" + "<repeat><daily dayFrequency='1' /></repeat>" + "<repeatInstances>5</repeatInstances></rule></recurrence>"; recEvent["Title"] = evtTitle; recEvent["RecurrenceData"] = recData; recEvent["EventType"] = 1; recEvent["EventDate"] = new DateTime(2011,8,15,8,0,0); recEvent["EndDate"] = new DateTime(2011,9,25,9,0,0); recEvent["UID"] = System.Guid.NewGuid(); recEvent["TimeZone"] = 13; recEvent["Recurrence"] = -1; recEvent["XMLTZone"] = "<timeZoneRule>" + "<standardBias>480</standardBias>" + "<additionalDaylightBias>-60</additionalDaylightBias>" + "<standardDate><transitionRule month='10' day='su' weekdayOfMonth='last' />" + "<transitionTime>2:0:0</transitionTime></standardDate>" + "<daylightDate><transitionRule month='4' day='su' weekdayOfMonth='first' />" + "<transitionTime>2:0:0</transitionTime>" + "</daylightDate></timeZoneRule>"; recEvent.Update();
La variable recData contient un fragment XML qui spécifie les propriétés d’un événement périodique ayant lieu tous les jours pendant cinq jours, tandis que l’indexeur XMLTZone affecte les informations de fuseau horaire pour le site actif. Le code XML qui définit la périodicité et spécifie les informations de fuseau horaire est contenu dans les colonnes ntext3 et ntext4 de la table UserData dans la base de données de contenu.
Le tableau suivant montre des exemples des différents types de périodicité disponibles.
Description
Exemple
Un jour sur deux jusqu'à une date de fin spécifiée
<recurrence><rule> <firstDayOfWeek>su</firstDayOfWeek> <repeat><daily dayFrequency='2' /></repeat> <windowEnd>2003-09- 20T09:00:00Z</windowEnd> </rule></recurrence>
Tous les lundi
<recurrence><rule> <firstDayOfWeek>su</firstDayOfWeek> <repeat><weekly mo='TRUE' weekFrequency='1' /></repeat> <repeatForever>FALSE</repeatForever> </rule></recurrence>
Tous les deux mois, le troisième jour pendant cinq sessions
<recurrence><rule> <firstDayOfWeek>su</firstDayOfWeek> <repeat><monthly monthFrequency='2' day='3' /></repeat> <repeatInstances>5</repeatInstances> </rule></recurrence>
Tous les premiers mardi du mois jusqu'à une date de fin spécifiée.
<recurrence><rule> <firstDayOfWeek>su</firstDayOfWeek> <repeat> <monthlyByDay tu='TRUE' weekdayOfMonth='first' monthFrequency='1' /> </repeat> <windowEnd>2003-08- 02T10:00:00Z</windowEnd> </rule></recurrence>
Le vingtième jour du neuvième mois de chaque année jusqu'à une date de fin spécifiée.
<recurrence><rule> <firstDayOfWeek>su</firstDayOfWeek> <repeat><yearly yearFrequency='1' month='9' day='20' /></repeat> <windowEnd>2007-09- 20T07:00:00Z</windowEnd> </rule></recurrence>
Pour ajouter un site d’espace de travail de réunion de base à l’événement périodique, utilisez la méthode Add() de la classe SPWebCollection pour créer le site (spécifié par MPS#0) et la méthode LinkWithEvent de la classe SPMeeting pour lier le site à l’élément de calendrier.
Dim mwsSites As SPWebCollection = oWebsite.Webs Dim path As String = recEvent("Title").ToString() Dim newSite As SPWeb = mwsSites.Add(path, "Workspace_Name", "Description", 1033, _ "MPS#0", False, False) Dim mwsSite As SPMeeting = SPMeeting.GetMeetingInformation(newSite) Dim guid As String = list.ID.ToString() Dim id As Integer = recEvent.ID Try mwsSite.LinkWithEvent(oWebsite, guid, id, "WorkspaceLink", "Workspace") Catch ex As System.Exception Console.WriteLine(ex.Message) End Try End If oWebsite.Close() Next End Using
SPWebCollection mwsSites = oWebsite.Webs; string path = recEvent["Title"].ToString(); SPWeb newSite = mwsSites.Add(path, "MyNewWorkspace", "Description", 1033, "MPS#0", false, false); SPMeeting mwsSite = SPMeeting.GetMeetingInformation(newSite); string guid = list.ID.ToString(); int id = recEvent.ID; try { mwsSite.LinkWithEvent(oWebsite, guid, id, "WorkspaceLink", "Workspace"); } catch (System.Exception ex) { Console.WriteLine(ex.Message); } } oWebsite.Close(); } }
Après la création du site d’espace de travail de réunion, la méthode GetMeetingInformation retourne un objet SPMeeting qui représente le site.
Appuyez sur F5 pour démarrer l'application console.
À l’invite de commandes, tapez un nom pour le site d’espace de travail de réunion, puis appuyez sur Entrée pour ajouter un événement périodique avec un site d’espace de travail de réunion à la liste de calendriers de tous les sites Web d’une collection de sites.