viernes, 20 de agosto de 2010

ya tenemos academia Sharepoint !

Les dejo el link a la academia de Sharepoint http://www.uspja.com/ , esta academia creada por una iniciativa de Bjorn Thorsmaehlum oferta una serie de programas bastante interesantes para el crecimiento profesional de los que trabajábamos en la plataforma de Sharepoint.

domingo, 15 de agosto de 2010

Gestión de contenidos maestro detalle en listas de sharepoint

En algunas ocasiones se me ha presentado la necesidad en Sharepoint de manejar listas que permitan trabajar el contenido como si fuesen tablas relacionales maestro detalle ejemplo de esto son las facturas en las cuales hay un encabezado y un detalle de productos o en un banco la relación entre un cliente y sus cuentas, una forma interesante de trabajar este requerimiento es la creación de tipos de contenidos custom, la idea es crear un tipo de contenido especial el cual herede su comportamiento del tipo de contenido base Folder y asociando este nuevo contenido a una lista de SharePoint siguiendo los siguientes pasos:

1. Creación de contenidos

Ingrese a la configuración del sitio en la que se creara el nuevo tipo de contenido
y seleccione la opción content types.



A parecera una pantalla con todos los tipos de contenidos en el sitio, seleccione la opción de crear tipo de contenido.



En el siguiente formulario ingrese el nombre del tipo de contenido y seguidamente seleccione el tipo de contenido formulario como se visualiza en la siguiente imagen



En el siguiente formulario seleccione las columnas de metadatada que desea incluir en el nuevo tipo de contenido.



2. Asociación del nuevo tipo de contenido a la lista

En este punto tendremos nuestro tipo de contenido contenedor o maestro, para asociarlo a una lista, creamos una nueva y nos dirigimos a la configuración de la misma, seleccionamos la opción de configuración avanzada y marcamos la opción para permitir manejar tipos de contenido en la lista.



Una vez seleccionada esta opción adicionamos el tipo de contenido que creamos en los pasos anteriores a la lista.






En este punto tendremos asociado nuestro contenido a la lista.



El siguiente paso es crear un nuevo tipo de contenido que herede del contenido base el cual deseamos sea el detalle del contenido maestro que acabamos de crear, para esto seguiremos de nuevo todos los pasos anteriores, al final contaremos con dos tipos de contenidos que nos permitirán trabajar una figura de maestro-detalle en las listas de sharepoint, esta es solo una pequeña muestra de los que se puede lograr con el uso de tipos de contenido, espero esta entrada les sea de ayuda.

miércoles, 11 de agosto de 2010

Que se supone que debería saber un arquitecto sharepoint ?

Hola a todos les dejo un articulo que me pareció interesante escrito por Bjorn Thorsmaehlum sobre lo que se supone debería ser el role de un arquitecto sharepoint.

domingo, 8 de agosto de 2010

Cambio de la MasterPage de un sitio mediante código

Recientemente me encontré con la necesidad de cambiar todas las masterpage de los sitios y subsitios de un servidor Sharepoint en un cliente, si fuese un solo sitio o como máximo unos 10 sitios seria muy sencillo, mi problema era que el total de sitios era superior a 300 con lo cual el proceso manual quedaba descartado, para llevar acabo este requerimiento cree un proceso que leía las url de los sitios a modificar desde un archivo y mediante las siguientes lineas de código ejecutaba el cambio de MasterPage de forma automatica .. espero les sirva de ayuda.

SPSite sitio = new SPSite(urlSite);
SPWeb web = sitio.OpenWeb();
web.CustomMasterUrl = "layout/default.master";
web.MasterUrl = "layout/default.master";
web.Update();

jueves, 29 de julio de 2010

Value does not fall within the expected range !!!!!!

Este error que como lo pueden notar es muy descriptivo me ha hecho perder más de cuatro horas del día de hoy, se me presento al momento de generar de forma dinámica el contenido de un AccordionItem al cuando este se esta expandiendo pero no se preocupen que de igual forma se puede presentar en combobox y cualquier objeto que contenga una colección de objetos hijos de tipo FrameWorkElement que se desee poblar de forma dinámica, bueno regresando al origen del error este se me presentaba en el segundo evento de expansión de cualquier AccordionItem y se da por el hecho de que el árbol de elementos de silverlight no admite objetos con el mismo nombre o más de un objeto sin nombre, finalmente para solucionarlo tuve que poner un nombre dinámico compuesto por la hora actual en la cual se crea el objeto que se va adicionar en la pagina silverlight, realmente el error es ciertamente valido lo que no ayuda mucho es el mensaje del error "Value does not fall within the expected range", no sería mejor que dijese "Duplicate Object Name" o algo así ?

miércoles, 28 de julio de 2010

Debug de webparts silverlight con visual studio 2010 y Sharepoint 2010

En este post mostrare como es posible mediante visual studio 2010 ejecutar un paso a paso del código de los webparts desarrollados en Silverlight, para ello debemos:

Crear nuestro proyecto de tipo silverlight application en el cual crearemos el webpart que deseamos instalar en sharepoint, recordar que para que una aplicación silverlight obtenga acceso al contexto de datos del sitio donde se ejecuta, es decir para que desde nuestro webpart silverlight podamos tener acceso a las listas y sitios debemos adicionar la siguientes lineas en el metodo Application_StartUp del archivo App.Xaml.cs.



Creamos un proyecto de tipo Blank Sharepoint Project.



3. Creamos un modulo al interior de nuestro proyecto sharepoint, basicamente los modulos nos permiten copiar archivos en nuestros sitios al momento de la activación de la solucion que lo contiene, en nuestro caso usaremos un modulo para copiar en una libreria de sharepoint el archivo xap que es lo que resulta de compilar el proyecto de silverlight creado en el punto 1, esto nos permitira al momento de activar la solución desde visual studio atacharnos de forma automatica al proceso de W3P y en consecuencia poder hacer un paso a paso de lo que sucede en nuestro webpart silverlight, para ello seguir los pasos descritos a continuación.

Crear el objeto modulo al interior del proyecto sharpoint creado en el punto anterior.



Eliminar el archivo de prueba que se crea en el modulo por defecto.

Adicionar una referencia desde el modulo al proyecto silverlight que creamos en el punto 1, para ello nos vamos a las propiedades del modulo y seleccionamos la opción proyect output references.



En la ventana de propiedades que se despliega seleccionamos la opción adicionar y seguidamente seleccionamos el proyecto de silverlight que contiene la webpart desarrollada en la propiedad project name y en la opción deployment type element file.



Ingresamos las siguientes lineas en el archivo Elements.xml



Este archivo contiene los archivos que deseamos incluir en nuestro sitio de sharepoint al momento de la instalación de una caracteristica, solución o webpart es muy util ya que mediante el podriamos subir hojas de estilos o archivos necesarios para el funcionamiento de nuestros aplicativos en sharepoint en nuestro caso lo utilizaremos para subir el archivo xap a una libreria de sharepoint y atacharnos automaticamente al proceso de sharepoint al momento de instalar la solución desde visual studio 2010, como pueden ver el tag module contiene una propiedad llamada url, esta propiedad contiene el nombre de la libreria de sharepoint en la cual vamos a hospedar el archivo xap generado por el proyecto de silverlight al momento de su compilacion, la propiedad path debe contener el nombre del modulo seguido del nombre del archivo xap y la propiedad url del tag file debe contener el nombre con el que quedara el archivo cuando sea copiado a la libreria de sharepoint.

Por ultimo debemos activar en el proyecto de sharepoint el debug para aplicaciones silverlight esto lo hacemos dirigiendonos a las propiedades del proyecto de sharepoint al tag que dice sharepoint y marcando el check que dice enable silverlight debuging.



Con esta configuración podremos llevar acabo un paso a paso de nuestras aplicaciones desarrolladas en silverlight para sharepoint, bastaria con ejecutar el proyecto sharepoint una vez lo hacemos visual studio publica el archivo xap del proyecto silverlight en la libreria que definimos en el archivo Elements.xml y nos abre un browser con nuestro sitio sharepoint en este browser podremos adicionar un webpart de tipo silverlight y referenciar desde este el archivo xap que visual studio publico en la libreria, al usar la webpart de silverlight y marcar puntos de interrupción en nuestro codigo de visual studio podremos hacer seguimiento a la ejecución de nuestra webpart.

lunes, 12 de julio de 2010

Silverlight + Sharepoint 2010 + Listas

En esta entrada voy a mostrar como se obtiene una lista dado su nombre en Sharepoint 2010 utilizando silverlight y el nuevo modelo de objetos cliente, me ha resultado bastante interesante la facilidad con la que se pueden crear webparts y aplicaciones para Sharepoint 2010 con silverlight.
Lo primero que se debe tener en cuenta es que las aplicaciones de silverlight que deseen interactuar contra listas y cualquier objeto del modelo de objetos de sharepoint lo deben hacer o mediante la dll Microsoft.Sharepoint.Client.Silverlight o mediante servicios WCF+RIA, ya que no es posible utilizar la dll Microsoft.Sharepoint que se usaba en Mosss2007 con aplicaciones silverlight.
Para trabajar con silverlight en Sharepoint:

1. Crear un proyecto de tipo Silverlight Application y referenciar la dll Microsoft.Sharepoint.Client.Silverlight que se encuentra ubicada en %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS\ClientBin.

2. Incluir los namespaces Microsoft.Sharepoint.Client.Silverlight y Microsoft.Sharepoint.Client.Silverlight.Runtime en los archivos que contendrán clases que harán referencia al modelo de objetos de Sharepoint.

3. Incluir la siguiente linea de código en el método Application_Startup de nuestra solución "ApplicationContext.Init(e.InitParams,SyncronizationContext.Current)", antes de la linea "this.RootVisual = new MainPage()", esto nos permitirá hacer referencia a los parametros que se envian desde sharepoint a nuestra aplicación silverlight al momento de ser instanciada.

4. A continuación hacemos referencia a nuestro sitio y listas mediante los objetos que nos proporciona el namespace Microsoft.Sharepoint.Client.Silverlight:

Web _web = null;
List _lista = null;

ClientContext context = new ClientContext(ApplicationContext.Current.Url);
_web = context.Web;
_lista = _web.Lists.GetByTitle("MyList");
context.Load(_lista);
context.ExecuteQueryAsync(OnSuccedQuery,null);

5. Los llamados al modelo de objetos de Sharepont 2010 para silverlight se ejecutan de forma asincronica, para los que alguna vez trabajaron con php, ajax y el objeto XmlHttpRequest, es la misma figura se ejecuta una consulta asincronica y se espera la respuesta de la consulta en un metodo en nuestro caso el método se llama OnsuccedQuery.

void OnsuccedQuery(object sender, ClientRequestSucceededEventArgs args)
{
Dispatcher.BeginInvoke(() =>
{
MessageBox.Show(_lista.Id);
});
}

Solo en este método podemos hacer referencia a los atributos y los métodos del objeto _lista ya que es solo después de que se ejecuta el llamado asincronico que este objeto se carga, notese que si antes del llamado al método ExecuteQueryAsync trataramos de obtener el nombre de la lista mediante _lista.Name, obtendriamos un error durante la ejecución ya que en ese punto el objeto _lista es nulo.

6. Finalmente para la instalación en sharepoint se debe crear una librería de documentos en Sharepoint y subir el archivo .XAP que obtenemos al compilar nuestra solución silverlight, una vez publicado nuestro XAP procedemos a usar la nueva webpart de Sharepoint 2010 que nos permite visualizar aplicaciones Silverlight la ponemos en la pagina que deseemos y le configuramos la url del archivo xap que subimos previamente a la librería y tendremos nuestro webpart silverlight en nuestros sitios de Sharepoint 2010.