From d4ecfc4c4fe1e30bcd5fadf1ae710179689d14f1 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 13 Mar 2012 15:38:05 +0100 Subject: [PATCH] [imp] switched m2o page to m2o readonly bzr revid: nicolas.vanhoren@openerp.com-20120313143805-s42lc32kh12tkh4h --- addons/web/static/src/js/view_form.js | 13 +++++--- addons/web/static/src/js/view_page.js | 46 ++------------------------- 2 files changed, 10 insertions(+), 49 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index a5af970c5ef..e25a14d00b4 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1919,6 +1919,9 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({ this.last_search = []; this.tmp_value = undefined; }, + is_readonly: function() { + return this.readonly || this.force_readonly; + }, start: function() { this._super(); var self = this; @@ -1938,12 +1941,12 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({ $cmenu.append(QWeb.render("FieldMany2One.context_menu", {widget: self})); var bindings = {}; bindings[self.cm_id + "_search"] = function() { - if (self.readonly) + if (self.is_readonly()) return; self._search_create_popup("search"); }; bindings[self.cm_id + "_create"] = function() { - if (self.readonly) + if (self.is_readonly()) return; self._search_create_popup("form"); }; @@ -1977,7 +1980,7 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({ } else { $("#" + self.cm_id + " .oe_m2o_menu_item_mandatory").addClass("oe-m2o-disabled-cm"); } - if (!self.readonly) { + if (!self.is_readonly()) { $("#" + self.cm_id + " .oe_m2o_menu_item_noreadonly").removeClass("oe-m2o-disabled-cm"); } else { $("#" + self.cm_id + " .oe_m2o_menu_item_noreadonly").addClass("oe-m2o-disabled-cm"); @@ -2000,7 +2003,7 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({ } }); this.$drop_down.click(function() { - if (self.readonly) + if (self.is_readonly()) return; if (self.$input.autocomplete("widget").is(":visible")) { self.$input.autocomplete("close"); @@ -2234,7 +2237,7 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({ }, update_dom: function() { this._super.apply(this, arguments); - this.$input.prop('readonly', this.readonly); + this.$input.prop('readonly', this.is_readonly()); } }); diff --git a/addons/web/static/src/js/view_page.js b/addons/web/static/src/js/view_page.js index 95259a01927..e748c7c33e6 100644 --- a/addons/web/static/src/js/view_page.js +++ b/addons/web/static/src/js/view_page.js @@ -142,50 +142,8 @@ openerp.web.page = function (openerp) { this.$element.find('div').text(option ? option[1] : this.values[0][1]); } }); - openerp.web.page.FieldMany2OneReadonly = openerp.web.page.FieldURIReadonly.extend({ - set_value: function (value) { - value = value || null; - this.invalid = false; - var self = this; - this.value = value; - self.update_dom(); - self.on_value_changed(); - var real_set_value = function(rval) { - self.value = rval; - self.$element.find('a') - .unbind('click') - .text(rval ? rval[1] : '') - .click(function () { - self.do_action({ - type: 'ir.actions.act_window', - res_model: self.field.relation, - res_id: self.value[0], - context: self.build_context(), - views: [[false, 'page'], [false, 'form']], - target: 'current' - }); - return false; - }); - }; - if (value && !(value instanceof Array)) { - new openerp.web.DataSetStatic( - this, this.field.relation, self.build_context()) - .name_get([value], function(data) { - real_set_value(data[0]); - }); - } else { - $.async_when().then(function() {real_set_value(value);}); - } - }, - get_value: function() { - if (!this.value) { - return false; - } else if (this.value instanceof Array) { - return this.value[0]; - } else { - return this.value; - } - } + openerp.web.page.FieldMany2OneReadonly = openerp.web.form.FieldMany2One.extend({ + force_readonly: true, }); openerp.web.page.FieldReferenceReadonly = openerp.web.page.FieldMany2OneReadonly.extend({ set_value: function (value) {