summaryrefslogtreecommitdiff
path: root/addons/base/static/src
diff options
context:
space:
mode:
authorniv-openerp <nicolas.vanhoren@openerp.com>2011-07-13 11:44:11 +0200
committerniv-openerp <nicolas.vanhoren@openerp.com>2011-07-13 11:44:11 +0200
commitb29106581fbbcba48b2c7dc49336b1de8cd06b16 (patch)
tree4fcc5d4c0cc42bae1bd26da789b95e0591b8294b /addons/base/static/src
parentd45e291329edc2e980650a73bae1515c4a3bd043 (diff)
[imp] added popup to read & modify a record and used it in m2o (also some fix related to relations)
bzr revid: nicolas.vanhoren@openerp.com-20110713094411-wrbaa6m4zewm521m
Diffstat (limited to 'addons/base/static/src')
-rw-r--r--addons/base/static/src/js/data.js4
-rw-r--r--addons/base/static/src/js/form.js76
-rw-r--r--addons/base/static/src/xml/base.xml10
3 files changed, 78 insertions, 12 deletions
diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js
index 534fd356f06..a49e6cf901f 100644
--- a/addons/base/static/src/js/data.js
+++ b/addons/base/static/src/js/data.js
@@ -584,12 +584,12 @@ openerp.base.ReadOnlyDataSetSearch = openerp.base.DataSetSearch.extend({
},
on_create: function(data) {},
write: function (id, data, callback) {
- this.on_write(id);
+ this.on_write(id, data);
var to_return = $.Deferred().then(callback);
setTimeout(function () {to_return.resolve({"result": true});}, 0);
return to_return.promise();
},
- on_write: function(id) {},
+ on_write: function(id, data) {},
unlink: function(ids, callback, error_callback) {
this.on_unlink(ids);
var to_return = $.Deferred().then(callback);
diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js
index 7faa942c6b0..d6e9fe35a5a 100644
--- a/addons/base/static/src/js/form.js
+++ b/addons/base/static/src/js/form.js
@@ -1267,14 +1267,8 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
if (!self.value) {
return;
}
- self.session.action_manager.do_action({
- "res_model": self.field.relation,
- "views":[[false,"form"]],
- "res_id": self.value[0],
- "type":"ir.actions.act_window",
- "target":"new",
- "context": self.build_context()
- });
+ var pop = new openerp.base.form.FormOpenPopup(null, self.view.session);
+ pop.show_element(self.field.relation, self.value[0],self.build_context(), {});
};
var cmenu = this.$menu_btn.contextMenu(this.cm_id, {'leftClickToo': true,
bindings: bindings, itemStyle: {"color": ""},
@@ -1885,7 +1879,7 @@ openerp.base.form.SelectCreatePopup = openerp.base.BaseWidget.extend({
return;
var self = this;
var wdataset = new openerp.base.DataSetSearch(this.session, this.model, this.context, this.domain);
- wdataset = this.options.parent_view;
+ wdataset.parent_view = this.options.parent_view;
wdataset.create(data, function(r) {
self.on_select_elements([r.result]);
});
@@ -1945,6 +1939,70 @@ openerp.base.form.SelectCreateListView = openerp.base.ListView.extend({
}
});
+openerp.base.form.FormOpenPopup = openerp.base.BaseWidget.extend({
+ identifier_prefix: "formopenpopup",
+ template: "FormOpenPopup",
+ /**
+ * options:
+ * - alternative_form_view
+ * - auto_write (default true)
+ * - parent_view
+ */
+ show_element: function(model, row_id, context, options) {
+ this.model = model;
+ this.row_id = row_id;
+ this.context = context || {};
+ this.options = _.defaults(options || {}, {"auto_write": true});
+ jQuery(this.render()).dialog({title: '',
+ modal: true,
+ width: 960,
+ height: 600});
+ this.start();
+ },
+ start: function() {
+ this._super();
+ this.dataset = new openerp.base.ReadOnlyDataSetSearch(this.session, this.model,
+ this.context);
+ this.dataset.ids = [this.row_id];
+ this.dataset.index = 0;
+ this.dataset.parent_view = this.options.parent_view;
+ this.setup_form_view();
+ },
+ on_write: function(id, data) {
+ if (!this.options.auto_write)
+ return;
+ var self = this;
+ var wdataset = new openerp.base.DataSetSearch(this.session, this.model, this.context, this.domain);
+ wdataset.parent_view = this.options.parent_view;
+ wdataset.write(id, data, function(r) {
+ self.stop();
+ });
+ },
+ setup_form_view: function() {
+ var self = this;
+ this.view_form = new openerp.base.FormView(null, this.session,
+ this.element_id + "_view_form", this.dataset, false);
+ if (this.options.alternative_form_view) {
+ this.view_form.set_embedded_view(this.options.alternative_form_view);
+ }
+ this.view_form.start();
+ this.view_form.on_loaded.add_last(function() {
+ var $buttons = self.view_form.$element.find(".oe_form_buttons");
+ $buttons.html(QWeb.render("FormOpenPopup.form.buttons"));
+ var $nbutton = $buttons.find(".oe_formopenpopup-form-save");
+ $nbutton.click(function() {
+ self.view_form.do_save();
+ });
+ var $cbutton = $buttons.find(".oe_formopenpopup-form-close");
+ $cbutton.click(function() {
+ self.stop();
+ });
+ self.view_form.do_show();
+ });
+ this.dataset.on_write.add(this.on_write);
+ }
+});
+
openerp.base.form.FieldReference = openerp.base.form.Field.extend({
init: function(view, node) {
this._super(view, node);
diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml
index 6d075e6972a..603c75cdb74 100644
--- a/addons/base/static/src/xml/base.xml
+++ b/addons/base/static/src/xml/base.xml
@@ -908,7 +908,15 @@
<button type="button" class="oe_selectcreatepopup-form-save">Save</button>
<button type="button" class="oe_selectcreatepopup-form-close">Close</button>
</t>
-
+<t t-name="FormOpenPopup">
+ <div t-att-id="element_id">
+ <div t-att-id="element_id + '_view_form'" style="width:100%"></div>
+ </div>
+</t>
+<t t-name="FormOpenPopup.form.buttons">
+ <button type="button" class="oe_formopenpopup-form-save">Save</button>
+ <button type="button" class="oe_formopenpopup-form-close">Close</button>
+</t>
<t t-name="ListView.row.frame" t-extend="WidgetFrame">
<t t-jquery="tr">
$(document.createElement('t'))