From fd5b7c1080d605caba658c0c4913e298ef0184c2 Mon Sep 17 00:00:00 2001 From: Egil Moeller Date: Sun, 26 Feb 2012 15:34:03 +0100 Subject: [PATCH] require(ep_pluginname/static/blabla); now works both on client and server --- available_plugins/ep_fintest/otherpart.js | 2 +- src/node/hooks/express/static.js | 20 ++++++++++++-------- src/node/server.js | 1 - 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/available_plugins/ep_fintest/otherpart.js b/available_plugins/ep_fintest/otherpart.js index 36fea8d8..ca259f44 100644 --- a/available_plugins/ep_fintest/otherpart.js +++ b/available_plugins/ep_fintest/otherpart.js @@ -1,4 +1,4 @@ -test = ep_client_require("/plugins/ep_fintest/test.js"); +test = require("ep_fintest/static/js/test.js"); console.log("FOOO:", test.foo); exports.somehook = function (hook_name, args, cb) { diff --git a/src/node/hooks/express/static.js b/src/node/hooks/express/static.js index eb7f03a9..567b4d7d 100644 --- a/src/node/hooks/express/static.js +++ b/src/node/hooks/express/static.js @@ -6,20 +6,24 @@ exports.expressCreateServer = function (hook_name, args, cb) { //serve static files args.app.get('/static/js/require-kernel.js', function (req, res, next) { res.header("Content-Type","application/javascript; charset: utf-8"); - res.write(minify.requireDefinition()); + res.write(minify.requireDefinition() + "\n require.setLibraryURI('/plugins'); "); res.end(); }); - /* Handle paths like "/static/js/plugins/ep_myplugin/test.js" - by rewriting it to ROOT_PATH_OF_MYPLUGIN/static/js/test.js, + /* Handle static files for plugins: + paths like "/static/plugins/ep_myplugin/js/test.js" + are rewritten into ROOT_PATH_OF_MYPLUGIN/static/js/test.js, commonly ETHERPAD_ROOT/node_modules/ep_myplugin/static/js/test.js */ - args.app.get(/^\/static\/([^\/]+)\/plugins\/([^\/]+)\/(.*)/, function(req, res) { - var type_dir = req.params[0].replace(/\.\./g, '').split("?")[0]; - var plugin_name = req.params[1]; - var url = req.params[2].replace(/\.\./g, '').split("?")[0]; + args.app.get(/^\/plugins\/([^\/]+)\/static\/(.*)/, function(req, res, next) { + var plugin_name = req.params[0]; + var url = req.params[1].replace(/\.\./g, '').split("?")[0]; - var filePath = path.normalize(path.join(plugins.plugins[plugin_name].package.path, "static", type_dir, url)); + if (plugins.plugins[plugin_name] == undefined) { + return next(); + } + + var filePath = path.normalize(path.join(plugins.plugins[plugin_name].package.path, "static", url)); res.sendfile(filePath, { maxAge: exports.maxAge }); }); diff --git a/src/node/server.js b/src/node/server.js index c3be85ae..d40f6807 100644 --- a/src/node/server.js +++ b/src/node/server.js @@ -27,7 +27,6 @@ var db = require('./db/DB'); var async = require('async'); var express = require('express'); var path = require('path'); -require("./pluginfw/require"); // Load globals var plugins = require("./pluginfw/plugins"); var hooks = require("./pluginfw/hooks"); var npm = require("npm/lib/npm.js");