SharePoint Online: Cómo abrir ventanas modales desde WebParts!

Hace un tiempo escribía como nos las podemos ingeniar para abrir una ventana modal, aprovechando el framework de ventanas modales de SharePoint 2010, desde una WebPart visual. La solución pasaba por registrar el correspondiente JavaScript en el servidor de manera que luego pudiese ser utilizado en la página devuelta por el mismo….¿y esto funciona con soluciones Sandbox? Pues sí, pero no de la misma forma (sorprendentemente):

  • Creamos un proyecto de tipo vacío para SharePoint 2010 y elegimos como tipo de despliegue Sandbox.
  • Creamos una pequeña WebPart visual (preparada para el Sandbox) que cuente con un botón por ejemplo.

image

  • Codificamos la WebPart de manera que al evento OnClientClick del botón le añadamos la llamada a la función JavaScript responsable de abrir la ventana modal.
   1: protected void Page_Load(object sender, EventArgs e)

   2: {

   3:     //Añadimos el manejador para Control.PreRender

   4:     if (!Page.IsPostBack)

   5:     {

   6:         string sTargetuRl =

   7:             "http://www.ciin.es";

   8:         this.btnRequest.OnClientClick =

   9:             @"OpenDialog('" +

  10:             sTargetuRl +

  11:             "'); return false;";

  12:     }

  13: }

  • Y es aquí donde llega la diferencia con respecto al caso de la WebPart visual ya que aparentemente añadir un evento PreRender() no es suficiente para registrar el código JavaScript correspondiente.
  • ¿Y qué hacemos? Pues añadir el código JavaScript en la página de otra forma…por ejemplo en una WebPart editor de contenido.
   1: <script language='javascript'>

   2:     function OpenDialog(formURL) 

   3:     {

   4:         var options = SP.UI.$create_DialogOptions();

   5:         options.url = formURL;

   6:         SP.UI.ModalDialog.showModalDialog(options); 

   7:     }

   8: </script>

  • Y a partir de aquí, simplemente añadimos el código anterior en la WebPart de tipo Editor de contenido.
  • Guardamos los cambios.
  • Comprobamos que la ventana modal se muestra.
image image image

Siempre me queda la duda de si alguna vez SharePoint no me sorprenderá y la verdad, creo que siempre me sorprenderá…todos los días se aprende algo nuevo.