Blog del CIIN

Blog del Centro de Innovación en Integración de Cantabria

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

Enlaces Recomendados

March 2011 - Artículos

SharePoint 2010: + sobre como habilitar intellisense para ECMAScript!

Hace un tiempo escribí un post sobre posibilidades a la hora de habilitar el intellisense cuando estamos programando usando el modelo de objetos en cliente JavaScript de SharePoint o ECMAScript. El caso es que esta semana, mientras jugaba un poco con ECMAScript (mira que no me gusta el condenado), me puse a ver si conseguía habilitar de una forma muy sencilla este intellisense para añadir funcionalidad a una página de aplicación…y bueno, la verdad es que resultó tan sencillo como añadir las siguientes referencias a continuación de la etiqueta <asp:Content ID=”PageHEad”…> de la página:

   1:  
   2: <script type="text/ecmascript" src="/_layouts/SP.Core.js" />
   3: <script type="text/ecmascript" src="/_layouts/SP.Debug.js" />
   4: <script type="text/ecmascript" src="/_layouts/SP.Runtime.Debug.js" />

Como véis, estamos añadiendo las versiones “.Debug” del modelo de objetos JavaScript de SharePoint 2010 (por cierto, cuando acabéis, quitar esas esas referencias para no penalizar el rendimiento de la página). Y el resultado:

image

Finalmente, os dejo otro par de referencias sobre el tema:

Publicado 31/3/2011 4:10 por Juan Carlos González Martín | con no comments

SharePoint 2010: Como funciona la seguridad en listas relacionales!

Como sabéis, tanto en SharePoint 2007 como en SharePoint 2010 existe un tipo de campo especial que nos permite mostrar en una cierta lista información procedente de otra lista: el campo de Lookup o búsqueda. En SharePoint 2010 este tipo de campo ha evolucionado de manera que en su definición podemos especificar que otras columnas de lista padre queremos visualizar además de aquella que define el campo. Una pregunta que nos puede surgir con respecto a las listas relacionadas mediante campos de Lookup es la siguiente: ¿Qué pasa si el usuario no tiene permisos para acceder a la lista padre? Pues que en la lista relacionada no verá ningún tipo de información de la lista padre como era esperable:

  • En mi caso, tengo dos listas relacionadas: Empresas y Productos. En la lista Productos tengo un campo de Lookup que muestra información de la lista Empresas.
  • Si un usuario que no tiene permisos para ver la información de la lista Empresas accede a la lista Productos, observará que la columna que las relaciona no muestra información y que si añade un nuevo elemento o edita uno existente, el combo estará vacío como era de esperar.
image image image
  image  

Publicado 30/3/2011 5:35 por Juan Carlos González Martín | 1 comment(s)

SharePoint 2010: Soporte multi-idioma (IV)!

Siguiendo con la serie de posts en torno al soporte multi-idioma de SharePoint 2010, en esta ocasión toca hablar sobre como podemos localizar nuestras soluciones de SharePoint más allá de las posibilidades que por defecto presenta la plataforma. Os recuerdo antes de comenzar los posts previos de la serie:

Yendo al grano en cuanto a como localizar nuestras soluciones SharePoint, en MSDN tenemos una serie de artículos en los que podemos encontrar las posibilidades a nivel de desarrollo que tenemos disponibles:

 

SharePoint2010_thumb

Publicado 29/3/2011 4:21 por Juan Carlos González Martín | con no comments

SharePoint 2010: Actualización de características (I)!

Una de las novedades más interesantes que vienen con SharePoint 2010 y de la que quizás no se está hablando mucho es el de la actualización de características, o lo que es lo mismo, la posibilidad por una parte de añadir versionado a una característica que despleguemos en nuestro entorno de SharePoint y por otra de actualizar versiones de características o un cierto rango de versiones bien porque nos encontramos ante escenarios como:

  • Necesitamos hacer cambios en un sitio o en una colección de sitios como por ejemplo:
    • Actualizar un tipo de contenido o una lista existente porque queremos añadirle nuevas columnas.
    • Queremos añadir nuevos artefactos a nuestro sitio como por ejemplo una nueva lista.
    • Queremos modificar la navegación del sitio.
    • ….
  • No queremos crear una nueva característica, sino que buscamos añadir nueva funcionalidad actualizando una característica existente.
  • Queremos aplicar cambios en ciertos sitios, pero en otros no.

Sin duda, a la hora de familiarizarse con el concepto de actualización de características un punto excelente de partida viene dado por la serie de posts al respecto que ha escrito Chris O’Brien y que son de obligada lectura:

Y hasta aquí este primer post sobre post sobre actualización de características. Espero que os haya resultado interesante.

SharePoint2010_thumb

Publicado 28/3/2011 14:23 por Juan Carlos González Martín | 2 comment(s)

SharePoint 2010: LINQ To SharePoint DSL Extension para Visual Studio 2010!

A la hora de hacer consultas a listas y bibliotecas de SharePoint usando el nuevo proveedor LINQ To SharePoint, como primer paso tenemos que generar el correspondiente proxy que facilite dichas consultas en base a una serie de Entity Clasess. Para generarlo tenemos dos opciones:

  • Usando la línea de comandos y la herramienta SPMetal.
  • Instalarnos alguna extensión para Visual Studio 2010 que por debajo use SPMetal para generar el modelo de Entity Clasess, pero que mejore la experiencia del desarrollador a la hora de crearlo.

Precisamente, este post trata sobre la segunda de las opciones y en concreto sonre la LINQ To SharePoint DSL Extension que permite diseñar de forma visual en el ID el esquema de entidades LINQ To SharePoint contra el que haremos las consultas y operaciones CRUD correspondientes. La verdad es que la extensión tiene muy buena pinta y está accesible a través de Visual Studio Gallery:

LINQ to SharePoint DSL Extension for VS2010

Publicado 26/3/2011 13:01 por Juan Carlos González Martín | 1 comment(s)

SharePoint 2010: Creación de páginas maestras (I)!

Cuando queremos personalizar el look & feel de un sitio de SharePoint 2010, tenemos varias posibilidades:

  • Si los cambios sólo aplican a ciertas páginas del sitio, podemos tratar de personalizarlas mediante CSS o JavaScript.
  • Si los cambios aplican a todo el sitio, las opciones de personalización pasan por:
    • Crear y aplicar un tema.
    • Crear y aplicar hojas de estilos personalizadas y añadir algo de JavaScript.
    • Modificar o bien crear desde cero la página maestra del sitio.

Para crear una página maestra de SharePoint 2010 hay al menos cuatro posibles caminos:

Aparte de esto, otras cosas que se pueden ir haciendo cuando hablamos de personalización de páginas maestras son las siguientes:

  • Ir construyendo tu hoja de estilos que luego se vaya a adjuntar a la página maestra. Hay que tener cuidado de no modificar la hoja de estilos propia de SharePoint.
  • Como se quiere que sea el menú vertical:
    • Estático hecho con HTML y CSS.
    • Más dinámico e interactivo con el uso de jQuery.
    • Totalmente dinámico, como el que viene por defecto. Aquí nos haremos preguntas como: ¿me sirve este menú? ¿o tenemos que hacer un control de navegación propio?

Finalmente os dejo otros posts relacionados con este tema que se han publicado en el blog:

SharePoint2010_thumb

Publicado 26/3/2011 2:15 por Juan Carlos González Martín | con no comments

SharePoint 2010: Pasos para instalar una solución!

A la hora de instalar soluciones de SharePoint (más conocidas como WSPs), tenemos tres o cuatro posibilidades en función del tipo de solución:

  • Por cuestiones de compatibilidad, usar la herramienta de administración de líneas de comandos STSADM que dispone de las opciones necesarias para instalar la solución, desplegarla, instalar las características correspondientes y activarlas. La secuencia completa sería la siguiente:
   1: 1. Añadir la solución:
   2:  stsadm -o addsolution -filename {WSPFILENAME}
   3:  
   4: 2. Desplegar la solución:
   5:  stsadm -o deploysolution -name {WSPFILENAME} -url {SITEURL}
   6:  
   7: 3. Instalar la(s) característica(s):
   8:  stsadm -o installfeature -filename {FeatureFolder}\feature.xml
   9:  
  10: 4. Activar la(s) característica(s):
  11:  stsadm -o activatefeature -id {FEATUREID} -url {SITEURL} -force
  12:  
  13: 5. Desactivar la(s) característica(s):
  14:  Stsadm.exe -o deactivatefeature -filename “C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\ViewFormPagesLockDown\feature.xml” -ur http://servername/
  15:  
  16: 6. Desinstalar la(s) característica(s):
  17:  stsadm -o uninstallfeature -filename
  18:  
  19: 7. Hacer el retract de la solución:
  20:  stsadm -o retractsolution -name {WSPFILENAME} -url {SITEURL}
  21:  
  22: 8.Borrar la solución:
  23:  stsadm -o deletesolution -name {WSPFILENAME}

Publicado 25/3/2011 10:17 por Juan Carlos González Martín | con no comments

SharePoint 2010: Cancelación de eventos y páginas de error personalizadas (II)!

Hace unos cuantos meses os comentaba la posibilidad que tenemos con SharePoint 2010 de definir a priori para cancelar un evento síncrono e indicar además una página personalizada de cancelación. En el ejemplo en cuestión utilizaba como página de cancelación una que se desplegaba en el directorio LAYOUTS del servidor. Esta aproximación es válida para soluciones de tipo granja, ¿y para soluciones de tipo SandBox? Pues lógicamente no, ya que estamos desplegando una página físicamente en el servidor. Por suerte, es posible especificar una página que resida en la biblioteca Site Pages del sitio o bien se haya provisionado directamente en el sitio, lo que habilita que podamos usar las páginas personalizadas de error para eventos síncronos en soluciones de tipo SandBox:

image
image image

A la hora de especificar la Url de redirección podemos especificar la ruta completa de la página de error personalizada:

   1: properties.Status =
   2:     SPEventReceiverStatus.CancelWithRedirectUrl;
   3: properties.RedirectUrl =
   4:     "http://demo2010a:300/SitePages/ErrorPage.aspx";

o bien especificar una ruta relativa de nuestro sitio:

   1: properties.Status =
   2:     SPEventReceiverStatus.CancelWithRedirectUrl;
   3: properties.RedirectUrl =
   4:     "/SitePages/ErrorPage.aspx";

Y hasta aquí llega este segundo post sobre cancelación de eventos y páginas personalizadas de error.

Publicado 24/3/2011 17:20 por Juan Carlos González Martín | 2 comment(s)

Visual Studio 2010: Descripción completa de lo que trae (y no trae ;-)) el SP1!

Como sabéis, ya tenemos disponible Visual Studio 2010 SP1 desde hace unos cuantos días. Si todavía tienes dudas de que novedades trae (y por lo tanto no trae ;-)) el IDE, lo mejor es que revises este artículo de la KB de Microsoft en el que encontrarás toda la información disponible en torno a las novedades del SP1.

Publicado 23/3/2011 23:58 por Juan Carlos González Martín | con no comments

Archivado en:

Office 365: Guía de planning de SharePoint Online!

Cada vez queda menos para que Office 365 vea la luz de forma global y la versión online de nuestro servidor favorito irrumpa en los escenarios Guiño. Para facilitar el movimiento por parte de las empresas a SharePoint Online, Microsoft ha creado la correspondiente guía de planning cuyos contenidos son los siguientes:

En la misma línea de esta guía, podemos encontrar otros dos recursos más que interesantes:

Graphical overview of the planning process

Publicado 22/3/2011 23:16 por Juan Carlos González Martín | 1 comment(s)

SharePoint 2010: Encuesta de uso de la plataforma - Tú opinión si importa ;-)!

Dentro de poco más de un mes nuestro servidor favorito cumplirá un año, y como en todo, siempre hay oportunidades de mejora. Por eso, Microsoft ha preparado una sencilla encuesta de acara a obtener feedback para las futuras versiones de la plataforma (tanto On-Premise como Online), asique si tienes un par de minutos, creo que es interesante que te detengas a responder la encuesta desde este enlace.

SharePoint2010_thumb

Publicado 22/3/2011 17:25 por Juan Carlos González Martín | 1 comment(s)

SharePoint 2010: Número máximo de elementos en una lista externa!

Como sabéis, en SharePoint 2010 aparece el concepto de lista externa como artefacto que permite integrar datos procedentes de un sistema externo (una base se datos, un CRM, un ERP, etc) en un sitio de SharePoint. A todos los efectos, una lista externa es como cualquier otra lista de SharePoint con ciertas limitaciones, a la que hay que añadirle el hecho de que el número máximo de elementos que por defecto contiene la lista externa está limitado a 2.000…por suerte, este número se puede configurar y elevar de acuerdo a nuestras necesidades sin superar el límite máximo de 1.000.000 de elementos definido para SharePoint 2010. En este enlace podéis ver como cambiar el valor por defecto de número máximo de elementos para una lista externa.

SharePoint2010_thumb

Publicado 21/3/2011 23:28 por Juan Carlos González Martín | con no comments

CompartiMOSS: El Nº 7 ya está recién salido del horno :-)!

Ya tenemos disponible para descarga el número 7 de la revista CompartiMOSS en la que gracias a Fabián Imaz y Gustavo Veléz he tenido la oportunidad de colaborar junto con otros “personajes” conocidos del mundillo de SharePoint. Los detalles de este nuevo número en cuento a contenido son los siguientes:

  • Editorial
  • El lado social de SharePoint (Alberto Díaz Martín)
  • Autenticación en SharePoint 2010 (I) (David Martos)
  • Entrevista con Fabian Imaz
  • Business Intelligence en SharePoint 2010: Integración de Reporting Services (II)
    (Juan Carlos González Martín)
  • Los elementos web de Project Server 2010 (Juan Pablo Pussacq Laborde)
  • Custom Actions en los menús de SharePoint 2010 (Victor Cea Espejo)
  • Office 365 y SharePoint Online (Mario Cortés Flores)
  • Personalización de UI con OPENXML y VS 2010 en Microsoft Office 2010 (Alejandro Garrido)
  • Microsoft Dynamics CRM 2011 y SharePoint 2010. Mejor juntos... (Pablo Peralta)

En cuanto a los enlaces de descarga de la revista:

Publicado 21/3/2011 8:17 por Juan Carlos González Martín | 4 comment(s)

Herramientas: Disponibles cursos y herramientas de accesibilidad gratuitas para desarrolladores!

Microsoft anunció la semana pasada una excelente noticia: la disponibilidad gratuita para desarrolladores de un conjunto de herramientas y cursos online que faciliten el desarrollo de aplicaciones que sean accesibles. Estos cursos y herramientas así como otros recursos en torno a la accesibilidad los tenéis disponibles en este enlace en el que tenemos acceso a recursos para lograr construir aplicaciones web, aplicaciones Windows Forms o aplicaciones WPF que sean accesibles.

image

Publicado 21/3/2011 8:16 por Juan Carlos González Martín | con no comments

Archivado en:

SharePoint 2010: ¿Cuándo uso SPQuery y cuando LINQ To SharePoint?

Cómo ya se ha comentado en otros artículos, SharePoint 2010 define la posibilidad de realizar consultas contra listas y bibliotecas a través del nuevo proveedor LINQ To SharePoint que se encarga de generar la consulta CAML correspondiente. El uso de LINQ To SharePoint nos permite reemplazar el uso de la clase SPQuery a la hora de realizar estas consultas. Ahora bien, la pregunta es: ¿siempre podremos usar LINQ To SharePoint en lugar de SPQuery? La respuesta es que hay ciertas excepciones que nos llevarán a usar SPQuery:

  • Cuando tenemos usuarios anónimos, ya que LINQ To SharePoint no soporta este tipo de usuarios.
  • Cuando tenemos una columna de lookup que se refiere a una lista de otro sitio. LINQ To SharePoint soporta estos escenarios, pero a costa de que generemos nosotros el correspondiente modelo de entidades ya que SPMetal no está preparado para este escenario.
  • Cuando el rendimiento es vital en nuestra solución, ya que LINQ To SharePoint introduce cierta sobrecarga (mínima, pero la introduce) que penaliza ligeramente el rendimiento.
  • Necesitamos consultar los datos de una lista externa, lo cuál no está soportado en LINQ To SharePoint.

Finalmente, os dejo los posts de LINQ To SharePoint publicados hasta ahora en el blog:

SharePoint2010_thumb

Publicado 20/3/2011 23:01 por Juan Carlos González Martín | 1 comment(s)

SharePoint 2010: Error 'Add Solution': Exception from HRESULT: 0x8107026E" al desplegar un Web Template!

Este error tan bonito fue el que tuve el otro día cuando estaba creando una Web Template para SharePoint 2010 como mecanismo para aprovisionar un sitio en SharePoint 2010 siguiendo este excelente post. Por suerte, y como para casi todo en SharePoint, siempre hay un pequeño truco o solución que te permite solventar el problema: el Web Template y el módulo que crees para provisionarla se tienen que llamar igual. Os dejo como quedan el archivo elements.xml y onet.xml que he usado para el Web Template:

  • Archivo elements.xml:
   1: <?xml version="1.0" encoding="utf-8"?>
   2: <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
   3:     <WebTemplate BaseConfigurationID="0"
   4:                  BaseTemplateID="1"
   5:                  BaseTemplateName="STS"
   6:                  Description="CIIN Web Template"
   7:                  DisplayCategory="CIIN Sites"
   8:                  Name="CIINWebTemplate"
   9:                  Title="Espacio Reuniones">        
  10:     </WebTemplate>
  11: </Elements>
  • Archivo one.xml:
   1: <?xml version="1.0" encoding="utf-8"?>
   2: <Project Title="$Resources:onet_TeamWebSite;" Revision="2" ListDir="$Resources:core,lists_Folder;" xmlns:ows="Microsoft SharePoint" UIVersion="4">
   3:   <NavBars>
   4:     <NavBar Name="$Resources:core,category_Top;" Separator="&amp;nbsp;&amp;nbsp;&amp;nbsp;" Body="&lt;a ID='onettopnavbar#LABEL_ID#' href='#URL#' accesskey='J'&gt;#LABEL#&lt;/a&gt;" ID="1002" />
   5:     <NavBar Name="$Resources:core,category_Documents;" Prefix="&lt;table border='0' cellpadding='4' cellspacing='0'&gt;" Body="&lt;tr&gt;&lt;td&gt;&lt;table border='0' cellpadding='0' cellspacing='0'&gt;&lt;tr&gt;&lt;td&gt;&lt;img src='/_layouts/images/blank.gif' id='100' alt='' border='0'&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign='top'&gt;&lt;a id='onetleftnavbar#LABEL_ID#' href='#URL#'&gt;#LABEL#&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;" Suffix="&lt;/table&gt;" ID="1004" />
   6:     <NavBar Name="$Resources:core,category_Lists;" Prefix="&lt;table border='0' cellpadding='4' cellspacing='0'&gt;" Body="&lt;tr&gt;&lt;td&gt;&lt;table border='0' cellpadding='0' cellspacing='0'&gt;&lt;tr&gt;&lt;td&gt;&lt;img src='/_layouts/images/blank.gif' id='100' alt='' border='0'&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign='top'&gt;&lt;a id='onetleftnavbar#LABEL_ID#' href='#URL#'&gt;#LABEL#&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;" Suffix="&lt;/table&gt;" ID="1003" />
   7:     <NavBar Name="$Resources:core,category_Discussions;" Prefix="&lt;table border='0' cellpadding='4' cellspacing='0'&gt;" Body="&lt;tr&gt;&lt;td&gt;&lt;table border='0' cellpadding='0' cellspacing='0'&gt;&lt;tr&gt;&lt;td&gt;&lt;img src='/_layouts/images/blank.gif' id='100' alt='' border='0'&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign='top'&gt;&lt;a id='onetleftnavbar#LABEL_ID#' href='#URL#'&gt;#LABEL#&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;" Suffix="&lt;/table&gt;" ID="1006" />
   8:   </NavBars>
   9:   <ListTemplates>
  10:   </ListTemplates>
  11:   <DocumentTemplates>
  12:     <DocumentTemplate Path="STS" Name="" DisplayName="$Resources:core,doctemp_None;" Type="100" Default="FALSE" Description="$Resources:core,doctemp_None_Desc;" />
  13:     <DocumentTemplate Path="STS" DisplayName="$Resources:core,doctemp_Word97;" Type="101" Description="$Resources:core,doctemp_Word97_Desc;">
  14:       <DocumentTemplateFiles>
  15:         <DocumentTemplateFile Name="doctemp\word\wdtmpl.doc" TargetName="Forms/template.doc" Default="TRUE" />
  16:       </DocumentTemplateFiles>
  17:     </DocumentTemplate>
  18:     <DocumentTemplate Path="STS" DisplayName="$Resources:core,doctemp_Excel97;" Type="103" Description="$Resources:core,doctemp_Excel97_Desc;">
  19:       <DocumentTemplateFiles>
  20:         <DocumentTemplateFile Name="doctemp\xl\xltmpl.xls" TargetName="Forms/template.xls" Default="TRUE" />
  21:       </DocumentTemplateFiles>
  22:     </DocumentTemplate>
  23:     <DocumentTemplate Path="STS" DisplayName="$Resources:core,doctemp_Powerpoint97;" Type="104" Description="$Resources:core,doctemp_Powerpoint97_Desc;">
  24:       <DocumentTemplateFiles>
  25:         <DocumentTemplateFile Name="doctemp\ppt\pptmpl.pot" TargetName="Forms/template.pot" Default="TRUE" />
  26:       </DocumentTemplateFiles>
  27:     </DocumentTemplate>
  28:     <DocumentTemplate Path="STS" DisplayName="$Resources:core,doctemp_Word;" Type="121" Default="TRUE" Description="$Resources:core,doctemp_Word_Desc;">
  29:       <DocumentTemplateFiles>
  30:         <DocumentTemplateFile Name="doctemp\word\wdtmpl.dotx" TargetName="Forms/template.dotx" Default="TRUE" />
  31:       </DocumentTemplateFiles>
  32:     </DocumentTemplate>
  33:     <DocumentTemplate Path="STS" DisplayName="$Resources:core,doctemp_Excel;" Type="122" Description="$Resources:core,doctemp_Excel_Desc;">
  34:       <DocumentTemplateFiles>
  35:         <DocumentTemplateFile Name="doctemp\xl\xltmpl.xlsx" TargetName="Forms/template.xlsx" Default="TRUE" />
  36:       </DocumentTemplateFiles>
  37:     </DocumentTemplate>
  38:     <DocumentTemplate Path="STS" DisplayName="$Resources:core,doctemp_Powerpoint;" Type="123" Description="$Resources:core,doctemp_Powerpoint_Desc;">
  39:       <DocumentTemplateFiles>
  40:         <DocumentTemplateFile Name="doctemp\ppt\pptmpl.pptx" TargetName="Forms/template.pptx" Default="TRUE" />
  41:       </DocumentTemplateFiles>
  42:     </DocumentTemplate>
  43:     <DocumentTemplate Path="STS" DisplayName="$Resources:core,doctemp_OneNote;" Type="111" Description="$Resources:core,doctemp_OneNote_Desc;">
  44:       <DocumentTemplateFiles>
  45:         <DocumentTemplateFile Name="doctemp\onenote\template.onepkg" TargetName="Forms/template.onepkg" Default="TRUE" />
  46:       </DocumentTemplateFiles>
  47:     </DocumentTemplate>
  48:     <DocumentTemplate Path="STS" DisplayName="$Resources:core,doctemp_FP;" Type="102" Description="$Resources:core,doctemp_FP_Desc;">
  49:       <DocumentTemplateFiles>
  50:         <DocumentTemplateFile Name="doctemp\fp\fptmpl.htm" TargetName="Forms/template.htm" Default="TRUE" />
  51:       </DocumentTemplateFiles>
  52:     </DocumentTemplate>
  53:     <DocumentTemplate Path="STS" DisplayName="$Resources:core,doctemp_BasicPage;" Type="105" Description="$Resources:core,doctemp_BasicPage_Desc;">
  54:       <DocumentTemplateFiles>
  55:         <DocumentTemplateFile Name="doctemp\blankpgs\_basicpage.htm" TargetName="Forms/_basicpage.htm" Default="TRUE" />
  56:       </DocumentTemplateFiles>
  57:     </DocumentTemplate>
  58:     <DocumentTemplate Path="STS" DisplayName="$Resources:core,doctemp_WebPartPage;" Type="106" Description="$Resources:core,doctemp_WebPartPage_Desc;">
  59:       <DocumentTemplateFiles>
  60:         <DocumentTemplateFile Name="doctemp\smartpgs\_webpartpage.htm" TargetName="Forms/_webpartpage.htm" Default="TRUE" />
  61:       </DocumentTemplateFiles>
  62:     </DocumentTemplate>
  63:     <DocumentTemplate XMLForm="TRUE" Path="STS" DisplayName="$Resources:core,doctemp_BlankForm;" Type="1000" Default="TRUE" Description="$Resources:core,doctemp_BlankForm_Desc;">
  64:       <DocumentTemplateFiles>
  65:         <DocumentTemplateFile Name="doctemp\xmlforms\blank\template.xml" TargetName="Forms/template.xml" Default="TRUE" />
  66:       </DocumentTemplateFiles>
  67:     </DocumentTemplate>
  68:   </DocumentTemplates>
  69:   <Configurations>  
  70:     <Configuration ID="0" Name="Default" MasterUrl="_catalogs/masterpage/v4.master">
  71:       <Lists>
  72:         <List FeatureId="00BFEA71-E717-4E80-AA17-D0C71B360101" Type="101" Title="$Resources:core,shareddocuments_Title;" Url="$Resources:core,shareddocuments_Folder;" QuickLaunchUrl="$Resources:core,shareddocuments_Folder;/Forms/AllItems.aspx" />
  73:         <List FeatureId="00BFEA71-6A49-43FA-B535-D15C05500108" Type="108" Title="$Resources:core,discussions_Title;" Url="$Resources:core,lists_Folder;/$Resources:core,discussions_Folder;" QuickLaunchUrl="$Resources:core,lists_Folder;/$Resources:core,discussions_Folder;/AllItems.aspx" EmailAlias="$Resources:core,discussions_EmailAlias;" />
  74:         <List FeatureId="00BFEA71-D1CE-42de-9C63-A44004CE0104" Type="104" Title="$Resources:core,announceList;" Url="$Resources:core,lists_Folder;/$Resources:core,announce_Folder;">
  75:           <Data>
  76:             <Rows>
  77:               <Row>
  78:                 <Field Name="Title">$Resources:onetid11;</Field>
  79:                 <Field Name="Body">$Resources:onetid12;</Field>
  80:                 <Field Name="Expires">&lt;ows:TodayISO/&gt;</Field>
  81:               </Row>
  82:             </Rows>
  83:           </Data>
  84:         </List>
  85:         <List FeatureId="00BFEA71-2062-426C-90BF-714C59600103" Type="103" Title="$Resources:core,linksList;" Url="$Resources:core,lists_Folder;/$Resources:core,links_Folder;" />
  86:         <List FeatureId="00BFEA71-EC85-4903-972D-EBE475780106" Type="106" Title="$Resources:core,calendarList;" Url="$Resources:core,lists_Folder;/$Resources:core,calendar_Folder;" QuickLaunchUrl="$Resources:core,lists_Folder;/$Resources:core,calendar_Folder;/Calendar.aspx" EmailAlias="$Resources:core,calendar_EmailAlias;" />
  87:         <List FeatureId="00BFEA71-A83E-497E-9BA0-7A5C597D0107" Type="107" Title="$Resources:core,taskList;" Url="$Resources:core,lists_Folder;/$Resources:core,tasks_Folder;" QuickLaunchUrl="$Resources:core,lists_Folder;/$Resources:core,tasks_Folder;/AllItems.aspx" />
  88:       </Lists>
  89:       <SiteFeatures>
  90:         <!-- BasicWebParts Feature -->
  91:         <Feature ID="00BFEA71-1C5E-4A24-B310-BA51C3EB7A57" />
  92:         <!-- Three-state Workflow Feature -->
  93:         <Feature ID="FDE5D850-671E-4143-950A-87B473922DC7" />
  94:       </SiteFeatures>
  95:       <WebFeatures>
  96:         <!-- TeamCollab Feature -->
  97:         <Feature ID="00BFEA71-4EA5-48D4-A4AD-7EA5C011ABE5" />
  98:         <!-- MobilityRedirect -->
  99:         <Feature ID="F41CC668-37E5-4743-B4A8-74D1DB3FD8A4" />
 100:         <!-- WikiPageHomePage Feature -->
 101:         <Feature ID="00BFEA71-D8FE-4FEC-8DAD-01C19A6E4053" />
 102:       </WebFeatures>
 103:     </Configuration>
 104:   </Configurations>
 105: </Project>

Publicado 18/3/2011 23:48 por Juan Carlos González Martín | con no comments

SharePoint 2010: ¿Cuántos elementos se pueden provisionar con un módulo?

Como ya he comentado en otros artículos, la forma natural de provisionar elementos en SharePoint 2010 es a través de un módulo. Y por elementos entiendo una página maestra, un archivo de código JavaScript, una imagen, etc. Una pregunta que me hicieron hace poco con respecto a los módulos es la de si sólo permiten provisionar un único elemento o varios. La respuesta es que varios y en principio que yo sepa no hay un límite definido del número de elementos que permite provisionar un módulo:

image   image

Por ejemplo, para provisionar dos imágenes y un archivo de texto el archivo elements.xml del módulo quedaría como sigue:

   1: <?xml version="1.0" encoding="utf-8"?>
   2: <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
   3:   <Module Name="Module1">
   4:     <File Path="Module1\Sample.txt" Url="Sample.txt" />
   5:     <File Path="Module1\copy_32_32_1.png" Url="copy_32_32_1.png" />      
   6:     <File Path="Module1\Feature_Icon_2.jpg" Url="Feature_Icon_2.jpg" />
   7:   </Module>
   8: </Elements>

Finalmente os recuerdo un par de artículos ya publicados en torno a este tema:

Publicado 17/3/2011 23:39 por Juan Carlos González Martín | con no comments

SharePoint 2010: ¿Quién puede ver el Developer Dashboard??

Cómo sabéis, SharePoint 2010 incorpora una interesante utilidad que permite visualizar desde la interfaz de usuario como se está comportando la página actual en cuanto a tiempo que tardan los distintos componentes de la misma en cargarse, llamadas a la API realizadas, operaciones IO, e incluso sentencias T-SQL…por decirlo de forma muy resumida, nos da una trazabilidad de la ejecución de la página. Para poder habilitar el Developer Dashboard tenemos las opciones comentadas en:

Una pregunta que pude surgir cuando se activa el Developer Dashboard es la siguiente: ¿Quién puede verlo: todos los usuarios o sólo algunos? La respuesta es que sólo algunos usuarios y más concretamente:

  • Administradores de la Colección de Sitios.
  • Usuarios con “Control total” sobre el sitio. Por ejemplo, usuarios que pertenezcan al grupo “Propietarios del sitio” en un sitio de tipo “Sitio de grupo”.

Finalmente, os recuerdo que es posible escribir nuestra propia información en el Developer Dashboard:

SharePoint2010_thumb

Publicado 16/3/2011 22:50 por Juan Carlos González Martín | 3 comment(s)

SUGES: Disponibles los materiales de los 2 WebCasts de marzo!

Ya tenéis disponible para descarga los materiales de los 2 WebCasts que hemos realizado en SUGES durante el mes de marzo:

image

Publicado 16/3/2011 8:42 por Juan Carlos González Martín | con no comments

SharePoint 2010: Listas convencionales vs Listas externas!

Estos días ando leyendo la SharePoint Guidance 2010 que recomiendo sin dudarlo como documento de referencia a tener en cuenta a la hora de diseñar la arquitectura de nuestras soluciones SharePoint no sólo porque contiene una implementación de referencia, sino también por el uso de patrones y buenas prácticas y por la información tan valiosa que contiene. Precisamente, de este último punto, me ha llamado la atención el apartado que compara las listas convencionales de SharePoint con respecto a las listas externas en cuanto a que funcionalidad se soporta y cuál no en cada tipo de lista:

Funcionalidades / Capacidades

Listas convencionales

Lisas Externas

Soporte relaciones 1 a 1

Soporte de relaciones 1 a N

Soporte de relaciones N a N

Soporte limitado, hay que personalizar manualmente el modelo de BDC.

Relaciones con claves primarias no enteras

No

Soporte limitado, hay que personalizar manualmente el modelo de BDC.

Manejadores de eventos

Soporte limitado. En el caso de que el sistema externo sea una BD, se pueden definir procedimientos almacenados para eventos a nivel de la BD.

Alertas

No

Feeds RSS

No

Flujos de trabajo

No

Transacciones

No

Soporte limitado. Es necesario implementar la transaccionalidad requerida.

Cálculos agregados

Soporte limitado. Es necesario implementar las agregaciones.

Right Joins y Cross Joins

No

Soporte limitado. Es necesario implementar las agregaciones.

Consultas DISTINCT

No

Seguridad a nivel de elemento

No

Datos en BLOBs

Consultas anidadas

No

Validación de datos

No

Compatibilidad con el SandBox

No

Publicado 15/3/2011 23:23 por Juan Carlos González Martín | 2 comment(s)

Más artículos Página siguiente >