Sites


Lutece : guide développeur

Créer une fonctionnalité Back Office (AdminFeature)

Les fonctionnalités d'administration correspondent à l'ensemble des fonctions disponibles dans le module administrateur quelque soit son niveau d'accès : administrateur technique, webmestre ou intervenant local.

A chaque fonctionnalité correspond un droit qui peut être attribué à un utilisateur. Chaque droit est associé à un niveau pour distinguer les différents profils d'utilisateurs. Les valeurs des niveaux de droits sont les suivantes :

  • 0 - Administrateur technique
  • 1 - Producteur de contenu
  • 2 - Webmestre
  • 3 - Intervenant local

Lorsque l'utilisateur est autorisé à utiliser une fonctionnalité, elle s'affiche dans son menu d'accueil sous la forme d'un titre et d'une description. En cliquant sur le lien, l'utilisateur accède à la JSP qui est le point d'entrée de la fonctionnalité.

Cette JSP porte généralement un nom de type Manage<MyFeature>.jsp.

Dans le modèle MVC, explicité précédemment, cette JSP joue le rôle de point d'entrée du Controller. Comme préconisé dans Lutece, la JSP contient le minimum de code et délègue ses traitements à un JspBean, typiquement dénommé <MyFeature>JspBean.java.

Cette JSP doit ensuite être déclarée dans le fichier XML du plugin afin d'être enregistrée dans le système et apparaître dans les menus.

Voici comment tout cela se traduit en terme de code :

Code de la JSP

Le code de la JSP doit vérifier que l'utilisateur courant dispose du droit nécessaire, et si c'est le cas elle appelera la méthode du JspBean associé à la fonctionnalité (ex : getManageMyFeatureHome ) restituant la page d'accueil de celle-ci.

 <%@ page errorPage="../../ErrorPage.jsp" %>

<jsp:include page="../../AdminHeader.jsp" />

<jsp:useBean id="manageMyFeature" scope="session" class="fr.paris.lutece.plugins.myplugin.web.ManageMyFeatureJspBean" />

<% manageMyFeature.init( request, manageMyFeature.RIGHT_MANAGEMONPLUGIN ); %>
<%= manageMyFeature.getManageMyFeatureHome ( request ) %>

<%@ include file="../../AdminFooter.jsp" %>

Code du JspBean

/**
 * This class provides the the feature MyFeature
 */
@Controller( controllerJsp = "ManageMyFeature.jsp", controllerPath = "jsp/admin/plugins/myplugin/", right = "MYFEATURE_MANAGEMENT" )
public class MyFeatureJspBean extends MVCAdminJspBean
{
    // Templates
    private static final String TEMPLATE_MANAGE_MYFEATURE = "/admin/plugins/myplugin/manage_myfeature.html";

    // Views
    private static final String VIEW_MANAGE_MYFEATURE = "manageMyFeature";

// Markers
    private static final String MARK_OBJECT1 = "object1";

    // Properties for page titles
    private static final String PROPERTY_PAGE_TITLE_MYFEATURE = "myplugin.manage_myfeature.pageTitle";


    /**
     * Build the Manage View
     * @param request The HTTP request
     * @return The page
     */
    @View( value = VIEW_MANAGE_MYFEATURE, defaultView = true )
    public String getManageMyFeatureHome( HttpServletRequest request )
    {
// Get a model object that contains already default data (errors list, ...)
        Map<String, Object> model = getModel();

// Put some new objects in the model
model.put( MARK_OBJECT1, object1 );
...

        return getPage( PROPERTY_PAGE_TITLE_MYFEATURE, TEMPLATE_MANAGE_MYFEATURE, model );
    }

...

}

Définition d'une fonctionnalité d'administration dans le fichier de configuration d'un plugin

Pour installer une nouvelle fonctionnalité, celle-ci doit être "packagée" dans un plugin.

La définition de la fonctionnalité dans le fichier de configuration du plugin se fait par l'ajout des lignes suivantes :

<admin-feature>
   <feature-id>MYFEATURE_MANAGEMENT</feature-id>
   <feature-title>My Feature</feature-title>
   <feature-description>Description of my feature</feature-description>
   <feature-level>3</feature-level>
   <feature-url>plugins/myplugin/ManageMyFeature.jsp</feature-url>
</admin-feature>

Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.

Vous devriez rafraîchir la page.