Ocultar la opción "View All Site Content" de un sitio de WSS 3.0
Para realizar la tarea que indica el título de este post podríamos hacerlo de diferentes maneras, una de ellas abriendo el sitio usando SharePoint Designer 2007 y simplemente borrando el control. No obstante esta opción es demasiado radical ya que ni siquiera los usuarios administradores podrían ver ese control una vez borrado. Por lo tanto el escenario más común buscado sería: Ocultar la opción "View All Site Content" pero solo para los usuarios X o los usuarios Y. Bien pues una manera de solucionar esta duda sería editar el master page de nuestro sitio y encapsular el mencionado control View All Site Content (que técnicamente es un SPLinkButton) con un control SPSecurityTrimmedControl especificando su propiedad PermissionsString a un permiso que sepamos que solamente tienen los usuarios a los que queremos que se les despliegue el control.
Veamos lo anterior ahora en código: A continuación se muestra un fragmento de código que pertenece al master page de mi sitio al que le quiero ocultar el control View All Site Content. El fragmento muestra la barra de navegación izquierda que es donde comunmente se encuentra ese control: (los números son de referencia únicamente)
1: <asp:ContentPlaceHolder ID="PlaceHolderLeftNavBar" runat="server">
2: <div class="ms-quicklaunchouter">
3: <div class="ms-quickLaunch" style="width: 100%">
4: <h3 class="ms-standardheader">
5: <label class="ms-hidden">
6: <SharePoint:EncodedLiteral runat="server" text="<%$Resources:wss,quiklnch_pagetitle%>"
7: EncodeMethod="HtmlEncode" /></label>
8: <div class="ms-quicklaunchheader">
9: <SharePoint:SPLinkButton id="idNavLinkViewAll" runat="server" NavigateUrl="~site/_layouts/viewlsts.aspx"
10: Text="<%$Resources:wss,quiklnch_allcontent%>" AccessKey="<%$Resources:wss,quiklnch_allcontent_AK%>" /></div>
11: </h3>
En la línea número 9 está nuestro objetivo. Pongamos el control SPLinkButton dentro de un SPSecurityTrimmedControl tal como lo muestra el siguiente código ya modificado:
1: <asp:ContentPlaceHolder ID="PlaceHolderLeftNavBar" runat="server">
2: <div class="ms-quicklaunchouter">
3: <div class="ms-quickLaunch" style="width: 100%">
4: <h3 class="ms-standardheader">
5: <label class="ms-hidden">
6: <SharePoint:EncodedLiteral runat="server" text="<%$Resources:wss,quiklnch_pagetitle%>"
7: EncodeMethod="HtmlEncode" /></label>
8: <SharePoint:SPSecurityTrimmedControl runat="server" PermissionsString="ManageWeb">
9: <div class="ms-quicklaunchheader">
10: <SharePoint:SPLinkButton id="idNavLinkViewAll" runat="server" NavigateUrl="~site/_layouts/viewlsts.aspx"
11: Text="<%$Resources:wss,quiklnch_allcontent%>" AccessKey="<%$Resources:wss,quiklnch_allcontent_AK%>" /></div>
12: </SharePoint:SPSecurityTrimmedControl>
13: </h3>
Debemos hacer notar que estamos usando el permiso ManageWeb. Esto qué significa? Que unicamente aquellos usuarios que tengan ese permiso podrán ver el control View All Site Content. Y ya que se trata de un permiso -comunmente- asignado a administradores, un usuario normal no debería tenerlo (en mi caso, por ejemplo). Claro está, esto dependerá de la implementación de cada quién; por lo tanto aquí está la lista de permisos que podemos usar.
Asimismo, esto también aplica para la barra de navegación o "Top link bar" de los sitios de SharePoint, solo busquen en el master page el control TopNavigationMenu de tipo <SharePoint:AspMenu> y repitan la receta.
Espero que esto les sea de ayuda.
Salu2!