From 13e361920f0ef7eebafdfb4a973fab03a0f54ad6 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 9 Nov 2011 12:02:16 +0100 Subject: [PATCH] [imp] some more architecture improvements bzr revid: nicolas.vanhoren@openerp.com-20111109110216-p7e2xnckhbs8ojqk --- addons/web/static/src/js/core.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index b7edc472b88..96e45c7cc92 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -874,8 +874,7 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W }, target); }, _render_and_insert: function(insertion, target) { - var rendered = this.render(); - this.$element = $(rendered); + this.render_element(); if (target instanceof openerp.web.Widget) target = target.$element; insertion(target); @@ -883,6 +882,14 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W return this.start(); }, on_inserted: function(element, widget) {}, + /** + * Renders the element and insert the result of the render() method in this.$element. + */ + render_element: function() { + var rendered = this.render(); + this.$element = $(rendered); + return this; + }, /** * Renders the widget using QWeb, `this.template` must be defined. * The context given to QWeb contains the "widget" key that references `this`. @@ -890,7 +897,9 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W * @param {Object} additional Additional context arguments to pass to the template. */ render: function (additional) { - return openerp.web.qweb.render(this.template, _.extend({widget: this}, additional || {})); + if (this.template) + return openerp.web.qweb.render(this.template, _.extend({widget: this}, additional || {})); + return $("
").append(document.createElement(this.tagName)).html(); }, /** * Method called after rendering. Mostly used to bind actions, perform asynchronous