Modifier le fichier

Documentation : Comment ajouter une entrée de menu dans le menu profil

Introduction

Cette documentation explique comment ajouter une nouvelle entrée dans le menu profil utilisateur géré par la classe ProfileMenuViewPreparer. Le menu profil est un composant qui affiche les options liées au compte utilisateur, comme la gestion des profils, l'accès à la page d'accueil, les paramètres et la déconnexion.

Architecture du menu profil

Le menu profil est basé sur une architecture de préparateurs de vue (ViewPreparer). La classe principale ProfileMenuViewPreparer gère le conteneur du menu, tandis que des classes spécifiques gèrent chaque entrée du menu.

Le système utilise des expectedViews pour chaque entrée du menu.

Étapes pour ajouter une nouvelle entrée au menu profil

1. Créer une classe pour la nouvelle entrée de menu

Créez une nouvelle classe qui étendra une classe de base appropriée pour les éléments de menu profil. Vous pouvez vous inspirer des classes existantes comme HomeItemMenuViewPreparer, SettingsItemMenuViewPreparer, etc.

package com.kosmos.menu.profile;

public class NouvelleEntreeMenuViewPreparer extends AbstractViewPreparer {
    protected String icon;

    protected int displayOrder;

    @Override
    public boolean accept(final FrontContext context) {
        return super.accept(final FrontContext context) && ....;
    }

    @Override
    public V prepare(final FrontContext context, final Map<String, List<IViewPreparer>> preparers) {
        final V viewModel = super.prepare(context, preparers);
        final QuickAccessMenu menuItem = new DefaultQuickAccessMenu();
        menuItem.setView(getView());
        menuItem.setTitle(MessageHelper.getCoreMessage("XXXXXXXXX"));
        menuItem.setIcon(icon);
        viewModel.setItem(menuItem);
        viewModel.setOrder(displayOrder);
        return viewModel;
    }

    public void setIcon(final String icon) {
        this.icon = icon;
    }

    public void setDisplayOrder(final int displayOrder) {
        this.displayOrder = displayOrder;
    }
}

2. Définir le bean dans la configuration Spring

Ajoutez un bean pour votre nouvelle entrée de menu dans le fichier de configuration Spring (généralement le même fichier où profileMenuViewPreparer est défini) :

<bean id="nouvelleEntreeItemMenuViewPreparer" class="com.kosmos.menu.profile.NouvelleEntreeMenuViewPreparer">
    <property name="type" value="userMenu-nouvelleEntree" />
    <property name="view" value="/WEB-INF/jsp/menu/nouvelleEntree.jsp" />
    <property name="icon" value="${FRONT_MENU_PROFILE_ICON_NOUVELLE_ENTREE:icon://ui/default-icon}"/>
    <property name="displayOrder" value="12"/>
    <!-- Ajoutez d'autres propriétés si nécessaire -->
</bean>

Paramètres importants

  • displayOrder : L'ordre d'affichage dans le menu (les valeurs plus petites s'affichent en premier)

3. Mettre à jour la liste des types de vues attendus

Modifiez le bean profileMenuViewPreparer pour ajouter votre nouveau type à la liste expectedViewTypes :

<bean id="profileMenuViewPreparer" class="com.kosmos.menu.profile.ProfileMenuViewPreparer">
    <property name="type" value="userMenu" />
    <property name="view" value="/WEB-INF/jsp/menu/profileMenu.jsp" />
    <property name="icon" value="${FRONT_MENU_PROFILE_ICON_USER}"/>
    <property name="expectedViewTypes">
        <list>
            <value>userMenu-profiles</value>
            <value>userMenu-home</value>
            <value>userMenu-settings</value>
            <value>userMenu-logout</value>
            <value>userMenu-nouvelleEntree</value> <!-- Ajoutez votre nouvelle entrée ici -->
        </list>
    </property>
</bean>

La liste peut également être modifiée via un bean ListToAddBean de la forme

    <bean class="com.kportal.core.context.ListToAddBean">
        <property name="idBeanToMerge" value="profileMenuViewPreparer"/>
        <property name="listToMerge" value="expectedViewTypes"/>
        <property name="add">
            <list>
                <value>userMenu-nouvelleEntree</value> <!-- Ajoutez votre nouvelle entrée ici -->
            </list>
        </property>
    </bean>

4. Créer la vue JSP associée

Créez le fichier JSP qui sera utilisé pour rendre votre entrée de menu :

<%-- Fichier: /WEB-INF/jsp/menu/nouvelleEntree.jsp --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<li class="menu-item">
    <a href="${targetUrl}" class="menu-link">
        <c:if test="${not empty icon}">
            <span class="menu-icon">
                <img src="${icon}" alt=""/>
            </span>
        </c:if>
        <spring:message code="menu.nouvelle.entree" />
    </a>
</li>

5. Ajouter les ressources de traduction

Ajoutez les clés de traduction dans vos fichiers de ressources pour supporter le multilinguisme :

# messages_fr.properties
menu.nouvelle.entree=Nouvelle Entrée

# messages_en.properties 
menu.nouvelle.entree=New Entry