Foren

RE: onglets "guest"

virginie joussot, geändert vor 11 Jahren.

onglets "guest"

Junior Member Beiträge: 78 Beitrittsdatum: 14.03.12 Neueste Beiträge
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.
thumbnail
Pascal SIMON, geändert vor 11 Jahren.

RE: onglets "guest"

Junior Member Beiträge: 85 Beitrittsdatum: 18.02.09 Neueste Beiträge
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, geändert vor 11 Jahren.

RE: onglets "guest"

Junior Member Beiträge: 78 Beitrittsdatum: 14.03.12 Neueste Beiträge
typiquement j'aimerai que l'onglet acceuil disparraisse une fois qu'on est connecté au portail
Olivier Bonnet-Torrès, geändert vor 11 Jahren.

RE: onglets "guest"

Regular Member Beiträge: 162 Beitrittsdatum: 11.07.08 Neueste Beiträge
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).

...
#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 ...
  • virginie joussot, geändert vor 11 Jahren.

    RE: onglets "guest"

    Junior Member Beiträge: 78 Beitrittsdatum: 14.03.12 Neueste Beiträge
    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, geändert vor 11 Jahren.

    RE: onglets "guest"

    Regular Member Beiträge: 162 Beitrittsdatum: 11.07.08 Neueste Beiträge
    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, geändert vor 11 Jahren.

    RE: onglets "guest"

    Junior Member Beiträge: 78 Beitrittsdatum: 14.03.12 Neueste Beiträge
    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, geändert vor 11 Jahren.

    RE: onglets "guest"

    Regular Member Beiträge: 162 Beitrittsdatum: 11.07.08 Neueste Beiträge
    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, geändert vor 11 Jahren.

    RE: onglets "guest"

    Junior Member Beiträge: 78 Beitrittsdatum: 14.03.12 Neueste Beiträge
    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, geändert vor 11 Jahren.

    RE: onglets "guest"

    Regular Member Beiträge: 162 Beitrittsdatum: 11.07.08 Neueste Beiträge
    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, geändert vor 11 Jahren.

    RE: onglets "guest"

    Junior Member Beiträge: 78 Beitrittsdatum: 14.03.12 Neueste Beiträge
    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, geändert vor 11 Jahren.

    RE: onglets "guest"

    Regular Member Beiträge: 162 Beitrittsdatum: 11.07.08 Neueste Beiträge
    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, geändert vor 11 Jahren.

    RE: onglets "guest"

    Junior Member Beiträge: 78 Beitrittsdatum: 14.03.12 Neueste Beiträge
    non pardon je souhaite que l'onglet "welcome" disparaisse une fois que l'on est connecté ..
    comment faire ça ?
    Olivier Bonnet-Torrès, geändert vor 11 Jahren.

    RE: onglets "guest"

    Regular Member Beiträge: 162 Beitrittsdatum: 11.07.08 Neueste Beiträge
    #if (!$is_signed_in)
    ?
    virginie joussot, geändert vor 11 Jahren.

    RE: onglets "guest"

    Junior Member Beiträge: 78 Beitrittsdatum: 14.03.12 Neueste Beiträge
    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, geändert vor 11 Jahren.

    RE: onglets "guest"

    Junior Member Beiträge: 78 Beitrittsdatum: 14.03.12 Neueste Beiträge
    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., geändert vor 11 Jahren.

    RE: onglets "guest"

    Junior Member Beiträge: 44 Beitrittsdatum: 19.07.12 Neueste Beiträge
    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.