From 84c0e981ec15fb8015fcaead877ea5faebce9dc2 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 9 May 2011 14:19:01 +0200 Subject: [PATCH] [ADD] Added clone template in QWeb2 (t-name & t-extend) bzr revid: fme@openerp.com-20110509121901-kmpcn7n6gsrjx6bl --- addons/base/static/lib/qweb/qweb-test-extend.xml | 5 +++++ addons/base/static/lib/qweb/qweb-test.js.html | 2 ++ addons/base/static/lib/qweb/qweb2.js | 9 +++++++++ 3 files changed, 16 insertions(+) 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 @@ END + + +
  • CLONED TEMPLATE
  • +
    + 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', {}), '
    ', "Extend template with jQuery"); + equals(render('jquery-extend-clone', {}), '', + "Clone template"); }); }); 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) {