mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-24 17:36:14 -04:00
Merge pull request #291 from jhollinger/export_revisions
Add ability to export specific pad revisions
This commit is contained in:
commit
86902c2c0b
10 changed files with 96 additions and 29 deletions
|
@ -53,8 +53,16 @@ exports.doExport = function(req, res, padId, type)
|
|||
padManager.getPad(padId, function(err, pad)
|
||||
{
|
||||
ERR(err);
|
||||
|
||||
res.send(pad.text());
|
||||
if(req.params.rev){
|
||||
pad.getInternalRevisionAText(req.params.rev, function(junk, text)
|
||||
{
|
||||
res.send(text.text ? text.text : null);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
res.send(pad.text());
|
||||
}
|
||||
});
|
||||
}
|
||||
else if(type == 'dokuwiki')
|
||||
|
@ -66,7 +74,7 @@ exports.doExport = function(req, res, padId, type)
|
|||
//render the dokuwiki document
|
||||
function(callback)
|
||||
{
|
||||
exportdokuwiki.getPadDokuWikiDocument(padId, null, function(err, dokuwiki)
|
||||
exportdokuwiki.getPadDokuWikiDocument(padId, req.params.rev, function(err, dokuwiki)
|
||||
{
|
||||
res.send(dokuwiki);
|
||||
callback("stop");
|
||||
|
@ -87,7 +95,7 @@ exports.doExport = function(req, res, padId, type)
|
|||
//render the html document
|
||||
function(callback)
|
||||
{
|
||||
exporthtml.getPadHTMLDocument(padId, null, false, function(err, _html)
|
||||
exporthtml.getPadHTMLDocument(padId, req.params.rev, false, function(err, _html)
|
||||
{
|
||||
if(ERR(err, callback)) return;
|
||||
html = _html;
|
||||
|
|
|
@ -28,7 +28,6 @@ var readOnlyManager = require("../db/ReadOnlyManager");
|
|||
var settings = require('../utils/Settings');
|
||||
var securityManager = require("../db/SecurityManager");
|
||||
var log4js = require('log4js');
|
||||
var os = require("os");
|
||||
var messageLogger = log4js.getLogger("message");
|
||||
|
||||
/**
|
||||
|
@ -755,13 +754,6 @@ function handleClientReady(client, message)
|
|||
var apool = attribsForWire.pool.toJsonable();
|
||||
atext.attribs = attribsForWire.translated;
|
||||
|
||||
//check if abiword is avaiable
|
||||
var abiwordAvailable = settings.abiword != null ? "yes" : "no";
|
||||
if(settings.abiword != null && os.type().indexOf("Windows") != -1)
|
||||
{
|
||||
abiwordAvailable = "withoutPDF";
|
||||
}
|
||||
|
||||
var clientVars = {
|
||||
"accountPrivs": {
|
||||
"maxRevisions": 100
|
||||
|
@ -798,7 +790,7 @@ function handleClientReady(client, message)
|
|||
"fullWidth": false,
|
||||
"hideSidebar": false
|
||||
},
|
||||
"abiwordAvailable": abiwordAvailable,
|
||||
"abiwordAvailable": settings.abiwordAvailable(),
|
||||
"hooks": {}
|
||||
}
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ var async = require("async");
|
|||
var padManager = require("../db/PadManager");
|
||||
var Changeset = require("../utils/Changeset");
|
||||
var AttributePoolFactory = require("../utils/AttributePoolFactory");
|
||||
var settings = require('../utils/Settings');
|
||||
var authorManager = require("../db/AuthorManager");
|
||||
var log4js = require('log4js');
|
||||
var messageLogger = log4js.getLogger("message");
|
||||
|
@ -160,6 +161,7 @@ function createTimesliderClientVars (padId, callback)
|
|||
fullWidth: false,
|
||||
disableRightBar: false,
|
||||
initialChangesets: [],
|
||||
abiwordAvailable: settings.abiwordAvailable(),
|
||||
hooks: [],
|
||||
initialStyledContents: {}
|
||||
};
|
||||
|
|
|
@ -264,7 +264,7 @@ async.waterfall([
|
|||
});
|
||||
|
||||
//serve timeslider.html under /p/$padname/timeslider
|
||||
app.get('/p/:pad/export/:type', function(req, res, next)
|
||||
app.get('/p/:pad/:rev?/export/:type', function(req, res, next)
|
||||
{
|
||||
//ensure the padname is valid and the url doesn't end with a /
|
||||
if(!padManager.isValidPadId(req.params.pad) || /\/$/.test(req.url))
|
||||
|
|
|
@ -34,7 +34,7 @@ var os = require('os');
|
|||
|
||||
var padJS = ["jquery.min.js", "pad_utils.js", "plugins.js", "undo-xpopup.js", "json2.js", "pad_cookie.js", "pad_editor.js", "pad_editbar.js", "pad_docbar.js", "pad_modals.js", "ace.js", "collab_client.js", "pad_userlist.js", "pad_impexp.js", "pad_savedrevs.js", "pad_connectionstatus.js", "pad2.js", "jquery-ui.js", "chat.js", "excanvas.js", "farbtastic.js"];
|
||||
|
||||
var timesliderJS = ["jquery.min.js", "plugins.js", "undo-xpopup.js", "json2.js", "colorutils.js", "draggable.js", "pad_utils.js", "pad_cookie.js", "pad_editor.js", "pad_editbar.js", "pad_docbar.js", "pad_modals.js", "easysync2_client.js", "domline_client.js", "linestylefilter_client.js", "cssmanager_client.js", "broadcast.js", "broadcast_slider.js", "broadcast_revisions.js"];
|
||||
var timesliderJS = ["jquery.min.js", "plugins.js", "undo-xpopup.js", "json2.js", "colorutils.js", "draggable.js", "pad_utils.js", "pad_cookie.js", "pad_editor.js", "pad_editbar.js", "pad_docbar.js", "pad_modals.js", "pad_impexp.js", "easysync2_client.js", "domline_client.js", "linestylefilter_client.js", "cssmanager_client.js", "broadcast.js", "broadcast_slider.js", "broadcast_revisions.js"];
|
||||
|
||||
/**
|
||||
* creates the minifed javascript for the given minified name
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
*/
|
||||
|
||||
var fs = require("fs");
|
||||
var os = require("os");
|
||||
|
||||
/**
|
||||
* The IP ep-lite should listen to
|
||||
|
@ -73,6 +74,19 @@ exports.loglevel = "INFO";
|
|||
*/
|
||||
exports.httpAuth = null;
|
||||
|
||||
//checks if abiword is avaiable
|
||||
exports.abiwordAvailable = function()
|
||||
{
|
||||
if(exports.abiword != null)
|
||||
{
|
||||
return os.type().indexOf("Windows") != -1 ? "withoutPDF" : "yes";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "no";
|
||||
}
|
||||
}
|
||||
|
||||
//read the settings sync
|
||||
var settingsStr = fs.readFileSync("../settings.json").toString();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue