RE: Asset List Screenlet using portletItemName

Sandra Roca, modified 7 Years ago. New Member Posts: 6 Join Date: 6/28/18 Recent Posts

Hola, estoy iniciándome en Liferay Screens y tengo el siguiente problema:

quiero mostrar una "lista" de WebContents (dispuestos en cuadrícula), de tal manera que cada WebContent aparezca en dicha "lista" con el título y una imagen, como si de una galería de imágenes se tratara, con la diferencia que al clicar en cada una de las imágenes, te dirija al Web Content en cuestión en vez de a la url de la imagen.

 

Lo que estoy intentando es: usar el Asset List Screenlet asignándole el atributo portletItemName correspondiente al "configuration template" de mi "Asset Publisher" para comprobar si puedo mostrar la lista de WebContents y personalizar su apariencia configurándola desde el portal.

Por ahora el primer objetivo es simplemente mostrar la lista de WebContents como una lista convencional donde solo aparezca el título del WebContent, pero usando el atributo portletItemName me aparece la lista vacía.

 

Mis dudas son:

- ¿Cómo hago para poder mostrar la lista de WebContents usando la configuración del Asset Publisher? ¿Necesito implementar un "viewset" propio para asignárselo al Asset List Screenlet como layoutId porque el  layout"asset_list_default" no le sirve?

- ¿Es posible conseguir mi objetivo final de la cuadrícula con las imágenes y el título usando el Asset List Screenlet, o me recomiendas otro camino?

 

Espero que me podáis ayudar.

 

Muchas gracias!!!

 

thumbnail
Javier Gamarra, modified 7 Years ago. Expert Posts: 348 Join Date: 2/12/15 Recent Posts

Buenas!

El screenlet de asset list por defecto tira del título del asset, por lo que debería salirte una lista con elementos... puedes comprobar directamente con el API?

Si entras en la url de los json WS services (SERVIDOR/api/jsonws, en screens, asset entry, segundo elemento de listado) y rellenas el portlet item name, te sale algo? necesitas la compañía (en consola JS, themeDisplay.getCompanyId()), company group (themeDisplay.getCompanyGroupId), el nombre de la configuración y el máximo, no pongas nada en locale. Si no te sale nada comprueba que la configuración guardada está actualizada (sobreescribe).

No necesitas implementar un viewset propio si quieres mostrar el título.

Sobre hacer la cuadrícula, sí se puede (el screenlet de galería hace eso mismo: vista y adapter) y aquí hay un ejemplo con asset un poco desactualizado.

PD: No se por qué pero no me ha llegado notificación del mensaje... imagino que será por el cambio de foros que hicimos la semana pasada...

Sandra Roca, modified 7 Years ago. New Member Posts: 6 Join Date: 6/28/18 Recent Posts

Buenas! Muchas gracias por tu respuesta.

Cuando entro en SERVIDOR/api/jsonws y relleno los campos (portlet item name, company id, company group id y el máximo), el resultado obtenido sigue siendo una lista vacía (Resultado:  [] ).  Lo raro es que en el Asset Publisher del portal sí que me sale la lista con todos los elementos.

thumbnail
Javier Gamarra, modified 7 Years ago. Expert Posts: 348 Join Date: 2/12/15 Recent Posts

Si te falla en el API es que tiene que haber un valor mal... lo más habitual es el groupId: prueba con el global o el del site. Guarda de nuevo el assetpublisher con otro nombre para descartas problemas del estilo de haber actualizado después de haberlo guardado.

Sandra Roca, modified 7 Years ago. New Member Posts: 6 Join Date: 6/28/18 Recent Posts

He probado con todos los valores posibles de groupId pero es imposible que sea eso lo que falle..

En el post te adjunto la base de datos con los portletItems de mi portal (portletItems bbdd.png), donde puedes ver que:

- groupId: 20142

- companyId: 20115

 

También te adjunto un pdf (Configuración Asset Publisher.pdf) con unas capturas de pantalla correspondientes al procedimiento de la configuración del Asset Publisher, donde se ve que el portlet muestra la lista de los webcontents, pero al hacer la llamada desde /api/jsonws la lista sale vacía.

 

A partir de esto, a ver si sabes decirme cuál puede ser el problema...

 

Muchas gracias!!

 

 

 

 

 

thumbnail
Javier Gamarra, modified 7 Years ago. Expert Posts: 348 Join Date: 2/12/15 Recent Posts

Una última cosilla, si sólo necesitas listar un directorio, puedes usar el WebContentListScreenlet :)

Sandra Roca, modified 7 Years ago. New Member Posts: 6 Join Date: 6/28/18 Recent Posts

Así es como lo había implementado al principio, con un WebContentListScreenlet, pero para la idea de mostrar los webcontents dispuestos en forma de cuadrícula y mostrando la imagen y el título, con el WebContentListScreenlet es posible hacerlo?

 

thumbnail
Javier Gamarra, modified 7 Years ago. Expert Posts: 348 Join Date: 2/12/15 Recent Posts

Sí, sobreescribiendo la vista también.

Sandra Roca, modified 7 Years ago. New Member Posts: 6 Join Date: 6/28/18 Recent Posts

¿Y cómo lo hago para obtener la small image del webContent para poder mostrarla?

thumbnail
Javier Gamarra, modified 7 Years ago. Expert Posts: 348 Join Date: 2/12/15 Recent Posts

Parece que hay un problema con el foro... te dejo la PR por si te quieres basar en ella: https://github.com/liferay/liferay-screens/pull/551 (los posibles errores eran url de picasso, faltaba /image/ en url, a lo mejor faltaba algun layout y el layout de la fila no mostraba bien el texto)

Sandra Roca, modified 7 Years ago. New Member Posts: 6 Join Date: 6/28/18 Recent Posts

No, en la url de picasso no faltaba /image/ en la url, esta es la línea de código donde cargo la url:

picasso.load("http://localhost:8080/image/journal/article?img_id=" +smallimageid)
        .into(newsHolder._image);

He aplicado los cambios que has hecho en la PR como cambiar el "layout_height" de la imagen de match_parent a wrap_content y no sé si había alguna cosa más, pero sigue sin cargarse la imagen...

También comprobé que la imagen que quería cargar tuviera permisos abriendo la URL desde ventana de incógnito y accedía a la imagen sin ningún problema.

He hecho la prueba de pasarle una URL cualquiera que no sea del portal (una imagen de google) y tampoco me la carga...

Es como si el problema fuera directamente de la librería picasso o de la manera en que hago la llamada (independientemente de la url); la única manera con la que consigo que se visualice una imagen es asignándole una imagen del directorio @drawable al atributo "src" en el layout de la fila...