viernes, 25 de mayo de 2012

Instalar estilos desde un WSP "SahrePoint 2010" parte 1

En el ultimo proyecto en donde estoy colaborando ha surgido la necesidad de tener vercionados los estilos.
Esto pares ser una tarea muy rápida y simple pero no lo es....
Requisito: Necesitamos enviar al equipo de instalación un paquete "WSP" con las actualizaciones de los estilos.(CSS, JPG Jscrips)
Problemas:Al ser imágenes  y estilos esto tiene un flujo de aprovacion, por esta razon no actuliza solo agrega los nuevos itmes.
Solución: Con Visual Studio creamos un modulo con su receptor de eventos y creamos un proyecto de clases el cual tendra un Helper para la instalación.
Como hacerlo:
1) Creamos un nuevo proyecto de tipo SharePoint vació.
En este caso lo llamaremos DeployServicedesk.
2) Agregamos al Proyecto DeployServicedesk un "modulo"
Por tratarse de la librería de estilo nombramos nuestro modulo lo llamaremos "Style Library"


3) Agregamos al proyecto DeployServicedesk otro modulo.


En este modulo se encontraran los java scrips necesarios para nuestra Liberia de estilos. que llamaremos dvtAssets

Por ultimo para tener nuestra arquitectura lógica agregamos un nuevo proyecto de tipo biblioteca de clases.

Este proyecto se llamara "DeployHelper"

En el explorador de soluciones no tien que quedar algo como esto.
Dentro de modulo Style Library agregamos una nueva carpeta donde estarán nuestras imágenes y hojas de estilo para nuestro portal SharePoint.
nota: aquí agregaremos n carpetas como n estilos tenga nuestro webaplication.
Para el caso de este post,.Y para que no  se haga cansado y largo; solo agregaremos una carpeta con unas cuantas imágenes y css.

5) Agregar Carpeta y contenidos de nuestro estilo(jpg, png, ico, css...) 
haasi tendría que verse nuestra carpeta de estilo personalizado.
hasta qui todo es muy simple y nada complicado. En los sigientes pasos es cuando esto se pone divertido y tenemos que usar un poco nuestra imaginación y espesamos a desarrollar.

6) En la Feacture agregamos un receptor de eventos para ellos damos click en "Main.Feacture"

Esto nos genera una clase con el nombre de la feacture en nuestro caso.  "Feacture", se renombro a "Main".
Cuyo nombre completo sera MainEventReceiver.cs

7) En este caso como lo que necesitamos es actualizar o agaragar nuevas cosas de nuestro estilo necesitamos agregar código en el evento.

 public override void FeatureActivated(SPFeatureReceiverProperties properties)
  {
            
   }
 Este evento se ejecutara cuando la feacture sea activada. En lo que a nuestro problema respecta aquí tenemos que desarrollar un mecanismo el cual se capas de actualizar o insertar los archivos que contenga nuestra modulo Style Library.

Antes de comenzar con el desarrollo me gustaría explicar el diseño de dicha solución.
En nuestro mudulo tenemos el archivo Elements.xml en el cual esta el path y la url de nuestros archivos esto no servirá como data source en nuestro desarrollo, es decir esto en tiempo de ejecución no servirá para saber cual es su ruta física y cual es su Url en la granja de SharePoint.
Si mas preámbulos a desarrollar.

8) En el proyecto DeployHelper Agregamos una Clase con el nombre SPFeatureReceiverPropertiesExtensions.cs
Esta clase tiene que ser publica y estática.

9) Agregamos referencia a los ensamblados "Microsoft.Sharepoint.Dll" 
"Bonton derecho referencias agregar refrencias..."Pestaña Explorar

Hasta llegar a esta ruta "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.dll"

10) Agregamos Usings en nuestra clase
11) Agregamos un método publico y estático llamado UpdateFilesInModule.
Como lo vamos hacer una extencion de SPFeatureReceiverProperties las firma del metodo queda asi

public static void UpdateFilesInModule(this SPFeatureReceiverProperties instance)
{
}


12) Necesitamos un ojeto el cual contenga la comfiguracion de los archivos del modulo es decir.
Cargamos leemos el Elements.xml en el cual esta toda la configuracion de los archivos necesarios para nuestra biblioteca de estilos.
Con LINQ hacemos esto:

En el siguiente post concluimos con el desarrollo de esta función.....

Saludos alduar
@alduar
.











No hay comentarios:

Publicar un comentario