Crear popup/dialog con ALLOY en Liferay 6

por

Para generar los típicos bocadillos que utiliza liferay para mostrar las ventanas de configuración, acciones, etc. Su uso es bastante sencillo si se usa de forma correcta.

Para generar un bocadillo nos valdremos de la librería "aui-dialog" que nos ofrece las funciones necesarias para generarlo todo. Las opciones de configuración de la ventana son numerosas pero nosotros vamos a abordar unas cuantas en el ejemplo y explicar más adelante para qué sirve cada una, las principales.

Como siempre, el código de ejemplo es el siguiente:


AUI().ready('aui-dialog', function(A) {

   var instance = new A.Dialog({

      bodyContent: 'Dialog body',

      centered: true,

      constrain2view: true,

      destroyOnClose: true,

      draggable: true,

      height: 250,

      resizable: false,

      stack: true,

      title: 'Dialog title',

      width: 500,

      modal:true,

      cssClass: 'clasePrueba',

      id: 'identificadorDialog',

      buttons: [

         {

           text: 'Alerta1',

           handler: function() {

             alert('alerta1');

           }

         },

         {

           text: 'Alerta2',

           handler: function() {

             alert('alerta2');

           }

         }

      ]

   }).render();

});

Con ese ejemplo, prácticamente, podemos generar todo tipo de bocatas completos. Los principales parámetros que podemos configurar son los siguientes:

bodyContent: Es el contenido del dialog. Puede contener tanto texto plano, como código, como portlets. Necesita un string.

centered: Establece si queremos que el dialog salga centrado en la pantalla. Admite valores true o false.

constrain2view: Comprime el dialog para que solo se vea la región visible del portlet. Admite valores true o false.

destroyOnClose: Destruye el dialog cuando lo cerramos. En caso de no destruirlo, quedaría creado en el código pero oculto. Admite valores true o false.

draggable: Establece si queremos que podamos arrastrar el bocadillo o no. Admite valores true o false.

height: La altura del bocadillo. Necesita un valor numérico.

resizable: Permite redimensionar el bocadillo creado mediante un pequeño icono que sale en una esquina. Admite valores true o false.

title: Establece el título del bocadillo. Necesita un string.

width: El ancho del bocata. Necesita un valor numérico.

modal: Si se pone a true, hace que al mostrar el dialog se muestre un overlay oscuro por detras de él que deshabilita todo lo que hay por detrás de él. Admite valores true o false.

buttons: Permite añadir botones al dialog estableciendo simplemente el titulo del botón y una acción a llevar a cabo tras clicarlo. Podemos ver su modo de uso en el ejemplo.

close: Muestra el icono de cerrar el bocadillo. Admite valores true o false.

cssClass: Añade una clase al dialog. Necesita un string.

id: Añade un id al dialog. Necesita un string.

Además de todo ésto, teneis toda la documentación necesaria y ampliada en el siguiente enlace.

COMENTARIOS

03-04-2013 23:25:44
Muchas gracias por tu comentario. Con respecto a tu pregunta fíjate en el ejemplo, tiene 2 botones alerta 1 y alerta 2 que lanzan un alert() al ser pulsados. Del mismo modo tu puedes añadir los botones de si y no y en vez de lanzar un alert() que lanzen la acción que tu le indiques.
02-04-2013 23:55:14
buenas tardes 1. gracias por tu aporte esta genial 2. como hago un pop up de confirmacion, tengo un boton de eliminar entonces cuando le de click a ese boton tiene q aparecer el pop up y pues si le doy \"si \" entonces tiene q dejar q siga con la accion si le doy \"no\" entonces se tiene q cancelar la solicitud.... agradecería cualquier aporte gracias
10-12-2011 00:22:22
De nada, paraeso estamos, cualquier otra duda que tengas no dudes en preguntar y te intentaré ayudar.
09-12-2011 17:31:39
ok ya esta entendido, muchas gracias por tu ayuda me ha sido de gran utilidad, apenas estoy empezando con esto del liferay y no se muchas cosas sobre su funcionamiento, y tu me has ayudado mucho, gracias
09-12-2011 11:34:18
Vale mira, para cualquier cambio de CSS deberías hacerlo desde el tema de apariencia, y si no has creado uno, create uno propio. Tiene un tutorial de como hacerlo en la seccion de Liferay. Además si lo cambiases de forma nativa estarías cambiandolo para todos los dialog de tu servidor, independientemente del tema de apariencia que tengan y no debería ser así.El código nativo de liferay sólo se debe tocar desde los plugins(temas, layouts, hooks,etc...) Para quitar esa zona gris del título, deberías de usar el siguiente css: .aui-panel-hd{background:0; border:0;} Si esa línea la metes en el archivo del tema _diffs/css/custom.css y despliegas el tema, ya te debería de quitar esa zona gris. Como ya te digo es todo jugar con los CSS, pero siempre añadiendolos en el tema de apariencia.
09-12-2011 02:55:38
ok, si entindo esa parte, mira obtengo esto: <div class="aui-widget-hd aui-helper-clearfix aui-panel-hd aui-dialog-hd" id="aui_3_2_0_1547"> pero ahora tengo otra pregunta, tengo un script donde tengo una funcion y dentro de este tengo el un codigo parecido a que esta en el articulo, tengo entendido que liferay ya tiene incluido estos componentes o heramientas, y no se donde encontrar el archivo css ya que no he agregado ningun archivo extra, alguna sugerencia?, y muchas gracias por la ayuda que me brindas
09-12-2011 01:58:11
Para quitar esa parte gris deberías hacerlo desde el CSS del tema de apariencia directamente. Inspeccionas con el firebug del firefox ,por ejemplo, el popup que te sale, buscas el elemento a ocultar/borrar/lo que quieras hacer con el y lo cambias en el custom.css del tema.COn eso cambiarias todos los popups. Si por lo que sea quieres que sólo se cambie para ese popup, añadele la opción del class o el ID al crearlo y en el css del tema utilizas ese class/ID para modificarlo. Me expliqué? :P
09-12-2011 01:40:16
no de que, has hecho un buen articulo, me guataria ver si me puedes ayudar aun no se mucho sobre esto, la idea es utilizarlo para mostrar un popup y q despliegle solo una imagen y el boton de cerrar, en este caso ya muestro la imagen pero me aparece un espacio en gris que es donde pone el titulo y el boton de cerrar, lo que quiero hacer es quitar esa parte gris, y se pudiera colocar el boton cerrar en una posicion deseada, con quitar esa parte gris me ayudarias en verdad, lo del boton cerrar no es necesario, no se si me puedas ayudar en eso.
08-12-2011 12:36:25
Por supuesto, todos las opciones de configuración del dialog son opcionales, y puedes poner y quitar las que quieras. Gracias por el comentario.
08-12-2011 02:54:06
por cierto muy buen articulo
08-12-2011 02:53:27
se puede quitar, la parte donde va el titulo, y q solo este el boton de cerrar

DEJA TU COMENTARIO