[imp] modified m2o to look like page view in readonly mode

bzr revid: nicolas.vanhoren@openerp.com-20120313151435-jsh91fg44i65ecol
This commit is contained in:
niv-openerp 2012-03-13 16:14:35 +01:00
parent d4ecfc4c4f
commit fe0c8fd1e4
2 changed files with 45 additions and 3 deletions

View File

@ -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();
}
}
});

View File

@ -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>