aboutsummaryrefslogtreecommitdiffstats
path: root/infrastructure/ace
diff options
context:
space:
mode:
authorEgil Moeller <egil.moller@freecode.no>2010-03-25 17:53:24 +0100
committerEgil Moeller <egil.moller@freecode.no>2010-03-25 17:53:24 +0100
commitb897b18b9cb727f277a41ba12349548fe854d724 (patch)
treed49b2f9da7dd9bd2e6d590a1536ff48576914e7f /infrastructure/ace
parente19fc9f24ab128d4337d67d0e3f312a1ab0be38b (diff)
downloadetherpad-b897b18b9cb727f277a41ba12349548fe854d724.tar.gz
etherpad-b897b18b9cb727f277a41ba12349548fe854d724.tar.xz
etherpad-b897b18b9cb727f277a41ba12349548fe854d724.zip
Added support for plugins in the ACE linefilter
Diffstat (limited to 'infrastructure/ace')
-rw-r--r--infrastructure/ace/www/ace2_inner.js10
-rw-r--r--infrastructure/ace/www/linestylefilter.js29
2 files changed, 28 insertions, 11 deletions
diff --git a/infrastructure/ace/www/ace2_inner.js b/infrastructure/ace/www/ace2_inner.js
index afd1e35..e817c95 100644
--- a/infrastructure/ace/www/ace2_inner.js
+++ b/infrastructure/ace/www/ace2_inner.js
@@ -1139,15 +1139,7 @@ function OUTER(gscope) {
}
else {
var offsetIntoLine = 0;
- var filteredFunc = textAndClassFunc;
- filteredFunc = linestylefilter.getURLFilter(text, filteredFunc);
- if (browser.msie) {
- // IE7+ will take an e-mail address like <foo@bar.com> and linkify it to foo@bar.com.
- // We then normalize it back to text with no angle brackets. It's weird. So always
- // break spans at an "at" sign.
- filteredFunc = linestylefilter.getAtSignSplitterFilter(
- text, filteredFunc);
- }
+ var filteredFunc = linestylefilter.getFilterStack(text, textAndClassFunc, browser);
var lineNum = rep.lines.indexOfEntry(lineEntry);
var aline = rep.alines[lineNum];
filteredFunc = linestylefilter.getLineStyleFilter(
diff --git a/infrastructure/ace/www/linestylefilter.js b/infrastructure/ace/www/linestylefilter.js
index 0ac578b..c493911 100644
--- a/infrastructure/ace/www/linestylefilter.js
+++ b/infrastructure/ace/www/linestylefilter.js
@@ -1,5 +1,6 @@
// THIS FILE IS ALSO AN APPJET MODULE: etherpad.collab.ace.linestylefilter
// %APPJET%: import("etherpad.collab.ace.easysync2.Changeset");
+// %APPJET%: import("etherpad.admin.plugins");
/**
* Copyright 2009 Google Inc.
@@ -18,6 +19,10 @@
*/
// requires: easysync2.Changeset
+// requires: top
+// requires: plugins
+// requires: plugins
+// requires: undefined
var linestylefilter = {};
@@ -226,6 +231,27 @@ linestylefilter.textAndClassFuncSplitter = function(func, splitPointsOpt) {
return spanHandler;
};
+linestylefilter.getFilterStack = function(lineText, textAndClassFunc, browser) {
+ var func = linestylefilter.getURLFilter(lineText, textAndClassFunc);
+
+ /* Handle both client and server side situation */
+
+ var pluginModule = (top == undefined) ? plugins : top.plugins;
+
+ var hookFilters = pluginModule.callHook("aceGetFilterStack", {linestylefilter:linestylefilter, browser:browser});
+ for (var i = 0; i < hookFilters.length; i++)
+ func = hookFilters[i](lineText, func);
+
+ if (browser !== undefined && browser.msie) {
+ // IE7+ will take an e-mail address like <foo@bar.com> and linkify it to foo@bar.com.
+ // We then normalize it back to text with no angle brackets. It's weird. So always
+ // break spans at an "at" sign.
+ func = linestylefilter.getAtSignSplitterFilter(
+ lineText, func);
+ }
+ return func;
+};
+
// domLineObj is like that returned by domline.createDomLine
linestylefilter.populateDomLine = function(textLine, aline, apool,
domLineObj) {
@@ -239,8 +265,7 @@ linestylefilter.populateDomLine = function(textLine, aline, apool,
domLineObj.appendSpan(tokenText, tokenClass);
}
- var func = textAndClassFunc;
- func = linestylefilter.getURLFilter(text, func);
+ var func = linestylefilter.getFilterStack(text, textAndClassFunc);
func = linestylefilter.getLineStyleFilter(text.length, aline,
func, apool);
func(text, '');