Outils pour utilisateurs

Outils du site


dev:openerp:creermodule:menu

Gérer des menus

Les actions et les menus sont des enregistrements dans la base de données. Ils déclarés dans les fichiers de données (data files). Les actions peuvent être déclaré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> déclaré dans 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 view/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
<?xml version="1.0" encoding="UTF-8"?>
<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>
 
        <!-- top level menu: no parent -->
        <menuitem id="main_openacademy_menu" name="Open Academy"/>
        <!-- A first level in the left side menu is needed
             before using action= attribute -->
        <menuitem id="openacademy_menu" name="Open Academy"
                  parent="main_openacademy_menu"/>
        <!-- the following menuitem should appear *after*
             its parent openacademy_menu and *after* its
             action course_list_action -->
        <menuitem id="cours_menu" name="Cours" parent="openacademy_menu"
                  action="cours_list_action"/>
        <!-- Full id location:
             action="openacademy.cours_list_action"
             It is not required when it is the same 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/openerp/creermodule/menu.txt · Dernière modification: 2015/12/10 11:22 (modification externe)