Merge branch 'newmaster' of ../etherpad-lite.io2
This commit is contained in:
commit
a9673765ae
|
@ -29,10 +29,10 @@ var queue = async.queue(doConvertTask, 1);
|
||||||
//spawn the abiword process
|
//spawn the abiword process
|
||||||
var abiword = spawn(settings.abiword, ["--plugin", "AbiCommand"]);
|
var abiword = spawn(settings.abiword, ["--plugin", "AbiCommand"]);
|
||||||
|
|
||||||
//output error messages to stderr
|
//append error messages to the buffer
|
||||||
abiword.stderr.on('data', function (data)
|
abiword.stderr.on('data', function (data)
|
||||||
{
|
{
|
||||||
console.error("Abiword: " + data);
|
stdoutBuffer += data.toString();
|
||||||
});
|
});
|
||||||
|
|
||||||
//throw exceptions if abiword is dieing
|
//throw exceptions if abiword is dieing
|
||||||
|
@ -57,8 +57,7 @@ function onAbiwordStdout(data)
|
||||||
if(stdoutBuffer.search("AbiWord:>") != -1)
|
if(stdoutBuffer.search("AbiWord:>") != -1)
|
||||||
{
|
{
|
||||||
//filter the feedback message
|
//filter the feedback message
|
||||||
var lines = stdoutBuffer.split("\n");
|
var err = stdoutBuffer.search("OK") != -1 ? null : stdoutBuffer;
|
||||||
var err = lines [1] == "OK" ? null : lines[1];
|
|
||||||
|
|
||||||
//reset the buffer
|
//reset the buffer
|
||||||
stdoutBuffer = "";
|
stdoutBuffer = "";
|
||||||
|
|
|
@ -58,6 +58,38 @@ exports.doImport = function(req, res, padId)
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
//ensure this is a file ending we know, else we change the file ending to .txt
|
||||||
|
//this allows us to accept source code files like .c or .java
|
||||||
|
function(callback)
|
||||||
|
{
|
||||||
|
var fileEnding = srcFile.split(".")[1];
|
||||||
|
var knownFileEndings = ["txt", "doc", "docx", "pdf", "odt", "html", "htm"];
|
||||||
|
|
||||||
|
//find out if this is a known file ending
|
||||||
|
var fileEndingKnown = false;
|
||||||
|
for(var i in knownFileEndings)
|
||||||
|
{
|
||||||
|
if(fileEnding == knownFileEndings[i])
|
||||||
|
{
|
||||||
|
fileEndingKnown = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//if the file ending is known, continue as normal
|
||||||
|
if(fileEndingKnown)
|
||||||
|
{
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
//we need to rename this file with a .txt ending
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var oldSrcFile = srcFile;
|
||||||
|
srcFile = srcFile.split(".")[0] + ".txt";
|
||||||
|
|
||||||
|
fs.rename(oldSrcFile, srcFile, callback);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
//convert file to text
|
//convert file to text
|
||||||
function(callback)
|
function(callback)
|
||||||
{
|
{
|
||||||
|
@ -109,9 +141,9 @@ exports.doImport = function(req, res, padId)
|
||||||
}
|
}
|
||||||
], function(err)
|
], function(err)
|
||||||
{
|
{
|
||||||
|
if(err) throw err;
|
||||||
|
|
||||||
//close the connection
|
//close the connection
|
||||||
res.send("ok");
|
res.send("ok");
|
||||||
|
|
||||||
if(err) throw err;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -228,24 +228,34 @@ exports.padJS = function(req, res)
|
||||||
res.sendfile(pathStr, { maxAge: server.maxAge });
|
res.sendfile(pathStr, { maxAge: server.maxAge });
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
//minifying is disabled, so load the files with jquery
|
//minifying is disabled, so put the files together in one file
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
res.write("function loadjsfile(filename){\n"+
|
var fileValues = {};
|
||||||
"var fileref=document.createElement('script');\n"+
|
|
||||||
"fileref.setAttribute('type','text/javascript');\n"+
|
|
||||||
"var path = 'static/js/' + filename;\n"+
|
|
||||||
"fileref.setAttribute('src', path);\n" +
|
|
||||||
"document.getElementsByTagName('head')[0].appendChild(fileref);\n" +
|
|
||||||
"}\n");
|
|
||||||
|
|
||||||
for(var i in jsFiles)
|
//read all js files
|
||||||
|
async.forEach(jsFiles, function (item, callback)
|
||||||
{
|
{
|
||||||
console.log(jsFiles[i]);
|
fs.readFile("../static/js/" + item, "utf-8", function(err, data)
|
||||||
res.write("loadjsfile('"+ jsFiles[i] + "');\n");
|
{
|
||||||
|
fileValues[item] = data;
|
||||||
|
callback(err);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//send all files together
|
||||||
|
function(err)
|
||||||
|
{
|
||||||
|
if(err) throw err;
|
||||||
|
|
||||||
|
for(var i=0;i<jsFiles.length;i++)
|
||||||
|
{
|
||||||
|
var fileName = jsFiles[i];
|
||||||
|
res.write("\n\n\n/*** File: static/js/" + fileName + " ***/\n\n\n");
|
||||||
|
res.write(fileValues[fileName]);
|
||||||
}
|
}
|
||||||
|
|
||||||
res.end();
|
res.end();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1000,6 +1000,10 @@ position: relative;
|
||||||
background-position: 2px -49px;
|
background-position: 2px -49px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#export a{
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
#importstatusball{
|
#importstatusball{
|
||||||
display:none;
|
display:none;
|
||||||
}
|
}
|
|
@ -21,13 +21,6 @@ var socket;
|
||||||
$(document).ready(function()
|
$(document).ready(function()
|
||||||
{
|
{
|
||||||
handshake();
|
handshake();
|
||||||
// This is a temporary location, Peter to move
|
|
||||||
$("#exporthtmla").attr("href", document.location.href + "/export/html");
|
|
||||||
$("#exportplaina").attr("href", document.location.href + "/export/txt");
|
|
||||||
$("#exportworda").attr("href", document.location.href + "/export/doc");
|
|
||||||
$("#exportpdfa").attr("href", document.location.href + "/export/pdf");
|
|
||||||
$("#exportopena").attr("href", document.location.href + "/export/odt");
|
|
||||||
$("#exportwordlea").attr("href", document.location.href + "/export/wordle");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$(window).unload(function()
|
$(window).unload(function()
|
||||||
|
@ -35,18 +28,6 @@ $(window).unload(function()
|
||||||
pad.dispose();
|
pad.dispose();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Wordle code, Peter to move
|
|
||||||
function loadCont(){
|
|
||||||
padUrl = location.pathname;
|
|
||||||
padHost = location.host;
|
|
||||||
var padUrl = "http://" + padHost + padUrl + "/export/txt";
|
|
||||||
$.get(padUrl, function(data) {
|
|
||||||
$('.result').html(data);
|
|
||||||
$('#text').html(data);
|
|
||||||
$('#wordlepost').submit();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function createCookie(name, value, days)
|
function createCookie(name, value, days)
|
||||||
{
|
{
|
||||||
if (days)
|
if (days)
|
||||||
|
@ -99,7 +80,7 @@ function handshake()
|
||||||
resource: resource
|
resource: resource
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('connect', function()
|
socket.once('connect', function()
|
||||||
{
|
{
|
||||||
var padId = document.URL.substring(document.URL.lastIndexOf("/") + 1);
|
var padId = document.URL.substring(document.URL.lastIndexOf("/") + 1);
|
||||||
|
|
||||||
|
|
|
@ -230,6 +230,14 @@ var padimpexp = (function()
|
||||||
var self = {
|
var self = {
|
||||||
init: function()
|
init: function()
|
||||||
{
|
{
|
||||||
|
// build the export links
|
||||||
|
$("#exporthtmla").attr("href", document.location.href + "/export/html");
|
||||||
|
$("#exportplaina").attr("href", document.location.href + "/export/txt");
|
||||||
|
$("#exportworda").attr("href", document.location.href + "/export/doc");
|
||||||
|
$("#exportpdfa").attr("href", document.location.href + "/export/pdf");
|
||||||
|
$("#exportopena").attr("href", document.location.href + "/export/odt");
|
||||||
|
$("#exportwordlea").attr("href", document.location.href + "/export/wordle");
|
||||||
|
|
||||||
$("#importform").get(0).setAttribute('action', document.location.href + "/import");
|
$("#importform").get(0).setAttribute('action', document.location.href + "/import");
|
||||||
|
|
||||||
$("#impexp-close").click(function()
|
$("#impexp-close").click(function()
|
||||||
|
@ -264,6 +272,19 @@ var padimpexp = (function()
|
||||||
$("#impexp-disabled-clickcatcher").hide();
|
$("#impexp-disabled-clickcatcher").hide();
|
||||||
$("#import").css('opacity', 1);
|
$("#import").css('opacity', 1);
|
||||||
$("#impexp-export").css('opacity', 1);
|
$("#impexp-export").css('opacity', 1);
|
||||||
|
},
|
||||||
|
export2Wordle: function()
|
||||||
|
{
|
||||||
|
padUrl = location.pathname;
|
||||||
|
padHost = location.host;
|
||||||
|
var padUrl = "http://" + padHost + padUrl + "/export/txt";
|
||||||
|
|
||||||
|
$.get(padUrl, function(data)
|
||||||
|
{
|
||||||
|
$('.result').html(data);
|
||||||
|
$('#text').html(data);
|
||||||
|
$('#wordlepost').submit();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return self;
|
return self;
|
||||||
|
|
|
@ -7,12 +7,8 @@
|
||||||
<meta http-equiv="Content-Language" content="en-us"/>
|
<meta http-equiv="Content-Language" content="en-us"/>
|
||||||
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW"/>
|
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW"/>
|
||||||
<title>Etherpad Lite</title>
|
<title>Etherpad Lite</title>
|
||||||
<!-- <base href="http://localhost:9001/" />-->
|
|
||||||
<!-- CSS -->
|
<!-- CSS -->
|
||||||
<link href="../static/css/pad_lite.css" rel="stylesheet" type="text/css"/>
|
<link href="../static/css/pad.css" rel="stylesheet" type="text/css"/>
|
||||||
<!--[if lte IE 7]>
|
|
||||||
<link href="../static/css/pad_ie_lite.css" rel="stylesheet" type="text/css"/>
|
|
||||||
<![endif]-->
|
|
||||||
<!-- javascript -->
|
<!-- javascript -->
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
// <![CDATA[
|
// <![CDATA[
|
||||||
|
@ -234,7 +230,7 @@ We removed this feature cause its not worth the space it needs in the editbar
|
||||||
<a id="exportworda" target="_blank" class="exportlink"><div class="exporttype" id="exportword">Microsoft Word</div></a>
|
<a id="exportworda" target="_blank" class="exportlink"><div class="exporttype" id="exportword">Microsoft Word</div></a>
|
||||||
<a id="exportpdfa" target="_blank" class="exportlink"><div class="exporttype" id="exportpdf">PDF</div></a>
|
<a id="exportpdfa" target="_blank" class="exportlink"><div class="exporttype" id="exportpdf">PDF</div></a>
|
||||||
<a id="exportopena" target="_blank" class="exportlink"><div class="exporttype" id="exportopen">OpenDocument</div></a>
|
<a id="exportopena" target="_blank" class="exportlink"><div class="exporttype" id="exportopen">OpenDocument</div></a>
|
||||||
<a id="exportwordlea" target="_blank" onClick="loadCont();return false;" class="exportlink"><div class="exporttype" id="exportwordle">Wordle</div></a>
|
<a id="exportwordlea" target="_blank" onClick="padimpexp.export2Wordle();return false;" class="exportlink"><div class="exporttype" id="exportwordle">Wordle</div></a>
|
||||||
<form id="wordlepost" name="wall" action="http://wordle.net/advanced" method="POST" style="margin-left:0px;">
|
<form id="wordlepost" name="wall" action="http://wordle.net/advanced" method="POST" style="margin-left:0px;">
|
||||||
<div id="hidetext" style=""><textarea id="text" name="text" id="text" style="display:none;">Coming soon!</textarea></div>
|
<div id="hidetext" style=""><textarea id="text" name="text" id="text" style="display:none;">Coming soon!</textarea></div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
var padManager = require("../node/PadManager");
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests if new Pads a created with the correct inital values
|
|
||||||
*/
|
|
||||||
exports.createAPad = function(test)
|
|
||||||
{
|
|
||||||
test.expect(7);
|
|
||||||
|
|
||||||
//Test if PadManager gives null when a Pad don't exist and you don't wish to create it
|
|
||||||
var pad = padManager.getPad("test", false);
|
|
||||||
test.equal(pad, null, "The PadManager gives a value for a pad that was never created'");
|
|
||||||
|
|
||||||
//Test if PadManager creates a Pad with the correct id when you want to create it
|
|
||||||
pad = padManager.getPad("test", true);
|
|
||||||
test.equal(pad.id, "test", "The PadManager gave a pad with a other id than expeted");
|
|
||||||
|
|
||||||
//Test if the startText is correct set
|
|
||||||
var atext = pad.atext;
|
|
||||||
test.equal(atext.text, padManager.startText + "\n", "The Starttext of a Pad is wrong set");
|
|
||||||
|
|
||||||
//Test if the atext().text and text() is the same
|
|
||||||
test.equal(atext.text, pad.text(), "pad.atext.text is not pad.text()");
|
|
||||||
|
|
||||||
//Test if the Revision Number is Zero
|
|
||||||
var head = pad.getHeadRevisionNumber();
|
|
||||||
test.equal(head, 0, "The Revision Number is not zero!");
|
|
||||||
|
|
||||||
//Check if the first Author is a empty String
|
|
||||||
var firstAuthor = pad.getRevisionAuthor(0);
|
|
||||||
test.equal(firstAuthor, '', "The Author of the First Revision is not a empty String");
|
|
||||||
|
|
||||||
var firstChangeset = pad.getRevisionChangeset(0);
|
|
||||||
test.ok(firstChangeset.indexOf(padManager.startText) > -1, "The first Changeset does not contain the inital Text");
|
|
||||||
|
|
||||||
test.done();
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
You can run the tests with runTests.sh in the bin folder
|
|
Loading…
Reference in New Issue