我正在开发 Odoo 版本 15。
我创建了一个用于打开向导的新按钮。 我的自定义按钮位于标题中“创建”按钮附近。
让我分享我的代码。
这是我的JS代码
自定义_create.js
odoo.define('button_near_create.kanban_button_crm', function(require) {
"use strict";
var KanbanController = require('web.KanbanController');
var KanbanView = require('web.KanbanView');
var viewRegistry = require('web.view_registry');
var KanbanButton = KanbanController.extend({
buttons_template: 'button_near_create.button.crm',
events: _.extend({}, KanbanController.prototype.events, {
'click .open_wizard_action_kanban_crm': '_OpenWizardKanban',
}),
_OpenWizardKanban: function () {
this.do_action({
type: 'ir.actions.act_window',
res_model: 'contact.wizard',
name: 'Create Opportunity',
view_mode: 'form',
view_type: 'form',
views: [[false, 'form']],
target: 'new',
res_id: false,
context: {
'form_view_ref': 'et_crm.crm_create_wizard_form'
},
});
}
});
var ContactCreateKanbanController = KanbanView.extend({
config: _.extend({}, KanbanView.prototype.config, {
Controller: KanbanButton
}),
});
viewRegistry.add('button_in_kanban_crm', ContactCreateKanbanController);
});
crm_custom_create.xml
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-extend="KanbanView.buttons" t-name="button_near_create.button.crm">
<t t-jquery="button" t-operation="replace">
<button t-if="widget.modelName == 'crm.lead'"
class="btn btn-primary open_wizard_action_kanban_crm oe_highlight"
type="button">Search and Create</button>
</t>
</t>
</templates>
自定义_创建.xml
<odoo>
<record id="crm_lead_kanban_custom_create_inherit_js_class" model="ir.ui.view">
<field name="name">crm.lead.kanban.inherit</field>
<field name="model">crm.lead</field>
<field name="inherit_id" ref="crm.crm_case_kanban_view_leads"/>
<field name="arch" type="xml">
<xpath expr="//kanban" position="attributes">
<attribute name="js_class">button_in_kanban_crm</attribute>
</xpath>
</field>
</record>
</odoo>
清单.py
'data': [
'views/custom_create.xml',
'views/views.xml',
'wizards/custom_create_wizard_view.xml',
],
"assets": {
'web.assets_backend': [
'/et_crm/static/src/js/custom_create.js'
],
'web.assets_qweb': [
'/et_crm/static/src/xml/crm_custom_create.xml'
],
}
我对联系人看板视图使用了相同的逻辑,并且效果非常好。 联系看板视图
首先我找到了 Kanban.buttons 的源代码
<t t-name="KanbanView.buttons">
<div>
<button t-if="!noCreate" type="button" t-attf-class="btn #{btnClass} o-kanban-button-new" title="Create record" accesskey="c">
<t t-esc="create_text || _t('Create')"/>
</button>
</div>
我仍然不明白这种重复的原因,但是当我看到这个时,我尝试用不同的方法添加我的按钮。我改变了逻辑
-> 查找按钮 -> 添加按钮
到
-> 找到 div -> 添加按钮到里面
<templates id="template" xml:space="preserve">
<t t-extend="KanbanView.buttons" t-name="button_near_create.button.crm">
<t t-jquery="div" t-operation="prepend">
<button t-if="widget.modelName == 'crm.lead'"
class="btn btn-primary open_wizard_action_kanban_crm oe_highlight"
type="button">Search and Create</button>
</t>
</t>
</templates>