SharePoint Online: Cómo registrar un manejador de eventos contra una lista personalizada (I)!

A raíz de una cuestión relativa a manejadores de eventos en SharePoint Online (SPO), me he encontrado con la sorpresa de qué cuando creas un manejador para una lista de tipo personalizada este no se registra por defecto y por lo tanto no funciona. El manejador en sí se despliega de forma correcta a través de la correspondiente solución Sandbox, pero a la hora de verlo en acción nada de nada…ante este comportamiento, cabían dos posibles respuestas:

  • En primer lugar, no es posible registrar de forma declarativa un manejador de eventos para una lista personalizada de SPO…lo cuál me extrañaba.
  • En segundo lugar, este registro igual sólo se puede hacer de forma programática con un manejador de característica por ejemplo.

Ante estas dudas, tocaba hacer las correspondientes pruebas…la primera ver si el registro declarativo nos deja alguna opción para agregar un manejador a una lista personalizada y la respuesta es qué sí…el truco pasa por usar el atributo ListUrl en lugar del ListTemplateId de forma que nos aseguremos que el manejador se registra y además lo hace para una lista concreta…y efectivamente, así es:

   1: <?xml version="1.0" encoding="utf-8"?>

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

   3:   <Receivers ListUrl="Lists/SPCustomList">

   4:       <Receiver>

   5:         <Name>CustomListERItemAdding</Name>

   6:         <Type>ItemAdding</Type>

   7:         <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>

   8:         <Class>SPOERPOC.CustomListER.CustomListER</Class>

   9:         <SequenceNumber>10000</SequenceNumber>

  10:       </Receiver>

  11:   </Receivers>

  12: </Elements>

La segunda aproximación, pero ya en otro post, pasa por realizar el registro de forma programática en la lista en cuestión. Finalmente, os dejo otros posts relacionados con este tema:

SharePoint 2010 & SharePoint Online: Como automatizar el despliegue de una aplicación de Access Services (I)!

Pues esta es la cuestión que se me vino a la cabeza cuando pensé en Access 2010 y los servicios de Access como una buena solución para crear aplicaciones sencillas con un look & feel atractivo y la funcionalidad deseada, todo sobre SharePoint pero sin parecerlo. Lo primero que me vino a la cabeza de cara a automatizar el despliegue de una aplicación Access 2010 desplegada en SharePoint fue la de aprovechar que dado un sitio de SharePoint, es posible guardarlo como plantilla de manera que se genera el correspondiente .wsp que contiene un Web Template:

  • Navegamos hasta la aplicación en cuestión (en el ejemplo, la aplicación de gestión de campañas que forma parte de la demo de Fabrikan para SharePoint Online).
  • Nos vamos a la configuración del sitio y a la opción de guardar el sitio como plantilla.
  • A continuación simplemente especificamos el nombre del archivo .wsp a generar y de la plantilla (Nota: No os olvidéis de marcar el check de incluir contenido).
image image image
  • Si todo va bien, el proceso de guardado concluirá con éxito y podremos ir a la galería de soluciones de la colección de sitios para descargarnos el .wsp generado.
  • Nos lo descargamos y lo cargamos en una galería de soluciones de otra colección de sitios. Por supuesto, activamos la solución.
  • Procedemos a crear un nuevo sitio en base a esta plantilla que aparece entre las plantillas de sitio disponibles.
image image image
  • Y aquí empiezan los problemas…primer petardazo indicando que alguna característica que está incluida en la definición no está activa…la identifico y la activo, pero sigue dando errores por lo que desisto de intentar crear el sitio (la solución pasaría por importar el WSP en Visual Studio 2010 y hacer limpieza de aquellas características que se han incluido en la definición y que no son necesarias).
  • Pero no todo está perdido, lo que hago para probar si es posible desplegar la aplicación con un .wsp es crearme una aplicación Access Web en Access 2010 y la publico esta vez en una colección de sitios cuyo sitio raíz se ha creado con la plantilla Blank Site. En este caso, al usar la plantilla generada para crear un nuevo sitio ya no hay errores, pero el sitio generado es completamente inútil….y esto fue porque olvide marcar el check de incluir contenido al guardar el sitio como plantilla.
  • Repito los pasos, pero generando la plantilla de sitio de forma que se incluya el contenido. Al crear el sitio en base a la plantilla parece que este empiza a mostrarse de forma correcta hasta que da el infame error que aparece en la última captura de pantalla y que no se soluciona
image image image

Por lo tanto, Servicios de Access 1 – JC 0, veremos si soy capaz de averiguar que hace por debajo el proceso de publicación desde Access 2010 para ver si es posible realizar la automatización que os comentaba…pero esto ya os lo contaré (si es que es posible) en otro post.