viernes, 23 de octubre de 2009

Crear un una plantilla de páginas con zonas de elementos web programáticamente

Breve post para explicar como crear un template de página con múltiples webparts zones e instanciarla. Los templates de páginas son los que ven cuándo elijen crear una página de elementos web desde el navegador.

Crear página

Seleccionar un template

Paso 1: Crear el template de página

Para crear la plantilla debemos construir una página ASPX que herede de Microsoft.SharePoint.WebPartPages.WebPartPage. Está página debe almacenarse en la carpeta \TEMPLATES\CONTROLTEMPLATES\. Un ejemplo sencillo de plantilla sería:

<asp:Content ID="main" runat="server" ContentPlaceHolderID="PlaceHolderMain" >

<table width="100%"> <tr>

<td valign="top" style="width:50%"> <WebPartPages:WebPartZone ID="LeftZone" runat="server" FrameType="TitleBarOnly" Title="Left Web Part zone" /> </td>

<td valign="top" style="width:50%"> <WebPartPages:WebPartZone ID="RightZone" runat="server" FrameType="TitleBarOnly" Title="Right Web Part zone" /> </td>

</tr> </table>

</asp:Content>

Paso 2: Instanciar la página

Por supuesto podemos instanciar la página desde el navegador. Nos aparecerá una página cómo la que se muestra en la imagen en la que podemos agregar nuestras webparts:

Agregado de webparts en forma manual

Existen dos maneras de hacerlo programáticamente, a través de un módulo o a través de la API de SharePoint.

a) Módulo

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

<Module Path="PageTemplates" Url="SitePages" >

<File Url="PlantillaSurPoint.aspx" Name="InstanciaSurPoint.aspx" Type="Ghostable" >

<AllUsersWebPart WebPartZoneID="LeftZone" WebPartOrder="0">

<![CDATA[ <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2" xmlns:iwp="http://schemas.microsoft.com/WebPart/v2/Image"> <Assembly>Microsoft.SharePoint, ...</Assembly> <TypeName>Microsoft.SharePoint.WebPartPages.ImageWebPart</TypeName> <FrameType>None</FrameType> <Title>Mi elemento web</Title> <iwp:ImageLink>https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAse6LsweeswAhy8jxIFE5sEN-jIP1IVGzj6P55_DKeDbWUTCcrhZLJE6dv2vl20SCAn07a1BeHBNk3WCqgw6vYofpLfr2tZBW7Mg8q0MX1TFnempFpCSq7o-IuNa1Ir_7lMjq4ZOHj00L/s1600-r/surpoint.png</iwp:ImageLink> </WebPart> ]]>

</AllUsersWebPart> </File>

</Module> </Elements>

b) API

SPWeb sitio = SPContext.Current.Web;           

SPFile pagina = sitio.GetFile("SitePages/InstanciaSurPoint.aspx");

SPLimitedWebPartManager Manejador;

Manejador = pagina.GetLimitedWebPartManager(PersonalizationScope.Shared);

ImageWebPart elemento = new ImageWebPart();

elemento.ChromeType = PartChromeType.None;

elemento.ImageLink = @"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAse6LsweeswAhy8jxIFE5sEN-jIP1IVGzj6P55_DKeDbWUTCcrhZLJE6dv2vl20SCAn07a1BeHBNk3WCqgw6vYofpLfr2tZBW7Mg8q0MX1TFnempFpCSq7o-IuNa1Ir_7lMjq4ZOHj00L/s1600-r/surpoint.png";

Manejador.AddWebPart(elemento, "RightZone", 0);

Hasta la próxima…

0 comentarios:

Publicar un comentario