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.

Routine affichage conditionnel d'une portlet (masquage/visible)

Julien Valéry · on 1/28/16 at 4:37 PM

Bonjour,

Nous avons un code métier java (renvoie un booléen, sera appelé ds une JSP par exemple) qui doit permettre d'autoriser ou non l'affichage d'une portlet (de ses sous portlets si besoin....)

Par contre je ne sais pas ou brancher ce bout de code car je l'aurais bien mis sur un skin mais les skins ne fonctionnent par avec les Portlet colonnes/lignes par exemple.

Auriez vous une solution ?

Merci,

Julien

4 pts
Olivier Jaquemet · on 1/28/16 at 4:49 PM

Bonjour,

Plusieurs possibilités:

  • Un RightPolicyFilter pour controler le droit de visibilité de la donnée.
  • L'utilisation dans le gabarit de la portlet de l'attribut suivant qui la masque automatiquement (cf exemple dans doPortletLoginFullDisplay.jsp 
if (...) {
request.setAttribute("ShowPortalElement", Boolean.FALSE);
return;
}
0 pts
Julien Valéry · on 1/28/16 at 5:03 PM

La solution est bonne pour masquer mais il nous faudrait celle ci en mode édition de portlet c'est à dire que l'on puisse dire activer ou pas cette vérification pour telle ou telle portlet par exemple, y compris les portlets natives Jalios. Je vais regarder du côté des https://community.jalios.com/jcms/jx_59072/fr/developper-avec-les-extradata-et-les-extradbdata également.

#1

Pour cela tu peux utiliser les aptitudes de portlet, évoquées par un membre de la communauté ici :
Requête Avancée Portlet Itération

Olivier Jaquemet · on 1/28/16 at 5:17 PM
#2

pas mal ça, j'ai créé l'aptitude et un RightPolicyFilter, ça a l'air de bien fonctionner:

 public boolean canBeReadBy(boolean isAuthorized, Publication pub, Member member, boolean searchInGroups) {
    
    if (pub instanceof Portlet) {
      Portlet portlet = (Portlet) pub;
      
      if (portlet.hasAbility("my.ability")) {
        return doMyArbitratyCheck();
      }    
    }
    
    return super.canBeReadBy(isAuthorized, pub, member, searchInGroups);
  }

Julien Valéry · on 1/28/16 at 6:10 PM
0 pts