mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-23 00:46:16 -04:00
Merge branch 'develop' into improve_cookies
This commit is contained in:
commit
aefa617797
63 changed files with 1191 additions and 284 deletions
|
@ -76,7 +76,7 @@ exports.doExport = function(req, res, padId, type)
|
|||
}
|
||||
else if(type == "txt")
|
||||
{
|
||||
exporttxt.getPadTXTDocument(padId, req.params.rev, false, function(err, txt)
|
||||
exporttxt.getPadTXTDocument(padId, req.params.rev, function(err, txt)
|
||||
{
|
||||
if(ERR(err)) return;
|
||||
res.send(txt);
|
||||
|
@ -92,7 +92,7 @@ exports.doExport = function(req, res, padId, type)
|
|||
//render the html document
|
||||
function(callback)
|
||||
{
|
||||
exporthtml.getPadHTMLDocument(padId, req.params.rev, false, function(err, _html)
|
||||
exporthtml.getPadHTMLDocument(padId, req.params.rev, function(err, _html)
|
||||
{
|
||||
if(ERR(err, callback)) return;
|
||||
html = _html;
|
||||
|
|
|
@ -30,7 +30,13 @@ exports.socketio = function (hook_name, args, cb) {
|
|||
}
|
||||
else
|
||||
{
|
||||
socket.emit("settings", {results: data});
|
||||
//if showSettingsInAdminPage is set to false, then return NOT_ALLOWED in the result
|
||||
if(settings.showSettingsInAdminPage === false) {
|
||||
socket.emit("settings", {results:'NOT_ALLOWED'});
|
||||
}
|
||||
else {
|
||||
socket.emit("settings", {results: data});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -7,7 +7,7 @@ var exporthtml = require("../../utils/ExportHtml");
|
|||
exports.expressCreateServer = function (hook_name, args, cb) {
|
||||
//serve read only pad
|
||||
args.app.get('/ro/:id', function(req, res)
|
||||
{
|
||||
{
|
||||
var html;
|
||||
var padId;
|
||||
|
||||
|
@ -40,7 +40,7 @@ exports.expressCreateServer = function (hook_name, args, cb) {
|
|||
hasPadAccess(req, res, function()
|
||||
{
|
||||
//render the html document
|
||||
exporthtml.getPadHTMLDocument(padId, null, false, function(err, _html)
|
||||
exporthtml.getPadHTMLDocument(padId, null, function(err, _html)
|
||||
{
|
||||
if(ERR(err, callback)) return;
|
||||
html = _html;
|
||||
|
|
|
@ -16,6 +16,13 @@ exports.expressCreateServer = function (hook_name, args, cb) {
|
|||
res.send(eejs.require("ep_etherpad-lite/templates/index.html"));
|
||||
});
|
||||
|
||||
//serve javascript.html
|
||||
args.app.get('/javascript', function(req, res)
|
||||
{
|
||||
res.send(eejs.require("ep_etherpad-lite/templates/javascript.html"));
|
||||
});
|
||||
|
||||
|
||||
//serve robots.txt
|
||||
args.app.get('/robots.txt', function(req, res)
|
||||
{
|
||||
|
|
|
@ -5,7 +5,7 @@ var languages = require('languages4translatewiki')
|
|||
, npm = require('npm')
|
||||
, plugins = require('ep_etherpad-lite/static/js/pluginfw/plugins.js').plugins
|
||||
, semver = require('semver')
|
||||
, existsSync = fs.statSync || fs.existsSync || path.existsSync
|
||||
, existsSync = require('../utils/path_exists')
|
||||
;
|
||||
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ var ERR = require("async-stacktrace");
|
|||
var _ = require('underscore');
|
||||
var Security = require('ep_etherpad-lite/static/js/security');
|
||||
var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks');
|
||||
var eejs = require('ep_etherpad-lite/node/eejs');
|
||||
var _analyzeLine = require('./ExportHelper')._analyzeLine;
|
||||
var _encodeWhitespace = require('./ExportHelper')._encodeWhitespace;
|
||||
|
||||
|
@ -478,7 +479,7 @@ function getHTMLFromAtext(pad, atext, authorColors)
|
|||
return pieces.join('');
|
||||
}
|
||||
|
||||
exports.getPadHTMLDocument = function (padId, revNum, noDocType, callback)
|
||||
exports.getPadHTMLDocument = function (padId, revNum, callback)
|
||||
{
|
||||
padManager.getPad(padId, function (err, pad)
|
||||
{
|
||||
|
@ -490,112 +491,16 @@ exports.getPadHTMLDocument = function (padId, revNum, noDocType, callback)
|
|||
stylesForExport.forEach(function(css){
|
||||
stylesForExportCSS += css;
|
||||
});
|
||||
// Core inclusion of head etc.
|
||||
var head =
|
||||
(noDocType ? '' : '<!doctype html>\n') +
|
||||
'<html lang="en">\n' + (noDocType ? '' : '<head>\n' +
|
||||
'<title>' + Security.escapeHTML(padId) + '</title>\n' +
|
||||
'<meta name="generator" content="Etherpad">\n' +
|
||||
'<meta name="author" content="Etherpad">\n' +
|
||||
'<meta name="changedby" content="Etherpad">\n' +
|
||||
'<meta charset="utf-8">\n' +
|
||||
'<style> * { font-family: arial, sans-serif;\n' +
|
||||
'font-size: 13px;\n' +
|
||||
'line-height: 17px; }' +
|
||||
'ul.indent { list-style-type: none; }' +
|
||||
|
||||
'ol { list-style-type: none; padding-left:0;}' +
|
||||
'body > ol { counter-reset: first second third fourth fifth sixth seventh eigth ninth tenth eleventh twelth thirteenth fourteenth fifteenth sixteenth; }' +
|
||||
'ol > li:before {' +
|
||||
'content: counter(first) ". " ;'+
|
||||
'counter-increment: first;}' +
|
||||
|
||||
'ol > ol > li:before {' +
|
||||
'content: counter(first) "." counter(second) ". " ;'+
|
||||
'counter-increment: second;}' +
|
||||
|
||||
'ol > ol > ol > li:before {' +
|
||||
'content: counter(first) "." counter(second) "." counter(third) ". ";'+
|
||||
'counter-increment: third;}' +
|
||||
|
||||
'ol > ol > ol > ol > li:before {' +
|
||||
'content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) ". ";'+
|
||||
'counter-increment: fourth;}' +
|
||||
|
||||
'ol > ol > ol > ol > ol > li:before {' +
|
||||
'content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) ". ";'+
|
||||
'counter-increment: fifth;}' +
|
||||
|
||||
'ol > ol > ol > ol > ol > ol > li:before {' +
|
||||
'content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) ". ";'+
|
||||
'counter-increment: sixth;}' +
|
||||
|
||||
'ol > ol > ol > ol > ol > ol > ol > li:before {' +
|
||||
'content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) ". ";'+
|
||||
'counter-increment: seventh;}' +
|
||||
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > li:before {' +
|
||||
'content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eigth) ". ";'+
|
||||
'counter-increment: eigth;}' +
|
||||
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > ol > li:before {' +
|
||||
'content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eigth) "." counter(ninth) ". ";'+
|
||||
'counter-increment: ninth;}' +
|
||||
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > li:before {' +
|
||||
'content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eigth) "." counter(ninth) "." counter(tenth) ". ";'+
|
||||
'counter-increment: tenth;}' +
|
||||
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > li:before {' +
|
||||
'content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eigth) "." counter(ninth) "." counter(tenth) "." counter(eleventh) ". ";'+
|
||||
'counter-increment: eleventh;}' +
|
||||
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > li:before {' +
|
||||
'content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eigth) "." counter(ninth) "." counter(tenth) "." counter(eleventh) "." counter(twelth) ". ";'+
|
||||
'counter-increment: twelth;}' +
|
||||
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > li:before {' +
|
||||
'content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eigth) "." counter(ninth) "." counter(tenth) "." counter(eleventh) "." counter(twelth) "." counter(thirteenth) ". ";'+
|
||||
'counter-increment: thirteenth;}' +
|
||||
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > li:before {' +
|
||||
'content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eigth) "." counter(ninth) "." counter(tenth) "." counter(eleventh) "." counter(twelth) "." counter(thirteenth) "." counter(fourteenth) ". ";'+
|
||||
'counter-increment: fourteenth;}' +
|
||||
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > li:before {' +
|
||||
'content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eigth) "." counter(ninth) "." counter(tenth) "." counter(eleventh) "." counter(twelth) "." counter(thirteenth) "." counter(fourteenth) "." counter(fifteenth) ". ";'+
|
||||
'counter-increment: fifteenth;}' +
|
||||
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > li:before {' +
|
||||
'content: counter(first) "." counter(second) "." counter(third) "." counter(fourth) "." counter(fifth) "." counter(sixth) "." counter(seventh) "." counter(eigth) "." counter(ninth) "." counter(tenth) "." counter(eleventh) "." counter(twelth) "." counter(thirteenth) "." counter(fourteenth) "." counter(fifteenth) "." counter(sixthteenth) ". ";'+
|
||||
'counter-increment: sixthteenth;}' +
|
||||
|
||||
'ol{ text-indent: 0px; }' +
|
||||
'ol > ol{ text-indent: 10px; }' +
|
||||
'ol > ol > ol{ text-indent: 20px; }' +
|
||||
'ol > ol > ol > ol{ text-indent: 30px; }' +
|
||||
'ol > ol > ol > ol > ol{ text-indent: 40px; }' +
|
||||
'ol > ol > ol > ol > ol > ol{ text-indent: 50px; }' +
|
||||
'ol > ol > ol > ol > ol > ol > ol{ text-indent: 60px; }' +
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol{ text-indent: 70px; }' +
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > ol{ text-indent: 80px; }' +
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > ol > ol{ text-indent: 90px; }' +
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol{ text-indent: 100px; }' +
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol{ text-indent: 110px; }' +
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol { text-indent: 120px; }' +
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol{ text-indent: 130px; }' +
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol{ text-indent: 140px; }' +
|
||||
'ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol > ol{ text-indent: 150px; }' +
|
||||
|
||||
stylesForExportCSS +
|
||||
'</style>\n' + '</head>\n') +
|
||||
'<body>';
|
||||
var foot = '</body>\n</html>\n';
|
||||
|
||||
getPadHTML(pad, revNum, function (err, html)
|
||||
{
|
||||
if(ERR(err, callback)) return;
|
||||
callback(null, head + html + foot);
|
||||
var exportedDoc = eejs.require("ep_etherpad-lite/templates/export_html.html", {
|
||||
body: html,
|
||||
padId: Security.escapeHTML(padId),
|
||||
extraCSS: stylesForExportCSS
|
||||
});
|
||||
callback(null, exportedDoc);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -192,7 +192,7 @@ function getTXTFromAtext(pad, atext, authorColors)
|
|||
tags2close.push(i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (var i = 0; i < propVals.length; i++)
|
||||
{
|
||||
if (propVals[i] === ENTER || propVals[i] === STAY)
|
||||
|
@ -208,10 +208,10 @@ function getTXTFromAtext(pad, atext, authorColors)
|
|||
{
|
||||
chars--; // exclude newline at end of line, if present
|
||||
}
|
||||
|
||||
|
||||
var s = taker.take(chars);
|
||||
|
||||
// removes the characters with the code 12. Don't know where they come
|
||||
// removes the characters with the code 12. Don't know where they come
|
||||
// from but they break the abiword parser and are completly useless
|
||||
// s = s.replace(String.fromCharCode(12), "");
|
||||
|
||||
|
@ -221,7 +221,7 @@ function getTXTFromAtext(pad, atext, authorColors)
|
|||
|
||||
assem.append(s);
|
||||
} // end iteration over spans in line
|
||||
|
||||
|
||||
var tags2close = [];
|
||||
for (var i = propVals.length - 1; i >= 0; i--)
|
||||
{
|
||||
|
@ -231,7 +231,7 @@ function getTXTFromAtext(pad, atext, authorColors)
|
|||
propVals[i] = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} // end processNextChars
|
||||
processNextChars(text.length - idx);
|
||||
return(assem.toString());
|
||||
|
@ -271,7 +271,7 @@ function getTXTFromAtext(pad, atext, authorColors)
|
|||
}
|
||||
exports.getTXTFromAtext = getTXTFromAtext;
|
||||
|
||||
exports.getPadTXTDocument = function (padId, revNum, noDocType, callback)
|
||||
exports.getPadTXTDocument = function (padId, revNum, callback)
|
||||
{
|
||||
padManager.getPad(padId, function (err, pad)
|
||||
{
|
||||
|
|
|
@ -209,6 +209,11 @@ exports.requireAuthentication = false;
|
|||
exports.requireAuthorization = false;
|
||||
exports.users = {};
|
||||
|
||||
/*
|
||||
* Show settings in admin page, by default it is true
|
||||
*/
|
||||
exports.showSettingsInAdminPage = true;
|
||||
|
||||
//checks if abiword is avaiable
|
||||
exports.abiwordAvailable = function()
|
||||
{
|
||||
|
|
|
@ -21,8 +21,7 @@ var path = require('path');
|
|||
var zlib = require('zlib');
|
||||
var settings = require('./Settings');
|
||||
var semver = require('semver');
|
||||
|
||||
var existsSync = fs.statSync || fs.existsSync || path.existsSync;
|
||||
var existsSync = require('./path_exists');
|
||||
|
||||
var CACHE_DIR = path.normalize(path.join(settings.root, 'var/'));
|
||||
CACHE_DIR = existsSync(CACHE_DIR) ? CACHE_DIR : undefined;
|
||||
|
|
15
src/node/utils/path_exists.js
Normal file
15
src/node/utils/path_exists.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
var fs = require('fs');
|
||||
|
||||
var check = function(path) {
|
||||
var existsSync = fs.statSync || fs.existsSync || path.existsSync;
|
||||
|
||||
var result;
|
||||
try {
|
||||
result = existsSync(path);
|
||||
} catch (e) {
|
||||
result = false;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
module.exports = check;
|
Loading…
Add table
Add a link
Reference in a new issue