From 753f80e8519eeb9070e727544b452d38dfc6a309 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 23 May 2011 15:38:40 +0200 Subject: [PATCH] [FIX] Fixed file selector button hack for Firefox bzr revid: fme@openerp.com-20110523133840-slawlyaexyq4l3j1 --- addons/base/static/src/css/base.css | 2 +- addons/base/static/src/js/form.js | 17 ++++-- addons/base/static/src/xml/base.xml | 84 ++++++++++++++++++----------- 3 files changed, 66 insertions(+), 37 deletions(-) diff --git a/addons/base/static/src/css/base.css b/addons/base/static/src/css/base.css index 46db0ce49c4..def64cce1b3 100644 --- a/addons/base/static/src/css/base.css +++ b/addons/base/static/src/css/base.css @@ -628,7 +628,7 @@ body.openerp { /* http://www.quirksmode.org/dom/inputfile.html * http://stackoverflow.com/questions/2855589/replace-input-type-file-by-an-image */ -.openerp button.oe-binary-file-set { +.openerp .oe-binary-file-set { overflow: hidden; position: relative; } diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 6bb88ca039f..00f9db75469 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -1212,6 +1212,7 @@ openerp.base.form.FieldBinary = openerp.base.form.Field.extend({ start: function() { this._super.apply(this, arguments); this.$element.find('input.oe-binary-file').change(this.on_file_change); + this.$element.find('button.oe-binary-file-save').click(this.on_save_as); this.$element.find('.oe-binary-file-clear').click(this.on_clear); }, set_value_from_ui: function() { @@ -1225,14 +1226,16 @@ openerp.base.form.FieldBinary = openerp.base.form.Field.extend({ } return size.toFixed(2) + ' ' + units[i]; }, - on_file_change: function() { + on_file_change: function(e) { // TODO: on modern browsers, we could directly read the file locally on client ready to be used on image cropper // http://www.html5rocks.com/tutorials/file/dndfiles/ // http://deepliquid.com/projects/Jcrop/demos.php?demo=handler window[this.iframe] = this.on_file_uploaded; - this.$element.find('form.oe-binary-form input[name=session_id]').val(this.session.session_id); - this.$element.find('form.oe-binary-form').submit(); - this.toggle_progress(); + if ($(e.target).val() != '') { + this.$element.find('form.oe-binary-form input[name=session_id]').val(this.session.session_id); + this.$element.find('form.oe-binary-form').submit(); + this.toggle_progress(); + } }, toggle_progress: function() { this.$element.find('.oe-binary-progress, .oe-binary').toggle(); @@ -1251,6 +1254,12 @@ openerp.base.form.FieldBinary = openerp.base.form.Field.extend({ }, on_file_uploaded_and_valid: function(size, name, content_type, file_base64) { }, + on_save_as: function() { + var url = '/base/formview/saveas?session_id=' + this.session.session_id + '&model=' + + this.view.dataset.model +'&id=' + (this.view.datarecord.id || '') + '&field=' + this.name + + '&fieldname=' + (this.node.attrs.filename || '') + '&t=' + (new Date().getTime()) + window.open(url); + }, on_clear: function() { if (this.value !== false) { this.value = false; diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index 84cf6246dc1..ebe977742f5 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -416,19 +416,28 @@
- - - + + + + + +
+
+
+ + + + +
+
+
+ +