diff --git a/CONST_Makefile b/CONST_Makefile
index ac082e554..11ed9ef1d 100644
--- a/CONST_Makefile
+++ b/CONST_Makefile
@@ -75,6 +75,7 @@ OL_JS_FILES = $(shell find node_modules/openlayers/src/ol -type f -name '*.js' 2
NGEO_JS_FILES = $(shell find node_modules/ngeo/src -type f -name '*.js' 2> /dev/null)
APP_JS_FILES = $(shell find $(PACKAGE)/static/js -type f -name '*.js')
APP_HTML_FILES = $(shell find $(PACKAGE)/templates -type f -name '*.html')
+APP_PARTIALS_FILES := $(shell find $(PACKAGE)/static/js -type f -name '*.html')
LESS_FILES = $(shell find $(PACKAGE)/static/less -type f -name '*.less' 2> /dev/null)
JSON_CLIENT_LOCALISATION_FILES = $(addprefix $(OUTPUT_DIR)/locale/, $(addsuffix /$(PACKAGE).json, $(LANGUAGES)))
@@ -420,9 +421,12 @@ $(OUTPUT_DIR)/build.css: $(LESS_FILES) .build/node_modules.timestamp
mkdir -p $(dir $@)
./node_modules/.bin/lessc $(PACKAGE)/static/less/$(PACKAGE).less $@
-.build/build.js: build.json $(OL_JS_FILES) $(NGEO_JS_FILES) $(APP_JS_FILES) .build/externs/angular-1.3.js .build/externs/angular-1.3-q.js .build/externs/angular-1.3-http-promise.js .build/externs/jquery-1.9.js .build/node_modules.timestamp
+.build/build.js: build.json $(OL_JS_FILES) $(NGEO_JS_FILES) $(APP_JS_FILES) .build/templatecache.js .build/externs/angular-1.3.js .build/externs/angular-1.3-q.js .build/externs/angular-1.3-http-promise.js .build/externs/jquery-1.9.js .build/node_modules.timestamp
node tasks/build.js $< $@
+.build/templatecache.js: templatecache.mako.js
+ .build/venv/bin/mako-render --var "partials=$(APP_PARTIALS_FILES)" $< > $@
+
.build/externs/angular-1.3.js:
mkdir -p $(dir $@)
wget -O $@ https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/angular-1.3.js
diff --git a/build.json b/build.json
index 49c2d2ed5..c16cc0192 100644
--- a/build.json
+++ b/build.json
@@ -4,7 +4,8 @@
"node_modules/openlayers/src/**/*.js",
"node_modules/openlayers/build/ol.ext/**/*.js",
"node_modules/ngeo/src/**/*.js",
- "geoportailv3/static/js/**/*.js"
+ "geoportailv3/static/js/**/*.js",
+ ".build/templatecache.js"
],
"compile": {
"closure_entry_point": "app_main",
diff --git a/geoportailv3/templates/index.html b/geoportailv3/templates/index.html
index 5e84b7e10..d90c689d0 100644
--- a/geoportailv3/templates/index.html
+++ b/geoportailv3/templates/index.html
@@ -193,11 +193,11 @@
infos
appModule.constant('internalWmsUrl', "${request.route_url('wms') })}");
appModule.constant('defaultExtent', [425152.9429259216, 6324465.99999133, 914349.9239510496, 6507914.867875754]);
+% if debug:
appModule.value('ngeoLayertreeTemplateUrl', '${request.static_url('geoportailv3:static/js/catalog/layertree.html')}');
appModule.value('ngeoLayertreenodeTemplateUrl', '${request.static_url('geoportailv3:static/js/catalog/layertreenode.html')}');
appModule.value('ngeoPopupTemplateUrl', '${request.static_url('geoportailv3:static/js/layerinfo/popup.html')}');
appModule.value('ngeoScaleselectorTemplateUrl', '${request.static_url('geoportailv3:static/js/infobar/scaleselector.html')}');
-
appModule.value('appBackgroundlayerTemplateUrl', '${request.static_url('geoportailv3:static/js/backgroundlayer/backgroundlayer.html')}');
appModule.value('appLayermanagerTemplateUrl', '${request.static_url('geoportailv3:static/js/layermanager/layermanager.html')}');
appModule.value('appMeasureTemplateUrl', '${request.static_url('geoportailv3:static/js/measure/measure.html')}');
@@ -205,6 +205,19 @@ infos
appModule.value('appAuthenticationTemplateUrl', '${request.static_url('geoportailv3:static/js/authentication/authentication.html')}');
appModule.value('appInfobarTemplateUrl', '${request.static_url('geoportailv3:static/js/infobar/infobar.html')}');
appModule.value('appProjectionselectorTemplateUrl', '${request.static_url('geoportailv3:static/js/infobar/projectionselector.html')}');
+% else:
+ appModule.value('ngeoLayertreeTemplateUrl', 'catalog/layertree.html');
+ appModule.value('ngeoLayertreenodeTemplateUrl', 'catalog/layertreenode.html');
+ appModule.value('ngeoPopupTemplateUrl', 'layerinfo/popup.html');
+ appModule.value('ngeoScaleselectorTemplateUrl', 'infobar/scaleselector.html');
+ appModule.value('appBackgroundlayerTemplateUrl', 'backgroundlayer/backgroundlayer.html');
+ appModule.value('appLayermanagerTemplateUrl', 'layermanager/layermanager.html');
+ appModule.value('appMeasureTemplateUrl', 'measure/measure.html');
+ appModule.value('appLayerinfoTemplateUrl', 'layerinfo/layerinfo.html');
+ appModule.value('appAuthenticationTemplateUrl', 'authentication/authentication.html');
+ appModule.value('appInfobarTemplateUrl', 'infobar/infobar.html');
+ appModule.value('appProjectionselectorTemplateUrl', 'infobar/projectionselector.html');
+% endif
})();