Mostrando entradas con la etiqueta Master Page. Mostrar todas las entradas
Mostrando entradas con la etiqueta Master Page. Mostrar todas las entradas

27 diciembre, 2011

SharePoint Branding: Propiedad After de CssRegistration

Hoy me he encontrado con la maravillosa propiedad After de la clase CssRegistration... Bien, explico rápidamente la situación:

Cuando creamos una Master Page desde cero, solemos tener varios CSS que nos definen la página, style.css, reset.css, ie7.css (ejem), etc etc... Y como todos sabéis, no es lo mismo:

  • <sharepoint:cssregistration name="reset.css" runat="server"></sharepoint:cssregistration>
  • <sharepoint:cssregistration name="style.css" runat="server"></sharepoint:cssregistration>
  • <sharepoint:cssregistration name="ie7.css" runat="server"></sharepoint:cssregistration>
Que por ejemplo:
  • <sharepoint:cssregistration name="ie7.css" runat="server"></sharepoint:cssregistration>
  • <sharepoint:cssregistration name="style.css" runat="server"></sharepoint:cssregistration>
  • <sharepoint:cssregistration name="reset.css" runat="server"></sharepoint:cssregistration>
Probablemente la segunda no muestre lo que nos ha enseñado el diseñador...

Bien pues para ésto hay solución! La propiedad "After" que se utilizaría de la siguiente forma:
  • <sharepoint:cssregistration name="reset.css" After="corev4.css" runat="server"></sharepoint:cssregistration>
  • <sharepoint:cssregistration name="style.css" After="reset.css" runat="server"></sharepoint:cssregistration>
  • <sharepoint:cssregistration name="ie7.css" After="style.css" runat="server"></sharepoint:cssregistration>
Bueno pues a pesar de ser ésta la propiedad a utilizar, hay que ser rigurosos ya que para los CSS propios, la ruta de acceso al mismo (etiqueta Name) tiene que ser exactamente la misma que pongamos en el After:
  • <sharepoint:cssregistration name="/_layouts/app1/css/reset.css" After="corev4.css" runat="server"></sharepoint:cssregistration>
  • <sharepoint:cssregistration name="/_layouts/app1/css/style.css" After="/_layouts/app1/css/reset.css" runat="server"></sharepoint:cssregistration>
  • <sharepoint:cssregistration name="/_layouts/app1/css/ie7.css" After="/_layouts/app1/css/style.css" runat="server"></sharepoint:cssregistration>
Notar que el corev4.css no es necesario que siga dicha regla.

Espero que os ahorre algo de tiempo cuando os encontréis con algo parecido.

Os dejo una buena referencia al respecto: Blog de SingChan

02 agosto, 2011

Cambiar el aspecto de Project Server 2010

Si necesitas cambiar el aspecto básico y típico de Project Server 2010, tendrás que hacer 2 cosas:
1. Habilitar el código servidor en las páginas de SharePoint (http://www.projectserver2010blog.com/2010/01/project-server-2010-changing-master.html)
2. Habilitar la caractarística de publicación de Site Collection (Site Settings)
3. Hacer una solución para desplegar la masterPage que quieres poner

A partir de ahí verás que cuando pones la masterpage de publicación, te habilitará las secciones de SharePoint únicamente. Si luego lo configuras de manera que la misma masterpage también actúe como MasterPage de sistema funcionará, pero cuando se abran cuadros de diálogo tendrás un problema....

Hay varias opciones, pero una muy sencilla es incorporar un Control de Usuario que, agregado a la MasterPage, inserte un CSS que oculte todas las secciones que no queremos visualizar en las lightbox que muestra SharePoint.

Siguiendo con los pasos:

4. Crear un UserControl que en el RenderWebpart(...) tenga un código parecido al siguiente:

protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);

if (Page.Request.QueryString["IsDlg"] != null && Page.Request.QueryString["IsDlg"] != string.Empty && Page.Request.QueryString["IsDlg"] == "1")
{
Page.Response.Output.WriteLine("




");
}
}

5. Desplegamos la solución con el UserControl que hemos creado y lo registramos en la masterpage. Para éste último paso os facilito una referencia muy útil:
http://2010help.wordpress.com/2011/02/16/add-a-custom-user-control-to-a-sharepoint-2010-master-page/

No deja de ser una imitación de un cambio real de masterpage, aunque fijaros que podemos ocultar sólo parte de la masterpage customizada, que eso sí suele resultar útil.

Si preferís cambiar la masterpage en tiempo de ejecución deberéis hacerlo en el PreInit de la página, cosa que en SharePoint no estña soportada po rlo que deberéis interceptar vía HttpModule el evento y sobreescribir el código que ejecuta.