diff options
| author | Fabien Meghazi <fme@openerp.com> | 2011-05-09 14:19:01 +0200 |
|---|---|---|
| committer | Fabien Meghazi <fme@openerp.com> | 2011-05-09 14:19:01 +0200 |
| commit | 84c0e981ec15fb8015fcaead877ea5faebce9dc2 (patch) | |
| tree | a5e10227ef7f123f5b319e2dea2f87c86dfb2b21 | |
| parent | d6bf99ff900c49021b32110b2a8f817e2fea3cbe (diff) | |
[ADD] Added clone template in QWeb2 (t-name & t-extend)
bzr revid: fme@openerp.com-20110509121901-kmpcn7n6gsrjx6bl
| -rw-r--r-- | addons/base/static/lib/qweb/qweb-test-extend.xml | 5 | ||||
| -rw-r--r-- | addons/base/static/lib/qweb/qweb-test.js.html | 2 | ||||
| -rw-r--r-- | addons/base/static/lib/qweb/qweb2.js | 9 |
3 files changed, 16 insertions, 0 deletions
diff --git a/addons/base/static/lib/qweb/qweb-test-extend.xml b/addons/base/static/lib/qweb/qweb-test-extend.xml index 23e10d52599..44fda920e43 100644 --- a/addons/base/static/lib/qweb/qweb-test-extend.xml +++ b/addons/base/static/lib/qweb/qweb-test-extend.xml @@ -24,4 +24,9 @@ <t t-extend="jquery-extend"> <t t-jquery="footer" t-operation="inner"><b>END</b></t> </t> + +<t t-name="jquery-extend-clone" t-extend="jquery-extend"> + <t t-jquery="ul" t-operation="append"><li>CLONED TEMPLATE</li></t> +</t> + </templates> diff --git a/addons/base/static/lib/qweb/qweb-test.js.html b/addons/base/static/lib/qweb/qweb-test.js.html index e341fa753fd..fda837497c4 100644 --- a/addons/base/static/lib/qweb/qweb-test.js.html +++ b/addons/base/static/lib/qweb/qweb-test.js.html @@ -251,6 +251,8 @@ test("jQuery extend", function () { equals(render('jquery-extend', {}), '<hr/><ul class="main"><li>1</li><li>2</li><li>3</li></ul><footer><b>END</b></footer>', "Extend template with jQuery"); + equals(render('jquery-extend-clone', {}), '<ul><li>one</li><li>CLONED TEMPLATE</li></ul>', + "Clone template"); }); }); </script> diff --git a/addons/base/static/lib/qweb/qweb2.js b/addons/base/static/lib/qweb/qweb2.js index 3c473423a44..36d0dce09c4 100644 --- a/addons/base/static/lib/qweb/qweb2.js +++ b/addons/base/static/lib/qweb/qweb2.js @@ -216,6 +216,15 @@ QWeb2.Engine = (function() { } var name = node.getAttribute(this.prefix + '-name'); var extend = node.getAttribute(this.prefix + '-extend'); + if (name && extend) { + // Clone template and extend it + if (!this.templates[extend]) { + return this.tools.exception("Can't clone undefined template " + extend); + } + this.templates[name] = this.templates[extend].cloneNode(true); + extend = name; + name = undefined; + } if (name) { this.templates[name] = node; } else if (extend) { |
