From 6d3045edbb12ea295e22ec821e303515aafcde59 Mon Sep 17 00:00:00 2001
From: peter
Date: Wed, 23 Nov 2016 11:43:14 +0100
Subject: [PATCH] fixed case where express views directory is an array
---
lib/panels/template/index.js | 23 ++++++++++++++++++-----
1 file changed, 18 insertions(+), 5 deletions(-)
diff --git a/lib/panels/template/index.js b/lib/panels/template/index.js
index a963a7a..f255fdf 100644
--- a/lib/panels/template/index.js
+++ b/lib/panels/template/index.js
@@ -2,14 +2,27 @@
var path = require('path'),
fs = require('fs');
-var isAbsolute = function (path) {
+var isAbsolute = function(path) {
return ('/' === path[0]) || (':' === path[1] && '\\' === path[2]);
};
// handle 'view engine' express directive
-var getPath = function (view, root, default_engine) {
- if (!isAbsolute(view)) {
- view = path.join(root, view);
+var getPath = function(view, root, default_engine) {
+ if (Array.isArray(root)) {
+ // iterate over array and fs stat the view
+ for (var i = 0; i < root.length; i++) {
+ var maybeView = path.join(root[i], view)
+ if (!path.isAbsolute(maybeView)) {
+ maybeView = path.join(root, maybeView)
+ }
+ try {
+ var stat = fs.statSync(maybeView)
+ view = maybeView;
+ break;
+ } catch (e) {
+ // empty on purpose
+ }
+ }
}
var ext = path.extname(view);
@@ -46,4 +59,4 @@ module.exports = {
}
};
}
-};
\ No newline at end of file
+};