El tema de la navegación es crucial en cualquier aplicación web, así que suele ser uno de los temas que mayor demanda de personalización tiene. Por cierto, si queréis ver auténticas maravillas de menús de navegación hechos dentro de Sharepoint (no dice la versión), echarle un vistazo a: http://www.topsharepoint.com/stylish-navigation-menus-on-sharepoint-sites

Pues bien, últimamente he estado trabajando con el objeto SPWeb.Navigation y más concretamente con su propiedad QuickLaunch, que es la responsable (en parte) de pintar el menú QuickLaunch (menú de la izquierda) de Sharepoint.

Y digo en parte, porque si recorréis el QuickLaunch depués de haber agregado un nuevo site o una nueva página, no tendréis ni rastro de ellos dentro del listado de nodos!! sin embargo, en el menú de la izquierda sí que aparecen. Pero es más, si entráis a la configuración del sitio –> Exploración:

image

y realizamos cualquier cambio (modificar el orden de alguna página, añadir un nuevo enlace…) y volvemos a listar el QuickLaunch, veremos como ahora sí que aparecen el site o página creado ¿¿??

Después de unas búsquedas por google bing, vi que el caso era muy frecuente, pero no encontré con ninguna solución 100% efectiva. Finalmente me puse un contacto con un técnico de MS, y os resumo la conversación.

  • Yo: esto no va?
  • MS: es que es por diseño…
  • Yo: ¿?
  • MS: el objeto QuickLaunch no se actualiza su listado de nodos cuando se crea un nuevo site o una nueva página. Tan sólo se actualiza cuando se realiza algún cambio desde la opción de Exploración, o bien se toca desde código.
  • Yo: leches!! entonces, ¿cómo pinta Sharepoint el menú de la izquierda, o el mismo listado de la opción Exploración?. En ambos casos sale cualquier site o página, aunque la acabes de añadir.
  • MS: Se hace “a lo bruto”, recorriendo sites y páginas y tan sólo se mira el QuickLaunch para ordenar u ocultar aquello que se haya definido desde la parte de Exploración.
  • Yo: Y eso está documentado en algún sitio?
  • MS: No.

Bueno, os he puesto la conversación en modo cachondeo, pero debo decir que el técnico de MS se portó muy bien 🙂

Pues ya sabéis, si estáis personalizando la navegación, probablemente el QuickLaunch no os vaya a servir, y tendréis que tirar de una lectura recursiva de sites y páginas.

Os paso un par de enlaces de interés al respecto y con algo de código de ayuda:

http://blogs.msdn.com/sridhara/archive/2008/05/24/digging-into-why-sharepoint-navigation-apis-wouldn-t-work-on-sites-using-collaboration-or-publishing-site-definition.aspx

http://blogs.msdn.com/sridhara/archive/2008/06/07/navigating-through-navigation-in-wss-3-0.aspx

 

No os puedo pasar ningún código que solvente el problema, ya que en mi caso sólo se necesitaba que el menú fuese muy bonito (animación con jQuery y esas cosas), pero las opciones de menú para ese site, cambiarán una vez al siglo, así que cuando cambien, que actualicen desde el menú de exploración 😉

De todas formas espero que os sirva y no os paséis horas buscando un método mágico que refresque el quicklaunch, como me pasó a mi le pasó a un primo de un conocido de mi amigo…