3. eq_letter View
Der folgende Code erstellt ein neues Menü auf der obersten Ebene.
Datei= eq_letter/views/views.xml
<odoo> <data> <record model="ir.actions.act_window" id="eq_letter_menu_action"> <field name="name">eq_letter_menu_action</field> <field name="res_model">eq_letter</field> </record> <menuitem id="eq_letter_menu" name="eq_letter" action="eq_letter_menu_action"/> </data> </odoo>
Das Ergebnis sieht dann so aus.
Mit dem sequence Parameter lässt sich die Reihenfolge der Menüeinträge bestimmen. Je höher die Zahl umso niegrieger die Priorität.
<menuitem id="eq_letter_menu" name="eq_letter" action="eq_letter_menu_action" sequence="1000"/>
Das bisher gezeigt ist sehr rudimentär, zum Beispiel funktioniert der Create Button nicht. Dies ändert sich mit den folgenden erweiterungen.
<record model="ir.actions.act_window" id="eq_letter_menu_action"> <field name="name">EQ Letter</field> <field name="res_model">eq_letter</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"> Click here to create your letter. </p> </field> </record>
Der "view_type" ist in diesem Fall form. Alternativ kann auch list verwendet werden.
- form gibt eine Listenansicht sobald Datensätze vorhanden sind zusätzlich kann zu einer Formularansicht gewechselt werden.
- list gibt ebenfalls eine Listenansicht jedoch kann zu keiner anderen Ansicht gewechselt werden
Definieren der Formview:
<record model="ir.ui.view" id="eq_letter_form_view"> <field name="name">eq_letter_form</field> <field name="model">eq_letter</field> <field name="arch" type="xml"> <form string="test"> <group> <field name="eq_res_partner"/> <field name="eq_date"/> <field name="eq_subject"/> <field name="eq_body"/> <field name="eq_state"/> </group> </form> </field> </record>
Das group tag ist notwendig um das label anzuzeigen(das Stringattribut im model eq_date = fields.Date(string="date")).
Zum besseren Verständnis bennen wir views/views.xml in views/eq_letter.xml um. Die ist notwendig da noch andere views hinzukommen werden und damit die Übersicht gewahrt bleibt.
Als nächstes wird das Menü erweitert. Das Modul erhält sein eigenes Untermenü. Diues geschieht in der eben umbenannten Datei.
<menuitem id="eq_letter_menu" name="letters" action="eq_letter_menu_action" parent="eq_letter_top_menu"/> <menuitem id="eq_letter_top_menu" name="eq_letter"/>
Was vorher "eq_letter" war dient jetzt nur noch Zugang zu den Unterpunkten des Moduls. Als Unterpunkt wurde "letters" erstellt, unt welchem jetzt die action ausgelöst wird. Damit "letters" ein Unterpunkt wird muss "eq_letters" als parent definiert werden.
Endprodukt:
Laut Bild gibt es einen weiteren Unterpunkt namens states. Diesen legen wir als nächstes an.
Wir benötigen dafür eine .xml Datei die unter views/eq_letter_state.xml erzeugt wird.
Der Inhalt von eq_letter.xml wird kopiert und abgeändert.
<odoo> <data> <record model="ir.ui.view" id="eq_letter_state_form_view"> <field name="name">eq_letter_state_form</field> <field name="model">eq_letter_state</field> <field name="arch" type="xml"> <form string="test"> <group> <field name="eq_state"/> </group> </form> </field> </record> <record model="ir.actions.act_window" id="eq_letter_state_menu_action"> <field name="name">EQ Letter State</field> <field name="res_model">eq_letter_state</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"> Click here to create a new state. </p> </field> </record> <menuitem id="eq_letter_state_menu" name ="states" action ="eq_letter_state_menu_action" parent="eq_letter_menu_top" sequence="1000"/> </data> </odoo>
Als nächstes möchten wir die treeview von eq.letter.state ändern. Es soll der entsprechende Status des Briefes angezeigt werden, nicht dessen ID. Hierzu fügen wir den folgenden Code in views/eq_letter_state.xml
<record model="ir.ui.view" id="eq_letter_state_tree_view"> <field name="name">EQ Letter States</field> <field name="model">eq.letter.state</field> <field name="arch" type="xml"> <tree string="States"> <field name="eq_state"/> </tree> </field> </record>
Dies führt zu diesem Ergebnis.