我正在开发自己的模型。我安装了文档模型。这个模型在表单的顶部给出了附件按钮。但我希望这个附件按钮只在我的模块。我想隐藏其他按钮在其他形式(其他模型)。所以我得到以下代码删除"创建和保存"为特定的模型。但这段代码对我不起作用。请告诉我具体型号附件按钮如何使用?如何隐藏其他模型?
openerp.web_smile_hide_buttons = function(openerp) {
// Models for which we'll hide create and duplicate buttons
var MODELS_TO_HIDE = ['kit.lab'];
// Hide the create button on all list views, which affect tree views and many2one pop-up search view
openerp.web.ListView.include({
start: function() {
var self = this;
var ret = this._super.apply(this, arguments);
var res_model = this.dataset.model;
if ($.inArray(res_model, MODELS_TO_HIDE) != -1) {
self.options.addable = false;
};
return ret;
},
});
// Hide the save button on form views
openerp.web.FormView.include({
on_loaded: function(data) {
var self = this;
var ret = this._super.apply(this, arguments);
var res_model = this.dataset.model;
// if ($.inArray(res_model, MODELS_TO_HIDE) != -1) {
this.$element.find('button.oe_dropdown_toggle.oe_dropdown_arrow').remove();
this.$element.find('button.oe_form_button_save').remove();
//};
return ret;
},
});
// Hide the create and duplicate button on all page views (i.e. read-only form views)
openerp.web.PageView.include({
on_loaded: function(data) {
var self = this;
var ret = this._super.apply(this, arguments);
var res_model = this.dataset.model;
if ($.inArray(res_model, MODELS_TO_HIDE) != -1) {
this.$element.find('button.oe_form_button_create').remove();
this.$element.find('button.oe_form_button_duplicate').remove();
};
return ret;
},
});
};
这个问题比较老,但我也遇到过同样的问题,并弄清楚了。这很可能不是最好的解决方案,但它有效。我假设你知道如何编写自定义模块,所以只需添加一个依赖于"文档"并创建自己的javascript(例如static/src/js/document.js,不要忘记将其包含在openerp.py中),内容如下:
openerp.document = function (instance) {
_t = instance.web._t;
instance.web.Sidebar.include({
init : function(){
this._super.apply(this, arguments);
if (window.location.href.indexOf('&model=res.partner') === -1)
this.sections.splice(1, 0, { 'name' : 'files', 'label' : _t('Attachment(s)'), });
this.items['files'] = [];
},
});
};
在本例中,"Attachment"按钮将隐藏在res.partner表单视图中。
也许其他人知道一个更好的方法来寻找当前模型相比我的解决方案,寻找字符串在window.location.href