summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/view_form.js63
-rw-r--r--addons/web/static/src/js/views.js62
-rw-r--r--addons/web/static/src/xml/base.xml70
3 files changed, 90 insertions, 105 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index 5b63ec3506d..a3f0d82bb63 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -112,7 +112,6 @@ openerp.web.FormView = openerp.web.View.extend({
if (!this.sidebar && this.options.sidebar) {
this.sidebar = new openerp.web.Sidebar(this);
this.sidebar.appendTo(this.$sidebar);
- //this.sidebar.attachments = new openerp.web.form.SidebarAttachments(this.sidebar, this);
this.sidebar.add_toolbar(this.fields_view.toolbar);
this.sidebar.add_items('other', [{
label: _t('Set Default'),
@@ -269,7 +268,7 @@ openerp.web.FormView = openerp.web.View.extend({
self.is_initialized.resolve();
self.do_update_pager(record.id == null);
if (self.sidebar) {
- // self.sidebar.attachments.do_update();
+ self.sidebar.do_attachement_update(self.dataset, self.datarecord.id);
}
if (self.default_focus_field) {
self.default_focus_field.focus();
@@ -697,12 +696,12 @@ openerp.web.FormView = openerp.web.View.extend({
this.dataset.alter_ids(this.dataset.ids.concat([this.datarecord.id]));
this.dataset.index = this.dataset.ids.length - 1;
} else {
- this.dataset.alter_ids([this.datarecord.id].concat(this.dataset.ids));
+ this.dataset.alter_ids([this.datarecord.id].concat(this.dataset.ids));
this.dataset.index = 0;
}
this.do_update_pager();
if (this.sidebar) {
- // this.sidebar.attachments.do_update();
+ this.sidebar.do_attachement_update(this.dataset, this.datarecord.id);
}
//openerp.log("The record has been created with id #" + this.datarecord.id);
this.reload();
@@ -1221,62 +1220,6 @@ openerp.web.form.FormDialog = openerp.web.Dialog.extend({
}
});
-
-openerp.web.form.SidebarAttachments = openerp.web.Widget.extend({
- init: function(parent, form_view) {
- //var $section = parent.add_section(_t('Attachments'), 'attachments');
- //this.$div = $('<div class="oe-sidebar-attachments"></div>');
- //$section.append(this.$div);
- this._super(parent);
- this.view = form_view;
- },
- do_update: function() {
- return;
- if (!this.view.datarecord.id) {
- this.on_attachments_loaded([]);
- } else {
- (new openerp.web.DataSetSearch(
- this, 'ir.attachment', this.view.dataset.get_context(),
- [
- ['res_model', '=', this.view.dataset.model],
- ['res_id', '=', this.view.datarecord.id],
- ['type', 'in', ['binary', 'url']]
- ])).read_slice(['name', 'url', 'type'], {}).then(this.on_attachments_loaded);
- }
- },
- on_attachments_loaded: function(attachments) {
- return;
- this.attachments = attachments;
- 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);
- },
- on_attachment_changed: function(e) {
- return;
- window[this.element_id + '_iframe'] = this.do_update;
- var $e = $(e.target);
- 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();
- }
- },
- on_attachment_delete: function(e) {
- return;
- var self = this, $e = $(e.currentTarget);
- var name = _.str.trim($e.parent().find('a.oe-sidebar-attachments-link').text());
- if (confirm(_.str.sprintf(_t("Do you really want to delete the attachment %s?"), name))) {
- this.rpc('/web/dataset/unlink', {
- model: 'ir.attachment',
- ids: [parseInt($e.attr('data-id'))]
- }, function(r) {
- $e.parent().remove();
- self.do_notify("Delete an attachment", "The attachment '" + name + "' has been deleted");
- });
- }
- }
-});
-
openerp.web.form.compute_domain = function(expr, fields) {
var stack = [];
for (var i = expr.length - 1; i >= 0; i--) {
diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index 78f365c1a16..55e87c06904 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -727,8 +727,6 @@ session.web.Sidebar = session.web.Widget.extend({
init: function(parent) {
this._super(parent);
var view = this.getParent();
- var view_manager = view.getParent();
- var action = view_manager.action;
this.sections = [
{ 'name' : 'print', 'label' : _t('Print'), },
{ 'name' : 'files', 'label' : _t('Attachement'), },
@@ -763,21 +761,22 @@ session.web.Sidebar = session.web.Widget.extend({
var item = self.items[section][index];
if (item.callback) {
item.callback.apply(self, [item]);
- }
- if (item.action) {
+ } else if (item.action) {
self.on_item_action_clicked(item);
+ } else if (item.url) {
+ return true;
}
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;
self.$element.html(QWeb.render('Sidebar', {widget: self}));
this.$element.find('ul').hide();
},
- add_default_sections: function() {
- var self = this;
- },
add_section: function() {
var self = this;
},
@@ -857,6 +856,52 @@ session.web.Sidebar = session.web.Widget.extend({
});
});
},
+ do_attachement_update: function(dataset, model_id) {
+ if (!model_id) {
+ this.on_attachments_loaded([]);
+ } else {
+ var dom = [ ['res_model', '=', dataset.model], ['res_id', '=', model_id], ['type', 'in', ['binary', 'url']] ];
+ var ds = new session.web.DataSetSearch(this, 'ir.attachment', dataset.get_context(), dom);
+ ds.read_slice(['name', 'url', 'type'], {}).then(this.on_attachments_loaded);
+ }
+ },
+ 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=';
+ _.each(attachments,function(a) {
+ a.label = a.name;
+ if(a.type === "binary") {
+ a.url = prefix + a.id + '&t=' + (new Date().getTime());
+ }
+ });
+ this.add_items('files', attachments);
+ },
+ on_attachment_changed: function(e) {
+ return;
+ window[this.element_id + '_iframe'] = this.do_update;
+ var $e = $(e.target);
+ 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();
+ }
+ },
+ on_attachment_delete: function(e) {
+ return;
+ var self = this, $e = $(e.currentTarget);
+ var name = _.str.trim($e.parent().find('a.oe-sidebar-attachments-link').text());
+ if (confirm(_.str.sprintf(_t("Do you really want to delete the attachment %s?"), name))) {
+ this.rpc('/web/dataset/unlink', {
+ model: 'ir.attachment',
+ ids: [parseInt($e.attr('data-id'))]
+ }, function(r) {
+ $e.parent().remove();
+ self.do_notify("Delete an attachment", "The attachment '" + name + "' has been deleted");
+ });
+ }
+ }
});
session.web.TranslateDialog = session.web.Dialog.extend({
@@ -1147,9 +1192,6 @@ session.web.View = session.web.Widget.extend({
},
do_search: function(view) {
},
- set_common_sidebar_sections: function(sidebar) {
- sidebar.add_default_sections();
- },
on_sidebar_import: function() {
var import_view = new session.web.DataImport(this, this.dataset);
import_view.start();
diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml
index fdf5a5a7b5f..0df4ca71777 100644
--- a/addons/web/static/src/xml/base.xml
+++ b/addons/web/static/src/xml/base.xml
@@ -515,7 +515,7 @@
<button class="oe_dropdown_toggle"><t t-esc="section.label"/></button>
<ul class="oe_dropdown_menu">
<li t-foreach="widget.items[section.name]" t-as="item" t-att-class="item.classname">
- <a class="oe_sidebar_action_a" t-att-title="item.title" href="#" t-att-data-section="section.name" t-att-data-index="item_index">
+ <a class="oe_sidebar_action_a" t-att-title="item.title" t-att-data-section="section.name" t-att-data-index="item_index" t-att-href="item.url" target="_blank">
<t t-raw="item.label"/>
</a>
</li>
@@ -524,6 +524,40 @@
</t>
</div>
</t>
+<t t-name="Sidebar.attachments">
+ <div class="oe-sidebar-attachments-toolbar">
+ <div class="oe-binary-file-set" style="float: right">
+ <form class="oe-binary-form" t-attf-target="#{element_id}_iframe"
+ method="post" enctype="multipart/form-data" action="/web/binary/upload_attachment">
+ <input type="hidden" name="session_id" t-att-value="session.session_id"/>
+ <input type="hidden" name="callback" t-attf-value="#{element_id}_iframe"/>
+ <input type="hidden" name="model" t-att-value="view.dataset.model"/>
+ <input type="hidden" name="id" t-att-value="view.datarecord.id"/>
+ <button class="oe_button" type="button">
+ <img t-att-src='_s + "/web/static/src/img/throbber.gif"' width="16" height="16" style="display: none"/>
+ <span>Add</span>
+ </button>
+ <input type="file" class="oe-binary-file" name="ufile" title="Add attachment"
+ t-att-onclick="view.datarecord.id ? null : 'alert(\'No record selected ! You can only attach to existing record.\'); return false;'"/>
+ </form>
+ <iframe t-attf-id="#{element_id}_iframe" t-attf-name="#{element_id}_iframe" style="display: none"/>
+ </div>
+ </div>
+ <br style="clear: both"/>
+ <ul class="oe-sidebar-attachments-items">
+ <li t-foreach="attachments" t-as="attachment">
+ <t t-if="attachment.type == 'binary'" t-set="attachment.url" t-value="_s + '/web/binary/saveas?session_id='
+ + session.session_id + '&amp;model=ir.attachment&amp;id=' + attachment.id
+ + '&amp;field=datas&amp;filename_field=name&amp;t=' + (new Date().getTime())"/>
+ <a class="oe-sidebar-attachments-link" t-att-href="attachment.url" target="_blank">
+ <t t-esc="attachment.name"/>
+ </a>
+ <a href="#" class="oe-sidebar-attachment-delete" t-att-data-id="attachment.id" t-attf-title="Delete the attachment #{attachment.name}">
+ <img t-att-src='_s + "/web/static/src/img/attachments-close.png"' width="15" height="15" border="0"/>
+ </a>
+ </li>
+ </ul>
+</t>
<t t-name="TreeView">
<select t-if="toolbar" style="width: 30%">
@@ -690,40 +724,6 @@
</t>
</div>
</t>
-<t t-name="FormView.sidebar.attachments">
- <div class="oe-sidebar-attachments-toolbar">
- <div class="oe-binary-file-set" style="float: right">
- <form class="oe-binary-form" t-attf-target="#{element_id}_iframe"
- method="post" enctype="multipart/form-data" action="/web/binary/upload_attachment">
- <input type="hidden" name="session_id" t-att-value="session.session_id"/>
- <input type="hidden" name="callback" t-attf-value="#{element_id}_iframe"/>
- <input type="hidden" name="model" t-att-value="view.dataset.model"/>
- <input type="hidden" name="id" t-att-value="view.datarecord.id"/>
- <button class="oe_button" type="button">
- <img t-att-src='_s + "/web/static/src/img/throbber.gif"' width="16" height="16" style="display: none"/>
- <span>Add</span>
- </button>
- <input type="file" class="oe-binary-file" name="ufile" title="Add attachment"
- t-att-onclick="view.datarecord.id ? null : 'alert(\'No record selected ! You can only attach to existing record.\'); return false;'"/>
- </form>
- <iframe t-attf-id="#{element_id}_iframe" t-attf-name="#{element_id}_iframe" style="display: none"/>
- </div>
- </div>
- <br style="clear: both"/>
- <ul class="oe-sidebar-attachments-items">
- <li t-foreach="attachments" t-as="attachment">
- <t t-if="attachment.type == 'binary'" t-set="attachment.url" t-value="_s + '/web/binary/saveas?session_id='
- + session.session_id + '&amp;model=ir.attachment&amp;id=' + attachment.id
- + '&amp;field=datas&amp;filename_field=name&amp;t=' + (new Date().getTime())"/>
- <a class="oe-sidebar-attachments-link" t-att-href="attachment.url" target="_blank">
- <t t-esc="attachment.name"/>
- </a>
- <a href="#" class="oe-sidebar-attachment-delete" t-att-data-id="attachment.id" t-attf-title="Delete the attachment #{attachment.name}">
- <img t-att-src='_s + "/web/static/src/img/attachments-close.png"' width="15" height="15" border="0"/>
- </a>
- </li>
- </ul>
-</t>
<form t-name="FormView.set_default" class="oe_forms oe_frame">
<t t-set="args" t-value="widget.dialog_options.args"/>
<table style="width: 100%">