Calendrier ‘Classique’ vs Calendrier ‘Moderne’
Nombreux gestionnaires de sites SharePoint Online sont confrontés à une problématique avec l’utilisation de listes de type ‘Evènement’. Ce type de liste très utile, est un peu l’enfant oublié de la famille SharePoint. Car ces listes non pas été ‘modernisées’ au niveau des interfaces actuelles de SharePoint Online. Tout ce qui est proposé par Microsoft, c’est l’utilisation de la webpart ‘Event » sur les pages ‘modernes’ pour afficher le contenu d’une liste ‘Event’. Mais cette approche n’est pas toujours suffisante, surtout si nous avons ajouter nos propres colonnes dans ces listes d’évènements.
L’objectif de cet article est donc de passer de ceci
À ceci
Tout en permettant l’utilisation de la widget SharePoint ‘Event’ sur les pages modernes, mais aussi en offrant la possibilité d’ajouter nos propres colonnes, et de les ajouter sur la vue de type ‘Calendrier’ Moderne.
Visual Studio Code
Pour arriver à ce genre de résultat, il va falloir passer par l’exécution de code PowerShell depuis un environnement ‘Visual Studio Code’
Tout ce dont vous avez besoin pour créer d’excellentes applications. Gratuitement.
Logiciels et services gratuits pour les développeurs – Visual Studio (microsoft.com)
Je vous invite à télécharger et installer ‘Visual Studio Code’ pour réaliser la suite des opérations décrites dans cet article
Pour exécuter le code qui sera fournit ci-dessous, nous devons compléter notre environnement de développement avec deux modules ‘extensions’.
– L’extension PowerShell
– L’extension PnP PowerShell
Lorsque l’installation de ‘Visual Studio Code’ est terminée, je vous invite à l’exécuter
Et d’afficher les extensions (suivre la flèche rouge)
Dans la zone de recherche : powershell
Et cliquer sur ‘Install’
Ensuite dans la zone de recherche : Pnp PowerShell
Et cliquer sur ‘Install’
Fichier source PowerShell
Nous allons créer un fichier source pour recevoir notre code, un fichier PowerShell a comme extension ‘.ps1’
Création d’un fichier texte sour Visual Studio Code
Une fois le fichier créé, nous allons le sauvegarder comme fichier de script PowerShell
Lui donner un petit nom aussi par la même occasion.
‘Modern Event List Creation.ps1’
Code Source du script PowerShell
$SharePointSiteUrl = "https://teamyedu.sharepoint.com/sites/Intranet"
$SharePointListName = "Mon Agenda Moderne"
$DefaultCalendarViewName = "Calendrier"
clear
Connect-PnPOnline -Url $SharePointSiteUrl -Interactive
$list = New-PnPList -Title "$SharePointListName" -Template Events
Set-PnPList -Identity $List -ListExperience NewExperience
Remove-PnPView -Identity $DefaultCalendarViewName -List $list -Force #Remove Classic Style Calendar Default View
#New Calendar View
$viewCreationJson = @"
{
"parameters": {
"__metadata": {
"type": "SP.ViewCreationInformation"
},
"Title": "$DefaultCalendarViewName",
"ViewFields": {
"__metadata": {
"type": "Collection(Edm.String)"
},
"results": [
"EventDate",
"EndDate",
"Title"
]
},
"ViewTypeKind": 1,
"ViewType2": "MODERNCALENDAR",
"ViewData": " ",
"CalendarViewStyles": " ",
"Query": "",
"Paged": true,
"PersonalView": false,
"RowLimit": 0
}
}
"@
Invoke-PnPSPRestMethod -Method Post -Url "$SharePointSiteUrl/_api/web/lists/GetByTitle('$SharePointListName')/Views/Add" -ContentType "application/json;odata=verbose" -Content $viewCreationJson
Set-PnPView -List $list -Identity "$DefaultCalendarViewName" -Values @{DefaultView=$true;MobileView=$true;MobileDefaultView=$true} #Set View To Be Default
Vous avez trois praramètres à définir :
$SharePointSiteUrl = « https://teamyedu.sharepoint.com/sites/Intranet »
L’adresse complète du site SharePoint où vous souhaitez ajouter une liste d’évènements
$SharePointListName = « Mon Agenda Moderne »
Le nom de la liste que vous souhaitez créer
$DefaultCalendarViewName = « Calendrier »
Le nom de la vue de type calendrier que vous souhaitez
Exécution du script
La première étape lors de l’exécution, est l’authentification
Il vous faut utiliser un compte qui a les permissions nécessaires sur le site SharePoint de votre choix
Résultat
Vérification du résultat sur mon site SharePoint
Tout cela me semble en effet correct comme attendu.
Il ne reste plus qu’à espérer qu’un jour, Microsoft opère une mise à jour de ces listes ‘Event’ pour bénéficier de cette modernisation sans passer par ce genre d’approche codée.
Remarque : Il existe actuellement un ‘bug’ connu chez Microsoft mais toujours non résolu. La colonne ‘Titre’ de ces listes génère un comportement bizarre lorsque l’utilisateur clique dessus. Le navigateur tente un téléchargement. Mais cela n’empêche pas le bon fonctionnement de la liste en question.
Si vous souhaitez appliquer cette approche sur une liste existante, il vous suffit de remplacer le code suivant :
$list = New-PnPList -Title "$SharePointListName" -Template Events
par
$List = Get-PnPList -Identity $SharePointListName
Comment avez-vous trouvé ce billet ?
N'hésitez pas à voter !
Score moyen 5 / 5. Nombre de vote 1