Merge pull request #1194 from ether/release/releases-1.2.1

release v1.2.1
This commit is contained in:
Marcel Klehr 2012-11-21 11:29:02 -08:00
commit e02054d6fe
27 changed files with 383 additions and 122 deletions

View File

@ -10,7 +10,7 @@ script:
- "tests/frontend/travis/runner.sh"
env:
global:
- secure: "oKA4KbSvyxMOFCiOa3hWswnaIrCmX60MfhBhD8xu8sodOqbdK5RUrxDJew9p\n1nNSewxoVmKhX0G5GxIABfGtdU1nrEzCEoejTDJIFmzEbcLcHpcyarouWLSY\nOpn11FKS1rnb69aflHM7K8l4dhrCkA2i0Dwwl8LN3HayGzDV2Rg="
- secure: "OxZ2s724S96xu02746LUN+4lBckAe1BOICJjfA4jnFPNpiNU6XoMH52f+LgG\nZzAwu6xMTv+NsaLGp6Avm3cx4GZ+jIiHe4NB9XOgYPa0r0TBIi3ueWYPDyVv\nCniS/4qX68DoFNV4lh7zMBXn0IIPxT4Wppm3desBpjWDP/SdoRs="
- SAUCE_USER=pita
jdk:
- oraclejdk6

View File

@ -1,3 +1,12 @@
# 1.2.1
* Allow ! in urls inside the editor (Not Pad urls)
* Allow comments in language files
* More languages (Finish, Spanish, Bengali, Dutch) Thanks to TranslateWiki.net team. See https://translatewiki.net/w/i.php?title=Special:MessageGroupStats&group=out-etherpad-lite for more details
* Bugfix for IE7/8 issue with a JS error #1186
* Bugfix windows package extraction issue and make the .zip file smaller
* Bugfix group pad API export
* Kristen Stewart is a terrible actress and Twilight sucks.
# v1.2
* Internationalization / Language / Translation support (i18n) with support for German/French
* A frontend/client side testing framework and backend build tests

View File

@ -73,7 +73,7 @@ Additionally, you'll need [node.js](http://nodejs.org).
1. Move to a folder where you want to install Etherpad Lite. Clone the git repository `git clone git://github.com/ether/etherpad-lite.git`
2. Change into the new directory containing the cloned source code `cd etherpad-lite`
Now, run `bin\run.sh` and open <http://127.0.0.1:9001> in your browser.
Now, run `bin/run.sh` and open <http://127.0.0.1:9001> in your browser.
Update to the latest version with `git pull origin`. The next start with bin/run.sh will update the dependencies.

View File

@ -52,6 +52,13 @@ echo "download windows node..."
cd bin
wget "http://nodejs.org/dist/v$NODE_VERSION/node.exe" -O ../node.exe
echo "remove git history to reduce folder size"
rm -rf .git/objects
echo "remove windows jsdom-nocontextify/test folder"
rm -rf /tmp/etherpad-lite-win/node_modules/ep_etherpad-lite/node_modules/jsdom-nocontextifiy/test/
rm -rf /tmp/etherpad-lite-win/src/node_modules/jsdom-nocontextifiy/test/
echo "create the zip..."
cd /tmp
zip -9 -r etherpad-lite-win.zip etherpad-lite-win

View File

@ -69,7 +69,7 @@ echo "Ensure that all dependencies are up to date..."
cd node_modules
[ -e ep_etherpad-lite ] || ln -s ../src ep_etherpad-lite
cd ep_etherpad-lite
npm install -s
npm install --loglevel warn
) || {
rm -rf node_modules
exit 1
@ -79,7 +79,7 @@ echo "Ensure jQuery is downloaded and up to date..."
DOWNLOAD_JQUERY="true"
NEEDED_VERSION="1.7.1"
if [ -f "src/static/js/jquery.js" ]; then
if [ $(uname) = "SunOS"]; then
if [ $(uname) = "SunOS" ]; then
VERSION=$(cat src/static/js/jquery.js | head -n 3 | ggrep -o "v[0-9]\.[0-9]\(\.[0-9]\)\?");
else
VERSION=$(cat src/static/js/jquery.js | head -n 3 | grep -o "v[0-9]\.[0-9]\(\.[0-9]\)\?");

View File

@ -13,7 +13,7 @@ cmd /C node -e %check_version% || exit /B 1
echo _
echo Installing etherpad-lite and dependencies...
cmd /C npm install src/ || exit /B 1
cmd /C npm install src/ --loglevel warn || exit /B 1
echo _
echo Copying custom templates...

32
src/locales/bn.ini Normal file
View File

@ -0,0 +1,32 @@
; Exported from translatewiki.net
; Author: Nasir8891
[bn]
index.newPad = নতুন প্যাড
index.createOpenPad = অথবা নাম লিখে প্যাড খুলুন/তৈরী করুন:
pad.toolbar.bold.title = গাড় করা (Ctrl-B)
pad.toolbar.italic.title = বাঁকা করা (Ctrl-I)
pad.toolbar.settings.title = সেটিং
pad.colorpicker.save = সংরক্ষণ
pad.colorpicker.cancel = বাতিল
pad.loading = লোডিং...
pad.settings.language = ভাষা:
pad.importExport.successful = সফল!
; Fuzzy
pad.importExport.export = এই প্যাডটি এক্সপোর্ট করুন
pad.importExport.exporthtml = এইচটিএমএল
pad.importExport.exportplain = সাধারণ লেখা
pad.importExport.exportword = মাইক্রোসফট ওয়ার্ড
pad.importExport.exportpdf = পিডিএফ
pad.importExport.exportopen = ওডিএফ (ওপেন ডকুমেন্ট ফরম্যাট)
pad.modals.deleted = অপসারিত।
pad.modals.deleted.explanation = এই প্যাডটি অপসারণ করা হয়েছে।
pad.modals.disconnected.explanation = সার্ভারের সাথে যোগাযোগ করা যাচ্ছে না
pad.share = শেয়ার করুন
pad.share.link = লিংক
pad.share.emebdcode = ইউআরএল সংযোজন
pad.chat = চ্যাট
pad.chat.title = এই প্যাডের জন্য চ্যাট চালু করুন।
timeslider.toolbar.returnbutton = প্যাডে ফিরে যাও
timeslider.toolbar.authors = লেখকগণ:
timeslider.toolbar.authorsList = কোনো লেখক নেই
timeslider.exportCurrent = বর্তমান সংস্করণটি এক্সপোর্ট করুন:

View File

@ -1,7 +1,7 @@
; Exported from translatewiki.net
[de]
index.newPad = Neues Pad
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)
@ -19,10 +19,8 @@ pad.toolbar.savedRevision.title = Diese Revision markieren
pad.toolbar.settings.title = Einstellungen
pad.toolbar.embed.title = Dieses Pad teilen oder einbetten
pad.toolbar.showusers.title = Verbundene Benutzer anzeigen
pad.colorpicker.save = Speichern
pad.colorpicker.cancel = Abbrechen
pad.loading = Laden...
pad.settings.padSettings = Pad Einstellungen
pad.settings.myView = Eigene Ansicht
@ -32,13 +30,12 @@ pad.settings.linenocheck = Zeilennummern
pad.settings.fontType = Schriftart:
pad.settings.fontType.normal = Normal
pad.settings.fontType.monospaced = Monospace
pad.settings.language = Sprache:
pad.settings.globalView = Gemeinsame Ansicht
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.exporthtml = HTML
pad.importExport.exportplain = Reiner Text
@ -46,7 +43,6 @@ pad.importExport.exportword = Microsoft Word
pad.importExport.exportpdf = PDf
pad.importExport.exportopen = ODF (Open Document Format)
pad.importExport.exportdokuwiki = DokuWiki
pad.modals.connected = Verbunden.
pad.modals.reconnecting = Wiederherstellen der Verbindung...
pad.modals.forcereconnect = Erneut Verbinden
@ -69,17 +65,14 @@ pad.modals.deleted.explanation = Dieses Pad wurde entfernt.
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.share = Dieses Pad teilen
pad.share.readonly = Eingeschränkter zugriff (Nur lesen)
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
timeslider.toolbar.returnbutton = Zurück zum Pad
timeslider.toolbar.authors = Autoren:
timeslider.toolbar.authorsList = keine Autoren
timeslider.exportCurrent = Exportiere diese Version als:
timeslider.exportCurrent = Exportiere diese Version als:

View File

@ -1,4 +1,4 @@
[en]
[*]
index.newPad = New Pad
index.createOpenPad = or create/open a Pad with the name:
pad.toolbar.bold.title = Bold (Ctrl-B)
@ -6,7 +6,7 @@ pad.toolbar.italic.title = Italic (Ctrl-I)
pad.toolbar.underline.title = Underline (Ctrl-U)
pad.toolbar.strikethrough.title = Strikethrough
pad.toolbar.ol.title = Ordered list
pad.toolbar.ul.title = UnOrdered List
pad.toolbar.ul.title = Unordered List
pad.toolbar.indent.title = Indent
pad.toolbar.unindent.title = Outdent
pad.toolbar.undo.title = Undo (Ctrl-Z)
@ -34,27 +34,27 @@ pad.settings.language = Language:
pad.importExport.import_export = Import/Export
pad.importExport.import = Upload any text file or document
pad.importExport.successful = Successful!
pad.importExport.export = Export current pad as
pad.importExport.export = Export current pad as:
pad.importExport.exporthtml = HTML
pad.importExport.exportplain = Plain text
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 = Connected.
pad.modals.reconnecting = Reconnecting to your pad..
pad.modals.forcereconnect = Force reconnect
pad.modals.uderdup = Open in another window
pad.modals.uderdup = Opened in another window
pad.modals.userdup.explanation = This pad seems to be opened in more than one browser window on this computer.
pad.modals.userdup.advice = Reconnect to use this windows instead.
pad.modals.userdup.advice = Reconnect to use this window instead.
pad.modals.unauth = Not authorized
pad.modals.unauth.explanation = Your permissions have changes while viewing this page. Try to reconnect.
pad.modals.unauth.explanation = Your permissions have changed while viewing this page. Try to reconnect.
pad.modals.looping = Disconnected.
pad.modals.looping.explanation = We're having problem communicating to the synchronization server.
pad.modals.looping.cause = Perhaps their connection runs through an incompatible firewall or incompatible proxy.
pad.modals.looping.explanation = There are communication problems with the synchronization server.
pad.modals.looping.cause = Perhaps you connected through an incompatible firewall or proxy.
pad.modals.initsocketfail = Server is unreachable.
pad.modals.initsocketfail.explanation = Couldn't connect to the synchronization server.
pad.modals.initsocketfail.cause = This could be because of your browser or Internet connection. #sounds stupid!
pad.modals.initsocketfail.cause = This is probably due to a problem with your browser or your internet connection.
pad.modals.slowcommit = Disconnected.
pad.modals.slowcommit.explanation = The server is not responding.
pad.modals.slowcommit.cause = This could be due to problems with network connectivity.

78
src/locales/es.ini Normal file
View File

@ -0,0 +1,78 @@
; Exported from translatewiki.net
[es]
index.newPad = Nuevo Pad
index.createOpenPad = o puedes crear/abrir un Pad con el nombre:
pad.toolbar.bold.title = Negrita (Ctrl-B)
pad.toolbar.italic.title = Cursiva (Ctrl-I)
pad.toolbar.underline.title = Subrayado (Ctrl-U)
pad.toolbar.strikethrough.title = Tachado
pad.toolbar.ol.title = Lista ordenada
pad.toolbar.ul.title = Lista desordenada
pad.toolbar.indent.title = Sangrar
pad.toolbar.unindent.title = Desangrar
pad.toolbar.undo.title = Deshacer (Ctrl-Z)
pad.toolbar.redo.title = Rehacer (Ctrl-Y)
pad.toolbar.clearAuthorship.title = Eliminar los colores de los autores
pad.toolbar.import_export.title = Importar/Exportar a diferentes formatos de archivos
pad.toolbar.timeslider.title = Línea de tiempo
pad.toolbar.savedRevision.title = Revisiones guardadas
pad.toolbar.settings.title = Configuración
pad.toolbar.embed.title = Incrustar este pad
pad.toolbar.showusers.title = Mostrar los usuarios de este pad
pad.colorpicker.save = Guardar
pad.colorpicker.cancel = Cancelar
pad.loading = Cargando...
pad.settings.padSettings = Configuración del Pad
pad.settings.myView = Mi vista
pad.settings.stickychat = Chat siempre encima
pad.settings.colorcheck = Color de autoría
pad.settings.linenocheck = Números de línea
pad.settings.fontType = Tipografía:
pad.settings.fontType.normal = Normal
pad.settings.fontType.monospaced = Monoespacio
pad.settings.globalView = Vista global
pad.settings.language = Idioma:
pad.importExport.import_export = Importar/Exportar
pad.importExport.import = Subir cualquier texto o documento
pad.importExport.successful = ¡Operación exitosa!
; Fuzzy
pad.importExport.export = Exporta el pad actual como
pad.importExport.exporthtml = HTML
pad.importExport.exportplain = Texto plano
pad.importExport.exportword = Microsoft Word
pad.importExport.exportpdf = PDF
pad.importExport.exportopen = ODF (Open Document Format)
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.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.
pad.modals.unauth.explanation = Los permisos han cambiado mientras estabas viendo esta página. Intenta reconectar de nuevo.
pad.modals.looping = Desconectado.
pad.modals.looping.explanation = Estamos teniendo problemas con la sincronización en el servidor.
pad.modals.looping.cause = Quizás su conexión fluya a través de un proxy o un cortafuegos incompatible.
pad.modals.initsocketfail = Servidor incalcanzable.
pad.modals.initsocketfail.explanation = No se pudo conectar al sevidor de sincronización.
pad.modals.initsocketfail.cause = Puede ser a causa de tu navegador o de una caída en tu conexión de Internet.
pad.modals.slowcommit = Desconectado.
pad.modals.slowcommit.explanation = El servidor no responde.
pad.modals.slowcommit.cause = Puede deberse a problemas con tu conexión de red.
pad.modals.deleted = Borrado.
pad.modals.deleted.explanation = Este pad ha sido borrado.
pad.modals.disconnected = Has sido desconectado.
pad.modals.disconnected.explanation = Se perdió la conexión con el servidor
pad.modals.disconnected.cause = El servidor podría no estar disponible. Contacte con nosotros si esto continúa sucediendo.
pad.share = Compatir el pad
pad.share.readonly = Sólo lectura
pad.share.link = Enlace
pad.share.emebdcode = Incrustar URL
pad.chat = Chat
pad.chat.title = Abrir el chat para este pad.
timeslider.pageTitle = {{appTitle}} Línea de tiempo
timeslider.toolbar.returnbutton = Volver al pad
timeslider.toolbar.authors = Autores:
timeslider.toolbar.authorsList = Sin autores
timeslider.exportCurrent = Exportar la versión actual como:

49
src/locales/fi.ini Normal file
View File

@ -0,0 +1,49 @@
; Exported from translatewiki.net
; Author: Nike
[fi]
index.newPad = Uusi muistio
index.createOpenPad = tai avaa muistio nimellä:
pad.toolbar.bold.title = Lihavointi (Ctrl-B)
pad.toolbar.italic.title = Kursivointi (Ctrl-I)
pad.toolbar.underline.title = Alleviivaus (Ctrl-U)
pad.toolbar.strikethrough.title = Yliviivaus
pad.toolbar.ol.title = Numeroitu lista
pad.toolbar.ul.title = Numeroimaton lista
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.import_export.title = Tuo tai vie eri muotoihin
pad.toolbar.savedRevision.title = Tallennetut versiot
pad.toolbar.settings.title = Asetukset
pad.toolbar.embed.title = Upota muistio
pad.toolbar.showusers.title = Näytä muistion käyttäjät
pad.colorpicker.save = Tallenna
pad.colorpicker.cancel = Peru
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.linenocheck = Rivinumerot
pad.settings.fontType = Kirjasintyyppi:
pad.settings.fontType.normal = normaali
pad.settings.fontType.monospaced = tasalevyinen
pad.settings.language = Kieli:
pad.importExport.import_export = Tuonti/vienti
pad.importExport.exporthtml = HTML
pad.importExport.exportplain = Muotoilematon teksti
pad.importExport.exportword = Microsoft Word
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.share = Jaa muistio
pad.share.readonly = Vain luku
pad.share.link = Linkki
pad.share.emebdcode = Upotusosoite
pad.chat = Keskustelu
timeslider.toolbar.returnbutton = Palaa muistioon

View File

@ -1,7 +1,7 @@
; Exported from translatewiki.net
[fr]
index.newPad = Nouveau Pad
index.createOpenPad = ou créer/ouvrir un Pad intitulé
pad.toolbar.bold.title = Gras (Ctrl-B)
pad.toolbar.italic.title = Italique (Ctrl-I)
pad.toolbar.underline.title = Souligner (Ctrl-U)
@ -12,17 +12,15 @@ pad.toolbar.indent.title = Indenter
pad.toolbar.unindent.title = Désindenter
pad.toolbar.undo.title = Annuler (Ctrl-Z)
pad.toolbar.redo.title = Rétablir (Ctrl-Y)
pad.toolbar.clearAuthorship.title = Effacer les couleurs identifant les auteurs
pad.toolbar.clearAuthorship.title = Effacer les couleurs identifiant les auteurs
pad.toolbar.import_export.title = Importer/Exporter de/vers un format de fichier différent
pad.toolbar.timeslider.title = Navigateur d'historique
pad.toolbar.savedRevision.title = Versions enregistrées
pad.toolbar.settings.title = Paramètres
pad.toolbar.embed.title = Intégrer ce Pad
pad.toolbar.showusers.title = Afficher les utilisateurs du Pad
pad.colorpicker.save = Sauver
pad.colorpicker.cancel = Annuler
pad.loading = Chargement...
pad.settings.padSettings = Paramètres du Pad
pad.settings.myView = Ma vue
@ -31,14 +29,13 @@ pad.settings.colorcheck = Couleurs d'identification
pad.settings.linenocheck = Numéros des lignes
pad.settings.fontType = Type de police:
pad.settings.fontType.normal = Normal
pad.settings.fontType.monospaced = Monospace
pad.settings.fontType.monospaced = Monospace
pad.settings.globalView = Vue d'ensemble
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.exporthtml = HTML
pad.importExport.exportplain = Texte brut
@ -46,7 +43,6 @@ pad.importExport.exportword = Microsoft Word
pad.importExport.exportpdf = PDf
pad.importExport.exportopen = ODF (Open Document Format)
pad.importExport.exportdokuwiki = DokuWiki
pad.modals.connected = Connecté.
pad.modals.reconnecting = Reconnexion vers votre Pad...
pad.modals.forcereconnect = Forcer la reconnexion.
@ -60,7 +56,7 @@ pad.modals.looping.explanation = Nous éprouvons un problème de communication a
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.
pad.modals.initsocketfail.explanation = Impossible de se connecter au serveur de synchronisation.
pad.modals.initsocketfail.cause = La cause de ce problème peut être liée à votre fureteur web.
pad.modals.initsocketfail.cause = La cause de ce problème peut être liée à votre fureteur web.
pad.modals.slowcommit = Disconnected. Déconnecté
pad.modals.slowcommit.explanation = Le serveur ne répond pas.
pad.modals.slowcommit.cause = La cause de ce problème peut être liée à une erreur de connectivité du réseau.
@ -69,18 +65,14 @@ pad.modals.deleted.explanation = Ce Pad a été supprimé.
pad.modals.disconnected = Vous avez été déconnecté.
pad.modals.disconnected.explanation = La connexion au serveur a échoué.
pad.modals.disconnected.cause = Ce serveur est possiblement hors-ligne. Veuillez nous joindre si le problème persiste.
pad.share = Partager ce Pad
pad.share.readonly = Lecture seule
pad.share.link = Lien
pad.share.link = Lien
pad.share.emebdcode = Lien à intégrer
pad.chat = Messagerie
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.exportCurrent = Exporter version actuelle vers:

79
src/locales/nl.ini Normal file
View File

@ -0,0 +1,79 @@
; Exported from translatewiki.net
; Author: Siebrand
[nl]
index.newPad = Nieuw pad
index.createOpenPad = Maak of open pad met de naam:
pad.toolbar.bold.title = Vet (Ctrl-B)
pad.toolbar.italic.title = Cursief (Ctrl-I)
pad.toolbar.underline.title = Onderstrepen (Ctrl-U)
pad.toolbar.strikethrough.title = Doorhalen
pad.toolbar.ol.title = Geordende lijst
pad.toolbar.ul.title = Ongeordende lijst
pad.toolbar.indent.title = Inspringen
pad.toolbar.unindent.title = Inspringing verkleinen
pad.toolbar.undo.title = Ongedaan maken (Ctrl-Z)
pad.toolbar.redo.title = Opnieuw uitvoeren (Ctrl-Y)
pad.toolbar.clearAuthorship.title = Kleuren auteurs wissen
pad.toolbar.import_export.title = Naar/van andere opmaak exporteren/importeren
pad.toolbar.timeslider.title = Tijdlijn
pad.toolbar.savedRevision.title = Opgeslagen versies
pad.toolbar.settings.title = Instellingen
pad.toolbar.embed.title = Pad insluiten
pad.toolbar.showusers.title = Gebruikers van dit pad weergeven
pad.colorpicker.save = Opslaan
pad.colorpicker.cancel = Annuleren
pad.loading = Bezig met laden…
pad.settings.padSettings = Padinstellingen
pad.settings.myView = Mijn overzicht
pad.settings.stickychat = Chat altijd zichtbaar
pad.settings.colorcheck = Kleuren auteurs
pad.settings.linenocheck = Regelnummers
pad.settings.fontType = Lettertype:
pad.settings.fontType.normal = Normaal
pad.settings.fontType.monospaced = Monospace
pad.settings.globalView = Globaal overzicht
pad.settings.language = Taal:
pad.importExport.import_export = Importeren/exporteren
pad.importExport.import = Upload een tekstbestand of document
pad.importExport.successful = Afgerond
; Fuzzy
pad.importExport.export = Huidige pad exporteren als
pad.importExport.exporthtml = HTML
pad.importExport.exportplain = Tekst zonder opmaak
pad.importExport.exportword = Microsoft Word
pad.importExport.exportpdf = PDF
pad.importExport.exportopen = ODF (Open Document Format)
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.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.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.
pad.modals.looping.explanation = Er is een probleem opgetreden tijdens de communicatie met de synchronisatieserver.
pad.modals.looping.cause = Mogelijk gebruikt de server een niet compatibele firewall of proxy server.
pad.modals.initsocketfail = Server is niet bereikbaar.
pad.modals.initsocketfail.explanation = Het was niet mogelijk te verbinden met de synchronisatieserver.
pad.modals.initsocketfail.cause = Mogelijk komt dit door uw browser of internetverbinding.
pad.modals.slowcommit = Verbinding verbroken.
pad.modals.slowcommit.explanation = De server reageert niet.
pad.modals.slowcommit.cause = Dit komt mogelijk door netwerkproblemen.
pad.modals.deleted = Verwijderd.
pad.modals.deleted.explanation = Dit pad is verwijderd.
pad.modals.disconnected = Uw verbinding is verbroken.
pad.modals.disconnected.explanation = De verbinding met de server is verbroken
pad.modals.disconnected.cause = De server is mogelijk niet beschikbaar. Stel alstublieft de beheerder op de hoogte.
pad.share = Pad delen
pad.share.readonly = Alleen-lezen
pad.share.link = Verwijzing
pad.share.emebdcode = URL insluiten
pad.chat = Chatten
pad.chat.title = Chat voor dit pad opnenen
timeslider.pageTitle = Tijdlijn voor {{appTitle}}
timeslider.toolbar.returnbutton = Terug naar pad
timeslider.toolbar.authors = Auteurs:
timeslider.toolbar.authorsList = Geen auteurs
timeslider.exportCurrent = Huidige versie exporteren als:

View File

@ -1,5 +1,6 @@
var path = require("path");
var fs = require("fs");
var path = require("path")
, npm = require("npm")
, fs = require("fs");
exports.expressCreateServer = function (hook_name, args, cb) {
args.app.get('/tests/frontend/specs_list.js', function(req, res){
@ -17,7 +18,7 @@ exports.expressCreateServer = function (hook_name, args, cb) {
}
subPath = subPath.split("?")[0];
var filePath = path.normalize(__dirname + "/../../../../tests/frontend/")
var filePath = path.normalize(npm.root + "/../tests/frontend/")
filePath += subPath.replace("..", "");
return filePath;
}

View File

@ -1,12 +1,15 @@
var Globalize = require('globalize')
var languages = require('languages')
, fs = require('fs')
, path = require('path')
, express = require('express')
var localesPath = __dirname+"/../../locales";
var localeIndex = '[*]\r\n@import url(locales/en.ini)\r\n';
exports.availableLangs = {en: 'English'};
// Serve English strings directly with /locales.ini
var localeIndex = fs.readFileSync(localesPath+'/en.ini')+'\r\n';
// add language base 'en' to availableLangs
exports.availableLangs = {en: languages.getLanguageInfo('en')}
fs.readdir(localesPath, function(er, files) {
files.forEach(function(locale) {
@ -16,9 +19,8 @@ fs.readdir(localesPath, function(er, files) {
// build locale index
localeIndex += '['+locale+']\r\n@import url(locales/'+locale+'.ini)\r\n'
require('globalize/lib/cultures/globalize.culture.'+locale+'.js')
var culture = Globalize.cultures[locale];
exports.availableLangs[culture.name] = culture.nativeName;
// add info language {name, nativeName, direction} to availableLangs
exports.availableLangs[locale]=languages.getLanguageInfo(locale);
})
})
@ -30,4 +32,4 @@ exports.expressCreateServer = function(n, args) {
res.send(localeIndex);
})
}
}

View File

@ -7,7 +7,7 @@ module.exports = function (req, res, callback) {
// FIXME: Why is this ever undefined??
if (req.cookies === undefined) req.cookies = {};
securityManager.checkAccess(req.params.pad, req.cookies.sessionid, req.cookies.token, req.cookies.password, function(err, accessObj) {
securityManager.checkAccess(req.params.pad, req.cookies.sessionID, req.cookies.token, req.cookies.password, function(err, accessObj) {
if(ERR(err, callback)) return;
//there is access, continue

View File

@ -36,7 +36,7 @@
"tinycon" : "0.0.1",
"underscore" : "1.3.1",
"unorm" : "1.0.0",
"globalize" : "0.1.1"
"languages" : "0.1.1"
},
"bin": { "etherpad-lite": "./node/server.js" },
"devDependencies": {
@ -46,5 +46,5 @@
"engines" : { "node" : ">=0.6.0",
"npm" : ">=1.0"
},
"version" : "1.2.0"
"version" : "1.2.1"
}

View File

@ -131,7 +131,7 @@ document.webL10n = (function(window, document, undefined) {
// token expressions
var reBlank = /^\s*|\s*$/;
var reComment = /^\s*#|^\s*$/;
var reComment = /^\s*;|^\s*$/;// Use ; for comments!
var reSection = /^\s*\[(.*)\]\s*$/;
var reImport = /^\s*@import\s+url\((.*)\)\s*$/i;
var reSplit = /^([^=\s]*)\s*=\s*(.+)$/; // TODO: escape EOLs with '\'
@ -902,7 +902,7 @@ document.webL10n = (function(window, document, undefined) {
// browser-specific startup
if (document.addEventListener) { // modern browsers and IE9+
document.addEventListener('DOMContentLoaded', function() {
var lang = document.documentElement.lang || navigator.language;
var lang = document.documentElement.lang || navigator.language || navigator.userLanguage || 'en';
loadLocale(lang, translateFragment);
}, false);
} else if (window.attachEvent) { // IE8 and before (= oldIE)
@ -977,7 +977,7 @@ document.webL10n = (function(window, document, undefined) {
// startup for IE<9
window.attachEvent('onload', function() {
gTextProp = document.body.textContent ? 'textContent' : 'innerText';
var lang = document.documentElement.lang || window.navigator.userLanguage;
var lang = document.documentElement.lang || navigator.language || navigator.userLanguage || 'en';
loadLocale(lang, translateFragment);
});
}

View File

@ -259,7 +259,7 @@ linestylefilter.getRegexpFilter = function(regExp, tag)
linestylefilter.REGEX_WORDCHAR = /[\u0030-\u0039\u0041-\u005A\u0061-\u007A\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\u1FFF\u3040-\u9FFF\uF900-\uFDFF\uFE70-\uFEFE\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFDC]/;
linestylefilter.REGEX_URLCHAR = new RegExp('(' + /[-:@a-zA-Z0-9_.,~%+\/\\?=&#;()$]/.source + '|' + linestylefilter.REGEX_WORDCHAR.source + ')');
linestylefilter.REGEX_URLCHAR = new RegExp('(' + /[-:@a-zA-Z0-9_.,~%+\/\\?=&#!;()$]/.source + '|' + linestylefilter.REGEX_WORDCHAR.source + ')');
linestylefilter.REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt):\/\/|mailto:|www\.)/.source + linestylefilter.REGEX_URLCHAR.source + '*(?![:.,;])' + linestylefilter.REGEX_URLCHAR.source, 'g');
linestylefilter.getURLFilter = linestylefilter.getRegexpFilter(
linestylefilter.REGEX_URL, 'url');

View File

@ -23,8 +23,8 @@
<h1>Etherpad Lite Settings</h1>
<a href='https://github.com/Pita/etherpad-lite/wiki/Example-Production-Settings.JSON'>Example production settings template</a>
<a href='https://github.com/Pita/etherpad-lite/wiki/Example-Development-Settings.JSON'>Example development settings template</a>
<a href='https://github.com/ether/etherpad-lite/wiki/Example-Production-Settings.JSON'>Example production settings template</a>
<a href='https://github.com/ether/etherpad-lite/wiki/Example-Development-Settings.JSON'>Example development settings template</a>
<textarea class="settings"></textarea>
<input type="button" class="settingsButton" id="saveSettings" value="Save Settings">
<input type="button" class="settingsButton" id="restartEtherpad" value="Restart Etherpad">

View File

@ -33,6 +33,15 @@
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
<link rel="resource" type="application/l10n" href="locales.ini" />
<link rel="shortcut icon" href="<%=settings.favicon%>">
<script type="text/javascript">
(function(document) {
// Set language for l10n
var language = document.cookie.match(/language=(\w{2})/);
if(language) document.documentElement.lang = language[1];
})(document)
</script>
<script type="text/javascript" src="static/js/l10n.js" async></script>
<style>
html, body {
@ -184,14 +193,7 @@
return randomstring;
}
(function(document) {
// Set language for l10n
var language = document.cookie.match(/language=(\w{2})/);
if(language) document.documentElement.lang = language[1];
})(document)
// start the custom js
if (typeof customStart == "function") customStart();
</script>
<script type="text/javascript" src="static/js/l10n.js"></script>
</html>

View File

@ -32,11 +32,17 @@
<meta charset="utf-8">
<meta name="robots" content="noindex, nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
<link rel="shortcut icon" href="<%=settings.favicon%>">
<link rel="resource" type="application/l10n" href="../locales.ini" />
<link rel="shortcut icon" href="<%=settings.favicon%>">
<script type="text/javascript">
(function() {
// Set language for l10n
var language = document.cookie.match(/language=(\w{2})/);
if(language) document.documentElement.lang = language[1];
})();
</script>
<script type="text/javascript" src="../static/js/l10n.js" async></script>
<% e.begin_block("styles"); %>
<link href="../static/css/pad.css" rel="stylesheet">
@ -221,7 +227,7 @@
<td>
<select id="languagemenu">
<% for (lang in langs) { %>
<option value="<%=lang%>"><%=langs[lang]%></option>
<option value="<%=lang%>"><%=langs[lang].nativeName%></option>
<% } %>
</select>
</td>
@ -381,14 +387,9 @@
// call original error handler
if(typeof(originalHandler) == 'function') originalHandler.call(null, arguments);
};
// Set language for l10n
var language = document.cookie.match(/language=(\w{2})/);
if(language) document.documentElement.lang = language[1];
})();
</script>
<script type="text/javascript" src="../static/js/l10n.js"></script>
<script type="text/javascript" src="../static/js/require-kernel.js"></script>
<script type="text/javascript" src="../socket.io/socket.io.js"></script>

View File

@ -32,8 +32,16 @@
<meta charset="utf-8">
<meta name="robots" content="noindex, nofollow">
<link rel="shortcut icon" href="<%=settings.favicon%>">
<script type="text/javascript" src="../../static/js/l10n.js"></script>
<link rel="resource" type="application/l10n" href="../../locales.ini" />
<script type="text/javascript">
(function() {
// Set language for l10n
var language = document.cookie.match(/language=(\w{2})/);
if(language) document.documentElement.lang = language[1];
})();
</script>
<script type="text/javascript" src="../../static/js/l10n.js" async></script>
<link rel="stylesheet" href="../../static/css/pad.css">
<link rel="stylesheet" href="../../static/css/timeslider.css">
<link rel="stylesheet" href="../../static/custom/timeslider.css">
@ -169,15 +177,6 @@
</div>
</div>
<script type="text/javascript">
(function() {
// Set language for l10n
var language = document.cookie.match(/language=(\w{2})/);
if(language) document.documentElement.lang = language[1];
})();
</script>
<script type="text/javascript" src="../../static/js/l10n.js"></script>
<script type="text/javascript" src="../../static/js/require-kernel.js"></script>
<script type="text/javascript" src="../../socket.io/socket.io.js"></script>

View File

@ -188,9 +188,9 @@ body {
}
#stats {
position: absolute;
position: fixed;
top: 15px;
right: 10px;
right: 52%;
font-size: 12px;
margin: 0;
color: #888;

View File

@ -58,6 +58,13 @@ $(function(){
var WebdriverAndHtmlReporter = function(html_reporter){
return function(runner){
Base.call(this, runner);
// Scroll down test display after each test
mocha = $('#mocha')[0];
runner.on('test', function(){
mocha.scrollTop = mocha.scrollHeight;
});
//initalize the html reporter first
html_reporter(runner);

View File

@ -21,4 +21,27 @@ describe("urls", function(){
return inner$("div").first().find("a").length === 1;
}, 2000).done(done);
});
it("when you enter a url containing a !, it becomes clickable and contains the whole URL", function(done) {
var inner$ = helper.padInner$;
var chrome$ = helper.padChrome$;
//get the first text element out of the inner iframe
var firstTextElement = inner$("div").first();
var url = "http://etherpad.org/!foo";
// simulate key presses to delete content
firstTextElement.sendkeys('{selectall}'); // select all
firstTextElement.sendkeys('{del}'); // clear the first line
firstTextElement.sendkeys(url); // insert a URL
helper.waitFor(function(){
if(inner$("div").first().find("a").length === 1){ // if it contains an A link
if(inner$("div").first().find("a")[0].href === url){
return true;
}
};
}, 2000).done(done);
});
});

View File

@ -4,80 +4,67 @@ describe("Language select and change", function(){
helper.newPad(cb);
this.timeout(60000);
});
it("makes text german", function(done) {
var inner$ = helper.padInner$;
var chrome$ = helper.padChrome$;
//click on the settings button to make settings visible
var $settingsButton = chrome$(".buttonicon-settings");
$settingsButton.click();
//click the language button
var $language = chrome$("#languagemenu");
var $languageoption = $language.find("[value=de]");
//select german
$languageoption.attr('selected','selected');
$language.change();
helper.waitFor(function(){
var $boldButton = chrome$(".buttonicon-bold").parent();
//get the title of the bold button
var boldButtonTitle = $boldButton[0]["title"];
return boldButtonTitle !== undefined;
}).done(function(){
helper.waitFor(function() { return $language.val() == "de"})
.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();
});
});
it("makes text English", function(done) {
var inner$ = helper.padInner$;
var chrome$ = helper.padChrome$;
//click on the settings button to make settings visible
var $settingsButton = chrome$(".buttonicon-settings");
$settingsButton.click();
//click the language button
var $language = chrome$("#languagemenu");
var $languageoption = $language.find("[value=en]");
//select german
$languageoption.attr('selected','selected');
$language.change();
helper.waitFor(function(){
var $boldButton = chrome$(".buttonicon-bold").parent();
//get the title of the bold button
var boldButtonTitle = $boldButton[0]["title"];
return boldButtonTitle !== undefined;
}).done(function(){
helper.waitFor(function() { return $language.val() == "en";})
.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 English
expect(boldButtonTitle).to.be("Bold (Ctrl-B)");
done();
});
});
});
});