ep_profile_modal
Version:
profile modal for Etherpad
75 lines (66 loc) • 2.8 kB
JavaScript
const eejs = require('ep_etherpad-lite/node/eejs');
const db = require('ep_etherpad-lite/node/db/DB');
const padManager = require('ep_etherpad-lite/node/db/PadManager');
const async = require('../../../../src/node_modules/async');
exports.registerRoute = (hook_name, args, cb) => {
args.app.get('/admin/ep_profile_modal', (req, res) => {
const render_args = {
errors: [],
};
res.send(eejs.require('ep_profile_modal/templates/admin/admin.html', render_args));
});
args.app.get('/admin/ep_profile_modal_analytics', (req, res) => {
const render_args = {
errors: [],
};
res.send(eejs.require('ep_profile_modal/templates/admin/analytics.html', render_args));
});
return [];
};
exports.eejsBlock_adminMenu = (hook_name, args, cb) => {
const hasAdminUrlPrefix = (args.content.indexOf('<a href="admin/') !== -1);
const hasOneDirDown = (args.content.indexOf('<a href="../') !== -1);
const hasTwoDirDown = (args.content.indexOf('<a href="../../') !== -1);
const urlPrefix = hasAdminUrlPrefix ? 'admin/' : hasTwoDirDown ? '../../' : hasOneDirDown ? '../' : '';
args.content = `${args.content}<li><a href="${urlPrefix}ep_profile_modal">Profile modal plugin setting</a></li>`;
args.content = `${args.content}<li><a href="${urlPrefix}ep_profile_modal_analytics">Profile modal plugin analytics</a></li>`;
return [];
};
exports.socketio = (hook_name, args, cb) => {
io = args.io.of('/pluginfw/admin/ep_profile_modal');
io.on('connection', (socket) => {
// settings
socket.on('load-settings', async () => {
const settings = await db.get('ep_profile_modal_settings') || {};
socket.emit('load-settings-result', settings);
});
socket.on('save-settings', async (data) => {
console.log('we got this', data);
await db.set('ep_profile_modal_settings', data) || {};
});
socket.on('load-analytics', async (data) => {
const pad_users = await db.get(`ep_profile_modal_contributed_${data.pad}`) || [];
const email_contributed_users = await db.get(`ep_profile_modal_email_contributed_${data.pad}`) || [];
var pad_users_data = []
async.forEach(pad_users,
async userId=>{
let user = await db.get(`ep_profile_modal:${userId}_${data.pad}`) || false;
console.log("result of",userId,user)
pad_users_data.push(user)
},
async ()=>{
socket.emit('load-analytics-result', {
pad_users : pad_users ,
email_contributed_users : email_contributed_users ,
pad_users_data : pad_users_data
});
})
});
socket.on('load-pads', async ()=>{
const {padIDs} = await padManager.listAllPads();
socket.emit('load-pads-result', padIDs);
})
// settings
});
return [];
};