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 pluginspull/2494/merge
commit
831151cfba
|
@ -245,7 +245,7 @@ Things in context:
|
|||
2. attribLine - line attributes
|
||||
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:
|
||||
```
|
||||
|
@ -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
|
||||
Called from: src/node/utils/ExportHtml.js
|
||||
|
||||
|
|
|
@ -411,14 +411,28 @@ function getHTMLFromAtext(pad, atext, authorColors)
|
|||
}
|
||||
lists = []
|
||||
|
||||
var lineContentFromHook = hooks.callAllStr("getLineHTMLForExport",
|
||||
{
|
||||
var context = {
|
||||
line: line,
|
||||
lineContent: lineContent,
|
||||
apool: apool,
|
||||
attribLine: attribLines[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)
|
||||
{
|
||||
pieces.push(lineContentFromHook, '');
|
||||
|
|
Loading…
Reference in New Issue