From 79af4423069c2a39c715f9e92eeceab6508fa872 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Sun, 2 Feb 2014 13:02:52 -0500 Subject: [PATCH 1/4] resolved #926 --- src/plugins.js | 56 +++++++++++++++++++++++++++++++++---------- src/routes/plugins.js | 1 - 2 files changed, 44 insertions(+), 13 deletions(-) diff --git a/src/plugins.js b/src/plugins.js index 700b5d7082..d990c3bb40 100644 --- a/src/plugins.js +++ b/src/plugins.js @@ -134,16 +134,41 @@ var fs = require('fs'), }, function(next) { // Static Directories for Plugins - if (pluginData.staticDir) { - staticDir = path.join(pluginPath, pluginData.staticDir); + var realPath, + validMappedPath = /^[\w\-_]+$/; - fs.exists(staticDir, function(exists) { - if (exists) { - Plugins.staticDirs[pluginData.id] = staticDir; - next(); - } else next(); - }); - } else next(); + pluginData.staticDirs = pluginData.staticDirs || {}; + + // Deprecated, to be removed v0.5 + if (pluginData.staticDir) { + winston.warn('[plugins/' + pluginData.id + '] staticDir is deprecated, use staticDirs instead'); + Plugins.staticDirs[pluginData.id] = path.join(pluginPath, pluginData.staticDir); + } + + for(key in pluginData.staticDirs) { + (function(mappedPath) { + if (pluginData.staticDirs.hasOwnProperty(mappedPath)) { + if (Plugins.staticDirs[mappedPath]) { + winston.warn('[plugins/' + pluginData.id + '] Mapped path (' + mappedPath + ') already specified!'); + } else if (!validMappedPath.test(mappedPath)) { + winston.warn('[plugins/' + pluginData.id + '] Invalid mapped path specified: ' + mappedPath + '. Path must adhere to: ' + validMappedPath.toString()); + } else { + realPath = pluginData.staticDirs[mappedPath]; + staticDir = path.join(pluginPath, realPath); + + (function(staticDir) { + fs.exists(staticDir, function(exists) { + if (exists) { + Plugins.staticDirs[mappedPath] = staticDir; + } + }); + }(staticDir)); + } + } + }(key)); + } + + next(); }, function(next) { // CSS Files for plugins @@ -152,9 +177,16 @@ var fs = require('fs'), winston.info('[plugins] Found ' + pluginData.css.length + ' CSS file(s) for plugin ' + pluginData.id); } - Plugins.cssFiles = Plugins.cssFiles.concat(pluginData.css.map(function(file) { - return path.join('/plugins', pluginData.id, file); - })); + if (!pluginData.staticDir) { + Plugins.cssFiles = Plugins.cssFiles.concat(pluginData.css.map(function(file) { + return path.join('/plugins', file); + })); + } else { + winston.warn('[plugins/' + pluginData.id + '] staticDir is deprecated, define CSS files with new staticDirs instead.'); + Plugins.cssFiles = Plugins.cssFiles.concat(pluginData.css.map(function(file) { + return path.join('/plugins', pluginData.id, file); + })); + } next(); } else { diff --git a/src/routes/plugins.js b/src/routes/plugins.js index 6fe7b2c7a6..ee2ba89d14 100644 --- a/src/routes/plugins.js +++ b/src/routes/plugins.js @@ -31,7 +31,6 @@ var nconf = require('nconf'), // Static Assets app.get('/plugins/:id/*', function(req, res) { - var relPath = req._parsedUrl.pathname.replace(nconf.get('relative_path') + '/plugins/' + req.params.id, ''); if (plugins.staticDirs[req.params.id]) { From d1eba104d2e718b3dd5c5077cb372f3aeeaf52e5 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Sun, 2 Feb 2014 13:36:47 -0500 Subject: [PATCH 2/4] minor tweak to var names --- src/meta.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/meta.js b/src/meta.js index cef411b674..3a1caec33a 100644 --- a/src/meta.js +++ b/src/meta.js @@ -249,10 +249,10 @@ var fs = require('fs'), jsPaths = scripts.map(function (jsPath) { if (jsPath.substring(0, 7) === 'plugins') { var paths = jsPath.split('/'), - pluginID = paths[1]; + mappedPath = paths[1]; - jsPath = jsPath.replace(path.join('plugins', pluginID), ''); - return path.join(plugins.staticDirs[pluginID], jsPath); + jsPath = jsPath.replace(path.join('plugins', mappedPath), ''); + return path.join(plugins.staticDirs[mappedPath], jsPath); } else { return path.join(__dirname, '..', '/public', jsPath); } From ecc1c315ccd01001fffac762c8c67d803031e7c6 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Sun, 2 Feb 2014 13:53:19 -0500 Subject: [PATCH 3/4] closes #927 --- public/src/templates.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/public/src/templates.js b/public/src/templates.js index 2f2d9ad9fe..e9eee153a5 100644 --- a/public/src/templates.js +++ b/public/src/templates.js @@ -385,8 +385,14 @@ } else if (data[d] instanceof Object) { template = parse(data[d], d + '.', template); } else { - checkConditional(namespace + d, data[d]); - checkConditional('!' + namespace + d, !data[d]); + var key = namespace + d, + value = typeof data[d] === 'string' ? data[d].replace(/^\s+|\s+$/g, '') : data[d]; + + if (key === 'metaTags.content' && data[d]) { + console.log(typeof data[d] === 'string', data[d].replace(/^\s+|\s+$/g, '')); + } + checkConditional(key, value); + checkConditional('!' + key, !value); if (blockInfo && blockInfo.iterator) { checkConditional('@first', blockInfo.iterator === 0); @@ -395,7 +401,7 @@ checkConditional('!@last', blockInfo.iterator !== blockInfo.total); } - template = replace(namespace + d, data[d], template); + template = replace(key, value, template); } } } @@ -406,7 +412,8 @@ namespace = ''; } else { // clean up all undefined conditionals - template = template.replace(/(| -->))|()/gi, ''); + template = template.replace(//gi, 'ENDIF -->') + .replace(//gi, ''); } return template; From 3f0f2bc95671613f44a5b70fce450b258becc498 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Sun, 2 Feb 2014 13:53:50 -0500 Subject: [PATCH 4/4] console.log --- public/src/templates.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/public/src/templates.js b/public/src/templates.js index e9eee153a5..e4dbb0f69a 100644 --- a/public/src/templates.js +++ b/public/src/templates.js @@ -388,9 +388,6 @@ var key = namespace + d, value = typeof data[d] === 'string' ? data[d].replace(/^\s+|\s+$/g, '') : data[d]; - if (key === 'metaTags.content' && data[d]) { - console.log(typeof data[d] === 'string', data[d].replace(/^\s+|\s+$/g, '')); - } checkConditional(key, value); checkConditional('!' + key, !value);