jueves, 5 de junio de 2014

SP 2013: Custom Action para múltiples elementos simultáneos de una lista

Muchos de vosotros ya sabréis que desde SharePoint Designer se pueden crear “Custom Actions”, que permiten a los ítems de una lista o a los documentos de una biblioteca de SharePoint dotarles de una “funcionalidad extra” que podremos activar bien por menú desplegable del ítem o por nuevo botón en la Ribbon y que nos permite realizar tareas al activar dicha acción como:
  • Acceder a un formulario existente
  • Acceder a una URL
  • Ejecutar un workflow
image

Hasta aquí todo perfecto, sin embargo, en el momento que creas una “Custom action”, te das cuenta de que únicamente os sirve para un ítem o documento a la vez. A la que intentéis seleccionar 2 ítems/documentos simultáneamente, el botón de la Ribbon se desactiva y no permite su ejecución.

image
A partir de aquí te puedes volver loco rebuscando por Designer alguna posibilidad de configuración que permita cambiar este comportamiento (ya sabéis que a Microsoft, como siempre, le encanta ponernos “retos”). Al cabo de un rato uno empieza a pensar: ¿Existe realmente una manera de poder activar una “Custom Action” para múltiples elementos de una lista? Pues efectivamente, se puede hacer, pero amigos, como es usual, el que algo quiere algo le cuesta. Vamos a resolverlo de una manera relativamente sencilla.

La manera más intuitiva, si es que os dejan entrar en los servidores de la granja de SharePoint i “jugar” un poco con ellos sin dar demasiadas explicaciones, es utilizando SharePoint Manager (que excelente herramienta!! ¿Por qué no la “fagocitará” SharePoint Designer?). La versión gratuita no permita conexión remota al servidor y te obliga a ejecutarla, que no instalarla (ante todo seamos limpios, eh!) en el propio servidor. La versión de pago sí que permite conexiones remotas, pero os costará unos 85€ del bolsillo de vuestro cliente…

Pues bien, teniendo en cuenta que el responsable del comportamiento “egoísta” del botón es el parámetro getSelectedItems().length contenido en el “CommandUIExtension” del propio botón, abrimos el SharePoint Manager, navegamos por la arquitectura jerárquica de la aplicación desde la aplicación web bajando por site collection, site, lista… hasta llegar a “UserCustomActions”. Aquí seleccionamos nuestro botón (podría haber más de uno) y en la zona derecha, veremos las properties del mismo. Pulsamos sobre “CommandUIExtension” y editamos el string de datos para cambiar el parametro original:

getSelectedItems().length==1
a
getSelectedItems().length>0

image
Una vez realizado este cambio, le damos al botoncito de “guardar todo” y ahora sí, volvemos a nuestra lista, seleccionamos todos los ítems que queramos (bueno, tened en cuenta que SharePoint impone un límite de como máximo 100 elementos simultáneos) y… ¡ahora sí! ¿No sentís un cosquilleo de alegría al saber que tenéis 100 Workflows simultáneos ejecutándose en vuestro servidor? Risa

¡Un problema más resuelto! Y sin duda os preguntaréis… ¿Y este parámetro se puede cambiar con PowerShell? ¡Pues claro que sí! ¡¡Nunca subestiméis el poder de PowerShell!! Sin embargo, como diría el amigo “Michael Ende”: “eso es otra historia, y debe ser contada en otra ocasión.”

¡Un saludo, SharePointeros!

No hay comentarios: