Inherits Cloud

Loving Microsoft Cloud, specially Office 365

Categoría: Sharepoint Online

[SPFx] Extendiendo Gulp y ejecutando tareas en serie (o en paralelo)

Como seguramente ya sabréis, el nuevo SharePoint framework hace uso de Gulp para todas las tareas de “compilación”: bundle de archivos JavaScript, generar el package file, etc. Sin embargo, a la hora de crear tus propias tareas de Gulp, no sigue el mecanismo “normal” de Gulp, por lo que no podemos simplemente agregar una nueva “Task” en el “Gulpfile.js”:

image

Para agregar una tarea de Gulp personalizada, tenemos que pasar por el sistema propio de build, y que está definido en el package “@microsoft/sp-build-web

image

image

El objeto build, nos permite llamar a una función “task” y pasar la definición de nuestra tarea. Sería un esqueleto parecido a:

image

Digamos sin embargo, que lo que nos interesa es ejecutar un par de Tasks, pero hacerlo de forma secuencial. Entonces, tenemos que usar las función “serial” del mismo objeto build. El siguiente snippet de codigo ejecuta las tareas “task-1” y “task-2” conjuntas, y de forma secuencial:

Si ejecutamos la tarea, vemos como el resultado es el esperado:

Si lo que nos interesa es ejecutar las tareas en paralelo, el mecanismo es identico, pero utilizando la funcion, “parallel” del objecto build.

Espero que os sirva!

@Luismanez

Error importando un SPFX WebPart en el Workbench de SharePoint Online

Estabas desarrollando algun webpart en el nuevo SPFX, probándolo con esa maravilla que es el Workbench de SharePoint Online (/_layouts/15/workbench.aspx), y de repente, tras algún cambio insignificante, al importarlo en la pagina, te encuentras un error de importación parecido a este:

 

image

 

Supongo que el error puede variar en función de la Tenant, pero básicamente se queja de que alguna dependencia del propio SPFX parece que no se está cargando.

Pues bien, no sé exactamente por qué se produce el error, pero parece que el bundle no se está generando correctamente. Lo que si te puedo contar es el “workaround” que me ha funcionado a mi. Viendo que el bundle no se generaba bien (incluso creando un webpart de cero con la template de yeoman), he probado que el mismo código del webpart, pero haciendo el “gulp serve” desde otra maquina cliente, si que funcionaba bien, así que he recurrido al mejor recurso del Informático: re-instalar el paquete desde el npm:

npm i -g @microsoft/generator-sharepoint@latest

Y así, sin mas, y sin cambiar nada del webpart que antes no funcionaba, tras volver a hacer un “gulp serve”, todo ha vuelto a funcionar con normalidad. Si me vuelve a suceder intentare abrir un “issue” en el sitio de github, ya que tengo la sensación de que en determinadas circunstancias, el proceso de bundle que hace con Gulp, webpack, etc, no hace bien su trabajo, y ya no hay manera de que vuelva a funcionar bien si no re-instalas el paquete.

@luismanez

PnP Provisioning Extensibility Handler para configurar Search Navigation

Desde una de las ultimas release del PnP, ya es posible configurar la Navigation de un site, tanto Estructural, como Managed:

image

Sin embargo, sigue sin poder configurarse la navegación del Search.

image

Para ello podemos crear nuestro propio Provisioning Extensibility Handler.

Primero de todo, veamos como utilizar el Provider desde una template del PnP:

image

Como vemos, estamos definiendo nuestro propio XML para definir los diferentes Search links que queremos provisionar en nuestro site. Además, le decimos al PnP que clase queremos utilizar como custom Provisioning Handler.

Ahora definamos la clase que implementa la interfaz del PnP IProvisioningExtensibilityHandler

image

Como vemos estamos implementando el método Provision, donde lo que hacemos es, primero, deserializar el XML que viene de la template, y lo convertimos a un objeto de negocio SearchNavigation. Esta es una clase custom también, y que definimos como:

image

Para la deserializacion tenemos el siguiente codigo:

image

Finalmente, y haciendo uso de una extension del propio PnP Core que nos permite insertar links a la Search Navigation, tenemos el siguiente código:

image

De esta manera podemos configurar la navegación del search desde una template del PnP.

Espero que os sirva.

 

@luismanez

Provisionando XsltListViewWebPart especificando la View usando el PnP

Todo el merito de este post es para el autor de esta PR del PnP Core, pero lo copio aquí porque me ha parecido muy útil y no quiero perderlo.

https://github.com/SharePoint/PnP-Sites-Core/issues/584

El framework de provisioning del PnP nos permite provisionar un XsltListViewWebPart en cualquier pagina. Sin embargo, hasta hace poco siempre era un problema el querer aplicar una vista especifica para el Webpart provisionado, en realidad no estaba soportado, y habia que hacer algo custom. Yo ya trate con algo así en mi ejemplo del PnP para provisionar Publishing Pages usando un Extensibility Provider, asi que se que es bastante infierno. Por suerte, ahora ya lo podemos hacer directamente con el PnP-Core.

El gran Mikael Svenson explica como hacerlo en este post: https://techcommunity.microsoft.com/t5/SharePoint-Developer/Specify-view-for-XsltListViewWebPart-using-PnP-Provisioning/m-p/37612#M1148

Basicamente, basta con añadir cualquiera de estos parámetros:

  • ViewId (guid of view)
  • ViewGuid (guid of view)
  • ViewName (display name of view)
  • ViewUrl (server relative url of view)

Por ejemplo:

<property name=”ViewName” type=”string”>Sales reports</property>

Espero que os sirva.

@luismanez

SharePoint / Office Dev Patterns & Practices – Liberada la Release de Enero 2017

Como supongo sabréis, soy gran fan del programa SharePoint PnP, así que quería haceros eco de la versión de Enero 2017. Tenéis toda la información detallada en el blog oficial:

 

https://dev.office.com/blogs/pnp-january-2017-release

 

Algunas de las novedades que a mi me parecen mas destacadas:

 

  • Diferentes fixes dentro del framwork de Provisioning
  • Nuevo ejemplo del SP Framework de como llamar a una custom WebAPI securizada con Azure AD desde un webpart del SPFx
  • Posibilidad de exportar la navegacion estructural para sitios de no-publishing
  • PnP JS library usa ahora webpack para el bundle a pnp.min.js
  • Nuevos comandos PowerShell para tratar con la RecycleBin
  • Nuevo comando PowerShell para añadir Image Renditions: Add-PnPPublishiningImageRendition

 

Y entre todas las novedades, este nuevo ejemplo me ha parecido muy interesante react-generic-app ya que muestra como usar el “modern web stack” sin utilizar el nuevo Framework, muy interesante ahora mismo si tienes que empezar un proyecto de SharePoint On Premises.

Nada mas, os animo a descargar la ultima version y empezar a utilizarlo.

 

Saludos!

 

@luismanez

Provisionando Image Renditions con PnP Core y PnP Schema

Una duda bastante recurrente alrededor del framework PnP, es si podemos desplegar/provisionar Image Renditions desde el PnP. La respuesta es si (no hay opción de desplegar una Rendition en concreto, pero podemos usar un “workaround” para desplegar todas las Renditions que necesitemos).

Internamente, cuando se define una Image Rendition en SharePoint, este, simplemente crea un nuevo nodo en un fichero XML, que podéis encontrar en la Master Page Gallery. El nombre del fichero es: PublishingImageRenditions.xml y su contenido es algo como:

 

image

 

Básicamente tenemos un nodo ImageRendition por cada Rendition que queremos definir, con Ancho y Alto de la Rendition.

 

Nota: Cuidado con el nodo NextId, ya que si editamos el fichero a mano, tendremos que darle el valor adecuado, que no es otro que el siguiente ID a asignar en caso de que se agregue posteriormente otra Rendition desde la interfaz de SharePoint.

 

Teniendo en cuenta que las renditions se gestionan desde este fichero, y que el PnP tiene la opción de provisionar ficheros a bibliotecas de SharePoint, el siguiente paso es hacer uso del nodo File dentro del PnP Schema, para desplegar este fichero XML en la Master Page Gallery, para ello, podemos usar el siguiente snippet XML:

 

image

 

El atributo Src define la ubicacion local del fichero, mientras que Folder define la ubicación en SharePoint (en este caso hacemos uso del token ~masterpagecatalog, que el PnP resolvera cuando se aplique la template). Ademas, debemos de especificar el Tipo de Contenido del fichero, que para el caso del fichero de Renditions, es el ID: 0x01010012BCF119622FF14793A8A38D5831F25C.

 

Con todo esto en nuestra PnP template, podremos provisionar nuestras Images Renditions.

 

Espero que os sirva!

 

@luismanez

[Collab365] – Video “on demand” de mi sesion: Agilizando nuestros desarrollos SharePoint con Gulp y PnP

Os dejo link directo al video de mi sesión de ayer en el Collab 365. Necesitareis registraros para poder acceder, pero vale la pena por la excelente calidad de las sesiones impartidas durante los 2 días del evento.

 

https://collab365.conferencehosts.com/confs/Global2016/c365globalmanez/ConfPages/SessionRoom.aspx

 

Saludos!

 

@Luismanez

SharePoint Saturday Barcelona–Materiales de mi sesion “Integracion continua con SharePoint y Visual Studio Team Services”

El pasado Sábado se celebro el SharePoint Saturday Barcelona, organizado por el SUG.cat. El evento fue todo un éxito, y tuve la suerte de participar como Speaker, en una sesión en la que hablamos de Integración Continua en SharePoint con Visual Studio Team Services y el framework del PnP. Además, contamos con ClearPeople como patrocinador.

Tal y como os adelante que haría, he subido a mi sitio de GitHub el proyecto que utilice en la demo, así como las slides de la sesión.

https://github.com/luismanez/sp-saturday-barcelona-2016

De nuevo agradecer a patrocinadores y organizadores por el evento, y recordaros que si tenéis cualquier duda de la sesión, dejadme un mensaje en el sitio de GitHub, por twitter o como queráis Smile

Saludos!

Luis.

Materiales de mi sesión en el pasado SharePoint Saturday Madrid

El pasado 7 de Mayo tuvo lugar en Madrid el SharePoint Saturday. Un extraordinario evento organizado por las distintas comunidades de SharePoint de nuestro país, y que fue todo un éxito, como demostraron las mas de 170 personas que acudieron.

Tuve la suerte de participar como speaker, hablando del framework del PnP para SharePoint, y que os recomiendo encarecidamente.

Os dejo en mi GitHub los materiales de la sesion, tanto el PPT como las demos que hice durante la sesion.

https://github.com/luismanez/sp-saturday-madrid-2016

Para acabar, agredecer de nuevo a los patrocinadores, al equipo organizador… ah! y a mi empresa ClearPeople, por ayudarme a participar.

@luismanez

© 2017 Inherits Cloud

Tema por Anders NorenArriba ↑