summaryrefslogtreecommitdiff
path: root/addons/base/static
diff options
context:
space:
mode:
authorFabien Meghazi <fme@openerp.com>2011-05-09 14:19:01 +0200
committerFabien Meghazi <fme@openerp.com>2011-05-09 14:19:01 +0200
commit84c0e981ec15fb8015fcaead877ea5faebce9dc2 (patch)
treea5e10227ef7f123f5b319e2dea2f87c86dfb2b21 /addons/base/static
parentd6bf99ff900c49021b32110b2a8f817e2fea3cbe (diff)
[ADD] Added clone template in QWeb2 (t-name & t-extend)
bzr revid: fme@openerp.com-20110509121901-kmpcn7n6gsrjx6bl
Diffstat (limited to 'addons/base/static')
-rw-r--r--addons/base/static/lib/qweb/qweb-test-extend.xml5
-rw-r--r--addons/base/static/lib/qweb/qweb-test.js.html2
-rw-r--r--addons/base/static/lib/qweb/qweb2.js9
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) {