Forums

Home » Liferay Portal » Français

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Nordine Bader
Tri sur les custom fields dans un search container
February 6, 2014 2:39 AM
Answer

Nordine Bader

Rank: New Member

Posts: 4

Join Date: November 8, 2011

Recent Posts

Bonjour

Nous avons créé un hook pour pouvoir customiser la portlet directory permettant de lister les utilisateurs du portail et nous souhaiterions mettre en oeuvre le tri sur les champs customisés affichés au niveau de la vue.
Le problème que je rencontre est que je n'arrive pas à trier sur les champs customisés. Le tri sur les champs nom prénom fonctionne bien mais dés lorsque j'essaye de trier sur les champs customisés ca ne fonctionne pas comme il faut.

Au niveau visuel ca donne ca:




Pour le header fonction par exemple, nous avons au niveau de la colonne le code suivant:


<liferay-ui:search-container-column-text
name="portlet-annuaire-fonction"
orderable="true"
orderableProperty="expando/custom_fields/fonction"
value="<%= userFonction %>"
/>


Lorsque je clique sur le tri pour avoir de l'ascendant par exemple, j'ai d'abord tous les utilisateurs qui n'ont pas de fonction qui apparaissent puis sur les dernières pages, les utilisateurs ayant une fonction, sauf que le nom des fonctions n'est pas trié dans l'ordre alphabétique.

Savez vous s'il existe un moyen simple (sans avoir à wrapper UserLocalServiceUtil) pour trier correctement les utilisateurs en se basant sur les champs customisés ?

Merci pour votre aide.
Richard SINELLE
RE: Tri sur les custom fields dans un search container
February 6, 2014 5:01 AM
Answer

Richard SINELLE

Rank: Junior Member

Posts: 27

Join Date: April 7, 2011

Recent Posts

Bonjour

Si vous souhaitez faire un tri sur des customs fields, je pense que vous allez devoir étendre le search container UserSearch de la portlet directory afin de ne plus utiliser OrderByComparator orderByComparator = UsersAdminUtil.getUserOrderByComparator(orderByCol, orderByType); mais votre propre implémentation car vous avez besoin de votre propre comparator exemple : FonctionComparator extends OrderByComparator
Ca c'est la solution d'un point de vue générale.

Malheureusement j'ai peur que vous ne puissiez pas faire cela car le tri est effectué par une requete sql et la table expando ne fait pas partie de la requete de base, à vérifier;

Si j'étais à votre place, je développerai ma propre portlet en vous inspirant du code de la portlet directory plûtot qu'un hook, dans lequel j'aurai la main sur l'ensemble des couches et je passerai par une requête sur Lucene plûtot que SQL.

Richard
Nordine Bader
RE: Tri sur les custom fields dans un search container
February 6, 2014 8:27 AM
Answer

Nordine Bader

Rank: New Member

Posts: 4

Join Date: November 8, 2011

Recent Posts

Je me doutais qu'il allait fallait passer par là mais j'esperais qu'il y avait une autre solution quand même.
En tout cas merci pour votre réponse ! emoticon
Pascal SIMON
RE: Tri sur les custom fields dans un search container
February 6, 2014 8:46 AM
Answer

Pascal SIMON

Rank: Junior Member

Posts: 80

Join Date: February 18, 2009

Recent Posts

Hello,

Peux-tu essayer de faire un hook de type post processing indexer afin de mettre à jour l'index User avec ton custom field ? Ainsi la recherche de user et le filtrage pourra se faire sur ton custom field de type user.
Tu pourras vérifier en ajoutant directement une portlet directory dans une page car tu auras le filtrage sur ton custom field.

Good luck

Pascal