mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-21 16:06:16 -04:00
Merge pull request #2487 from ether/html-e-hook
Better HTML Export rewrite hook allows functions to be passed instead of strings means state is saved between plugins
This commit is contained in:
commit
831151cfba
2 changed files with 51 additions and 4 deletions
|
@ -245,7 +245,7 @@ Things in context:
|
||||||
2. attribLine - line attributes
|
2. attribLine - line attributes
|
||||||
3. text - line text
|
3. text - line text
|
||||||
|
|
||||||
This hook will allow a plug-in developer to re-write each line when exporting to HTML.
|
This hook will allow a plug-in developer to re-write each line when exporting to HTML. Note that you problably don't want to use this plugin and will probably get better results from `asyncLineHTMLForExport`
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
```
|
```
|
||||||
|
@ -271,6 +271,39 @@ function _analyzeLine(alineAttrs, apool) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## asyncLineHTMLForExport
|
||||||
|
Called from: src/node/utils/ExportHtml.js
|
||||||
|
|
||||||
|
Things in context:
|
||||||
|
|
||||||
|
1. The context of the line
|
||||||
|
2. lineContents - The HTML of the line
|
||||||
|
3. Attribute pool
|
||||||
|
4. Attribute line
|
||||||
|
5. Line Text
|
||||||
|
|
||||||
|
This hook will allow functions to be returned to modify the HTML.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```
|
||||||
|
exports.asyncLineHTMLForExport = function (hook, context, cb) {
|
||||||
|
cb(rewriteLine);
|
||||||
|
}
|
||||||
|
|
||||||
|
function rewriteLine(context){
|
||||||
|
var lineContent = context.lineContent;
|
||||||
|
sizes.forEach(function(size){
|
||||||
|
size = size.replace("fs","");
|
||||||
|
if(lineContent){
|
||||||
|
lineContent = lineContent.replace("<fs"+size, "<span style='font-size:"+size+"px'");
|
||||||
|
lineContent = lineContent.replace("</fs"+size, "</span");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return lineContent;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## stylesForExport
|
## stylesForExport
|
||||||
Called from: src/node/utils/ExportHtml.js
|
Called from: src/node/utils/ExportHtml.js
|
||||||
|
|
||||||
|
|
|
@ -411,14 +411,28 @@ function getHTMLFromAtext(pad, atext, authorColors)
|
||||||
}
|
}
|
||||||
lists = []
|
lists = []
|
||||||
|
|
||||||
var lineContentFromHook = hooks.callAllStr("getLineHTMLForExport",
|
var context = {
|
||||||
{
|
|
||||||
line: line,
|
line: line,
|
||||||
lineContent: lineContent,
|
lineContent: lineContent,
|
||||||
apool: apool,
|
apool: apool,
|
||||||
attribLine: attribLines[i],
|
attribLine: attribLines[i],
|
||||||
text: textLines[i]
|
text: textLines[i]
|
||||||
}, " ", " ", "");
|
}
|
||||||
|
|
||||||
|
// See https://github.com/ether/etherpad-lite/issues/2486
|
||||||
|
hooks.aCallAll("asyncLineHTMLForExport", context, function(err, newLineFunction){
|
||||||
|
// For each function returned by the hook call
|
||||||
|
// Process the text based on the function
|
||||||
|
newLineFunction.forEach(function(fn){
|
||||||
|
context.lineContent = fn(context); // note the fn
|
||||||
|
});
|
||||||
|
// We now have a line that has been processed by each hook function
|
||||||
|
lineContent = context.lineContent; // modified lineContent here
|
||||||
|
});
|
||||||
|
|
||||||
|
// Old hook probably not to be used..
|
||||||
|
var lineContentFromHook = hooks.callAllStr("getLineHTMLForExport", context, " ", " ", "");
|
||||||
|
|
||||||
if (lineContentFromHook)
|
if (lineContentFromHook)
|
||||||
{
|
{
|
||||||
pieces.push(lineContentFromHook, '');
|
pieces.push(lineContentFromHook, '');
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue