mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-28 11:26:16 -04:00
More AMDificatioN
This commit is contained in:
parent
4234681efd
commit
7a1f065702
18 changed files with 233 additions and 290 deletions
|
@ -1,79 +1,2 @@
|
||||||
{
|
{
|
||||||
"pad.js": [
|
|
||||||
"pad.js"
|
|
||||||
, "pad_utils.js"
|
|
||||||
, "browser.js"
|
|
||||||
, "pad_cookie.js"
|
|
||||||
, "pad_editor.js"
|
|
||||||
, "pad_editbar.js"
|
|
||||||
, "pad_docbar.js"
|
|
||||||
, "pad_modals.js"
|
|
||||||
, "ace.js"
|
|
||||||
, "collab_client.js"
|
|
||||||
, "pad_userlist.js"
|
|
||||||
, "pad_impexp.js"
|
|
||||||
, "pad_savedrevs.js"
|
|
||||||
, "pad_connectionstatus.js"
|
|
||||||
, "chat.js"
|
|
||||||
, "gritter.js"
|
|
||||||
, "$tinycon/tinycon.js"
|
|
||||||
, "excanvas.js"
|
|
||||||
, "farbtastic.js"
|
|
||||||
]
|
|
||||||
, "timeslider.js": [
|
|
||||||
"timeslider.js"
|
|
||||||
, "colorutils.js"
|
|
||||||
, "draggable.js"
|
|
||||||
, "pad_utils.js"
|
|
||||||
, "browser.js"
|
|
||||||
, "pad_cookie.js"
|
|
||||||
, "pad_editor.js"
|
|
||||||
, "pad_editbar.js"
|
|
||||||
, "pad_docbar.js"
|
|
||||||
, "pad_modals.js"
|
|
||||||
, "pad_savedrevs.js"
|
|
||||||
, "pad_impexp.js"
|
|
||||||
, "AttributePool.js"
|
|
||||||
, "Changeset.js"
|
|
||||||
, "domline.js"
|
|
||||||
, "linestylefilter.js"
|
|
||||||
, "cssmanager.js"
|
|
||||||
, "broadcast.js"
|
|
||||||
, "broadcast_slider.js"
|
|
||||||
, "broadcast_revisions.js"
|
|
||||||
]
|
|
||||||
, "ace2_inner.js": [
|
|
||||||
"ace2_inner.js"
|
|
||||||
, "browser.js"
|
|
||||||
, "AttributePool.js"
|
|
||||||
, "Changeset.js"
|
|
||||||
, "ChangesetUtils.js"
|
|
||||||
, "skiplist.js"
|
|
||||||
, "cssmanager.js"
|
|
||||||
, "colorutils.js"
|
|
||||||
, "undomodule.js"
|
|
||||||
, "$unorm.js"
|
|
||||||
, "contentcollector.js"
|
|
||||||
, "changesettracker.js"
|
|
||||||
, "linestylefilter.js"
|
|
||||||
, "domline.js"
|
|
||||||
, "AttributeManager.js"
|
|
||||||
]
|
|
||||||
, "ace2_common.js": [
|
|
||||||
"ace2_common.js"
|
|
||||||
, "browser.js"
|
|
||||||
, "jquery.js"
|
|
||||||
, "rjquery.js"
|
|
||||||
, "$async.js"
|
|
||||||
, "$async/lib/async.js"
|
|
||||||
, "underscore.js"
|
|
||||||
, "$underscore.js"
|
|
||||||
, "$underscore/underscore.js"
|
|
||||||
, "security.js"
|
|
||||||
, "$security.js"
|
|
||||||
, "json2.js"
|
|
||||||
, "pluginfw/client_plugins.js"
|
|
||||||
, "pluginfw/shared.js"
|
|
||||||
, "pluginfw/hooks.js"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ Ace2Editor.registry = {
|
||||||
nextId: 1
|
nextId: 1
|
||||||
};
|
};
|
||||||
|
|
||||||
var hooks = require('./pluginfw/hooks');
|
var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
|
||||||
var _ = require('./underscore');
|
var _ = require('./underscore');
|
||||||
|
|
||||||
function scriptTag(source) {
|
function scriptTag(source) {
|
||||||
|
@ -241,23 +241,35 @@ function Ace2Editor()
|
||||||
}
|
}
|
||||||
|
|
||||||
iframeHTML.push(scriptTag(
|
iframeHTML.push(scriptTag(
|
||||||
Ace2Editor.EMBEDED[KERNEL_SOURCE] + '\n\
|
Ace2Editor.EMBEDED[KERNEL_SOURCE] + '\n\
|
||||||
require.setRootURI("../javascripts/src");\n\
|
require.setRootURI("../javascripts/src");\n\
|
||||||
require.setLibraryURI("../javascripts/lib");\n\
|
require.setLibraryURI("../javascripts/lib");\n\
|
||||||
require.setGlobalKeyPath("require");\n\
|
require.setGlobalKeyPath("require");\n\
|
||||||
\n\
|
'));
|
||||||
var hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks");\n\
|
|
||||||
var plugins = require("ep_etherpad-lite/static/js/pluginfw/client_plugins");\n\
|
iframeHTML.push('<script type="text/javascript" src="../static/plugins/requirejs/require.js"></script>');
|
||||||
hooks.plugins = plugins;\n\
|
|
||||||
plugins.adoptPluginsFromAncestorsOf(window);\n\
|
iframeHTML.push(scriptTag('\n\
|
||||||
\n\
|
var pathComponents = parent.parent.location.pathname.split("/");\n\
|
||||||
$ = jQuery = require("ep_etherpad-lite/static/js/rjquery").jQuery; // Expose jQuery #HACK\n\
|
var baseURL = pathComponents.slice(0,pathComponents.length-2).join("/") + "/";\n\
|
||||||
var Ace2Inner = require("ep_etherpad-lite/static/js/ace2_inner");\n\
|
requirejs.config({\n\
|
||||||
\n\
|
baseUrl: baseURL + "static/plugins",\n\
|
||||||
plugins.ensure(function () {\n\
|
paths: {underscore: baseURL + "static/plugins/underscore/underscore"}\n\
|
||||||
|
});\n\
|
||||||
|
\n\
|
||||||
|
requirejs(["ep_etherpad-lite/static/js/rjquery", "ep_etherpad-lite/static/js/pluginfw/client_plugins", "ep_etherpad-lite/static/js/ace2_inner"], function (j, plugins, Ace2Inner) {\n\
|
||||||
|
jQuery = $ = window.jQuery = window.$ = j; // Expose jQuery #HACK\n\
|
||||||
|
\n\
|
||||||
|
plugins.adoptPluginsFromAncestorsOf(window, function () {\n\
|
||||||
|
var hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks");\n\
|
||||||
|
hooks.plugins = plugins;\n\
|
||||||
|
\n\
|
||||||
|
plugins.ensure(function () {\n\
|
||||||
Ace2Inner.init();\n\
|
Ace2Inner.init();\n\
|
||||||
});\n\
|
});\n\
|
||||||
'));
|
});\n\
|
||||||
|
});\n\
|
||||||
|
'));
|
||||||
|
|
||||||
iframeHTML.push('<style type="text/css" title="dynamicsyntax"></style>');
|
iframeHTML.push('<style type="text/css" title="dynamicsyntax"></style>');
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,9 @@
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
var _, $, jQuery, plugins, Ace2Common;
|
|
||||||
|
define(["ep_etherpad-lite/static/js/rjquery", "underscore"], function ($, _) {
|
||||||
|
var exports = {};
|
||||||
|
|
||||||
var browser = require('./browser').browser;
|
var browser = require('./browser').browser;
|
||||||
if(browser.msie){
|
if(browser.msie){
|
||||||
|
@ -32,11 +34,7 @@ if(browser.msie){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ace2Common = require('./ace2_common');
|
var Ace2Common = require('./ace2_common');
|
||||||
|
|
||||||
plugins = require('ep_etherpad-lite/static/js/pluginfw/client_plugins');
|
|
||||||
$ = jQuery = require('./rjquery').$;
|
|
||||||
_ = require("./underscore");
|
|
||||||
|
|
||||||
var isNodeText = Ace2Common.isNodeText,
|
var isNodeText = Ace2Common.isNodeText,
|
||||||
getAssoc = Ace2Common.getAssoc,
|
getAssoc = Ace2Common.getAssoc,
|
||||||
|
@ -45,7 +43,7 @@ var isNodeText = Ace2Common.isNodeText,
|
||||||
binarySearchInfinite = Ace2Common.binarySearchInfinite,
|
binarySearchInfinite = Ace2Common.binarySearchInfinite,
|
||||||
htmlPrettyEscape = Ace2Common.htmlPrettyEscape,
|
htmlPrettyEscape = Ace2Common.htmlPrettyEscape,
|
||||||
noop = Ace2Common.noop;
|
noop = Ace2Common.noop;
|
||||||
var hooks = require('./pluginfw/hooks');
|
var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
|
||||||
|
|
||||||
function Ace2Inner(){
|
function Ace2Inner(){
|
||||||
|
|
||||||
|
@ -5470,3 +5468,6 @@ exports.init = function () {
|
||||||
var editor = new Ace2Inner()
|
var editor = new Ace2Inner()
|
||||||
editor.init();
|
editor.init();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
return exports;
|
||||||
|
});
|
||||||
|
|
|
@ -27,7 +27,7 @@ var Changeset = require('./Changeset');
|
||||||
var linestylefilter = require('./linestylefilter').linestylefilter;
|
var linestylefilter = require('./linestylefilter').linestylefilter;
|
||||||
var colorutils = require('./colorutils').colorutils;
|
var colorutils = require('./colorutils').colorutils;
|
||||||
var _ = require('./underscore');
|
var _ = require('./underscore');
|
||||||
var hooks = require('./pluginfw/hooks');
|
var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
|
||||||
|
|
||||||
// These parameters were global, now they are injected. A reference to the
|
// These parameters were global, now they are injected. A reference to the
|
||||||
// Timeslider controller would probably be more appropriate.
|
// Timeslider controller would probably be more appropriate.
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
var padutils = require('./pad_utils').padutils;
|
var padutils = require('./pad_utils').padutils;
|
||||||
var padcookie = require('./pad_cookie').padcookie;
|
var padcookie = require('./pad_cookie').padcookie;
|
||||||
var Tinycon = require('tinycon/tinycon');
|
var Tinycon = require('tinycon/tinycon');
|
||||||
var hooks = require('./pluginfw/hooks');
|
var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
|
||||||
var padeditor = require('./pad_editor').padeditor;
|
var padeditor = require('./pad_editor').padeditor;
|
||||||
|
|
||||||
var chat = (function()
|
var chat = (function()
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var chat = require('./chat').chat;
|
var chat = require('./chat').chat;
|
||||||
var hooks = require('./pluginfw/hooks');
|
var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
|
||||||
|
|
||||||
// Dependency fill on init. This exists for `pad.socket` only.
|
// Dependency fill on init. This exists for `pad.socket` only.
|
||||||
// TODO: bind directly to the socket.
|
// TODO: bind directly to the socket.
|
||||||
|
|
|
@ -27,7 +27,7 @@ var _MAX_LIST_LEVEL = 16;
|
||||||
|
|
||||||
var UNorm = require('unorm');
|
var UNorm = require('unorm');
|
||||||
var Changeset = require('./Changeset');
|
var Changeset = require('./Changeset');
|
||||||
var hooks = require('./pluginfw/hooks');
|
var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
|
||||||
var _ = require('./underscore');
|
var _ = require('./underscore');
|
||||||
|
|
||||||
function sanitizeUnicode(s)
|
function sanitizeUnicode(s)
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
// requires: undefined
|
// requires: undefined
|
||||||
|
|
||||||
var Security = require('./security');
|
var Security = require('./security');
|
||||||
var hooks = require('./pluginfw/hooks');
|
var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
|
||||||
var _ = require('./underscore');
|
var _ = require('./underscore');
|
||||||
var lineAttributeMarker = require('./linestylefilter').lineAttributeMarker;
|
var lineAttributeMarker = require('./linestylefilter').lineAttributeMarker;
|
||||||
var noop = function(){};
|
var noop = function(){};
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
// requires: undefined
|
// requires: undefined
|
||||||
|
|
||||||
var Changeset = require('./Changeset');
|
var Changeset = require('./Changeset');
|
||||||
var hooks = require('./pluginfw/hooks');
|
var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
|
||||||
var linestylefilter = {};
|
var linestylefilter = {};
|
||||||
var _ = require('./underscore');
|
var _ = require('./underscore');
|
||||||
var AttributeManager = require('./AttributeManager');
|
var AttributeManager = require('./AttributeManager');
|
||||||
|
|
|
@ -48,7 +48,7 @@ var readCookie = require('./pad_utils').readCookie;
|
||||||
var randomString = require('./pad_utils').randomString;
|
var randomString = require('./pad_utils').randomString;
|
||||||
var gritter = require('./gritter').gritter;
|
var gritter = require('./gritter').gritter;
|
||||||
|
|
||||||
var hooks = require('./pluginfw/hooks');
|
var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
|
||||||
|
|
||||||
var receivedClientVars = false;
|
var receivedClientVars = false;
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var hooks = require('./pluginfw/hooks');
|
var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
|
||||||
var padutils = require('./pad_utils').padutils;
|
var padutils = require('./pad_utils').padutils;
|
||||||
var padeditor = require('./pad_editor').padeditor;
|
var padeditor = require('./pad_editor').padeditor;
|
||||||
var padsavedrevs = require('./pad_savedrevs');
|
var padsavedrevs = require('./pad_savedrevs');
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var padutils = require('./pad_utils').padutils;
|
var padutils = require('./pad_utils').padutils;
|
||||||
var hooks = require('./pluginfw/hooks');
|
var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
|
||||||
|
|
||||||
var myUserInfo = {};
|
var myUserInfo = {};
|
||||||
|
|
||||||
|
|
|
@ -1,32 +1,33 @@
|
||||||
var $, jQuery;
|
define(["ep_etherpad-lite/static/js/rjquery", "underscore", './shared'], function ($, _, pluginUtils) {
|
||||||
$ = jQuery = require("ep_etherpad-lite/static/js/rjquery").$;
|
var exports = {};
|
||||||
var _ = require("underscore");
|
|
||||||
|
|
||||||
var pluginUtils = require('./shared');
|
exports.loaded = false;
|
||||||
|
exports.plugins = {};
|
||||||
|
exports.parts = [];
|
||||||
|
exports.hooks = {};
|
||||||
|
exports.baseURL = '';
|
||||||
|
|
||||||
exports.loaded = false;
|
exports.loadModule = function(path, cb) {
|
||||||
exports.plugins = {};
|
requirejs([path], cb);
|
||||||
exports.parts = [];
|
}
|
||||||
exports.hooks = {};
|
|
||||||
exports.baseURL = '';
|
|
||||||
|
|
||||||
exports.ensure = function (cb) {
|
exports.ensure = function (cb) {
|
||||||
if (!exports.loaded)
|
if (!exports.loaded)
|
||||||
exports.update(cb);
|
exports.update(cb);
|
||||||
else
|
else
|
||||||
cb();
|
cb();
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.update = function (cb) {
|
exports.update = function (cb) {
|
||||||
// It appears that this response (see #620) may interrupt the current thread
|
// It appears that this response (see #620) may interrupt the current thread
|
||||||
// of execution on Firefox. This schedules the response in the run-loop,
|
// of execution on Firefox. This schedules the response in the run-loop,
|
||||||
// which appears to fix the issue.
|
// which appears to fix the issue.
|
||||||
var callback = function () {setTimeout(cb, 0);};
|
var callback = function () {setTimeout(cb, 0);};
|
||||||
|
|
||||||
jQuery.getJSON(exports.baseURL + 'pluginfw/plugin-definitions.json', function(data) {
|
$.getJSON(exports.baseURL + 'pluginfw/plugin-definitions.json', function(data) {
|
||||||
exports.plugins = data.plugins;
|
exports.plugins = data.plugins;
|
||||||
exports.parts = data.parts;
|
exports.parts = data.parts;
|
||||||
pluginUtils.extractHooks(exports.parts, "client_hooks", undefined, function (err, hooks) {
|
pluginUtils.extractHooks(exports.parts, "client_hooks", exports.loadModule, function (err, hooks) {
|
||||||
exports.hooks = hooks;
|
exports.hooks = hooks;
|
||||||
exports.loaded = true;
|
exports.loaded = true;
|
||||||
callback();
|
callback();
|
||||||
|
@ -35,9 +36,9 @@ exports.update = function (cb) {
|
||||||
console.error("Failed to load plugin-definitions: " + err);
|
console.error("Failed to load plugin-definitions: " + err);
|
||||||
callback();
|
callback();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
function adoptPlugins(plugins) {
|
function adoptPlugins(plugins) {
|
||||||
var keys = [
|
var keys = [
|
||||||
'loaded', 'plugins', 'parts', 'hooks', 'baseURL', 'ensure', 'update'];
|
'loaded', 'plugins', 'parts', 'hooks', 'baseURL', 'ensure', 'update'];
|
||||||
|
|
||||||
|
@ -45,15 +46,15 @@ function adoptPlugins(plugins) {
|
||||||
var key = keys[i];
|
var key = keys[i];
|
||||||
exports[key] = plugins[key];
|
exports[key] = plugins[key];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function adoptPluginsFromAncestorsOf(frame) {
|
function adoptPluginsFromAncestorsOf(frame, cb) {
|
||||||
// Bind plugins with parent;
|
// Bind plugins with parent;
|
||||||
var parentRequire = null;
|
var parentRequire = null;
|
||||||
try {
|
try {
|
||||||
while (frame = frame.parent) {
|
while (frame = frame.parent) {
|
||||||
if (typeof (frame.require) !== "undefined") {
|
if (typeof (frame.require) !== "undefined") {
|
||||||
parentRequire = frame.require;
|
parentRequire = frame.requirejs;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,12 +62,22 @@ function adoptPluginsFromAncestorsOf(frame) {
|
||||||
// Silence (this can only be a XDomain issue).
|
// Silence (this can only be a XDomain issue).
|
||||||
}
|
}
|
||||||
if (parentRequire) {
|
if (parentRequire) {
|
||||||
var ancestorPlugins = parentRequire("ep_etherpad-lite/static/js/pluginfw/client_plugins");
|
parentRequire(["ep_etherpad-lite/static/js/pluginfw/client_plugins"], function (ancestorPlugins) {
|
||||||
exports.adoptPlugins(ancestorPlugins);
|
exports.adoptPlugins(ancestorPlugins);
|
||||||
|
cb();
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
throw new Error("Parent plugins could not be found.")
|
throw new Error("Parent plugins could not be found.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.adoptPlugins = adoptPlugins;
|
exports.adoptPlugins = adoptPlugins;
|
||||||
exports.adoptPluginsFromAncestorsOf = adoptPluginsFromAncestorsOf;
|
exports.adoptPluginsFromAncestorsOf = adoptPluginsFromAncestorsOf;
|
||||||
|
|
||||||
|
out = {};
|
||||||
|
Object.keys(exports).map(function(key) {
|
||||||
|
out[key] = typeof(exports[key]);
|
||||||
|
});
|
||||||
|
|
||||||
|
return exports;
|
||||||
|
});
|
||||||
|
|
|
@ -8,8 +8,6 @@ var util = require("util");
|
||||||
var _ = require("underscore");
|
var _ = require("underscore");
|
||||||
var requirejs = require('requirejs');
|
var requirejs = require('requirejs');
|
||||||
|
|
||||||
var pluginUtils = require('./shared');
|
|
||||||
|
|
||||||
exports.prefix = 'ep_';
|
exports.prefix = 'ep_';
|
||||||
exports.loaded = false;
|
exports.loaded = false;
|
||||||
exports.plugins = {};
|
exports.plugins = {};
|
||||||
|
@ -76,8 +74,13 @@ exports.callInit = function (cb) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.pathNormalization = function (part, hook_fn_name) {
|
exports.loadModule = function(path, cb) {
|
||||||
return path.normalize(path.join(path.dirname(exports.plugins[part.plugin].package.path), hook_fn_name));
|
try {
|
||||||
|
cb(require(path));
|
||||||
|
console.warn("Module uses old CommonJS format: " + path);
|
||||||
|
} catch (e) {
|
||||||
|
requirejs([path], cb);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.update = function (cb) {
|
exports.update = function (cb) {
|
||||||
|
@ -94,15 +97,18 @@ exports.update = function (cb) {
|
||||||
if (err) cb(err);
|
if (err) cb(err);
|
||||||
exports.plugins = plugins;
|
exports.plugins = plugins;
|
||||||
exports.parts = sortParts(parts);
|
exports.parts = sortParts(parts);
|
||||||
pluginUtils.extractHooks(exports.parts, "hooks", exports.pathNormalization, function (err, hooks) {
|
|
||||||
|
requirejs(["ep_etherpad-lite/static/js/pluginfw/shared"], function (pluginUtils) {
|
||||||
|
pluginUtils.extractHooks(exports.parts, "hooks", exports.loadModule, function (err, hooks) {
|
||||||
exports.hooks = hooks;
|
exports.hooks = hooks;
|
||||||
// Load client side hooks here too, so we don't have to call it from formatHooks (which is synchronous)
|
// Load client side hooks here too, so we don't have to call it from formatHooks (which is synchronous)
|
||||||
pluginUtils.extractHooks(exports.parts, "client_hooks", exports.pathNormalization, function (err, hooks) {
|
pluginUtils.extractHooks(exports.parts, "client_hooks", exports.loadModule, function (err, hooks) {
|
||||||
exports.client_hooks = hooks;
|
exports.client_hooks = hooks;
|
||||||
exports.loaded = true;
|
exports.loaded = true;
|
||||||
exports.callInit(cb);
|
exports.callInit(cb);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
var _ = require("underscore");
|
define(["underscore", "async/lib/async"], function (_, async) {
|
||||||
var async = require("async/lib/async");
|
var exports = {};
|
||||||
if (typeof(requirejs) == "undefined") {
|
|
||||||
|
if (typeof(requirejs) == "undefined") {
|
||||||
if (typeof(window) != "undefined") {
|
if (typeof(window) != "undefined") {
|
||||||
var requirejs = window.requirejs;
|
var requirejs = window.requirejs;
|
||||||
} else {
|
} else {
|
||||||
var requirejs = require('requirejs');
|
var requirejs = require('requirejs');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadFn(path, hookName, cb) {
|
function loadFn(path, hookName, loadModule, cb) {
|
||||||
var functionName
|
var functionName
|
||||||
, parts = path.split(":");
|
, parts = path.split(":");
|
||||||
|
|
||||||
|
@ -23,29 +24,17 @@ function loadFn(path, hookName, cb) {
|
||||||
functionName = parts[1];
|
functionName = parts[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
var handleFunction = function (fn) {
|
loadModule(path, function (fn) {
|
||||||
functionName = functionName ? functionName : hookName;
|
functionName = functionName ? functionName : hookName;
|
||||||
|
|
||||||
_.each(functionName.split("."), function (name) {
|
_.each(functionName.split("."), function (name) {
|
||||||
fn = fn[name];
|
fn = fn[name];
|
||||||
});
|
});
|
||||||
cb(null, fn);
|
cb(null, fn);
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
if (require.resolve != undefined) {
|
function extractHooks(parts, hook_set_name, loadModule, cb) {
|
||||||
/* We're apparently in NodeJS, so try to load using the built-in require first */
|
|
||||||
try {
|
|
||||||
handleFunction(require(path));
|
|
||||||
console.warn("Module uses old CommonJS format: " + path);
|
|
||||||
} catch (e) {
|
|
||||||
requirejs([path], handleFunction);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
requirejs([path], handleFunction);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
function extractHooks(parts, hook_set_name, normalizer, cb) {
|
|
||||||
var hooks = {};
|
var hooks = {};
|
||||||
|
|
||||||
async.each(parts, function (part, cb) {
|
async.each(parts, function (part, cb) {
|
||||||
|
@ -57,17 +46,7 @@ function extractHooks(parts, hook_set_name, normalizer, cb) {
|
||||||
|
|
||||||
var hook_fn_name = part[hook_set_name][hook_name];
|
var hook_fn_name = part[hook_set_name][hook_name];
|
||||||
|
|
||||||
/* On the server side, you can't just
|
loadFn(hook_fn_name, hook_name, loadModule, function (err, hook_fn) {
|
||||||
* require("pluginname/whatever") if the plugin is installed as
|
|
||||||
* a dependency of another plugin! Bah, pesky little details of
|
|
||||||
* npm... */
|
|
||||||
/*
|
|
||||||
if (normalizer) {
|
|
||||||
hook_fn_name = normalizer(part, hook_fn_name);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
loadFn(hook_fn_name, hook_name, function (err, hook_fn) {
|
|
||||||
if (hook_fn) {
|
if (hook_fn) {
|
||||||
hooks[hook_name].push({"hook_name": hook_name, "hook_fn": hook_fn, "hook_fn_name": hook_fn_name, "part": part});
|
hooks[hook_name].push({"hook_name": hook_name, "hook_fn": hook_fn, "hook_fn_name": hook_fn_name, "part": part});
|
||||||
} else {
|
} else {
|
||||||
|
@ -80,6 +59,9 @@ function extractHooks(parts, hook_set_name, normalizer, cb) {
|
||||||
}, function (err) {
|
}, function (err) {
|
||||||
cb(err, hooks);
|
cb(err, hooks);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.extractHooks = extractHooks;
|
exports.extractHooks = extractHooks;
|
||||||
|
|
||||||
|
return exports;
|
||||||
|
});
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
|
/* Proviedes a require'able version of jQuery without leaking $ and jQuery;
|
||||||
// Proviedes a require'able version of jQuery without leaking $ and jQuery;
|
* works around wierdnesses in jquerys own packaging that makes dummy be undefined in the call below
|
||||||
require('./jquery');
|
*/
|
||||||
var jq = window.$.noConflict(true);
|
define.amd.jQuery = true;
|
||||||
exports.jQuery = exports.$ = jq;
|
define(["ep_etherpad-lite/static/js/jquery"], function (dummy) {
|
||||||
|
return window.$.noConflict(true);
|
||||||
|
});
|
||||||
|
|
|
@ -28,7 +28,7 @@ JSON = require('./json2');
|
||||||
var createCookie = require('./pad_utils').createCookie;
|
var createCookie = require('./pad_utils').createCookie;
|
||||||
var readCookie = require('./pad_utils').readCookie;
|
var readCookie = require('./pad_utils').readCookie;
|
||||||
var randomString = require('./pad_utils').randomString;
|
var randomString = require('./pad_utils').randomString;
|
||||||
var hooks = require('./pluginfw/hooks');
|
var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
|
||||||
|
|
||||||
var token, padId, export_links;
|
var token, padId, export_links;
|
||||||
|
|
||||||
|
|
|
@ -371,8 +371,8 @@
|
||||||
<script type="text/javascript" src="../static/plugins/requirejs/require.js"></script>
|
<script type="text/javascript" src="../static/plugins/requirejs/require.js"></script>
|
||||||
|
|
||||||
<!-- Include base packages manually (this help with debugging) -->
|
<!-- Include base packages manually (this help with debugging) -->
|
||||||
<script type="text/javascript" src="../javascripts/lib/ep_etherpad-lite/static/js/pad.js?callback=require.define"></script>
|
<!-- script type="text/javascript" src="../javascripts/lib/ep_etherpad-lite/static/js/pad.js?callback=require.define"></script>
|
||||||
<script type="text/javascript" src="../javascripts/lib/ep_etherpad-lite/static/js/ace2_common.js?callback=require.define"></script>
|
<script type="text/javascript" src="../javascripts/lib/ep_etherpad-lite/static/js/ace2_common.js?callback=require.define"></script -->
|
||||||
|
|
||||||
<% e.begin_block("customScripts"); %>
|
<% e.begin_block("customScripts"); %>
|
||||||
<script type="text/javascript" src="../static/custom/pad.js"></script>
|
<script type="text/javascript" src="../static/custom/pad.js"></script>
|
||||||
|
@ -391,17 +391,22 @@
|
||||||
require.setLibraryURI(baseURL + "javascripts/lib");
|
require.setLibraryURI(baseURL + "javascripts/lib");
|
||||||
require.setGlobalKeyPath("require");
|
require.setGlobalKeyPath("require");
|
||||||
|
|
||||||
|
window.requireKernel = require;
|
||||||
|
|
||||||
requirejs.config({
|
requirejs.config({
|
||||||
baseUrl: baseURL + "static/plugins"
|
baseUrl: baseURL + "static/plugins",
|
||||||
|
paths: {'underscore': baseURL + "static/plugins/underscore/underscore"}
|
||||||
});
|
});
|
||||||
|
|
||||||
$ = jQuery = require('ep_etherpad-lite/static/js/rjquery').jQuery; // Expose jQuery #HACK
|
requirejs(["ep_etherpad-lite/static/js/rjquery", 'ep_etherpad-lite/static/js/pluginfw/client_plugins'], function ($, plugins) {
|
||||||
|
window.$ = $; // Expose jQuery #HACK
|
||||||
|
window.jQuery = $;
|
||||||
|
|
||||||
browser = require('ep_etherpad-lite/static/js/browser').browser;
|
browser = require('ep_etherpad-lite/static/js/browser').browser;
|
||||||
if ((!browser.msie) && (!(browser.mozilla && browser.version.indexOf("1.8.") == 0))) {
|
if ((!browser.msie) && (!(browser.mozilla && browser.version.indexOf("1.8.") == 0))) {
|
||||||
document.domain = document.domain; // for comet
|
document.domain = document.domain; // for comet
|
||||||
}
|
}
|
||||||
|
|
||||||
var plugins = require('ep_etherpad-lite/static/js/pluginfw/client_plugins');
|
|
||||||
var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
|
var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
|
||||||
|
|
||||||
plugins.baseURL = baseURL;
|
plugins.baseURL = baseURL;
|
||||||
|
@ -423,6 +428,7 @@
|
||||||
chat = require('ep_etherpad-lite/static/js/chat').chat;
|
chat = require('ep_etherpad-lite/static/js/chat').chat;
|
||||||
padeditbar = require('ep_etherpad-lite/static/js/pad_editbar').padeditbar;
|
padeditbar = require('ep_etherpad-lite/static/js/pad_editbar').padeditbar;
|
||||||
padimpexp = require('ep_etherpad-lite/static/js/pad_impexp').padimpexp;
|
padimpexp = require('ep_etherpad-lite/static/js/pad_impexp').padimpexp;
|
||||||
|
});
|
||||||
}());
|
}());
|
||||||
</script>
|
</script>
|
||||||
<% e.end_block(); %>
|
<% e.end_block(); %>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue