diff options
| author | niv-openerp <nicolas.vanhoren@openerp.com> | 2012-03-13 16:14:35 +0100 |
|---|---|---|
| committer | niv-openerp <nicolas.vanhoren@openerp.com> | 2012-03-13 16:14:35 +0100 |
| commit | fe0c8fd1e4c18385dcd940788d793238d2e49740 (patch) | |
| tree | 7afd082aab51467f4638dddfb114f415a7265d5f /addons/web/static/src | |
| parent | d4ecfc4c4fe1e30bcd5fadf1ae710179689d14f1 (diff) | |
[imp] modified m2o to look like page view in readonly mode
bzr revid: nicolas.vanhoren@openerp.com-20120313151435-jsh91fg44i65ecol
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 45 | ||||
| -rw-r--r-- | addons/web/static/src/xml/base.xml | 3 |
2 files changed, 45 insertions, 3 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index e25a14d00b4..2be3a415f93 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1910,9 +1910,10 @@ openerp.web.form.dialog = function(content, options) { }; openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({ - form_template: 'FieldMany2One', + form_template: 'EmptyComponent', init: function(view, node) { this._super(view, node); + this.previous_readonly = this.is_readonly(); this.limit = 7; this.value = null; this.cm_id = _.uniqueId('m2o_cm_'); @@ -1924,6 +1925,18 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({ }, start: function() { this._super(); + this.render_content(); + }, + render_content: function() { + this.$element.html(""); + if (!this.is_readonly()) + this.render_editable(); + else + this.render_readonly(); + this.render_value(); + }, + render_editable: function() { + this.$element.html(QWeb.render("FieldMany2One", {widget: this})); var self = this; this.$input = this.$element.find("input"); this.$drop_down = this.$element.find(".oe-m2o-drop-down-button"); @@ -2062,6 +2075,9 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({ isSelecting = false; }); }, + render_readonly: function() { + this.$element.html(QWeb.render("FieldMany2One_readonly")); + }, // autocomplete component content handling get_search_result: function(request, response) { var search_val = request.term; @@ -2158,7 +2174,28 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({ }, _change_int_ext_value: function(value) { this._change_int_value(value); - this.$input.val(this.value ? this.value[1] : ""); + this.render_value(); + }, + render_value: function() { + var self = this; + if (!this.is_readonly()) { + this.$input.val(this.value ? this.value[1] : ""); + } else { + self.$element.find('a') + .unbind('click') + .text(this.value ? this.value[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; + }); + } }, _change_int_value: function(value) { this.value = value; @@ -2237,7 +2274,9 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({ }, update_dom: function() { this._super.apply(this, arguments); - this.$input.prop('readonly', this.is_readonly()); + if (this.previous_readonly != this.is_readonly()) { + this.render_content(); + } } }); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index c8a2b4d920f..ec3d7621e5c 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1065,6 +1065,9 @@ </tr> </table> </t> +<t t-name="FieldMany2One_readonly"> + <a href="#" class="oe_form_uri"/> +</t> <t t-name="FieldMany2One.context_menu"> <ul> <li t-att-id="widget.cm_id + '_open'" style="color:grey" class="oe_m2o_menu_item_mandatory">Open...</li> |
