Merge branch 'develop' of github.com:ether/etherpad-lite into dep-cleanup

This commit is contained in:
Peter 'Pita' Martischka 2013-02-10 22:41:49 +00:00
commit 17a02bb024
34 changed files with 187 additions and 9692 deletions

View File

@ -1,3 +1,20 @@
# 1.2.8
* NEW: Use Socket IO for rooms (allows for pads to be load balanced with sticky rooms)
* NEW: Plugins can now provide their own frontend tests
* NEW: Improved server-side logging
* NEW: Admin dashboard mobile device support and new hooks for Admin dashboard
* Fix: Bugfix getChatHistory API method
* Fix: Make plugin search case insensitive
* Fix: Indentation and bullets on text export
* Fix: Resolve various warnings on dependencies during install
* Fix: Page up / Page down now works in all browsers
* Fix: Stop Opera browser inserting two new lines on enter keypress
* Fix: Stop timeslider from showing NaN on pads with only one revision
* Other: Allow timeslider tests to run and provide & fix various other frontend-tests
* Other: Update to latest jQuery
* Other: Change loading message asking user to please wait on first build
* Other: Allow etherpad to use global npm installation (Safe since node 6.3)
# 1.2.7
* NEW: notifications are now modularized and can be stacked
* NEW: Visit a specific revision in the timeslider by suffixing #%revNumber% IE http://localhost/p/test/timeslider#12

View File

@ -63,7 +63,7 @@ if [ ! -f $settings ]; then
cp settings.json.template $settings || exit 1
fi
echo "Ensure that all dependencies are up to date..."
echo "Ensure that all dependencies are up to date... If this is the first time you have run Etherpad please be patient."
(
mkdir -p node_modules
cd node_modules

View File

@ -12,7 +12,7 @@ set check_version="if(['6','8'].indexOf(process.version.split('.')[1].toString()
cmd /C node -e %check_version% || exit /B 1
echo _
echo Installing etherpad-lite and dependencies...
echo Ensure that all dependencies are up to date... If this is the first time you have run Etherpad please be patient.
cmd /C npm install src/ --loglevel warn || exit /B 1
echo _
@ -36,4 +36,4 @@ IF NOT EXIST settings.json (
)
echo _
echo Installed Etherpad-lite! To run Etherpad type start.bat
echo Installed Etherpad! To run Etherpad type start.bat

View File

@ -1,7 +1,8 @@
{
"@metadata": {
"authors": [
"Christian List"
"Christian List",
"Peter Alberti"
]
},
"index.newPad": "Ny Pad",
@ -100,6 +101,8 @@
"timeslider.month.october": "oktober",
"timeslider.month.november": "november",
"timeslider.month.december": "december",
"timeslider.unnamedauthor": "{{num}} unavngiven forfatter",
"timeslider.unnamedauthors": "{{num}} unavngivne forfattere",
"pad.savedrevs.marked": "Denne revision er nu markeret som en gemt revision",
"pad.userlist.entername": "Indtast dit navn",
"pad.userlist.unnamed": "ikke-navngivet",

View File

@ -22,7 +22,7 @@
"pad.toolbar.clearAuthorship.title": "\u039a\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03a7\u03c1\u03c9\u03bc\u03ac\u03c4\u03c9\u03bd \u03a3\u03c5\u03bd\u03c4\u03b1\u03ba\u03c4\u03ce\u03bd",
"pad.toolbar.import_export.title": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\/\u0395\u03be\u03b1\u03b3\u03c9\u03b3\u03ae \u03b1\u03c0\u03cc\/\u03c3\u03b5 \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03bf\u03cd\u03c2 \u03c4\u03cd\u03c0\u03bf\u03c5\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd",
"pad.toolbar.timeslider.title": "\u03a7\u03c1\u03bf\u03bd\u03bf\u03b4\u03b9\u03ac\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1",
"pad.toolbar.savedRevision.title": "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 \u0388\u03ba\u03b4\u03bf\u03c3\u03b7\u03c2",
"pad.toolbar.savedRevision.title": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b5\u03c2 \u0391\u03bd\u03b1\u03b8\u03b5\u03c9\u03c1\u03ae\u03c3\u03b5\u03b9\u03c2",
"pad.toolbar.settings.title": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2",
"pad.toolbar.embed.title": "\u0395\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 pad",
"pad.toolbar.showusers.title": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c4\u03c9\u03bd \u03c7\u03c1\u03b7\u03c3\u03c4\u03ce\u03bd \u03b1\u03c5\u03c4\u03bf\u03cd \u03c4\u03bf\u03c5 pad",
@ -81,6 +81,7 @@
"pad.share.emebdcode": "URL \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7\u03c2",
"pad.chat": "\u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1",
"pad.chat.title": "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c4\u03b7\u03c2 \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf pad.",
"pad.chat.loadmessages": "\u03a6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03c9\u03bd \u03bc\u03b7\u03bd\u03c5\u03bc\u03ac\u03c4\u03c9\u03bd",
"timeslider.pageTitle": "{{appTitle}} \u03a7\u03c1\u03bf\u03bd\u03bf\u03b4\u03b9\u03ac\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1",
"timeslider.toolbar.returnbutton": "\u0395\u03c0\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae \u03c3\u03c4\u03bf pad",
"timeslider.toolbar.authors": "\u03a3\u03c5\u03bd\u03c4\u03ac\u03ba\u03c4\u03b5\u03c2:",
@ -88,7 +89,7 @@
"timeslider.toolbar.exportlink.title": "\u0395\u03be\u03b1\u03b3\u03c9\u03b3\u03ae",
"timeslider.exportCurrent": "\u0395\u03be\u03b1\u03b3\u03c9\u03b3\u03ae \u03c4\u03c1\u03ad\u03c7\u03bf\u03c5\u03c3\u03b1\u03c2 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7\u03c2 \u03c9\u03c2:",
"timeslider.version": "\u0388\u03ba\u03b4\u03bf\u03c3\u03b7 {{version}}",
"timeslider.saved": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c4\u03b7\u03ba\u03b5 {{day}} {{month}}, {{year}}",
"timeslider.saved": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c4\u03b9\u03c2 {{day}} {{month}} {{year}}",
"timeslider.dateformat": "{{day}}\/{{month}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}",
"timeslider.month.january": "\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5",
"timeslider.month.february": "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5",
@ -102,6 +103,8 @@
"timeslider.month.october": "\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5",
"timeslider.month.november": "\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5",
"timeslider.month.december": "\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5",
"timeslider.unnamedauthor": "{{num}} \u03b1\u03bd\u03ce\u03bd\u03c5\u03bc\u03bf\u03c2 \u03c3\u03c5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ad\u03b1\u03c2",
"timeslider.unnamedauthors": "{{num}} \u03b1\u03bd\u03ce\u03bd\u03c5\u03bc\u03bf\u03b9 \u03c3\u03c5\u03b3\u03b3\u03c1\u03b1\u03c6\u03b5\u03af\u03c2",
"pad.savedrevs.marked": "\u0391\u03c5\u03c4\u03ae \u03b7 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7 \u03b5\u03c0\u03b9\u03c3\u03b7\u03bc\u03ac\u03bd\u03b8\u03b7\u03ba\u03b5 \u03c9\u03c2 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b7 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7",
"pad.userlist.entername": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03ac \u03c3\u03b1\u03c2",
"pad.userlist.unnamed": "\u03b1\u03bd\u03ce\u03bd\u03c5\u03bc\u03bf\u03c2",

View File

@ -4,8 +4,9 @@
"0": "Armando-Martin",
"1": "Jacobo",
"2": "Joker",
"4": "Vivaelcelta",
"5": "Xuacu"
"3": "Rubenwap",
"5": "Vivaelcelta",
"6": "Xuacu"
}
},
"index.newPad": "Nuevo Pad",
@ -104,6 +105,8 @@
"timeslider.month.october": "Octubre",
"timeslider.month.november": "Noviembre",
"timeslider.month.december": "Diciembre",
"timeslider.unnamedauthor": "{{num}} autor desconocido",
"timeslider.unnamedauthors": "{{num}} autores desconocidos",
"pad.savedrevs.marked": "Revisi\u00f3n guardada",
"pad.userlist.entername": "Escribe tu nombre",
"pad.userlist.unnamed": "an\u00f3nimo",

View File

@ -105,6 +105,8 @@
"timeslider.month.october": "lokakuu",
"timeslider.month.november": "marraskuu",
"timeslider.month.december": "joulukuu",
"timeslider.unnamedauthor": "{{num}} nimet\u00f6n tekij\u00e4",
"timeslider.unnamedauthors": "{{num}} nimet\u00f6nt\u00e4 tekij\u00e4\u00e4",
"pad.savedrevs.marked": "T\u00e4m\u00e4 versio on nyt merkitty tallennetuksi versioksi",
"pad.userlist.entername": "Kirjoita nimesi",
"pad.userlist.unnamed": "nimet\u00f6n",

View File

@ -109,6 +109,8 @@
"timeslider.month.october": "Octobre",
"timeslider.month.november": "Novembre",
"timeslider.month.december": "D\u00e9cembre",
"timeslider.unnamedauthor": "{{num}} auteur anonyme",
"timeslider.unnamedauthors": "{{num}} auteurs anonymes",
"pad.savedrevs.marked": "Cette r\u00e9vision est maintenant marqu\u00e9e comme r\u00e9vision enregistr\u00e9e",
"pad.userlist.entername": "Entrez votre nom",
"pad.userlist.unnamed": "sans nom",

View File

@ -100,6 +100,8 @@
"timeslider.month.october": "outubro",
"timeslider.month.november": "novembro",
"timeslider.month.december": "decembro",
"timeslider.unnamedauthor": "{{num}} autor an\u00f3nimo",
"timeslider.unnamedauthors": "{{num}} autores an\u00f3nimos",
"pad.savedrevs.marked": "Esta revisi\u00f3n est\u00e1 agora marcada como revisi\u00f3n gardada",
"pad.userlist.entername": "Insira o seu nome",
"pad.userlist.unnamed": "an\u00f3nimo",

View File

@ -79,6 +79,7 @@
"pad.share.emebdcode": "\u05d4\u05d8\u05de\u05e2\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8",
"pad.chat": "\u05e9\u05d9\u05d7\u05d4",
"pad.chat.title": "\u05e4\u05ea\u05d9\u05d7\u05ea \u05d4\u05e9\u05d9\u05d7\u05d4 \u05e9\u05dc \u05d4\u05e4\u05e0\u05e7\u05e1 \u05d4\u05d6\u05d4.",
"pad.chat.loadmessages": "\u05d8\u05e2\u05d9\u05e0\u05ea \u05d4\u05d5\u05d3\u05e2\u05d5\u05ea \u05e0\u05d5\u05e1\u05e4\u05d5\u05ea",
"timeslider.pageTitle": "\u05d2\u05d5\u05dc\u05dc \u05d6\u05de\u05df \u05e9\u05dc {{appTitle}}",
"timeslider.toolbar.returnbutton": "\u05d7\u05d6\u05e8\u05d4 \u05d0\u05dc \u05d4\u05e4\u05e0\u05e7\u05e1",
"timeslider.toolbar.authors": "\u05db\u05d5\u05ea\u05d1\u05d9\u05dd:",
@ -100,6 +101,8 @@
"timeslider.month.october": "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8",
"timeslider.month.november": "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8",
"timeslider.month.december": "\u05d3\u05e6\u05de\u05d1\u05e8",
"timeslider.unnamedauthor": "\u05db\u05d5\u05ea\u05d1 \u05d7\u05e1\u05e8\u05be\u05e9\u05dd \u05d0\u05d7\u05d3",
"timeslider.unnamedauthors": "{{num}} \u05db\u05d5\u05ea\u05d1\u05d9\u05dd \u05d7\u05e1\u05e8\u05d9\u05be\u05e9\u05dd",
"pad.savedrevs.marked": "\u05d2\u05e8\u05e1\u05d4 \u05d6\u05d5 \u05de\u05e1\u05d5\u05de\u05e0\u05ea \u05db\u05d2\u05e8\u05e1\u05d4 \u05e9\u05de\u05d5\u05e8\u05d4",
"pad.userlist.entername": "\u05e0\u05d0 \u05dc\u05d4\u05d6\u05d9\u05df \u05d0\u05ea \u05e9\u05de\u05da",
"pad.userlist.unnamed": "\u05dc\u05dc\u05d0 \u05e9\u05dd",

View File

@ -103,6 +103,8 @@
"timeslider.month.october": "ottobre",
"timeslider.month.november": "novembre",
"timeslider.month.december": "dicembre",
"timeslider.unnamedauthor": "{{num}} autore senza nome",
"timeslider.unnamedauthors": "{{num}} autori senza nome",
"pad.savedrevs.marked": "Questa revisione \u00e8 ora contrassegnata come una versione salvata",
"pad.userlist.entername": "Inserisci il tuo nome",
"pad.userlist.unnamed": "senza nome",

View File

@ -100,6 +100,8 @@
"timeslider.month.october": "10\u6708",
"timeslider.month.november": "11\u6708",
"timeslider.month.december": "12\u6708",
"timeslider.unnamedauthor": "{{num}} \u4eba\u306e\u533f\u540d\u306e\u4f5c\u8005",
"timeslider.unnamedauthors": "{{num}} \u4eba\u306e\u533f\u540d\u306e\u4f5c\u8005",
"pad.savedrevs.marked": "\u3053\u306e\u7248\u3092\u3001\u4fdd\u5b58\u6e08\u307f\u306e\u7248\u3068\u3057\u3066\u30de\u30fc\u30af\u3057\u307e\u3057\u305f\u3002",
"pad.userlist.entername": "\u540d\u524d\u3092\u5165\u529b",
"pad.userlist.unnamed": "\u540d\u524d\u306a\u3057",

View File

@ -100,6 +100,8 @@
"timeslider.month.october": "10\uc6d4",
"timeslider.month.november": "11\uc6d4",
"timeslider.month.december": "12\uc6d4",
"timeslider.unnamedauthor": "\uc774\ub984 \uc5c6\ub294 \uc800\uc790 {{num}}\uba85",
"timeslider.unnamedauthors": "\uc774\ub984 \uc5c6\ub294 \uc800\uc790 {{num}}\uba85",
"pad.savedrevs.marked": "\uc774 \ud310\uc740 \uc774\uc81c \uc800\uc7a5\ud55c \ud310\uc73c\ub85c \ud45c\uc2dc\ud569\ub2c8\ub2e4.",
"pad.userlist.entername": "\uc774\ub984\uc744 \uc785\ub825\ud558\uc138\uc694",
"pad.userlist.unnamed": "\uc774\ub984\uc5c6\uc74c",

View File

@ -101,6 +101,8 @@
"timeslider.month.october": "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438",
"timeslider.month.november": "\u043d\u043e\u0435\u043c\u0432\u0440\u0438",
"timeslider.month.december": "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438",
"timeslider.unnamedauthor": "{{num}} \u043d\u0435\u0438\u043c\u0435\u043d\u0443\u0432\u0430\u043d \u0430\u0432\u0442\u043e\u0440",
"timeslider.unnamedauthors": "{{num}} \u043d\u0435\u0438\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u0438 \u0430\u0432\u0442\u043e\u0440\u0438",
"pad.savedrevs.marked": "\u041e\u0432\u0430\u0430 \u0440\u0435\u0432\u0438\u0437\u0438\u0458\u0430 \u0441\u0435\u0433\u0430 \u0435 \u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u043a\u0430\u043a\u043e \u0437\u0430\u0447\u0443\u0432\u0430\u043d\u0430",
"pad.userlist.entername": "\u0412\u043d\u0435\u0441\u0435\u0442\u0435 \u0433\u043e \u0432\u0430\u0448\u0435\u0442\u043e \u0438\u043c\u0435",
"pad.userlist.unnamed": "\u0431\u0435\u0437 \u0438\u043c\u0435",

View File

@ -79,6 +79,7 @@
"pad.share.emebdcode": "\u0d0e\u0d02\u0d2c\u0d46\u0d21\u0d4d \u0d2f\u0d41.\u0d06\u0d7c.\u0d0e\u0d7d.",
"pad.chat": "\u0d24\u0d24\u0d4d\u0d38\u0d2e\u0d2f\u0d38\u0d02\u0d35\u0d3e\u0d26\u0d02",
"pad.chat.title": "\u0d08 \u0d2a\u0d3e\u0d21\u0d3f\u0d28\u0d4d\u0d31\u0d46 \u0d24\u0d24\u0d4d\u0d38\u0d2e\u0d2f\u0d38\u0d02\u0d35\u0d3e\u0d26\u0d02 \u0d24\u0d41\u0d31\u0d15\u0d4d\u0d15\u0d41\u0d15.",
"pad.chat.loadmessages": "\u0d15\u0d42\u0d1f\u0d41\u0d24\u0d7d \u0d38\u0d28\u0d4d\u0d26\u0d47\u0d36\u0d19\u0d4d\u0d19\u0d7e \u0d0e\u0d1f\u0d41\u0d15\u0d4d\u0d15\u0d41\u0d15",
"timeslider.pageTitle": "{{appTitle}} \u0d38\u0d2e\u0d2f\u0d30\u0d47\u0d16",
"timeslider.toolbar.returnbutton": "\u0d2a\u0d3e\u0d21\u0d3f\u0d32\u0d47\u0d15\u0d4d\u0d15\u0d4d \u0d24\u0d3f\u0d30\u0d3f\u0d1a\u0d4d\u0d1a\u0d41\u0d2a\u0d4b\u0d35\u0d41\u0d15",
"timeslider.toolbar.authors": "\u0d30\u0d1a\u0d2f\u0d3f\u0d24\u0d3e\u0d15\u0d4d\u0d15\u0d7e:",

View File

@ -78,6 +78,7 @@
"pad.share.emebdcode": "Benamkan URL",
"pad.chat": "Sembang",
"pad.chat.title": "Buka ruang sembang untuk pad ini.",
"pad.chat.loadmessages": "Muatkan banyak lagi pesanan",
"timeslider.pageTitle": "Gelangsar Masa {{appTitle}}",
"timeslider.toolbar.returnbutton": "Kembali ke pad",
"timeslider.toolbar.authors": "Pengarang:",
@ -99,6 +100,8 @@
"timeslider.month.october": "Oktober",
"timeslider.month.november": "November",
"timeslider.month.december": "Disember",
"timeslider.unnamedauthor": "{{num}} orang pengarang awanama",
"timeslider.unnamedauthors": "{{num}} orang pengarang awanama",
"pad.savedrevs.marked": "Semakan ini telah ditandai sebagai semakan tersimpan",
"pad.userlist.entername": "Taipkan nama anda",
"pad.userlist.unnamed": "tanpa nama",

View File

@ -17,7 +17,9 @@
"pad.settings.fontType": "\u0644\u064a\u06a9\u0628\u06bc\u06d0 \u0689\u0648\u0644:",
"pad.settings.fontType.normal": "\u0646\u0648\u0631\u0645\u0627\u0644",
"pad.settings.fontType.monospaced": "\u0645\u0648\u0646\u0648\u0633\u067e\u06d0\u0633",
"pad.settings.globalView": "\u0646\u0693\u06d0\u0648\u0627\u0644\u0647 \u069a\u06a9\u0627\u0631\u06d0\u062f\u0646\u0647",
"pad.settings.language": "\u0698\u0628\u0647:",
"pad.importExport.importSuccessful": "\u0628\u0631\u064a\u0627\u0644\u06cc \u0634\u0648!",
"pad.importExport.exporthtml": "\u0627\u0686 \u067c\u064a \u0627\u0645 \u0627\u06d0\u0644",
"pad.importExport.exportplain": "\u0633\u0627\u062f\u0647 \u0645\u062a\u0646",
"pad.importExport.exportword": "\u0645\u0627\u064a\u06a9\u0631\u0648\u0633\u0627\u0641\u067c \u0648\u0631\u0689",

View File

@ -103,6 +103,8 @@
"timeslider.month.october": "\u043e\u043a\u0442\u044f\u0431\u0440\u044c",
"timeslider.month.november": "\u043d\u043e\u044f\u0431\u0440\u044c",
"timeslider.month.december": "\u0434\u0435\u043a\u0430\u0431\u0440\u044c",
"timeslider.unnamedauthor": "{{num}} \u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u0440",
"timeslider.unnamedauthors": "\u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432: {{num}}",
"pad.savedrevs.marked": "\u042d\u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u0430 \u043a\u0430\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u0430\u044f",
"pad.userlist.entername": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0432\u0430\u0448\u0435 \u0438\u043c\u044f",
"pad.userlist.unnamed": "\u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0439",

View File

@ -100,6 +100,8 @@
"timeslider.month.october": "Oktober",
"timeslider.month.november": "November",
"timeslider.month.december": "December",
"timeslider.unnamedauthor": "neimenovani avtor {{num}}",
"timeslider.unnamedauthors": "{{num}} neimenovani avtorji",
"pad.savedrevs.marked": "Ta predelava je ozna\u010dena kot shranjena predelava.",
"pad.userlist.entername": "Vpi\u0161ite ime",
"pad.userlist.unnamed": "neimenovana oseba",

View File

@ -100,6 +100,8 @@
"timeslider.month.october": "oktober",
"timeslider.month.november": "november",
"timeslider.month.december": "december",
"timeslider.unnamedauthor": "{{num}} namnl\u00f6s f\u00f6rfattare",
"timeslider.unnamedauthors": "{{num}} namnl\u00f6sa f\u00f6rfattare",
"pad.savedrevs.marked": "Denna revision \u00e4r nu markerad som en sparad revision",
"pad.userlist.entername": "Ange ditt namn",
"pad.userlist.unnamed": "namnl\u00f6s",

View File

@ -102,6 +102,8 @@
"timeslider.month.october": "\u0416\u043e\u0432\u0442\u0435\u043d\u044c",
"timeslider.month.november": "\u041b\u0438\u0441\u0442\u043e\u043f\u0430\u0434",
"timeslider.month.december": "\u0413\u0440\u0443\u0434\u0435\u043d\u044c",
"timeslider.unnamedauthor": "{{num}} \u0431\u0435\u0437\u0456\u043c\u0435\u043d\u043d\u0438\u0439 \u0430\u0432\u0442\u043e\u0440",
"timeslider.unnamedauthors": "\u0431\u0435\u0437\u0456\u043c\u0435\u043d\u043d\u0438\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432: {{num}}",
"pad.savedrevs.marked": "\u0426\u044e \u0432\u0435\u0440\u0441\u0456\u044e \u043f\u043e\u043c\u0456\u0447\u0435\u043d\u043e \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043e\u044e \u0432\u0435\u0440\u0441\u0456\u0454\u044e",
"pad.userlist.entername": "\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u0412\u0430\u0448\u0435 \u0456\u043c'\u044f",
"pad.userlist.unnamed": "\u0431\u0435\u0437\u0456\u043c\u0435\u043d\u043d\u0438\u0439",

View File

@ -3,6 +3,7 @@
"authors": [
"Dimension",
"Hydra",
"\u4e4c\u62c9\u8de8\u6c2a",
"\u71c3\u7389"
]
},
@ -30,12 +31,19 @@
"pad.permissionDenied": "\u60a8\u6ca1\u6709\u89c2\u770b\u8fd9\u4e2a\u8bb0\u4e8b\u672c\u7684\u6743\u9650",
"pad.wrongPassword": "\u60a8\u7684\u5bc6\u7801\u9519\u4e86",
"pad.settings.padSettings": "\u8bb0\u4e8b\u672c\u8bbe\u7f6e",
"pad.settings.myView": "\u6211\u7684\u89c6\u7a97",
"pad.settings.stickychat": "\u603b\u662f\u5728\u5c4f\u5e55\u4e0a\u663e\u793a\u804a\u5929",
"pad.settings.colorcheck": "\u4f5c\u8005\u989c\u8272",
"pad.settings.linenocheck": "\u884c\u53f7",
"pad.settings.fontType": "\u5b57\u4f53\u7c7b\u578b\uff1a",
"pad.settings.fontType.normal": "\u6b63\u5e38",
"pad.settings.fontType.monospaced": "\u7b49\u5bbd\u5b57\u4f53",
"pad.settings.globalView": "\u6240\u6709\u4eba\u7684\u89c6\u7a97",
"pad.settings.language": "\u8bed\u8a00\uff1a",
"pad.importExport.import_export": "\u5bfc\u5165\/\u5bfc\u51fa",
"pad.importExport.import": "\u4e0a\u8f7d\u4efb\u4f55\u6587\u5b57\u6863\u6216\u6587\u6863",
"pad.importExport.importSuccessful": "\u6210\u529f\uff01",
"pad.importExport.export": "\u5bfc\u51fa\u76ee\u524d\u7684\u8bb0\u4e8b\u7c3f\u4e3a\uff1a",
"pad.importExport.exporthtml": "HTML",
"pad.importExport.exportplain": "\u7eaf\u6587\u672c",
"pad.importExport.exportword": "Microsoft Word",
@ -43,21 +51,36 @@
"pad.importExport.exportopen": "ODF\uff08\u5f00\u653e\u6587\u6863\u683c\u5f0f\uff09",
"pad.importExport.exportdokuwiki": "DokuWiki",
"pad.modals.connected": "\u5df2\u8fde\u63a5\u3002",
"pad.modals.reconnecting": "\u91cd\u65b0\u8fde\u63a5\u5230\u60a8\u7684\u8bb0\u4e8b\u7c3f...",
"pad.modals.forcereconnect": "\u5f3a\u5236\u91cd\u65b0\u8fde\u63a5",
"pad.modals.userdup": "\u5728\u53e6\u4e00\u4e2a\u89c6\u7a97\u4e2d\u6253\u5f00",
"pad.modals.userdup.explanation": "\u6b64\u8bb0\u4e8b\u7c3f\u4f3c\u4e4e\u5728\u6b64\u7535\u8111\u4e0a\u5728\u591a\u4e2a\u6d4f\u89c8\u5668\u89c6\u7a97\u4e2d\u6253\u5f00\u3002",
"pad.modals.userdup.advice": "\u91cd\u65b0\u8fde\u63a5\u5230\u6b64\u89c6\u7a97\u3002",
"pad.modals.unauth": "\u672a\u6388\u6743",
"pad.modals.looping": "\u5df2\u79bb\u7ebf\u3002",
"pad.modals.initsocketfail": "\u65e0\u6cd5\u8bbf\u95ee\u670d\u52a1\u5668\u3002",
"pad.modals.initsocketfail.explanation": "\u65e0\u6cd5\u8fde\u63a5\u5230\u540c\u6b65\u670d\u52a1\u5668\u3002",
"pad.modals.initsocketfail.cause": "\u8fd9\u53ef\u80fd\u662f\u7531\u4e8e\u60a8\u7684\u6d4f\u89c8\u5668\u6216\u60a8\u7684\u4e92\u8054\u7f51\u8fde\u63a5\u7684\u95ee\u9898\u3002",
"pad.modals.slowcommit": "\u5df2\u79bb\u7ebf\u3002",
"pad.modals.slowcommit.explanation": "\u670d\u52a1\u5668\u6ca1\u6709\u54cd\u5e94\u3002",
"pad.modals.slowcommit.cause": "\u8fd9\u53ef\u80fd\u662f\u7531\u4e8e\u7f51\u7edc\u8fde\u63a5\u95ee\u9898\u3002",
"pad.modals.deleted": "\u5df2\u522a\u9664\u3002",
"pad.modals.deleted.explanation": "\u6b64\u8bb0\u4e8b\u672c\u5df2\u88ab\u79fb\u9664\u3002",
"pad.modals.disconnected": "\u60a8\u5df2\u88ab\u79bb\u7ebf\u3002",
"pad.modals.disconnected.explanation": "\u5230\u670d\u52a1\u5668\u7684\u8fde\u63a5\u5df2\u4e22\u5931",
"pad.modals.disconnected.cause": "\u670d\u52a1\u5668\u53ef\u80fd\u65e0\u6cd5\u4f7f\u7528\u3002\u82e5\u6b64\u60c5\u51b5\u6301\u7eed\u53d1\u751f\uff0c\u8bf7\u901a\u77e5\u6211\u4eec\u3002",
"pad.share": "\u5206\u4eab\u6b64\u8bb0\u4e8b\u672c",
"pad.share.readonly": "\u53ea\u80fd\u8bfb",
"pad.share.link": "\u94fe\u63a5",
"pad.share.emebdcode": "\u5d4c\u5165\u7f51\u5740",
"pad.chat": "\u804a\u5929",
"pad.chat.title": "\u6253\u5f00\u6b64\u8bb0\u4e8b\u7c3f\u7684\u804a\u5929\u3002",
"pad.chat.loadmessages": "\u52a0\u8f7d\u66f4\u591a\u4fe1\u606f",
"timeslider.toolbar.returnbutton": "\u8fd4\u56de\u8bb0\u4e8b\u672c",
"timeslider.toolbar.authors": "\u4f5c\u8005\uff1a",
"timeslider.toolbar.authorsList": "\u6ca1\u6709\u4f5c\u8005",
"timeslider.toolbar.exportlink.title": "\u5bfc\u51fa",
"timeslider.exportCurrent": "\u5bfc\u51fa\u76ee\u524d\u7248\u672c\u4e3a\uff1a",
"timeslider.version": "\u7b2c {{version}} \u7248\u672c",
"timeslider.saved": "\u5728{{year}}\u5e74{{month}}{{day}}\u65e5\u4fdd\u5b58",
"timeslider.month.january": "\u4e00\u6708",
@ -72,13 +95,20 @@
"timeslider.month.october": "\u5341\u6708",
"timeslider.month.november": "\u5341\u4e00\u6708",
"timeslider.month.december": "\u5341\u4e8c\u6708",
"timeslider.unnamedauthor": "{{num}}\u533f\u540d\u4f5c\u8005",
"timeslider.unnamedauthors": "{{num}}\u533f\u540d\u4f5c\u8005",
"pad.savedrevs.marked": "\u6b64\u4fee\u8ba2\u5df2\u6807\u8bb0\u4e3a\u4fdd\u5b58\u4fee\u8ba2",
"pad.userlist.entername": "\u8f93\u5165\u60a8\u7684\u59d3\u540d",
"pad.userlist.unnamed": "\u65e0\u540d",
"pad.userlist.guest": "\u8bbf\u5ba2",
"pad.userlist.deny": "\u62d2\u7edd",
"pad.userlist.approve": "\u6279\u51c6",
"pad.editbar.clearcolors": "\u6e05\u9664\u6574\u4e2a\u6587\u6863\u7684\u4f5c\u8005\u989c\u8272\u5417\uff1f",
"pad.impexp.importbutton": "\u73b0\u5728\u5bfc\u5165",
"pad.impexp.importing": "\u6b63\u5728\u5bfc\u5165...",
"pad.impexp.convertFailed": "\u6211\u4eec\u65e0\u6cd5\u5bfc\u5165\u6b64\u6587\u6863\u3002\u8bf7\u4f7f\u7528\u4ed6\u6587\u6863\u683c\u5f0f\u6216\u624b\u52a8\u590d\u5236\u8d34\u4e0a\u3002",
"pad.impexp.uploadFailed": "\u4e0a\u8f7d\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5",
"pad.impexp.importfailed": "\u5bfc\u5165\u5931\u8d25"
"pad.impexp.importfailed": "\u5bfc\u5165\u5931\u8d25",
"pad.impexp.copypaste": "\u8bf7\u590d\u5236\u7c98\u8d34",
"pad.impexp.exportdisabled": "{{type}} \u683c\u5f0f\u7684\u5bfc\u51fa\u88ab\u7981\u7528\u3002\u6709\u5173\u8be6\u60c5\uff0c\u8bf7\u4e0e\u60a8\u7684\u7cfb\u7edf\u7ba1\u7406\u5458\u8054\u7cfb\u3002"
}

View File

@ -100,6 +100,8 @@
"timeslider.month.october": "10\u6708",
"timeslider.month.november": "11\u6708",
"timeslider.month.december": "12\u6708",
"timeslider.unnamedauthor": "{{num}} \u533f\u540d\u4f5c\u8005",
"timeslider.unnamedauthors": "{{num}} \u533f\u540d\u4f5c\u8005",
"pad.savedrevs.marked": "\u6b64\u4fee\u8a02\u5df2\u6a19\u8a18\u70ba\u5df2\u4fdd\u5b58\u3002",
"pad.userlist.entername": "\u8f38\u5165\u60a8\u7684\u59d3\u540d",
"pad.userlist.unnamed": "\u672a\u547d\u540d",

View File

@ -32,6 +32,7 @@ var securityManager = require("../db/SecurityManager");
var plugins = require("ep_etherpad-lite/static/js/pluginfw/plugins.js");
var log4js = require('log4js');
var messageLogger = log4js.getLogger("message");
var accessLogger = log4js.getLogger("access");
var _ = require('underscore');
var hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks.js");
@ -121,6 +122,10 @@ exports.handleDisconnect = function(client)
});
}
client.get('remoteAddress', function(er, ip) {
accessLogger.info('[LEAVE] Pad "'+session.padId+'": Author "'+session.author+'" on client '+client.id+' with IP "'+ip+'" left the pad')
})
//Delete the sessioninfos entrys of this session
delete sessioninfos[client.id];
}
@ -910,6 +915,10 @@ function handleClientReady(client, message)
sessioninfos[client.id].readOnlyPadId = padIds.readOnlyPadId;
sessioninfos[client.id].readonly = padIds.readonly;
client.get('remoteAddress', function(er, ip) {
accessLogger.info('[ENTER] Pad "'+padIds.padId+'": Client '+client.id+' with IP "'+ip+'" entered the pad')
})
//If this is a reconnect, we don't have to send the client the ClientVars again
if(message.reconnect == true)
{

View File

@ -55,13 +55,14 @@ exports.setSocketIO = function(_socket)
socket.sockets.on('connection', function(client)
{
client.set('remoteAddress', client.handshake.address.address);
var clientAuthorized = false;
//wrap the original send function to log the messages
client._send = client.send;
client.send = function(message)
{
messageLogger.info("to " + client.id + ": " + stringifyWithoutPassword(message));
messageLogger.debug("to " + client.id + ": " + stringifyWithoutPassword(message));
client._send(message);
}
@ -79,7 +80,7 @@ exports.setSocketIO = function(_socket)
//check if component is registered in the components array
if(components[message.component])
{
messageLogger.info("from " + client.id + ": " + stringifyWithoutPassword(message));
messageLogger.debug("from " + client.id + ": " + stringifyWithoutPassword(message));
components[message.component].handleMessage(client, message);
}
}

View File

@ -45,5 +45,5 @@
"engines" : { "node" : ">=0.6.3",
"npm" : ">=1.0"
},
"version" : "1.2.7"
"version" : "1.2.8"
}

View File

@ -1,5 +1,5 @@
/**
* This code is mostly from the old Etherpad. Please help us to comment this code.
* This code is mostly from the old Etherpad. Please help us to comment this code.
* This helps other people to understand this code better and helps them to improve it.
* TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED
*/
@ -34,18 +34,6 @@ function object(o)
return new f();
}
var userAgent = (((function () {return this;})().navigator || {}).userAgent || 'node-js').toLowerCase();
var browser = {
version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
safari: /webkit/.test(userAgent),
opera: /opera/.test(userAgent),
msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent),
windows: /windows/.test(userAgent),
mobile: /mobile/.test(userAgent) || /android/.test(userAgent)
};
function getAssoc(obj, name)
{
return obj["_magicdom_" + name];
@ -96,7 +84,6 @@ var noop = function(){};
exports.isNodeText = isNodeText;
exports.object = object;
exports.browser = browser;
exports.getAssoc = getAssoc;
exports.setAssoc = setAssoc;
exports.binarySearch = binarySearch;

View File

@ -154,17 +154,8 @@ function Ace2Inner(){
var dmesg = noop;
window.dmesg = noop;
// Ugly hack for Firefox 18
// get the timeout and interval methods from the parent iframe
// This hack breaks IE8
try{
setTimeout = parent.setTimeout;
clearTimeout = parent.clearTimeout;
setInterval = parent.setInterval;
clearInterval = parent.clearInterval;
}catch(err){
// IE8 can panic here.
}
var scheduler = parent; // hack for opera required
var textFace = 'monospace';
var textSize = 12;
@ -184,7 +175,7 @@ function Ace2Inner(){
parentDynamicCSS = makeCSSManager("dynamicsyntax", true);
}
var changesetTracker = makeChangesetTracker(rep.apool, {
var changesetTracker = makeChangesetTracker(scheduler, rep.apool, {
withCallbacks: function(operationName, f)
{
inCallStackIfNecessary(operationName, function()
@ -604,7 +595,7 @@ function Ace2Inner(){
doesWrap = newVal;
var dwClass = "doesWrap";
setClassPresence(root, "doesWrap", doesWrap);
setTimeout(function()
scheduler.setTimeout(function()
{
inCallStackIfNecessary("setWraps", function()
{
@ -644,7 +635,7 @@ function Ace2Inner(){
textFace = face;
root.style.fontFamily = textFace;
lineMetricsDiv.style.fontFamily = textFace;
setTimeout(function()
scheduler.setTimeout(function()
{
setUpTrackingCSS();
}, 0);
@ -657,7 +648,7 @@ function Ace2Inner(){
root.style.lineHeight = textLineHeight() + "px";
sideDiv.style.lineHeight = textLineHeight() + "px";
lineMetricsDiv.style.fontSize = textSize + "px";
setTimeout(function()
scheduler.setTimeout(function()
{
setUpTrackingCSS();
}, 0);
@ -1106,7 +1097,7 @@ function Ace2Inner(){
scheduledTime = time;
var delay = time - now();
if (delay < 0) delay = 0;
scheduledTimeout = setTimeout(callback, delay);
scheduledTimeout = scheduler.setTimeout(callback, delay);
}
function callback()
@ -3623,7 +3614,7 @@ function Ace2Inner(){
evt.preventDefault();
doReturnKey();
//scrollSelectionIntoView();
setTimeout(function()
scheduler.setTimeout(function()
{
outerWin.scrollBy(-100, 0);
}, 0);
@ -3709,7 +3700,7 @@ function Ace2Inner(){
var isPageDown = evt.which === 34;
var isPageUp = evt.which === 33;
setTimeout(function(){
scheduler.setTimeout(function(){
var newVisibleLineRange = getVisibleLineRange();
var linesCount = rep.lines.length();
@ -4660,7 +4651,10 @@ function Ace2Inner(){
function bindTheEventHandlers()
{
$(document).on("keydown", handleKeyEvent);
$(document).on("keypress", handleKeyEvent);
// Hack for Opera to stop it firing twice on events
if ($.browser.opera){
$(document).on("keypress", handleKeyEvent);
}
$(document).on("keyup", handleKeyEvent);
$(document).on("click", handleClick);
$(root).on("blur", handleBlur);
@ -4766,7 +4760,7 @@ function Ace2Inner(){
});
setTimeout(function()
scheduler.setTimeout(function()
{
parent.readyFunc(); // defined in code that sets up the inner iframe
}, 0);
@ -5214,7 +5208,7 @@ function Ace2Inner(){
documentAttributeManager: documentAttributeManager
});
setTimeout(function()
scheduler.setTimeout(function()
{
parent.readyFunc(); // defined in code that sets up the inner iframe
}, 0);

View File

@ -23,7 +23,7 @@
var AttributePool = require('./AttributePool');
var Changeset = require('./Changeset');
function makeChangesetTracker(apool, aceCallbacksProvider)
function makeChangesetTracker(scheduler, apool, aceCallbacksProvider)
{
// latest official text from server

9641
src/static/js/jquery.js vendored

File diff suppressed because it is too large Load Diff

50
src/static/js/jquery_browser.js vendored Normal file
View File

@ -0,0 +1,50 @@
/*
Copied from jQuery 1.8, the last jquery version with browser recognition support
*/
(function(){
// Use of jQuery.browser is frowned upon.
// More details: http://api.jquery.com/jQuery.browser
// jQuery.uaMatch maintained for back-compat
var uaMatch = function( ua ) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
/(webkit)[ \/]([\w.]+)/.exec( ua ) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
/(msie) ([\w.]+)/.exec( ua ) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
var userAgent = navigator.userAgent;
var matched = uaMatch(userAgent);
var browser = {};
if ( matched.browser ) {
browser[ matched.browser ] = true;
browser.version = matched.version;
}
// Chrome is Webkit, but Webkit is also Safari.
if ( browser.chrome ) {
browser.webkit = true;
} else if ( browser.webkit ) {
browser.safari = true;
}
//custom extensions, the original jquery didn't have these
browser.windows = /windows/.test(userAgent);
browser.mobile = /mobile/.test(userAgent) || /android/.test(userAgent);
if(typeof exports !== 'undefined'){
exports.browser = browser;
} else{
$.browser = browser;
}
})();

View File

@ -2,4 +2,9 @@
// Proviedes a require'able version of jQuery without leaking $ and jQuery;
require('./jquery');
exports.jQuery = exports.$ = $.noConflict(true);
var jq = window.$.noConflict(true);
//added the old browser recognition
jq.browser = require('./jquery_browser').browser;
exports.jQuery = exports.$ = jq;

View File

@ -85,8 +85,8 @@ var helper = {};
return !$iframe.contents().find("#editorloadingbox").is(":visible");
}, 50000).done(function(){
helper.padChrome$ = getFrameJQuery( $('#iframe-container iframe'));
helper.padOuter$ = getFrameJQuery(helper.padChrome$('iframe.[name="ace_outer"]'));
helper.padInner$ = getFrameJQuery( helper.padOuter$('iframe.[name="ace_inner"]'));
helper.padOuter$ = getFrameJQuery(helper.padChrome$('iframe[name="ace_outer"]'));
helper.padInner$ = getFrameJQuery( helper.padOuter$('iframe[name="ace_inner"]'));
//disable all animations, this makes tests faster and easier
helper.padChrome$.fx.off = true;

View File

@ -10,6 +10,7 @@
<div id="iframe-container"></div>
<script src="/static/js/jquery.js"></script>
<script src="/static/js/jquery_browser.js"></script>
<script src="lib/underscore.js"></script>
<script src="lib/mocha.js"></script>