From 8401b686b6bcac4cc44cf0c6790784e8316da2b9 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 13 Jun 2012 16:10:16 +0200 Subject: [PATCH] [FIX] Brought back attachments bzr revid: fme@openerp.com-20120613141016-8m2mj4b7d9zzk7a5 --- addons/web/static/src/css/base.css | 23 +++++++++++++ addons/web/static/src/css/base.sass | 11 ++++++ addons/web/static/src/js/views.js | 31 ++++++++++------- addons/web/static/src/xml/base.xml | 52 ++++++++--------------------- 4 files changed, 67 insertions(+), 50 deletions(-) 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 @@ + -
  • + + + /web/binary/upload_attachment + + + + Add... +
  • - -
    -
    -
    - - - - - - -
    -