|
|
|
|
Utilisation et Déploiement des ‘Dashboards’[1] Personnels
Introduction.Le but de ce document est d’expliquer comment utiliser les "Dashboards Personnels / Tableau de Bord " de Sharepoint pour implémenter facilement un système de Tableau de Bord personnalisable par l’utilisateur. NOTE : J’utilise une version anglaise de Sharepoint Portal Server donc veuillez m’excuser si j’utilise certains mots anglais.
Comment créer un "Dashboard Personnel".Quand vous êtes coordinateur d’un Workspace Sharepoint vous pouvez créer votre " Tableau de Bord Personnel". Dans l’onglet ‘Management’ sous ‘Personal Dashboards’ apparaît un lien ‘Create a new personal dashboard’. Ce lien permet de créer un Dashboard différent des dashboards traditionnels. Première différences le Tableau de Bord /Dashboard est créé dans le sous-répertoire ‘Dashboards’ de votre workspace. Ensuite le Tableau de Bord / Dashboard qui vient d’être créé est entièrement vierge comme si on venait de créé un workspace vide. Le script qui va vous être présenté permet de créer un ‘Tableau de Bord Personnel’ correspondant au login de l’utilisateur à partir d’un ‘Tableau de Bord’ modèle. Le Tableau de Bord sera créé dans un répertoire correspondant au domaine de l’utilisateur, le nom du Tableau de Bord correspondra à son login. Exemple : M. Dupond appartenant au domaine MyDomain avec le login ldupond aura son ‘Tableau de Bord Personnel’ dans : http://servername/workspace/dashboards/mydomain/ldupond/ Le principe est simple, nous allons utiliser un script qui permet à l’utilisateur de créer son ‘Tableau de Bord Personnel’.
Création d’un "Dashboard Personnel" par script.Le script ci-dessous permet de créer un ‘Dashboard Personnel’ correspondant au login de l’utilisateur à partir d’un ‘Dashboard’ modèle. Le Dashboard sera créé dans un répertoire correspondant au domaine de l’utilisateur, le nom du Dashboard correspondra à son login. Exemple : M. Dupond appartenant au domaine MyDomain avec le login ldupond aura son ‘Dashboard Personnel’ dans : http://servername/workspace/dashboards/mydomain/ldupond/ Attention : M. Dupond doit avoir les droits coordinateurs sur le répertoire mydomain avant l’exécution du script. Ces droits doivent exister que sur le répertoire mydomain et l’accès en lecture au répertoire dashboard pour M. Dupond doit être enlevé. Le Script par la suite modifiera les sécurités des sous répertoires de mydomain pour ne donner l’accès qu’à son propriétaire. Ainsi les droits de coordinateurs attribués à M. Dupond n’auront aucune influence sur le reste du site. Code: On Error Resume Next Err.Clear sServerName = "myserver" urlSample = "http://servername/workspace/dashboards/modele" sLogonUser = Request.ServerVariables("LOGON_USER") iSlash = InStr(sLogonUser, "\") If Not iSlash = 0 Then sDomainName = UCase(Left(sLogonUser, iSlash - 1)) sLogonUser = UCase(Mid(sLogonUser, iSlash + 1)) End If strFolderPath = "http://" & Request.ServerVariables("HTTP_HOST") & "/" & "workspace" & "/Dashboards/" & sDomainName & "/" & sLogonUser Set Folder = CreateObject("CDO.KnowledgeFolder") Folder.DataSource.Open urlSample Folder.Copy(strFolderPath) Set Folder = nothing ReplacePermission Replace(strFolderPath, Request.ServerVariables("HTTP_HOST"), sServerName), CStr(Request.ServerVariables("LOGON_USER")) Sub ReplacePermission (FolderPath, UserName) Set toFolder = CreateObject ("CDO.KnowledgeFolder") toFolder.DataSource.Open FolderPath, ,adModeReadWrite toFolder.RolesAreInherited = 0 arPermissions = Array("MyDomain\AdminServer", UserName) toFolder.CoOrdinators = arPermissions toFolder.DataSource.Save set toFolder = Nothing End Sub
Restriction des droits d’un utilisateur sur son "Dashboard Personnel".Suite à l’exécution du script ci-dessus l’utilisateur possède un ‘Dashboard Personnel’ dont-il est coordinateur. Le problème est de restreindre les droits de l’utilisateur pour qu’il ne puisse pas modifier le contenu des Webparts ou certaines propriétés de son dashboard. Pour cela nous allons intercepter l’appel des fichiers XSL pour leur donner des fichiers restreignant les droits de l’utilisateur. Les fichiers dashboard.asp appelle le fichier dbview_ie.xsl ou dbview.xsl en fonction du type de navigateur (IE 5.5+ ou non).
Code appelant les fichiers XSL : If ((lBrowserType And BROWSER_IE) > 0 And (( GetBrowserType() And BROWSER_MAJORVERMASK) >= BROWSER_IE5 )) Then ' Add a node for IE 5.5 identification If ((lBrowserType And BROWSER_MINORVERMASK) >= 5) Then Dim nodeIE55 Set nodeIE55 = xmlDashboard.createElement( "BrowserIE55OrGreater" ) nodeSettings.appendChild nodeIE55 End If ' Use our up-level XSL: dbview_ie.xsl CreateFreeThreadedXMLDOMFromFile "dbview_ie.xsl", xslView Else ' Use our downlevel XSL: dbview.xsl. CreateFreeThreadedXMLDOMFromFile "dbview.xsl", xslView End If
Le principe est simple, nous effectuons un test avant l’appel de la function ‘CreateFreeThreadedXMLDOMFromFile’ qui vérifie si l’utilisateur fait partie groupe des administrateurs du portail.
Code modifié : If ((lBrowserType And BROWSER_IE) > 0 And (( GetBrowserType() And BROWSER_MAJORVERMASK) >= BROWSER_IE5 )) Then ' Add a node for IE 5.5 identification If ((lBrowserType And BROWSER_MINORVERMASK) >= 5) Then Dim nodeIE55 Set nodeIE55 = xmlDashboard.createElement( "BrowserIE55OrGreater" ) nodeSettings.appendChild nodeIE55 End If ' Use our up-level XSL: dbview_ie.xsl
'Test si la page appelé est un dashboard personnel If Left(UCase(Request.ServerVariables("URL")), 21) = UCase("/workspace/Dashboards") Then sLogonUser = Request.ServerVariables("LOGON_USER") iSlash = InStr(sLogonUser, "\") If Not iSlash = 0 Then sDomainName = UCase(Left(sLogonUser, iSlash - 1)) sLogonUser = UCase(Mid(sLogonUser, iSlash + 1)) End If If IsMemberOf(sDomainName, sLogonUser, "AdminPortail") Then 'l’utilisateur fait parti des administrateur du portail on appelle le fichier classique de mise en page
CreateFreeThreadedXMLDOMFromFile "dbview_ie.xsl", xslView Else 'l’utilisateur ne fait pas parti des administrateur du portail on appelle une version restreinte du fichier de mise en page du dashboard
CreateFreeThreadedXMLDOMFromFile "dbview_ie.xsl", xslView End If Else CreateFreeThreadedXMLDOMFromFile "dbview_ie_restricted.xsl", xslView End If Else ' Use our downlevel XSL: dbview.xsl. 'Test si la page appelé est un dashboard personnel If Left(UCase(Request.ServerVariables("URL")), 21) = UCase("/workspace/Dashboards") Then
sLogonUser = Request.ServerVariables("LOGON_USER") iSlash = InStr(sLogonUser, "\")
If Not iSlash = 0 Then sDomainName = UCase(Left(sLogonUser, iSlash - 1)) sLogonUser = UCase(Mid(sLogonUser, iSlash + 1)) End If
If IsMemberOf(sDomainName, sLogonUser, "AdminPortail") Then 'l’utilisateur fait parti des administrateur du portail on appelle le fichier classique de mise en page
CreateFreeThreadedXMLDOMFromFile "dbview.xsl", xslView Else 'l’utilisateur ne fait pas parti des administrateur du portail on appelle une version restreinte du fichier de mise en page du dashboard
CreateFreeThreadedXMLDOMFromFile "dbview_restricted.xsl", xslView End If Else CreateFreeThreadedXMLDOMFromFile "dbview.xsl", xslView End If End If
Les fichiers "dbview_restricted.xsl" et "dbview_ie_restricted.xsl" correspondent aux fichiers de mise en page du "Dashboard Personnel" de l’utilisateur. Ces fichiers peuvent donc par exemple supprimer le lien ‘Settings’ pour que l’utilisateur ne puisses pas modifier les propriétés de son Dashboard. De même, il est conseillé de faire le même système concernant le fichier "dbcontent.asp" qui appelle le fichier de mise en page "dbcontent.xsl" et effectuer le même test pour appeler un fichier "dbcontent_restricted.xsl" pour la visualisation du contenu du Dashboard de l’utilisateur. Pour ma part, le fichier "dbcontent_restricted.xsl" affiche uniquement la liste des webparts sans pouvoir entrer dans le détail ainsi que les liens vers les catalogues de webparts disponibles (cf copie d’écran ci-dessous). Il est recommandé de ne pas laissé à l’utilisateur la possibilité de modifier ses webparts ou d’en créé de nouvelles pour des raisons de sécurité.
Aperçu de la page Content visible par l’utilisateur
Note : Vous pouvez créé un catalogue de webparts que vous laissez à disposition de l’utilisateur pour son "Dashboard Personnel" (cf Documentation Microsoft ‘Deploying: Creating a Corporate Web Part Catalog’).
Détection automatique de l’existence du "Dashboard Personnel".Maintenant que vous avez le script de création du "Dashboard Personnel" de l’utilisateur et que vous avez restreint les possibilités de modification de ce Dashboard il reste à créé une webpart proposant à l’utilisateur de créer ce Dashboard. Le code teste si le Dashboard existe, s’il existe il propose le lien permettant d’y accéder sinon il propose un lien permettant de le créer.
Code permettant de tester si le Dashboard existe : On Error Resume Next Err.Clear
sLogonUser = Request.ServerVariables("LOGON_USER") iSlash = InStr(sLogonUser, "\")
If Not iSlash = 0 Then sDomainName = UCase(Left(sLogonUser, iSlash - 1)) sLogonUser = UCase(Mid(sLogonUser, iSlash + 1)) End If
strFolderPath = "http://" & Request.ServerVariables("HTTP_HOST") & "/" & "workspace" & "/Dashboards/" & sDomainName & "/" & sLogonUser
Set oFolder = CreateObject("CDO.KnowledgeFolder") oFolder.DataSource.Open strFolderPath
If (Hex(Err.Number) = 80040E19) OR (Hex(Err.Number) = 80040E98) Then CheckFolderExists = 0 Else CheckFolderExists = 1 End If
EROL / truc : 21-févr.-2004 19:05:19 +0100 |
|
|