Compare commits

...

5 Commits

Author SHA1 Message Date
John McLear fb1373b891 comments shouldnt be hard coded 2020-11-03 22:31:16 +00:00
John McLear a0d5718675 docs 2020-11-03 22:28:50 +00:00
John McLear 73b375577b just a basic example, needs working on still 2020-11-03 22:25:05 +00:00
John McLear f2abbdb5d8 proper prefix 2020-11-03 22:13:20 +00:00
John McLear 55900b4c23 export support 2020-11-03 22:04:01 +00:00
3 changed files with 42 additions and 0 deletions

View File

@ -751,6 +751,21 @@ exports.exportHtmlAdditionalTagsWithData = function(hook, pad, cb){
};
```
## exportEtherpadAdditionalContent
Called from src/node/utils/ExportEtherpad.js and src/node/utils/ImportEtherpad.js
Things in context:
Useful for exporting and importing non-pad centric data stored about a pad. For example in ep_comments_page the comments are stored as comments:padId:uniqueIdOfComment and as such when you export .etherpad this data is not included.
Example:
```
// Add support for exporting comments metadata
exports.exportEtherpadAdditionalContent = function(hook_name, context, callback){
return callback(["comments"]);
};
```
## userLeave
Called from src/node/handler/PadMessageHandler.js

View File

@ -16,6 +16,7 @@
let db = require("../db/DB");
let hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
exports.getPadRaw = async function(padId) {
@ -58,5 +59,17 @@ exports.getPadRaw = async function(padId) {
}
}
await Promise.all([
// get content that has a different prefix IE comments:padId:foo
// a plugin would return something likle ["comments", "cakes"]
hooks.aCallAll('exportEtherpadAdditionalContent').then((prefixes) => {
prefixes.forEach(async function(prefix) {
let pluginContent = await db.get(prefix + ":" + padId);
data[prefix + ":" + padId] = pluginContent;
});
})
]);
return data;
}

View File

@ -16,6 +16,7 @@
var log4js = require('log4js');
const db = require("../db/DB");
const hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
exports.setPadRaw = function(padId, records)
{
@ -62,6 +63,19 @@ exports.setPadRaw = function(padId, records)
// and create the value
newKey = oldPadId.join(":"); // create the new key
}
// is this a key that is supported through a plugin?
await Promise.all([
// get content that has a different prefix IE comments:padId:foo
// a plugin would return something likle ["comments", "cakes"]
hooks.aCallAll('exportEtherpadAdditionalContent').then((prefixes) => {
prefixes.forEach(async function(prefix) {
if(key.split(":")[0] === prefix){
newKey = prefix + ":" + padId;
}
});
})
]);
}
// Write the value to the server