[ADD] allow previewing binary fields

This commit is contained in:
Holger Brunn 2014-09-18 11:53:09 +02:00
parent d48e89314d
commit c58d6411d5
3 changed files with 58 additions and 1 deletions

View File

@ -14,3 +14,8 @@
{ {
display: inherit; display: inherit;
} }
.openerp .oe_form_field_binary .oe-binary-preview
{
cursor: pointer;
vertical-align: middle;
}

View File

@ -21,13 +21,14 @@
openerp.attachment_preview = function(instance) openerp.attachment_preview = function(instance)
{ {
var _t = instance.web._t;
openerp.attachment_preview.show_preview = function( openerp.attachment_preview.show_preview = function(
attachment_id, attachment_url, attachment_extension, attachment_title) attachment_id, attachment_url, attachment_extension, attachment_title)
{ {
var url = window.location.origin + var url = window.location.origin +
'/attachment_preview/static/lib/ViewerJS/index.html#' + '/attachment_preview/static/lib/ViewerJS/index.html#' +
attachment_url.replace(window.location.origin, '') + attachment_url.replace(window.location.origin, '') +
'&title=' + encodeURIComponent(attachment_title) + '&title=' + encodeURIComponent(attachment_title || _t('Preview')) +
'&ext=.' + encodeURIComponent(attachment_extension); '&ext=.' + encodeURIComponent(attachment_extension);
window.open(url); window.open(url);
}; };
@ -113,4 +114,48 @@ openerp.attachment_preview = function(instance)
}); });
}, },
}); });
instance.web.page.FieldBinaryFileReadonly.include(
{
set_value: function(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.$element.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.connection.session_id,
self.view.dataset.model,
self.name,
self.view.datarecord.id),
extension,
self.view.datarecord[self.node.attrs.filename]);
});
}
else
{
$element.remove();
}
});
});
return this._super.apply(this, arguments);
},
});
} }

View File

@ -7,4 +7,11 @@
</a> </a>
</t> </t>
</t> </t>
<t t-extend="FieldURI.readonly">
<t t-jquery="a.oe_form_uri" t-operation="after">
<t t-if="widget.on_save_as">
<img class="oe-binary-preview" t-att-src='_s + "/web/static/src/img/icons/gtk-print-preview.png"'/>
</t>
</t>
</t>
</templates> </templates>