diff --git a/src/ep.json b/src/ep.json index bc955dbf3..59cbf3aa4 100644 --- a/src/ep.json +++ b/src/ep.json @@ -3,7 +3,6 @@ { "name": "static", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/static:expressCreateServer" } }, { "name": "specialpages", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/specialpages:expressCreateServer" } }, { "name": "padurlsanitize", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/padurlsanitize:expressCreateServer" } }, - { "name": "minified", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/minified:expressCreateServer" } }, { "name": "padreadonly", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/padreadonly:expressCreateServer" } }, { "name": "webaccess", "hooks": { "expressConfigure": "ep_etherpad-lite/node/hooks/express/webaccess:expressConfigure" } }, { "name": "apicalls", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/apicalls:expressCreateServer" } }, diff --git a/src/node/hooks/express/minified.js b/src/node/hooks/express/minified.js deleted file mode 100644 index f8a988d77..000000000 --- a/src/node/hooks/express/minified.js +++ /dev/null @@ -1,6 +0,0 @@ -var minify = require('../../utils/Minify'); - -exports.expressCreateServer = function (hook_name, args, cb) { - //serve minified files - args.app.get(/^\/minified\/(.*)/, minify.minifyJS); -} diff --git a/src/node/hooks/express/static.js b/src/node/hooks/express/static.js index 9481eb5a2..e8f9afbb8 100644 --- a/src/node/hooks/express/static.js +++ b/src/node/hooks/express/static.js @@ -8,34 +8,9 @@ var fs = require("fs"); var ERR = require("async-stacktrace"); exports.expressCreateServer = function (hook_name, args, cb) { - /* 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(/^\/minified\/plugins\/([^\/]+)\/static\/(.*)/, function(req, res, next) { - var plugin_name = req.params[0]; - var modulePath = req.url.split("?")[0].substr("/minified/plugins/".length); - var fullPath = require.resolve(modulePath); - - if (plugins.plugins[plugin_name] == undefined) { - return next(); - } - - fs.readFile(fullPath, "utf8", function(err, data){ - if(ERR(err)) return; - - res.send("require.define('" + modulePath + "', function (require, exports, module) {" + data + "})"); - }) - -//require.define("/plugins.js", function (require, exports, module) { - - //res.sendfile(fullPath); - }); - // Cache both minified and static. var assetCache = new CachingMiddleware; - args.app.all('/(minified|static)/*', assetCache.handle); + args.app.all('/(javascripts|static)/*', assetCache.handle); // Minify will serve static files compressed (minify enabled). It also has // file-specific hacks for ace/require-kernel/etc. @@ -44,8 +19,10 @@ exports.expressCreateServer = function (hook_name, args, cb) { // Setup middleware that will package JavaScript files served by minify for // CommonJS loader on the client-side. var jsServer = new (Yajsml.Server)({ - rootPath: 'minified/' + rootPath: 'javascripts/src/' , rootURI: 'http://localhost:' + settings.port + '/static/js/' + , libraryPath: 'javascripts/lib/' + , libraryURI: 'http://localhost:' + settings.port + '/static/plugins/' }); var StaticAssociator = Yajsml.associators.StaticAssociator; diff --git a/src/node/utils/Minify.js b/src/node/utils/Minify.js index a49195a7b..4e1c44db4 100644 --- a/src/node/utils/Minify.js +++ b/src/node/utils/Minify.js @@ -27,6 +27,7 @@ var cleanCSS = require('clean-css'); var jsp = require("uglify-js").parser; var pro = require("uglify-js").uglify; var path = require('path'); +var plugins = require("ep_etherpad-lite/static/js/pluginfw/plugins"); var RequireKernel = require('require-kernel'); var server = require('../server'); @@ -63,6 +64,22 @@ exports.minify = function(req, res, next) return; } + /* Handle static files for plugins: + paths like "plugins/ep_myplugin/static/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 + */ + var match = filename.match(/^plugins\/([^\/]+)\/static\/(.*)/); + if (match) { + var pluginName = match[1]; + var resourcePath = match[2]; + var plugin = plugins.plugins[pluginName]; + if (plugin) { + var pluginPath = plugin.package.realPath; + filename = path.relative(ROOT_DIR, pluginPath + '/static/' + resourcePath); + } + } + // What content type should this be? // TODO: This should use a MIME module. var contentType; diff --git a/src/static/js/ace.js b/src/static/js/ace.js index 4114b63cf..5707b6b76 100644 --- a/src/static/js/ace.js +++ b/src/static/js/ace.js @@ -156,7 +156,7 @@ function Ace2Editor() } function pushRequireScriptTo(buffer) { var KERNEL_SOURCE = '../static/js/require-kernel.js'; - var KERNEL_BOOT = 'require.setRootURI("../minified/");\nrequire.setLibraryURI("../minified/plugins/");\nrequire.setGlobalKeyPath("require");' + var KERNEL_BOOT = 'require.setRootURI("../javascripts/src");\nrequire.setLibraryURI("../javascripts/lib");\nrequire.setGlobalKeyPath("require");' if (Ace2Editor.EMBEDED && Ace2Editor.EMBEDED[KERNEL_SOURCE]) { buffer.push('\ - + - +