Navegacion Personalizada en WSS 3.0

Hace poco me toco trabajar nuevamente con Windows SharePoint Services (WSS) en su versión 3.0 con un cliente, tenía tiempo que no trabajaba con la versión core de SharePoint.

De esa experiencia sale este post técnico sobre algo que nunca me había tocado vivir; resulta ser que el menú de navegación de WSS, que trabaja muy bien en MOSS, no es tan completo en WSS, y es que cuando uno comienza a trabajar con permisos en la navegación, en MOSS el grandioso Security Trimming sale a relucir, ayudandonos a ocultar o mostrar los tabs de navegación dependiendo de los permisos de los usuarios, pero en WSS el trabajo es más rudimentario, ya que los tabs de navegación los tenemos que crear a mano y además estos no se ven afectados por el estimado Security Trimming.

Gran problema tenemos ante nosotros, cuando buscamos una experiencia de usuario que en MOSS es simple y configurable a través de clics y en WSS nos encontramos con un panorama recortado; un developer podría decir que todo tiene solución con unas cuantas líneas de código, pero un ITPro, como un servidor, piensa inmediatamente en un workarround, más coloquialmente, en como darle la vuelta al problema, pero lo más importante “sin programación”, o en su caso, con lo más mínimo de programación.

La solución ITPro es:

  1. Creamos una Lista en WSS que manejará la navegación. Sip, tendremos que crear manualmente los tabs, pero eso ya lo hacemos en WSS de todas formas.
  2. Descargamos e implementamos la webpart “ Cascading Navigation ” de CodePlex . Esta bien, admito que se tuvo que recorrer a un desarrollo, pero hasta el momento no hemos abierto ningún Visual Studio.
  3. Hacemos unos cuantos ajustes a la master page de nuestro sitio. Ok, esto digamos que es desarrollo pero estamos trabajando con SharePoint Designer.
  4. Problema resuelto… sin Visual Studio… jejeje

El paso a paso:

  • Creamos nuestra lista personalizada en el sitio, con el nombre que gusten, tomando en cuenta las mejores prácticas, ejemplo “NavegacionSitio”. Las columnas de la lista serán:

  • Para el caso de la columna “Item Level”, las opciones son: Level 1 , Level 2 y Level 3 . Escribanlos tal cual.
  • Para el caso de la columna “Display0”, las opciones son: Yes y No . Por favor, usen este tipo de campo, no sirve si usan el de tipo Si/No.
  • Pueden crear un elemento en la lista para probar el menú cuando se tenga listo, para ello pondrán:
    • un título,
    • la url,
    • en ID pueden poner 1 pero debe ser único para cada elemento,
    • Parent ID dejenlo vacío,
    • Link Order pongan 1
    • Item Level escojan Level 1
    • Display0 escojan Yes
  • Ahora instalamos la webpart que descargamos de CodePlex, recuerdan cómo?, acá los pasos:
    • stsadm -o addsolution -filename <ruta>\<archivo>.wsp
    • stsadm -o deploysolution -name <archivoWSP> -url <sitio> -immediate
  • Vamos a probar la webpart en el sitio, editen la página y agreguen la webpart a la zona que gusten, ahora en las propiedades vayan a la sección de “Miscellaneous” y pongan el nombre de la lista que crearon al principio en el campo “Admin List”; ejemplo “NavegacionSitio”.
  • Debe verse un menú muy parecido al de la navegación del sitio pero con los datos de los elementos que hayan creado en su lista, si les sale un error o no despliega nada, entonces revisen nuevamente los pasos porque algo les fallo.
  • Toca entonces modificar la master page de nuestro sitio, sobra decir que lo hacemos con SharePoint Designer.
  • En la vista de código buscamos la sección de registros (<%@ Register), que siempre esta al inicio del código, y agregamos la siguiente línea:
    • <%@ Register TagPrefix=”customnav” assembly=”CascadingNav, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5″ namespace=”CascadingNav” %>
  • Ahora comentamos la parte del código que nos genera la navegación predeterminada del sitio, algo como ésto:
  • <asp:ContentPlaceHolder id=”PlaceHolderHorizontalNav” runat=”server”>

    <SharePoint:AspMenu

    ID=”TopNavigationMenu”

    Runat=”server”

    DataSourceID=”topSiteMap”

    EnableViewState=”false”

    AccessKey=”<%$Resources:wss,navigation_accesskey%>”

    Orientation=”Horizontal”

    StaticDisplayLevels=”2″

    MaximumDynamicDisplayLevels=”2″

    DynamicHorizontalOffset=”0″

    StaticPopoutImageUrl=”/_layouts/images/menudark.gif”

    StaticPopoutImageTextFormatString=””

    DynamicHoverStyle-BackColor=”#CBE3F0″

    SkipLinkText=””

    StaticSubMenuIndent=”0″

    CssClass=”ms-topNavContainer”>

    <StaticMenuStyle/>

    <StaticMenuItemStyle CssClass=”ms-topnav” ItemSpacing=”0px”/>

    <StaticSelectedStyle CssClass=”ms-topnavselected” />

    <StaticHoverStyle CssClass=”ms-topNavHover” />

    <DynamicMenuStyle BackColor=”#F2F3F4″ BorderColor=”#A7B4CE” BorderWidth=”1px”/>

    <DynamicMenuItemStyle CssClass=”ms-topNavFlyOuts”/>

    <DynamicHoverStyle CssClass=”ms-topNavFlyOutsHover”/>

    <DynamicSelectedStyle CssClass=”ms-topNavFlyOutsSelected”/>

    </SharePoint:AspMenu>

    • Si no recuerdan como comentar el código, pueden usar algo como ésto:
      • <!– (abre comentarios)
      • –> (cierra comentarios)
  • Justo después del código comentado, vamos a poner la siguiente línea:
    • <customnav:CascadingNav runat=”server” id=”customNav” Set_AdminList=”NavegacionSitio” __WebPartId=”{89DFF3CB-0E4A-4623-B69B-DFB818FBF6DB}”/>
  • Fíjate muy bien que en la parte de “Set_AdminList” tengas el nombre de tu lista, yo puse NavegacionSitio porque es el de mi ejemplo. Guardamos los cambios y cerramos.

Excelente, hemos llegado al final, ahora debes tener el menú de navegación personalizado, basta con que modifiques los elementos de tu lista para tener los tabs que deseas, la pregunta es: ésto funciona con Security Trimming?, la respuesta es: claro que sí; haz la prueba dandole permisos especiales a tus elementos de la lista y verás como cuando entras con los distintos usuarios que configures para cada elemento, el menú de navegación te mostrará los tabs correctos.

Ahora sí podemos presumir nuestro nuevo menú de navegación estilo MOSS en WSS, jajaja.

Saludos;

Vlad


Technorati : , , , , ,
Del.icio.us : , , , , ,
Zooomr : , , , , ,
Flickr : , , , , ,

Cross-Posting desde http://sharepointmx.mvps.org/blogs/medinav/

0 0 votos
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
Ver todos los comentarios