Fórumok

Tri sur les custom fields dans un search container

Nordine Bader, módosítva 10 év-val korábban

Tri sur les custom fields dans un search container

New Member Bejegyzések: 4 Csatlakozás dátuma: 2011.11.08. Legújabb bejegyzések
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.
thumbnail
Richard SINELLE, módosítva 10 év-val korábban

RE: Tri sur les custom fields dans un search container

Junior Member Bejegyzések: 28 Csatlakozás dátuma: 2011.04.07. Legújabb bejegyzések
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, módosítva 10 év-val korábban

RE: Tri sur les custom fields dans un search container

New Member Bejegyzések: 4 Csatlakozás dátuma: 2011.11.08. Legújabb bejegyzések
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
thumbnail
Pascal SIMON, módosítva 10 év-val korábban

RE: Tri sur les custom fields dans un search container

Junior Member Bejegyzések: 85 Csatlakozás dátuma: 2009.02.18. Legújabb bejegyzések
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