天天看點

odoo10在頂部“建立”按鈕附加增加自定義按鈕

HOW TO ADD BUTTON IN TREE VIEW HEADER NEAR “CREATE” AND “IMPORT” BUTTONS ODOO10

來自:https://supportuae.wordpress.com/2017/09/06/how-to-add-button-in-tree-view-header-near-create-and-import-buttons-odoo10/

1). I create some js script (tree_menu/static/src/js/tree_view_button.js) with click listener for my button :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

odoo.define(

'tree_menu.tree_view_button'

,

function

(require){

"use strict"

;

var

core = require(

'web.core'

);

var

ListView = require(

'web.ListView'

);

var

QWeb = core.qweb;

ListView.include({      

render_buttons:

function

($node) {

var

self =

this

;

this

._super($node);

this

.$buttons.find(

'.o_list_tender_button_create'

).click(

this

.proxy(

'tree_view_action'

));

},

tree_view_action:

function

() {          

this

.do_action({              

type:

"ir.actions.act_window"

,              

name:

"product"

,              

res_model:

"product.template"

,              

views: [[

false

,

'form'

]],              

target:

'current'

,              

view_type :

'form'

,              

view_mode :

'form'

,              

flags: {

'form'

: {

'action_buttons'

:

true

,

'options'

: {

'mode'

:

'edit'

}}}

});

return

{

'type'

:

'ir.actions.client'

,

'tag'

:

'reload'

, } }

});

});

2). After that, create tree_menu/static/src/xml/tree_view_button.xml with the template, which replaces “Create” button if I use project.project model

1 2 3 4 5 6 7 8 9

<?

xml

version

=

"1.0"

encoding

=

"UTF-8"

?>

<

template

id

=

"template"

xml:space

=

"preserve"

>      

&l

t

;t

t-extend

=

"ListView.buttons"

>                  

&l

t

;t

t-jquery

=

"button.o_list_button_add"

t-operation

=

"replace"

>                          

<

button

t-if

=

"widget.model == 'purchase.order'"

class

=

"btn btn-primary btn-sm o_list_tender_button_create"

type

=

"button"

>Create Tender</

button

>

<

button

t-if

=

"widget.model != 'purchase.order'"

class

=

"btn btn-primary btn-sm o_list_button_add"

type

=

"button"

>Create</

button

>

&l

t

;/t>      

&l

t

;/t>  

</

template

>

3). After that, add js script in web.asset_backend (Create file tree_menu/views/tree_view_asset.xml)

1 2 3 4 5 6 7 8 9 10

<?

xml

version

=

"1.0"

encoding

=

"utf-8"

?>  

<

odoo

>      

<

data

>          

<

template

id

=

"assets_backend"

name

=

"tree view menu"

inherit_id

=

"web.assets_backend"

>              

<

xpath

expr

=

"."

position

=

"inside"

>                  

<

script

type

=

"text/javascript"

src

=

"/tree_menu/static/src/js/tree_view_button.js"

></

script

>              

</

xpath

>          

</

template

>      

</

data

>  

</

odoo

>

4). And finally, add in __manifest__.py section ‘qweb’ for ‘qweb’: [‘static/src/xml/tree_view_button.xml’], and place file views/project.xml in ‘data’ section.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

{

'name': 'odoo10 Tree View JS Menu',

'version': '1.0',

'category': 'General',

'summary': 'odoo10 Tree View JS Menu',

'description': """ odoo10 Tree View JS Menu """,

'author': 'Ananthu',

'website': 'http://www.codersfort.com',

'depends': ['base','purchase','web'],

'data':[

'views/tree_view_asset.xml',

],

'qweb': ['static/src/xml/tree_view_button.xml'],      

'demo': [],

'installable': True,

'application': True,

'auto_install': False,

}