Accès refusé sur un composant WebPart bibliothèque de document

Problématique

 Imaginer le scénario suivant :

 Vous créez une bibliothèque de document et modifiez les autorisations sur celle-ci pour qu’une certaine population y accède.

Vous ajoutez le composant WebPart de cette bibliothèque sur une page qui est accessible à l’ensemble des utilisateurs.

Le résultat observé est une erreur d’accès refusé sur la bibliothèque de document.

  

Vous allez me dire : simple à corriger, je positionne une audience sur ce WebPart pour ne l’afficher qu’aux personnes ayant accès à la bibliothèque. Malheureusement, ce tour de passe-passe ne fonctionne pas. Les utilisateurs auront toujours l’accès refusé.

 

Résolution

Heureusement, il existe un moyen de contourner ce problème.

Il faut positionner le niveau d’autorisation système « Accès limité » sur la bibliothèque pour ne plus avoir le message d’erreur.

Sauf que ce niveau, n’est pas utilisable tel quel, il va donc falloir ruser.

 

Tout d’abord, rendez-vous dans les « Autorisations de site » au niveau racine de la collection de site, pour afficher le lien « Niveaux d’autorisation ».

  

Cliquer ensuite sur Accès limité

  

Descendre tout en bas de la page, puis cliquer sur « Copier le niveau d’autorisation ».

  

Nommer le nouveau niveau d’autorisation comme souhaité et ne changer aucune autorisation.

Valider la création du niveau d’autorisation en cliquant sur Créer en bas de page.

 

Rendez-vous maintenant, sur la page d’autorisation de la bibliothèque de document.

Ajouter le niveau d’autorisation « accès limité » créé précédemment au groupe adéquat (exemple : Tous les utilisateurs authentifiés).

 

Les utilisateurs lambda n’ont désormais plus de message d’accès refusé sur le composant WebPart, vous pouvez désormais positionner une audience pour masquer celui-ci à ces users.

@ bientôt Damien.

Publicités

Personnalisation du WebPart Sommaire

Vous le savez peut être l’annuaire de site n’est plus une fonctionnalité de SharePoint 2010. Même si le modèle de site est activable (celui-ci est toujours sur SharePoint 2010 mais il est masqué), son seul but est de garantir une compatibilité avec la version 2007.

Je vous propose donc dans cet article d’utiliser le composant WebPart Sommaire et de le personnaliser en lieu et place de cet annuaire.

Fonctionnement natif du composant WebPart Sommaire

Par défaut ce composant affiche l’ensemble des éléments de la navigation : sous sites, pages, liens vers les bilbiothèques, listes, liens divers.

En gros toute la navigation (menu de lancement rapide) de la collection de sites peut être affichée via ce WebPart.

Dans le cas de l’annuaire de site, seuls les liens vers les sites nous intéressent. Nous souhaitons donc ne pas afficher toutes les pages faisant référence au dossier _layouts, forms, etc…

Nous allons donc devoir modifier la feuille de transformation XSL afin  de filtrer les éléments non souhaités qui sont :

  • · Les liens Accueil,
  • · Les liens utilisant des pages du dossier _layouts (Bibliothèques, Listes)

Modification de la feuille de transformation

Ouvrir SharePoint Designer et rendez-vous dans la bibliothèque de styles de votre collection de site, puis rentrez dans le dossier XSL Style Sheets.

Editez le fichier LevelStyle.xsl

Créez 2 nouveaux templates (pour le niveau 1 et pour le niveau 2)

<xsl:template name= »IRSN-Niveau-1″ match= »Level[@LevelTemplate=’XXXX-Niveau-1′] »>

<xsl:variable name= »LevelIndent » select= »(number(@LevelNumber)-number(1))*number(14)+number(4) »></xsl:variable>

<xsl:variable name= »LeafIndent » select= »$LevelIndent+6″></xsl:variable>

<xsl:variable name= »LeafIndentWithBullet » select= »$LevelIndent+14″></xsl:variable>

<xsl:choose>

<xsl:when test= »not(contains(@Path,’_layouts’)) and not(contains(@Path,’Forms’)) and not(contains(@Title,’Accueil’)) and not(contains(@Path,’Lists’)) »>

<li>

<div style= »margin-{$Alignment}:{$LevelIndent}px; »>

<div>

<span>

<xsl:choose>

<xsl:when test=’string-length(@Path) > 0′>

<a href= »{cmswrt:EnsureIsAllowedProtocol(string(@Path))} »>

<xsl:value-of select= »@Title »/>

</a>

</xsl:when>

<xsl:otherwise>

<xsl:value-of select= »@Title »/>

</xsl:otherwise>

</xsl:choose>

</span>

</div>

<xsl:if test= »count(child::Item) > 0″>

<ul>

<xsl:for-each select= »child::Item »>

<li>

<span>

<a href= »{cmswrt:EnsureIsAllowedProtocol(string(@Path))} »>

<xsl:value-of select= »@Title »/>

</a>

</span>

</li>

</xsl:for-each>

</ul>

</xsl:if>

</div>

</li>

</xsl:when>

</xsl:choose>

</xsl:template>

Et

<xsl:template name= »IRSN-Niveau-2″ match= »Level[@LevelTemplate=’XXXX-Niveau-2′] »>

<xsl:variable name= »LevelIndent » select= »(number(@LevelNumber)-number(1))*number(14)+number(4) »></xsl:variable>

<xsl:variable name= »LeafIndent » select= »$LevelIndent+6″></xsl:variable>

<xsl:variable name= »LeafIndentWithBullet » select= »$LevelIndent+14″></xsl:variable>

<xsl:choose>

<xsl:when test= »not(contains(@Path,’_layouts’)) and not(contains(@Path,’Forms’)) and not(contains(@Title,’Accueil’)) and not(contains(@Path,’Lists’)) »>

<li>

<div style= »margin-{$Alignment}:{$LevelIndent}px; »>

<div>

<div>

<span>

<xsl:choose>

<xsl:when test=’string-length(@Path) > 0′>

<a href= »{cmswrt:EnsureIsAllowedProtocol(string(@Path))} »>

<xsl:value-of select= »@Title »/>

</a>

</xsl:when>

</xsl:choose>

</span>

</div>

<div>

<xsl:value-of select= »@Description » />

</div>

</div>

<xsl:if test= »count(child::Item) > 0″>

<ul>

<xsl:for-each select= »child::Item »>

<li>

<div>

<span>

<a href= »{cmswrt:EnsureIsAllowedProtocol(string(@Path))} »>

<xsl:value-of select= »@Title »/>

</a>

</span>

</div>

<div>

<xsl:value-of select= »@Description » />

</div>

</li>

</xsl:for-each>

</ul>

</xsl:if>

</div>

</li>

</xsl:when>

</xsl:choose>

</xsl:template>

Ces templates sont en très grandes parties issus de modèle déjà existant, ce qui change c’est la condition de départ :

<xsl:choose>

<xsl:when test= »not(contains(@Path,’_layouts’)) and not(contains(@Path,’Forms’)) and not(contains(@Title,’Accueil’)) »>

Nous affichons uniquement les éléments qui n’utilisent pas les mots clés « _layouts », « Forms » et « Accueil »

Configurer ensuite le composant WebPart pour qu’il utilise ces 2 templates.

Voilà le résultat 🙂

Composant WebPart Exchange

Je viens de créer un projet sur le portail de développement communautaire made in Microsoft (CodePlex).
Voici le lien qui vous mènera sur le projet Exchange WebPart.

Il existe une version pour SharePoint 2007 (MOSS 2007 et WSS 3.0) et une pour SharePoint 2010

Le fonctionnement est très simple, la vue par défaut indique le nombre de messages non lus.

Le lien « Voir les messages » permet de consulter un aperçu des emails.

Il est possible de marquer un message commu lu pour ne plus l’afficher dans le composant WebPart.

Le WebPart utilise les fichiers de ressources (fichier .resx) et utilise donc la langue du site SharePoint comme moyen de détection. Français et Anglais uniquement pour l’instant.

J’oubliai le WebPart est compatible Exchange 2007 SP1 et Exchange 2010 car j’utilise l’API EWS (Exchange Web Service).

N’hésitez pas à laisser des commentaires ou à proposer des traductions supplémentaires.

kOuilb 😉

%d blogueurs aiment cette page :