从 odoo 的 pdf_viewer 小部件中删除下载按钮
Remove download button from odoo's pdf_viewer widget
我正在尝试禁用位于 Odoo (Pdf_viewer) 附件预览小部件中的下载按钮,您可以在下面的代码中看到:
<field name="preview" attrs="{'readonly': [('preview', '=', True)]}" widget="pdf_viewer" />
PS:我试图将字段设置为只读,但仍然为 reader 提供整个文件。
我从一个朋友那里得到了一点帮助,建议我更改包含此按钮模板的 JS 文件,但我不知道这样做的步骤!
感谢您的帮助。
您可以覆盖 _disableButtons 函数并隐藏下载按钮。
示例:
var basic_fields = require('web.basic_fields');
basic_fields.FieldPdfViewer.include({
_disableButtons: function (iframe) {
$(iframe).contents().find('button#download').hide();
// $(iframe).contents().find('button#secondaryDownload').hide();
this._super(iframe);
},
});
如果您需要使用上下文属性控制下载按钮的可见性,请尝试以下代码:
var basic_fields = require('web.basic_fields');
var Context = require('web.Context');
basic_fields.FieldPdfViewer.include({
_disableButtons: function (iframe) {
var self = this;
if (self.attrs.context) {
var context = new Context(self.attrs.context).eval();
if(!context.download) {
$(iframe).contents().find('button#download').hide();
// $(iframe).contents().find('button#secondaryDownload').hide();
}
}
this._super(iframe);
},
});
编辑:
创建一个包含以下内容的 XML 文件并将其添加到清单文件中的 data
条目:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="assets_backend" inherit_id="web.assets_backend" name="assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript"
src="/module_name/static/src/js/pdf_viewser.js"></script>
</xpath>
</template>
</data>
</odoo>
在static/src/js
下创建pdf_viewser.js
并添加上面的代码:
odoo.define('module_name.PDFViewer', function (require) {
"use strict";
var basic_fields = require('web.basic_fields');
basic_fields.FieldPdfViewer.include({
_disableButtons: function (iframe) {
$(iframe).contents().find('button#download').hide();
// $(iframe).contents().find('button#secondaryDownload').hide();
this._super(iframe);
},
});
});
Adding files in an asset bundle section. For more details check the Assets Management 文档中列出了这些步骤。
我正在尝试禁用位于 Odoo (Pdf_viewer) 附件预览小部件中的下载按钮,您可以在下面的代码中看到:
<field name="preview" attrs="{'readonly': [('preview', '=', True)]}" widget="pdf_viewer" />
PS:我试图将字段设置为只读,但仍然为 reader 提供整个文件。
我从一个朋友那里得到了一点帮助,建议我更改包含此按钮模板的 JS 文件,但我不知道这样做的步骤! 感谢您的帮助。
您可以覆盖 _disableButtons 函数并隐藏下载按钮。
示例:
var basic_fields = require('web.basic_fields');
basic_fields.FieldPdfViewer.include({
_disableButtons: function (iframe) {
$(iframe).contents().find('button#download').hide();
// $(iframe).contents().find('button#secondaryDownload').hide();
this._super(iframe);
},
});
如果您需要使用上下文属性控制下载按钮的可见性,请尝试以下代码:
var basic_fields = require('web.basic_fields');
var Context = require('web.Context');
basic_fields.FieldPdfViewer.include({
_disableButtons: function (iframe) {
var self = this;
if (self.attrs.context) {
var context = new Context(self.attrs.context).eval();
if(!context.download) {
$(iframe).contents().find('button#download').hide();
// $(iframe).contents().find('button#secondaryDownload').hide();
}
}
this._super(iframe);
},
});
编辑:
创建一个包含以下内容的 XML 文件并将其添加到清单文件中的 data
条目:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="assets_backend" inherit_id="web.assets_backend" name="assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript"
src="/module_name/static/src/js/pdf_viewser.js"></script>
</xpath>
</template>
</data>
</odoo>
在static/src/js
下创建pdf_viewser.js
并添加上面的代码:
odoo.define('module_name.PDFViewer', function (require) {
"use strict";
var basic_fields = require('web.basic_fields');
basic_fields.FieldPdfViewer.include({
_disableButtons: function (iframe) {
$(iframe).contents().find('button#download').hide();
// $(iframe).contents().find('button#secondaryDownload').hide();
this._super(iframe);
},
});
});
Adding files in an asset bundle section. For more details check the Assets Management 文档中列出了这些步骤。