We apologize for untranslated text, you can use the Google Translation button to get an automatic translation of the web page in the language of your choice.

Pourquoi mon filtre de menu ne fonctionne pas ?

Benoit Chapel · on 2/19/14 at 8:48 AM

Bonjour,

Puisque l'option hiddenActions est dépréciée,

J'ai ajouté dans plugin.xml de mon module :

  <plugincomponents>
    <policyfilter class="mon.package.MonFilter"  />
  </plugincomponents>

J'ai créé la classe mon.package.MonFilter

public class MonFilter extends BasicCtxMenuPolicyFilter
{
    @Override
    public char[] checkCtxMenuItems(MemberCtxMenu arg0, Member arg1, char[] arg2)
    {
        System.out.println("MonFilter");
        System.out.println(arg2);
        return arg2;
    }

    @Override
    public int handleCtxMenuItems(StringBuffer arg0, MemberCtxMenu arg1, Member arg2, char arg3, int arg4)
    {
        System.out.println("MonFilter");
        return super.handleCtxMenuItems(arg0, arg1, arg2, arg3, arg4);
    }

    @Override
    public void handleCtxMenuItems(StringBuffer arg0, MemberCtxMenu arg1,Member arg2)
    {
        System.out.println("MonFilter");
        super.handleCtxMenuItems(arg0, arg1, arg2);
    }
}

 

J'ai redémarrer mon Jcms de dev.

Lorsque je vais sur ma jsp qui comporte un :

<jalios:widget editor ='<%= AbstractWidget.UI_EDITOR_MEMBERCHOOSER %>' 

Je ne vois rien dans ma console et pas plus lorsque je passe sur le menu contextuel de ce widget.

 

J'ai l'impression que mon filter n'est pas appelé !

Qu'est-ce que j'ai oublié ?

8 pts
thomas lavocat · on 2/19/14 at 9:36 AM

Est-ce que la classe MonFilter se situe dans le dossier WEB-INF/classes/mon/package ?

0 pts
Olivier Jaquemet · on 2/19/14 at 9:36 AM

Bonjour Benoît,

Le filtre que vous avez implémenté concerne le menu contextuel qui s'affiche sur l'icone d'édition d'un membre, pas sur le widget de sélection d'un membre.

Pour votre besoin la signature à surcharger est : 

public char[] checkCtxMenuItems(WidgetCtxMenu ctxMenu, final String menuItems, final String chooserType, final String chooserId, final char[] letters);
1 pt
Benoit Chapel · on 2/19/14 at 11:22 AM

Merci de vos réponses.

Effectivement, avec la redéfinition de 

public char[] checkCtxMenuItems(WidgetCtxMenu ctxMenu, final String menuItems, final String chooserType, final String chooserId, final char[] letters);

cela fonctionne sur tous les champs de sélection.

J'imagine que le contexte doit me fournir les informations pour cibler un champ particulier.

Que préconisez-vous d'utiliser comme information du contexte ?

0 pts