diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css
index eaba96e771a..b65f4da557a 100644
--- a/addons/web/static/src/css/base.css
+++ b/addons/web/static/src/css/base.css
@@ -1097,6 +1097,29 @@
.openerp .oe_sidebar {
white-space: nowrap;
}
+.openerp .oe_sidebar .oe_sidebar_add_attachment {
+ cursor: pointer;
+ padding-left: 6px;
+ margin-top: 6px;
+}
+.openerp .oe_sidebar .oe_sidebar_add_attachment span {
+ font-weight: bold;
+}
+.openerp .oe_sidebar .oe_sidebar_add_attachment .oe_hidden_input_file {
+ width: 200px;
+}
+.openerp .oe_sidebar .oe_sidebar_add_attachment:hover {
+ background-color: #f0f0fa;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0fa), to(#eeeef6));
+ background-image: -webkit-linear-gradient(top, #f0f0fa, #eeeef6);
+ background-image: -moz-linear-gradient(top, #f0f0fa, #eeeef6);
+ background-image: -ms-linear-gradient(top, #f0f0fa, #eeeef6);
+ background-image: -o-linear-gradient(top, #f0f0fa, #eeeef6);
+ background-image: linear-gradient(to bottom, #f0f0fa, #eeeef6);
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
.openerp .oe_searchview {
cursor: text;
position: relative;
diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass
index 00fbbb80c58..7208834a887 100644
--- a/addons/web/static/src/css/base.sass
+++ b/addons/web/static/src/css/base.sass
@@ -877,6 +877,17 @@ $colour4: #8a89ba
@include box-shadow(none)
.oe_sidebar
white-space: nowrap
+ .oe_sidebar_add_attachment
+ cursor: pointer
+ padding-left: 6px
+ margin-top: 6px
+ span
+ font-weight: bold
+ .oe_hidden_input_file
+ width: 200px
+ &:hover
+ @include vertical-gradient(#f0f0fa, #eeeef6)
+ @include box-shadow(none)
// }}}
// SearchView {{{
.oe_searchview
diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index 753e14fa251..5be69760f80 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -696,6 +696,7 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({
instance.web.Sidebar = instance.web.Widget.extend({
init: function(parent) {
+ var self = this;
this._super(parent);
var view = this.getParent();
this.sections = [
@@ -712,6 +713,16 @@ instance.web.Sidebar = instance.web.Widget.extend({
var item = { label: _t("Translate"), callback: view.on_sidebar_translate, title: _t("Technical translation") };
this.items.other.push(item);
}
+ this.fileupload_id = _.uniqueId('oe_fileupload');
+ $(window).on(this.fileupload_id, function() {
+ var args = [].slice.call(arguments).slice(1);
+ if (args[0] && args[0].error) {
+ alert(args[0].error);
+ } else {
+ self.do_attachement_update(self.dataset, self.model_id);
+ }
+ $.unblockUI();
+ });
},
start: function() {
var self = this;
@@ -735,9 +746,6 @@ instance.web.Sidebar = instance.web.Widget.extend({
}
return false;
});
- //this.$div.html(QWeb.render('FormView.sidebar.attachments', this));
- //this.$element.find('.oe-binary-file').change(this.on_attachment_changed);
- //this.$element.find('.oe-sidebar-attachment-delete').click(this.on_attachment_delete);
},
redraw: function() {
var self = this;
@@ -826,6 +834,8 @@ instance.web.Sidebar = instance.web.Widget.extend({
});
},
do_attachement_update: function(dataset, model_id) {
+ this.dataset = dataset;
+ this.model_id = model_id;
if (!model_id) {
this.on_attachments_loaded([]);
} else {
@@ -837,29 +847,26 @@ instance.web.Sidebar = instance.web.Widget.extend({
on_attachments_loaded: function(attachments) {
var self = this;
var items = [];
- // TODO: preprend: _s +
- var prefix = '/web/binary/saveas?session_id=' + self.session.session_id + '&model=ir.attachment&field=datas&filename_field=name&id=';
+ var prefix = this.session.origin + '/web/binary/saveas?session_id=' + self.session.session_id + '&model=ir.attachment&field=datas&filename_field=name&id=';
_.each(attachments,function(a) {
a.label = a.name;
if(a.type === "binary") {
a.url = prefix + a.id + '&t=' + (new Date().getTime());
}
});
- attachments.push( { label: _t("Add..."), callback: self.on_attachment_add } );
self.items['files'] = attachments;
self.redraw();
- },
- on_attachment_add: function(e) {
- this.$element.find('.oe_sidebar_add').show();
+ this.$('.oe_sidebar_add_attachment .oe-binary-file').change(this.on_attachment_changed);
+ //this.$element.find('.oe-sidebar-attachment-delete').click(this.on_attachment_delete);
},
on_attachment_changed: function(e) {
- return;
- window[this.element_id + '_iframe'] = this.do_update;
var $e = $(e.target);
- if ($e.val() != '') {
+ if ($e.val() !== '') {
this.$element.find('form.oe-binary-form').submit();
$e.parent().find('input[type=file]').prop('disabled', true);
$e.parent().find('button').prop('disabled', true).find('img, span').toggle();
+ this.$('.oe_sidebar_add_attachment span').text(_t('Uploading...'));
+ $.blockUI();
}
},
on_attachment_delete: function(e) {
diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml
index 27660e7bc66..d0f3a235323 100644
--- a/addons/web/static/src/xml/base.xml
+++ b/addons/web/static/src/xml/base.xml
@@ -517,49 +517,25 @@