diff --git a/README.md b/README.md index 34a824ff2..71c0b3e1e 100644 --- a/README.md +++ b/README.md @@ -50,9 +50,9 @@ Update to the latest version with `git pull origin`, then run `bin\installOnWind ## GNU/Linux and other UNIX-like systems You'll need gzip, git, curl, libssl develop libraries, python and gcc. -*For Debian/Ubuntu*: `apt-get install gzip git-core curl python libssl-dev pkg-config build-essential` -*For Fedora/CentOS*: `yum install gzip git-core curl python openssl-devel && yum groupinstall "Development Tools"` -*For FreeBSD*: `portinstall node, npm, git (optional)` +- *For Debian/Ubuntu*: `apt-get install gzip git-core curl python libssl-dev pkg-config build-essential` +- *For Fedora/CentOS*: `yum install gzip git-core curl python openssl-devel && yum groupinstall "Development Tools"` +- *For FreeBSD*: `portinstall node, npm, git (optional)` Additionally, you'll need [node.js](http://nodejs.org) installed, Ideally the latest stable version, be careful of installing nodejs from apt. diff --git a/bin/installDeps.sh b/bin/installDeps.sh index 84f2e227f..a8bc88a87 100755 --- a/bin/installDeps.sh +++ b/bin/installDeps.sh @@ -36,8 +36,9 @@ hash npm > /dev/null 2>&1 || { #check npm version NPM_VERSION=$(npm --version) -if [ ! $(echo $NPM_VERSION | cut -d "." -f 1) = "1" ]; then - echo "You're running a wrong version of npm, you're using $NPM_VERSION, we need 1.x" >&2 +NPM_MAIN_VERSION=$(echo $NPM_VERSION | cut -d "." -f 1) +if [ $(echo $NPM_MAIN_VERSION) = "0" ]; then + echo "You're running a wrong version of npm, you're using $NPM_VERSION, we need 1.x or higher" >&2 exit 1 fi diff --git a/src/locales/ar.json b/src/locales/ar.json index 6e5d14bd5..0fa8c02b0 100644 --- a/src/locales/ar.json +++ b/src/locales/ar.json @@ -2,7 +2,8 @@ "@metadata": { "authors": [ "Ali1", - "Tux-tn" + "Tux-tn", + "Alami" ] }, "index.newPad": "باد جديد", @@ -17,6 +18,7 @@ "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": "حفظ المراجعة", @@ -50,6 +52,7 @@ "pad.importExport.exportpdf": "صيغة المستندات المحمولة", "pad.importExport.exportopen": "ODF (نسق المستند المفتوح)", "pad.importExport.exportdokuwiki": "دوکوويكي", + "pad.importExport.abiword.innerHTML": "لايمكنك الاستيراد إلا من نص عادي أو من تنسيقات إتش تي إم إل. للحصول على المزيد من ميزات الاستيراد المتقدمة، يرجى تثبيت أبيورد .", "pad.modals.connected": "متصل.", "pad.modals.reconnecting": "إعادة الاتصال ببادك", "pad.modals.forcereconnect": "فرض إعادة الاتصال", @@ -57,21 +60,31 @@ "pad.modals.userdup.explanation": "يبدو أن هذا الباد تم فتحه في أكثر من نافذة متصفح في هذا الحاسوب.", "pad.modals.userdup.advice": "إعادة الاتصال لإستعمال هذه النافذة بدلاً من الاخرى.", "pad.modals.unauth": "غير مخول", + "pad.modals.unauth.explanation": "لقد تغيرت الأذونات الخاصة بك أثناء عرض هذه الصفحة. حاول إعادة الاتصال.", + "pad.modals.looping.explanation": "هناك مشاكل في الاتصال مع ملقم التزامن.", + "pad.modals.looping.cause": "ربما كنت متصلاً من خلال وكيل أو جدار حماية غير متوافق.", "pad.modals.initsocketfail": "لا يمكن الوصول إلى الخادم", "pad.modals.initsocketfail.explanation": "تعذر الاتصال بخادم المزامنة.", + "pad.modals.initsocketfail.cause": "وهذا على الأرجح بسبب مشكلة في المستعرض الخاص بك أو الاتصال بإنترنت.", "pad.modals.slowcommit.explanation": "الخادم لا يستجيب.", "pad.modals.slowcommit.cause": "يمكن أن يكون هذا بسبب مشاكل في الاتصال بالشبكة.", + "pad.modals.badChangeset.explanation": "لقد صنفت إحدى عمليات التحرير التي قمت بها كعملية غير مسموح بها من قبل ملقم التزامن.", + "pad.modals.badChangeset.cause": "يمكن أن يكون هذا بسبب تكوين ملقم خاطئ أو بسبب سلوك آخر غير متوقع. يرجى الاتصال بمسؤول الخدمة إذا كنت تعتقد بأن هناك خطأ ما. حاول إعادة الاتصال لمتابعة التحرير.", + "pad.modals.corruptPad.explanation": "الباد الذي تحاول الوصول إليه تالف.", + "pad.modals.corruptPad.cause": "قد يكون هذا بسبب تكوين ملقم خاطئ أو بسبب سلوك آخر غير متوقع. يرجى الاتصال بمسؤول الخدمة.", "pad.modals.deleted": "محذوف.", "pad.modals.deleted.explanation": "تمت إزالة هذا الباد", "pad.modals.disconnected": "لم تعد متّصل.", "pad.modals.disconnected.explanation": "تم فقدان الإتصال بالخادم", - "pad.modals.disconnected.cause": "قد يكون الخادم غير متوفر. الرجاء إعلامنا إذا تكرر هذا.", + "pad.modals.disconnected.cause": "قد يكون الخادم غير متوفر. يرجى إعلام مسؤول الخدمة إذا كان هذا لا يزال يحدث.", + "pad.share": "شارك هذه الباد", "pad.share.readonly": "للقراءة فقط", "pad.share.link": "رابط", "pad.share.emebdcode": "URL للتضمين", "pad.chat": "دردشة", "pad.chat.title": "فتح الدردشة لهذا الباد", "pad.chat.loadmessages": "تحميل المزيد من الرسائل", + "timeslider.pageTitle": "{{appTitle}} متصفح التاريخ", "timeslider.toolbar.returnbutton": "العودة إلى الباد", "timeslider.toolbar.authors": "المؤلفون:", "timeslider.toolbar.authorsList": "بدون مؤلفين", @@ -92,14 +105,20 @@ "timeslider.month.october": "أكتوبر", "timeslider.month.november": "نوفمبر", "timeslider.month.december": "ديسمبر", - "pad.userlist.entername": "إدخل اسمك", + "timeslider.unnamedauthors": "بدون اسم {{num}} {[plural(num) واحد: كاتب، آخر: مؤلف]}", + "pad.savedrevs.marked": "هذا التنقيح محدد الآن كمراجعة محفوظة", + "pad.userlist.entername": "أدخل اسمك", "pad.userlist.unnamed": "غير مسمى", "pad.userlist.guest": "ضيف", "pad.userlist.deny": "رفض", "pad.userlist.approve": "موافقة", + "pad.editbar.clearcolors": "مسح ألوان التأليف أو المستند بأكمله؟", "pad.impexp.importbutton": "الاستيراد الآن", "pad.impexp.importing": "الاستيراد...", + "pad.impexp.confirmimport": "استيراد ملف سيؤدي للكتابة فوق النص الحالي بالباد. هل أنت متأكد من أنك تريد المتابعة؟", + "pad.impexp.convertFailed": "لم نتمكن من استيراد هذا الملف. يرجى استخدام تنسيق مستند مختلف، أو النسخ واللصق يدوياً", "pad.impexp.uploadFailed": "فشل التحميل، الرجاء المحاولة مرة أخرى", "pad.impexp.importfailed": "فشل الاستيراد", - "pad.impexp.copypaste": "الرجاء نسخ/لصق" + "pad.impexp.copypaste": "الرجاء نسخ/لصق", + "pad.impexp.exportdisabled": "تصدير التنسيق {{type}} معطل. يرجى الاتصال بمسؤول النظام الخاص بك للحصول على التفاصيل." } diff --git a/src/locales/en.json b/src/locales/en.json index 01d3ff4ff..d9b983895 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -2,16 +2,16 @@ "index.newPad": "New Pad", "index.createOpenPad": "or create/open a Pad with the name:", - "pad.toolbar.bold.title": "Bold (Ctrl-B)", - "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.bold.title": "Bold (Ctrl+B)", + "pad.toolbar.italic.title": "Italic (Ctrl+I)", + "pad.toolbar.underline.title": "Underline (Ctrl+U)", + "pad.toolbar.strikethrough.title": "Strikethrough (Ctrl+5)", + "pad.toolbar.ol.title": "Ordered list (Ctrl+Shift+N)", + "pad.toolbar.ul.title": "Unordered List (Ctrl+Shift+L)", "pad.toolbar.indent.title": "Indent (TAB)", "pad.toolbar.unindent.title": "Outdent (Shift+TAB)", - "pad.toolbar.undo.title": "Undo (Ctrl-Z)", - "pad.toolbar.redo.title": "Redo (Ctrl-Y)", + "pad.toolbar.undo.title": "Undo (Ctrl+Z)", + "pad.toolbar.redo.title": "Redo (Ctrl+Y)", "pad.toolbar.clearAuthorship.title": "Clear Authorship Colors", "pad.toolbar.import_export.title": "Import/Export from/to different file formats", "pad.toolbar.timeslider.title": "Timeslider", @@ -85,7 +85,7 @@ "pad.modals.disconnected": "You have been disconnected.", "pad.modals.disconnected.explanation": "The connection to the server was lost", "pad.modals.disconnected.cause": "The server may be unavailable. Please notify the service administrator if this continues to happen.", - + "pad.share": "Share this pad", "pad.share.readonly": "Read only", "pad.share.link": "Link", diff --git a/src/locales/es.json b/src/locales/es.json index 831b89c12..85abebf72 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -9,11 +9,12 @@ "Rubenwap", "VegaDark", "Vivaelcelta", - "Xuacu" + "Xuacu", + "Macofe" ] }, - "index.newPad": "Nuevo Pad", - "index.createOpenPad": "o crea/abre un Pad con el nombre:", + "index.newPad": "Nuevo pad", + "index.createOpenPad": "o crea/abre 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)", @@ -24,7 +25,7 @@ "pad.toolbar.unindent.title": "Eliminar sangría (Shift+TAB)", "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.clearAuthorship.title": "Eliminar los colores de autoría", "pad.toolbar.import_export.title": "Importar/Exportar a diferentes formatos de archivos", "pad.toolbar.timeslider.title": "Línea de tiempo", "pad.toolbar.savedRevision.title": "Guardar revisión", @@ -34,13 +35,13 @@ "pad.colorpicker.save": "Guardar", "pad.colorpicker.cancel": "Cancelar", "pad.loading": "Cargando...", - "pad.passwordRequired": "Necesitas una contraseña para acceder a este documento", - "pad.permissionDenied": "No tienes permiso para acceder a esta página", + "pad.passwordRequired": "Necesitas una contraseña para acceder a este pad", + "pad.permissionDenied": "No tienes permiso para acceder a este pad", "pad.wrongPassword": "La contraseña era incorrecta", - "pad.settings.padSettings": "Configuración del Pad", + "pad.settings.padSettings": "Configuración del pad", "pad.settings.myView": "Preferencias personales", - "pad.settings.stickychat": "Chat siempre encima", - "pad.settings.colorcheck": "Color de autoría", + "pad.settings.stickychat": "Chat siempre en pantalla", + "pad.settings.colorcheck": "Colores de autoría", "pad.settings.linenocheck": "Números de línea", "pad.settings.rtlcheck": "¿Leer contenido de derecha a izquierda?", "pad.settings.fontType": "Tipografía:", @@ -50,7 +51,7 @@ "pad.settings.language": "Idioma:", "pad.importExport.import_export": "Importar/Exportar", "pad.importExport.import": "Subir cualquier texto o documento", - "pad.importExport.importSuccessful": "¡Operación realizada con éxito!", + "pad.importExport.importSuccessful": "¡Éxito!", "pad.importExport.export": "Exporta el pad actual como:", "pad.importExport.exporthtml": "HTML", "pad.importExport.exportplain": "Texto plano", @@ -58,32 +59,32 @@ "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.importExport.abiword.innerHTML": "Sólo puedes importar formatos de texto plano o html. Para funciones más avanzadas instala abiword.", "pad.modals.connected": "Conectado.", "pad.modals.reconnecting": "Reconectando a tu pad..", - "pad.modals.forcereconnect": "Reconexión forzosa", + "pad.modals.forcereconnect": "Forzar reconexión", "pad.modals.userdup": "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.", - "pad.modals.unauth.explanation": "Los permisos han cambiado mientras estabas viendo esta página. Intenta reconectar de nuevo.", - "pad.modals.looping.explanation": "Estamos teniendo problemas con la sincronización en el servidor.", + "pad.modals.unauth.explanation": "Tus permisos han cambiado mientras estabas viendo esta página. Intenta reconectarte.", + "pad.modals.looping.explanation": "Hay problemas con el servidor de sincronización.", "pad.modals.looping.cause": "Puede deberse a que te conectes a través de un proxy o un cortafuegos incompatible.", "pad.modals.initsocketfail": "Servidor incalcanzable.", "pad.modals.initsocketfail.explanation": "No se pudo conectar al servidor 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.initsocketfail.cause": "Probablemente debido a un problema en tu navegador o en tu conexión a internet.", "pad.modals.slowcommit.explanation": "El servidor no responde.", "pad.modals.slowcommit.cause": "Puede deberse a problemas con tu conexión de red.", - "pad.modals.badChangeset.explanation": "Ha hecho una edición clasificada como ilegal por el servidor de sincronización.", - "pad.modals.badChangeset.cause": "Esto podría ser debido a una mala configuración del servidor o algún otro comportamiento inesperado. Póngase en contacto con el administrador del servicio, si siente que esto es un error. Intente volver a conectar con el fin de seguir editando.", - "pad.modals.corruptPad.explanation": "El pad que está intentando acceder está dañado.", - "pad.modals.corruptPad.cause": "Esto puede deberse a una mala configuración de servidor o algún otro comportamiento inesperado. Póngase en contacto con el administrador del servicio.", + "pad.modals.badChangeset.explanation": "Has hecho una edición clasificada como ilegal por el servidor de sincronización.", + "pad.modals.badChangeset.cause": "Esto podría deberse a una mala configuración del servidor o algún otro comportamiento inesperado. Contacta al administrador del servicio, si piensas que esto es un error. Intenta reconectarte con el fin de seguir editando.", + "pad.modals.corruptPad.explanation": "El pad que intentas acceder está dañado.", + "pad.modals.corruptPad.cause": "Esto puede deberse a una mala configuración del servidor o algún otro comportamiento inesperado. Contacta al administrador del servicio.", "pad.modals.deleted": "Borrado.", "pad.modals.deleted.explanation": "Este pad ha sido borrado.", - "pad.modals.disconnected": "Has sido desconectado.", + "pad.modals.disconnected": "Te has 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.modals.disconnected.cause": "El servidor podría no estar disponible. Contacta al administrador del servicio si esto continúa sucediendo.", + "pad.share": "Compatir este pad", "pad.share.readonly": "Sólo lectura", "pad.share.link": "Enlace", "pad.share.emebdcode": "Incrustar URL", @@ -118,13 +119,13 @@ "pad.userlist.guest": "Invitado", "pad.userlist.deny": "Denegar", "pad.userlist.approve": "Aprobar", - "pad.editbar.clearcolors": "¿Desea borrar el color de los autores en todo el documento?", - "pad.impexp.importbutton": "Importar", + "pad.editbar.clearcolors": "¿Quieres borrar los colores de autoría en todo el documento?", + "pad.impexp.importbutton": "Importar ahora", "pad.impexp.importing": "Importando...", - "pad.impexp.confirmimport": "Al importar un fichero se borrará el contenido actual del documento. ¿Quiere continuar?", - "pad.impexp.convertFailed": "No pudimos importar este fichero. Intentalo con otro formato diferente o copia y pega manualmente.", - "pad.impexp.uploadFailed": "El envío del fichero falló. Intentelo de nuevo.", + "pad.impexp.confirmimport": "Al importar un archivo se borrará el contenido actual del pad. ¿Estás seguro de que quieres continuar?", + "pad.impexp.convertFailed": "No pudimos importar este archivo. Inténtalo con un formato diferente o copia y pega manualmente.", + "pad.impexp.uploadFailed": "El envío falló. Intentalo de nuevo.", "pad.impexp.importfailed": "Fallo al importar", - "pad.impexp.copypaste": "Intente copiar y pegar", - "pad.impexp.exportdisabled": "La exportación al formato {{type}} format está desactivada. Contacte con su administrador de sistemas." + "pad.impexp.copypaste": "Intenta copiar y pegar", + "pad.impexp.exportdisabled": "La exportación al formato {{type}} está desactivada. Contacta a tu administrador de sistemas." } diff --git a/src/locales/ko.json b/src/locales/ko.json index 16a478f97..1fed980f8 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -2,7 +2,8 @@ "@metadata": { "authors": [ "Hym411", - "아라" + "아라", + "Revi" ] }, "index.newPad": "새 패드", diff --git a/src/locales/mn.json b/src/locales/mn.json new file mode 100644 index 000000000..4b418bef4 --- /dev/null +++ b/src/locales/mn.json @@ -0,0 +1,76 @@ +{ + "@metadata": { + "authors": [ + "MongolWiki", + "Wisdom" + ] + }, + "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.undo.title": "Буцаах (Ctrl-Z)", + "pad.toolbar.redo.title": "Undo -ын эсрэг (Ctrl-Y)", + "pad.toolbar.settings.title": "Тохиргоо", + "pad.colorpicker.save": "Хадгалах", + "pad.colorpicker.cancel": "Цуцлах", + "pad.loading": "Уншиж байна...", + "pad.settings.padSettings": "Падын тохиргоо", + "pad.settings.linenocheck": "Мөрийн дугаар", + "pad.settings.fontType": "Фонтын төрөл:", + "pad.settings.fontType.normal": "Ердийн", + "pad.settings.fontType.monospaced": "Зай ихтэй фонт", + "pad.settings.language": "Хэл:", + "pad.importExport.import_export": "Импорт/Экспорт", + "pad.importExport.import": "Бичвэр, текст файл оруулах", + "pad.importExport.importSuccessful": "Амжилттай!", + "pad.importExport.exportplain": "Цулгаа бичвэр", + "pad.importExport.exportpdf": "PDF файл", + "pad.importExport.exportopen": "ODF файл", + "pad.modals.connected": "Холбогдсон.", + "pad.modals.unauth": "Үл зөвшөөрөгдсөн", + "pad.modals.initsocketfail": "Сервер холбогдох боломжгүй.", + "pad.modals.slowcommit.explanation": "Сервер хариу өгөхгүй байна.", + "pad.modals.deleted": "Устгагдсан", + "pad.modals.deleted.explanation": "Энэ паб устсан байна.", + "pad.modals.disconnected": "Таны холболт салсан байна.", + "pad.modals.disconnected.explanation": "Серверын холболт салсан байна", + "pad.share": "Энэ падыг тараах", + "pad.share.readonly": "Зөвхөн унших", + "pad.share.link": "Холбоос", + "pad.share.emebdcode": "URL хавсаргах", + "pad.chat": "Чат", + "pad.chat.loadmessages": "Нэмэж мессеж оруулах", + "timeslider.toolbar.returnbutton": "Падруу буцах", + "timeslider.toolbar.authors": "Зохиогч:", + "timeslider.toolbar.authorsList": "Зохиогчгүй", + "timeslider.toolbar.exportlink.title": "Экспорт", + "timeslider.exportCurrent": "Энэ хувилбарыг экспортлохдоо:", + "timeslider.version": "Хувилбар {{version}}", + "timeslider.saved": "{{year}}-ы {{month}}-н {{day}}-нд да;галсан.", + "timeslider.dateformat": "{{month}}/{{day}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Нэгдүгээр сар", + "timeslider.month.february": "Хоёрдугаар сар", + "timeslider.month.march": "Гуравдугаар сар", + "timeslider.month.april": "Дөрөвдүгээр сар", + "timeslider.month.may": "Тавдугаар сар", + "timeslider.month.june": "Зургаадугаар сар", + "timeslider.month.july": "Долоодугаар сар", + "timeslider.month.august": "Наймдугаар сар", + "timeslider.month.september": "Есдүгээр сар", + "timeslider.month.october": "Аравдугаар сар", + "timeslider.month.november": "Арваннэгдүгээр сар", + "timeslider.month.december": "Арванхоёрдугаар сар", + "pad.savedrevs.marked": "Энэ хувилбар хадгалагдаагүй байна", + "pad.userlist.entername": "Нэрээ бичнэ үү", + "pad.userlist.unnamed": "нэргүй", + "pad.userlist.guest": "Зочин", + "pad.userlist.deny": "Үл зөвшөөр", + "pad.userlist.approve": "Зөвшөөр", + "pad.impexp.importbutton": "Одоо импорт хий", + "pad.impexp.importing": "Импортлож байна...", + "pad.impexp.importfailed": "Импортлоход алдаа", + "pad.impexp.copypaste": "Хуулаад тавина уу" +} diff --git a/src/locales/nap.json b/src/locales/nap.json new file mode 100644 index 000000000..6ba696fce --- /dev/null +++ b/src/locales/nap.json @@ -0,0 +1,71 @@ +{ + "@metadata": { + "authors": [ + "Chelin" + ] + }, + "index.newPad": "Novo Pad", + "index.createOpenPad": "o crià o apre nu Pad cu 'o nomme:", + "pad.toolbar.bold.title": "Grassetto (Ctrl-B)", + "pad.toolbar.italic.title": "Cursivo (Ctrl-I)", + "pad.toolbar.underline.title": "Sottolineato (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Barrato", + "pad.toolbar.ol.title": "Ennece nummerato", + "pad.toolbar.ul.title": "Ennece puntato", + "pad.toolbar.indent.title": "Rientro (TAB)", + "pad.toolbar.unindent.title": "Riduce rientro (Shift+TAB)", + "pad.toolbar.undo.title": "Annulla (Ctrl-Z)", + "pad.toolbar.redo.title": "Ripete (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Elimina 'e culure ca 'ndicanno 'e auture", + "pad.toolbar.import_export.title": "'Mporta/esporta 'e/a diverse furmate 'e file", + "pad.toolbar.timeslider.title": "Presentazzione cronologgia", + "pad.toolbar.savedRevision.title": "Sarva revisione", + "pad.toolbar.settings.title": "Mpustaziune", + "pad.colorpicker.save": "Sarva", + "pad.colorpicker.cancel": "Canciella", + "pad.loading": "Carecamiento 'n curso…", + "pad.passwordRequired": "Pe' accede a chisto Pad è necessaria 'na password", + "pad.permissionDenied": "Nun se dispunne d\"e permisse necessare pe' accede a chisto Pad", + "pad.wrongPassword": "'A password è sbagliata", + "pad.settings.padSettings": "Mpostazzione d\"o pad", + "pad.settings.fontType.normal": "Nurmale", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.modals.connected": "Cunnesso.", + "pad.modals.reconnecting": "Ricunnessione ô pad 'n curso...", + "pad.modals.forcereconnect": "Forza 'a ricunnessione", + "pad.modals.userdup": "Aprito 'n n'ata fenesta", + "pad.modals.unauth": "Nun autorizzato", + "pad.modals.deleted": "Canciellato.", + "timeslider.pageTitle": "Cronologgia {{appTitle}}", + "timeslider.toolbar.returnbutton": "Ritorna ô Pad", + "timeslider.toolbar.authors": "Auture:", + "timeslider.toolbar.authorsList": "Nisciun autore", + "timeslider.toolbar.exportlink.title": "Espurta", + "timeslider.exportCurrent": "Espurta 'a verzione corrente comme:", + "timeslider.version": "Verzione {{version}}", + "timeslider.saved": "Sarvato {{day}} {{month}} {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Jennaro", + "timeslider.month.february": "Frevaro", + "timeslider.month.march": "Màrzo", + "timeslider.month.april": "Abbrile", + "timeslider.month.may": "Màjo", + "timeslider.month.june": "Giùgno", + "timeslider.month.july": "Luglio", + "timeslider.month.august": "Aùsto", + "timeslider.month.september": "Settembre", + "timeslider.month.october": "Ottovre", + "timeslider.month.november": "Nuvembre", + "timeslider.month.december": "Dicembre", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: autore, other: auture ]} senza nomme", + "pad.userlist.entername": "'Nserisce 'o tujo nomme", + "pad.userlist.unnamed": "senza nomme", + "pad.userlist.guest": "Ospite", + "pad.userlist.deny": "Nega", + "pad.userlist.approve": "Appruva", + "pad.impexp.importbutton": "'Mpurta mmo", + "pad.impexp.importing": "'Mpurtazzione 'n curso..." +} diff --git a/src/locales/pa.json b/src/locales/pa.json index 9a38bef67..55ce5e6c1 100644 --- a/src/locales/pa.json +++ b/src/locales/pa.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "Aalam" + "Aalam", + "Babanwalia" ] }, "index.newPad": "ਨਵਾਂ ਪੈਡ", @@ -12,7 +13,8 @@ "pad.toolbar.strikethrough.title": "ਵਿੰਨ੍ਹੋ ਵਿਨੋ", "pad.toolbar.ol.title": "ਲੜੀਵਾਰ ਲਿਸਟ", "pad.toolbar.ul.title": "ਬਿਨ-ਲੜੀਬੱਧ ਸੂਚੀ", - "pad.toolbar.indent.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": "ਪਰਮਾਣਕਿਤਾ ਰੰਗ ਸਾਫ਼ ਕਰੋ", @@ -22,7 +24,7 @@ "pad.toolbar.settings.title": "ਸੈਟਿੰਗ", "pad.toolbar.embed.title": "ਇਹ ਪੈਡ ਸਾਂਝਾ ਤੇ ਇੰਬੈੱਡ ਕਰੋ", "pad.toolbar.showusers.title": "ਇਹ ਪੈਡ ਉੱਤੇ ਯੂਜ਼ਰ ਵੇਖਾਓ", - "pad.colorpicker.save": "ਸੰਭਾਲੋ", + "pad.colorpicker.save": "ਸਾਂਭੋ", "pad.colorpicker.cancel": "ਰੱਦ ਕਰੋ", "pad.loading": "…ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ", "pad.passwordRequired": "ਇਹ ਪੈਡ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ ਪਾਸਵਰਡ ਚਾਹੀਦਾ ਹੈ", @@ -31,6 +33,7 @@ "pad.settings.padSettings": "ਪੈਡ ਸੈਟਿੰਗ", "pad.settings.myView": "ਮੇਰੀ ਝਲਕ", "pad.settings.stickychat": "ਹਮੇਸ਼ਾ ਸਕਰੀਨ ਉੱਤੇ ਗੱਲ ਕਰੋ", + "pad.settings.colorcheck": "ਲੇਖਕੀ ਰੰਗ", "pad.settings.linenocheck": "ਲਾਈਨ ਨੰਬਰ", "pad.settings.rtlcheck": "ਸਮੱਗਰੀ ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਪੜ੍ਹਨੀ ਹੈ?", "pad.settings.fontType": "ਫੋਂਟ ਕਿਸਮ:", @@ -48,18 +51,31 @@ "pad.importExport.exportpdf": "ਪੀਡੀਐਫ", "pad.importExport.exportopen": "ODF (ਓਪਨ ਡੌਕੂਮੈਂਟ ਫਾਰਮੈਟ)", "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "ਤੁਸੀਂ ਸਿਰਫ਼ ਸਾਦੀਆਂ ਲਿਖਤੀ ਜਾਂ ਐੱਚ.ਟੀ.ਐੱਮ.ਐੱਲ. ਰੂਪ-ਰੇਖਾਵਾਂ ਤੋਂ ਦਰਾਮਦ ਕਰ ਸਕਦੇ ਹੋ। ਹੋਰ ਉੱਨਤ ਦਰਾਮਦੀ ਗੁਣਾਂ ਵਾਸਤੇ ਮਿਹਰਬਾਨੀ ਕਰਕੇ ਐਬੀਵਰਡ ਥਾਪੋ।", "pad.modals.connected": "ਕੁਨੈਕਟ ਹੈ।", "pad.modals.reconnecting": "..ਤੁਹਾਡੇ ਪੈਡ ਨਾਲ ਮੁੜ-ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ", "pad.modals.forcereconnect": "ਧੱਕੇ ਨਾਲ ਮੁੜ-ਕੁਨੈਕਟ ਕਰੋ", "pad.modals.userdup": "ਹੋਰ ਵਿੰਡੋ ਵਿੱਚ ਖੁੱਲ੍ਹਿਆ ਹੈ", + "pad.modals.userdup.explanation": "ਇਹ ਪੈਡ ਇਸ ਕੰਪਿਊਟਰ 'ਤੇ ਇੱਕ ਤੋਂ ਵੱਧ ਫਰੋਲੂ ਬਾਰੀ ਵਿੱਚ ਖੁੱਲ੍ਹਿਆ ਜਾਪਦਾ ਹੈ।", + "pad.modals.userdup.advice": "ਸਗੋਂ ਇਹ ਬਾਰੀ ਵਰਤਣ ਵਾਸਤੇ ਮੁੜ ਜੁੜੋ।", "pad.modals.unauth": "ਪਰਮਾਣਿਤ ਨਹੀਂ ਹੈ", + "pad.modals.unauth.explanation": "ਇਹ ਸਫ਼ਾ ਵੇਖਦੇ-ਵੇਖਦੇ ਤੁਹਾਨੂੰ ਮਿਲ਼ੀਆਂ ਇਜਾਜ਼ਤਾਂ ਬਦਲ ਗਈਆਂ ਹਨ। ਮੁੜ ਜੁੜਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।", + "pad.modals.looping.explanation": "ਇੱਕਰੂਪੀ ਸਰਵਰ ਨਾਲ਼ ਸੰਚਾਰੀ ਔਕੜਾਂ ਆ ਰਹੀਆਂ ਹਨ।", + "pad.modals.looping.cause": "ਸ਼ਾਇਦ ਤੁਸੀਂ ਕਿਸੇ ਅਢੁਕਵੀਂ ਸੁਰੱਖਿਆ ਪ੍ਰਨਾਲ਼ੀ ਜਾਂ ਪ੍ਰਾਕਸੀ ਰਾਹੀਂ ਜੁੜੇ ਹੋ।", "pad.modals.initsocketfail": "ਸਰਵਰ ਪਹੁੰਚ ਵਿੱਚ ਨਹੀਂ ਹੈ।", + "pad.modals.initsocketfail.explanation": "ਇੱਕਰੂਪੀ ਸਰਵਰ ਨਾਲ਼ ਰਾਬਤਾ ਨਹੀਂ ਬਣ ਸਕਿਆ।", + "pad.modals.initsocketfail.cause": "ਇਹ ਸ਼ਾਇਦ ਤੁਹਾਡੇ ਫਰੋਲੂ ਜਾਂ ਇੰਟਰਨੈੱਟ ਜੋੜ ਦੀਆਂ ਗੁੰਝਲਾਂ ਕਰਕੇ ਹੋ ਰਿਹਾ ਹੈ।", "pad.modals.slowcommit.explanation": "ਸਰਵਰ ਜਵਾਬ ਨਹੀਂ ਦੇ ਰਿਹਾ ਹੈ।", "pad.modals.slowcommit.cause": "ਇਹ ਨੈੱਟਵਰਕ ਕੁਨੈਕਸ਼ਨ ਨਾਲ ਸਮੱਸਿਆ ਕਰਕੇ ਹੋ ਸਕਦਾ ਹੈ।", + "pad.modals.badChangeset.explanation": "ਤੁਹਾਡੇ ਵੱਲੋਂ ਕੀਤੀ ਇੱਕ ਸੋਧ ਨੂੰ ਇੱਕਰੂਪੀ ਸਰਵਰ ਨੇ ਗ਼ੈਰ-ਕਨੂੰਨੀ ਕਰਾਰ ਦਿੱਤਾ ਹੈ।", + "pad.modals.badChangeset.cause": "ਇਹ ਸਿਸਟਮ ਦੀ ਕਿਸੇ ਗ਼ਲਤ ਨੁਹਾਰ ਜਾਂ ਕੋਈ ਹੋਰ ਅਣਸੋਚੇ ਵਤੀਰਾ ਕਰਕੇ ਵਾਪਰ ਸਕਦਾ ਹੈ। ਜੇਕਰ ਤੁਹਾਨੂੰ ਇਹ ਇੱਕ ਦੋਸ਼ ਲੱਗਦਾ ਹੈ ਤਾਂ ਮਿਹਰਬਾਨੀ ਕਰਕੇ ਆਪਣੇ ਸਿਸਟਮ ਦੇ ਪ੍ਰਬੰਧਕ ਨਾਲ਼ ਰਾਬਤਾ ਬਣਾਉ। ਸੋਧ ਜਾਰੀ ਰੱਖਣ ਵਾਸਤੇ ਮੁੜ ਜੁੜੋ।", + "pad.modals.corruptPad.explanation": "ਜਿਸ ਪੈਡ ਤੱਕ ਤੁਸੀਂ ਪਹੁੰਚਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਉਹ ਖੋਟਾ ਹੈ।", + "pad.modals.corruptPad.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": "ਲਿੰਕ", @@ -88,7 +104,7 @@ "timeslider.month.october": "ਅਕਤੂਬਰ", "timeslider.month.november": "ਨਵੰਬਰ", "timeslider.month.december": "ਦਸੰਬਰ", - "timeslider.unnamedauthors": "{{num}} ਬੇਨਾਮ ਲੇਖਕ", + "timeslider.unnamedauthors": "{{num}} ਬੇਨਾਮ {[plural(num) one: ਲੇਖਕ, other: ਲੇਖਕ ]}", "pad.savedrevs.marked": "ਇਹ ਰੀਵਿਜ਼ਨ ਨੂੰ ਹੁਣ ਸੰਭਾਲੇ ਹੋਏ ਰੀਵਿਜ਼ਨ ਵਜੋਂ ਮੰਨਿਆ ਗਿਆ ਹੈ", "pad.userlist.entername": "ਆਪਣਾ ਨਾਂ ਦਿਉ", "pad.userlist.unnamed": "ਬੇਨਾਮ", @@ -98,7 +114,10 @@ "pad.editbar.clearcolors": "ਪੂਰੇ ਦਸਾਤਵੇਜ਼ ਉੱਤੇ ਪਰਮਾਣਕਿਤਾ ਰੰਗ ਸਾਫ਼ ਕਰਨੇ ਹਨ?", "pad.impexp.importbutton": "ਹੁਣੇ ਇੰਪੋਰਟ ਕਰੋ", "pad.impexp.importing": "...ਇੰਪੋਰਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ", + "pad.impexp.confirmimport": "ਕੋਈ ਫ਼ਾਈਲ ਦਰਾਮਦ ਕਾਰਨ ਨਾਲ਼ ਪੈਡ ਦੀ ਮੌਜੂਦਾ ਲਿਖਤ ਉੱਤੇ ਲਿਖਿਆ ਜਾਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਸੱਚੀਂ ਇਹ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?", + "pad.impexp.convertFailed": "ਅਸੀਂ ਇਸ ਫ਼ਾਈਲ ਦੀ ਦਰਾਮਦ ਨਹੀਂ ਕਰ ਸਕੇ। ਮਿਹਰਬਾਨੀ ਕਰਕੇ ਕੋਈ ਵੱਖਰੀ ਦਸਤਾਵੇਜ਼ੀ ਰੂਪ-ਰੇਖਾ ਵਰਤੋ ਜਾਂ ਹੱਥੀਂ ਨਕਲ-ਚੇਪੀ ਕਰੋ।", "pad.impexp.uploadFailed": "ਅੱਪਲੋਡ ਲਈ ਫੇਲ੍ਹ ਹੈ, ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।", "pad.impexp.importfailed": "ਇੰਪੋਰਟ ਫੇਲ੍ਹ ਹੈ", - "pad.impexp.copypaste": "ਕਾਪੀ ਕਰੋ ਚੇਪੋ ਜੀ" + "pad.impexp.copypaste": "ਕਾਪੀ ਕਰੋ ਚੇਪੋ ਜੀ", + "pad.impexp.exportdisabled": "{{type}} ਰੂਪ-ਰੇਖਾ ਵਜੋਂ ਬਰਾਮਦ ਕਰਨਾ ਬੰਦ ਹੈ। ਵੇਰਵੇ ਵਾਸਤੇ ਮਿਹਰਬਾਨੀ ਕਰਕੇ ਆਪਣੇ ਸਿਸਟਮ ਦੇ ਪ੍ਰਬੰਧਕ ਨਾਲ਼ ਰਾਬਤਾ ਬਣਾਉ।" } diff --git a/src/locales/pt-br.json b/src/locales/pt-br.json index a687b22a4..333d59fbd 100644 --- a/src/locales/pt-br.json +++ b/src/locales/pt-br.json @@ -7,7 +7,8 @@ "TheGabrielZaum", "Titoncio", "Tuliouel", - "Rafaelff" + "Rafaelff", + "Dianakc" ] }, "index.newPad": "Nova Nota", @@ -83,7 +84,7 @@ "pad.modals.disconnected.cause": "O servidor pode estar indisponível. Por favor, notifique o administrador caso isso continue.", "pad.share": "Compartilhar esta nota", "pad.share.readonly": "Somente leitura", - "pad.share.link": "Ligação", + "pad.share.link": "Link", "pad.share.emebdcode": "Incorporar o URL", "pad.chat": "Bate-papo", "pad.chat.title": "Abrir o bate-papo desta nota.", diff --git a/src/node/handler/ExportHandler.js b/src/node/handler/ExportHandler.js index a748d3f2e..5bedcce22 100644 --- a/src/node/handler/ExportHandler.js +++ b/src/node/handler/ExportHandler.js @@ -52,7 +52,7 @@ exports.doExport = function(req, res, padId, type) hooks.aCallFirst("exportFileName", padId, function(err, hookFileName){ // if fileName is set then set it to the padId, note that fileName is returned as an array. - if(hookFileName) fileName = hookFileName; + if(hookFileName.length) fileName = hookFileName; //tell the browser that this is a downloadable file diff --git a/src/node/utils/toolbar.js b/src/node/utils/toolbar.js index a4ee202c9..e8d02dd6f 100644 --- a/src/node/utils/toolbar.js +++ b/src/node/utils/toolbar.js @@ -99,8 +99,8 @@ _.extend(Button.prototype, { "data-key": this.attributes.command, }; return tag("li", liAttributes, - tag("a", { "class": this.grouping }, - tag("span", { "class": " "+ this.attributes.class, "data-l10n-id": this.attributes.localizationId }) + tag("a", { "class": this.grouping, "data-l10n-id": this.attributes.localizationId }, + tag("span", { "class": " "+ this.attributes.class }) ) ); } @@ -203,13 +203,13 @@ module.exports = { settings: defaultButtonAttributes("settings"), embed: defaultButtonAttributes("embed"), showusers: defaultButtonAttributes("showusers"), - + timeslider_export: { command: "import_export", localizationId: "timeslider.toolbar.exportlink.title", class: "buttonicon buttonicon-import_export" }, - + timeslider_returnToPad: { command: "timeslider_returnToPad", localizationId: "timeslider.toolbar.returnbutton", diff --git a/src/static/css/fontawesome-etherpad.css b/src/static/css/fontawesome-etherpad.css new file mode 100644 index 000000000..13f28f2bf --- /dev/null +++ b/src/static/css/fontawesome-etherpad.css @@ -0,0 +1,76 @@ +@font-face { + font-family: 'fontawesome-etherpad'; + src: url('../font/fontawesome-etherpad.eot?81419457'); + src: url('../font/fontawesome-etherpad.eot?81419457#iefix') format('embedded-opentype'), + url('../font/fontawesome-etherpad.woff?81419457') format('woff'), + url('../font/fontawesome-etherpad.ttf?81419457') format('truetype'), + url('../font/fontawesome-etherpad.svg?81419457#fontawesome-etherpad') format('svg'); + font-weight: normal; + font-style: normal; +} +/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ +/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ +/* +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: 'fontawesome-etherpad'; + src: url('../font/fontawesome-etherpad.svg?81419457#fontawesome-etherpad') format('svg'); + } +} +*/ + + [class^="icon-"]:before, [class*=" icon-"]:before { + font-family: "fontawesome-etherpad"; + font-style: normal; + font-weight: normal; + speak: none; + + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: .2em; + text-align: center; + /* opacity: .8; */ + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + + /* Animation center compensation - margins should be symmetric */ + /* remove if not needed */ + margin-left: .2em; + + /* you can be more comfortable with increased icons size */ + /* font-size: 120%; */ + + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ +} + +.icon-users:before { content: '\e800'; } /* '' */ +.icon-star:before { content: '\e801'; } /* '' */ +.icon-cog:before { content: '\e802'; } /* '' */ +.icon-bold:before { content: '\e803'; } /* '' */ +.icon-italic:before { content: '\e804'; } /* '' */ +.icon-indent-left:before { content: '\e805'; } /* '' */ +.icon-indent-right:before { content: '\e806'; } /* '' */ +.icon-list-bullet:before { content: '\e807'; } /* '' */ +.icon-list-numbered:before { content: '\e808'; } /* '' */ +.icon-strike:before { content: '\e809'; } /* '' */ +.icon-underline:before { content: '\e80a'; } /* '' */ +.icon-cw:before { content: '\e80b'; } /* '' */ +.icon-ccw:before { content: '\e80c'; } /* '' */ +.icon-clock:before { content: '\e80d'; } /* '' */ +.icon-eye-off:before { content: '\e80e'; } /* '' */ +.icon-eye:before { content: '\e80f'; } /* '' */ +.icon-play:before { content: '\e810'; } /* '' */ +.icon-fast-bw:before { content: '\e811'; } /* '' */ +.icon-fast-fw:before { content: '\e812'; } /* '' */ +.icon-pause:before { content: '\e813'; } /* '' */ +.icon-glass:before { content: '\e814'; } /* '' */ +.icon-code:before { content: '\e815'; } /* '' */ +.icon-exchange:before { content: '\e816'; } /* '' */ +.icon-chat:before { content: '\e817'; } /* '' */ \ No newline at end of file diff --git a/src/static/css/pad.css b/src/static/css/pad.css index 4053ebbad..599b9fd41 100644 --- a/src/static/css/pad.css +++ b/src/static/css/pad.css @@ -73,6 +73,10 @@ a img { .toolbar ul li { float: left; margin-left: 2px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } .toolbar ul li.separator { border: inherit; @@ -160,15 +164,16 @@ a img { border: 1px solid #ccc; outline: none; } -#usericon a { +li[data-key=showusers] > a { min-width: 30px; text-align: left; } -#usericon a #online_count { +li[data-key=showusers] > a #online_count { color: #777; - font-size: 10px; + font-size: 11px; position: relative; top: 2px; + padding-left: 2px; } #editorcontainer { position: absolute; @@ -664,64 +669,68 @@ table#otheruserstable { .buttonicon { width: 16px; height: 16px; - background-image: url('../../static/img/etherpad_lite_icons.png'); - background-repeat: no-repeat; display: inline-block; vertical-align: middle; + + font-family: "fontawesome-etherpad"; + font-size: 15px; + font-style: normal; + font-weight: normal; + color: #666; } -.buttonicon-bold { - background-position: 0px -116px +.buttonicon-bold:before { + content: "\e803"; } -.buttonicon-italic { - background-position: 0px 0px +.buttonicon-italic:before { + content: "\e804"; } -.buttonicon-underline { - background-position: 0px -236px +.buttonicon-underline:before { + content: "\e80a"; } -.buttonicon-strikethrough { - background-position: 0px -200px +.buttonicon-strikethrough:before { + content: "\e809"; } -.buttonicon-insertorderedlist { - background-position: 0px -477px +.buttonicon-insertorderedlist:before { + content: "\e808"; } -.buttonicon-insertunorderedlist { - background-position: 0px -34px +.buttonicon-insertunorderedlist:before { + content: "\e807"; } -.buttonicon-indent { - background-position: 0px -52px +.buttonicon-indent:before { + content: "\e806"; } -.buttonicon-outdent { - background-position: 0px -134px +.buttonicon-outdent:before { + content: "\e805"; } -.buttonicon-undo { - background-position: 0px -255px +.buttonicon-undo:before { + content: "\e80c"; } -.buttonicon-redo { - background-position: 0px -166px +.buttonicon-redo:before { + content: "\e80b"; } -.buttonicon-clearauthorship { - background-position: 0px -86px +.buttonicon-clearauthorship:before { + content: "\e80e"; } -.buttonicon-settings { - background-position: 0px -436px +.buttonicon-settings:before { + content: "\e802"; } -.buttonicon-import_export { - background-position: 0px -68px +.buttonicon-import_export:before { + content: "\e816"; } -.buttonicon-embed { - background-position: 0px -18px +.buttonicon-embed:before { + content: "\e815"; } -.buttonicon-history { - background-position: 0px -218px +.buttonicon-history:before { + content: "\e80d"; } -.buttonicon-chat { - background-position: 0px -102px; +.buttonicon-chat:before { + content: "\e817"; } -.buttonicon-showusers { - background-position: 0px -183px; +.buttonicon-showusers:before { + content: "\e800"; } -.buttonicon-savedRevision { - background-position: 0px -493px +.buttonicon-savedRevision:before { + content: "\e801"; } #focusprotector { z-index: 100; @@ -736,9 +745,6 @@ table#otheruserstable { opacity: 0.01; display: none; } -#online_count { - color: #888; -} .rtl { direction: RTL } @@ -814,7 +820,7 @@ input[type=checkbox] { float: left; } #settings, -#importexport, +#import_export, #embed, #connectivity, #users { @@ -836,7 +842,7 @@ input[type=checkbox] { border-left: 1px solid #ccc !important; width: 185px !important; } -@media screen and (max-width: 600px) { +@media screen and (max-width: 600px) { .toolbar ul li.separator { display: none; } @@ -854,7 +860,7 @@ input[type=checkbox] { left:0px; right:0px; color:#000; - } + } .gritter-close { display:block !important; left: auto !important; @@ -882,13 +888,13 @@ input[type=checkbox] { .gritter-item-wrapper > div{ background: none; } - #editorcontainer { + #editorcontainer { top: 68px; } - #editbar { + #editbar { height: 62px; } - .toolbar ul.menu_right { + .toolbar ul.menu_right { float: left; margin-top:2px; } @@ -1070,15 +1076,4 @@ input[type=checkbox] { text-shadow: none; } -/* End of gritter stuff */ -.activeButton{ - background: #eee; - background: -webkit-linear-gradient(#ddd, #fff); - background: -moz-linear-gradient(#ddd, #fff); - background: -o-linear-gradient(#ddd, #fff); - background: -ms-linear-gradient(#ddd, #fff); - background: linear-gradient(#ddd, #fff); - -webkit-box-shadow: 0 0 8px rgba(0,0,0,.1) inset; - -moz-box-shadow: 0 0 8px rgba(0,0,0,.1) inset; - box-shadow: 0 0 8px rgba(0,0,0,.1) inset; -} +/* End of gritter stuff */ \ No newline at end of file diff --git a/src/static/css/timeslider.css b/src/static/css/timeslider.css index f97d4f2b1..f478c895e 100644 --- a/src/static/css/timeslider.css +++ b/src/static/css/timeslider.css @@ -158,17 +158,20 @@ float: right } #settings, -#importexport, +#import_export, #embed, #connectivity, #users { top: 62px; } -#importexport .popup { - width: 185px +#import_export .popup { + width: 183px; + border-top: none; + border-right: none; + border-radius: 0 0 0 6px; } -#importexport { - top: 118px; +#import_export { + top: 115px; width: 185px; } .timeslider-bar { diff --git a/src/static/font/fontawesome-etherpad.eot b/src/static/font/fontawesome-etherpad.eot new file mode 100644 index 000000000..9a24fc67b Binary files /dev/null and b/src/static/font/fontawesome-etherpad.eot differ diff --git a/src/static/font/fontawesome-etherpad.svg b/src/static/font/fontawesome-etherpad.svg new file mode 100644 index 000000000..ba49c31c2 --- /dev/null +++ b/src/static/font/fontawesome-etherpad.svg @@ -0,0 +1,35 @@ + + + +Copyright (C) 2014 by original authors @ fontello.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/static/font/fontawesome-etherpad.ttf b/src/static/font/fontawesome-etherpad.ttf new file mode 100644 index 000000000..a179bd191 Binary files /dev/null and b/src/static/font/fontawesome-etherpad.ttf differ diff --git a/src/static/font/fontawesome-etherpad.woff b/src/static/font/fontawesome-etherpad.woff new file mode 100644 index 000000000..1015d8e29 Binary files /dev/null and b/src/static/font/fontawesome-etherpad.woff differ diff --git a/src/static/js/ace2_inner.js b/src/static/js/ace2_inner.js index 07a9b971d..fb6dd0804 100644 --- a/src/static/js/ace2_inner.js +++ b/src/static/js/ace2_inner.js @@ -2333,7 +2333,7 @@ function Ace2Inner(){ if(rep.selStart[1] == rep.selEnd[1] && rep.selStart[1] == rep.lines.atIndex(n).text.length){ return false; // If we're at the end of a line we treat it as having no formatting } - if(rep.selStart[1] == 0 && rep.selEnd[1] == 0){ + if(rep.selStart[1] == 0 && rep.selEnd[1] == 0){ rep.selEnd[1] == 1; } if(rep.selEnd[1] == -1){ @@ -3741,6 +3741,30 @@ function Ace2Inner(){ toggleAttributeOnSelection('underline'); specialHandled = true; } + if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "5" && (evt.metaKey || evt.ctrlKey)) + { + // cmd-5 (strikethrough) + fastIncorp(13); + evt.preventDefault(); + toggleAttributeOnSelection('strikethrough'); + specialHandled = true; + } + if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "l" && (evt.metaKey || evt.ctrlKey) && evt.shiftKey) + { + // cmd-shift-L (unorderedlist) + fastIncorp(9); + evt.preventDefault(); + doInsertUnorderedList() + specialHandled = true; + } + if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "n" && (evt.metaKey || evt.ctrlKey) && evt.shiftKey) + { + // cmd-shift-N (orderedlist) + fastIncorp(9); + evt.preventDefault(); + doInsertOrderedList() + specialHandled = true; + } if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "h" && (evt.ctrlKey)) { // cmd-H (backspace) @@ -3818,7 +3842,7 @@ function Ace2Inner(){ // top.console.log(caretOffsetTop, viewport.top, caretOffsetTopBottom, viewport.bottom); var caretIsNotVisible = (caretOffsetTop < viewport.top || caretOffsetTopBottom >= viewport.bottom); // Is the Caret Visible to the user? // Expect some weird behavior caretOffsetTopBottom is greater than viewport.bottom on a keypress down - var offsetTopSamePlace = caretOffsetTop == viewport.top; // sometimes moving key left & up leaves the caret at the same point as the viewport.top, technically the caret is visible but it's not fully visible so we should move to it + var offsetTopSamePlace = caretOffsetTop == viewport.top; // sometimes moving key left & up leaves the caret at the same point as the viewport.top, technically the caret is visible but it's not fully visible so we should move to it if(offsetTopSamePlace && (evt.which == 37 || evt.which == 38)){ var newY = caretOffsetTop; setScrollY(newY); diff --git a/src/static/js/pad_editbar.js b/src/static/js/pad_editbar.js index 859632171..6352b1296 100644 --- a/src/static/js/pad_editbar.js +++ b/src/static/js/pad_editbar.js @@ -206,7 +206,7 @@ var padeditbar = (function() if(module.css('display') != "none") { - $("#" + self.dropdowns[i] + "link").removeClass("selected"); + $("li[data-key=" + self.dropdowns[i] + "] > a").removeClass("selected"); module.slideUp("fast", cb); returned = true; } @@ -223,12 +223,12 @@ var padeditbar = (function() if(module.css('display') != "none") { - $("#" + self.dropdowns[i] + "link").removeClass("selected"); + $("li[data-key=" + self.dropdowns[i] + "] > a").removeClass("selected"); module.slideUp("fast"); } else if(self.dropdowns[i]==moduleName) { - $("#" + self.dropdowns[i] + "link").addClass("selected"); + $("li[data-key=" + self.dropdowns[i] + "] > a").addClass("selected"); module.slideDown("fast", cb); } } @@ -271,7 +271,7 @@ var padeditbar = (function() toolbar.registerDropdownCommand("showusers", "users"); toolbar.registerDropdownCommand("settings"); toolbar.registerDropdownCommand("connectivity"); - toolbar.registerDropdownCommand("import_export", "importexport"); + toolbar.registerDropdownCommand("import_export"); toolbar.registerDropdownCommand("embed"); toolbar.registerCommand("embed", function () { diff --git a/src/static/js/pad_userlist.js b/src/static/js/pad_userlist.js index ebb057c82..93c8ff708 100644 --- a/src/static/js/pad_userlist.js +++ b/src/static/js/pad_userlist.js @@ -468,6 +468,8 @@ var paduserlist = (function() self.setMyUserInfo(myInitialUserInfo); + $('#editbar [data-key=showusers] > a').append('1'); + $("#otheruserstable tr").remove(); if (pad.getUserIsGuest()) @@ -602,13 +604,8 @@ var paduserlist = (function() online++; } } - var $btn = $("#editbar [data-key=showusers] > a") - , $counter = $('#online_count', $btn) - if(!$counter.length) { - $counter = $('') - $btn.append($counter) - } - $counter.text(online); + + $('#online_count').text(online); return online; }, diff --git a/src/static/js/pad_utils.js b/src/static/js/pad_utils.js index bab6aa432..c2ff6fd0e 100644 --- a/src/static/js/pad_utils.js +++ b/src/static/js/pad_utils.js @@ -515,12 +515,13 @@ function setupGlobalExceptionHandler() { globalExceptionHandler = function test (msg, url, linenumber) { var errorId = randomString(20); + var userAgent = padutils.escapeHtml(navigator.userAgent); if ($("#editorloadingbox").attr("display") != "none"){ //show javascript errors to the user $("#editorloadingbox").css("padding", "10px"); $("#editorloadingbox").css("padding-top", "45px"); $("#editorloadingbox").html("
An error occured
The error was reported with the following id: '" + errorId + "'

Please press and hold Ctrl and press F5 to reload this page, if the problem persists please send this error message to your webmaster:
'" - + "ErrorId: " + errorId + "
URL: " + window.location.href + "
UserAgent: " + navigator.userAgent + "
" + msg + " in " + url + " at line " + linenumber + "'
"); + + "ErrorId: " + errorId + "
URL: " + window.location.href + "
UserAgent: " + userAgent + "
" + msg + " in " + url + " at line " + linenumber + "'"); } //send javascript errors to the server diff --git a/src/templates/pad.html b/src/templates/pad.html index 50fac86b4..15fd45e2d 100644 --- a/src/templates/pad.html +++ b/src/templates/pad.html @@ -40,6 +40,7 @@ <% e.begin_block("styles"); %> + @@ -174,7 +175,7 @@ -