javascript - 从 odoo 的 pdf_viewer 小部件中删除下载按钮

标签 javascript python widget odoo pdf-viewer

我正在尝试禁用 Odoo 附件预览小部件 (Pdf_viewer) 中的下载按钮,如下面的代码所示:

 <field name="preview" attrs="{'readonly': [('preview', '=', True)]}" widget="pdf_viewer" />

PS:我尝试将该字段设置为只读,但仍然为读者提供整个文件。

enter image description here

我得到了一位 friend 的帮助,他建议更改包含此按钮模板的 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 文件,并将其添加到 list 文件中的 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 中列出了这些步骤部分。欲了解更多详情,请查看Assets Management文档。

关于javascript - 从 odoo 的 pdf_viewer 小部件中删除下载按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67386265/

相关文章:

javascript - 有条件地渲染一个 react 组件

linux - 如何使用 x 资源删除 x 窗口程序中的小部件边框?

android - 如何访问 Widget 中的 ViewFlipper 以动态填充其内容?

javascript - 无法在哈巴狗上显示图像

javascript - Mootools:拒绝设置不安全 header "Connection"

python - 如何跟踪执行中的父/子交易

python - 如何使用 itertools.groupby 格式化字典列表?

Javascript 和 Python JSON - 变量未定义

c++ - 关于列表项及其类设计的看法

javascript - 将信息发送到数据库而无需重新加载页面