mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-05-14 11:06:55 -04:00
Merge branch 'develop' of git://github.com/ether/etherpad-lite
Conflicts: src/templates/pad.html src/templates/timeslider.html
This commit is contained in:
commit
d3ead86db1
87 changed files with 12193 additions and 341 deletions
8
src/node/hooks/express/admin.js
Normal file
8
src/node/hooks/express/admin.js
Normal file
|
@ -0,0 +1,8 @@
|
|||
var eejs = require('ep_etherpad-lite/node/eejs');
|
||||
|
||||
exports.expressCreateServer = function (hook_name, args, cb) {
|
||||
args.app.get('/admin', function(req, res) {
|
||||
res.send( eejs.require("ep_etherpad-lite/templates/admin/index.html", {}) );
|
||||
});
|
||||
}
|
||||
|
54
src/node/hooks/express/adminsettings.js
Normal file
54
src/node/hooks/express/adminsettings.js
Normal file
|
@ -0,0 +1,54 @@
|
|||
var path = require('path');
|
||||
var eejs = require('ep_etherpad-lite/node/eejs');
|
||||
var settings = require('ep_etherpad-lite/node/utils/Settings');
|
||||
var installer = require('ep_etherpad-lite/static/js/pluginfw/installer');
|
||||
var hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks");
|
||||
var fs = require('fs');
|
||||
|
||||
exports.expressCreateServer = function (hook_name, args, cb) {
|
||||
args.app.get('/admin/settings', function(req, res) {
|
||||
|
||||
var render_args = {
|
||||
settings: "",
|
||||
search_results: {},
|
||||
errors: []
|
||||
};
|
||||
|
||||
res.send( eejs.require("ep_etherpad-lite/templates/admin/settings.html", render_args) );
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
exports.socketio = function (hook_name, args, cb) {
|
||||
var io = args.io.of("/settings");
|
||||
io.on('connection', function (socket) {
|
||||
if (!socket.handshake.session.user || !socket.handshake.session.user.is_admin) return;
|
||||
|
||||
socket.on("load", function (query) {
|
||||
fs.readFile('settings.json', 'utf8', function (err,data) {
|
||||
if (err) {
|
||||
return console.log(err);
|
||||
}
|
||||
else
|
||||
{
|
||||
socket.emit("settings", {results: data});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
socket.on("saveSettings", function (settings) {
|
||||
fs.writeFile('settings.json', settings, function (err) {
|
||||
if (err) throw err;
|
||||
socket.emit("saveprogress", "saved");
|
||||
});
|
||||
});
|
||||
|
||||
socket.on("restartServer", function () {
|
||||
console.log("Admin request to restart server through a socket on /admin/settings");
|
||||
settings.reloadSettings();
|
||||
hooks.aCallAll("restartServer", {}, function () {});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
}
|
|
@ -12,12 +12,32 @@ exports.expressCreateServer = function (hook_name, args, cb) {
|
|||
//serve robots.txt
|
||||
args.app.get('/robots.txt', function(req, res)
|
||||
{
|
||||
var filePath = path.normalize(__dirname + "/../../../static/robots.txt");
|
||||
res.sendfile(filePath);
|
||||
var filePath = path.normalize(__dirname + "/../../../static/custom/robots.txt");
|
||||
res.sendfile(filePath, function(err)
|
||||
{
|
||||
//there is no custom favicon, send the default robots.txt which dissallows all
|
||||
if(err)
|
||||
{
|
||||
filePath = path.normalize(__dirname + "/../../../static/robots.txt");
|
||||
res.sendfile(filePath);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//serve favicon.ico
|
||||
args.app.get('/favicon.ico', function(req, res)
|
||||
//serve pad.html under /p
|
||||
args.app.get('/p/:pad', function(req, res, next)
|
||||
{
|
||||
res.send(eejs.require("ep_etherpad-lite/templates/pad.html", {req: req}));
|
||||
});
|
||||
|
||||
//serve timeslider.html under /p/$padname/timeslider
|
||||
args.app.get('/p/:pad/timeslider', function(req, res, next)
|
||||
{
|
||||
res.send(eejs.require("ep_etherpad-lite/templates/timeslider.html", {req: req}));
|
||||
});
|
||||
|
||||
//serve favicon.ico from all path levels except as a pad name
|
||||
args.app.get( /\/favicon.ico$/, function(req, res)
|
||||
{
|
||||
var filePath = path.normalize(__dirname + "/../../../static/custom/favicon.ico");
|
||||
res.sendfile(filePath, function(err)
|
||||
|
@ -31,16 +51,5 @@ exports.expressCreateServer = function (hook_name, args, cb) {
|
|||
});
|
||||
});
|
||||
|
||||
//serve pad.html under /p
|
||||
args.app.get('/p/:pad', function(req, res, next)
|
||||
{
|
||||
res.send(eejs.require("ep_etherpad-lite/templates/pad.html"));
|
||||
});
|
||||
|
||||
//serve timeslider.html under /p/$padname/timeslider
|
||||
args.app.get('/p/:pad/timeslider', function(req, res, next)
|
||||
{
|
||||
res.send(eejs.require("ep_etherpad-lite/templates/timeslider.html"));
|
||||
});
|
||||
|
||||
}
|
46
src/node/hooks/express/tests.js
Normal file
46
src/node/hooks/express/tests.js
Normal file
|
@ -0,0 +1,46 @@
|
|||
var path = require("path");
|
||||
var fs = require("fs");
|
||||
|
||||
exports.expressCreateServer = function (hook_name, args, cb) {
|
||||
args.app.get('/tests/frontend/specs_list.js', function(req, res){
|
||||
fs.readdir('tests/frontend/specs', function(err, files){
|
||||
if(err){ return res.send(500); }
|
||||
|
||||
res.send("var specs_list = " + JSON.stringify(files.sort()) + ";\n");
|
||||
});
|
||||
});
|
||||
|
||||
var url2FilePath = function(url){
|
||||
var subPath = url.substr("/tests/frontend".length);
|
||||
if (subPath == ""){
|
||||
subPath = "index.html"
|
||||
}
|
||||
subPath = subPath.split("?")[0];
|
||||
|
||||
var filePath = path.normalize(__dirname + "/../../../../tests/frontend/")
|
||||
filePath += subPath.replace("..", "");
|
||||
return filePath;
|
||||
}
|
||||
|
||||
args.app.get('/tests/frontend/specs/*', function (req, res) {
|
||||
var specFilePath = url2FilePath(req.url);
|
||||
var specFileName = path.basename(specFilePath);
|
||||
|
||||
fs.readFile(specFilePath, function(err, content){
|
||||
if(err){ return res.send(500); }
|
||||
|
||||
content = "describe(" + JSON.stringify(specFileName) + ", function(){ " + content + " });";
|
||||
|
||||
res.send(content);
|
||||
});
|
||||
});
|
||||
|
||||
args.app.get('/tests/frontend/*', function (req, res) {
|
||||
var filePath = url2FilePath(req.url);
|
||||
res.sendfile(filePath);
|
||||
});
|
||||
|
||||
args.app.get('/tests/frontend', function (req, res) {
|
||||
res.redirect('/tests/frontend/');
|
||||
});
|
||||
}
|
33
src/node/hooks/i18n.js
Normal file
33
src/node/hooks/i18n.js
Normal file
|
@ -0,0 +1,33 @@
|
|||
var Globalize = require('globalize')
|
||||
, fs = require('fs')
|
||||
, path = require('path')
|
||||
, express = require('express')
|
||||
|
||||
var localesPath = __dirname+"/../../locales";
|
||||
|
||||
var localeIndex = '[*]\r\n@import url(locales/en.ini)\r\n';
|
||||
exports.availableLangs = {en: 'English'};
|
||||
|
||||
fs.readdir(localesPath, function(er, files) {
|
||||
files.forEach(function(locale) {
|
||||
locale = locale.split('.')[0]
|
||||
if(locale.toLowerCase() == 'en') return;
|
||||
|
||||
// build locale index
|
||||
localeIndex += '['+locale+']\r\n@import url(locales/'+locale+'.ini)\r\n'
|
||||
|
||||
require('globalize/lib/cultures/globalize.culture.'+locale+'.js')
|
||||
var culture = Globalize.cultures[locale];
|
||||
exports.availableLangs[culture.name] = culture.nativeName;
|
||||
})
|
||||
})
|
||||
|
||||
exports.expressCreateServer = function(n, args) {
|
||||
|
||||
args.app.use('/locales', express.static(localesPath));
|
||||
|
||||
args.app.get('/locales.ini', function(req, res) {
|
||||
res.send(localeIndex);
|
||||
})
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue