Outils pour utilisateurs

Outils du site


dev:odoo:creermodule:menu

Gérer des menus

Les actions et les menus sont des enregistrements dans la base de données. Ils sont déclarés dans les fichiers de données (data files). Les actions peuvent être déclenchées de trois manières :

  1. en cliquant sur un item d'un menu (lié à une action spécifique) ;
  2. en cliquant sur le bouton d'une vue (lié à une action) ;
  3. dans le menu contextuel d'un objet.

Comme les menus peuvent être complexes à déclarer, vous pouvez utiliser l'élément <menuitem> pour créer un ir.ui.menu et le lier à l'action correspondante ; ce qui est plus facile à réaliser.

<record model="ir.actions.act_window" id="action_list_ideas">
    <field name="name">Ideas</field>
    <field name="res_model">idea.idea</field>
    <field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_ideas" parent="menu_root" name="Ideas" sequence="10"
          action="action_list_ideas"/>

Attention :

Les actions doivent être déclarées avant qu'un menu y fasse référence dans le fichier XML.

Les fichiers de données sont exécutés séquentiellement ; l'id de l'action doit être présent dans la base de données avant que le menu ne puisse être créé.

Exercice définir des entrées de menu :

Définissez de nouvelles entrées de menu pour accéder aux cours et aux sessions de formation sous l'entrée de menu du module Open Academy. L'utilisateur doit pouvoir :

  • afficher la liste de cours ;
  • créer et modifier des cours.

Démarche à suivre :

  1. Créez un sous dossier views contenant le fichier openacademy.xml ;
  2. définissez dans ce fichier views/openacademy.xml une action et les menus qui vont déclencher cette action ;
  3. rajouter le nom de ce fichier de données dans le fichier manifest __openerp__.py à la rubrique data.

Modifier le contenu du fichier manifest __openerp__.py :

    'data': [
        # 'security/ir.model.access.csv',
        'templates.xml',
        'views/openacademy.xml',
    ],
    # only loaded in demonstration mode
    'demo': [...

Contenu du fichier views/openacademy.xml :

openacademy.xml
<openerp>
    <data>
        <!-- window action -->
        <!--
            The following tag is an action definition for a "window action",
            that is an action opening a view or a set of views
        -->
        <record model="ir.actions.act_window" id="cours_list_action">
            <field name="name">Cours</field>
            <field name="res_model">openacademy.cours</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
            <field name="help" type="html">
                <p class="oe_view_nocontent_create">Créer le premier cours
                </p>
            </field>
        </record>
 
        <!-- Menu principal dans la barre principal : aucun parent -->
        <menuitem id="main_openacademy_menu" name="Open Academy"/>
        <!-- Premier niveau de menu dans le bandeau de gauche
             lie au menu principal precedent -->
        <menuitem id="openacademy_menu" name="Open Academy"
                  parent="main_openacademy_menu"/>
        <!-- un item de menu qui apparaitra apres son parent openacademy_menu
             et ensuite on declare l'action  associe : course_list_action -->
        <menuitem id="cours_menu" name="Cours" parent="openacademy_menu"
                  action="cours_list_action"/>
        <!-- le nom complet de l'action associée devrait etre  
             action="openacademy.cours_list_action"
             Mais cela n'est pas nécessaire quand il est défini dans le meme module -->
    </data>
</openerp>
  • Mettez à jour votre module pour visualiser le module Open Academy dans la barre des modules et, en cliquant sur ce module, le menu que vous venez de créer apparaître à gauche :

Vous pouvez maintenant :

  • créer de nouveau enregistrement ;
  • les modifier ;
  • les supprimer.

Et vous pouvez visualisez avec pgAdminIII, la table openacademy_cours contenant ces différents enregistrements dans la base de données PostgreSLQ.

Retour au sommaire de création d'un module

dev/odoo/creermodule/menu.txt · Dernière modification: 2019/11/20 10:38 de techer.charles_educ-valadon-limoges.fr