Paginas Maestras en SharePoint… mejor o peor de lo que esperaba?

Cuando se conocieron las primeras noticias sobre SharePoint 2007, una de las cosas que me hicieron saltar de alegría fue la posibilidad de usar Paginas Maestras. Una de las pesadillas al modificar la presentación de un portal de SharePoint 2003 es la cantidad de trabajo que hay que hacer para cambiar las cosas más mínimas; me acuerdo muy bien un proyecto de hace un par de años en donde tuvimos que cambiar 359 archivos para hacer que la intranet (SharePoint 2003) de un cliente tuviera la misma presentación grafica que su extranet. Por supuesto que en el transcurso del tiempo se han creado «soluciones» para arreglar el problema («skinners»), pero ninguna funciona bien bajo cargas altas de usuarios.


Con las Paginas Maestras es posible realizar cambios en todo el Portal cambiando solamente una página (default.master)… genial… o casi. En realidad, no todas las paginas utilizan la misma Pagina Maestra: solamente las páginas de contenido la utilizan. Todas las páginas del «sistema» (las páginas de administración, por ejemplo) se niegan rotundamente a utilizarla pues usan la suya propia (application.master). Pero bueno, se podría pensar, es mejor cambiar dos páginas a cambiar 359… El problema es que en la administración del Portal se puede definir que Pagina Maestra se debe usar en el Portal, o, mejor dicho, en las páginas de contenido del Portal, pero no se puede definir lo mismo para las páginas del sistema. Así que, al final tendremos dos diferentes layouts: uno para contenido y otro para administración; el primero se puede modificar para cada sitio independiente, y el segundo es para todo el sistema… se comprende? No?… yo tampoco lo comprendo…


Una metida de pata de nuestros amigos en Seattle, una oportunidad desperdiciada o un NDI («Non Documented Issue», aunque si está documentado en el SDK)?. Probablemente nunca lo sabremos definitivamente. Pero ahora hay que buscar alguna forma para salirse del problema: como modificar algo que sucede en todo el Portal desde un sitio único, sin tener que pasarse el resto de vida programando… un HttpModule, pensaría yo. No son difíciles de programar, ahora que SharePoint no utiliza un filtro ISAPI funcionaran probablemente de una forma más estable, y se pueden configurar para que cada sitio utilice su propia Pagina Maestra para contenido Y sistema.


Provisionalmente hablando (no lo he probado aun con seriedad), el código debería ser algo parecido a:


public class MiModuloParaPaginasMaestras : IHttpModule
{
   public void Init(HttpApplication context)
   {
     Page miPagina = HttpContext.Current.CurrentHandler as Page;
     if (miPagina.MasterPageFile.Contains(«application.master»))
     {
       miPagina.MasterPageFile = «/_catalogs/masterpage/miPaginaMaestra.master»;
     }
   }
}


Es decir, cada página que envía un request a IIS es interceptada por el HttpModule, y si tiene un «application.master», se le cambia por un «miPaginaMaestra.master». Hasta ahora solamente he visto que funciona, pero el código no está listo para ser usado en producción. Varios problemas se pueden presentar aquí, y todos tienen que ver con las Paginas Maestras mismas:


– Hay dos formas para crear y modificar Paginas Maestras: a «lo mero macho», como dirían mis amigos los mexicanos, es decir escribiendo el código como se debe (código http, mas código xml, mas código CAML… en realidad, algo para los que saben lo que están haciendo), o usando el nuevo SharePoint Designer (facilito de hacer, pero se pierde totalmente el control sobre lo que pasa con el código). Desafortunadamente el Designer tiene una historia desastrosa de 10 años de mal-funcionamiento (cuando todavía se llamaba FrontPage)


– No hay forma de depurar Paginas Maestras: si se comete un error, el sitio simplemente deja de funcionar. Lo único que se puede hacer por ese lado es cambiar las propiedades del web.config respectivo para mostrar una indicación del problema en pantalla.


En resumen y para terminar. Las Paginas Maestras en SharePoint 2003 son una mejora (hasta una mejora enorme, se puede decir), pero les falto correr la ultima milla para hacerlas funcionar perfectamente… así que ellas son mejor y peor de lo que esperaba.


Gustavo – http://www.gavd.net/servers/
Escriba un Comentario que me haga reir…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *