Webcast – Integrando aplicaciones de negocio en Sharepoint – Ciclo 24 MOSS

El Jueves 25/09/2008 estuvimos dictando con mi amigo y colega Juan Andrés Valenzuela el webcast donde mostramos como se pueden integrar nuestras aplicaciones de negocio en nuestros portales de Sharepoint. El mismo se baso en la configuración y utilización de los catálogos de datos profesionales (BDC) y como Sharepoint 2007 (MOSS) nos permite integrar aplicaciones externas. En la siguiente dirección Microsoft Technet podrán acceder a la grabación del mismo para verlo completo.

Dado que el tiempo para el WebCast fue poco para mostrar todo los que deseábamos, vamos a estar haciendo una segunda parte en las próximas sesiones y además voy a estar escribiendo una serie de artículos para adentrarnos en la funcionalidad de lleno y así ver la misma de forma completa.

Acá les dejo el código de la webpart que estuvimos mostrando en el Webcast, donde podrán ver como programáticamente podemos consumir también los catálogos de datos profesionales.

using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;
using System.Data;
using System.Web.UI.HtmlControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;
using Microsoft.Office.Server.ApplicationRegistry.MetadataModel;
using Microsoft.Office.Server.ApplicationRegistry.Runtime;
using Microsoft.Office.Server.ApplicationRegistry.Infrastructure;

namespace MOSSCA.WebCast.BussinesDataCatalog
{
    [Guid("ddd7cda5-5156-4e6a-a838-9d5c12f38369")]
    public class ViewWebPart : System.Web.UI.WebControls.WebParts.WebPart
    {
        private LobSystem lLobSystem;
        private LobSystemInstance lLobSystemInstancia;
        private NamedLobSystemInstanceDictionary lSystemInstancia;
        private Entity lEntidad;
        private MethodInstance lMetodo;
        private NamedEntityDictionary lEntidades;
        private NamedMethodInstanceDictionary lInstanciasMetodos;
        DataTable lRowEntityDataTable = new DataTable();
        
        public ViewWebPart()
        {
            this.ExportMode = WebPartExportMode.All;
        }

        protected override void CreateChildControls()
        {
            lLobSystem = ApplicationRegistry.GetLobSystems()["AdventureWorksLOBSystem"]; 
            lSystemInstancia = lLobSystem.GetLobSystemInstances(); //Obtengo todas las instancias.
            lLobSystemInstancia = lSystemInstancia["AdventureWorksInstance"]; //Obtengo la instancia especifica                                                                      
            lEntidades = lLobSystemInstancia.GetEntities(); //Obtengo todas las entidades de la instancia.
            lEntidad = lEntidades["HumanResources.Department"]; //Obtengo la entidad departamento.
            lInstanciasMetodos = lEntidad.GetMethodInstances(); //Obtengo todas las instancias de los metodos
            lMetodo = lInstanciasMetodos["HumanResources.[Department]Finder"]; //Obtengo el metodo que deseo ejecutar.
            Object[] lParametros = { }; //Array de objetos para la ejecucion de la instancia del metodo.

            //Ejecuto el metodo y cargo un enumerador para iterar los resultados.
            IEntityInstanceEnumerator lEnumeratorDepartamento = (IEntityInstanceEnumerator)lEntidad.Execute(lMetodo, lLobSystemInstancia, ref lParametros);
            IEntityInstance lEntityInstance = null;
            HtmlTable lTableResultado = new HtmlTable();
            while (lEnumeratorDepartamento.MoveNext())
            {
                //Obtengo la instancia de la entidad que apunta el enumerador.
                lEntityInstance = lEnumeratorDepartamento.Current;
                lRowEntityDataTable = lEntityInstance.EntityAsDataTable; //Convierto la instancía del registro en una DataTable
                lTableResultado.Controls.Add(GetRowFromTable(lRowEntityDataTable.Rows[0])); //Creo un HtmlRow a partir de la tabla cargada
            }
            base.Controls.Add(lTableResultado); //Cargo la HtmlTable en la coleccion de controles para ser dibujada en el formulario.
            base.CreateChildControls();
        }

        private HtmlTableRow GetRowFromTable(DataRow pRow)
        {
            HtmlTableCell lCell;
            HtmlTableRow lRetorno = new HtmlTableRow();
            foreach (DataColumn lDt in pRow.Table.Columns)
            {
                lCell = new HtmlTableCell();
                lCell.InnerText = pRow[lDt.ColumnName].ToString();
                lRetorno.Controls.Add(lCell);
            }
            return lRetorno;
        }

        protected override void Render(HtmlTextWriter writer)
        {
            // TODO: add custom rendering code here.
            base.Render(writer);
        }
    }
}

Webcast – Sharepoint integrado con tus aplicaciones de negocios – Ciclo 24 MOSS MOSSCA

WEbCast_BDC

Quiero invitarlos a un nuevo WebCast que vamos a estar dictando con mi amigo y colega Juan Andrés Valenzuela a realizarse el día 25 de septiembre próximo a las 18:00 horas Santiago de Chile (GMT -4). En esta oportunidad queremos compartir con ustedes la importancia para nuestras aplicaciones Sharepoint de contar con acceso a datos externos. Revisaremos las potencialidades de BDC (Business Data Catalog) para la interacción con otros sistemas y como esta característica tiene una estrecha relación con otras en Sharepoint.

Pueden registrarse aquí y reservar lugar.

Webcast Hardening en Sharepoint – Ciclo 24 MOSS MOSSCA

3_Hardening en Sharepoint

Quiero invitarlos al próximo Webcast que estaremos dictando en conjunto con mi amigo y colega Juan Andrés Valenzueza el día Martes 16 de Septiembre a las 06:00 PM de Santiago de Chile (GMT-4). En esta oportunidad estaremos analizando y viendo como podemos manejar nuestros servidores Sharepoint para evitar catástrofes y de ser necesario como podemos recuperarnos antes las mimas.

Pueden registrarse aquí y reservar lugar. Los esperamos a todos.

WebCast Branding en MOSS 2007 – Diseño de Página – Ciclo 24 MOSS

Me gustaría compartir con ustedes la segunda demostración que hicimos en el webcast que dictamos con mi amigo y colega Juan Andrés Valenzuela sobre Breanding y diseño en la plataforma Sharepoint 2007. La idea de este artículo es un paso a paso de lo que realizamos ese día en vivo y brindarles a ustedes el código utilizado para esta demostración.
Los primero que tenemos que tenemos que hacer es habilitar la característica de la colección de sitios “Infraestructura de Publicación de Office Sharepoint Server” la cual nos creara una serie de bibliotecas y nos habilitara Webparts, hojas de estilo XSLT y workflows para el manejo de contenido. La misma deberá estar habilita a nivel de colección de sitio como comente anteriormente y en cada subsito que nosotros queremos tener el manejo de contenido habilitado, en la imagen 1 vemos esta característica habilitada.

[Imagen 1]
clip_image002

Una vez esta habilitado lo próximo que vamos hacer es crear dos tipos de contenido (Content Type) en Sharepoint para poder basar nuestras páginas en los mismos. Los dos tipos de contenido que vamos a crear son uno basado en “Pagina de Articulo (Articule Page)” como vemos en la imagen 2 y el segundo basado en “Página (Page)” como vemos en la imagen 3.

[Imagen 2]
clip_image004

[Imagen 3]
clip_image006

Lo próximo que debemos hacer es conectarnos a nuestro sitio de Sharepoint utilizando el Sharepoint Designer, donde procederemos a crear los dos “Diseño de Pagina” Page Layout correspondientes. Una vez en el Sharepoint Designer navegamos hasta la biblioteca “masterpage” que es donde vamos a tener que guardar y publicar nuestros dos diseños creados.

Una vez ahí, seleccionamos la opción “Nuevo” del menú “Archivo” y se nos desplegara una imagen como podemos ver la imagen 4 y 5, donde debemos seleccionar los tipos de contenidos (Content Types) anteriormente creados.

[Imagen 4]
clip_image008

[Imagen 5]
clip_image010

Lo que debemos hacer ahora es colocar el código necesario dentro del PlaceHolder de contenido. Este código será utilizado por las paginas una vez creemos paginas en nuestro sitio de Sharepoint basados en los diseños que estamos creando. En la sección 1 y 2 encontrarán el código utilizado en el WebCast para la creación de páginas de contenido y páginas dinámicas.

[Sección 1] – Página de contenido

<div class="pageContenido"> <!-- Titulo del Contenido --> <h1 class="title"> &nbsp;<SharePointWebControls:TextField FieldName="Title" runat="server"></SharePointWebControls:TextField> </h1> <!--Contenido--> <div class="entry"> <PublishingWebControls:RichHtmlField FieldName="PublishingPageContent" runat="server"></PublishingWebControls:RichHtmlField> </div> </div>

[Sección 2] – Página dinámica

<!-- start content --> <div id="content"> <WebPartPages:WebPartZone runat="server" AllowPersonalization="false" FrameType="TitleBarOnly" ID="PostZone" Title="Post Blog Zone" Orientation="Vertical"><ZoneTemplate></ZoneTemplate></WebPartPages:WebPartZone> &nbsp; </div> <!-- end content--> <!-- start sidebar--> <div id="sidebar"> <WebPartPages:WebPartZone runat="server" AllowPersonalization="false" FrameType="TitleBarOnly" ID="CategoriesZone" Title="Categories Zone" Orientation="Vertical"><ZoneTemplate></ZoneTemplate></WebPartPages:WebPartZone> &nbsp; <WebPartPages:WebPartZone runat="server" AllowPersonalization="false" FrameType="TitleBarOnly" ID="ArchiviesZone" Title="Archivies Zone" Orientation="Vertical"><ZoneTemplate></ZoneTemplate></WebPartPages:WebPartZone> &nbsp; </div> 

La página de contenido tendrá campos del tipo de contenido creado, que nos permitirá almacenar la información que se cargue en nuestro Sharepoint. La página dinámica contendrá zonas web, que después serán utilizadas para cargar distintas Webparts que deseemos utilizar.

Una vez terminemos de poner nuestro código, debemos guardar ambas paginas dentro de la biblioteca “master” y procederemos a protegerlas. Una vez protegidas debemos aprobarlas para que los cambios realizados queden disponibles, para ello, accedemos a la biblioteca de páginas maestras de nuestro portal Sharepoint, como se puede ver en la imagen 6 para aprobarlas.

[Imagen 6]

clip_image002[4]

Al aprobar el diseño de página que acabamos de crear, quedara disponible para poder crear páginas. Para crear un página basada en el diseño creado, en nuestro portal Sharepoint accedemos al menú de acciones del sito y seleccionamos “Crear página” del menú que se despliega. En la nueva ventana que se nos abre, debemos cargar un nombre, descripción y seleccionar el tipo de página que queremos crear, como pueden ver en la imagen 7, los dos diseños creados por nosotros, se encuentra disponibles, seleccionamos el de contenido y presionamos el botón aceptar.

[Imagen 7]

clip_image004[4]

Lo próximo a realizar es cargarle contenido a nuestra nueva página y publicar la misma utilizando la barra de publicación que dicha página nos está mostrando. Si la página creada, fuera una página basada en el diseño creado para páginas dinámicas, entonces lo que deberíamos hacer es colocar las webparts que queremos utilizar. En la imagen 8 podemos ver cómo queda nuestra nueva página creada.

[Imagen 8]

clip_image006[4]

WebCast Branding en MOSS 2007 – Creando MasterPage – Ciclo 24 MOSS

Me gustaría compartir con ustedes la primera demostración que hicimos en el webcast que dictamos con mi amigo y colega Juan Andrés Valenzuela sobre Breanding y diseño en la plataforma Sharepoint 2007. La idea de este artículo es un paso a paso de lo que realizamos ese día en vivo y brindarles a ustedes el código utilizado para esta demostración.
Los primero que tenemos que tenemos que hacer es habilitar la característica de la colección de sitios “Infraestructura de Publicación de Office Sharepoint Server” la cual nos creara una serie de bibliotecas y nos habilitara Webparts, hojas de estilo XSLT y workflows para el manejo de contenido. La misma deberá estar habilita a nivel de colección de sitio como comente anteriormente y en cada subsito que nosotros queremos tener el manejo de contenido habilitado, en la imagen 1 vemos esta característica habilitada.

[Imagen 1]
clip_image002

Una vez esta habilitado, nos vamos a conectar a nuestro sitio utilizando la herramienta Sharepoint Designer 2007, la cual nos va a brindar la facilidad de crear mucho del contenido que nosotros vamos a utilizar. Una vez conectados al sitio vamos a navegar por las carpetas y bibliotecas de nuestro sitio utilizando el panel izquierdo “Lista de Carpetas” para acceder a donde debemos colocar nuestra página maestra (Master Page), la ruta es _catalogs/masterpage. Ahí nos encontraremos una serie de paginas maestras ya creadas e instaladas que podremos usar, las mismas fueron creadas cuando habilitamos la característica anteriormente mencionada.

Para crear una nueva página maestra seleccionamos en el menú “Archivo” la opción nuevo y se nos va a desplegar una nueva ventana como podemos ver en la imagen 2.

[Imagen 2]
clip_image004

En esta nueva ventana, seleccionamos la opción “Pagina principal” y damos aceptar con lo cual se nos abrirá una nueva página con la extensión .master. No se preocupen por el nombre ahora, ya que después al presionar “Guardar” deberán proporcionar el mismo. Lo próximo que tenemos que hacer es colocar el código necesario para la nueva página maestra (Master Page), en la sección 2 encontraran el código utilizado en la demostración del Webcast, también al final del artículo tendrán un link donde podrán bajarse el código completo, las imágenes y la hoja de estilo utilizadas. Para el correcto funcionamiento de la página maestra deberán crearse dos bibliotecas adicionales para almacenar los recursos a ser utilizados. Pueden usar las bibliotecas que Sharepoint creo, pero deberán cambiar las rutas para que la página maestra que están creando funciones correctamente. Las bibliotecas que necesitan crear en la raíz del sitio son:

· Picture Library Branding – En esta biblioteca estarán todas las imágenes utilizadas.

· Style Library Branding – En esta biblioteca estará la hoja de estilo adicional.

Una vez esta todo pronto, lo próximo que debo hacer es guardar la página maestra, cuando se nos abra la ventana de dialogo, deberemos navegar hasta la biblioteca “masterpage” dado que la misma deberá ser guardada en esta biblioteca del sitio principal de nuestro Sharepoint. Le colocamos un nombre y presionamos el botón “Guardar”. Una vez guardada la misma, quedara en la biblioteca “masterpage” pero estará desprotegida, ya que el icono que presenta nuestra página maestra del lado izquierdo es un “check verde”. Lo próximo que debemos hacer es proteger nuestra página maestra para que el sistema de versionado de la biblioteca nos genere una copia y si no tenemos más modificaciones que hacerle y la queremos probar, lo que debemos hacer es seleccionar la opción publicar. Una vez demos aceptar, se nos preguntara si queremos aprobarla la publicación a lo cual debemos decir que si, si queremos usar la pagina maestra. Se abrirá una ventana del nuestro navegador, donde se nos presentara la vista de la biblioteca de paginas maestras y nuestra página estará listada en la parte superior, pendiente de aprobación. Acá lo único que debemos hacer es, desplegar el menú contextual del elemento y aprobar la misma. Una vez aprobada ya estamos en condiciones de poder utilizarla en el sito que deseemos.

[Sección 2]

<%@ Master language="C#" %>
<!DOCTYPE html Public "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Tagprefix="SPSWC" Namespace="Microsoft.SharePoint.Portal.WebControls" Assembly="Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="PublishingWebControls" Namespace="Microsoft.SharePoint.Publishing.WebControls" Assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="PublishingNavigation" Namespace="Microsoft.SharePoint.Publishing.Navigation" Assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="wssuc" TagName="Welcome" src="~/_controltemplates/Welcome.ascx" %>
<%@ Register TagPrefix="wssuc" TagName="DesignModeConsole" src="~/_controltemplates/DesignModeConsole.ascx" %>
<%@ Register TagPrefix="PublishingVariations" TagName="VariationsLabelMenu" src="~/_controltemplates/VariationsLabelMenu.ascx" %>
<%@ Register Tagprefix="PublishingConsole" TagName="Console" src="~/_controltemplates/PublishingConsole.ascx" %>
<%@ Register TagPrefix="PublishingSiteAction" TagName="SiteActionMenu" src="~/_controltemplates/PublishingActionMenu.ascx" %>
<html>
  <SharePoint:RobotsMetaTag runat="server"/>
   <head id="Head1" runat="server">
    <asp:ContentPlaceHolder runat="server" id="head">
<title><asp:ContentPlaceHolder id="PlaceHolderPageTitle" runat="server" /></title>
    </asp:ContentPlaceHolder>   
    <Sharepoint:CssLink runat="server"/>
    <asp:ContentPlaceHolder id="PlaceHolderAdditionalPageHead" runat="server" />
    <SharePoint:CssLink runat="server"/>
<SharePoint:ScriptLink language="javascript" name="core.js" Defer="True" runat="server"/>
<link rel="stylesheet" type="text/css" href="/Style Library Branding/Branding.css" />
  </head>  
  <body onload="javascript:_spBodyOnLoadWrapper();">
    <form id="Form1" runat="server" onsubmit="Return _spFormOnSubmitWrapper();">
      <WebPartPages:SPWebPartManager runat="server"/>      
  <!– start header –>
<div id="login">
<div Class="ms-globalleft">
    <asp:ContentPlaceHolder id="PlaceHolderGlobalNavigationSiteMap" runat="server">
<asp:SiteMapPath SiteMapProvider="SPSiteMapProvider" id="GlobalNavigationSiteMap" RenderCurrentNodeAsLink="True" SkipLinkText="" NodeStyle-CssClass="ms-sitemapdirectional" runat="server"/>
   </asp:ContentPlaceHolder>
   </div>
<div  Class="ms-globalright">
<a href="javascript:TopHelpButtonClick(‘NavBarHelpHome’)" AccessKey="<%$Resources:wss,multipages_helplink_accesskey%>" id="TopHelpLink" title="<%$Resources:wss,multipages_helplinkalt_text%>" runat="server"><img id="Img1" align="absmiddle" border="0" src="/_layouts/images/helpicon.gif" alt="<%$Resources:wss,multipages_helplinkalt_text%>" runat="server" /></a>
</div>
<div  Class="ms-globalright">
<SharePoint:DelegateControl ControlId="GlobalSiteLink2" Scope="Farm" runat="server"/>
</div>
<div  Class="ms-globalright" style="height: 18px">
<SharePoint:DelegateControl ControlId="GlobalSiteLink1" Scope="Farm" runat="server"/>
</div>
<div Class="ms-globalright">
<wssuc:Welcome id="explitLogout" runat="server"/>
</div>
</div> 
<div id="header">
<div id="logo">
  <asp:ContentPlaceHolder id="PlaceHolderSiteName" runat="server">
<h1>
<SharePoint:SPLinkButton runat="server" NavigateUrl="~site/" id="onetidProjectPropertyTitle">
<SharePoint:ProjectProperty Property="Title" runat="server" />
   </SharePoint:SPLinkButton>
</h1>
<p>
  <SharePoint:SPLinkButton runat="server" NavigateUrl="~site/" id="onetidProjectPropertyDescription">
<SharePoint:ProjectProperty Property="Description" runat="server" />
   </SharePoint:SPLinkButton>
</p>
</asp:ContentPlaceHolder>
</div>
<div id="menu">
<div Class="ms-banner ms-globalright">
<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="1"
  DynamicHorizontalOffset="0"
  StaticPopoutImageUrl="/_layouts/images/menudark.gif"
  StaticPopoutImageTextFormatString=""
  DynamicHoverStyle-BackColor="#FFFFFF"
  SkipLinkText=""
  StaticSubMenuIndent="0">
<StaticMenuStyle/>
<StaticMenuItemStyle CssClass="" ItemSpacing="0px"/>
<StaticSelectedStyle CssClass=""  />
<StaticHoverStyle CssClass="" />
<DynamicMenuStyle  BackColor="#F2F3F4" BorderColor="#A7B4CE" BorderWidth="1px"/>
<DynamicMenuItemStyle CssClass=""/>
<DynamicHoverStyle CssClass=""/>
<DynamicSelectedStyle CssClass=""/>
</SharePoint:AspMenu>
<SharePoint:DelegateControl runat="server" ControlId="TopNavigationDataSource">
<Template_Controls>
<asp:SiteMapDataSource
  ShowStartingNode="False"
  SiteMapProvider="SPNavigationProvider"
  id="topSiteMap"
  runat="server"
  StartingNodeUrl="sid:1002"/>
</Template_Controls>
</SharePoint:DelegateControl>
</asp:ContentPlaceHolder>
</div>
</div>
</div>
<div id="ConsolaPublicacion">
      <PublishingWebControls:AuthoringContainer id="authoringcontrols" runat="server"> <PublishingConsole:Console runat="server" />
      </PublishingWebControls:AuthoringContainer>
<asp:ContentPlaceHolder ID="WSSDesignConsole" runat="server">
<wssuc:DesignModeConsole id="IdDesignModeConsole" runat="server"/>
</asp:ContentPlaceHolder>    
</div>
<div id="BreadCrumbArea" >
<div Class="ms-globalleft">
<asp:ContentPlaceHolder id="PlaceHolderTitleBreadcrumb" runat="server">
<asp:SiteMapPath SiteMapProvider="SPContentMapProvider" id="ContentMap" SkipLinkText="" NodeStyle-CssClass="ms-sitemapdirectional" runat="server"/> &nbsp;
</asp:ContentPlaceHolder>
</div>
<div Class="ms-globalright2">
<PublishingSiteAction:SiteActionMenu runat="server"/>
</div>
</div>
<!– End header –>
<!– start page –>
<div id="page">
<asp:ContentPlaceHolder id="PlaceHolderMain" runat="server" />
</div>
<!– End page –>
<div id="footer">
<p>&copy;2008 All Rights Reserved. &nbsp;&#8226;&nbsp; Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a> &nbsp;&#8226;&nbsp; Power by <a href="http://www.mossca.org/Default.aspx">MOSSCA.ORG</a>.</p>
</div>  
      <asp:Panel ID="Panel1" visible="False" runat="server"
       <asp:ContentPlaceHolder id="PlaceHolderPageTitleInTitleArea"  runat="server"/>
       <asp:ContentPlaceHolder id="PlaceHolderLeftNavBar" runat="server"/>
       <asp:ContentPlaceHolder ID="PlaceHolderPageImage" runat="server"/>
       <asp:ContentPlaceHolder ID="PlaceHolderBodyLeftBorder" runat="server"/>
       <asp:ContentPlaceHolder ID="PlaceHolderNavSpacer" runat="server"/>
       <asp:ContentPlaceHolder ID="PlaceHolderTitleLeftBorder" runat="server"/>
       <asp:ContentPlaceHolder ID="PlaceHolderTitleAreaSeparator" runat="server"/>
       <asp:ContentPlaceHolder id="PlaceHolderCalendarNavigator" runat ="server" />
       <asp:ContentPlaceHolder id="PlaceHolderLeftActions" runat ="server"/>
       <asp:ContentPlaceHolder id="PlaceHolderPageDescription" runat ="server"/>
       <asp:ContentPlaceHolder id="PlaceHolderBodyAreaClass" runat ="server"/>
       <asp:ContentPlaceHolder id="PlaceHolderTitleAreaClass" runat ="server"/>
       <asp:ContentPlaceHolder id="PlaceHolderBodyRightMargin" runat="server" />
       <asp:ContentPlaceHolder ID="PlaceHolderMiniConsole" runat="server"/>
       <asp:ContentPlaceHolder ID="PlaceHolderSearchArea" runat="server"/>
       <asp:ContentPlaceHolder ID="PlaceHolderTitleRightMargin" runat="server"/>      
      </asp:Panel>
    </form>
  </body>
</html>
 

En el siguiente link podrán descargar el código completo con todos sus recursos utilizados para la presentación del Webcast.

WebCast Branding en MOSS 2007 – Ciclo 24 MOSS – MOSSCA

Me gustaría compartir con ustedes toda la información y contenido de las demostraciones del WebCast que dictamos con mi amigo y colega Juan Andrés Valenzuela sobre Breanding y diseño en la plataforma Sharepoint 2007. La idea de estos artículos es brindarles un paso a paso de lo que realizamos ese día en vivo y el código utilizado para esta demostración.
clip_image002

Demostración 1 – Creando una página maestra.

Demostración 2 – Creando diseño de páginas y tipos de contenidos.

Demostración 3 – Creando hojas de estilo XSLT.

Los que deseen ver el WebCast grabado podrán hacerlo accediendo aquí.

También los invitamos a que participen del próximo Webcast del ciclo 24 MOSS que estaremos realizando el día Martes 16 de septiembre a las 06:00 PM de Santiago de Chile (GMT -4), lo que gusten se pueden registrar aquí.

WebCast Branding en MOSS 2007 – XSLT – Ciclo 24 MOSS

Me gustaría compartir con ustedes la segunda demostración que hicimos en el webcast que dictamos con mi amigo y colega Juan Andrés Valenzuela sobre Breanding y diseño en la plataforma Sharepoint 2007. La idea de este artículo es un paso a paso de lo que realizamos ese día en vivo y brindarles a ustedes el código utilizado para esta demostración.
Los primero que tenemos que tenemos que hacer es habilitar la característica de la colección de sitios “Infraestructura de Publicación de Office Sharepoint Server” la cual nos creara una serie de bibliotecas y nos habilitara Webparts, hojas de estilo XSLT y workflows para el manejo de contenido. La misma deberá estar habilita a nivel de colección de sitio como comente anteriormente y en cada subsito que nosotros queremos tener el manejo de contenido habilitado, en la imagen 1 vemos esta característica habilitada.

[Imagen 1]

0_Feature_Publising

Una vez esta habilitado lo próximo debemos hacer es colocar la Webpart ContentByQuery en la sección central “PostBlogZone” de una página dinámica. Una vez la webpart esta dibujada como se pude ver en la imagen 2, lo que demos hacer es exportar la misma ya que vamos a colocar en su definición más columnas que después estaremos haciendo referencia desde nuestras hojas de estilo.

[Imagen 2]

1_Content_By_Query

Una vez exportada la Webpart, lo próximo que vamos hacer es abril el archivo guardado con la extensión “.webpart” y vamos agregar las columnas que la ContentByQuery contempla adicionalmente. Para hacer esto, lo que demos hacer es colocar los nombres de las columnas, los nombre internos con los cuales están guardados en Sharepoint y el tipo de dato que son. En la sección 1 vemos el nombre de la propiedad de la webpart que debemos modificar y en la imagen 3 vemos el código como debería quedar. También acá pueden acceder a dos artículos completos que explican cómo debemos realizar esta tarea.

· Mostar campos personalizados de un contenido de consultas

· Customizing the Content Query WebPart

[Sección 1]

<property name="CommonViewFields" type="string">

[Imagen 3]

2_Edicion_XSLT

Una vez modificamos la Webpart, lo próximo que debemos hacer es importarla nuevamente a Sharepoint desde la galería de Webparts de nuestro portal. Cuando este importada, lo próximo es agregar una webpar a la zona que queremos que se dibuje la misma.

Ahora lo que haremos es cargar nuestras hojas XSLT para que sean tenidas en cuenta por Sharepoint, para ello, nos conectamos a nuestro portal utilizando el Sharepoint Designer y accedemos a la librería “Style Library” como podemos ver en la imagen 4. Y ahí encontraremos las 3 hojas de estilo que vamos a modificar.

· ContentQueryMain.xsl

· Header.xsl

· ItemStyle.xsl

El código completo para la demostración del Webcast podrán descargarlo aquí, incluso la Webpart modificada para ser importada directamente en su portal Sharepoint.

Lo último que debemos hacer es editar la configuración de la Webpart en nuestra sección Consulta (Query) seleccionar la opción mostrar elementos de este sitio y esta lista, navegar hasta la lista de blog que tenemos que tener creada en nuestro portal o cualquier otro portal de nuestro sitio y en la sección de Presentación, elegir uno de los estilos que aparecen ahí tanto para el grupo como para el estilo que queremos que se utilice para dibujar el contenido.