From a37bbf563c66583c4143eec8979624b5e327107e Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Mon, 22 Sep 2014 17:42:08 +0200 Subject: [PATCH] [ADD] allow previewing binary fields on forms [FIX] error on list views without binary fields --- .../static/src/css/attachment_preview.css | 5 ++ .../static/src/js/attachment_preview.js | 50 +++++++++++++++++++ .../static/src/xml/attachment_preview.xml | 5 ++ 3 files changed, 60 insertions(+) diff --git a/attachment_preview/static/src/css/attachment_preview.css b/attachment_preview/static/src/css/attachment_preview.css index 02df1264..90f25f6e 100644 --- a/attachment_preview/static/src/css/attachment_preview.css +++ b/attachment_preview/static/src/css/attachment_preview.css @@ -19,3 +19,8 @@ -webkit-border-radius: 2px; border-radius: 2px; } +.openerp .oe-binary-preview +{ + cursor: pointer; + vertical-align: middle; +} diff --git a/attachment_preview/static/src/js/attachment_preview.js b/attachment_preview/static/src/js/attachment_preview.js index 42697ef2..51c6ef06 100644 --- a/attachment_preview/static/src/js/attachment_preview.js +++ b/attachment_preview/static/src/js/attachment_preview.js @@ -126,6 +126,10 @@ openerp.attachment_preview = function(instance) deferred.then(function() { var $elements = self.$el.find('.oe-binary-preview'); + if(!$elements.length) + { + return; + } $elements.click(function(e) { e.stopPropagation(); @@ -187,4 +191,50 @@ openerp.attachment_preview = function(instance) return link; } }); + instance.web.form.FieldBinaryFile.include( + { + render_value: function() + { + this._super.apply(this, arguments); + if(this.get("effective_readonly") && this.get('value')) + { + var self = this; + (new instance.web.Model('ir.attachment')).call( + 'get_binary_extension', [ + this.view.dataset.model, + this.view.datarecord.id ? [this.view.datarecord.id] : [], + this.name, + this.node.attrs.filename, + ], + {}) + .then(function(extensions) + { + _(extensions).each(function(extension) + { + var $element = self.$el.find('.oe-binary-preview'); + if(openerp.attachment_preview.can_preview(extension)) + { + $element.click(function() + { + openerp.attachment_preview.show_preview( + null, + _.str.sprintf( + '/web/binary/saveas?session_id=%s&model=%s&field=%s&id=%d', + instance.session.session_id, + self.view.dataset.model, + self.name, + self.view.datarecord.id), + extension, + self.view.datarecord[self.node.attrs.filename]); + }); + } + else + { + $element.remove(); + } + }); + }); + } + }, + }); } diff --git a/attachment_preview/static/src/xml/attachment_preview.xml b/attachment_preview/static/src/xml/attachment_preview.xml index d345741b..c72dc3bb 100644 --- a/attachment_preview/static/src/xml/attachment_preview.xml +++ b/attachment_preview/static/src/xml/attachment_preview.xml @@ -7,4 +7,9 @@ + + + + +