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 :
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 :
Démarche à suivre :
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 :
<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>
Vous pouvez maintenant :
Et vous pouvez visualisez avec pgAdminIII, la table openacademy_cours contenant ces différents enregistrements dans la base de données PostgreSLQ.