From 2aaf80c8809a0a91a87f56e3f217869071dc8d68 Mon Sep 17 00:00:00 2001 From: Peter 'Pita' Martischka Date: Wed, 14 Nov 2012 09:27:21 -0800 Subject: [PATCH 001/130] Initial commit --- README.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..33021bd7 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +etherpad-lite +============= + +Etherpad Lite \ No newline at end of file From a5c4fb154f7414cd5dca9e50c3f2ad00e42672f5 Mon Sep 17 00:00:00 2001 From: Peter 'Pita' Martischka Date: Wed, 14 Nov 2012 09:29:49 -0800 Subject: [PATCH 002/130] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 33021bd7..95dfee26 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -etherpad-lite +We moved! ============= -Etherpad Lite \ No newline at end of file +You can now find Etherpad Lite under [github.com/ether/etherpad-lite](https://github.com/ether/etherpad-lite) \ No newline at end of file From 196aafd9d6d72ea09701a1b5b3fce33dc889410a Mon Sep 17 00:00:00 2001 From: Mike Brousseau Date: Wed, 21 Nov 2012 13:35:47 -0500 Subject: [PATCH 003/130] Update src/static/js/pad.js Gramatically change. Changed "You're Password" to "Your Password". --- src/static/js/pad.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/static/js/pad.js b/src/static/js/pad.js index b665c2fb..34f2a287 100644 --- a/src/static/js/pad.js +++ b/src/static/js/pad.js @@ -310,7 +310,7 @@ function handshake() } else if(obj.accessStatus == "wrongPassword") { - $("#editorloadingbox").html("You're password was wrong
" + + $("#editorloadingbox").html("Your password was wrong
" + ""+ ""); } From 28cd6e64b3a1494cdbaef44e936f4e458d7bfa92 Mon Sep 17 00:00:00 2001 From: johnyma22 Date: Wed, 21 Nov 2012 20:09:31 +0000 Subject: [PATCH 004/130] make runner CSS more sane --- tests/frontend/runner.css | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/frontend/runner.css b/tests/frontend/runner.css index 0e4b5fd1..7d5bb783 100644 --- a/tests/frontend/runner.css +++ b/tests/frontend/runner.css @@ -15,12 +15,15 @@ body { #iframe-container { width: 50%; height: 100%; - float:right; } #iframe-container iframe { - width: 100%; height: 100%; + position:absolute; + min-width:500px; + max-width:800px; + left:50%; + width:100%; } #mocha { From aebf6ee1e8688d4efd8a6a06fb15cad824cac62c Mon Sep 17 00:00:00 2001 From: johnyma22 Date: Wed, 21 Nov 2012 22:22:01 +0000 Subject: [PATCH 005/130] language test should pass int ravis now --- tests/frontend/specs/language.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/tests/frontend/specs/language.js b/tests/frontend/specs/language.js index 87d04220..7d294282 100644 --- a/tests/frontend/specs/language.js +++ b/tests/frontend/specs/language.js @@ -1,10 +1,19 @@ +function deletecookie(name) { + document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; +} + describe("Language select and change", function(){ + // Destroy language cookies + deletecookie("language", null); + //create a new pad before each test run beforeEach(function(cb){ helper.newPad(cb); this.timeout(60000); }); + // Destroy language cookies + it("makes text german", function(done) { var inner$ = helper.padInner$; var chrome$ = helper.padChrome$; @@ -21,14 +30,16 @@ describe("Language select and change", function(){ $languageoption.attr('selected','selected'); $language.change(); - helper.waitFor(function() { return $language.val() == "de"}) + helper.waitFor(function() { + return chrome$(".buttonicon-bold").parent()[0]["title"] = "Fett (Strg-B)"; + }) .done(function(){ //get the value of the bold button var $boldButton = chrome$(".buttonicon-bold").parent(); //get the title of the bold button var boldButtonTitle = $boldButton[0]["title"]; - + //check if the language is now german expect(boldButtonTitle).to.be("Fett (Strg-B)"); done(); @@ -51,7 +62,10 @@ describe("Language select and change", function(){ $languageoption.attr('selected','selected'); $language.change(); - helper.waitFor(function() { return $language.val() == "en";}) + //get the value of the bold button + var $boldButton = chrome$(".buttonicon-bold").parent(); + + helper.waitFor(function() { return $boldButton[0]["title"] != "Fett (Strg-B)";}) .done(function(){ //get the value of the bold button @@ -67,4 +81,4 @@ describe("Language select and change", function(){ }); }); -}); \ No newline at end of file +}); From d6027726e687b04ee23b2c5b5475e2b0d9b15ff5 Mon Sep 17 00:00:00 2001 From: Hyacinthe Cartiaux Date: Thu, 22 Nov 2012 01:12:30 +0100 Subject: [PATCH 006/130] Fix urls, use github.com/ether Signed-off-by: Hyacinthe Cartiaux --- bin/loadTesting/README | 2 +- doc/api/http_api.md | 2 +- src/node/hooks/express.js | 2 +- src/package.json | 2 +- src/static/js/AttributePool.js | 2 +- src/static/js/ace2_inner.js | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/bin/loadTesting/README b/bin/loadTesting/README index 297756f9..6a778664 100644 --- a/bin/loadTesting/README +++ b/bin/loadTesting/README @@ -3,7 +3,7 @@ This load tester is extremely useful for testing how many dormant clients can co TODO: Emulate characters being typed into a pad -HOW TO USE (from @mjd75) proper formatting at: https://github.com/Pita/etherpad-lite/issues/360 +HOW TO USE (from @mjd75) proper formatting at: https://github.com/ether/etherpad-lite/issues/360 Server 1: Installed Node.js (etc), EtherPad Lite and MySQL diff --git a/doc/api/http_api.md b/doc/api/http_api.md index 990d1b49..7ace1b0b 100644 --- a/doc/api/http_api.md +++ b/doc/api/http_api.md @@ -9,7 +9,7 @@ The API gives another web application control of the pads. The basic functions a The API is designed in a way, so you can reuse your existing user system with their permissions, and map it to etherpad lite. Means: Your web application still has to do authentication, but you can tell etherpad lite via the api, which visitors should get which permissions. This allows etherpad lite to fit into any web application and extend it with real-time functionality. You can embed the pads via an iframe into your website. -Take a look at [HTTP API client libraries](https://github.com/Pita/etherpad-lite/wiki/HTTP-API-client-libraries) to see if a library in your favorite language. +Take a look at [HTTP API client libraries](https://github.com/ether/etherpad-lite/wiki/HTTP-API-client-libraries) to see if a library in your favorite language. ## Examples diff --git a/src/node/hooks/express.js b/src/node/hooks/express.js index eb3f6188..1900a86a 100644 --- a/src/node/hooks/express.js +++ b/src/node/hooks/express.js @@ -26,7 +26,7 @@ exports.createServer = function () { { console.warn("Can't get git version for server header\n" + e.message) } - console.log("Report bugs at https://github.com/Pita/etherpad-lite/issues") + console.log("Report bugs at https://github.com/ether/etherpad-lite/issues") serverName = "Etherpad-Lite " + version + " (http://j.mp/ep-lite)"; diff --git a/src/package.json b/src/package.json index 9fd180ab..00dc0f1f 100644 --- a/src/package.json +++ b/src/package.json @@ -1,7 +1,7 @@ { "name" : "ep_etherpad-lite", "description" : "A Etherpad based on node.js", - "homepage" : "https://github.com/Pita/etherpad-lite", + "homepage" : "https://github.com/ether/etherpad-lite", "keywords" : ["etherpad", "realtime", "collaborative", "editor"], "author" : "Peter 'Pita' Martischka - Primary Technology Ltd", "contributors" : [ diff --git a/src/static/js/AttributePool.js b/src/static/js/AttributePool.js index f5990c07..96ea9b0d 100644 --- a/src/static/js/AttributePool.js +++ b/src/static/js/AttributePool.js @@ -3,7 +3,7 @@ * 90% of the code is still like in the original Etherpad * Look at https://github.com/ether/pad/blob/master/infrastructure/ace/www/easysync2.js * You can find a explanation what a attribute pool is here: - * https://github.com/Pita/etherpad-lite/blob/master/doc/easysync/easysync-notes.txt + * https://github.com/ether/etherpad-lite/blob/master/doc/easysync/easysync-notes.txt */ /* diff --git a/src/static/js/ace2_inner.js b/src/static/js/ace2_inner.js index 2e56b950..661ea011 100644 --- a/src/static/js/ace2_inner.js +++ b/src/static/js/ace2_inner.js @@ -3266,7 +3266,7 @@ function Ace2Inner(){ } } //hide the dropdownso - if(window.parent.parent.padeditbar){ // required in case its in an iframe should probably use parent.. See Issue 327 https://github.com/Pita/etherpad-lite/issues/327 + if(window.parent.parent.padeditbar){ // required in case its in an iframe should probably use parent.. See Issue 327 https://github.com/ether/etherpad-lite/issues/327 window.parent.parent.padeditbar.toggleDropDown("none"); } } From eed6b752d4acd68b902030e216f38e744a3b8fd2 Mon Sep 17 00:00:00 2001 From: Wikinaut Date: Thu, 22 Nov 2012 10:12:58 +0100 Subject: [PATCH 007/130] initial https version fix #1148 --- .gitignore | 2 ++ settings.json.template | 13 ++++++++++++- src/node/hooks/express.js | 24 ++++++++++++++++++++++-- src/node/utils/Settings.js | 7 +++++++ 4 files changed, 43 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 4f315224..b9367867 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,5 @@ src/static/js/jquery.js npm-debug.log *.DS_Store .ep_initialized +*.crt +*.key diff --git a/settings.json.template b/settings.json.template index 66192e4b..901ff812 100644 --- a/settings.json.template +++ b/settings.json.template @@ -14,7 +14,18 @@ //Ip and port which etherpad should bind at "ip": "0.0.0.0", "port" : 9001, - + + /* + // Node native SSL support + // make sure to have the correct file access permissions set + + "ssl" : { + "key" : "/path-to-your/server.key", + "cert" : "/path-to-your/server.crt" + }, + + */ + //The Type of the database. You can choose between dirty, postgres, sqlite and mysql //You shouldn't use "dirty" for for anything else than testing or development "dbType" : "dirty", diff --git a/src/node/hooks/express.js b/src/node/hooks/express.js index 1900a86a..2bbb5eec 100644 --- a/src/node/hooks/express.js +++ b/src/node/hooks/express.js @@ -1,5 +1,4 @@ var hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks"); -var http = require('http'); var express = require('express'); var settings = require('../utils/Settings'); var fs = require('fs'); @@ -50,7 +49,28 @@ exports.restartServer = function () { } var app = express(); // New syntax for express v3 - server = http.createServer(app); + + if (settings.ssl) { + + console.log( "SSL -- enabled"); + console.log( "SSL -- server key file: " + settings.ssl.key ); + console.log( "SSL -- Certificate Authority's certificate file: " + settings.ssl.cert ); + + options = { + key: fs.readFileSync( settings.ssl.key ), + cert: fs.readFileSync( settings.ssl.cert ) + }; + + var https = require('https'); + server = https.createServer(options, app); + + } else { + + console.log( "SSL -- not enabled!" ); + + var http = require('http'); + server = http.createServer(app); + } app.use(function (req, res, next) { res.header("Server", serverName); diff --git a/src/node/utils/Settings.js b/src/node/utils/Settings.js index 2ed76d0b..9caa2b0b 100644 --- a/src/node/utils/Settings.js +++ b/src/node/utils/Settings.js @@ -48,6 +48,13 @@ exports.ip = "0.0.0.0"; * The Port ep-lite should listen to */ exports.port = process.env.PORT || 9001; + +/** + * The SSL signed server key and the Certificate Authority's own certificate + * default case: ep-lite does *not* use SSL. A signed server key is not required in this case. + */ +exports.ssl = false; + /* * The Type of the database */ From 94e9cf0a328c110133079c1df26ae418ad22b5fb Mon Sep 17 00:00:00 2001 From: Simon Leblanc Date: Fri, 23 Nov 2012 06:20:09 +0100 Subject: [PATCH 008/130] improving the translation of the timeline --- src/locales/en.ini | 17 ++++++++++++++++- src/static/js/broadcast.js | 28 ++++++++++++++++++++++++++-- src/static/js/broadcast_slider.js | 6 +++--- 3 files changed, 45 insertions(+), 6 deletions(-) diff --git a/src/locales/en.ini b/src/locales/en.ini index a110583e..e542594d 100644 --- a/src/locales/en.ini +++ b/src/locales/en.ini @@ -74,4 +74,19 @@ timeslider.pageTitle = {{appTitle}} Timeslider timeslider.toolbar.returnbutton = Return to pad timeslider.toolbar.authors = Authors: timeslider.toolbar.authorsList = No Authors -timeslider.exportCurrent = Export current version as: \ No newline at end of file +timeslider.exportCurrent = Export current version as: +timeslider.version = Version {{version}} +timeslider.saved = Saved {{month}} {{day}}, {{year}} +timeslider.dateformat = {{month}}/{{day}}/{{year}} {{hours}}:{{minutes}}:{{seconds}} +timeslider.month.january = January +timeslider.month.february = February +timeslider.month.march = March +timeslider.month.april = April +timeslider.month.may = May +timeslider.month.june = June +timeslider.month.july = July +timeslider.month.august = August +timeslider.month.september = September +timeslider.month.october = October +timeslider.month.november = November +timeslider.month.december = December diff --git a/src/static/js/broadcast.js b/src/static/js/broadcast.js index 86e63f93..d67398fb 100644 --- a/src/static/js/broadcast.js +++ b/src/static/js/broadcast.js @@ -304,7 +304,14 @@ function loadBroadcastJS(socket, sendSocketMsg, fireWhenAllScriptsAreLoaded, Bro var hours = zpad(date.getHours(), 2); var minutes = zpad(date.getMinutes(), 2); var seconds = zpad(date.getSeconds(), 2); - return ([month, '/', day, '/', year, ' ', hours, ':', minutes, ':', seconds].join("")); + return (document.webL10n.get("timeslider.dateformat", { + "day": day, + "month": month, + "year": year, + "hours": hours, + "minutes": minutes, + "seconds": seconds + })); } @@ -313,7 +320,24 @@ function loadBroadcastJS(socket, sendSocketMsg, fireWhenAllScriptsAreLoaded, Bro $('#timer').html(dateFormat()); - var revisionDate = ["Saved", ["Jan", "Feb", "March", "April", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec"][date.getMonth()], date.getDate() + ",", date.getFullYear()].join(" ") + var revisionDate = document.webL10n.get("timeslider.saved", { + "day": date.getDate(), + "month": [ + document.webL10n.get("timeslider.month.january"), + document.webL10n.get("timeslider.month.february"), + document.webL10n.get("timeslider.month.march"), + document.webL10n.get("timeslider.month.april"), + document.webL10n.get("timeslider.month.may"), + document.webL10n.get("timeslider.month.june"), + document.webL10n.get("timeslider.month.july"), + document.webL10n.get("timeslider.month.august"), + document.webL10n.get("timeslider.month.september"), + document.webL10n.get("timeslider.month.october"), + document.webL10n.get("timeslider.month.november"), + document.webL10n.get("timeslider.month.december") + ][date.getMonth()], + "year": date.getFullYear() + }); $('#revision_date').html(revisionDate) } diff --git a/src/static/js/broadcast_slider.js b/src/static/js/broadcast_slider.js index fed9f2e7..a597c926 100644 --- a/src/static/js/broadcast_slider.js +++ b/src/static/js/broadcast_slider.js @@ -112,7 +112,7 @@ function loadBroadcastSliderJS(fireWhenAllScriptsAreLoaded) { $(this).attr('href', $(this).attr('thref').replace("%revision%", newpos)); }); - $("#revision_label").html("Version " + newpos); + $("#revision_label").html(document.webL10n.get("timeslider.version", { "version": newpos})); if (newpos == 0) { @@ -215,7 +215,7 @@ function loadBroadcastSliderJS(fireWhenAllScriptsAreLoaded) } if (authors.length == 0) { - authorsList.append("No Authors"); + authorsList.append(document.webL10n.get("timeslider.toolbar.authorsList")); } fixPadHeight(); @@ -346,7 +346,7 @@ function loadBroadcastSliderJS(fireWhenAllScriptsAreLoaded) var newloc = self.currentLoc + (evt2.clientX - self.startLoc); if (newloc < 0) newloc = 0; if (newloc > ($("#ui-slider-bar").width() - 2)) newloc = ($("#ui-slider-bar").width() - 2); - $("#revision_label").html("Version " + Math.floor(newloc * sliderLength / ($("#ui-slider-bar").width() - 2))); + $("#revision_label").html(document.webL10n.get("timeslider.version", { "version": Math.floor(newloc * sliderLength / ($("#ui-slider-bar").width() - 2))})); $(self).css('left', newloc); if (getSliderPosition() != Math.floor(newloc * sliderLength / ($("#ui-slider-bar").width() - 2))) _callSliderCallbacks(Math.floor(newloc * sliderLength / ($("#ui-slider-bar").width() - 2))) }); From d0a17d547168a0bcb8e35a7f63ba37ad2d360f5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Eixarch?= Date: Fri, 23 Nov 2012 18:18:03 +0100 Subject: [PATCH 009/130] test import converting to html instead to txt by default --- src/node/handler/ImportHandler.js | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/node/handler/ImportHandler.js b/src/node/handler/ImportHandler.js index 788706ce..b6cd5029 100644 --- a/src/node/handler/ImportHandler.js +++ b/src/node/handler/ImportHandler.js @@ -27,17 +27,22 @@ var settings = require('../utils/Settings'); var formidable = require('formidable'); var os = require("os"); +// TESTING importing in HTML +var importHtml = require("../utils/ImportHtml"); + //load abiword only if its enabled if(settings.abiword != null) var abiword = require("../utils/Abiword"); -var tempDirectory = "/tmp/"; +//Patched in formidable since v1.0.4: +// The dafault temp directory is well detected in order to OS +//var tempDirectory = "/tmp/"; //tempDirectory changes if the operating system is windows -if(os.type().indexOf("Windows") > -1) +/*if(os.type().indexOf("Windows") > -1) { tempDirectory = process.env.TEMP; -} +}*/ /** * do a requested import @@ -58,7 +63,7 @@ exports.doImport = function(req, res, padId) { var form = new formidable.IncomingForm(); form.keepExtensions = true; - form.uploadDir = tempDirectory; + //form.uploadDir = tempDirectory; form.parse(req, function(err, fields, files) { @@ -105,6 +110,7 @@ exports.doImport = function(req, res, padId) { var oldSrcFile = srcFile; srcFile = srcFile.split(".")[0] + ".txt"; + //srcFile = srcFile.split(".")[0] + ".htm"; fs.rename(oldSrcFile, srcFile, callback); } @@ -114,8 +120,11 @@ exports.doImport = function(req, res, padId) function(callback) { var randNum = Math.floor(Math.random()*0xFFFFFFFF); - destFile = tempDirectory + "eplite_import_" + randNum + ".txt"; - abiword.convertFile(srcFile, destFile, "txt", function(err){ + //destFile = tempDirectory + "eplite_import_" + randNum + ".txt"; + //destFile = tempDirectory + "eplite_import_" + randNum + ".htm"; + destFile = os.tmpDir() + "/eplite_import_" + randNum + ".htm"; + //abiword.convertFile(srcFile, destFile, "txt", function(err){ + abiword.convertFile(srcFile, destFile, "htm", function(err){ //catch convert errors if(err){ console.warn("Converting Error:", err); @@ -164,7 +173,9 @@ exports.doImport = function(req, res, padId) //change text of the pad and broadcast the changeset function(callback) { - pad.setText(text); + //pad.setText(text); + //prueba + importHtml.setPadHTML(pad, text); padMessageHandler.updatePadClients(pad, callback); }, @@ -196,6 +207,7 @@ exports.doImport = function(req, res, padId) ERR(err); //close the connection + res.send("", 200); }); } From ef3231efd27a5fde80a6d94b559117e9a028e641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Eixarch?= Date: Fri, 23 Nov 2012 19:06:18 +0100 Subject: [PATCH 010/130] cleaning --- src/node/handler/ImportHandler.js | 121 ++++++++++-------------------- 1 file changed, 39 insertions(+), 82 deletions(-) diff --git a/src/node/handler/ImportHandler.js b/src/node/handler/ImportHandler.js index b6cd5029..f6b381a7 100644 --- a/src/node/handler/ImportHandler.js +++ b/src/node/handler/ImportHandler.js @@ -18,31 +18,19 @@ * limitations under the License. */ -var ERR = require("async-stacktrace"); -var padManager = require("../db/PadManager"); -var padMessageHandler = require("./PadMessageHandler"); -var async = require("async"); -var fs = require("fs"); -var settings = require('../utils/Settings'); -var formidable = require('formidable'); -var os = require("os"); - -// TESTING importing in HTML -var importHtml = require("../utils/ImportHtml"); +var ERR = require("async-stacktrace") + , padManager = require("../db/PadManager") + , padMessageHandler = require("./PadMessageHandler") + , async = require("async") + , fs = require("fs") + , settings = require('../utils/Settings') + , formidable = require('formidable') + , os = require("os") + , importHtml = require("../utils/ImportHtml"); //load abiword only if its enabled if(settings.abiword != null) var abiword = require("../utils/Abiword"); - -//Patched in formidable since v1.0.4: -// The dafault temp directory is well detected in order to OS -//var tempDirectory = "/tmp/"; - -//tempDirectory changes if the operating system is windows -/*if(os.type().indexOf("Windows") > -1) -{ - tempDirectory = process.env.TEMP; -}*/ /** * do a requested import @@ -50,32 +38,27 @@ if(settings.abiword != null) exports.doImport = function(req, res, padId) { //pipe to a file - //convert file to text via abiword - //set text in the pad + //convert file to html via abiword + //set html in the pad - var srcFile, destFile; - var pad; - var text; + var srcFile, destFile + , pad; + , text; async.series([ //save the uploaded file to /tmp - function(callback) - { + function(callback) { var form = new formidable.IncomingForm(); form.keepExtensions = true; - //form.uploadDir = tempDirectory; - form.parse(req, function(err, fields, files) - { + form.parse(req, function(err, fields, files) { //the upload failed, stop at this point - if(err || files.file === undefined) - { + if(err || files.file === undefined) { console.warn("Uploading Error: " + err.stack); callback("uploadFailed"); } //everything ok, continue - else - { + else { //save the path of the uploaded file srcFile = files.file.path; callback(); @@ -85,48 +68,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) - { + function(callback) { var fileEnding = (srcFile.split(".")[1] || "").toLowerCase(); 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]) - { + for(var i in knownFileEndings) { + if(fileEnding == knownFileEndings[i]){ fileEndingKnown = true; } } //if the file ending is known, continue as normal - if(fileEndingKnown) - { + if(fileEndingKnown) { callback(); } //we need to rename this file with a .txt ending - else - { + else { var oldSrcFile = srcFile; srcFile = srcFile.split(".")[0] + ".txt"; - //srcFile = srcFile.split(".")[0] + ".htm"; fs.rename(oldSrcFile, srcFile, callback); } }, //convert file to text - function(callback) - { + function(callback) { var randNum = Math.floor(Math.random()*0xFFFFFFFF); - //destFile = tempDirectory + "eplite_import_" + randNum + ".txt"; - //destFile = tempDirectory + "eplite_import_" + randNum + ".htm"; destFile = os.tmpDir() + "/eplite_import_" + randNum + ".htm"; - //abiword.convertFile(srcFile, destFile, "txt", function(err){ - abiword.convertFile(srcFile, destFile, "htm", function(err){ + abiword.convertFile(srcFile, destFile, "htm", function(err) { //catch convert errors - if(err){ + if(err) { console.warn("Converting Error:", err); return callback("convertFailed"); } else { @@ -136,10 +109,8 @@ exports.doImport = function(req, res, padId) }, //get the pad object - function(callback) - { - padManager.getPad(padId, function(err, _pad) - { + function(callback) { + padManager.getPad(padId, function(err, _pad){ if(ERR(err, callback)) return; pad = _pad; callback(); @@ -147,54 +118,40 @@ exports.doImport = function(req, res, padId) }, //read the text - function(callback) - { - fs.readFile(destFile, "utf8", function(err, _text) - { + function(callback) { + fs.readFile(destFile, "utf8", function(err, _text){ if(ERR(err, callback)) return; text = _text; //node on windows has a delay on releasing of the file lock. //We add a 100ms delay to work around this - if(os.type().indexOf("Windows") > -1) - { - setTimeout(function() - { - callback(); - }, 100); - } - else - { + if(os.type().indexOf("Windows") > -1){ + setTimeout(function(){callback();}, 100); + } else { callback(); } }); }, //change text of the pad and broadcast the changeset - function(callback) - { - //pad.setText(text); - //prueba + function(callback) { importHtml.setPadHTML(pad, text); padMessageHandler.updatePadClients(pad, callback); }, //clean up temporary files - function(callback) - { + function(callback) { async.parallel([ - function(callback) - { + function(callback){ fs.unlink(srcFile, callback); }, - function(callback) - { + function(callback){ fs.unlink(destFile, callback); } ], callback); } - ], function(err) - { + ], function(err) { + var status = "ok"; //check for known errors and replace the status From e8bca8ea04c7f6f00c849aefcbb6ebd61c118d8d Mon Sep 17 00:00:00 2001 From: Wikinaut Date: Fri, 23 Nov 2012 21:15:52 +0100 Subject: [PATCH 011/130] Ip => IP typo fix; +comment for SSL --- settings.json.template | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/settings.json.template b/settings.json.template index 901ff812..9691d629 100644 --- a/settings.json.template +++ b/settings.json.template @@ -11,13 +11,16 @@ // alternatively, set up a fully specified Url to your own favicon "favicon": "favicon.ico", - //Ip and port which etherpad should bind at + //IP and port which etherpad should bind at "ip": "0.0.0.0", "port" : 9001, /* // Node native SSL support - // make sure to have the correct file access permissions set + // this is disabled by default + // + // make sure to have the minimum and correct file access permissions set + // so that the Etherpad server can access them "ssl" : { "key" : "/path-to-your/server.key", From 43980ffe11c59645120524cfbf6e096ac3f5a14e Mon Sep 17 00:00:00 2001 From: Wikinaut Date: Fri, 23 Nov 2012 21:18:05 +0100 Subject: [PATCH 012/130] chg server.key to epl-server.key --- settings.json.template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/settings.json.template b/settings.json.template index 9691d629..4894f897 100644 --- a/settings.json.template +++ b/settings.json.template @@ -23,8 +23,8 @@ // so that the Etherpad server can access them "ssl" : { - "key" : "/path-to-your/server.key", - "cert" : "/path-to-your/server.crt" + "key" : "/path-to-your/epl-server.key", + "cert" : "/path-to-your/epl-server.crt" }, */ From cc60b82a6ef3dda7a8c89dc8083bd5204bb99f48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Eixarch?= Date: Fri, 23 Nov 2012 22:55:25 +0100 Subject: [PATCH 013/130] Import html by default and allow basic import/export features without abiword --- src/node/handler/ImportHandler.js | 70 ++++++++++++++------------ src/node/hooks/express/importexport.js | 6 --- src/static/js/pad_impexp.js | 4 +- 3 files changed, 40 insertions(+), 40 deletions(-) diff --git a/src/node/handler/ImportHandler.js b/src/node/handler/ImportHandler.js index f6b381a7..93fd3db5 100644 --- a/src/node/handler/ImportHandler.js +++ b/src/node/handler/ImportHandler.js @@ -23,6 +23,7 @@ var ERR = require("async-stacktrace") , padMessageHandler = require("./PadMessageHandler") , async = require("async") , fs = require("fs") + , path = require("path") , settings = require('../utils/Settings') , formidable = require('formidable') , os = require("os") @@ -42,7 +43,7 @@ exports.doImport = function(req, res, padId) //set html in the pad var srcFile, destFile - , pad; + , pad , text; async.series([ @@ -69,16 +70,9 @@ 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] || "").toLowerCase(); - 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; - } - } + var fileEnding = path.extname(srcFile).toLowerCase() + , knownFileEndings = [".txt", ".doc", ".docx", ".pdf", ".odt", ".html", ".htm"] + , fileEndingKnown = (knownFileEndings.indexOf(fileEnding) > -1); //if the file ending is known, continue as normal if(fileEndingKnown) { @@ -87,25 +81,31 @@ exports.doImport = function(req, res, padId) //we need to rename this file with a .txt ending else { var oldSrcFile = srcFile; - srcFile = srcFile.split(".")[0] + ".txt"; + srcFile = path.join(path.dirname(srcFile),path.basename(srcFile, fileEnding)+".txt"); fs.rename(oldSrcFile, srcFile, callback); } }, - //convert file to text + //convert file to html function(callback) { var randNum = Math.floor(Math.random()*0xFFFFFFFF); - destFile = os.tmpDir() + "/eplite_import_" + randNum + ".htm"; - abiword.convertFile(srcFile, destFile, "htm", function(err) { - //catch convert errors - if(err) { - console.warn("Converting Error:", err); - return callback("convertFailed"); - } else { - callback(); - } - }); + destFile = path.join(os.tmpDir(), "eplite_import_" + randNum + ".htm"); + + if (abiword) { + abiword.convertFile(srcFile, destFile, "htm", function(err) { + //catch convert errors + if(err) { + console.warn("Converting Error:", err); + return callback("convertFailed"); + } else { + callback(); + } + }); + } else { + // if no abiword only rename + fs.rename(srcFile, destFile, callback); + } }, //get the pad object @@ -125,28 +125,35 @@ exports.doImport = function(req, res, padId) //node on windows has a delay on releasing of the file lock. //We add a 100ms delay to work around this - if(os.type().indexOf("Windows") > -1){ - setTimeout(function(){callback();}, 100); - } else { - callback(); - } + if(os.type().indexOf("Windows") > -1){ + setTimeout(function() {callback();}, 100); + } else { + callback(); + } }); }, //change text of the pad and broadcast the changeset function(callback) { - importHtml.setPadHTML(pad, text); + var fileEnding = path.extname(srcFile).toLowerCase(); + if (abiword || fileEnding == ".htm" || fileEnding == ".html") { + importHtml.setPadHTML(pad, text); + } else { + pad.setText(text); + } padMessageHandler.updatePadClients(pad, callback); }, //clean up temporary files function(callback) { + //for node < 0.7 compatible + var fileExists = fs.exists || path.exists; async.parallel([ function(callback){ - fs.unlink(srcFile, callback); + fileExists (srcFile, function(exist) { (exist)? fs.unlink(srcFile, callback): callback(); }); }, function(callback){ - fs.unlink(destFile, callback); + fileExists (destFile, function(exist) { (exist)? fs.unlink(destFile, callback): callback(); }); } ], callback); } @@ -164,7 +171,6 @@ exports.doImport = function(req, res, padId) ERR(err); //close the connection - res.send("", 200); }); } diff --git a/src/node/hooks/express/importexport.js b/src/node/hooks/express/importexport.js index 9e78f34d..9754ffa6 100644 --- a/src/node/hooks/express/importexport.js +++ b/src/node/hooks/express/importexport.js @@ -28,12 +28,6 @@ exports.expressCreateServer = function (hook_name, args, cb) { //handle import requests args.app.post('/p/:pad/import', function(req, res, next) { - //if abiword is disabled, skip handling this request - if(settings.abiword == null) { - next(); - return; - } - hasPadAccess(req, res, function() { importHandler.doImport(req, res, req.params.pad); }); diff --git a/src/static/js/pad_impexp.js b/src/static/js/pad_impexp.js index 08dd4293..70d27d40 100644 --- a/src/static/js/pad_impexp.js +++ b/src/static/js/pad_impexp.js @@ -225,8 +225,8 @@ var padimpexp = (function() $("#exportworda").remove(); $("#exportpdfa").remove(); $("#exportopena").remove(); - $(".importformdiv").remove(); - $("#import").html("Import is not available. To enable import please install abiword"); + + $("#importform").attr('action', pad_root_url + "/import"); } else if(clientVars.abiwordAvailable == "withoutPDF") { From ef7590fb7367ee87a444ef8a99c25b622bc3741b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Eixarch?= Date: Sat, 24 Nov 2012 00:26:48 +0100 Subject: [PATCH 014/130] Fix 1203: non-escaped html in plugins info --- src/templates/admin/plugins-info.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/templates/admin/plugins-info.html b/src/templates/admin/plugins-info.html index 22f87073..b361e9cf 100644 --- a/src/templates/admin/plugins-info.html +++ b/src/templates/admin/plugins-info.html @@ -14,17 +14,17 @@

Installed plugins

-
<%= plugins.formatPlugins() %>
+
<%- plugins.formatPlugins() %>

Installed parts

-
<%= plugins.formatParts() %>
+
<%- plugins.formatParts() %>

Installed hooks

Server side hooks

-
<%= plugins.formatHooks() %>
+
<%- plugins.formatHooks() %>

Client side hooks

-
<%= plugins.formatHooks("client_hooks") %>
+
<%- plugins.formatHooks("client_hooks") %>
From 8ac49477f9095574e680769eea95a9925cab5d3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Eixarch?= Date: Sat, 24 Nov 2012 00:42:44 +0100 Subject: [PATCH 015/130] Fix 1203: non-escaped html in plugins info --- src/templates/admin/plugins-info.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/templates/admin/plugins-info.html b/src/templates/admin/plugins-info.html index 22f87073..6b02c327 100644 --- a/src/templates/admin/plugins-info.html +++ b/src/templates/admin/plugins-info.html @@ -21,10 +21,10 @@

Installed hooks

Server side hooks

-
<%= plugins.formatHooks() %>
+
<%- plugins.formatHooks() %>

Client side hooks

-
<%= plugins.formatHooks("client_hooks") %>
+
<%- plugins.formatHooks("client_hooks") %>
From 6d5907562dc62fca7b7a4f34dd479d393bd01fd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Eixarch?= Date: Sat, 24 Nov 2012 03:18:22 +0100 Subject: [PATCH 016/130] Fixed installed plugins section in plugins/info --- src/templates/admin/plugins-info.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/templates/admin/plugins-info.html b/src/templates/admin/plugins-info.html index 6b02c327..94f94e2a 100644 --- a/src/templates/admin/plugins-info.html +++ b/src/templates/admin/plugins-info.html @@ -14,7 +14,7 @@

Installed plugins

-
<%= plugins.formatPlugins() %>
+
<%- plugins.formatPlugins().replace(", ","\n") %>

Installed parts

<%= plugins.formatParts() %>
From de5a90b9c78582b272c905674941d36fceb8750f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Laxstr=C3=B6m?= Date: Sun, 25 Nov 2012 12:52:08 +0000 Subject: [PATCH 017/130] Localisation updates from http://translatewiki.net. --- src/locales/bn.ini | 3 ++ src/locales/de.ini | 41 +++++++++++---------- src/locales/diq.ini | 53 +++++++++++++++++++++++++++ src/locales/es.ini | 3 +- src/locales/fa.ini | 79 ++++++++++++++++++++++++++++++++++++++++ src/locales/fi.ini | 39 ++++++++++++++++++-- src/locales/fr.ini | 12 +++--- src/locales/he.ini | 78 +++++++++++++++++++++++++++++++++++++++ src/locales/hu.ini | 78 +++++++++++++++++++++++++++++++++++++++ src/locales/ia.ini | 78 +++++++++++++++++++++++++++++++++++++++ src/locales/ja.ini | 78 +++++++++++++++++++++++++++++++++++++++ src/locales/ko.ini | 78 +++++++++++++++++++++++++++++++++++++++ src/locales/ksh.ini | 81 +++++++++++++++++++++++++++++++++++++++++ src/locales/mk.ini | 78 +++++++++++++++++++++++++++++++++++++++ src/locales/ml.ini | 78 +++++++++++++++++++++++++++++++++++++++ src/locales/nl.ini | 5 ++- src/locales/ru.ini | 78 +++++++++++++++++++++++++++++++++++++++ src/locales/te.ini | 67 ++++++++++++++++++++++++++++++++++ src/locales/zh-hant.ini | 78 +++++++++++++++++++++++++++++++++++++++ 19 files changed, 1053 insertions(+), 32 deletions(-) create mode 100644 src/locales/diq.ini create mode 100644 src/locales/fa.ini create mode 100644 src/locales/he.ini create mode 100644 src/locales/hu.ini create mode 100644 src/locales/ia.ini create mode 100644 src/locales/ja.ini create mode 100644 src/locales/ko.ini create mode 100644 src/locales/ksh.ini create mode 100644 src/locales/mk.ini create mode 100644 src/locales/ml.ini create mode 100644 src/locales/ru.ini create mode 100644 src/locales/te.ini create mode 100644 src/locales/zh-hant.ini diff --git a/src/locales/bn.ini b/src/locales/bn.ini index 7eca9e38..c829d2f8 100644 --- a/src/locales/bn.ini +++ b/src/locales/bn.ini @@ -1,14 +1,17 @@ ; Exported from translatewiki.net +; Author: Bellayet ; Author: Nasir8891 [bn] index.newPad = নতুন প্যাড index.createOpenPad = অথবা নাম লিখে প্যাড খুলুন/তৈরী করুন: pad.toolbar.bold.title = গাড় করা (Ctrl-B) pad.toolbar.italic.title = বাঁকা করা (Ctrl-I) +pad.toolbar.indent.title = প্রান্তিককরণ pad.toolbar.settings.title = সেটিং pad.colorpicker.save = সংরক্ষণ pad.colorpicker.cancel = বাতিল pad.loading = লোডিং... +pad.settings.fontType.normal = সাধারণ pad.settings.language = ভাষা: pad.importExport.successful = সফল! ; Fuzzy diff --git a/src/locales/de.ini b/src/locales/de.ini index 177746a5..1de2ad89 100644 --- a/src/locales/de.ini +++ b/src/locales/de.ini @@ -1,7 +1,9 @@ ; Exported from translatewiki.net +; Author: Metalhead64 +; Author: Wikinaut [de] index.newPad = Neues Pad -index.createOpenPad = Pad mit folgendem Namen öffnen +index.createOpenPad = Pad mit folgendem Namen öffnen: pad.toolbar.bold.title = Fett (Strg-B) pad.toolbar.italic.title = Kursiv (Strg-I) pad.toolbar.underline.title = Unterstrichen (Strg-U) @@ -13,7 +15,7 @@ pad.toolbar.unindent.title = Ausrücken pad.toolbar.undo.title = Rückgängig (Strg-Z) pad.toolbar.redo.title = Wiederholen (Strg-Y) pad.toolbar.clearAuthorship.title = Autorenfarben zurücksetzen -pad.toolbar.import_export.title = Import/Export von verschiedenen Dateiformaten +pad.toolbar.import_export.title = Import/Export in verschiedenen Dateiformaten pad.toolbar.timeslider.title = Pad-Geschichte anzeigen pad.toolbar.savedRevision.title = Diese Revision markieren pad.toolbar.settings.title = Einstellungen @@ -35,12 +37,11 @@ pad.settings.language = Sprache: pad.importExport.import_export = Import/Export pad.importExport.import = Datei oder Dokument hochladen pad.importExport.successful = Erfolgreich! -; Fuzzy -pad.importExport.export = Dieses Pad exportieren +pad.importExport.export = Aktuelles Pad exportieren als: pad.importExport.exporthtml = HTML -pad.importExport.exportplain = Reiner Text +pad.importExport.exportplain = Textdatei pad.importExport.exportword = Microsoft Word -pad.importExport.exportpdf = PDf +pad.importExport.exportpdf = PDF pad.importExport.exportopen = ODF (Open Document Format) pad.importExport.exportdokuwiki = DokuWiki pad.modals.connected = Verbunden. @@ -49,29 +50,29 @@ pad.modals.forcereconnect = Erneut Verbinden pad.modals.uderdup = In einem anderen Fenster geöffnet pad.modals.userdup.explanation = Dieses Pad scheint in mehr als einem Browser-Fenster auf diesem Computer geöffnet zu sein. pad.modals.userdup.advice = Um dieses Fenster zu benutzen, verbinden Sie bitte erneut. -pad.modals.unauth = Nicht Authorisiert. -pad.modals.unauth.explanation = Ihre Befugnisse auf dieses Pad zuzugreifen haben sich geädert. Versuchen Sie, erneut zu verbinden. +pad.modals.unauth = Nicht authorisiert. +pad.modals.unauth.explanation = Ihre Zugriffsberechtigung für dieses Pad hat sich zwischenzeitlich geändert. Bitte versuchen Sie, das Pad erneut aufzurufen. pad.modals.looping = Verbindung unterbrochen. -pad.modals.looping.explanation = Es gibt Probleme bei der Kommunikation mit dem Synchronisationsserver. -pad.modals.looping.cause = Möglicherweise verläuft Ihre Verbindung durch eine inkompatible Firewall oder einen inkompatiblen Proxy. -pad.modals.initsocketfail = Server nicht erreichbar. +pad.modals.looping.explanation = Es gibt Probleme bei der Kommunikation mit dem Pad-Server. +pad.modals.looping.cause = Möglicherweise sind Sie durch eine inkompatible Firewall oder über einen inkompatiblen Proxy mit dem Padserver verbunden. +pad.modals.initsocketfail = Pad-Server nicht erreichbar. pad.modals.initsocketfail.explanation = Es konnte keine Verbindung zum Synchronisationsserver hergestellt werden. pad.modals.initsocketfail.cause = Dies könnte an Ihrem Browser oder Ihrer Internet-Verbindung liegen. pad.modals.slowcommit = Verbindung unterbrochen. -pad.modals.slowcommit.explanation = Der Server reagiert nicht. -pad.modals.slowcommit.cause = Dies könnte an Problemen mit Netzwerk-Konnektivität liegen. Möglicherweise ist der Server aber auch überlastet. -pad.modals.deleted = Entfernt. -pad.modals.deleted.explanation = Dieses Pad wurde entfernt. +pad.modals.slowcommit.explanation = Der Pad-Server reagiert nicht. +pad.modals.slowcommit.cause = Dies könnte ein Problemen der Netzwerkverbindung sein, oder der Pad-Server ist momentan überlastet. +pad.modals.deleted = Gelöscht. +pad.modals.deleted.explanation = Dieses Pad wurde gelöscht. pad.modals.disconnected = Verbindung unterbrochen. -pad.modals.disconnected.explanation = Die Verbindung zum Synchronisationsserver wurde unterbrochen. -pad.modals.disconnected.cause = Möglicherweise ist der Server nicht erreichbar. Bitte benachrichtigen Sie uns, falls dies weiterhin passiert. +pad.modals.disconnected.explanation = Die Verbindung zum Pad-Server wurde unterbrochen. +pad.modals.disconnected.cause = Möglicherweise ist der Pad-Server nicht erreichbar. Bitte benachrichtigen Sie uns, falls dies weiterhin passiert. pad.share = Dieses Pad teilen -pad.share.readonly = Eingeschränkter zugriff (Nur lesen) +pad.share.readonly = Eingeschränkter Nur-Lese-Zugriff pad.share.link = Link pad.share.emebdcode = In Webseite einbetten pad.chat = Chat -pad.chat.title = Den Chat für dieses Pad öffnen -timeslider.pageTitle = {{appTitle}} Pad-Geschichte +pad.chat.title = Den Chat dieses Pads öffnen +timeslider.pageTitle = {{appTitle}} Pad-Versionsgeschichte timeslider.toolbar.returnbutton = Zurück zum Pad timeslider.toolbar.authors = Autoren: timeslider.toolbar.authorsList = keine Autoren diff --git a/src/locales/diq.ini b/src/locales/diq.ini new file mode 100644 index 00000000..f8205fb3 --- /dev/null +++ b/src/locales/diq.ini @@ -0,0 +1,53 @@ +; Exported from translatewiki.net +; Author: Erdemaslancan +; Author: Mirzali +[diq] +index.newPad = Pedo newe +pad.toolbar.bold.title = Qalın (Ctrl-B) +pad.toolbar.italic.title = Namıte (Ctrl-I) +pad.toolbar.underline.title = Bın xizkerden (Ctrl-U) +pad.toolbar.strikethrough.title = Serê cı xizın +pad.toolbar.ol.title = Lista ratnayi +pad.toolbar.indent.title = Serinya satır +pad.toolbar.unindent.title = Vıcente +pad.toolbar.undo.title = Peyser bê (Ctrl-Z) +pad.toolbar.redo.title = Ver şo (Ctrl-Y) +pad.toolbar.clearAuthorship.title = Pak Rengê Nuştoğey +pad.toolbar.timeslider.title = Ğızagê zemani +pad.toolbar.savedRevision.title = Rewizyonê Qeydbiyayey +pad.toolbar.settings.title = Sazkerdışi +pad.toolbar.embed.title = Na ped degusnayiya +pad.colorpicker.save = Qeyd ke +pad.colorpicker.cancel = Bıterkne +pad.loading = Bar beno... +pad.settings.padSettings = Sazkerdışê Pedi +pad.settings.myView = Asayışê mı +pad.settings.colorcheck = Rengê nuştekariye +pad.settings.fontType = Babeta nuşti: +pad.settings.fontType.normal = Normal +pad.settings.fontType.monospaced = Yewca +pad.settings.globalView = Asayışo Global +pad.settings.language = Zıwan: +pad.importExport.import_export = Zeredayış/Teberdayış +pad.importExport.successful = Serkewte! +pad.importExport.exporthtml = HTML +pad.importExport.exportplain = Duz metin +pad.importExport.exportword = Microsoft Word +pad.importExport.exportpdf = PDF +pad.importExport.exportopen = ODF (Open Document Format) +pad.importExport.exportdokuwiki = DokuWiki +pad.modals.unauth = Selahiyetdar niyo +pad.modals.looping = Bêgıreyın. +pad.modals.initsocketfail = Nêresneyêno ciyageyroği. +pad.modals.slowcommit = Bêgıreyın. +pad.modals.deleted = Esteriya. +pad.modals.deleted.explanation = Ena ped wedariye +pad.share.readonly = Tenya bıwane +pad.share.link = Gıre +pad.share.emebdcode = Degusnaye URL +pad.chat = Mıhebet +timeslider.pageTitle = Ğızagê zemani {{appTitle}} +timeslider.toolbar.returnbutton = Peyser şo ped +timeslider.toolbar.authors = Nuştoği: +timeslider.toolbar.authorsList = Nuştoği çıniyê +timeslider.exportCurrent = Versiyonê enewki teber de: diff --git a/src/locales/es.ini b/src/locales/es.ini index acb6a5cf..dd2c0d14 100644 --- a/src/locales/es.ini +++ b/src/locales/es.ini @@ -1,4 +1,5 @@ ; Exported from translatewiki.net +; Author: McDutchie [es] index.newPad = Nuevo Pad index.createOpenPad = o puedes crear/abrir un Pad con el nombre: @@ -46,7 +47,7 @@ pad.importExport.exportdokuwiki = DokuWiki pad.modals.connected = Conectado. pad.modals.reconnecting = Reconectando a tu pad.. pad.modals.forcereconnect = Reconexión forzosa -pad.modals.uderdup = Abrir en otra ventana +pad.modals.uderdup = Abierto en otra ventana pad.modals.userdup.explanation = Este pad parece estar abierto en más de una ventana de tu navegador. pad.modals.userdup.advice = Reconectar para usar esta ventana. pad.modals.unauth = No autorizado. diff --git a/src/locales/fa.ini b/src/locales/fa.ini new file mode 100644 index 00000000..dbbbbecc --- /dev/null +++ b/src/locales/fa.ini @@ -0,0 +1,79 @@ +; Exported from translatewiki.net +; Author: ZxxZxxZ +[fa] +index.newPad = دفترچه یادداشت جدید +index.createOpenPad = یا ایجاد/بازکردن یک پد با نام: +pad.toolbar.bold.title = پررنگ (Ctrl-B) +pad.toolbar.italic.title = مورب (Ctrl-I) +pad.toolbar.underline.title = زیرخط (Ctrl-U) +pad.toolbar.strikethrough.title = خط‌خورده +pad.toolbar.ol.title = فهرست مرتب‌شده +pad.toolbar.ul.title = فهرست مرتب‌نشده +pad.toolbar.indent.title = تورفتگی +pad.toolbar.unindent.title = بیرون‌رفتگی +pad.toolbar.undo.title = باطل‌کردن (Ctrl-Z) +pad.toolbar.redo.title = از نو (Ctrl-Y) +pad.toolbar.clearAuthorship.title = پاک‌کردن رنگ‌های نویسندگی +pad.toolbar.import_export.title = درون‌ریزی/برون‌ریزی از/به قالب‌های مختلف +pad.toolbar.timeslider.title = اسلایدر زمان +pad.toolbar.savedRevision.title = نسخه‌های ذخیره‌شده +pad.toolbar.settings.title = تنظیمات +pad.toolbar.embed.title = جاسازی این دفترچه یادداشت +pad.toolbar.showusers.title = نمایش کاربران در این دفترچه یادداشت +pad.colorpicker.save = ذخیره +pad.colorpicker.cancel = لغو +pad.loading = در حال بارگیری... +pad.settings.padSettings = تنظیمات دفترچه یادداشت +pad.settings.myView = نمای من +pad.settings.stickychat = چت همیشه روی صفحه نمایش +pad.settings.colorcheck = رنگ‌های نویسندگی +pad.settings.linenocheck = شمارهٔ خطوط +pad.settings.fontType = نوع قلم: +pad.settings.fontType.normal = عادی +pad.settings.fontType.monospaced = مونواسپیس +pad.settings.globalView = نمای سراسری +pad.settings.language = زبان: +pad.importExport.import_export = درون‌ریزی/برون‌ریزی +pad.importExport.import = برگذاری پروندهٔ متنی یا سند +pad.importExport.successful = موفق‌آمیز بود! +pad.importExport.export = برون‌ریزی این دفترچه یادداشت به عنوان: +pad.importExport.exporthtml = اچ‌تی‌ام‌ال +pad.importExport.exportplain = متنی ساده +pad.importExport.exportword = مایکروسافت ورد +pad.importExport.exportpdf = پی‌دی‌اف +pad.importExport.exportopen = اودی‌اف (قالب سند باز) +pad.importExport.exportdokuwiki = دوکوویکی (DokuWiki) +pad.modals.connected = متصل شد. +pad.modals.reconnecting = اتصال مجدد به دفترچه یادداشت شما.. +pad.modals.forcereconnect = اجبار به اتصال مجدد +pad.modals.uderdup = در پنجرهٔ دیگری باز شد +pad.modals.userdup.explanation = به نظر می‌رسد این دفترچه یادداشت در بیش از یک پنجرهٔ مرورگر از این رایانه باز شده‌است. +pad.modals.userdup.advice = اتصال مجدد برای استفاده از این پنجره +pad.modals.unauth = مجاز نیست +pad.modals.unauth.explanation = دسترسی شما در حین مشاهدهٔ این صفحه تغییر یافته‌است. +سعی کنید دوباره متصل شوید. +pad.modals.looping = اتصال قطع شد. +pad.modals.looping.explanation = مشکلاتی ارتباطی با سرور همگام‌سازی وجود دارد. +pad.modals.looping.cause = شاید شما از طریق یک فایروال یا پروکسی ناسازگار متصل شده‌اید. +pad.modals.initsocketfail = سرور غیر قابل دسترسی است. +pad.modals.initsocketfail.explanation = نتوانست به سرور همگام‌سازی متصل شود. +pad.modals.initsocketfail.cause = این احتمالاً به خاطر مشکلی در مرورگر یا اتصال اینترنتی‌تان است. +pad.modals.slowcommit = اتصال قطع شد. +pad.modals.slowcommit.explanation = سرور پاسخ نمی‌دهد. +pad.modals.slowcommit.cause = این می‌تواند به خاطر مشکلاتی در اتصال به شبکه باشد. +pad.modals.deleted = حذف شد. +pad.modals.deleted.explanation = این دفترچه یادداشت حذف شده‌است. +pad.modals.disconnected = اتصال شما قطع شده‌است. +pad.modals.disconnected.explanation = اتصال به سرور قطع شده‌است. +pad.modals.disconnected.cause = سرور ممکن است غیر قابل دسترس باشد. اگر این مشکل باز هم رخ داد لطفاً به ما اطلاع دهید. +pad.share = به‌اشتراک‌گذاری این دفترچه یادداشت +pad.share.readonly = فقط خواندنی +pad.share.link = پیوند +pad.share.emebdcode = جاسازی نشانی +pad.chat = چت +pad.chat.title = بازکردن چت برای این دفترچه یادداشت +timeslider.pageTitle = {{appTitle}} اسلایدر زمان +timeslider.toolbar.returnbutton = بازگشت به دفترچه یادداشت +timeslider.toolbar.authors = نویسندگان: +timeslider.toolbar.authorsList = بدون نویسنده +timeslider.exportCurrent = برون‌ریزی نسخهٔ کنونی به عنوان: diff --git a/src/locales/fi.ini b/src/locales/fi.ini index cbaea885..29ddd87a 100644 --- a/src/locales/fi.ini +++ b/src/locales/fi.ini @@ -1,4 +1,6 @@ ; Exported from translatewiki.net +; Author: Artnay +; Author: Jl ; Author: Nike [fi] index.newPad = Uusi muistio @@ -13,8 +15,9 @@ pad.toolbar.indent.title = Sisennä pad.toolbar.unindent.title = Ulonna pad.toolbar.undo.title = Kumoa (Ctrl-Z) pad.toolbar.redo.title = Tee uudelleen (Ctrl-Y) -pad.toolbar.clearAuthorship.title = Poista kirjoittavärit +pad.toolbar.clearAuthorship.title = Poista kirjoittajavärit pad.toolbar.import_export.title = Tuo tai vie eri muotoihin +pad.toolbar.timeslider.title = Aikajana pad.toolbar.savedRevision.title = Tallennetut versiot pad.toolbar.settings.title = Asetukset pad.toolbar.embed.title = Upota muistio @@ -25,13 +28,17 @@ pad.loading = Ladataan… pad.settings.padSettings = Muistion asetukset pad.settings.myView = Oma näkymä pad.settings.stickychat = Keskustelu aina näkyvissä -pad.settings.colorcheck = Kirjoittavärit +pad.settings.colorcheck = Kirjoittajavärit pad.settings.linenocheck = Rivinumerot pad.settings.fontType = Kirjasintyyppi: pad.settings.fontType.normal = normaali pad.settings.fontType.monospaced = tasalevyinen +pad.settings.globalView = Yleisnäkymä pad.settings.language = Kieli: pad.importExport.import_export = Tuonti/vienti +pad.importExport.import = Lähetä mikä tahansa tekstitiedosto tai asiakirja +pad.importExport.successful = Onnistui! +pad.importExport.export = Vie muistio muodossa: pad.importExport.exporthtml = HTML pad.importExport.exportplain = Muotoilematon teksti pad.importExport.exportword = Microsoft Word @@ -39,11 +46,35 @@ pad.importExport.exportpdf = PDF pad.importExport.exportopen = ODF (Open Document Format) pad.importExport.exportdokuwiki = DokuWiki pad.modals.connected = Yhdistetty. -pad.modals.reconnecting = Herätellään yhteyttä muistioon... -pad.modals.forcereconnect = Pakota uudelleenyhdistäminen +pad.modals.reconnecting = Muodostetaan yhteyttä muistioon uudelleen... +pad.modals.forcereconnect = Pakota yhdistämään uudelleen +pad.modals.uderdup = Avattu toisessa ikkunassa +pad.modals.userdup.explanation = Tämä muistio vaikuttaa olevan avoinna useammassa eri selainikkunassa tällä koneella. +pad.modals.userdup.advice = Yhdistä uudelleen, jos haluat käyttää tätä ikkunaa. +pad.modals.unauth = Oikeudet eivät riitä +pad.modals.unauth.explanation = Käyttöoikeutesi ovat muuttuneet katsellessasi tätä sivua. Yritä yhdistää uudelleen. +pad.modals.looping = Yhteys katkaistu. +pad.modals.looping.explanation = Synkronointipalvelimen kanssa on yhteysongelmia. +pad.modals.looping.cause = Yhteytesi on mahdollisesti muodostettu yhteensopimattoman palomuurin tai välityspalvelimen kautta. +pad.modals.initsocketfail = Palvelimeen ei saada yhteyttä. +pad.modals.initsocketfail.explanation = Synkronointipalvelimeen ei saatu yhteyttä. +pad.modals.initsocketfail.cause = Tämä johtuu mitä luultavimmin selaimestasi tai verkkoyhteydestäsi. +pad.modals.slowcommit = Yhteys katkaistu. +pad.modals.slowcommit.explanation = Palvelin ei vastaa. +pad.modals.slowcommit.cause = Tämä saattaa johtua verkkoyhteyden ongelmista. +pad.modals.deleted = Poistettu. +pad.modals.deleted.explanation = Tämä muistio on poistettu. +pad.modals.disconnected = Yhteytesi on katkaistu. +pad.modals.disconnected.explanation = Yhteys palvelimeen katkesi +pad.modals.disconnected.cause = Palvelin saattaa olla käyttämättömissä. Ilmoitathan meille, jos tämä ongelma toistuu. pad.share = Jaa muistio pad.share.readonly = Vain luku pad.share.link = Linkki pad.share.emebdcode = Upotusosoite pad.chat = Keskustelu +pad.chat.title = Avaa keskustelu nykyisestä muistiosta. +timeslider.pageTitle = {{appTitle}} -aikajana timeslider.toolbar.returnbutton = Palaa muistioon +timeslider.toolbar.authors = Tekijät: +timeslider.toolbar.authorsList = Ei tekijöitä +timeslider.exportCurrent = Vie nykyinen versio muodossa: diff --git a/src/locales/fr.ini b/src/locales/fr.ini index a80ff205..853c9ba8 100644 --- a/src/locales/fr.ini +++ b/src/locales/fr.ini @@ -1,4 +1,7 @@ ; Exported from translatewiki.net +; Author: Gomoko +; Author: Leviathan +; Author: McDutchie [fr] index.newPad = Nouveau Pad index.createOpenPad = ou créer/ouvrir un Pad intitulé @@ -35,8 +38,7 @@ pad.settings.language = Langue: pad.importExport.import_export = Importer/Exporter pad.importExport.import = Charger un texte ou un document pad.importExport.successful = Traitement effectué! -; Fuzzy -pad.importExport.export = Exporter ce Pad vers +pad.importExport.export = Exporter le Pad actuel comme: pad.importExport.exporthtml = HTML pad.importExport.exportplain = Texte brut pad.importExport.exportword = Microsoft Word @@ -46,12 +48,12 @@ pad.importExport.exportdokuwiki = DokuWiki pad.modals.connected = Connecté. pad.modals.reconnecting = Reconnexion vers votre Pad... pad.modals.forcereconnect = Forcer la reconnexion. -pad.modals.uderdup = Ouvrir dans une nouvelle fenêtre +pad.modals.uderdup = Ouvert dans une autre fenêtre pad.modals.userdup.explanation = Ce Pad semble avoir été ouvert dans plusieurs fenêtres de votre fureteur sur cet ordinateur. pad.modals.userdup.advice = Se reconnecter en utilisant cette fenêtre. pad.modals.unauth = Not authorized Non authorisé pad.modals.unauth.explanation = Vos permissions ont été changées lors de la visualisation de cette page. Essayer de vous reconnecter. -pad.modals.looping = Disconnected. Déconnecté. +pad.modals.looping = Déconnecté. pad.modals.looping.explanation = Nous éprouvons un problème de communication au serveur de synchronisation. pad.modals.looping.cause = Il est possible que leur connection soit protégée par un pare-feu incompatible ou un serveur proxy incompatible. pad.modals.initsocketfail = Le serveur est introuvable. @@ -74,5 +76,5 @@ pad.chat.title = Ouvrir la messagerie liée au Pad. timeslider.pageTitle = {{appTitle}} Curseur temporel timeslider.toolbar.returnbutton = Retour à ce Pad. timeslider.toolbar.authors = Auteurs: -timeslider.toolbar.authorsList = Aucun auteurs +timeslider.toolbar.authorsList = Aucun auteur timeslider.exportCurrent = Exporter version actuelle vers: diff --git a/src/locales/he.ini b/src/locales/he.ini new file mode 100644 index 00000000..4ed42981 --- /dev/null +++ b/src/locales/he.ini @@ -0,0 +1,78 @@ +; Exported from translatewiki.net +; Author: Amire80 +[he] +index.newPad = פנקס חדש +index.createOpenPad = או יצירה או פתיחה של פנקס עם בשם: +pad.toolbar.bold.title = בולט (Ctrl-B) +pad.toolbar.italic.title = נטוי (Ctrl-I) +pad.toolbar.underline.title = קו תחתי (Ctrl-U) +pad.toolbar.strikethrough.title = קו מוחק +pad.toolbar.ol.title = רשימה ממוספרת +pad.toolbar.ul.title = רשימה +pad.toolbar.indent.title = הזחה +pad.toolbar.unindent.title = צמצום הזחה +pad.toolbar.undo.title = ביטול (Ctrl-Z) +pad.toolbar.redo.title = ביצוע מחדש +pad.toolbar.clearAuthorship.title = ניקוי צבעים +pad.toolbar.import_export.title = ייבוא/ייצא בתסדירי קבצים שונים +pad.toolbar.timeslider.title = גולל זמן +pad.toolbar.savedRevision.title = גרסאות שמורות +pad.toolbar.settings.title = הגדרות +pad.toolbar.embed.title = הטמעת הפנקס הזה +pad.toolbar.showusers.title = הצגת המשתמשים בפנקס הזה +pad.colorpicker.save = שמירה +pad.colorpicker.cancel = ביטול +pad.loading = טעינה... +pad.settings.padSettings = הגדרות פנקס +pad.settings.myView = התצוגה שלי +pad.settings.stickychat = השיחה תמיד על המסך +pad.settings.colorcheck = צביעה לפי מחבר +pad.settings.linenocheck = מספרי שורות +pad.settings.fontType = סוג גופן: +pad.settings.fontType.normal = רגיל +pad.settings.fontType.monospaced = ברוחב קבוע +pad.settings.globalView = תצוגה לכל המשתמשים +pad.settings.language = שפה: +pad.importExport.import_export = ייבוא/ייצוא +pad.importExport.import = העלאת כל קובץ טקסט או מסמך +pad.importExport.successful = זה עבד! +pad.importExport.export = ייצוא הפנקס הנוכחי בתור: +pad.importExport.exporthtml = HTML +pad.importExport.exportplain = טקסט רגיל +pad.importExport.exportword = מיקרוסופט וורד +pad.importExport.exportpdf = PDF +pad.importExport.exportopen = ODF (Open Document Format) +pad.importExport.exportdokuwiki = DokuWiki +pad.modals.connected = מחובכר. +pad.modals.reconnecting = מתבצע חיבור מחדש... +pad.modals.forcereconnect = חיבור כפוי מחדש +pad.modals.uderdup = פתוח בחלון אחר +pad.modals.userdup.explanation = נראה שהפנקס הזה פתוח ביותר מחלון דפדפן אחד במחשב הזה. +pad.modals.userdup.advice = להתחבר מחדש באמצעות החלון הזה. +pad.modals.unauth = אין הרשאה +pad.modals.unauth.explanation = ההרשאות שלך השתנו בזמן שניסית להתחבר. נא לנסות להתחבר מחדש. +pad.modals.looping = לא מחובר. +pad.modals.looping.explanation = יש בעיות חיבור עם השרת המתאם. +pad.modals.looping.cause = ייתכן שהתחברת דרך חומת־אש או שרת מתווך שאינם מתאימים. +pad.modals.initsocketfail = אין תקשורות לשרת. +pad.modals.initsocketfail.explanation = התחברות לשרת המתאם לא הצליחה. +pad.modals.initsocketfail.cause = אולי זה בגלל הדפדפן שלך או חיבור האינטרנט שלך. +pad.modals.slowcommit = מנותק. +pad.modals.slowcommit.explanation = השרת אינו מגיב. +pad.modals.slowcommit.cause = אולי זה בגלל בעיות עם תקשורת לרשת. +pad.modals.deleted = נמחק. +pad.modals.deleted.explanation = הפנקס הזה הוסר. +pad.modals.disconnected = נותקת. +pad.modals.disconnected.explanation = התקשורת לשרת אבדה +pad.modals.disconnected.cause = ייתכן שהשרת אינו זמין. נא להוסיע לנו אם זה ממשיך לקרות. +pad.share = שיתוף הפנקס הזה +pad.share.readonly = קישור +pad.share.link = קישור +pad.share.emebdcode = הטמעת קישור +pad.chat = שיחה +pad.chat.title = פתיחת השיחה של הפנקס הזה. +timeslider.pageTitle = גולל זמן של {{appTitle}} +timeslider.toolbar.returnbutton = חזרה אל הפנקס +timeslider.toolbar.authors = כותבים: +timeslider.toolbar.authorsList = אין כותבים +timeslider.exportCurrent = ייצוא הכרסה הנוכחית בתור: diff --git a/src/locales/hu.ini b/src/locales/hu.ini new file mode 100644 index 00000000..da76f32e --- /dev/null +++ b/src/locales/hu.ini @@ -0,0 +1,78 @@ +; Exported from translatewiki.net +; Author: Tgr +[hu] +index.newPad = Új notesz +index.createOpenPad = vagy notesz létrehozása ezen a néven: +pad.toolbar.bold.title = Félkövér (Ctrl-B) +pad.toolbar.italic.title = Dőlt (Ctrl-I) +pad.toolbar.underline.title = Aláhúzás (Ctrl-U) +pad.toolbar.strikethrough.title = Áthúzás +pad.toolbar.ol.title = Számozott lista +pad.toolbar.ul.title = Számozatlan lista +pad.toolbar.indent.title = Behúzás növelése +pad.toolbar.unindent.title = Behúzás csökkentése +pad.toolbar.undo.title = Vissza (Ctrl-Z) +pad.toolbar.redo.title = Újra (Ctrl-Y) +pad.toolbar.clearAuthorship.title = Szerzők színezésének kikapcsolása +pad.toolbar.import_export.title = Importálás/exportálás különböző fájlformátumokból/ba +pad.toolbar.timeslider.title = Időcsúszka +pad.toolbar.savedRevision.title = Mentett állapotok +pad.toolbar.settings.title = Beállítások +pad.toolbar.embed.title = Notesz beágyazása +pad.toolbar.showusers.title = Notesz felhasználóinak megmutatása +pad.colorpicker.save = Mentés +pad.colorpicker.cancel = Mégsem +pad.loading = Betöltés… +pad.settings.padSettings = Notesz beállításai +pad.settings.myView = Az én nézetem +pad.settings.stickychat = Mindig mutasd a chat-dobozt +pad.settings.colorcheck = Szerzők szíbei +pad.settings.linenocheck = Sorok számozása +pad.settings.fontType = Betűtípus: +pad.settings.fontType.normal = Szokásos +pad.settings.fontType.monospaced = Írógépes +pad.settings.globalView = Globális nézet +pad.settings.language = Nyelv: +pad.importExport.import_export = Import/export +pad.importExport.import = Tetszőleges szövegfájl vagy dokumentum feltöltése +pad.importExport.successful = Siker! +pad.importExport.export = Jelenlegi notesz exportálása így: +pad.importExport.exporthtml = HTML +pad.importExport.exportplain = Sima szöveg +pad.importExport.exportword = Microsoft Word +pad.importExport.exportpdf = PDF +pad.importExport.exportopen = ODF (Open Document Format) +pad.importExport.exportdokuwiki = DokuWiki +pad.modals.connected = Kapcsolódva. +pad.modals.reconnecting = Újrakapcsolódás a noteszhez... +pad.modals.forcereconnect = Újrakapcsolódás kényszerítése +pad.modals.uderdup = Megnyitva másik ablakban +pad.modals.userdup.explanation = Úgy tűnik, ez a notesz több különböző böngészőablakban is meg van nyitva a számítógépeden. +pad.modals.userdup.advice = Kapcsolódj újra, ha ezt az ablakot akarod használni. +pad.modals.unauth = Nincs rá jogosultságod +pad.modals.unauth.explanation = A jogosultságaid változtak, miközben nézted ezt az oldalt. Próbálj újrakapcsolódni. +pad.modals.looping = Kapcsolat bontva. +pad.modals.looping.explanation = Nem sikerült a kommunikáció a szinkronizációs szerverrel. +pad.modals.looping.cause = Talán egy túl szigorú tűzfalon vagy proxyn keresztül kapcsolódtál az internetre. +pad.modals.initsocketfail = A szerver nem érhető el. +pad.modals.initsocketfail.explanation = Nem sikerült kapcsolódni a szinkronizációs szerverhez. +pad.modals.initsocketfail.cause = Valószínűleg a böngésződdel vagy az internetkapcsolatoddal van probléma. +pad.modals.slowcommit = Megszakadt a kapcsolat. +pad.modals.slowcommit.explanation = A szerver nem válaszol. +pad.modals.slowcommit.cause = Valószínűleg az internetkapcsolatoddal van probléma. +pad.modals.deleted = Törölve. +pad.modals.deleted.explanation = Ez a notesz el lett távolítva. +pad.modals.disconnected = Kapcsolat bontva. +pad.modals.disconnected.explanation = A szerverrel való kapcsolat megszűnt. +pad.modals.disconnected.cause = Lehet, hogy a szerver nem elérhető. Kérlek, értesíts minket, ha a probléma tartósan fennáll. +pad.share = Notesz megosztása +pad.share.readonly = Csak olvasható +pad.share.link = Hivatkozás +pad.share.emebdcode = URL beágyazása +pad.chat = Chat +pad.chat.title = A noteszhez tartozó chat megnyitása. +timeslider.pageTitle = {{appTitle}} időcsúszka +timeslider.toolbar.returnbutton = Vissza a noteszhez +timeslider.toolbar.authors = Szerzők: +timeslider.toolbar.authorsList = Nincsenek szerzők +timeslider.exportCurrent = Jelenlegi változat exportálása így: diff --git a/src/locales/ia.ini b/src/locales/ia.ini new file mode 100644 index 00000000..d646e2f1 --- /dev/null +++ b/src/locales/ia.ini @@ -0,0 +1,78 @@ +; Exported from translatewiki.net +; Author: McDutchie +[ia] +index.newPad = Nove pad +index.createOpenPad = o crear/aperir un pad con le nomine: +pad.toolbar.bold.title = Grasse (Ctrl-B) +pad.toolbar.italic.title = Italic (Ctrl-I) +pad.toolbar.underline.title = Sublinear (Ctrl-U) +pad.toolbar.strikethrough.title = Cancellar +pad.toolbar.ol.title = Lista ordinate +pad.toolbar.ul.title = Lista non ordinate +pad.toolbar.indent.title = Indentar +pad.toolbar.unindent.title = Disindentar +pad.toolbar.undo.title = Disfacer (Ctrl-Z) +pad.toolbar.redo.title = Refacer (Ctrl-Y) +pad.toolbar.clearAuthorship.title = Rader colores de autor +pad.toolbar.import_export.title = Importar/exportar in differente formatos de file +pad.toolbar.timeslider.title = Glissa-tempore +pad.toolbar.savedRevision.title = Versiones salveguardate +pad.toolbar.settings.title = Configuration +pad.toolbar.embed.title = Incorporar iste pad +pad.toolbar.showusers.title = Monstrar le usatores de iste pad +pad.colorpicker.save = Salveguardar +pad.colorpicker.cancel = Cancellar +pad.loading = Cargamento… +pad.settings.padSettings = Configuration del pad +pad.settings.myView = Mi vista +pad.settings.stickychat = Chat sempre visibile +pad.settings.colorcheck = Colores de autor +pad.settings.linenocheck = Numeros de linea +pad.settings.fontType = Typo de litteras: +pad.settings.fontType.normal = Normal +pad.settings.fontType.monospaced = Monospatial +pad.settings.globalView = Vista global +pad.settings.language = Lingua: +pad.importExport.import_export = Importar/Exportar +pad.importExport.import = Incargar qualcunque file de texto o documento +pad.importExport.successful = Succedite! +pad.importExport.export = Exportar le pad actual como: +pad.importExport.exporthtml = HTML +pad.importExport.exportplain = Texto simple +pad.importExport.exportword = Microsoft Word +pad.importExport.exportpdf = PDF +pad.importExport.exportopen = ODF (Open Document Format) +pad.importExport.exportdokuwiki = DokuWiki +pad.modals.connected = Connectite. +pad.modals.reconnecting = Reconnecte a tu pad… +pad.modals.forcereconnect = Fortiar reconnexion +pad.modals.uderdup = Aperte in un altere fenestra +pad.modals.userdup.explanation = Iste pad pare esser aperte in plus de un fenestra de navigator in iste computator. +pad.modals.userdup.advice = Reconnecte pro usar iste fenestra. +pad.modals.unauth = Non autorisate +pad.modals.unauth.explanation = Tu permissiones ha cambiate durante que tu legeva iste pagina. Tenta reconnecter. +pad.modals.looping = Disconnectite. +pad.modals.looping.explanation = Il ha problemas de communication con le servitor de synchronisation. +pad.modals.looping.cause = Il es possibile que tu connexion passa per un firewall o proxy incompatibile. +pad.modals.initsocketfail = Le servitor es inattingibile. +pad.modals.initsocketfail.explanation = Impossibile connecter al servitor de synchronisation. +pad.modals.initsocketfail.cause = Isto es probabilemente causate per un problema con tu navigator o connexion a internet. +pad.modals.slowcommit = Disconnectite. +pad.modals.slowcommit.explanation = Le servitor non responde. +pad.modals.slowcommit.cause = Isto pote esser causate per problemas con le connexion al rete. +pad.modals.deleted = Delite. +pad.modals.deleted.explanation = Iste pad ha essite removite. +pad.modals.disconnected = Tu ha essite disconnectite. +pad.modals.disconnected.explanation = Le connexion al servitor ha essite perdite. +pad.modals.disconnected.cause = Le servitor pote esser indisponibile. Per favor notifica nos si isto continua a producer se. +pad.share = Diffunder iste pad +pad.share.readonly = Lectura solmente +pad.share.link = Ligamine +pad.share.emebdcode = Codice de incorporation +pad.chat = Chat +pad.chat.title = Aperir le chat pro iste pad. +timeslider.pageTitle = Glissa-tempore pro {{appTitle}} +timeslider.toolbar.returnbutton = Retornar al pad +timeslider.toolbar.authors = Autores: +timeslider.toolbar.authorsList = Nulle autor +timeslider.exportCurrent = Exportar le version actual como: diff --git a/src/locales/ja.ini b/src/locales/ja.ini new file mode 100644 index 00000000..c092e07c --- /dev/null +++ b/src/locales/ja.ini @@ -0,0 +1,78 @@ +; Exported from translatewiki.net +; Author: Shirayuki +[ja] +index.newPad = 新規作成 +index.createOpenPad = または作成/編集するパッド名を入力: +pad.toolbar.bold.title = 太字 (Ctrl-B) +pad.toolbar.italic.title = 斜体 (Ctrl-I) +pad.toolbar.underline.title = 下線 (Ctrl-U) +pad.toolbar.strikethrough.title = 取り消し線 +pad.toolbar.ol.title = 番号付きリスト +pad.toolbar.ul.title = 番号なしリスト +pad.toolbar.indent.title = インデント +pad.toolbar.unindent.title = インデント解除 +pad.toolbar.undo.title = 元に戻す (Ctrl-Z) +pad.toolbar.redo.title = やり直し (Ctrl-Y) +pad.toolbar.clearAuthorship.title = 作者の色分けを消去 +pad.toolbar.import_export.title = 他の形式のファイルのインポート/エクスポート +pad.toolbar.timeslider.title = タイムスライダー +pad.toolbar.savedRevision.title = 保存済みの版 +pad.toolbar.settings.title = 設定 +pad.toolbar.embed.title = このパッドを埋め込む +pad.toolbar.showusers.title = このパッドのユーザーを表示 +pad.colorpicker.save = 保存 +pad.colorpicker.cancel = キャンセル +pad.loading = 読み込み中... +pad.settings.padSettings = パッドの設定 +pad.settings.myView = 個人設定 +pad.settings.stickychat = 画面にチャットを常に表示 +pad.settings.colorcheck = 作者の色分け +pad.settings.linenocheck = 行番号 +pad.settings.fontType = フォントの種類: +pad.settings.fontType.normal = 通常 +pad.settings.fontType.monospaced = 固定幅 +pad.settings.globalView = グローバル設定 +pad.settings.language = 言語: +pad.importExport.import_export = インポート/エクスポート +pad.importExport.import = あらゆるテキストファイルやドキュメントをアップロードできます +pad.importExport.successful = 完了しました。 +pad.importExport.export = 現在のパッドをエクスポートする形式: +pad.importExport.exporthtml = HTML +pad.importExport.exportplain = プレーンテキスト +pad.importExport.exportword = Microsoft Word +pad.importExport.exportpdf = PDF +pad.importExport.exportopen = ODF (Open Document Format) +pad.importExport.exportdokuwiki = DokuWiki +pad.modals.connected = 接続されました。 +pad.modals.reconnecting = パッドに再接続中... +pad.modals.forcereconnect = 強制的に再接続 +pad.modals.uderdup = 別のウィンドウで開かれています +pad.modals.userdup.explanation = このコンピューターの複数のブラウザーウィンドウで、このパッドを開いているようです。 +pad.modals.userdup.advice = 代わりにこのウィンドウを再接続します。 +pad.modals.unauth = 権限がありません +pad.modals.unauth.explanation = このページの閲覧中にあなたの権限が変更されました。再接続をお試しください。 +pad.modals.looping = 切断されました。 +pad.modals.looping.explanation = 同期サーバーとの通信に問題点があります。 +pad.modals.looping.cause = ご使用中のファイアウォールまたはプロキシとは互換性がない可能性があります。 +pad.modals.initsocketfail = サーバーに到達できません。 +pad.modals.initsocketfail.explanation = 同期サーバーに接続できませんでした。 +pad.modals.initsocketfail.cause = これはご使用中のブラウザーやインターネット接続の問題が原因である可能性があります。 +pad.modals.slowcommit = 切断されました。 +pad.modals.slowcommit.explanation = サーバーが応答しません。 +pad.modals.slowcommit.cause = これはネットワーク接続の問題が原因である可能性があります。 +pad.modals.deleted = 削除されました。 +pad.modals.deleted.explanation = このパッドは削除されました。 +pad.modals.disconnected = 切断されました。 +pad.modals.disconnected.explanation = サーバーとの接続が失われました +pad.modals.disconnected.cause = サーバーに到達できない可能性があります。この問題が解決しない場合はお知らせください。 +pad.share = このパッドを共有 +pad.share.readonly = 読み取り専用 +pad.share.link = リンク +pad.share.emebdcode = 埋め込み用 URL +pad.chat = チャット +pad.chat.title = このパッドのチャットを開きます。 +timeslider.pageTitle = {{appTitle}} タイムスライダー +timeslider.toolbar.returnbutton = パッドに戻る +timeslider.toolbar.authors = 作者: +timeslider.toolbar.authorsList = 作者なし +timeslider.exportCurrent = 現在の版をエクスポートする形式: diff --git a/src/locales/ko.ini b/src/locales/ko.ini new file mode 100644 index 00000000..8f67c054 --- /dev/null +++ b/src/locales/ko.ini @@ -0,0 +1,78 @@ +; Exported from translatewiki.net +; Author: 아라 +[ko] +index.newPad = 새 패드 +index.createOpenPad = 또는 다음 이름으로 패드 만들기/열기: +pad.toolbar.bold.title = 굵게 (Ctrl-B) +pad.toolbar.italic.title = 기울임 (Ctrl-I) +pad.toolbar.underline.title = 밑줄 (Ctrl-U) +pad.toolbar.strikethrough.title = 취소선 +pad.toolbar.ol.title = 순서 있는 목록 +pad.toolbar.ul.title = 순서 없는 목록 +pad.toolbar.indent.title = 들여쓰기 +pad.toolbar.unindent.title = 내어쓰기 +pad.toolbar.undo.title = 실행 취소 (Ctrl-Z) +pad.toolbar.redo.title = 다시 실행 (Ctrl-Y) +pad.toolbar.clearAuthorship.title = 저자의 색 지우기 +pad.toolbar.import_export.title = 다른 파일 형식 가져오기/내보내기 +pad.toolbar.timeslider.title = 시간슬라이더 +pad.toolbar.savedRevision.title = 저장한 판 +pad.toolbar.settings.title = 설정 +pad.toolbar.embed.title = 이 패드 포함 +pad.toolbar.showusers.title = 이 패드에 사용자 보기 +pad.colorpicker.save = 저장 +pad.colorpicker.cancel = 취소 +pad.loading = 불러오는 중... +pad.settings.padSettings = 패드 설정 +pad.settings.myView = 내 보기 +pad.settings.stickychat = 화면에 항상 대화 보기 +pad.settings.colorcheck = 저자 색 +pad.settings.linenocheck = 줄 번호 +pad.settings.fontType = 글꼴 종류: +pad.settings.fontType.normal = 보통 +pad.settings.fontType.monospaced = 고정 폭 +pad.settings.globalView = 전역 보기 +pad.settings.language = 언어: +pad.importExport.import_export = 가져오기/내보내기 +pad.importExport.import = 텍스트 파일이나 문서 올리기 +pad.importExport.successful = 성공! +pad.importExport.export = 다음으로 현재 패드 내보내기: +pad.importExport.exporthtml = HTML +pad.importExport.exportplain = 일반 텍스트 +pad.importExport.exportword = Microsoft Word +pad.importExport.exportpdf = PDF +pad.importExport.exportopen = ODF (Open Document Format) +pad.importExport.exportdokuwiki = DokuWiki +pad.modals.connected = 연결했습니다. +pad.modals.reconnecting = 패드에 다시 연결 중.. +pad.modals.forcereconnect = 강제로 다시 연결 +pad.modals.uderdup = 다른 창에서 열리고 있음 +pad.modals.userdup.explanation = 이 패드는 이 컴퓨터에 하나보다 많이 브라우저 창에서 열린 것 같습니다. +pad.modals.userdup.advice = 대신 이 창을 사용해 다시 연결합니다. +pad.modals.unauth = 권한이 없음 +pad.modals.unauth.explanation = 이 문서를 보는 동안 권한이 바뀌었습니다. 다시 연결을 시도하세요. +pad.modals.looping = 연결이 끊어졌습니다. +pad.modals.looping.explanation = 동기 서버와의 통신 문제가 있습니다. +pad.modals.looping.cause = 아마 호환되지 않는 방화벽이나 프록시를 통해 연결되어 있습니다. +pad.modals.initsocketfail = 서버에 연결할 수 없습니다. +pad.modals.initsocketfail.explanation = 동기 서버에 연결할 수 없습니다. +pad.modals.initsocketfail.cause = 아마도 브라우저나 인터넷 연결에 문제가 있기 때문일 수 있습니다. +pad.modals.slowcommit = 연결이 끊어졌습니다. +pad.modals.slowcommit.explanation = 서버가 응답하지 않습니다. +pad.modals.slowcommit.cause = 네트워크 연결에 문제가 있기 때문일 수 있습니다. +pad.modals.deleted = 삭제되었습니다. +pad.modals.deleted.explanation = 이 패드를 제거했습니다. +pad.modals.disconnected = 연결이 끊어졌습니다. +pad.modals.disconnected.explanation = 서버에서 연결을 잃었습니다 +pad.modals.disconnected.cause = 서버를 사용할 수 없습니다. 이 문제가 계속 발생하면 알려주시기 바랍니다. +pad.share = 이 패드 공유하기 +pad.share.readonly = 읽기 전용 +pad.share.link = 링크 +pad.share.emebdcode = URL 포함 +pad.chat = 대화 +pad.chat.title = 이 패드에 대화를 엽니다. +timeslider.pageTitle = {{appTitle}} 시간슬라이더 +timeslider.toolbar.returnbutton = 패드로 돌아가기 +timeslider.toolbar.authors = 저자: +timeslider.toolbar.authorsList = 저자 없음 +timeslider.exportCurrent = 현재 버전으로 내보내기: diff --git a/src/locales/ksh.ini b/src/locales/ksh.ini new file mode 100644 index 00000000..fcd972c1 --- /dev/null +++ b/src/locales/ksh.ini @@ -0,0 +1,81 @@ +; Exported from translatewiki.net +; Author: Purodha +[ksh] +index.newPad = Neu Padd +index.createOpenPad = udder maach e Padd op med däm Naame: +pad.toolbar.bold.title = Fättschreff (Strg-B) +pad.toolbar.italic.title = Scheive Schreff (Strg-I) +pad.toolbar.underline.title = Ongerstresche (Strg-U) +pad.toolbar.strikethrough.title = Dorschjeschtresche +pad.toolbar.ol.title = Leß met Nommere +pad.toolbar.ul.title = Leß met Pongkte +pad.toolbar.indent.title = Enjerök +pad.toolbar.unindent.title = Ußjerök +pad.toolbar.undo.title = Retuur nämme (Strg-Z) +pad.toolbar.redo.title = Norrens (Strg-Y) +pad.toolbar.clearAuthorship.title = dä Schriiver ier Färve fottnämme +pad.toolbar.import_export.title = Vun ongerscheidlijje Dattei_Fommaate empotteere udder äxpotteere +pad.toolbar.timeslider.title = Verjangeheid afschpelle +pad.toolbar.savedRevision.title = Faßjehallde Versione +pad.toolbar.settings.title = Enschtällonge +pad.toolbar.embed.title = Donn dat Padd enbenge +pad.toolbar.showusers.title = Verbonge Metschriiver aanzeije +pad.colorpicker.save = Faßhallde +pad.colorpicker.cancel = Ophüüre +pad.loading = Aam Laade … +pad.settings.padSettings = Dam Pädd sin Enschtällonge +pad.settings.myView = Anseesch +pad.settings.stickychat = Donn der Klaaf emmer aanzeije +pad.settings.colorcheck = Färve för de Schriiver +pad.settings.linenocheck = Nommere för de Reije +pad.settings.fontType = Zoot Schreff +pad.settings.fontType.normal = Nomaal +pad.settings.fontType.monospaced = einheidlesch brejde Zeische +pad.settings.globalView = Et Ußsin för Alle +pad.settings.language = Schprooch: +pad.importExport.import_export = Empoot/Äxpoot +pad.importExport.import = Donn jeede Täx udder jeede Zoot Dokemänt huhlaade +pad.importExport.successful = Jeschaff! +pad.importExport.export = Don dat Pädd äxpoteere alß: +pad.importExport.exporthtml = HTML +pad.importExport.exportplain = Eijfach Täx +pad.importExport.exportword = Microsoft Word +pad.importExport.exportpdf = PDF +(Poteerbaa Dokemänte Fommaat) +pad.importExport.exportopen = ODF +(Offe Dokemänte-Fommaat) +pad.importExport.exportdokuwiki = DokuWiki +pad.modals.connected = Verbonge. +pad.modals.reconnecting = Ben wider aam Verbenge … +pad.modals.forcereconnect = Wider verbenge +pad.modals.uderdup = En enem andere Finster en Ärbeid +pad.modals.userdup.explanation = Heh dat Padd schingk en mieh wi einem Finster vun enem Brauser op heh däm Rääschner op ze sin. +pad.modals.userdup.advice = En heh däm Finster wider verbenge. +pad.modals.unauth = Nit berääschtesch +pad.modals.unauth.explanation = Ding Berääschtejong hät sesch jeändert, derwiehl De di Sigg aam beloore wohrß. Versöhk en neu Verbendong ze maache. +pad.modals.looping = De Verbendong es fott. +pad.modals.looping.explanation = Et jitt Probleeme met dä Verbendong mem ẞööver för de Schriiver ier Aandeile zesamme_ze_bränge. +pad.modals.looping.cause = Künnt sin, Ding Verbendong jeiht dorj_en onzopaß proxy-ööver udder firewall +pad.modals.initsocketfail = Dä ẞööver es nit ze äreische. +pad.modals.initsocketfail.explanation = Kein Verbendong met däm ẞööver ze krijje. +pad.modals.initsocketfail.cause = Dat künnt aam Brauser udder aan däm singer Verbendong övver et Internet lijje. +pad.modals.slowcommit = De Verbendong es fott. +pad.modals.slowcommit.explanation = Dä ẞööver antwoot nit. +pad.modals.slowcommit.cause = Dat künnt aan Probleeme met Verbendonge em Näzwärrek lijje. +pad.modals.deleted = Fottjeschmeße. +pad.modals.deleted.explanation = Dat Pädd es fottjeschmeße woode. +pad.modals.disconnected = Do bes nit mieh verbonge. +pad.modals.disconnected.explanation = De Verbendong mem ẞööver es fott. +pad.modals.disconnected.cause = Dä ẞööver künnt nit loufe. +Sidd_esu jood und saat ons Bescheid, wann dat öfters paßeet. +pad.share = Maach heh dat Padd öffentlesch +pad.share.readonly = Nor zom Lässe +pad.share.link = Lengk +pad.share.emebdcode = URL enboue +pad.chat = Klaaf +pad.chat.title = Maach dä Klaaf för heh dat Pädd op +timeslider.pageTitle = {{appTitle}} - Verjangeheid affschpelle +timeslider.toolbar.returnbutton = Jangk retuur nohm Pädd +timeslider.toolbar.authors = Schriiver: +timeslider.toolbar.authorsList = Kein Schriivere +timeslider.exportCurrent = Donn de meußte Väsjohn äxpotteere alß: diff --git a/src/locales/mk.ini b/src/locales/mk.ini new file mode 100644 index 00000000..c5205229 --- /dev/null +++ b/src/locales/mk.ini @@ -0,0 +1,78 @@ +; Exported from translatewiki.net +; Author: Bjankuloski06 +[mk] +index.newPad = Нова тетратка +index.createOpenPad = или направете/отворете тетратка со името: +pad.toolbar.bold.title = Задебелено (Ctrl-B) +pad.toolbar.italic.title = Косо (Ctrl-I) +pad.toolbar.underline.title = Подвлечено (Ctrl-U) +pad.toolbar.strikethrough.title = Прецртано +pad.toolbar.ol.title = Подреден список +pad.toolbar.ul.title = Неподреден список +pad.toolbar.indent.title = Вовлекување +pad.toolbar.unindent.title = Отстап +pad.toolbar.undo.title = Врати (Ctrl-Z) +pad.toolbar.redo.title = Повтори (Ctrl-Y) +pad.toolbar.clearAuthorship.title = Поништи ги авторските бои +pad.toolbar.import_export.title = Увоз/Извоз од/во разни податотечни формати +pad.toolbar.timeslider.title = Историски преглед +pad.toolbar.savedRevision.title = Зачувани ревизии +pad.toolbar.settings.title = Поставки +pad.toolbar.embed.title = Вметни ја тетраткава +pad.toolbar.showusers.title = Прикаж. корисниците на тетраткава +pad.colorpicker.save = Зачувај +pad.colorpicker.cancel = Откажи +pad.loading = Вчитувам... +pad.settings.padSettings = Поставки на тетратката +pad.settings.myView = Мој поглед +pad.settings.stickychat = Разговорите секогаш на екранот +pad.settings.colorcheck = Авторски бои +pad.settings.linenocheck = Броеви на редовите +pad.settings.fontType = Тип на фонт: +pad.settings.fontType.normal = Нормален +pad.settings.fontType.monospaced = Непропорционален +pad.settings.globalView = Гобален поглед +pad.settings.language = Јазик: +pad.importExport.import_export = Увоз/Извоз +pad.importExport.import = Подигање на било каква текстуална податотека или документ +pad.importExport.successful = Успешно! +pad.importExport.export = Извези ја тековната тетратка како +pad.importExport.exporthtml = HTML +pad.importExport.exportplain = Прост текст +pad.importExport.exportword = Microsoft Word +pad.importExport.exportpdf = PDF +pad.importExport.exportopen = ODF (Open Document Format) +pad.importExport.exportdokuwiki = DokuWiki +pad.modals.connected = Поврзано. +pad.modals.reconnecting = Ве преповрзувам со тетратката... +pad.modals.forcereconnect = Наметни преповрзување +pad.modals.uderdup = Отворено во друг прозорец +pad.modals.userdup.explanation = Оваа тетратка е отворена на повеќе од еден прозорец (во прелистувач) на сметачот. +pad.modals.userdup.advice = Преповрзете се за да го користите овој прозорец. +pad.modals.unauth = Неовластено +pad.modals.unauth.explanation = Вашите дозволи се имаат изменето додека ја гледавте страницава. Обидете се да се преповрзете. +pad.modals.looping = Врската е прекината. +pad.modals.looping.explanation = Се јавија проблеми со врската со усогласителниот опслужувач. +pad.modals.looping.cause = Можеби сте поврзани преку нескладен огнен ѕид или застапник. +pad.modals.initsocketfail = Опслужувачот е недостапен. +pad.modals.initsocketfail.explanation = Не можев да се поврзам со усогласителниот опслужувач. +pad.modals.initsocketfail.cause = Ова веројатно се должи на проблем со вашиот прелистувач или врската со интернет. +pad.modals.slowcommit = Прекинато. +pad.modals.slowcommit.explanation = Опслужувачот не се одѕива. +pad.modals.slowcommit.cause = Ова може да се должи на проблеми со мрежното поврзување. +pad.modals.deleted = Избришано. +pad.modals.deleted.explanation = Оваа тетратка е отстранета. +pad.modals.disconnected = Врската е прекината. +pad.modals.disconnected.explanation = Врската со опслужувачот е прекината +pad.modals.disconnected.cause = Опслужувачот може да е недостапен. Известете нè ако ова продолжи да ви се случува. +pad.share = Сподели ја тетраткава +pad.share.readonly = Само читање +pad.share.link = Врска +pad.share.emebdcode = Вметни URL +pad.chat = Разговор +pad.chat.title = Отвори го разговорот за оваа тетратка. +timeslider.pageTitle = {{appTitle}} Историски преглед +timeslider.toolbar.returnbutton = Назад на тетратката +timeslider.toolbar.authors = Автори: +timeslider.toolbar.authorsList = Нема автори +timeslider.exportCurrent = Извези ја тековната верзија како: diff --git a/src/locales/ml.ini b/src/locales/ml.ini new file mode 100644 index 00000000..409b6b10 --- /dev/null +++ b/src/locales/ml.ini @@ -0,0 +1,78 @@ +; Exported from translatewiki.net +; Author: Santhosh.thottingal +[ml] +index.newPad = പുതിയ ഏടു് +index.createOpenPad = അല്ലെങ്കിൽ പേരുകൊടുത്തു് ഒരു ഏടുണ്ടാക്കുകയോ തുറക്കുകയോ ചെയ്യുക +pad.toolbar.bold.title = കട്ടി (Ctrl-B) +pad.toolbar.italic.title = ചെരിക്കുക (Ctrl-I) +pad.toolbar.underline.title = അടിവര (Ctrl-U) +pad.toolbar.strikethrough.title = വെട്ടുക +pad.toolbar.ol.title = ക്രമത്തിലുള്ള പട്ടിക +pad.toolbar.ul.title = ക്രമരഹിത പട്ടിക +pad.toolbar.indent.title = വലത്തേക്കു് തള്ളുക +pad.toolbar.unindent.title = ഇടത്തേക്കു് തള്ളുക +pad.toolbar.undo.title = വേണ്ട (Ctrl-Z) +pad.toolbar.redo.title = വീണ്ടും (Ctrl-Y) +pad.toolbar.clearAuthorship.title = എഴുത്തിയവർക്കുള്ള നിറം കളയുക +pad.toolbar.import_export.title = വിവിധ ഫയൽത്തരങ്ങളിലേക്ക്/നിന്നും എടുക്കുക +pad.toolbar.timeslider.title = സമയരേഖ +pad.toolbar.savedRevision.title = എടുത്തുവെച്ച ലക്കങ്ങൾ +pad.toolbar.settings.title = ക്രമീകരണങ്ങൾ +pad.toolbar.embed.title = ഈ ഏടു് ഉൾപ്പെടുത്തുക +pad.toolbar.showusers.title = ഈ ഏടിലുള്ളവരെ കാണുക +pad.colorpicker.save = എടുത്തുവെയ്ക്കുക +pad.colorpicker.cancel = റദ്ദാക്കുക +pad.loading = എടുക്കുന്നു... +pad.settings.padSettings = ഏടിന്റെ ക്രമീകരണങ്ങൾ +pad.settings.myView = എന്റെ കാഴ്ച +pad.settings.stickychat = സംവാദം കാണിക്കുക +pad.settings.colorcheck = എഴുത്തുകാർക്കുള്ള നിറങ്ങൾ +pad.settings.linenocheck = എണ്ണമിട്ട വരികൾ +pad.settings.fontType = അക്ഷരത്തിന്റെ തരം +pad.settings.fontType.normal = സാധാരണം +pad.settings.fontType.monospaced = ഒരേവീതി +pad.settings.globalView = മൊത്തക്കാഴ്ച +pad.settings.language = ഭാഷ: +pad.importExport.import_export = എടുക്കുക/കയറ്റുക +pad.importExport.import = ഫയലോ രേഖയോ കേറ്റൂക +pad.importExport.successful = വിജയകരം! +pad.importExport.export = ഈ ഏടു് എടുത്തുവെയ്ക്കുക: +pad.importExport.exporthtml = HTML +pad.importExport.exportplain = വെറും എഴുത്തു് +pad.importExport.exportword = Microsoft Word +pad.importExport.exportpdf = PDF +pad.importExport.exportopen = ODF (Open Document Format) +pad.importExport.exportdokuwiki = DokuWiki +pad.modals.connected = ബന്ധിപ്പിച്ചിരിക്കുന്നു. +pad.modals.reconnecting = ഏടു് വീണ്ടും ബന്ധിപ്പിക്കുന്നു... +pad.modals.forcereconnect = എന്തായാലും ബന്ധിപ്പിക്കുക +pad.modals.uderdup = വേറെ ജാലകത്തിൽ തുറന്നു +pad.modals.userdup.explanation = ഈ ഏടു് ഒന്നിലധികം ബൌസർ ജാലകങ്ങളിൽ ഈ കമ്പ്യൂട്ടറിൽ തുറന്നതായി കാണുന്നു. +pad.modals.userdup.advice = ഈ ജാലകം തന്നെ ഉപയോഗിക്കാനായി ബന്ധിപ്പിക്കുക +pad.modals.unauth = അനുവാദമില്ല. +pad.modals.unauth.explanation = നിങ്ങളുടെ അനുവാദങ്ങൾ മാറിയിരിക്കുന്നു. വീണ്ടും ബന്ധിപ്പിക്കുക +pad.modals.looping = വേർപെട്ടു. +pad.modals.looping.explanation = സെർവറുമായുള്ള സംവേദനത്തിൽ തകരാറു് +pad.modals.looping.cause = ഒരുപക്ഷേ പറ്റാത്ത ഫയർവാളിലൂടെയോ പ്രോക്സിയിലൂടെയോ ബന്ധിപ്പിച്ചിരിക്കാം +pad.modals.initsocketfail = സെർവറിലെത്താൻ പറ്റുന്നില്ല. +pad.modals.initsocketfail.explanation = സെർവറുമായി ബന്ധപ്പെടാൻ കഴിയുന്നില്ല +pad.modals.initsocketfail.cause = ഇന്റർനെറ്റ് കണക്ഷന്റെയോ ബ്രൌസറിന്റെയോ പ്രശ്നമാകാം +pad.modals.slowcommit = വേർപെട്ടു. +pad.modals.slowcommit.explanation = സെർവർ പ്രതികരിക്കുന്നില്ല. +pad.modals.slowcommit.cause = നെറ്റ്‌വർക്ക് പ്രശ്നം കാരണമാകാം. +pad.modals.deleted = മായ്ച്ചു +pad.modals.deleted.explanation = ഈ ഏടു് കളഞ്ഞു +pad.modals.disconnected = നിങ്ങൾ വേർപെട്ടു +pad.modals.disconnected.explanation = സെർവറുമായുള്ള ബന്ധം നഷ്ടപ്പെട്ടു +pad.modals.disconnected.cause = സെർവർ ഓടുന്നില്ലായിരിക്കാം. ഇതു് തുടരുന്നെങ്കിൽ ഞങ്ങളെ അറിയിക്കുക +pad.share = ഈ ഏടു് പങ്കിടുക +pad.share.readonly = വായിക്കാൻ മാത്രം +pad.share.link = കണ്ണി +pad.share.emebdcode = Embed URL +pad.chat = സംവാദം +pad.chat.title = ഈ ഏടിന്റെ സംവാദം തുറക്കുക +timeslider.pageTitle = {{appTitle}} സമയരേഖ +timeslider.toolbar.returnbutton = ഏടിലേക്കു് തിരിച്ചുപോവുക +timeslider.toolbar.authors = എഴുതിയവർ: +timeslider.toolbar.authorsList = ആരും എഴുതിയിട്ടില്ല +timeslider.exportCurrent = ഈ പതിപ്പു് ഇങ്ങനെ എടുക്കുക: diff --git a/src/locales/nl.ini b/src/locales/nl.ini index 87eaeb13..868cd987 100644 --- a/src/locales/nl.ini +++ b/src/locales/nl.ini @@ -1,4 +1,5 @@ ; Exported from translatewiki.net +; Author: McDutchie ; Author: Siebrand [nl] index.newPad = Nieuw pad @@ -47,9 +48,9 @@ pad.importExport.exportdokuwiki = DokuWiki pad.modals.connected = Verbonden. pad.modals.reconnecting = Opnieuw verbinding maken met uw pad... pad.modals.forcereconnect = Opnieuw verbinden -pad.modals.uderdup = Openen in ander venster +pad.modals.uderdup = In een ander venster geopend pad.modals.userdup.explanation = Dit pad is meer dan één keer geopend in een browservenster op deze computer. -pad.modals.userdup.advice = Opnieuw verbinden en dit venster gebruiken. +pad.modals.userdup.advice = Als u dit venster wilt gebruiken maakt u opnieuw verbinding. pad.modals.unauth = Niet toegestaan pad.modals.unauth.explanation = Uw rechten zijn gewijzigd terwijl u de pagina aan het bekijken was. Probeer opnieuw te verbinden. pad.modals.looping = Verbinding verbroken. diff --git a/src/locales/ru.ini b/src/locales/ru.ini new file mode 100644 index 00000000..f253df37 --- /dev/null +++ b/src/locales/ru.ini @@ -0,0 +1,78 @@ +; Exported from translatewiki.net +; Author: Volkov +[ru] +index.newPad = Создать +index.createOpenPad = или создать/открыть документ с именем: +pad.toolbar.bold.title = полужирный (Ctrl-B) +pad.toolbar.italic.title = курсив (Ctrl-I) +pad.toolbar.underline.title = подчеркивание (Ctrl-U) +pad.toolbar.strikethrough.title = зачеркивание +pad.toolbar.ol.title = Упорядоченный список +pad.toolbar.ul.title = Неупорядоченный список +pad.toolbar.indent.title = Отступ +pad.toolbar.unindent.title = Выступ +pad.toolbar.undo.title = Отменить (Ctrl-Z) +pad.toolbar.redo.title = Вернуть (Ctrl-Y) +pad.toolbar.clearAuthorship.title = Очистить цвета документа +pad.toolbar.import_export.title = Импорт/экспорт с использованием различных форматов файлов +pad.toolbar.timeslider.title = Шкала времени +pad.toolbar.savedRevision.title = Сохраненные версии +pad.toolbar.settings.title = Настройки +pad.toolbar.embed.title = Встроить этот документ +pad.toolbar.showusers.title = Показать пользователей в документе +pad.colorpicker.save = Сохранить +pad.colorpicker.cancel = Отмена +pad.loading = Загрузка... +pad.settings.padSettings = Настройки документа +pad.settings.myView = Мой вид +pad.settings.stickychat = Всегда отображать чат +pad.settings.colorcheck = Цвета документа +pad.settings.linenocheck = Номера строк +pad.settings.fontType = Тип шрифта: +pad.settings.fontType.normal = Обычный +pad.settings.fontType.monospaced = Моноширинный +pad.settings.globalView = Общий вид +pad.settings.language = Язык: +pad.importExport.import_export = Импорт/экспорт +pad.importExport.import = Загрузить любой текстовый файл или документ +pad.importExport.successful = Успешно! +pad.importExport.export = Экспортировать текущий документ как: +pad.importExport.exporthtml = HTML +pad.importExport.exportplain = Обычный текст +pad.importExport.exportword = Microsoft Word +pad.importExport.exportpdf = PDF +pad.importExport.exportopen = ODF (документ OpenOffice) +pad.importExport.exportdokuwiki = DokuWiki +pad.modals.connected = Подключен. +pad.modals.reconnecting = Повторное подключение к вашему документу +pad.modals.forcereconnect = Принудительное переподключение +pad.modals.uderdup = Открыто в другом окне +pad.modals.userdup.explanation = Документ, возможно, открыт более чем в одном окне браузера на этом компьютере. +pad.modals.userdup.advice = Повторно подключить с использованием этого окна. +pad.modals.unauth = Не авторизован +pad.modals.unauth.explanation = Ваши разрешения были изменены во время просмотра этой страницы. Попробуйте подключиться повторно. +pad.modals.looping = Отключен. +pad.modals.looping.explanation = Проблемы связи с сервером синхронизации. +pad.modals.looping.cause = Возможно, вы подключились через несовместимый брандмауэр или прокси. +pad.modals.initsocketfail = Сервер недоступен. +pad.modals.initsocketfail.explanation = Не удалось подключиться к серверу синхронизации. +pad.modals.initsocketfail.cause = Вероятно, это вызвано проблемами с вашим браузером или интернет-соединением. +pad.modals.slowcommit = Отключен. +pad.modals.slowcommit.explanation = Сервер не отвечает. +pad.modals.slowcommit.cause = Это может быть вызвано проблемами с сетевым подключением. +pad.modals.deleted = Удален. +pad.modals.deleted.explanation = Этот документ был удален. +pad.modals.disconnected = Соединение разорвано. +pad.modals.disconnected.explanation = Подключение к серверу потеряно +pad.modals.disconnected.cause = Сервер, возможно, недоступен. Сообщите нам, если проблема повторится. +pad.share = Поделиться +pad.share.readonly = Только чтение +pad.share.link = Ссылка +pad.share.emebdcode = Вставить URL +pad.chat = Чат +pad.chat.title = Открыть чат для этого документа. +timeslider.pageTitle = Временная шкала {{appTitle}} +timeslider.toolbar.returnbutton = К документу +timeslider.toolbar.authors = Авторы: +timeslider.toolbar.authorsList = Нет авторов +timeslider.exportCurrent = Экспортировать текущую версию как: diff --git a/src/locales/te.ini b/src/locales/te.ini new file mode 100644 index 00000000..dc78090b --- /dev/null +++ b/src/locales/te.ini @@ -0,0 +1,67 @@ +; Exported from translatewiki.net +; Author: JVRKPRASAD +; Author: Malkum +; Author: Veeven +[te] +index.newPad = కొత్త పలక +index.createOpenPad = ఒక పేరుతో పలకని సృష్టించండి లేదా అదే పేరుతో ఉన్న పలకని తెరవండి +pad.toolbar.bold.title = మందం +pad.toolbar.italic.title = వాలు అక్షరాలు +pad.toolbar.underline.title = క్రిందగీత +pad.toolbar.strikethrough.title = కొట్టివేత +pad.toolbar.ol.title = నిర్ధేశింపబడిన జాబితా +pad.toolbar.ul.title = అనిర్దేశిత జాబితా, ( క్రమపద్ధతి లేని జాబితా ) +pad.toolbar.undo.title = చేయవద్దు +pad.toolbar.redo.title = తిరిగిచెయ్యి +pad.toolbar.clearAuthorship.title = మూలకర్తపు వర్ణాలను తీసివేయండి +pad.toolbar.import_export.title = భిన్నమైన రూపలావన్యాలను బయట నుండి దిగుమతి లేదా బయటకు ఎగుమతి చేయండి +pad.toolbar.timeslider.title = పనిసమయ సూచిక పరికరం +pad.toolbar.savedRevision.title = దాచిన పునరుచ్చరణలు +pad.toolbar.settings.title = అమరికలు +pad.toolbar.embed.title = ఈ పలకని పొదగించండి +pad.toolbar.showusers.title = ఈ పలక యొక్క వినియోగదారులను చూపించు +pad.colorpicker.save = భద్రపరచు +pad.colorpicker.cancel = రద్దుచేయి +pad.loading = లోడవుతోంది... +pad.settings.padSettings = పలక అమరికలు +pad.settings.myView = నా ఉద్దేశ్యము +pad.settings.stickychat = తెరపైనే మాటామంతిని ఎల్లపుడు చేయుము +pad.settings.colorcheck = రచయితలకు రంగులు +pad.settings.linenocheck = వరుస సంఖ్యలు +pad.settings.fontType = అక్షరశైలి రకం: +pad.settings.fontType.normal = సాధారణ +pad.settings.fontType.monospaced = మోనోస్పేస్ +pad.settings.globalView = బయటకి దర్శనం +pad.settings.language = భాష +pad.importExport.import_export = దిగుమతి/ఎగుమతి +pad.importExport.import = పాఠము దస్త్రము లేదా పత్రమును దిగుమతి చేయుము +pad.importExport.successful = జయప్రదం! +pad.importExport.export = ప్రస్తుత పలకని ఈ విధముగా ఎగుమతి చేయుము: +pad.importExport.exporthtml = హెచ్ టి ఎం ఎల్ +pad.importExport.exportplain = సాదా పాఠ్యం +pad.importExport.exportword = మైక్రోసాఫ్ట్ వర్డ్ +pad.importExport.exportpdf = పీ డి ఎఫ్ +pad.importExport.exportopen = ఓ డి ఎఫ్ (ఓపెన్ డాక్యుమెంట్ ఫార్మాట్) +pad.importExport.exportdokuwiki = డాక్యువికి +pad.modals.connected = సంబంధం కుదిరింది. +pad.modals.reconnecting = మీ పలకకు మరల సంబంధం కలుపుతుంది... +pad.modals.forcereconnect = బలవంతంగానైనా సంబంధం కుదిరించు +pad.modals.uderdup = మరో గవాక్షములో తెరుచుకుంది +pad.modals.userdup.explanation = ఈ పలక, ఈ కంప్యూటర్లో ఒకటికన్న ఎక్కువ గవాక్షములలో తెరుచుకున్నట్లు అనిపిస్తుంది. +pad.modals.userdup.advice = బదులుగా ఈ గవాక్షమును వాడడానికి మరల సంబంధం కలపండి +pad.modals.unauth = అధికారం లేదు +pad.modals.unauth.explanation = మీరు ఈ పుటను చూస్తూన్నప్పుడు మీ అనుమతులు మారాయి. మరల సంబంధం కలపడానికి ప్రయత్నించండి. +pad.modals.looping = సంబంధం కోల్పోయింది. +pad.modals.slowcommit = సంబంధం కోల్పోయింది. +pad.modals.deleted = తొలగించబడింది ( తొలగించినది ) +pad.share = ఈ పలకను పంచుకొను +pad.share.readonly = చదువుటకు మాత్రమే +pad.share.link = లంకె +pad.share.emebdcode = యు ఆర్ ఎల్ ను పొదగించండి +pad.chat = మాటామంతి +pad.chat.title = ఈ పలకకు మాటామంతిని తెరిచి ఉంచండి. +timeslider.pageTitle = {{appTitle}} పనిసమయ సూచిక పరికరం +timeslider.toolbar.returnbutton = పలకకి తిరిగి వెళ్ళండి +timeslider.toolbar.authors = రచయితలు: +timeslider.toolbar.authorsList = రచయితలు లేరు +timeslider.exportCurrent = ప్రస్తుత అవతారాన్ని ఈ విధంగా ఎగుమతి చేయుము: diff --git a/src/locales/zh-hant.ini b/src/locales/zh-hant.ini new file mode 100644 index 00000000..b76ae180 --- /dev/null +++ b/src/locales/zh-hant.ini @@ -0,0 +1,78 @@ +; Exported from translatewiki.net +; Author: Simon Shek +[zh-hant] +index.newPad = 新Pad +index.createOpenPad = 或創建/開啟以下名稱的pad: +pad.toolbar.bold.title = 粗體(Ctrl-B) +pad.toolbar.italic.title = 斜體(Ctrl-I) +pad.toolbar.underline.title = 底線(Ctrl-U) +pad.toolbar.strikethrough.title = 刪除線 +pad.toolbar.ol.title = 有序清單 +pad.toolbar.ul.title = 無序清單 +pad.toolbar.indent.title = 縮排 +pad.toolbar.unindent.title = 凸排 +pad.toolbar.undo.title = 撤銷(Ctrl-Z) +pad.toolbar.redo.title = 重做(Ctrl-Y) +pad.toolbar.clearAuthorship.title = 清除作名顏色 +pad.toolbar.import_export.title = 以其他檔案格式導入/匯出 +pad.toolbar.timeslider.title = 時間軸 +pad.toolbar.savedRevision.title = 已儲存的修訂 +pad.toolbar.settings.title = 設定 +pad.toolbar.embed.title = 嵌入此pad +pad.toolbar.showusers.title = 顯示此pad的用戶 +pad.colorpicker.save = 儲存 +pad.colorpicker.cancel = 取消 +pad.loading = 載入中... +pad.settings.padSettings = Pad設定 +pad.settings.myView = 我的視窗 +pad.settings.stickychat = 永遠在屏幕上顯示聊天 +pad.settings.colorcheck = 作者顏色 +pad.settings.linenocheck = 行號 +pad.settings.fontType = 字體類型: +pad.settings.fontType.normal = 正常 +pad.settings.fontType.monospaced = 等寬 +pad.settings.globalView = 所有人的視窗 +pad.settings.language = 語言: +pad.importExport.import_export = 導入/匯出 +pad.importExport.import = 上載任何文字檔或文檔 +pad.importExport.successful = 完成! +pad.importExport.export = 匯出當前pad為: +pad.importExport.exporthtml = HTML +pad.importExport.exportplain = 純文字 +pad.importExport.exportword = Microsoft Word +pad.importExport.exportpdf = PDF +pad.importExport.exportopen = ODF(開放文件格式) +pad.importExport.exportdokuwiki = DokuWiki +pad.modals.connected = 已連線。 +pad.modals.reconnecting = 重新連接到您的pad... +pad.modals.forcereconnect = 強制重新連線 +pad.modals.uderdup = 在另一個視窗中開啟 +pad.modals.userdup.explanation = 此pad似乎在此電腦上的多個瀏覽器視窗中開啟。 +pad.modals.userdup.advice = 重新連接到此視窗。 +pad.modals.unauth = 未授權 +pad.modals.unauth.explanation = 您的權限在查看此頁時發生更改。請嘗試重新連接。 +pad.modals.looping = 已離線。 +pad.modals.looping.explanation = 與同步伺服器間有通信問題。 +pad.modals.looping.cause = 也許您通過一個不相容的防火牆或代理伺服器連接。 +pad.modals.initsocketfail = 無法訪問伺服器。 +pad.modals.initsocketfail.explanation = 無法連接到同步伺服器。 +pad.modals.initsocketfail.cause = 可能是由於您的瀏覽器或您的互聯網連接的問題。 +pad.modals.slowcommit = 已離線。 +pad.modals.slowcommit.explanation = 伺服器沒有回應。 +pad.modals.slowcommit.cause = 可能是由於網路連接問題。 +pad.modals.deleted = 已刪除。 +pad.modals.deleted.explanation = 此pad已被移除。 +pad.modals.disconnected = 您已中斷連線。 +pad.modals.disconnected.explanation = 伺服器連接曾中斷 +pad.modals.disconnected.cause = 伺服器可能無法使用。若此情況持續發生,請通知我們。 +pad.share = 分享此pad +pad.share.readonly = 唯讀 +pad.share.link = 連結 +pad.share.emebdcode = 嵌入網址 +pad.chat = 聊天 +pad.chat.title = 打開此pad的聊天。 +timeslider.pageTitle = {{appTitle}}時間軸 +timeslider.toolbar.returnbutton = 返回到pad +timeslider.toolbar.authors = 作者: +timeslider.toolbar.authorsList = 無作者 +timeslider.exportCurrent = 匯出當前版本為: From d7cca602dfb2e87497e404d21083c2e8b2cf6689 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Eixarch?= Date: Mon, 26 Nov 2012 03:18:47 +0100 Subject: [PATCH 018/130] Added message translatable about features importing without abiword --- settings.json.template | 2 +- src/locales/en.ini | 3 ++- src/locales/es.ini | 1 + src/static/css/pad.css | 19 ++++++++++++------- src/static/js/pad_impexp.js | 9 ++++----- src/templates/pad.html | 3 ++- 6 files changed, 22 insertions(+), 15 deletions(-) diff --git a/settings.json.template b/settings.json.template index 4894f897..f6f3e5b8 100644 --- a/settings.json.template +++ b/settings.json.template @@ -65,7 +65,7 @@ "maxAge" : 21600, // 60 * 60 * 6 = 6 hours /* This is the path to the Abiword executable. Setting it to null, disables abiword. - Abiword is needed to enable the import/export of pads*/ + Abiword is needed to advanced import/export features of pads*/ "abiword" : null, /* This setting is used if you require authentication of all users. diff --git a/src/locales/en.ini b/src/locales/en.ini index a110583e..32980b51 100644 --- a/src/locales/en.ini +++ b/src/locales/en.ini @@ -41,6 +41,7 @@ pad.importExport.exportword = Microsoft Word pad.importExport.exportpdf = PDF pad.importExport.exportopen = ODF (Open Document Format) pad.importExport.exportdokuwiki = DokuWiki +pad.importExport.abiword.innerHTML = You only can import from plain text or html formats. For more advanced import features please install abiword. pad.modals.connected = Connected. pad.modals.reconnecting = Reconnecting to your pad.. pad.modals.forcereconnect = Force reconnect @@ -74,4 +75,4 @@ timeslider.pageTitle = {{appTitle}} Timeslider timeslider.toolbar.returnbutton = Return to pad timeslider.toolbar.authors = Authors: timeslider.toolbar.authorsList = No Authors -timeslider.exportCurrent = Export current version as: \ No newline at end of file +timeslider.exportCurrent = Export current version as: diff --git a/src/locales/es.ini b/src/locales/es.ini index dd2c0d14..538d9495 100644 --- a/src/locales/es.ini +++ b/src/locales/es.ini @@ -44,6 +44,7 @@ pad.importExport.exportword = Microsoft Word pad.importExport.exportpdf = PDF pad.importExport.exportopen = ODF (Open Document Format) pad.importExport.exportdokuwiki = DokuWiki +pad.importExport.abiword.innerHTML = Sólo puede importar formatos de texto plano o html. Para funciones más avanzadas instale abiword. pad.modals.connected = Conectado. pad.modals.reconnecting = Reconectando a tu pad.. pad.modals.forcereconnect = Reconexión forzosa diff --git a/src/static/css/pad.css b/src/static/css/pad.css index 64f9f0d4..c3deebc1 100644 --- a/src/static/css/pad.css +++ b/src/static/css/pad.css @@ -571,15 +571,20 @@ table#otheruserstable { #exportdokuwiki { background-position: 0px -459px } -#importstatusball { - display: none + +/* hidden element */ +#importstatusball, +#importarrow, +#importmessagesuccess, +#importmessageabiword { + display: none; } -#importarrow { - display: none -} -#importmessagesuccess { - display: none + +#importmessageabiword { + color: #900; + font-size: small; } + #importsubmitinput { height: 25px; width: 85px; diff --git a/src/static/js/pad_impexp.js b/src/static/js/pad_impexp.js index 70d27d40..4b4733a5 100644 --- a/src/static/js/pad_impexp.js +++ b/src/static/js/pad_impexp.js @@ -218,6 +218,9 @@ var padimpexp = (function() $("#exporthtmla").attr("href", pad_root_path + "/export/html"); $("#exportplaina").attr("href", pad_root_path + "/export/txt"); $("#exportdokuwikia").attr("href", pad_root_path + "/export/dokuwiki"); + + // activate action to import in the form + $("#importform").attr('action', pad_root_url + "/import"); //hide stuff thats not avaible if abiword is disabled if(clientVars.abiwordAvailable == "no") @@ -226,7 +229,7 @@ var padimpexp = (function() $("#exportpdfa").remove(); $("#exportopena").remove(); - $("#importform").attr('action', pad_root_url + "/import"); + $("#importmessageabiword").show(); } else if(clientVars.abiwordAvailable == "withoutPDF") { @@ -237,16 +240,12 @@ var padimpexp = (function() $("#importexport").css({"height":"142px"}); $("#importexportline").css({"height":"142px"}); - - $("#importform").attr('action', pad_root_url + "/import"); } else { $("#exportworda").attr("href", pad_root_path + "/export/doc"); $("#exportpdfa").attr("href", pad_root_path + "/export/pdf"); $("#exportopena").attr("href", pad_root_path + "/export/odt"); - - $("#importform").attr('action', pad_root_path + "/import"); } $("#impexp-close").click(function() diff --git a/src/templates/pad.html b/src/templates/pad.html index 3f3eee4f..a2b153d3 100644 --- a/src/templates/pad.html +++ b/src/templates/pad.html @@ -246,7 +246,8 @@

<% e.begin_block("importColumn"); %> -


+

+

From a49bab5daee2f744e56770dab667c29e00c1805f Mon Sep 17 00:00:00 2001 From: Wikinaut Date: Mon, 26 Nov 2012 08:54:13 +0100 Subject: [PATCH 019/130] fix timeslider rightstep button position --- src/static/css/timeslider.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/static/css/timeslider.css b/src/static/css/timeslider.css index 1dd0ca91..d786d89b 100644 --- a/src/static/css/timeslider.css +++ b/src/static/css/timeslider.css @@ -113,7 +113,7 @@ background-position: -29px -22px; right: 5px; top: 20px; - width: 29px; + width: 30px; } #timeslider .star { background-image: url(../../static/img/star.png); From 103e0f6747fa5fbf97df9596b86431a806b61aa4 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 26 Nov 2012 21:15:10 +0100 Subject: [PATCH 020/130] Add the basic structure of a timeslider test --- tests/frontend/specs/timeslider_revisions.js | 49 ++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 tests/frontend/specs/timeslider_revisions.js diff --git a/tests/frontend/specs/timeslider_revisions.js b/tests/frontend/specs/timeslider_revisions.js new file mode 100644 index 00000000..b779935d --- /dev/null +++ b/tests/frontend/specs/timeslider_revisions.js @@ -0,0 +1,49 @@ +describe("timeslider", function(){ + //create a new pad before each test run + beforeEach(function(cb){ + helper.newPad(cb); + this.timeout(6000); + }); + + it("loads adds a hundred revisions", function(done) { + var inner$ = helper.padInner$; + var chrome$ = helper.padChrome$; + + // make some changes to produce 100 revisions + var timePerRev = 900 + , revs = 150; + this.timeout(revs*timePerRev+10000); + for(var i=0; i < revs; i++) { + setTimeout(function() { + // type 'a' in the first text element + inner$("div").first().sendkeys('a'); + }, timePerRev*i); + } + + setTimeout(function() { + $('#iframe-container iframe').attr('src', $('#iframe-container iframe').attr('src')+'/timeslider'); + + var timeslider$ = $('#iframe-container iframe')[0].contentWindow.$; + + var $sliderHandle = timeslider$('#timeslider-slider ui-slider-handle'); + /* + //get the strikethrough button and click it + var $strikethroughButton = chrome$(".buttonicon-strikethrough"); + $strikethroughButton.click(); + + //ace creates a new dom element when you press a button, so just get the first text element again + var $newFirstTextElement = inner$("div").first(); + + // is there a element now? + var isstrikethrough = $newFirstTextElement.find("s").length === 1; + + //expect it to be strikethrough + expect(isstrikethrough).to.be(true); + + //make sure the text hasn't changed + expect($newFirstTextElement.text()).to.eql($firstTextElement.text()); + */ + done(); + }, revs*timePerRev); + }); +}); From 6239c66e3639bfed8345dabf304c4f4578dd67ed Mon Sep 17 00:00:00 2001 From: John McLear Date: Mon, 26 Nov 2012 20:19:27 +0000 Subject: [PATCH 021/130] remove alert on line wrap as it doesnt mean anything --- src/static/js/ace2_inner.js | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/static/js/ace2_inner.js b/src/static/js/ace2_inner.js index 661ea011..b3bc91a9 100644 --- a/src/static/js/ace2_inner.js +++ b/src/static/js/ace2_inner.js @@ -333,14 +333,6 @@ function Ace2Inner(){ return colorutils.triple2css(color); } - function doAlert(str) - { - scheduler.setTimeout(function() - { - alert(str); - }, 0); - } - editorInfo.ace_getRep = function() { return rep; @@ -1624,7 +1616,7 @@ function Ace2Inner(){ if (linesWrapped > 0) { - doAlert("Editor warning: " + linesWrapped + " long line" + (linesWrapped == 1 ? " was" : "s were") + " hard-wrapped into " + ccData.numLinesAfter + " lines."); + // console.log("Editor warning: " + linesWrapped + " long line" + (linesWrapped == 1 ? " was" : "s were") + " hard-wrapped into " + ccData.numLinesAfter + " lines."); } if (ss[0] >= 0) selStart = [ss[0] + a + netNumLinesChangeSoFar, ss[1]]; From fddca354b33eb2f855178657b775a4008e8da8d5 Mon Sep 17 00:00:00 2001 From: John McLear Date: Mon, 26 Nov 2012 20:52:10 +0000 Subject: [PATCH 022/130] proper fix for focus and some styling of the form and allows for pressing enter on form so generally a better fix --- src/static/js/pad.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/static/js/pad.js b/src/static/js/pad.js index 34f2a287..936298ab 100644 --- a/src/static/js/pad.js +++ b/src/static/js/pad.js @@ -305,14 +305,22 @@ function handshake() else if(obj.accessStatus == "needPassword") { $("#editorloadingbox").html("You need a password to access this pad
" + - ""+ - ""); + ""+ + "
"); + $("#passwordinput").focus(); + $(".passForm").submit(function(){ + $('.passForm button').click(); + }); } else if(obj.accessStatus == "wrongPassword") { $("#editorloadingbox").html("Your password was wrong
" + - ""+ - ""); + ""+ + "
"); + $("#passwordinput").focus(); + $(".passForm").submit(function(){ + $('.passForm button').click(); + }); } } From f880473360e26f683df73700366f36b7dc757bdb Mon Sep 17 00:00:00 2001 From: John McLear Date: Mon, 26 Nov 2012 20:54:28 +0000 Subject: [PATCH 023/130] remember the styling for the pasword prompt --- src/static/css/pad.css | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/static/css/pad.css b/src/static/css/pad.css index 64f9f0d4..01a19514 100644 --- a/src/static/css/pad.css +++ b/src/static/css/pad.css @@ -190,6 +190,19 @@ a img { height: 30px; z-index: 100; } + +#editorloadingbox passForm{ + padding:10px; +} + +#editorloadingbox input{ + padding:10px; +} + +#editorloadingbox button{ + padding:10px; +} + #editorcontainerbox { position: absolute; bottom: 0; From 6fe61036325c86ed6e572d0676f1272d67ae1bb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Eixarch?= Date: Mon, 26 Nov 2012 23:40:31 +0100 Subject: [PATCH 024/130] added languages for translatewiki --- src/locales/zh-hant.ini | 78 ----------------------------------------- src/node/hooks/i18n.js | 4 +-- src/package.json | 52 +++++++++++++-------------- 3 files changed, 28 insertions(+), 106 deletions(-) delete mode 100644 src/locales/zh-hant.ini diff --git a/src/locales/zh-hant.ini b/src/locales/zh-hant.ini deleted file mode 100644 index b76ae180..00000000 --- a/src/locales/zh-hant.ini +++ /dev/null @@ -1,78 +0,0 @@ -; Exported from translatewiki.net -; Author: Simon Shek -[zh-hant] -index.newPad = 新Pad -index.createOpenPad = 或創建/開啟以下名稱的pad: -pad.toolbar.bold.title = 粗體(Ctrl-B) -pad.toolbar.italic.title = 斜體(Ctrl-I) -pad.toolbar.underline.title = 底線(Ctrl-U) -pad.toolbar.strikethrough.title = 刪除線 -pad.toolbar.ol.title = 有序清單 -pad.toolbar.ul.title = 無序清單 -pad.toolbar.indent.title = 縮排 -pad.toolbar.unindent.title = 凸排 -pad.toolbar.undo.title = 撤銷(Ctrl-Z) -pad.toolbar.redo.title = 重做(Ctrl-Y) -pad.toolbar.clearAuthorship.title = 清除作名顏色 -pad.toolbar.import_export.title = 以其他檔案格式導入/匯出 -pad.toolbar.timeslider.title = 時間軸 -pad.toolbar.savedRevision.title = 已儲存的修訂 -pad.toolbar.settings.title = 設定 -pad.toolbar.embed.title = 嵌入此pad -pad.toolbar.showusers.title = 顯示此pad的用戶 -pad.colorpicker.save = 儲存 -pad.colorpicker.cancel = 取消 -pad.loading = 載入中... -pad.settings.padSettings = Pad設定 -pad.settings.myView = 我的視窗 -pad.settings.stickychat = 永遠在屏幕上顯示聊天 -pad.settings.colorcheck = 作者顏色 -pad.settings.linenocheck = 行號 -pad.settings.fontType = 字體類型: -pad.settings.fontType.normal = 正常 -pad.settings.fontType.monospaced = 等寬 -pad.settings.globalView = 所有人的視窗 -pad.settings.language = 語言: -pad.importExport.import_export = 導入/匯出 -pad.importExport.import = 上載任何文字檔或文檔 -pad.importExport.successful = 完成! -pad.importExport.export = 匯出當前pad為: -pad.importExport.exporthtml = HTML -pad.importExport.exportplain = 純文字 -pad.importExport.exportword = Microsoft Word -pad.importExport.exportpdf = PDF -pad.importExport.exportopen = ODF(開放文件格式) -pad.importExport.exportdokuwiki = DokuWiki -pad.modals.connected = 已連線。 -pad.modals.reconnecting = 重新連接到您的pad... -pad.modals.forcereconnect = 強制重新連線 -pad.modals.uderdup = 在另一個視窗中開啟 -pad.modals.userdup.explanation = 此pad似乎在此電腦上的多個瀏覽器視窗中開啟。 -pad.modals.userdup.advice = 重新連接到此視窗。 -pad.modals.unauth = 未授權 -pad.modals.unauth.explanation = 您的權限在查看此頁時發生更改。請嘗試重新連接。 -pad.modals.looping = 已離線。 -pad.modals.looping.explanation = 與同步伺服器間有通信問題。 -pad.modals.looping.cause = 也許您通過一個不相容的防火牆或代理伺服器連接。 -pad.modals.initsocketfail = 無法訪問伺服器。 -pad.modals.initsocketfail.explanation = 無法連接到同步伺服器。 -pad.modals.initsocketfail.cause = 可能是由於您的瀏覽器或您的互聯網連接的問題。 -pad.modals.slowcommit = 已離線。 -pad.modals.slowcommit.explanation = 伺服器沒有回應。 -pad.modals.slowcommit.cause = 可能是由於網路連接問題。 -pad.modals.deleted = 已刪除。 -pad.modals.deleted.explanation = 此pad已被移除。 -pad.modals.disconnected = 您已中斷連線。 -pad.modals.disconnected.explanation = 伺服器連接曾中斷 -pad.modals.disconnected.cause = 伺服器可能無法使用。若此情況持續發生,請通知我們。 -pad.share = 分享此pad -pad.share.readonly = 唯讀 -pad.share.link = 連結 -pad.share.emebdcode = 嵌入網址 -pad.chat = 聊天 -pad.chat.title = 打開此pad的聊天。 -timeslider.pageTitle = {{appTitle}}時間軸 -timeslider.toolbar.returnbutton = 返回到pad -timeslider.toolbar.authors = 作者: -timeslider.toolbar.authorsList = 無作者 -timeslider.exportCurrent = 匯出當前版本為: diff --git a/src/node/hooks/i18n.js b/src/node/hooks/i18n.js index 4d42de04..f6f0f8c8 100644 --- a/src/node/hooks/i18n.js +++ b/src/node/hooks/i18n.js @@ -1,4 +1,4 @@ -var languages = require('languages') +var languages = require('languages4translatewiki') , fs = require('fs') , path = require('path') , express = require('express') @@ -9,7 +9,7 @@ var localesPath = __dirname+"/../../locales"; var localeIndex = fs.readFileSync(localesPath+'/en.ini')+'\r\n'; // add language base 'en' to availableLangs -exports.availableLangs = {en: languages.getLanguageInfo('en')} +exports.availableLangs = {en: {name:'English',nativeName:'English',direction:'ltr'}}; fs.readdir(localesPath, function(er, files) { files.forEach(function(locale) { diff --git a/src/package.json b/src/package.json index 8f762077..24bcdd84 100644 --- a/src/package.json +++ b/src/package.json @@ -11,32 +11,32 @@ { "name": "Marcel Klehr" } ], "dependencies" : { - "yajsml" : "1.1.6", - "request" : "2.9.100", - "require-kernel" : "1.0.5", - "resolve" : "0.2.x", - "socket.io" : "0.9.x", - "ueberDB" : "0.1.8", - "async" : "0.1.x", - "express" : "3.x", - "connect" : "2.4.x", - "clean-css" : "0.3.2", - "uglify-js" : "1.2.5", - "formidable" : "1.0.9", - "log4js" : "0.5.x", - "jsdom-nocontextifiy" : "0.2.10", - "async-stacktrace" : "0.0.2", - "npm" : "1.1.x", - "npm-registry-client" : "0.2.10", - "ejs" : "0.6.1", - "graceful-fs" : "1.1.5", - "slide" : "1.1.3", - "semver" : "1.0.13", - "security" : "1.0.0", - "tinycon" : "0.0.1", - "underscore" : "1.3.1", - "unorm" : "1.0.0", - "languages" : "0.1.1" + "yajsml" : "1.1.6", + "request" : "2.9.100", + "require-kernel" : "1.0.5", + "resolve" : "0.2.x", + "socket.io" : "0.9.x", + "ueberDB" : "0.1.8", + "async" : "0.1.x", + "express" : "3.x", + "connect" : "2.4.x", + "clean-css" : "0.3.2", + "uglify-js" : "1.2.5", + "formidable" : "1.0.9", + "log4js" : "0.5.x", + "jsdom-nocontextifiy" : "0.2.10", + "async-stacktrace" : "0.0.2", + "npm" : "1.1.x", + "npm-registry-client" : "0.2.10", + "ejs" : "0.6.1", + "graceful-fs" : "1.1.5", + "slide" : "1.1.3", + "semver" : "1.0.13", + "security" : "1.0.0", + "tinycon" : "0.0.1", + "underscore" : "1.3.1", + "unorm" : "1.0.0", + "languages4translatewiki" : "0.1.2" }, "bin": { "etherpad-lite": "./node/server.js" }, "devDependencies": { From 97d77ea089c75fc64fef94b9259674d738a930cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Eixarch?= Date: Tue, 27 Nov 2012 00:11:45 +0100 Subject: [PATCH 025/130] added my name in header --- src/node/handler/ImportHandler.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/node/handler/ImportHandler.js b/src/node/handler/ImportHandler.js index 93fd3db5..815e5357 100644 --- a/src/node/handler/ImportHandler.js +++ b/src/node/handler/ImportHandler.js @@ -4,6 +4,7 @@ /* * 2011 Peter 'Pita' Martischka (Primary Technology Ltd) + * 2012 Iván Eixarch * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. From bf26f60bac93b104cef2986a45ac51b000674b64 Mon Sep 17 00:00:00 2001 From: Manuel Knitza Date: Tue, 27 Nov 2012 09:59:47 +0100 Subject: [PATCH 026/130] Update doc/api/http_api.md As EPL moved from "Pita" to "ether" the edited link had to be changed. --- doc/api/http_api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/http_api.md b/doc/api/http_api.md index 990d1b49..7ace1b0b 100644 --- a/doc/api/http_api.md +++ b/doc/api/http_api.md @@ -9,7 +9,7 @@ The API gives another web application control of the pads. The basic functions a The API is designed in a way, so you can reuse your existing user system with their permissions, and map it to etherpad lite. Means: Your web application still has to do authentication, but you can tell etherpad lite via the api, which visitors should get which permissions. This allows etherpad lite to fit into any web application and extend it with real-time functionality. You can embed the pads via an iframe into your website. -Take a look at [HTTP API client libraries](https://github.com/Pita/etherpad-lite/wiki/HTTP-API-client-libraries) to see if a library in your favorite language. +Take a look at [HTTP API client libraries](https://github.com/ether/etherpad-lite/wiki/HTTP-API-client-libraries) to see if a library in your favorite language. ## Examples From c445197e7fc03572aa31511e35f9193a47332c20 Mon Sep 17 00:00:00 2001 From: John McLear Date: Tue, 27 Nov 2012 15:10:36 +0000 Subject: [PATCH 027/130] Update src/static/css/pad.css --- src/static/css/pad.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/static/css/pad.css b/src/static/css/pad.css index 01a19514..a2540614 100644 --- a/src/static/css/pad.css +++ b/src/static/css/pad.css @@ -191,7 +191,7 @@ a img { z-index: 100; } -#editorloadingbox passForm{ +#editorloadingbox .passForm{ padding:10px; } From 1cc0e8cbf0d38b4a34674623e329cf9e2379c209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Eixarch?= Date: Wed, 28 Nov 2012 03:27:09 +0100 Subject: [PATCH 028/130] Restore original ini file --- src/locales/zh-hant.ini | 78 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 src/locales/zh-hant.ini diff --git a/src/locales/zh-hant.ini b/src/locales/zh-hant.ini new file mode 100644 index 00000000..b76ae180 --- /dev/null +++ b/src/locales/zh-hant.ini @@ -0,0 +1,78 @@ +; Exported from translatewiki.net +; Author: Simon Shek +[zh-hant] +index.newPad = 新Pad +index.createOpenPad = 或創建/開啟以下名稱的pad: +pad.toolbar.bold.title = 粗體(Ctrl-B) +pad.toolbar.italic.title = 斜體(Ctrl-I) +pad.toolbar.underline.title = 底線(Ctrl-U) +pad.toolbar.strikethrough.title = 刪除線 +pad.toolbar.ol.title = 有序清單 +pad.toolbar.ul.title = 無序清單 +pad.toolbar.indent.title = 縮排 +pad.toolbar.unindent.title = 凸排 +pad.toolbar.undo.title = 撤銷(Ctrl-Z) +pad.toolbar.redo.title = 重做(Ctrl-Y) +pad.toolbar.clearAuthorship.title = 清除作名顏色 +pad.toolbar.import_export.title = 以其他檔案格式導入/匯出 +pad.toolbar.timeslider.title = 時間軸 +pad.toolbar.savedRevision.title = 已儲存的修訂 +pad.toolbar.settings.title = 設定 +pad.toolbar.embed.title = 嵌入此pad +pad.toolbar.showusers.title = 顯示此pad的用戶 +pad.colorpicker.save = 儲存 +pad.colorpicker.cancel = 取消 +pad.loading = 載入中... +pad.settings.padSettings = Pad設定 +pad.settings.myView = 我的視窗 +pad.settings.stickychat = 永遠在屏幕上顯示聊天 +pad.settings.colorcheck = 作者顏色 +pad.settings.linenocheck = 行號 +pad.settings.fontType = 字體類型: +pad.settings.fontType.normal = 正常 +pad.settings.fontType.monospaced = 等寬 +pad.settings.globalView = 所有人的視窗 +pad.settings.language = 語言: +pad.importExport.import_export = 導入/匯出 +pad.importExport.import = 上載任何文字檔或文檔 +pad.importExport.successful = 完成! +pad.importExport.export = 匯出當前pad為: +pad.importExport.exporthtml = HTML +pad.importExport.exportplain = 純文字 +pad.importExport.exportword = Microsoft Word +pad.importExport.exportpdf = PDF +pad.importExport.exportopen = ODF(開放文件格式) +pad.importExport.exportdokuwiki = DokuWiki +pad.modals.connected = 已連線。 +pad.modals.reconnecting = 重新連接到您的pad... +pad.modals.forcereconnect = 強制重新連線 +pad.modals.uderdup = 在另一個視窗中開啟 +pad.modals.userdup.explanation = 此pad似乎在此電腦上的多個瀏覽器視窗中開啟。 +pad.modals.userdup.advice = 重新連接到此視窗。 +pad.modals.unauth = 未授權 +pad.modals.unauth.explanation = 您的權限在查看此頁時發生更改。請嘗試重新連接。 +pad.modals.looping = 已離線。 +pad.modals.looping.explanation = 與同步伺服器間有通信問題。 +pad.modals.looping.cause = 也許您通過一個不相容的防火牆或代理伺服器連接。 +pad.modals.initsocketfail = 無法訪問伺服器。 +pad.modals.initsocketfail.explanation = 無法連接到同步伺服器。 +pad.modals.initsocketfail.cause = 可能是由於您的瀏覽器或您的互聯網連接的問題。 +pad.modals.slowcommit = 已離線。 +pad.modals.slowcommit.explanation = 伺服器沒有回應。 +pad.modals.slowcommit.cause = 可能是由於網路連接問題。 +pad.modals.deleted = 已刪除。 +pad.modals.deleted.explanation = 此pad已被移除。 +pad.modals.disconnected = 您已中斷連線。 +pad.modals.disconnected.explanation = 伺服器連接曾中斷 +pad.modals.disconnected.cause = 伺服器可能無法使用。若此情況持續發生,請通知我們。 +pad.share = 分享此pad +pad.share.readonly = 唯讀 +pad.share.link = 連結 +pad.share.emebdcode = 嵌入網址 +pad.chat = 聊天 +pad.chat.title = 打開此pad的聊天。 +timeslider.pageTitle = {{appTitle}}時間軸 +timeslider.toolbar.returnbutton = 返回到pad +timeslider.toolbar.authors = 作者: +timeslider.toolbar.authorsList = 無作者 +timeslider.exportCurrent = 匯出當前版本為: From 9ec8a6e3d38bde94a3bc52daa16bb1588157f67c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Eixarch?= Date: Wed, 28 Nov 2012 04:02:55 +0100 Subject: [PATCH 029/130] back to globalize... don't work :S --- src/node/hooks/i18n.js | 11 +++++++---- src/package.json | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/node/hooks/i18n.js b/src/node/hooks/i18n.js index f6f0f8c8..147ef533 100644 --- a/src/node/hooks/i18n.js +++ b/src/node/hooks/i18n.js @@ -1,4 +1,4 @@ -var languages = require('languages4translatewiki') +var Globalize = require('globalize') , fs = require('fs') , path = require('path') , express = require('express') @@ -9,7 +9,8 @@ var localesPath = __dirname+"/../../locales"; var localeIndex = fs.readFileSync(localesPath+'/en.ini')+'\r\n'; // add language base 'en' to availableLangs -exports.availableLangs = {en: {name:'English',nativeName:'English',direction:'ltr'}}; +exports.availableLangs = {}; +exports.availableLangs['en'] = Globalize.cultures['en']; fs.readdir(localesPath, function(er, files) { files.forEach(function(locale) { @@ -19,11 +20,13 @@ fs.readdir(localesPath, function(er, files) { // build locale index localeIndex += '['+locale+']\r\n@import url(locales/'+locale+'.ini)\r\n' - // add info language {name, nativeName, direction} to availableLangs - exports.availableLangs[locale]=languages.getLanguageInfo(locale); + require('globalize/lib/cultures/globalize.culture.'+locale+'.js') + exports.availableLangs[locale]=Globalize.cultures[locale]; }) }) +console.log(exports.availableLangs); + exports.expressCreateServer = function(n, args) { args.app.use('/locales', express.static(localesPath)); diff --git a/src/package.json b/src/package.json index 24bcdd84..2bc5ac22 100644 --- a/src/package.json +++ b/src/package.json @@ -36,7 +36,7 @@ "tinycon" : "0.0.1", "underscore" : "1.3.1", "unorm" : "1.0.0", - "languages4translatewiki" : "0.1.2" + "globalize" : "0.1.1" }, "bin": { "etherpad-lite": "./node/server.js" }, "devDependencies": { From 8c7939ec9f18da05bb58da0b43d805948c9cc9b9 Mon Sep 17 00:00:00 2001 From: John McLear Date: Wed, 28 Nov 2012 17:17:35 +0000 Subject: [PATCH 030/130] catch control S and send an event to save a revision --- src/static/js/ace2_inner.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/static/js/ace2_inner.js b/src/static/js/ace2_inner.js index b3bc91a9..9290fd56 100644 --- a/src/static/js/ace2_inner.js +++ b/src/static/js/ace2_inner.js @@ -3537,7 +3537,7 @@ function Ace2Inner(){ var keyCode = evt.keyCode; var which = evt.which; - // prevent ESC key + // prevent ESC key and Control S if (keyCode == 27) { evt.preventDefault(); @@ -3562,7 +3562,7 @@ function Ace2Inner(){ inCallStackIfNecessary("handleKeyEvent", function() { - if (type == "keypress" || (isTypeForSpecialKey && keyCode == 13 /*return*/ )) + if (type == "keypress" || (isTypeForSpecialKey && keyCode == 13 || keyCode == 83 /*return*/ )) { // in IE, special keys don't send keypress, the keydown does the action if (!outsideKeyPress(evt)) @@ -3575,7 +3575,6 @@ function Ace2Inner(){ { outsideKeyDown(evt); } - if (!stopped) { var specialHandledInHook = hooks.callAll('aceKeyEvent', { @@ -3614,6 +3613,12 @@ function Ace2Inner(){ }, 0); specialHandled = true; } + if ((!specialHandled) && isTypeForSpecialKey && keyCode == 83) + { + evt.preventDefault(); + parent.parent.pad.collabClient.sendMessage({"type":"SAVE_REVISION"}); /* The parent.parent part of this is BAD and I feel bad.. It may break something */ + specialHandled = true; + } if ((!specialHandled) && isTypeForSpecialKey && keyCode == 9 && !(evt.metaKey || evt.ctrlKey)) { // tab From 93e9d7c852be597b3793106069ef8adc5d80734c Mon Sep 17 00:00:00 2001 From: John McLear Date: Wed, 28 Nov 2012 17:20:58 +0000 Subject: [PATCH 031/130] remove control S comment --- src/static/js/ace2_inner.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/static/js/ace2_inner.js b/src/static/js/ace2_inner.js index 9290fd56..da646b7e 100644 --- a/src/static/js/ace2_inner.js +++ b/src/static/js/ace2_inner.js @@ -3537,7 +3537,7 @@ function Ace2Inner(){ var keyCode = evt.keyCode; var which = evt.which; - // prevent ESC key and Control S + // prevent ESC key if (keyCode == 27) { evt.preventDefault(); From 795a20b3f24b122acc356e6ecd29b76a6cd09bc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Eixarch?= Date: Wed, 28 Nov 2012 23:54:23 +0100 Subject: [PATCH 032/130] get languages availables through translatewiki API --- src/node/hooks/i18n.js | 47 ++++++++++++++++++++++++++++-------------- src/package.json | 3 +-- 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/src/node/hooks/i18n.js b/src/node/hooks/i18n.js index 147ef533..3589dfb2 100644 --- a/src/node/hooks/i18n.js +++ b/src/node/hooks/i18n.js @@ -1,4 +1,4 @@ -var Globalize = require('globalize') +var http = require ('http') , fs = require('fs') , path = require('path') , express = require('express') @@ -8,24 +8,39 @@ var localesPath = __dirname+"/../../locales"; // Serve English strings directly with /locales.ini var localeIndex = fs.readFileSync(localesPath+'/en.ini')+'\r\n'; -// add language base 'en' to availableLangs -exports.availableLangs = {}; -exports.availableLangs['en'] = Globalize.cultures['en']; +exports.availableLangs = {'en': {'nativeName': 'English'}}; -fs.readdir(localesPath, function(er, files) { - files.forEach(function(locale) { - locale = locale.split('.')[0] - if(locale.toLowerCase() == 'en') return; +// build availableLangs with translatewiki web API +var request = http.request ('http://translatewiki.net/w/api.php?action=query&meta=siteinfo&siprop=languages&format=json', + function (res) { + var twLangs = ''; + res.setEncoding ('utf8'); + res.on ('data', function (chunk) { twLangs += chunk; }); + res.on ('end', function () { + // twLangs = [{code: 'en', '*': 'English'}...] + twLangs = JSON.parse(twLangs)['query']['languages']; - // build locale index - localeIndex += '['+locale+']\r\n@import url(locales/'+locale+'.ini)\r\n' + 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') - exports.availableLangs[locale]=Globalize.cultures[locale]; - }) -}) - -console.log(exports.availableLangs); + for (var l = 0; l < twLangs.length; l++) { + var code = twLangs[l]['code']; + if (locale == code) { + var nativeName = twLangs[l]['*']; + exports.availableLangs[code] = {'nativeName': nativeName}; + } + } + }); + }); + }); + }).on ('error', function(e) { + console.error('While query translatewiki API: '+e.message); + }).end(); exports.expressCreateServer = function(n, args) { diff --git a/src/package.json b/src/package.json index 2bc5ac22..e6805353 100644 --- a/src/package.json +++ b/src/package.json @@ -35,8 +35,7 @@ "security" : "1.0.0", "tinycon" : "0.0.1", "underscore" : "1.3.1", - "unorm" : "1.0.0", - "globalize" : "0.1.1" + "unorm" : "1.0.0" }, "bin": { "etherpad-lite": "./node/server.js" }, "devDependencies": { From 719fb7e04508f74b64bd0c4ed9bf8119f35686bf Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Thu, 29 Nov 2012 13:42:37 +0100 Subject: [PATCH 033/130] Let socket.io decide which transport is best for the browser --- src/node/hooks/express/socketio.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/node/hooks/express/socketio.js b/src/node/hooks/express/socketio.js index 546ba2af..c2b9ff6c 100644 --- a/src/node/hooks/express/socketio.js +++ b/src/node/hooks/express/socketio.js @@ -36,13 +36,10 @@ exports.expressCreateServer = function (hook_name, args, cb) { }); }); - // the following has been successfully tested with the following browsers - // works also behind reverse proxy - // Firefox 14.0.1 - // IE8 with Native XMLHTTP support - // IE8 without Native XMLHTTP support - // Chrome 21.0.1180.79 - io.set('transports', ['jsonp-polling']); + // there shouldn#t be a browser that isn't compatible to all + // transports in this list at once + // e.g. XHR is disabled in IE by default, so in IE it should use jsonp-polling + io.set('transports', ['xhr-polling', 'jsonp-polling', 'htmlfile']); var socketIOLogger = log4js.getLogger("socket.io"); io.set('logger', { From d76100358840e24079a523b7b9c8d135370878ef Mon Sep 17 00:00:00 2001 From: John McLear Date: Fri, 30 Nov 2012 22:50:54 +0000 Subject: [PATCH 034/130] fix path to favicon resolves #1236 --- src/node/utils/Settings.js | 2 ++ src/templates/pad.html | 2 +- src/templates/timeslider.html | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/node/utils/Settings.js b/src/node/utils/Settings.js index 9caa2b0b..fb2a592c 100644 --- a/src/node/utils/Settings.js +++ b/src/node/utils/Settings.js @@ -38,6 +38,8 @@ exports.title = "Etherpad Lite"; * The app favicon fully specified url, visible e.g. in the browser window */ exports.favicon = "favicon.ico"; +exports.faviconPad = "../" + exports.favicon; +exports.faviconTimeslider = "../../" + exports.favicon; /** * The IP ep-lite should listen to diff --git a/src/templates/pad.html b/src/templates/pad.html index 3f3eee4f..c1300d5e 100644 --- a/src/templates/pad.html +++ b/src/templates/pad.html @@ -32,7 +32,7 @@ - + - +