var ERR = require("async-stacktrace"); var eejs = require('ep_etherpad-lite/node/eejs/'); var padMessage = require("ep_etherpad-lite/node/handler/PadMessageHandler.js"); var padManager = require("ep_etherpad-lite/node/db/PadManager.js"); exports.clientVars = function(hook, context, callback) { var globalViewInfo = {}; if (context.hasOwnProperty("pad")) { var pad = context.pad; if (pad.hasOwnProperty("globalViewInfo")) { globalViewInfo = pad.globalViewInfo; } } return callback({ "globalViewInfo": globalViewInfo }); }; exports.eejsBlock_globalSettings = function (hook_name, args, cb) { args.content = args.content + eejs.require("ep_global_view/templates/globalSettings.ejs"); return cb(); } exports.eejsBlock_styles = function (hook_name, args, cb) { args.content = args.content + eejs.require("ep_global_view/templates/globalSettings_styles.ejs"); return cb(); } exports.handleMessage = function(hook_name, context, cb) { if ( context.message.type == "COLLABROOM" && context.message.data.type == "GLOBAL_VIEW") { var client = context.client; var session = padMessage.sessioninfos[client.id]; padManager.getPad(session.padId, function(err, pad) { if (ERR(err)) return cb(); var globalViewInfo = {}; if (pad.hasOwnProperty("globalViewInfo")) { globalViewInfo = pad.globalViewInfo; } for (key in context.message.data.data) { globalViewInfo[key] = context.message.data.data[key]; } pad.globalViewInfo = globalViewInfo; pad.saveToDatabase(); var message = { "type": "COLLABROOM", "data": { type: "GLOABL_VIEW", globalViewInfo: globalViewInfo } }; client.broadcast.to(session.padId).json.send(message); return cb([null]); }); } else { return cb(); } };