Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
virginie joussot
onglets "guest"
May 16, 2012 12:21 AM
Answer

virginie joussot

Rank: Junior Member

Posts: 78

Join Date: March 14, 2012

Recent Posts

Bonjour,
lorsque qu'un utilisateur "non connecté" va sur notre liferay, il voit un certain nombre d'onglets.
Une fois connecté et reconnu par notre système il voit d'autres onglets,
par contre je n'arrive pas à faire uen sorte qu'il ne voit plus les onglets du début (en mode guest).
Quelqu'un peut il m'indiquer comment faire pour masquer ces onglets une fois connecté ?
Merci d'avance.
Pascal SIMON
RE: onglets "guest"
May 16, 2012 12:41 AM
Answer

Pascal SIMON

Rank: Junior Member

Posts: 85

Join Date: February 18, 2009

Recent Posts

Bonjour Virignie,

Pour modifier les droits des invités en général il faut modifier les permissions du rôle guest.
Ensuite pour différents composants tu peux de façon spécifique modifier les permissions d'affichage (ie cette portlet est visible aux guest ou aux user...).

De quoi parles-tu quand tu parles d'onglets (de la dock bar? ) ?

Pascal
virginie joussot
RE: onglets "guest"
May 16, 2012 1:07 AM
Answer

virginie joussot

Rank: Junior Member

Posts: 78

Join Date: March 14, 2012

Recent Posts

typiquement j'aimerai que l'onglet acceuil disparraisse une fois qu'on est connecté au portail
Olivier Bonnet-Torrès
RE: onglets "guest"
May 16, 2012 2:25 AM
Answer

Olivier Bonnet-Torrès

Rank: Regular Member

Posts: 157

Join Date: July 11, 2008

Recent Posts

Bonjour Virginie,

Pour faire cela, il est nécessaire de modifier le fichier navigation.vm du thème.
L'affichage de l'onglet de la page d'accueil doit être conditionné par la valur de la variable $is_signed_in (alias de $themeDisplay.isSignedIn(), défini dans init.vm).

 1...
 2#foreach ($nav_item in $nav_items)
 3    ## Skip the home page
 4    #if (!$is_signed_in || $velocityCount > 1)
 5        #if ($nav_item.isSelected())
 6            <li class="selected">
 7        #else
 8            <li>
 9        #end
10...
virginie joussot
RE: onglets "guest"
May 16, 2012 2:27 AM
Answer

virginie joussot

Rank: Junior Member

Posts: 78

Join Date: March 14, 2012

Recent Posts

merci pour cette réponse.
Je n'ai jamais touché au thème,
comment porcèder ? quell evaleur mettre à ce paramètre ?
Encore merci pour l'aide.
Cdlt,
Olivier Bonnet-Torrès
RE: onglets "guest"
May 16, 2012 2:33 AM
Answer

Olivier Bonnet-Torrès

Rank: Regular Member

Posts: 157

Join Date: July 11, 2008

Recent Posts

Il s'agit juste de surcharger le fichier navigation.vm. Aucune affectation de valeur ne doit être faite.
Pour créer un thème, je te propose de voir le wiki: Themes et en particulier Themes v6.0.
virginie joussot
RE: onglets "guest"
May 16, 2012 2:36 AM
Answer

virginie joussot

Rank: Junior Member

Posts: 78

Join Date: March 14, 2012

Recent Posts

ok je vais regarder tout ça, il s'agit bien du fichier .vm qui se trouve dans webapps/ROOT/html/themes/control_panel/templates ?
Quand vous dites surcharger, il "suffit" juste d'ajouter votre code à la page ?
Ca se recompile un .vm ?
Olivier Bonnet-Torrès
RE: onglets "guest"
May 16, 2012 2:48 AM
Answer

Olivier Bonnet-Torrès

Rank: Regular Member

Posts: 157

Join Date: July 11, 2008

Recent Posts

En fait, il faut créer un thème avec le plugins SDK de Liferay (voir les infos dans le wiki). Modifier directement ce fichier n'est pas une pratique correcte, dans la mesure où il n'y a plus trace de l'original et les modifications risquent de ne pas être prises en compte.
Le fichier navigation.vm du nouveau thème (répertoire docroot/diffs/templates) devra être modifié pour y intégrer la condition manquante...
Pour la "compilation", il s'agit seulement du déploiement du thème (dépôt du WAR via l'interface du portail ou directement dans le répertoire $TOMCAT_HOME/../deploy). Tomcat se charge du désarchivage et de l'inscription de la webapp et Liferay permet ensuite d'appliquer le nouveau thème sur les groupes, organisations et/ou pages.
virginie joussot
RE: onglets "guest"
May 21, 2012 4:26 AM
Answer

virginie joussot

Rank: Junior Member

Posts: 78

Join Date: March 14, 2012

Recent Posts

Bonjour,
j'ai créé un thème (en copiant le thème control_panel, j'ai modifié le fichier C:\Utilitaires\liferay-portal-6.1.0-ce-ga1\SDK\themes\newtheme-theme\docroot\_diffs\templates\navigation.vm comme ceci :
<nav class="$nav_css_class" id="navigation">
<h1>
<span>#language("navigation")</span>
</h1>

<ul>
#foreach ($nav_item in $nav_items)
## Skip the home page
#if (!$is_signed_in || $velocityCount > 1)
#if ($nav_item.isSelected())
<li class="selected">
#else
<li>
#end
<a href="$nav_item.getURL()" $nav_item.getTarget()><span>$nav_item.icon() $nav_item.getName()</span></a>

#if ($nav_item.hasChildren())
<ul class="child-menu">
#foreach ($nav_child in $nav_item.getChildren())
#if ($nav_child.isSelected())
<li class="selected">
#else
<li>
#end
<a href="$nav_child.getURL()" $nav_child.getTarget()>$nav_child.getName()</a>
</li>
#end
</ul>
#end
</li>
#end
</ul>
</nav>

puis j'ai compilé le theme via ant all.
Le fichier .war est bien créé, dans liferay, je demande à utiliser ce thème,
mais lorsque je demande qu'un onglet n'apparaisse que pour "guest", il apparait quand même pour les users connectés.
Qu'ai je raté ?
Olivier Bonnet-Torrès
RE: onglets "guest"
May 21, 2012 4:42 AM
Answer

Olivier Bonnet-Torrès

Rank: Regular Member

Posts: 157

Join Date: July 11, 2008

Recent Posts

virginie joussot:

mais lorsque je demande qu'un onglet n'apparaisse que pour "guest", il apparait quand même pour les users connectés.
Qu'ai je raté ?


Bonjour,
Un utilisateur connecté n'est pas un utilisateur "guest"...
Si "guest" désigne la communauté par défaut, il vous faut modifier la condition d'affichage en [à titre indicatif] "$scopeGroupId != $groupLocalService.getGroup($companyId, "Guest")" (ou approchant).
virginie joussot
RE: onglets "guest"
May 21, 2012 4:44 AM
Answer

virginie joussot

Rank: Junior Member

Posts: 78

Join Date: March 14, 2012

Recent Posts

Bah justement, pour moi, guest c'est les personnes non authentifiées du portail.
Je souhaites que cet onglet n'apparaisse QUE pour les utilisateurs connectés et reconnus par mon CAS et mon LDAP.
Est ce bien ça ?
Olivier Bonnet-Torrès
RE: onglets "guest"
May 21, 2012 5:32 AM
Answer

Olivier Bonnet-Torrès

Rank: Regular Member

Posts: 157

Join Date: July 11, 2008

Recent Posts

Oui, c'est effectivement ça!
Dans l'état initial du script (avec la seule condition $is_signed_in), tout utilisateur connecté aura l'affichage de l'onglet.
Les utilisateurs connectés sont a priori reconnus par le LDAP (ou directement ajoutés dans Liferay).
virginie joussot
RE: onglets "guest"
May 21, 2012 6:41 AM
Answer

virginie joussot

Rank: Junior Member

Posts: 78

Join Date: March 14, 2012

Recent Posts

non pardon je souhaite que l'onglet "welcome" disparaisse une fois que l'on est connecté ..
comment faire ça ?
Olivier Bonnet-Torrès
RE: onglets "guest"
May 21, 2012 6:47 AM
Answer

Olivier Bonnet-Torrès

Rank: Regular Member

Posts: 157

Join Date: July 11, 2008

Recent Posts

#if (!$is_signed_in)
?
virginie joussot
RE: onglets "guest"
May 21, 2012 6:58 AM
Answer

virginie joussot

Rank: Junior Member

Posts: 78

Join Date: March 14, 2012

Recent Posts

oui ça ok, mais je ne vaux pas que tous les onglets soit cachés.
Juste quelques uns....
là j'arrive à cacher tous les onglets, mais comment identifier les onglets que je veux cacher ?
virginie joussot
RE: onglets "guest"
May 21, 2012 7:24 AM
Answer

virginie joussot

Rank: Junior Member

Posts: 78

Join Date: March 14, 2012

Recent Posts

j'ai bien trouvé ça :


#foreach ($nav_item in $nav_items)
#if($nav_item.getName() == "Bienvenue" && $is_signed_in )



mais ce n'est pas très très portable ...
Matthieu R.
RE: onglets "guest"
September 5, 2012 2:33 AM
Answer

Matthieu R.

Rank: Junior Member

Posts: 44

Join Date: July 18, 2012

Recent Posts

Je sais que ce sujet date un peu mais j'ai été confronté à pas mal de problèmes similaires pour masquer et afficher les onglets.

J'ai finalement procédé de la manière suivante.

1. Changement de $nav_items en $custom_nav_items
2. Création d'un hook qui instancie une variable Velocity
3. Dans ce hook, prendre la liste des onglets, la parser et faire les modifications que l'on souhaite.
4. Empaqueter le tout et transmettre au template sous le nom custom_nav_items

Ce n'est pas la solution la plus extraordinaire mais elle a le mérite d'éviter de trop surcharger le template avec des tests. Pour moi, les fichiers Velocity doivent rester clairs et donc réaliser des tests logiques doit être possible en amont.
Au final, cela m'a permis de gérer mes onglets sans faire appel aux mécanismes Liferay, uniquement via les droits stockés dans ma base de données.

C'est une piste. Si quelqu'un souhaite obtenir des informations plus précises, il suffit de demander.