From 49c31d0d5b028bf7a5c79a23192853e6aa3a43b1 Mon Sep 17 00:00:00 2001 From: Egil Moeller Date: Sun, 4 Apr 2010 13:31:02 +0200 Subject: Bugfix to handlePath hooks, and to the array concatenation in callHook --- etherpad/src/etherpad/admin/plugins.js | 3 ++- etherpad/src/main.js | 30 ++++++++++++++++-------------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/etherpad/src/etherpad/admin/plugins.js b/etherpad/src/etherpad/admin/plugins.js index 7b59662..384817f 100644 --- a/etherpad/src/etherpad/admin/plugins.js +++ b/etherpad/src/etherpad/admin/plugins.js @@ -232,7 +232,8 @@ function callHook(hookName, args) { var plugin = hooks[hookName][i]; var pluginRes = pluginModules[plugin.plugin][plugin.original || hookName](args); if (pluginRes != undefined && pluginRes != null) - res = res.concat(pluginRes); + for (var i = 0; i < pluginRes.length; i++) + res.push(pluginRes[i]); /* Don't use Array.concat as it flatterns arrays within the array */ } return res; } diff --git a/etherpad/src/main.js b/etherpad/src/main.js index 745f5fa..9035f2d 100644 --- a/etherpad/src/main.js +++ b/etherpad/src/main.js @@ -364,20 +364,22 @@ function handlePath() { // these paths are handled identically on all sites/subdomains. var commonDispatcher = new Dispatcher(); - commonDispatcher.addLocations( - plugins.callHook('handlePath').concat([ - ['/favicon.ico', forward(static_control)], - ['/robots.txt', forward(static_control)], - ['/crossdomain.xml', forward(static_control)], - [PrefixMatcher('/static/'), forward(static_control)], - [PrefixMatcher('/ep/genimg/'), genimg.renderPath], - [PrefixMatcher('/ep/pad/'), forward(pad_control)], - [PrefixMatcher('/ep/script/'), forward(scriptcontrol)], - [/^\/([^\/]+)$/, pad_control.render_pad], - [DirMatcher('/ep/unit-tests/'), forward(testcontrol)], - [DirMatcher('/ep/pne-manual/'), forward(pne_manual_control)], - [DirMatcher('/ep/pro-help/'), forward(pro_help_control)] - ])); + + commonDispatcher.addLocations(plugins.callHook('handlePath')); + + commonDispatcher.addLocations([ + ['/favicon.ico', forward(static_control)], + ['/robots.txt', forward(static_control)], + ['/crossdomain.xml', forward(static_control)], + [PrefixMatcher('/static/'), forward(static_control)], + [PrefixMatcher('/ep/genimg/'), genimg.renderPath], + [PrefixMatcher('/ep/pad/'), forward(pad_control)], + [PrefixMatcher('/ep/script/'), forward(scriptcontrol)], + [/^\/([^\/]+)$/, pad_control.render_pad], + [DirMatcher('/ep/unit-tests/'), forward(testcontrol)], + [DirMatcher('/ep/pne-manual/'), forward(pne_manual_control)], + [DirMatcher('/ep/pro-help/'), forward(pro_help_control)] + ]); var etherpadDotComDispatcher = new Dispatcher(); etherpadDotComDispatcher.addLocations([ -- cgit v1.2.3-1-g7c22