diff --git a/install/data/defaults.json b/install/data/defaults.json index 5041ff83ea..45f426fb04 100644 --- a/install/data/defaults.json +++ b/install/data/defaults.json @@ -9,6 +9,8 @@ "maximumPostLength": 32767, "minimumTagsPerTopic": 0, "maximumTagsPerTopic": 5, + "minimumTagLength": 3, + "maximumTagLength": 15, "allowGuestSearching": 0, "allowTopicsThumbnail": 0, "registrationType": "normal", @@ -30,5 +32,7 @@ "requireEmailConfirmation": 0, "allowProfileImageUploads": 1, "teaserPost": "last", - "allowPrivateGroups": 1 -} \ No newline at end of file + "allowPrivateGroups": 1, + "unreadCutoff": 2, + "bookmarkThreshold": 5 +} diff --git a/nodebb b/nodebb index fb8d0a6911..53ae28db22 100755 --- a/nodebb +++ b/nodebb @@ -1,14 +1,25 @@ #!/usr/bin/env node -var colors = require('colors'), - cproc = require('child_process'), - argv = require('minimist')(process.argv.slice(2)), - fs = require('fs'), - path = require('path'), - request = require('request'), - semver = require('semver'), - prompt = require('prompt'), - async = require('async'); +try { + var colors = require('colors'), + cproc = require('child_process'), + argv = require('minimist')(process.argv.slice(2)), + fs = require('fs'), + path = require('path'), + request = require('request'), + semver = require('semver'), + prompt = require('prompt'), + async = require('async'); +} catch (e) { + if (e.code === 'MODULE_NOT_FOUND') { + process.stdout.write('NodeBB could not be started because it\'s dependencies have not been installed.\n'); + process.stdout.write('Please ensure that you have executed "npm install --production" prior to running NodeBB.\n\n'); + process.stdout.write('For more information, please see: https://docs.nodebb.org/en/latest/installing/os.html\n\n'); + process.stdout.write('Could not start: ' + e.code + '\n'); + + process.exit(1); + } +} var getRunningPid = function(callback) { fs.readFile(__dirname + '/pidfile', { diff --git a/package.json b/package.json index 5b52dd77c1..3667ebc4b0 100644 --- a/package.json +++ b/package.json @@ -56,8 +56,8 @@ "nodebb-plugin-spam-be-gone": "0.4.6", "nodebb-rewards-essentials": "0.0.8", "nodebb-theme-lavender": "3.0.9", - "nodebb-theme-persona": "4.0.122", - "nodebb-theme-vanilla": "5.0.66", + "nodebb-theme-persona": "4.0.125", + "nodebb-theme-vanilla": "5.0.68", "nodebb-widget-essentials": "2.0.9", "nodemailer": "2.0.0", "nodemailer-sendmail-transport": "1.0.0", @@ -115,4 +115,4 @@ "url": "https://github.com/barisusakli" } ] -} \ No newline at end of file +} diff --git a/public/language/ar/modules.json b/public/language/ar/modules.json index 1c23da87ad..a92c2d6953 100644 --- a/public/language/ar/modules.json +++ b/public/language/ar/modules.json @@ -17,7 +17,7 @@ "chat.seven_days": "7 أيام", "chat.thirty_days": "30 يومًا", "chat.three_months": "3 أشهر", - "chat.delete_message_confirm": "Are you sure you wish to delete this message?", + "chat.delete_message_confirm": "هل أنت متأكد من أنك تريد حذف هذه الرسالة؟", "chat.roomname": "Chat Room %1", "chat.add-users-to-room": "Add users to room", "composer.compose": "اكتب", diff --git a/public/language/ar/pages.json b/public/language/ar/pages.json index 74170e7af3..1f993db93d 100644 --- a/public/language/ar/pages.json +++ b/public/language/ar/pages.json @@ -16,9 +16,9 @@ "notifications": "التنبيهات", "tags": "الكلمات الدلالية", "tag": "Topics tagged under \"%1\"", - "register": "Register an account", + "register": "تسجيل حساب", "login": "Login to your account", - "reset": "Reset your account password", + "reset": "إعادة تعيين كلمة مرور حسابك", "categories": "الفئات", "groups": "المجموعات", "group": "%1 group", @@ -39,7 +39,7 @@ "account/upvoted": "Posts upvoted by %1", "account/downvoted": "Posts downvoted by %1", "account/best": "Best posts made by %1", - "confirm": "Email Confirmed", + "confirm": "تم التحقق من عنوان البريد الإلكتروني", "maintenance.text": "جاري صيانة %1. المرجو العودة لاحقًا.", "maintenance.messageIntro": "بالإضافة إلى ذلك، قام مدبر النظام بترك هذه الرسالة:", "throttled.text": "%1 is currently unavailable due to excessive load. Please come back another time." diff --git a/public/language/ar/unread.json b/public/language/ar/unread.json index 992ffa6f5c..2d139f5e75 100644 --- a/public/language/ar/unread.json +++ b/public/language/ar/unread.json @@ -6,5 +6,8 @@ "selected": "المحددة", "all": "الكل", "all_categories": "كل الفئات", - "topics_marked_as_read.success": "تم تحديد المواضيع على أنها مقروءة!" + "topics_marked_as_read.success": "تم تحديد المواضيع على أنها مقروءة!", + "all-topics": "كل المواضيع", + "new-topics": "مواضيع جديدة", + "watched-topics": "المواضيع المتابعة" } \ No newline at end of file diff --git a/public/language/ar/uploads.json b/public/language/ar/uploads.json index 1622cb5693..2126d3ec03 100644 --- a/public/language/ar/uploads.json +++ b/public/language/ar/uploads.json @@ -1,6 +1,6 @@ { - "uploading-file": "Uploading the file...", + "uploading-file": "جاري رفع الملف...", "select-file-to-upload": "Select a file to upload!", - "upload-success": "File uploaded successfully!", + "upload-success": "تم رفع الملف بنجاح!", "maximum-file-size": "Maximum %1 kb" } \ No newline at end of file diff --git a/public/language/ar/user.json b/public/language/ar/user.json index 15740e1f14..aa2745674c 100644 --- a/public/language/ar/user.json +++ b/public/language/ar/user.json @@ -36,10 +36,10 @@ "more": "المزيد", "profile_update_success": "تم تحديث الملف الشخصي بنجاح", "change_picture": "تغيير الصورة", - "change_username": "Change Username", - "change_email": "Change Email", + "change_username": "تغيير اسم المستخدم", + "change_email": "تغيير البريد اﻹلكتروني", "edit": "تعديل", - "edit-profile": "Edit Profile", + "edit-profile": "تعديل الملف الشخصي", "default_picture": "Default Icon", "uploaded_picture": "الصورة المرفوعة", "upload_new_picture": "رفع صورة جديدة", @@ -97,11 +97,11 @@ "scroll_to_my_post": "After posting a reply, show the new post", "follow_topics_you_reply_to": "متابعة المواضيع التي تقوم بالرد فيها", "follow_topics_you_create": "متابعة المواضيع التي تنشئها", - "grouptitle": "Group Title", + "grouptitle": "عنوان المجموعة", "no-group-title": "لا يوجد عنوان للمجموعة", "select-skin": "Select a Skin", "select-homepage": "Select a Homepage", - "homepage": "Homepage", + "homepage": "الصفحة الرئيسية", "homepage_description": "Select a page to use as the forum homepage or 'None' to use the default homepage.", "custom_route": "Custom Homepage Route", "custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\", or \"popular\")", diff --git a/public/language/bg/unread.json b/public/language/bg/unread.json index b80ddf87ef..7dc16f9cd3 100644 --- a/public/language/bg/unread.json +++ b/public/language/bg/unread.json @@ -6,5 +6,8 @@ "selected": "Избраните", "all": "Всички", "all_categories": "Всички категории", - "topics_marked_as_read.success": "Темите бяха отбелязани като прочетени!" + "topics_marked_as_read.success": "Темите бяха отбелязани като прочетени!", + "all-topics": "Всички теми", + "new-topics": "Нови теми", + "watched-topics": "Наблюдавани теми" } \ No newline at end of file diff --git a/public/language/bn/unread.json b/public/language/bn/unread.json index d7e42fb61b..578e246f3b 100644 --- a/public/language/bn/unread.json +++ b/public/language/bn/unread.json @@ -6,5 +6,8 @@ "selected": "নির্বাচিত", "all": "সবগুলো", "all_categories": "All categories", - "topics_marked_as_read.success": "পঠিত হিসেবে চিহ্নিত টপিকসমূহ" + "topics_marked_as_read.success": "পঠিত হিসেবে চিহ্নিত টপিকসমূহ", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/cs/unread.json b/public/language/cs/unread.json index 1ded2636c9..1a12bc4fbe 100644 --- a/public/language/cs/unread.json +++ b/public/language/cs/unread.json @@ -6,5 +6,8 @@ "selected": "Vybrané", "all": "Vše", "all_categories": "All categories", - "topics_marked_as_read.success": "Téma bylo označeno jako přečtené!" + "topics_marked_as_read.success": "Téma bylo označeno jako přečtené!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/da/unread.json b/public/language/da/unread.json index e44b6e42fd..dbb45d6024 100644 --- a/public/language/da/unread.json +++ b/public/language/da/unread.json @@ -6,5 +6,8 @@ "selected": "Valgte", "all": "Alle", "all_categories": "Alle kategorier", - "topics_marked_as_read.success": "Emner markeret som læst!" + "topics_marked_as_read.success": "Emner markeret som læst!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/de/unread.json b/public/language/de/unread.json index b9796b7c41..48681d7b8a 100644 --- a/public/language/de/unread.json +++ b/public/language/de/unread.json @@ -6,5 +6,8 @@ "selected": "Ausgewählte", "all": "Alle", "all_categories": "Alle Kategorien", - "topics_marked_as_read.success": "Themen als gelesen markiert!" + "topics_marked_as_read.success": "Themen als gelesen markiert!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/el/unread.json b/public/language/el/unread.json index 98aea93e27..803596873f 100644 --- a/public/language/el/unread.json +++ b/public/language/el/unread.json @@ -6,5 +6,8 @@ "selected": "Επιλεγμένα", "all": "Όλα", "all_categories": "All categories", - "topics_marked_as_read.success": "Τα θέματα σημειώθηκαν ως αναγνωσμένα!" + "topics_marked_as_read.success": "Τα θέματα σημειώθηκαν ως αναγνωσμένα!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/en@pirate/unread.json b/public/language/en@pirate/unread.json index 994ee938f1..37133f87ef 100644 --- a/public/language/en@pirate/unread.json +++ b/public/language/en@pirate/unread.json @@ -6,5 +6,8 @@ "selected": "Selected", "all": "All", "all_categories": "All categories", - "topics_marked_as_read.success": "Topics marked as read!" + "topics_marked_as_read.success": "Topics marked as read!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/en_US/unread.json b/public/language/en_US/unread.json index d723f6e8c9..c3050ba93e 100644 --- a/public/language/en_US/unread.json +++ b/public/language/en_US/unread.json @@ -6,5 +6,8 @@ "selected": "Selected", "all": "All", "all_categories": "All categories", - "topics_marked_as_read.success": "Topics marked as read!" + "topics_marked_as_read.success": "Topics marked as read!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/es/email.json b/public/language/es/email.json index dd8e64791d..ddc0a47556 100644 --- a/public/language/es/email.json +++ b/public/language/es/email.json @@ -24,7 +24,7 @@ "digest.day": "día", "digest.week": "semana", "digest.month": "mes", - "digest.subject": "Digest for %1", + "digest.subject": "Resumen de 1%", "notif.chat.subject": "Nuevo mensaje de chat recibido de %1", "notif.chat.cta": "Haz click aquí para continuar la conversación", "notif.chat.unsub.info": "Esta notificación de chat se te envió debido a tus ajustes de suscripción.", diff --git a/public/language/es/error.json b/public/language/es/error.json index 9178e18ff1..527c0cbfd2 100644 --- a/public/language/es/error.json +++ b/public/language/es/error.json @@ -85,7 +85,7 @@ "cant-edit-chat-message": "No tienes permiso para editar este mensaje", "cant-remove-last-user": "No puedes eliminar el último usuario", "cant-delete-chat-message": "No tienes permiso para eliminar este mensaje", - "already-voting-for-this-post": "You have already voted for this post.", + "already-voting-for-this-post": "Ya has votado a este mensaje.", "reputation-system-disabled": "El sistema de reputación está deshabilitado.", "downvoting-disabled": "La votación negativa está deshabilitada.", "not-enough-reputation-to-downvote": "No tienes suficiente reputación para votar negativo este post", diff --git a/public/language/es/topic.json b/public/language/es/topic.json index 272a8180a0..c9e5849f41 100644 --- a/public/language/es/topic.json +++ b/public/language/es/topic.json @@ -26,7 +26,7 @@ "tools": "Herramientas", "flag": "Reportar", "locked": "Cerrado", - "bookmark_instructions": "Click here to return to the last read post in this thread.", + "bookmark_instructions": "Haz click aquí para volver a tu último mensaje leído en este tema", "flag_title": "Reportar este mensaje", "flag_success": "Este mensaje ha sido reportado para moderación.", "deleted_message": "Este tema ha sido borrado. Solo los usuarios que tengan privilegios de administración de temas pueden verlo.", @@ -34,15 +34,15 @@ "not_following_topic.message": "No recibiras notificaciones de este tema.", "login_to_subscribe": "Por favor, conéctate para subscribirte a este tema.", "markAsUnreadForAll.success": "Publicación marcada como no leída para todos.", - "mark_unread": "Marcar como no leído", + "mark_unread": "Marcar no leído", "mark_unread.success": "Tema marcado como no leído.", "watch": "Seguir", "unwatch": "Dejar de seguir", "watch.title": "Serás notificado cuando haya nuevas respuestas en este tema", "unwatch.title": "Dejar de seguir este tema", "share_this_post": "Compartir este post", - "thread_tools.title": "Herramientas del tema", - "thread_tools.markAsUnreadForAll": "Marcar como no leído", + "thread_tools.title": "Herramientas", + "thread_tools.markAsUnreadForAll": "Marcar no leído", "thread_tools.pin": "Adherir tema", "thread_tools.unpin": "Despegar tema", "thread_tools.lock": "Cerrar tema", @@ -96,7 +96,7 @@ "more_users": "%1 usuario(s) más", "more_guests": "%1 invitado(s) más", "users_and_others": "%1 y otros %2", - "sort_by": "Ordenar por", + "sort_by": "Ordenar", "oldest_to_newest": "Más antiguo a más nuevo", "newest_to_oldest": "Más nuevo a más antiguo", "most_votes": "Mayor número de votos", diff --git a/public/language/es/unread.json b/public/language/es/unread.json index d77a5f7979..a451185530 100644 --- a/public/language/es/unread.json +++ b/public/language/es/unread.json @@ -6,5 +6,8 @@ "selected": "Seleccionados", "all": "Todos", "all_categories": "Todos los foros", - "topics_marked_as_read.success": "¡Temas marcados como leídos!" + "topics_marked_as_read.success": "¡Temas marcados como leídos!", + "all-topics": "Todos los Temas", + "new-topics": "Temas Nuevos", + "watched-topics": "Temas Suscritos" } \ No newline at end of file diff --git a/public/language/es/user.json b/public/language/es/user.json index ebd854ddfa..6f7f75385b 100644 --- a/public/language/es/user.json +++ b/public/language/es/user.json @@ -97,7 +97,7 @@ "scroll_to_my_post": "Luego de enviar una respuesta, mostrar el nuevo mensaje", "follow_topics_you_reply_to": "Seguir los temas en los que respondes", "follow_topics_you_create": "Seguir publicaciones que creas", - "grouptitle": "Group Title", + "grouptitle": "Título del Grupo", "no-group-title": "Sin título de grupo", "select-skin": "Seleccionar una plantilla", "select-homepage": "Seleccione una Página de inicio", diff --git a/public/language/et/unread.json b/public/language/et/unread.json index 140ff1dd62..832d169fd4 100644 --- a/public/language/et/unread.json +++ b/public/language/et/unread.json @@ -6,5 +6,8 @@ "selected": "Valitud", "all": "Kõik", "all_categories": "Kõik kategooriad", - "topics_marked_as_read.success": "Teemad märgitud loetuks!" + "topics_marked_as_read.success": "Teemad märgitud loetuks!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/fa_IR/unread.json b/public/language/fa_IR/unread.json index c5a17f9649..2109d00211 100644 --- a/public/language/fa_IR/unread.json +++ b/public/language/fa_IR/unread.json @@ -6,5 +6,8 @@ "selected": "برگزیده", "all": "همه", "all_categories": "تمام دسته ها", - "topics_marked_as_read.success": "همه موضوع ها خوانده شدند" + "topics_marked_as_read.success": "همه موضوع ها خوانده شدند", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/fi/unread.json b/public/language/fi/unread.json index 5588fce2c3..e7296b4cf8 100644 --- a/public/language/fi/unread.json +++ b/public/language/fi/unread.json @@ -6,5 +6,8 @@ "selected": "Valitut", "all": "Kaikki", "all_categories": "All categories", - "topics_marked_as_read.success": "Aihe merkitty luetuksi!" + "topics_marked_as_read.success": "Aihe merkitty luetuksi!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/fr/unread.json b/public/language/fr/unread.json index 9432bf9d36..c0849c4be8 100644 --- a/public/language/fr/unread.json +++ b/public/language/fr/unread.json @@ -6,5 +6,8 @@ "selected": "Sélectionnés", "all": "Tous", "all_categories": "Toutes Catégories", - "topics_marked_as_read.success": "Sujets marqués comme lus !" + "topics_marked_as_read.success": "Sujets marqués comme lus !", + "all-topics": "Tous les sujets", + "new-topics": "Nouveau sujet", + "watched-topics": "Sujets surveillés" } \ No newline at end of file diff --git a/public/language/gl/unread.json b/public/language/gl/unread.json index 11f79dc4ca..5581208821 100644 --- a/public/language/gl/unread.json +++ b/public/language/gl/unread.json @@ -6,5 +6,8 @@ "selected": "Seleccionado", "all": "Todos", "all_categories": "Tódalas categorías", - "topics_marked_as_read.success": "Temas marcados como lidos" + "topics_marked_as_read.success": "Temas marcados como lidos", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/he/unread.json b/public/language/he/unread.json index 587071777b..51923d7147 100644 --- a/public/language/he/unread.json +++ b/public/language/he/unread.json @@ -6,5 +6,8 @@ "selected": "נבחר", "all": "הכל", "all_categories": "כל הקטגוריות", - "topics_marked_as_read.success": "נושאים שמסומנים כנקרא!" + "topics_marked_as_read.success": "נושאים שמסומנים כנקרא!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/hu/unread.json b/public/language/hu/unread.json index 8bf28e0be6..dd411974f5 100644 --- a/public/language/hu/unread.json +++ b/public/language/hu/unread.json @@ -6,5 +6,8 @@ "selected": "Kiválasztva", "all": "Összes", "all_categories": "All categories", - "topics_marked_as_read.success": "Témakör olvasottnak jelölve!" + "topics_marked_as_read.success": "Témakör olvasottnak jelölve!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/id/unread.json b/public/language/id/unread.json index 27ace0a281..f7bc4cf56b 100644 --- a/public/language/id/unread.json +++ b/public/language/id/unread.json @@ -6,5 +6,8 @@ "selected": "Terpilih", "all": "Semua", "all_categories": "Semua Kategori", - "topics_marked_as_read.success": "Topik ditandai sudah dibaca!" + "topics_marked_as_read.success": "Topik ditandai sudah dibaca!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/it/email.json b/public/language/it/email.json index 347f0d6f1d..ef28eac56e 100644 --- a/public/language/it/email.json +++ b/public/language/it/email.json @@ -21,9 +21,9 @@ "digest.cta": "Clicca qui per visitare %1", "digest.unsub.info": "Questo sommario ti è stato inviato perché lo hai sottoscritto nelle tue impostazioni.", "digest.no_topics": "Non ci sono state discussioni attive nell'ultimo %1", - "digest.day": "day", - "digest.week": "week", - "digest.month": "month", + "digest.day": "giorno", + "digest.week": "settimana", + "digest.month": "mese", "digest.subject": "Digest for %1", "notif.chat.subject": "Nuovo messaggio in chat da %1", "notif.chat.cta": "Clicca qui per continuare la conversazione", diff --git a/public/language/it/error.json b/public/language/it/error.json index 23135607f1..ec1f8d0e9b 100644 --- a/public/language/it/error.json +++ b/public/language/it/error.json @@ -24,7 +24,7 @@ "confirm-email-already-sent": "Email di conferma già inviata, per favore attendere %1 minuti per richiederne un'altra.", "username-too-short": "Nome utente troppo corto", "username-too-long": "Nome utente troppo lungo", - "password-too-long": "Password too long", + "password-too-long": "Password troppo lunga", "user-banned": "Utente bannato", "user-too-new": "Devi attendere %1 secondi prima di creare il tuo primo post", "blacklisted-ip": "Sorry, your IP address has been banned from this community. If you feel this is in error, please contact an administrator.", diff --git a/public/language/it/unread.json b/public/language/it/unread.json index e2e6018a47..94c4a315a3 100644 --- a/public/language/it/unread.json +++ b/public/language/it/unread.json @@ -6,5 +6,8 @@ "selected": "Selezionati", "all": "Tutti", "all_categories": "Tutte le categorie", - "topics_marked_as_read.success": "Discussione marcata come letta!" + "topics_marked_as_read.success": "Discussione marcata come letta!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/ja/unread.json b/public/language/ja/unread.json index 66a8e02906..54446f4116 100644 --- a/public/language/ja/unread.json +++ b/public/language/ja/unread.json @@ -6,5 +6,8 @@ "selected": "選択済み", "all": "全て", "all_categories": "全てのカテゴリ", - "topics_marked_as_read.success": "すべてのスレッドを既読にしました。" + "topics_marked_as_read.success": "すべてのスレッドを既読にしました。", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/ko/email.json b/public/language/ko/email.json index 10eec4722d..07a668917b 100644 --- a/public/language/ko/email.json +++ b/public/language/ko/email.json @@ -24,7 +24,7 @@ "digest.day": "일", "digest.week": "주", "digest.month": "월", - "digest.subject": "Digest for %1", + "digest.subject": "%1님을 위한 다이제스트", "notif.chat.subject": "%1님이 대화 메시지를 보냈습니다.", "notif.chat.cta": "대화를 계속하려면 여기를 클릭하세요.", "notif.chat.unsub.info": "이 대화 알림은 사용자의 구독 설정에 따라 전송되었습니다.", diff --git a/public/language/ko/error.json b/public/language/ko/error.json index 748cc05084..01e81ea804 100644 --- a/public/language/ko/error.json +++ b/public/language/ko/error.json @@ -85,7 +85,7 @@ "cant-edit-chat-message": "편집 할 수 있는 권한이 없습니다.", "cant-remove-last-user": "마지막 사용자를 삭제할 수 없습니다.", "cant-delete-chat-message": "메세지를 지울 권한이 없습니다.", - "already-voting-for-this-post": "You have already voted for this post.", + "already-voting-for-this-post": "이미 이 게시글에 투표하셨습니다.", "reputation-system-disabled": "인지도 기능이 비활성 상태입니다.", "downvoting-disabled": "비추천 기능이 비활성 상태입니다.", "not-enough-reputation-to-downvote": "인지도가 낮아 이 게시물에 반대할 수 없습니다.", diff --git a/public/language/ko/topic.json b/public/language/ko/topic.json index cfa5504880..daea5fa614 100644 --- a/public/language/ko/topic.json +++ b/public/language/ko/topic.json @@ -26,7 +26,7 @@ "tools": "도구", "flag": "신고", "locked": "잠김", - "bookmark_instructions": "Click here to return to the last read post in this thread.", + "bookmark_instructions": "이 스레드에서 읽은 마지막 게시글로 이동하시려면 여기를 클릭하세요.", "flag_title": "이 게시물을 신고", "flag_success": "이 게시물은 신고되었습니다.", "deleted_message": "이 주제는 삭제되었습니다. 주제 관리 권한이 있는 사용자만 볼 수 있습니다.", diff --git a/public/language/ko/unread.json b/public/language/ko/unread.json index 56f631af80..527a990c08 100644 --- a/public/language/ko/unread.json +++ b/public/language/ko/unread.json @@ -6,5 +6,8 @@ "selected": "선택된 주제", "all": "전체", "all_categories": "모든 카테고리", - "topics_marked_as_read.success": "성공적으로 읽음으로 표시했습니다." + "topics_marked_as_read.success": "성공적으로 읽음으로 표시했습니다.", + "all-topics": "모든 주제", + "new-topics": "새 주제", + "watched-topics": "읽은 주제" } \ No newline at end of file diff --git a/public/language/ko/user.json b/public/language/ko/user.json index 20cbf236a9..c26b383d2e 100644 --- a/public/language/ko/user.json +++ b/public/language/ko/user.json @@ -97,7 +97,7 @@ "scroll_to_my_post": "답글 게시 후 새 포스트 보여주기", "follow_topics_you_reply_to": "답글 단 게시물을 팔로우 합니다.", "follow_topics_you_create": "생성한 주제를 팔로우 합니다.", - "grouptitle": "Group Title", + "grouptitle": "그룹 주제", "no-group-title": "그룹 이름이 없습니다.", "select-skin": "스킨 선택", "select-homepage": "홈페이지 선택", diff --git a/public/language/lt/unread.json b/public/language/lt/unread.json index 37c42dc40d..88b8b1464f 100644 --- a/public/language/lt/unread.json +++ b/public/language/lt/unread.json @@ -6,5 +6,8 @@ "selected": "Pasirinkti", "all": "Visi", "all_categories": "Visos kategorijos", - "topics_marked_as_read.success": "Temos pažymėtos kaip perskaitytos." + "topics_marked_as_read.success": "Temos pažymėtos kaip perskaitytos.", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/ms/unread.json b/public/language/ms/unread.json index 6e23443905..3e132e6f2c 100644 --- a/public/language/ms/unread.json +++ b/public/language/ms/unread.json @@ -6,5 +6,8 @@ "selected": "Dipilih", "all": "Semua", "all_categories": "Semua Kategori", - "topics_marked_as_read.success": "Topik ditandakan sebagai sudah dibaca" + "topics_marked_as_read.success": "Topik ditandakan sebagai sudah dibaca", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/nb/unread.json b/public/language/nb/unread.json index f36bd28af3..c22af54291 100644 --- a/public/language/nb/unread.json +++ b/public/language/nb/unread.json @@ -6,5 +6,8 @@ "selected": "Valgte", "all": "Alle", "all_categories": "Alle kategorier", - "topics_marked_as_read.success": "Emner merket som lest!" + "topics_marked_as_read.success": "Emner merket som lest!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/nl/unread.json b/public/language/nl/unread.json index 4a5fc11558..d5bed309e4 100644 --- a/public/language/nl/unread.json +++ b/public/language/nl/unread.json @@ -6,5 +6,8 @@ "selected": "Geselecteerd", "all": "Alles", "all_categories": "Alle categorieën", - "topics_marked_as_read.success": "Onderwerp gemarkeerd als gelezen!" + "topics_marked_as_read.success": "Onderwerp gemarkeerd als gelezen!", + "all-topics": "Alle onderwerpen", + "new-topics": "Nieuwe onderwerpen", + "watched-topics": "Bekeken onderwerpen" } \ No newline at end of file diff --git a/public/language/nl/uploads.json b/public/language/nl/uploads.json index 490bf49529..c59223164d 100644 --- a/public/language/nl/uploads.json +++ b/public/language/nl/uploads.json @@ -1,5 +1,5 @@ { - "uploading-file": "Bestond word geüpload...", + "uploading-file": "Bestand word geüpload...", "select-file-to-upload": "Selecteer een bestand om te uploaden!", "upload-success": "Bestand succesvol geüpload!", "maximum-file-size": "Maximaal %1 kb" diff --git a/public/language/nl/user.json b/public/language/nl/user.json index e2a0399640..3fd6525ef2 100644 --- a/public/language/nl/user.json +++ b/public/language/nl/user.json @@ -93,7 +93,7 @@ "enable_topic_searching": "Inschakelen mogelijkheid op onderwerp te kunnen zoeken", "topic_search_help": "Wanneer ingeschakeld zal de standaard zoekfunctie, met een aangepaste methode voor onderwerpen, overschreven worden", "delay_image_loading": "Afbeeldingen Laden Uitstellen", - "image_load_delay_help": "Indien ingeschakeld zullen afbeeldingen in topics niet laden totdat ze in het scherm scrollen", + "image_load_delay_help": "Indien ingeschakeld zullen afbeeldingen in topics niet laden totdat ze het scherm inscrollen", "scroll_to_my_post": "Toon het nieuwe bericht na het plaatsen van een antwoord", "follow_topics_you_reply_to": "Volg de onderwerpen waarop ik gereageerd heb", "follow_topics_you_create": "Volg de onderwerpen waarvan ik de oorspronkelijke auteur ben", diff --git a/public/language/pl/unread.json b/public/language/pl/unread.json index dbee60d817..521a5148b8 100644 --- a/public/language/pl/unread.json +++ b/public/language/pl/unread.json @@ -6,5 +6,8 @@ "selected": "Wybrane", "all": "Wszystkie", "all_categories": "Wszystkie kategorie", - "topics_marked_as_read.success": "Tematy zostały oznaczone jako przeczytane!" + "topics_marked_as_read.success": "Tematy zostały oznaczone jako przeczytane!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/pt_BR/unread.json b/public/language/pt_BR/unread.json index bba5086d93..2ee62fbb68 100644 --- a/public/language/pt_BR/unread.json +++ b/public/language/pt_BR/unread.json @@ -6,5 +6,8 @@ "selected": "Selecionado", "all": "Todos", "all_categories": "Todas as categorias", - "topics_marked_as_read.success": "Tópicos marcados como lidos!" + "topics_marked_as_read.success": "Tópicos marcados como lidos!", + "all-topics": "Todos os Tópicos", + "new-topics": "Novos Tópicos", + "watched-topics": "Topicos Acompanhados" } \ No newline at end of file diff --git a/public/language/ro/unread.json b/public/language/ro/unread.json index 5cff8c6546..c82e736759 100644 --- a/public/language/ro/unread.json +++ b/public/language/ro/unread.json @@ -6,5 +6,8 @@ "selected": "Selectate", "all": "Toate", "all_categories": "All categories", - "topics_marked_as_read.success": "Subiectele au fost marcate ca citite!" + "topics_marked_as_read.success": "Subiectele au fost marcate ca citite!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/ru/unread.json b/public/language/ru/unread.json index 7d51d6abbf..1317a92a45 100644 --- a/public/language/ru/unread.json +++ b/public/language/ru/unread.json @@ -6,5 +6,8 @@ "selected": "Выбранное", "all": "Все", "all_categories": "Все категории", - "topics_marked_as_read.success": "Темы помечены как прочитанные!" + "topics_marked_as_read.success": "Темы помечены как прочитанные!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/rw/unread.json b/public/language/rw/unread.json index 075fdc7792..07c6e6c04c 100644 --- a/public/language/rw/unread.json +++ b/public/language/rw/unread.json @@ -6,5 +6,8 @@ "selected": "Ibyatoranyijwe", "all": "Byose", "all_categories": "Ibyiciro Byose", - "topics_marked_as_read.success": "Ibiganiro byamaze kugaragazwa nk'ibyasomwe!" + "topics_marked_as_read.success": "Ibiganiro byamaze kugaragazwa nk'ibyasomwe!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/sc/unread.json b/public/language/sc/unread.json index 692bb12f14..3039d0fa6e 100644 --- a/public/language/sc/unread.json +++ b/public/language/sc/unread.json @@ -6,5 +6,8 @@ "selected": "Selected", "all": "All", "all_categories": "All categories", - "topics_marked_as_read.success": "Topics marked as read!" + "topics_marked_as_read.success": "Topics marked as read!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/sk/unread.json b/public/language/sk/unread.json index cd254ebd4a..eed25e3c74 100644 --- a/public/language/sk/unread.json +++ b/public/language/sk/unread.json @@ -6,5 +6,8 @@ "selected": "Vybrané", "all": "Všetko", "all_categories": "All categories", - "topics_marked_as_read.success": "Témy označiť ako prečítané!" + "topics_marked_as_read.success": "Témy označiť ako prečítané!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/sl/unread.json b/public/language/sl/unread.json index 73f87fdfe1..d63d75cb61 100644 --- a/public/language/sl/unread.json +++ b/public/language/sl/unread.json @@ -6,5 +6,8 @@ "selected": "Izbrano", "all": "Vse", "all_categories": "Vse kategorije", - "topics_marked_as_read.success": "Teme označene kot prebrane!" + "topics_marked_as_read.success": "Teme označene kot prebrane!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/sr/unread.json b/public/language/sr/unread.json index 3fe33d78e0..a811fd23d4 100644 --- a/public/language/sr/unread.json +++ b/public/language/sr/unread.json @@ -6,5 +6,8 @@ "selected": "Изабране", "all": "Све", "all_categories": "Све категорије", - "topics_marked_as_read.success": "Теме означене као прочитане!" + "topics_marked_as_read.success": "Теме означене као прочитане!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/sv/unread.json b/public/language/sv/unread.json index 0ed0a80ae7..7b99714700 100644 --- a/public/language/sv/unread.json +++ b/public/language/sv/unread.json @@ -6,5 +6,8 @@ "selected": "Vald", "all": "Alla", "all_categories": "Alla kategorier", - "topics_marked_as_read.success": "Ämnet markerat som läst." + "topics_marked_as_read.success": "Ämnet markerat som läst.", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/th/unread.json b/public/language/th/unread.json index 6928cb1366..00f800a723 100644 --- a/public/language/th/unread.json +++ b/public/language/th/unread.json @@ -6,5 +6,8 @@ "selected": "เลือก", "all": "ทั้งหมด", "all_categories": "All categories", - "topics_marked_as_read.success": "Topic ถูกทำเครื่องหมายว่าอ่านแล้วเรียบร้อย" + "topics_marked_as_read.success": "Topic ถูกทำเครื่องหมายว่าอ่านแล้วเรียบร้อย", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/tr/email.json b/public/language/tr/email.json index 999da17999..4353efd42a 100644 --- a/public/language/tr/email.json +++ b/public/language/tr/email.json @@ -24,7 +24,7 @@ "digest.day": "gün", "digest.week": "hafta", "digest.month": "ay", - "digest.subject": "Digest for %1", + "digest.subject": "%1 için özet", "notif.chat.subject": "Okunmamış bazı iletileriniz var", "notif.chat.cta": "Sohbete devam etmek için buraya tıklayın", "notif.chat.unsub.info": "Bu bildirim şectiğiniz ayarlar yüzünden gönderildi.", diff --git a/public/language/tr/unread.json b/public/language/tr/unread.json index 49b8995dc5..4ef01109e7 100644 --- a/public/language/tr/unread.json +++ b/public/language/tr/unread.json @@ -6,5 +6,8 @@ "selected": "Seçili", "all": "Hepsi", "all_categories": "Tüm kategoriler", - "topics_marked_as_read.success": "Başlıklar okundu olarak işaretlendi!" + "topics_marked_as_read.success": "Başlıklar okundu olarak işaretlendi!", + "all-topics": "Tüm Başlıklar", + "new-topics": "Yeni Başlıklar", + "watched-topics": "İzlenen Başlıklar" } \ No newline at end of file diff --git a/public/language/vi/unread.json b/public/language/vi/unread.json index 14233ae900..134a7e3dd0 100644 --- a/public/language/vi/unread.json +++ b/public/language/vi/unread.json @@ -6,5 +6,8 @@ "selected": "Đã chọn", "all": "Tất cả", "all_categories": "Tất cả chuyên mục", - "topics_marked_as_read.success": "Chủ đề được đánh dấu đã đọc" + "topics_marked_as_read.success": "Chủ đề được đánh dấu đã đọc", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/zh_CN/unread.json b/public/language/zh_CN/unread.json index 58ab5b0389..efe8f0c9bc 100644 --- a/public/language/zh_CN/unread.json +++ b/public/language/zh_CN/unread.json @@ -6,5 +6,8 @@ "selected": "已选", "all": "全部", "all_categories": "全部分类", - "topics_marked_as_read.success": "主题被标为已读!" + "topics_marked_as_read.success": "主题被标为已读!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/language/zh_TW/unread.json b/public/language/zh_TW/unread.json index b8e2086168..cf5b8d662c 100644 --- a/public/language/zh_TW/unread.json +++ b/public/language/zh_TW/unread.json @@ -6,5 +6,8 @@ "selected": "已選擇", "all": "全部", "all_categories": "All categories", - "topics_marked_as_read.success": "標記主題成已讀!" + "topics_marked_as_read.success": "標記主題成已讀!", + "all-topics": "All Topics", + "new-topics": "New Topics", + "watched-topics": "Watched Topics" } \ No newline at end of file diff --git a/public/less/generics.less b/public/less/generics.less index fee1157662..265007af55 100644 --- a/public/less/generics.less +++ b/public/less/generics.less @@ -15,6 +15,12 @@ .define-if-not-set(); +#move_thread_modal .category-list { + height: 500px; + overflow-y: auto; + overflow-x: hidden; +} + .category-list { padding: 0; diff --git a/public/src/admin/manage/categories.js b/public/src/admin/manage/categories.js index b4a5f19601..4683d20e60 100644 --- a/public/src/admin/manage/categories.js +++ b/public/src/admin/manage/categories.js @@ -167,6 +167,10 @@ define('admin/manage/categories', ['vendor/jquery/serializeObject/jquery.ba-seri }); }); + if (!categories.length) { + continueRender(); + } + function continueRender() { templates.parse('admin/partials/categories/category-rows', { cid: parentId, diff --git a/public/src/admin/settings.js b/public/src/admin/settings.js index c4b880f761..acfa654556 100644 --- a/public/src/admin/settings.js +++ b/public/src/admin/settings.js @@ -53,11 +53,11 @@ define('admin/settings', ['uploader', 'sounds'], function(uploader, sounds) { } } } else if (field.is('textarea')) { - if (app.config[key]) { + if (app.config.hasOwnProperty(key)) { field.val(app.config[key]); } } else if (field.is('select')) { - if (app.config[key]) { + if (app.config.hasOwnProperty(key)) { field.val(app.config[key]); } } diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index e31786294b..53f979224a 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -71,12 +71,6 @@ $(document).ready(function() { return onAjaxError(err, url, callback, quiet); } - if (window.history && window.history.pushState) { - window.history[!quiet ? 'pushState' : 'replaceState']({ - url: url - }, url, RELATIVE_PATH + '/' + url); - } - retry = true; app.template = data.template.name; @@ -111,6 +105,11 @@ $(document).ready(function() { } ajaxify.currentPage = url.split(/[?#]/)[0]; + if (window.history && window.history.pushState) { + window.history[!quiet ? 'pushState' : 'replaceState']({ + url: url + }, url, RELATIVE_PATH + '/' + url); + } return url; }; diff --git a/public/src/client/account/settings.js b/public/src/client/account/settings.js index c594abd72a..763b41b504 100644 --- a/public/src/client/account/settings.js +++ b/public/src/client/account/settings.js @@ -78,11 +78,12 @@ define('forum/account/settings', ['forum/account/header', 'components', 'csrf'], }; function toggleCustomRoute() { - $('[data-property="homePageCustom"]').val(''); + if ($('[data-property="homePageRoute"]').val() === 'custom') { $('#homePageCustom').show(); - }else{ + } else { $('#homePageCustom').hide(); + $('[data-property="homePageCustom"]').val(''); } } diff --git a/public/src/client/topic/posts.js b/public/src/client/topic/posts.js index 841d0532ee..630b91bc72 100644 --- a/public/src/client/topic/posts.js +++ b/public/src/client/topic/posts.js @@ -238,11 +238,13 @@ define('forum/topic/posts', [ Posts.unloadImages = function(posts) { var images = posts.find('[component="post/content"] img:not(.not-responsive)'); - images.each(function() { - $(this).attr('data-src', $(this).attr('src')); - $(this).attr('data-state', 'unloaded'); - $(this).attr('src', 'about:blank'); - }); + if (config.delayImageLoading) { + images.each(function() { + $(this).attr('data-src', $(this).attr('src')); + }).attr('data-state', 'unloaded').attr('src', 'about:blank'); + } else { + images.attr('data-state', 'loaded'); + } }; Posts.loadImages = function(threshold) { @@ -262,7 +264,7 @@ define('forum/topic/posts', [ var images = components.get('post/content').find('img[data-state="unloaded"]'), visible = images.filter(function() { - return config.delayImageLoading ? utils.isElementInViewport(this) : true; + return utils.isElementInViewport(this); }), posts = $.unique(visible.map(function() { return $(this).parents('[component="post"]').get(0); diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index e860a0ff20..8c3e8c7962 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -92,7 +92,9 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra return app.alertError(err.message); } - var rooms = data.rooms; + var rooms = data.rooms.filter(function(room) { + return room.teaser; + }); chatsListEl.empty(); diff --git a/public/src/modules/components.js b/public/src/modules/components.js index f4de069e01..29d1ba64a9 100644 --- a/public/src/modules/components.js +++ b/public/src/modules/components.js @@ -3,6 +3,13 @@ define('components', function() { var components = {}; components.core = { + 'topic/teaser': function(tid) { + if (tid) { + return $('[component="category/topic"][data-tid="' + tid + '"] [component="topic/teaser"]'); + } else { + return $('[component="topic/teaser"]'); + } + }, 'post': function(name, value) { return $('[component="post"][data-' + name + '="' + value + '"]'); }, diff --git a/public/vendor/jquery/textcomplete/jquery.textcomplete.js b/public/vendor/jquery/textcomplete/jquery.textcomplete.js index ad1d508450..e42ac31bbf 100644 --- a/public/vendor/jquery/textcomplete/jquery.textcomplete.js +++ b/public/vendor/jquery/textcomplete/jquery.textcomplete.js @@ -17,7 +17,7 @@ * Repository: https://github.com/yuku-t/jquery-textcomplete * License: MIT (https://github.com/yuku-t/jquery-textcomplete/blob/master/LICENSE) * Author: Yuku Takahashi - * Version: 1.3.1 + * Version: 1.3.4 */ if (typeof jQuery === 'undefined') { @@ -796,8 +796,14 @@ if (typeof jQuery === 'undefined') { // (which makes our elements wrap onto the next line and corrupt the next item), if we're close to the right // edge, move left. We don't know how far to move left, so just keep nudging a bit. var tolerance = 30; // pixels. Make wider than vertical scrollbar because we might not be able to use that space. - while (this.$el.offset().left + this.$el.width() > $window.width() - tolerance) { - this.$el.offset({left: this.$el.offset().left - tolerance}); + var lastOffset = this.$el.offset().left, offset; + var width = this.$el.width(); + var maxLeft = $window.width() - tolerance; + while (lastOffset + width > maxLeft) { + this.$el.offset({left: lastOffset - tolerance}); + offset = this.$el.offset().left; + if (offset >= lastOffset) { break; } + lastOffset = offset; } }, @@ -1056,9 +1062,28 @@ if (typeof jQuery === 'undefined') { _getCaretRelativePosition: function () { var p = $.fn.textcomplete.getCaretCoordinates(this.el, this.el.selectionStart); return { - top: p.top + parseInt(this.$el.css('line-height'), 10) - this.$el.scrollTop(), + top: p.top + this._calculateLineHeight() - this.$el.scrollTop(), left: p.left - this.$el.scrollLeft() }; + }, + + _calculateLineHeight: function () { + var lineHeight = parseInt(this.$el.css('line-height'), 10); + if (isNaN(lineHeight)) { + // http://stackoverflow.com/a/4515470/1297336 + var parentNode = this.el.parentNode; + var temp = document.createElement(this.el.nodeName); + var style = this.el.style; + temp.setAttribute( + 'style', + 'margin:0px;padding:0px;font-family:' + style.fontFamily + ';font-size:' + style.fontSize + ); + temp.innerHTML = 'test'; + parentNode.appendChild(temp); + lineHeight = temp.clientHeight; + parentNode.removeChild(temp); + } + return lineHeight; } }); @@ -1248,7 +1273,7 @@ if (typeof jQuery === 'undefined') { // // https://github.com/component/textarea-caret-position -(function () { +(function ($) { // The properties that we copy into a mirrored div. // Note that some browsers, such as Firefox, @@ -1369,13 +1394,9 @@ function getCaretCoordinates(element, position, options) { return coordinates; } -if (typeof module != 'undefined' && typeof module.exports != 'undefined') { - module.exports = getCaretCoordinates; -} else if(isBrowser){ - window.$.fn.textcomplete.getCaretCoordinates = getCaretCoordinates; -} +$.fn.textcomplete.getCaretCoordinates = getCaretCoordinates; -}()); +}(jQuery)); return jQuery; -})); \ No newline at end of file +})); diff --git a/src/categories/create.js b/src/categories/create.js index 7f1f3955f7..f6338f8ef2 100644 --- a/src/categories/create.js +++ b/src/categories/create.js @@ -97,11 +97,11 @@ module.exports = function(Categories) { destination = results.destination; var tasks = []; - if (parseInt(results.source.parentCid, 10)) { + if (utils.isNumber(results.source.parentCid)) { tasks.push(async.apply(db.sortedSetAdd, 'cid:' + results.source.parentCid + ':children', results.source.order, toCid)); } - if (destination && parseInt(destination.parentCid, 10)) { + if (destination && utils.isNumber(destination.parentCid)) { tasks.push(async.apply(db.sortedSetRemove, 'cid:' + destination.parentCid + ':children', toCid)); } diff --git a/src/controllers/accounts/settings.js b/src/controllers/accounts/settings.js index b5b020c118..ba7cc4dcaf 100644 --- a/src/controllers/accounts/settings.js +++ b/src/controllers/accounts/settings.js @@ -96,8 +96,18 @@ settingsController.get = function(req, res, callback) { { "name": "Yeti", "value": "yeti" } ]; + var isCustom = true; userData.homePageRoutes.forEach(function(route) { route.selected = route.route === userData.settings.homePageRoute; + if (route.selected) { + isCustom = false; + } + }); + + userData.homePageRoutes.push({ + route: 'custom', + name: 'Custom', + selected: isCustom }); userData.bootswatchSkinOptions.forEach(function(skin) { @@ -142,40 +152,28 @@ function getHomePageRoutes(callback) { name: 'Category: ' + category.name }; }); - next(null, categoryData); + + categoryData = categoryData || []; + + plugins.fireHook('filter:homepage.get', {routes: [ + { + route: 'categories', + name: 'Categories' + }, + { + route: 'recent', + name: 'Recent' + }, + { + route: 'popular', + name: 'Popular' + } + ].concat(categoryData)}, next); + }, + function (data, next) { + next(null, data.routes); } - ], function(err, categoryData) { - if (err) { - return callback(err); - } - categoryData = categoryData || []; - - plugins.fireHook('filter:homepage.get', {routes: [ - { - route: 'categories', - name: 'Categories' - }, - { - route: 'recent', - name: 'Recent' - }, - { - route: 'popular', - name: 'Popular' - } - ].concat(categoryData)}, function(err, data) { - if (err) { - return callback(err); - } - - data.routes.push({ - route: 'custom', - name: 'Custom' - }); - - callback(null, data.routes); - }); - }); + ], callback); } diff --git a/src/controllers/helpers.js b/src/controllers/helpers.js index 058a1849b1..a558d665dd 100644 --- a/src/controllers/helpers.js +++ b/src/controllers/helpers.js @@ -71,6 +71,13 @@ helpers.buildCategoryBreadcrumbs = function(cid, callback) { return callback(err); } + if (!meta.config.homePageRoute && meta.config.homePageCustom) { + breadcrumbs.unshift({ + text: '[[global:header.categories]]', + url: nconf.get('relative_path') + '/categories' + }); + } + breadcrumbs.unshift({ text: '[[global:home]]', url: nconf.get('relative_path') + '/' diff --git a/src/controllers/index.js b/src/controllers/index.js index 830a45ef99..598587a434 100644 --- a/src/controllers/index.js +++ b/src/controllers/index.js @@ -30,7 +30,7 @@ var Controllers = { Controllers.home = function(req, res, next) { - var route = meta.config.homePageRoute || meta.config.homePageCustom.replace(/^\/+/, '') || 'categories'; + var route = meta.config.homePageRoute || (meta.config.homePageCustom || '').replace(/^\/+/, '') || 'categories'; user.getSettings(req.uid, function(err, settings) { if (err) { @@ -308,12 +308,12 @@ Controllers.manifest = function(req, res) { }; Controllers.outgoing = function(req, res, next) { - var url = req.query.url, - data = { - url: validator.escape(url), - title: meta.config.title, - breadcrumbs: helpers.buildBreadcrumbs([{text: '[[notifications:outgoing_link]]'}]) - }; + var url = req.query.url; + var data = { + url: validator.escape(String(url)), + title: meta.config.title, + breadcrumbs: helpers.buildBreadcrumbs([{text: '[[notifications:outgoing_link]]'}]) + }; if (url) { res.render('outgoing', data); diff --git a/src/file.js b/src/file.js index 1c1cab7781..001e1324cb 100644 --- a/src/file.js +++ b/src/file.js @@ -50,6 +50,13 @@ file.base64ToLocal = function(imageData, uploadPath, callback) { }; file.isFileTypeAllowed = function(path, callback) { + var plugins = require('./plugins'); + if (plugins.hasListeners('filter:file.isFileTypeAllowed')) { + return plugins.fireHook('filter:file.isFileTypeAllowed', path, function(err) { + callback(err); + }); + } + // Attempt to read the file, if it passes, file type is allowed jimp.read(path, function(err) { callback(err); @@ -95,4 +102,4 @@ file.existsSync = function(path) { return !!exists; }; -module.exports = file; \ No newline at end of file +module.exports = file;