Merge remote-tracking branch 'origin/master' into develop

v1.18.x
Julian Lam 7 years ago
commit 7089e5c6a6

@ -74,9 +74,9 @@
"nodebb-plugin-spam-be-gone": "0.5.3", "nodebb-plugin-spam-be-gone": "0.5.3",
"nodebb-rewards-essentials": "0.0.11", "nodebb-rewards-essentials": "0.0.11",
"nodebb-theme-lavender": "5.0.4", "nodebb-theme-lavender": "5.0.4",
"nodebb-theme-persona": "8.0.10", "nodebb-theme-persona": "8.0.11",
"nodebb-theme-slick": "1.2.1", "nodebb-theme-slick": "1.2.1",
"nodebb-theme-vanilla": "9.0.7", "nodebb-theme-vanilla": "9.0.8",
"nodebb-widget-essentials": "4.0.2", "nodebb-widget-essentials": "4.0.2",
"nodemailer": "4.4.1", "nodemailer": "4.4.1",
"passport": "^0.4.0", "passport": "^0.4.0",

@ -1,5 +1,5 @@
{ {
"alert.confirm-rebuild-and-restart": "Are you sure you wish to rebuild and restart NodeBB?", "alert.confirm-rebuild-and-restart": "Bist du sicher, dass du NodeBB neu bauen und neu starten möchtest?",
"alert.confirm-restart": "Bist du sicher, dass du NodeBB neu starten möchtest?", "alert.confirm-restart": "Bist du sicher, dass du NodeBB neu starten möchtest?",
"acp-title": "%1 | NodeBB Admin Systemsteuerung", "acp-title": "%1 | NodeBB Admin Systemsteuerung",

@ -7,5 +7,5 @@
"revert-confirm": "Bist du dir sicher, dass du das standard NodeBB Theme wieder herstellen willst?", "revert-confirm": "Bist du dir sicher, dass du das standard NodeBB Theme wieder herstellen willst?",
"theme-changed": "Theme geändert", "theme-changed": "Theme geändert",
"revert-success": "Du hast dein NodeBB erfolgreich wieder auf das Standard-Theme zurückgesetzt.", "revert-success": "Du hast dein NodeBB erfolgreich wieder auf das Standard-Theme zurückgesetzt.",
"restart-to-activate": "Please rebuild and restart your NodeBB to fully activate this theme." "restart-to-activate": "Bitte baue und starte NodeBB neu um das Theme zu aktivieren."
} }

@ -6,7 +6,7 @@
"titles": "Titel", "titles": "Titel",
"titles-posts": "Titel und Beiträge", "titles-posts": "Titel und Beiträge",
"match-words": "Match words", "match-words": "Match words",
"all": "All", "all": "Alle",
"any": "Any", "any": "Any",
"posted-by": "Geschrieben von", "posted-by": "Geschrieben von",
"in-categories": "In Kategorien", "in-categories": "In Kategorien",

@ -44,6 +44,8 @@
"alert.package-manager-unreachable": "<p>NodeBB could not reach the package manager, an upgrade is not suggested at this time.</p>", "alert.package-manager-unreachable": "<p>NodeBB could not reach the package manager, an upgrade is not suggested at this time.</p>",
"alert.incompatible": "<p>Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.</p>", "alert.incompatible": "<p>Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.</p>",
"alert.possibly-incompatible": "<div class=\"alert alert-warning\"><p><strong>No Compatibility Information Found</strong></p><p>This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.</p></div><p>In the event that NodeBB cannot boot properly:</p><pre><code>$ ./nodebb reset plugin=\"%1\"</code></pre><p>Continue installation of latest version of this plugin?</p>", "alert.possibly-incompatible": "<div class=\"alert alert-warning\"><p><strong>No Compatibility Information Found</strong></p><p>This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.</p></div><p>In the event that NodeBB cannot boot properly:</p><pre><code>$ ./nodebb reset plugin=\"%1\"</code></pre><p>Continue installation of latest version of this plugin?</p>",
"alert.reorder": "Plugins Re-ordered",
"alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.",
"license.title": "Plugin License Information", "license.title": "Plugin License Information",
"license.intro": "The plugin <strong>%1</strong> is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", "license.intro": "The plugin <strong>%1</strong> is licensed under the %2. Please read and understand the license terms prior to activating this plugin.",

@ -21,6 +21,7 @@
"invalid-username-or-password": "Please specify both a username and password", "invalid-username-or-password": "Please specify both a username and password",
"invalid-search-term": "Invalid search term", "invalid-search-term": "Invalid search term",
"invalid-url": "Invalid URL", "invalid-url": "Invalid URL",
"local-login-disabled": "Local login system has been disabled for non-privileged accounts.",
"csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again", "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again",
"invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2",

@ -150,5 +150,7 @@
"diffs.title": "Post Edit History", "diffs.title": "Post Edit History",
"diffs.description": "This post has <strong>%1</strong> revisions. Click one of the revisions below to see the post content at that point in time.", "diffs.description": "This post has <strong>%1</strong> revisions. Click one of the revisions below to see the post content at that point in time.",
"diffs.no-revisions-description": "This post has <strong>%1</strong> revisions." "diffs.no-revisions-description": "This post has <strong>%1</strong> revisions.",
"diffs.current-revision": "current revision",
"diffs.original-revision": "original revision"
} }

@ -2,10 +2,10 @@
"post-queue": "Post Queue", "post-queue": "Post Queue",
"description": "There are no posts in the post queue. <br> To enable this feature, go to <a href=\"%1\">Settings &rarr; Post &rarr; Posting Restrictions</a> and enable <strong>Post Queue</strong>.", "description": "There are no posts in the post queue. <br> To enable this feature, go to <a href=\"%1\">Settings &rarr; Post &rarr; Posting Restrictions</a> and enable <strong>Post Queue</strong>.",
"user": "User", "user": "User",
"category": "Category", "category": "Categoría",
"title": "Title", "title": "Título",
"content": "Content", "content": "Contenido",
"posted": "Posted", "posted": "Publicado",
"reply-to": "Reply to \"%1\"", "reply-to": "Responder a %1",
"content-editable": "You can click on individual content to edit before posting." "content-editable": "You can click on individual content to edit before posting."
} }

@ -7,7 +7,7 @@
"create": "צור תג", "create": "צור תג",
"modify": "שנה תג", "modify": "שנה תג",
"rename": "שנה שם של תג", "rename": "שנה שם של תג",
"delete": "Delete Selected Tags", "delete": "מחק תגים שנבחרו",
"search": "חפש תג...", "search": "חפש תג...",
"settings": "Click <a href=\"%1\">here</a> to visit the tag settings page.", "settings": "Click <a href=\"%1\">here</a> to visit the tag settings page.",
"name": "שם תג", "name": "שם תג",

@ -3,13 +3,13 @@
"edit": "ערוך", "edit": "ערוך",
"make-admin": "הפוך למנהל", "make-admin": "הפוך למנהל",
"remove-admin": "הסר הרשאת מנהל", "remove-admin": "הסר הרשאת מנהל",
"validate-email": "אמת דוא\"ל", "validate-email": "סמן את דוא\"ל המשתמש/ים כמאומת",
"send-validation-email": "שלח דואל אימות", "send-validation-email": "שלח בקשת אימות דוא\"ל למשתמש/ים",
"password-reset-email": "שלח דוא\"ל לאיפוס סיסמה", "password-reset-email": "שלח דוא\"ל לאיפוס סיסמה",
"ban": "הרחק משתמש(ים)", "ban": "הרחק משתמש(ים)",
"temp-ban": "הרחק משתמש(ים) באופן זמני", "temp-ban": "הרחק משתמש(ים) באופן זמני",
"unban": "בטל הרחקת משתמש(ים)", "unban": "בטל הרחקת משתמש(ים)",
"reset-lockout": "אתחל מחדש נעילה", "reset-lockout": "שחרר נעילת חשבון",
"reset-flags": "Reset Flags", "reset-flags": "Reset Flags",
"delete": "מחק משתמש(ים)", "delete": "מחק משתמש(ים)",
"purge": "מחק משתמש(ים) ומידע", "purge": "מחק משתמש(ים) ומידע",
@ -18,17 +18,17 @@
"new": "משתמש חדש", "new": "משתמש חדש",
"pills.latest": "משתמשים אחרונים", "pills.latest": "משתמשים אחרונים",
"pills.unvalidated": "Not Validated", "pills.unvalidated": "לא מאומת",
"pills.no-posts": "אין פוסטים", "pills.no-posts": "אין פוסטים",
"pills.top-posters": "מפרסמים הכי הרבה", "pills.top-posters": "מפרסמים הכי הרבה",
"pills.top-rep": "Most Reputation", "pills.top-rep": "מוניטין הכי גבוה",
"pills.inactive": "לא-פעיל", "pills.inactive": "לא-פעיל",
"pills.flagged": "Most Flagged", "pills.flagged": "Most Flagged",
"pills.banned": "מורחק", "pills.banned": "מורחק",
"pills.search": "חיפוש משתמשים", "pills.search": "חיפוש משתמשים",
"search.uid": "על פי זהות משתמש", "search.uid": "על פי זהות משתמש",
"search.uid-placeholder": "Enter a user ID to search", "search.uid-placeholder": "הזן מספר משתמש לחיפוש",
"search.username": "על פי שם משתמש", "search.username": "על פי שם משתמש",
"search.username-placeholder": "הזן שם משתמש לחיפוש", "search.username-placeholder": "הזן שם משתמש לחיפוש",
"search.email": "על פי דוא\"ל", "search.email": "על פי דוא\"ל",
@ -46,10 +46,10 @@
"users.email": "דוא\"ל", "users.email": "דוא\"ל",
"users.postcount": "postcount", "users.postcount": "postcount",
"users.reputation": "reputation", "users.reputation": "reputation",
"users.flags": "flags", "users.flags": "דגלים",
"users.joined": "joined", "users.joined": "הצטרף",
"users.last-online": "last online", "users.last-online": "נראה לאחרונה",
"users.banned": "banned", "users.banned": "מורחק",
"create.username": "שם משתמש", "create.username": "שם משתמש",
"create.email": "דוא\"ל", "create.email": "דוא\"ל",
@ -57,35 +57,35 @@
"create.password": "סיסמה", "create.password": "סיסמה",
"create.password-confirm": "אשר סיסמה", "create.password-confirm": "אשר סיסמה",
"temp-ban.length": "Ban Length", "temp-ban.length": "זמן הרחקה",
"temp-ban.reason": "סיבה <span class=\"text-muted\">(אופציונאלי)</span>", "temp-ban.reason": "סיבה <span class=\"text-muted\">(אופציונאלי)</span>",
"temp-ban.hours": "שעות", "temp-ban.hours": "שעות",
"temp-ban.days": "ימים", "temp-ban.days": "ימים",
"temp-ban.explanation": "Enter the length of time for the ban. Note that a time of 0 will be a considered a permanent ban.", "temp-ban.explanation": "הזן את זמן ההרחקה. שים לב כי הזנת זמן 0 יחשב כהרחקה לצמיתות.",
"alerts.confirm-ban": "האם אתה רוצה להרחיק משתמש זה <strong>לצמיתות</strong>?", "alerts.confirm-ban": "האם אתה רוצה להרחיק משתמש זה <strong>לצמיתות</strong>?",
"alerts.confirm-ban-multi": "Do you really want to ban these users <strong>permanently</strong>?", "alerts.confirm-ban-multi": "האם אתה באמת רוצה להרחיק את המשתמשים <strong>לצמיתות</strong>?",
"alerts.ban-success": "User(s) banned!", "alerts.ban-success": "משתמש(ים) הורחק/ו!",
"alerts.button-ban-x": "Ban %1 user(s)", "alerts.button-ban-x": "אזהרה, %1 משתמש(ים) יפגעו",
"alerts.unban-success": "User(s) unbanned!", "alerts.unban-success": "משתמש(ים) הורחק/ו!",
"alerts.lockout-reset-success": "Lockout(s) reset!", "alerts.lockout-reset-success": "Lockout(s) reset!",
"alerts.flag-reset-success": "Flags(s) reset!", "alerts.flag-reset-success": "Flags(s) reset!",
"alerts.no-remove-yourself-admin": "You can't remove yourself as Administrator!", "alerts.no-remove-yourself-admin": "אינך יכול להרחיק את עצמך כמנהל!",
"alerts.make-admin-success": "המשתמש הנו מנהל עכשיו", "alerts.make-admin-success": "המשתמש הנו מנהל עכשיו",
"alerts.confirm-remove-admin": "האם אתה בטוח רוצה להסיר את המנהל הזה?", "alerts.confirm-remove-admin": "האם אתה בטוח רוצה להסיר את המנהל הזה?",
"alerts.remove-admin-success": "בוטלה הרשאת מנהל למשתמש", "alerts.remove-admin-success": "בוטלה הרשאת מנהל למשתמש",
"alerts.make-global-mod-success": "מעתה המשתמש הנו מנהל קבוצות כללי", "alerts.make-global-mod-success": "מעתה המשתמש הנו מנהל קבוצות כללי",
"alerts.confirm-remove-global-mod": "Do you really want to remove this global moderator?", "alerts.confirm-remove-global-mod": "Do you really want to remove this global moderator?",
"alerts.remove-global-mod-success": "User is no longer global moderator.", "alerts.remove-global-mod-success": "User is no longer global moderator.",
"alerts.make-moderator-success": "User is now moderator.", "alerts.make-moderator-success": "המשתמש מנהל קבוצה כעת.",
"alerts.confirm-remove-moderator": "Do you really want to remove this moderator?", "alerts.confirm-remove-moderator": "Do you really want to remove this moderator?",
"alerts.remove-moderator-success": "User is no longer moderator.", "alerts.remove-moderator-success": "User is no longer moderator.",
"alerts.confirm-validate-email": "האם אתה רוצה לאמת דואל(ים) למשתמש(ים) האלה?", "alerts.confirm-validate-email": "האם אתה רוצה לאמת דואל(ים) למשתמש(ים) הללו?",
"alerts.validate-email-success": "דואלים אומתו.", "alerts.validate-email-success": "דואלים אומתו.",
"alerts.password-reset-confirm": "האם אתה רוצה לשלוח איפוס סיסמת דואל(ים) למשתמש(ים) האלה?", "alerts.password-reset-confirm": "האם אתה רוצה לשלוח איפוס סיסמת דואל(ים) למשתמש(ים) האלה?",
"alerts.confirm-delete": "<b>אזהרה!</b><br/>האם אתה רוצה למחוק משתמש(ים)?<br/>פעולה זו אינה הפיכה! רק חשבון המשתמש יימחק, הפוסטים והנושאים שלו ישארו.", "alerts.confirm-delete": "<b>אזהרה!</b><br/>האם אתה רוצה למחוק משתמש(ים)?<br/>פעולה זו אינה הפיכה! רק חשבון המשתמש יימחק, הפוסטים והנושאים שלו ישארו.",
"alerts.delete-success": "משתמש(ים) נמחק!", "alerts.delete-success": "משתמש(ים) נמחק!",
"alerts.confirm-purge": "<b>אזהרה!</b><br/>האם אתה באמת רוצה למחוק משתמש(ים) ואת התוכן שלהם? פעולה זו בלתי הפיכה! כל המידע והתכנים של המשתמש ימחקו!", "alerts.confirm-purge": "<b>אזהרה!</b><br/>האם אתה באמת רוצה למחוק משתמש(ים) ואת התוכן שיצרו? פעולה זו בלתי הפיכה! כל המידע והתכנים של המשתמש ימחקו!",
"alerts.create": "צור משתמש", "alerts.create": "צור משתמש",
"alerts.button-create": "צור", "alerts.button-create": "צור",
"alerts.button-cancel": "בטל", "alerts.button-cancel": "בטל",

@ -53,7 +53,7 @@
"topics": "נושאים", "topics": "נושאים",
"posts": "פוסטים", "posts": "פוסטים",
"best": "הגבוה ביותר", "best": "הגבוה ביותר",
"votes": "Votes", "votes": "הצבעות",
"upvoters": "מצביעי בעד", "upvoters": "מצביעי בעד",
"upvoted": "הוצבע בעד", "upvoted": "הוצבע בעד",
"downvoters": "מצביעי נגד", "downvoters": "מצביעי נגד",
@ -107,5 +107,5 @@
"edited": "נערך", "edited": "נערך",
"disabled": "לא מאופשר", "disabled": "לא מאופשר",
"select": "בחר", "select": "בחר",
"user-search-prompt": "Type something here to find users..." "user-search-prompt": "נסה כאן למציאת משתמשים"
} }

@ -1,5 +1,5 @@
{ {
"chat.chatting_with": "Chat with", "chat.chatting_with": "לשוחח עם",
"chat.placeholder": "הקלד את הודעת הצ'אט כאן, לחץ אנטר לשליחה", "chat.placeholder": "הקלד את הודעת הצ'אט כאן, לחץ אנטר לשליחה",
"chat.send": "שלח", "chat.send": "שלח",
"chat.no_active": "אין לך צ'אטים פעילים", "chat.no_active": "אין לך צ'אטים פעילים",
@ -12,7 +12,7 @@
"chat.recent-chats": "צ'אטים אחרונים", "chat.recent-chats": "צ'אטים אחרונים",
"chat.contacts": "אנשי קשר", "chat.contacts": "אנשי קשר",
"chat.message-history": "היסטוריית הודעות", "chat.message-history": "היסטוריית הודעות",
"chat.options": "Chat options", "chat.options": "אפשרויות לשיחה",
"chat.pop-out": "הוצא את חלון הצ'אט", "chat.pop-out": "הוצא את חלון הצ'אט",
"chat.minimize": "צמצם", "chat.minimize": "צמצם",
"chat.maximize": "הרחב", "chat.maximize": "הרחב",
@ -21,17 +21,17 @@
"chat.three_months": "3 חודשים", "chat.three_months": "3 חודשים",
"chat.delete_message_confirm": "האם אתה בטוח שברצונך למחוק הודעה זו?", "chat.delete_message_confirm": "האם אתה בטוח שברצונך למחוק הודעה זו?",
"chat.add-users-to-room": "הוסף משתמשים לצ'אט", "chat.add-users-to-room": "הוסף משתמשים לצ'אט",
"chat.retrieving-users": "Retrieving users...", "chat.retrieving-users": "שולף משתמשים",
"chat.manage-room": "Manage Chat Room", "chat.manage-room": "נהל חדר צ'אט",
"chat.add-user-help": "Search for users here. When selected, the user will be added to the chat. The new user will not be able to see chat messages written before they were added to the conversation.", "chat.add-user-help": "חפש משתמשים כאן. בבחירת משתמש הוא יצטרף לצ'אט. המשתמש החדש יוכל לראות הודעות שנכתבו לפני הצטרפותו.",
"chat.confirm-chat-with-dnd-user": "משתמש זה שינה את הסטטוס שלו ל 'לא להפריע'. אתה עדיין מעוניין לשוחח איתו?", "chat.confirm-chat-with-dnd-user": "משתמש זה שינה את הסטטוס שלו ל 'לא להפריע'. אתה עדיין מעוניין לשוחח איתו?",
"chat.rename-room": "Rename room", "chat.rename-room": "שנה שם של חדר",
"chat.rename-placeholder": "Enter your room name here", "chat.rename-placeholder": "הזן את שם החדר שלך כאן",
"chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.rename-help": "שם החדר המוגדר כאן יהיה זמין לכל המשתתפים בחדר.",
"chat.leave": "Leave Chat", "chat.leave": "עזוב שיחה",
"chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-prompt": "האם אתה בטוח שאתה רוצה לעזוב את השיחה הזו?",
"chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.leave-help": "עזיבת צ'אט זה תסיר אותך מהתכתבות עתידית בצ'אט זה. אם תתווסף מחדש בעתיד, לא תראה כל היסטוריית צ'אט שלפני הצטרפותך מחדש.",
"chat.in-room": "In this room", "chat.in-room": "בתוך החדר הזה",
"composer.compose": "צור", "composer.compose": "צור",
"composer.show_preview": "הצג תצוגה מקדימה", "composer.show_preview": "הצג תצוגה מקדימה",
"composer.hide_preview": "הסתר תצוגה מקדימה", "composer.hide_preview": "הסתר תצוגה מקדימה",

@ -9,7 +9,7 @@
"continue_to": "המשך ל %1", "continue_to": "המשך ל %1",
"return_to": "חזור ל %1", "return_to": "חזור ל %1",
"new_notification": "התראה חדשה", "new_notification": "התראה חדשה",
"new_notification_from": "You have a new Notification from %1", "new_notification_from": "יש לך התראה חדשה מ %1",
"you_have_unread_notifications": "יש לך התראות שלא נקראו.", "you_have_unread_notifications": "יש לך התראות שלא נקראו.",
"all": "הכל", "all": "הכל",
"topics": "נושאים", "topics": "נושאים",
@ -51,14 +51,14 @@
"notification_only": "התראות בלבד", "notification_only": "התראות בלבד",
"email_only": "דוא\"ל בלבד", "email_only": "דוא\"ל בלבד",
"notification_and_email": "התראות & דוא\"ל", "notification_and_email": "התראות & דוא\"ל",
"notificationType_upvote": "When someone upvotes your post", "notificationType_upvote": "כאשר מישהו מצביע בעד הפוסט שלך",
"notificationType_new-topic": "When someone you follow posts a topic", "notificationType_new-topic": "כשמישהו שאתה עוקב אחריו פרסם נושא",
"notificationType_new-reply": "When a new reply is posted in a topic you are watching", "notificationType_new-reply": "כשתגובה חדשה מפורסמת בנושא שאתה צופה בו",
"notificationType_follow": "When someone starts following you", "notificationType_follow": "כשמישהו מתחיל לעקוב אחריך",
"notificationType_new-chat": "When you receive a chat message", "notificationType_new-chat": "כשאתה מקבל הודעת צאט",
"notificationType_group-invite": "When you receive a group invite", "notificationType_group-invite": "כשאתה מקבל הזמנה מקבוצה",
"notificationType_new-register": "When someone gets added to registration queue", "notificationType_new-register": "כאשר מישהו מתווסף לתור הרישום",
"notificationType_post-queue": "When a new post is queued", "notificationType_post-queue": "כשהודעה חדשה נכנסת לתור",
"notificationType_new-post-flag": "When a post is flagged", "notificationType_new-post-flag": "כאשר פוסט מסומן",
"notificationType_new-user-flag": "When a user is flagged" "notificationType_new-user-flag": "כאשר משתמש מסומן"
} }

@ -35,11 +35,11 @@
"view-history": "ערוך היסטוריה", "view-history": "ערוך היסטוריה",
"bookmark_instructions": "לחץ כאן לחזור לפוסט האחרון שקראת בנושא הזה.", "bookmark_instructions": "לחץ כאן לחזור לפוסט האחרון שקראת בנושא הזה.",
"flag_title": "דווח על פוסט זה למנהל", "flag_title": "דווח על פוסט זה למנהל",
"merged_message": "This topic has been merged into <a href=\"/topic/%1\">%2</a>", "merged_message": "נושא זה מוזג עם <a href=\"/topic/%1\">%2</a>",
"deleted_message": "נושא זה נמחק. רק משתמשים עם ההרשאות המתאימות יכולים לצפות בו.", "deleted_message": "נושא זה נמחק. רק משתמשים עם ההרשאות המתאימות יכולים לצפות בו.",
"following_topic.message": "מעתה, תקבל הודעות כאשר מישהו יעלה פוסט לנושא זה.", "following_topic.message": "מעתה, תקבל הודעות כאשר מישהו יעלה פוסט לנושא זה.",
"not_following_topic.message": "תוכל לראות נושא זה ברשימת הנושאים שלא נקראו, אולם לא תוכל לקבל התראות כשמישהו יעלה פוסט על נושא זה.", "not_following_topic.message": "תוכל לראות נושא זה ברשימת הנושאים שלא נקראו, אולם לא תוכל לקבל התראות כשמישהו יעלה פוסט על נושא זה.",
"ignoring_topic.message": "You will no longer see this topic in the unread topics list. You will be notified when you are mentioned or your post is up voted.", "ignoring_topic.message": "לא תוכל לראות עוד נושא זה ברשימת הנושאים של נקראו. תקבל הודעה כשאתה תוזכר או כשהפוסט שלך יקבל הצבעה חיובית",
"login_to_subscribe": "אנא הרשם או התחבר על-מנת לעקוב אחר נושא זה.", "login_to_subscribe": "אנא הרשם או התחבר על-מנת לעקוב אחר נושא זה.",
"markAsUnreadForAll.success": "נושא זה סומן כלא נקרא לכולם.", "markAsUnreadForAll.success": "נושא זה סומן כלא נקרא לכולם.",
"mark_unread": "סמן כלא נקרא", "mark_unread": "סמן כלא נקרא",
@ -52,8 +52,8 @@
"watching": "עוקב", "watching": "עוקב",
"not-watching": "לא עוקב", "not-watching": "לא עוקב",
"ignoring": "מתעלם", "ignoring": "מתעלם",
"watching.description": "Notify me of new replies.<br/>Show topic in unread.", "watching.description": "הודע לי על תגובות חדשות. <br/>הצג נושא חדש ברשימת הלא נקראו.",
"not-watching.description": "Do not notify me of new replies.<br/>Show topic in unread if category is not ignored.", "not-watching.description": "אל תיידע אותי על תגובות חדשות. <br/>הצג נושא חדש ברשימת הלא נקראו במידה ובחרתי לא להתעלם מקבוצת הדיון",
"ignoring.description": "Do not notify me of new replies.<br/>Do not show topic in unread.", "ignoring.description": "Do not notify me of new replies.<br/>Do not show topic in unread.",
"thread_tools.title": "כלי נושא", "thread_tools.title": "כלי נושא",
"thread_tools.markAsUnreadForAll": "סמן לא נקרא לכולם", "thread_tools.markAsUnreadForAll": "סמן לא נקרא לכולם",
@ -127,5 +127,5 @@
"link_back": "תגובה: [%1](%2)", "link_back": "תגובה: [%1](%2)",
"diffs.title": "Post Edit History", "diffs.title": "Post Edit History",
"diffs.description": "This post has <strong>%1</strong> revisions. Click one of the revisions below to see the post content at that point in time.", "diffs.description": "This post has <strong>%1</strong> revisions. Click one of the revisions below to see the post content at that point in time.",
"diffs.no-revisions-description": "This post has <strong>%1</strong> revisions." "diffs.no-revisions-description": "לפוסט זה יש <strong>%1</strong>גרסאות"
} }

@ -29,7 +29,7 @@
"ignored": "התעלם", "ignored": "התעלם",
"followers": "עוקבים", "followers": "עוקבים",
"following": "עוקב אחרי", "following": "עוקב אחרי",
"aboutme": "עליי", "aboutme": "אודותי",
"signature": "חתימה", "signature": "חתימה",
"birthday": "יום הולדת", "birthday": "יום הולדת",
"chat": "צ'אט", "chat": "צ'אט",
@ -66,7 +66,7 @@
"upload_a_picture": "העלה תמונה", "upload_a_picture": "העלה תמונה",
"remove_uploaded_picture": "מחק את התמונה שהועלתה", "remove_uploaded_picture": "מחק את התמונה שהועלתה",
"upload_cover_picture": "העלה תמונת נושא", "upload_cover_picture": "העלה תמונת נושא",
"remove_cover_picture_confirm": "האם אתה בטוח שאתה רוצה למחוק את תמונת הקאבר?", "remove_cover_picture_confirm": "האם אתה בטוח שאתה רוצה למחוק את תמונת הרקע?",
"crop_picture": "חתוך תמונה", "crop_picture": "חתוך תמונה",
"upload_cropped_picture": "חתוך והעלה", "upload_cropped_picture": "חתוך והעלה",
"settings": "הגדרות", "settings": "הגדרות",

@ -1,7 +1,7 @@
{ {
"alert.confirm-rebuild-and-restart": "Are you sure you wish to rebuild and restart NodeBB?", "alert.confirm-rebuild-and-restart": "Weet u zeker dat u de NodeBB bestanden wilt hergenereren en NodeBB opnieuw wilt opstarten?",
"alert.confirm-restart": "Weet u zeker dat u NodeBB opnieuw wilt opstarten?", "alert.confirm-restart": "Weet u zeker dat u NodeBB opnieuw wilt opstarten?",
"acp-title": "%1 | NodeBB Administratiepaneel", "acp-title": "%1 | NodeBB Administrator Controle Paneel",
"settings-header-contents": "Inhoud" "settings-header-contents": "Inhoud"
} }

@ -1,21 +1,21 @@
{ {
"users": "Users", "users": "Gebruikers",
"edit": "Edit", "edit": "Aanpassen",
"make-admin": "Make Admin", "make-admin": "Maak administrator",
"remove-admin": "Remove Admin", "remove-admin": "Verwijder administrator",
"validate-email": "Validate Email", "validate-email": "Bevestig Email",
"send-validation-email": "Send Validation Email", "send-validation-email": "Verstuur Email bevestiging",
"password-reset-email": "Send Password Reset Email", "password-reset-email": "Verstuur wachtwoord herstel email",
"ban": "Ban User(s)", "ban": "Verban gebruiker(s)",
"temp-ban": "Ban User(s) Temporarily", "temp-ban": "Verban gebruiker(s) tijdelijk",
"unban": "Unban User(s)", "unban": "Unban User(s)",
"reset-lockout": "Reset Lockout", "reset-lockout": "Reset Lockout",
"reset-flags": "Reset Flags", "reset-flags": "Reset Flags",
"delete": "Delete User(s)", "delete": "Verwijder gebruiker(s)",
"purge": "Delete User(s) and Content", "purge": "Verwijder gebruiker(s) en inhoud",
"download-csv": "Download CSV", "download-csv": "Download CSV",
"invite": "Invite", "invite": "Uitnodigen",
"new": "New User", "new": "Nieuwe gebruiker",
"pills.latest": "Latest Users", "pills.latest": "Latest Users",
"pills.unvalidated": "Not Validated", "pills.unvalidated": "Not Validated",

@ -2,7 +2,7 @@
"authentication": "Uwierzytelnianie", "authentication": "Uwierzytelnianie",
"allow-local-login": "Zezwalaj na lokalne logowanie", "allow-local-login": "Zezwalaj na lokalne logowanie",
"require-email-confirmation": "Wymagaj potwierdzenia adresu email", "require-email-confirmation": "Wymagaj potwierdzenia adresu email",
"email-confirm-interval": "Użytkownik nie może ponownie wysłać email z potwierdzeniem, dopóki nie minie", "email-confirm-interval": "Użytkownik nie może ponownie wysłać e-maila z potwierdzeniem, dopóki nie minie",
"email-confirm-email2": "minut", "email-confirm-email2": "minut",
"allow-login-with": "Zezwalaj na logowanie przy użyciu", "allow-login-with": "Zezwalaj na logowanie przy użyciu",
"allow-login-with.username-email": "Nazwy użytkownika lub adresu email", "allow-login-with.username-email": "Nazwy użytkownika lub adresu email",

@ -18,7 +18,7 @@
"invalid-username-or-password": "Podaj nazwę użytkownika i hasło", "invalid-username-or-password": "Podaj nazwę użytkownika i hasło",
"invalid-search-term": "Błędne wyszukiwane wyrażenie", "invalid-search-term": "Błędne wyszukiwane wyrażenie",
"invalid-url": "Błąd w adresie URL.", "invalid-url": "Błąd w adresie URL.",
"csrf-invalid": "Logowanie nie powiodło się. Przyczyną jest zapewne wygaśnięcie sesji. Spróbój ponownie.", "csrf-invalid": "Logowanie nie powiodło się, zapewne na skutek wygaśnięcia sesji. Spróbuj ponownie.",
"invalid-pagination-value": "Błędna wartość paginacji, zakres od %1 do %2", "invalid-pagination-value": "Błędna wartość paginacji, zakres od %1 do %2",
"username-taken": "Login zajęty", "username-taken": "Login zajęty",
"email-taken": "Email zajęty", "email-taken": "Email zajęty",

@ -16,7 +16,7 @@
"please_log_in": "Proszę się zalogować", "please_log_in": "Proszę się zalogować",
"logout": "Wyloguj się", "logout": "Wyloguj się",
"posting_restriction_info": "Posty mogą pisać tylko zarejestrowani użytkownicy forum. Kliknij tutaj, aby się zalogować.", "posting_restriction_info": "Posty mogą pisać tylko zarejestrowani użytkownicy forum. Kliknij tutaj, aby się zalogować.",
"welcome_back": "Witamy ponownie!", "welcome_back": "Witaj ponownie,",
"you_have_successfully_logged_in": "Logowanie powiodło się.", "you_have_successfully_logged_in": "Logowanie powiodło się.",
"save_changes": "Zapisz zmiany", "save_changes": "Zapisz zmiany",
"save": "Zapisz", "save": "Zapisz",

@ -2,7 +2,7 @@
"reset_password": "Zresetuj hasło", "reset_password": "Zresetuj hasło",
"update_password": "Zmień hasło", "update_password": "Zmień hasło",
"password_changed.title": "Hasło zmienione", "password_changed.title": "Hasło zmienione",
"password_changed.message": "<p>Hasło zostało zmienione pomyślnie. <a href=\"/login\">Zaloguj się ponownie</a>.", "password_changed.message": "<p>Hasło zostało zmienione. <a href=\"/login\">Zaloguj się ponownie</a>.",
"wrong_reset_code.title": "Nieprawidłowy kod resetujący", "wrong_reset_code.title": "Nieprawidłowy kod resetujący",
"wrong_reset_code.message": "Wprowadzony kod resetujący jest nieprawidłowy. Spróbuj ponownie lub <a href=\"/reset\">uzyskaj nowy kod</a>.", "wrong_reset_code.message": "Wprowadzony kod resetujący jest nieprawidłowy. Spróbuj ponownie lub <a href=\"/reset\">uzyskaj nowy kod</a>.",
"new_password": "Nowe hasło", "new_password": "Nowe hasło",

@ -28,8 +28,8 @@
"chat.rename-room": "Rename room", "chat.rename-room": "Rename room",
"chat.rename-placeholder": "Enter your room name here", "chat.rename-placeholder": "Enter your room name here",
"chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.rename-help": "The room name set here will be viewable by all participants in the room.",
"chat.leave": "Leave Chat", "chat.leave": "Покинуть Чат",
"chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-prompt": "Вы действительно хотите покинуть чат?",
"chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.",
"chat.in-room": "In this room", "chat.in-room": "In this room",
"composer.compose": "Редактор сообщений", "composer.compose": "Редактор сообщений",

@ -6,8 +6,8 @@
"titles": "Названия", "titles": "Названия",
"titles-posts": "Названия и записи", "titles-posts": "Названия и записи",
"match-words": "Match words", "match-words": "Match words",
"all": "All", "all": "Все",
"any": "Any", "any": "Любые",
"posted-by": "В именах авторов записей", "posted-by": "В именах авторов записей",
"in-categories": "В сообществах", "in-categories": "В сообществах",
"search-child-categories": "Искать в рубриках", "search-child-categories": "Искать в рубриках",

@ -3,7 +3,7 @@
"sorting.post-default": "默认帖子排序", "sorting.post-default": "默认帖子排序",
"sorting.oldest-to-newest": "从旧到新", "sorting.oldest-to-newest": "从旧到新",
"sorting.newest-to-oldest": "从新到旧", "sorting.newest-to-oldest": "从新到旧",
"sorting.most-votes": "最多投票", "sorting.most-votes": "最多赞同",
"sorting.most-posts": "最多回复", "sorting.most-posts": "最多回复",
"sorting.topic-default": "默认主题排序", "sorting.topic-default": "默认主题排序",
"length": "帖子长度", "length": "帖子长度",

@ -53,7 +53,7 @@
"topics": "主题", "topics": "主题",
"posts": "帖子", "posts": "帖子",
"best": "最佳", "best": "最佳",
"votes": "投票", "votes": "赞同",
"upvoters": "顶的人", "upvoters": "顶的人",
"upvoted": "顶", "upvoted": "顶",
"downvoters": "踩的人", "downvoters": "踩的人",

@ -118,7 +118,7 @@
"sort_by": "排序", "sort_by": "排序",
"oldest_to_newest": "从旧到新", "oldest_to_newest": "从旧到新",
"newest_to_oldest": "从新到旧", "newest_to_oldest": "从新到旧",
"most_votes": "最多投票", "most_votes": "最多赞同",
"most_posts": "最多回复", "most_posts": "最多回复",
"stale.title": "接受建议并创建新主题?", "stale.title": "接受建议并创建新主题?",
"stale.warning": "您回复的主题已经很古老了,是否发布新主题并引用此主题的内容?", "stale.warning": "您回复的主题已经很古老了,是否发布新主题并引用此主题的内容?",

@ -182,6 +182,19 @@ define('admin/extend/plugins', ['jqueryui', 'translator', 'benchpress'], functio
return app.alertError(err.message); return app.alertError(err.message);
} }
$('#order-active-plugins-modal').modal('hide'); $('#order-active-plugins-modal').modal('hide');
app.alert({
alert_id: 'plugin_reordered',
title: '[[admin/extend/plugins:alert.reorder]]',
message: '[[admin/extend/plugins:alert.reorder-success]]',
type: 'success',
timeout: 5000,
clickfn: function () {
require(['admin/modules/instance'], function (instance) {
instance.rebuildAndRestart();
});
},
});
}); });
}); });

@ -109,9 +109,8 @@ $(document).ready(function () {
url = ajaxify.removeRelativePath(url.replace(/^\/|\/$/g, '')).toLowerCase(); url = ajaxify.removeRelativePath(url.replace(/^\/|\/$/g, '')).toLowerCase();
var isClientToAdmin = url.startsWith('admin') && window.location.pathname.indexOf(RELATIVE_PATH + '/admin') !== 0; var isClientToAdmin = url.startsWith('admin') && window.location.pathname.indexOf(RELATIVE_PATH + '/admin') !== 0;
var isAdminToClient = !url.startsWith('admin') && window.location.pathname.indexOf(RELATIVE_PATH + '/admin') === 0; var isAdminToClient = !url.startsWith('admin') && window.location.pathname.indexOf(RELATIVE_PATH + '/admin') === 0;
var uploadsOrApi = url.startsWith('assets/') || url.startsWith('uploads') || url.startsWith('api');
if (isClientToAdmin || isAdminToClient || uploadsOrApi) { if (isClientToAdmin || isAdminToClient) {
window.open(RELATIVE_PATH + '/' + url, '_top'); window.open(RELATIVE_PATH + '/' + url, '_top');
return true; return true;
} }
@ -390,6 +389,13 @@ $(document).ready(function () {
return; return;
} }
// Default behaviour for uploads and direct links to API urls
if (internalLink && ['/uploads', '/assets/uploads/', '/api/'].some(function (prefix) {
return String(_self.pathname).startsWith(config.relative_path + prefix);
})) {
return;
}
if (hrefEmpty(this.href) || this.protocol === 'javascript:' || $(this).attr('href') === '#') { if (hrefEmpty(this.href) || this.protocol === 'javascript:' || $(this).attr('href') === '#') {
return e.preventDefault(); return e.preventDefault();
} }

@ -15,6 +15,8 @@ define('forum/topic/diffs', ['forum/topic/images', 'benchpress', 'translator'],
return app.alertError(err.message); return app.alertError(err.message);
} }
timestamps.unshift(Date.now());
Benchpress.parse('partials/modals/post_history', { Benchpress.parse('partials/modals/post_history', {
diffs: timestamps.map(function (timestamp) { diffs: timestamps.map(function (timestamp) {
timestamp = parseInt(timestamp, 10); timestamp = parseInt(timestamp, 10);

@ -9,6 +9,7 @@ var meta = require('../../meta');
var plugins = require('../../plugins'); var plugins = require('../../plugins');
var privileges = require('../../privileges'); var privileges = require('../../privileges');
var categories = require('../../categories'); var categories = require('../../categories');
var notifications = require('../../notifications');
var db = require('../../database'); var db = require('../../database');
var helpers = require('../helpers'); var helpers = require('../helpers');
var accountHelpers = require('./helpers'); var accountHelpers = require('./helpers');
@ -180,15 +181,6 @@ settingsController.get = function (req, res, callback) {
}; };
function getNotificationSettings(userData, callback) { function getNotificationSettings(userData, callback) {
var types = [
'notificationType_upvote',
'notificationType_new-topic',
'notificationType_new-reply',
'notificationType_follow',
'notificationType_new-chat',
'notificationType_group-invite',
];
var privilegedTypes = []; var privilegedTypes = [];
async.waterfall([ async.waterfall([
@ -206,8 +198,7 @@ function getNotificationSettings(userData, callback) {
privilegedTypes.push('notificationType_new-user-flag'); privilegedTypes.push('notificationType_new-user-flag');
} }
plugins.fireHook('filter:user.notificationTypes', { plugins.fireHook('filter:user.notificationTypes', {
userData: userData, types: notifications.baseTypes.slice(),
types: types,
privilegedTypes: privilegedTypes, privilegedTypes: privilegedTypes,
}, next); }, next);
}, },

@ -4,7 +4,7 @@ var async = require('async');
var meta = require('../../meta'); var meta = require('../../meta');
var emailer = require('../../emailer'); var emailer = require('../../emailer');
var plugins = require('../../plugins'); var notifications = require('../../notifications');
var settingsController = module.exports; var settingsController = module.exports;
@ -45,32 +45,12 @@ function renderEmail(req, res, next) {
} }
function renderUser(req, res, next) { function renderUser(req, res, next) {
var types = [
'notificationType_upvote',
'notificationType_new-topic',
'notificationType_new-reply',
'notificationType_follow',
'notificationType_new-chat',
'notificationType_group-invite',
];
var privilegedTypes = [
'notificationType_new-register',
'notificationType_post-queue',
'notificationType_new-post-flag',
'notificationType_new-user-flag',
];
async.waterfall([ async.waterfall([
function (next) { function (next) {
plugins.fireHook('filter:user.notificationTypes', { notifications.getAllNotificationTypes(next);
userData: {},
types: types,
privilegedTypes: privilegedTypes,
}, next);
}, },
function (results) { function (notificationTypes) {
var notificationSettings = results.types.concat(results.privilegedTypes).map(function (type) { var notificationSettings = notificationTypes.map(function (type) {
return { return {
name: type, name: type,
label: '[[notifications:' + type + ']]', label: '[[notifications:' + type + ']]',

@ -387,8 +387,8 @@ authenticationController.localLogin = function (req, username, password, next) {
userData: function (next) { userData: function (next) {
db.getObjectFields('user:' + uid, ['password', 'passwordExpiry'], next); db.getObjectFields('user:' + uid, ['password', 'passwordExpiry'], next);
}, },
isAdmin: function (next) { isAdminOrGlobalMod: function (next) {
user.isAdministrator(uid, next); user.isAdminOrGlobalMod(uid, next);
}, },
banned: function (next) { banned: function (next) {
user.isBanned(uid, next); user.isBanned(uid, next);
@ -398,9 +398,9 @@ authenticationController.localLogin = function (req, username, password, next) {
function (result, next) { function (result, next) {
userData = result.userData; userData = result.userData;
userData.uid = uid; userData.uid = uid;
userData.isAdmin = result.isAdmin; userData.isAdminOrGlobalMod = result.isAdminOrGlobalMod;
if (!result.isAdmin && parseInt(meta.config.allowLocalLogin, 10) === 0) { if (!result.isAdminOrGlobalMod && parseInt(meta.config.allowLocalLogin, 10) === 0) {
return next(new Error('[[error:local-login-disabled]]')); return next(new Error('[[error:local-login-disabled]]'));
} }

@ -11,6 +11,7 @@ var _ = require('lodash');
var plugins = require('../plugins'); var plugins = require('../plugins');
var file = require('../file'); var file = require('../file');
var db = require('../database');
var viewsPath = nconf.get('views_dir'); var viewsPath = nconf.get('views_dir');
@ -44,20 +45,22 @@ function processImports(paths, templatePath, source, callback) {
} }
Templates.processImports = processImports; Templates.processImports = processImports;
function getTemplateDirs(callback) { function getTemplateDirs(activePlugins, callback) {
var pluginTemplates = _.values(plugins.pluginsData) var pluginTemplates = activePlugins.map(function (id) {
.filter(function (pluginData) { if (id.startsWith('nodebb-theme-')) {
return !pluginData.id.startsWith('nodebb-theme-'); return nconf.get('theme_templates_path');
}) }
.map(function (pluginData) { if (!plugins.pluginsData[id]) {
return path.join(__dirname, '../../node_modules/', pluginData.id, pluginData.templates || 'templates'); return '';
}); }
return path.join(__dirname, '../../node_modules/', id, plugins.pluginsData[id].templates || 'templates');
}).filter(Boolean);
var themeConfig = require(nconf.get('theme_config')); var themeConfig = require(nconf.get('theme_config'));
var theme = themeConfig.baseTheme; var theme = themeConfig.baseTheme;
var themePath; var themePath;
var themeTemplates = [nconf.get('theme_templates_path')]; var themeTemplates = [];
while (theme) { while (theme) {
themePath = path.join(nconf.get('themes_path'), theme); themePath = path.join(nconf.get('themes_path'), theme);
themeConfig = require(path.join(themePath, 'theme.json')); themeConfig = require(path.join(themePath, 'theme.json'));
@ -118,6 +121,9 @@ function compile(callback) {
function (next) { function (next) {
mkdirp(viewsPath, function (err) { next(err); }); mkdirp(viewsPath, function (err) { next(err); });
}, },
function (next) {
db.getSortedSetRange('plugins:active', 0, -1, next);
},
getTemplateDirs, getTemplateDirs,
getTemplateFiles, getTemplateFiles,
function (files, next) { function (files, next) {

@ -17,6 +17,36 @@ var emailer = require('./emailer');
var Notifications = module.exports; var Notifications = module.exports;
Notifications.baseTypes = [
'notificationType_upvote',
'notificationType_new-topic',
'notificationType_new-reply',
'notificationType_follow',
'notificationType_new-chat',
'notificationType_group-invite',
];
Notifications.privilegedTypes = [
'notificationType_new-register',
'notificationType_post-queue',
'notificationType_new-post-flag',
'notificationType_new-user-flag',
];
Notifications.getAllNotificationTypes = function (callback) {
async.waterfall([
function (next) {
plugins.fireHook('filter:user.notificationTypes', {
types: Notifications.baseTypes.slice(),
privilegedTypes: Notifications.privilegedTypes.slice(),
}, next);
},
function (results, next) {
next(null, results.types.concat(results.privilegedTypes));
},
], callback);
};
Notifications.startJobs = function () { Notifications.startJobs = function () {
winston.verbose('[notifications.init] Registering jobs.'); winston.verbose('[notifications.init] Registering jobs.');
new cron('*/30 * * * *', Notifications.prune, null, true); new cron('*/30 * * * *', Notifications.prune, null, true);

@ -27,7 +27,7 @@ Diffs.get = function (pid, since, callback) {
function (timestamps, next) { function (timestamps, next) {
// Pass those made after `since`, and create keys // Pass those made after `since`, and create keys
const keys = timestamps.filter(function (timestamp) { const keys = timestamps.filter(function (timestamp) {
return (parseInt(timestamp, 10) || 0) > since; return (parseInt(timestamp, 10) || 0) >= since;
}).map(function (timestamp) { }).map(function (timestamp) {
return 'diff:' + pid + '.' + timestamp; return 'diff:' + pid + '.' + timestamp;
}); });

@ -6,6 +6,7 @@ var async = require('async');
var meta = require('../meta'); var meta = require('../meta');
var db = require('../database'); var db = require('../database');
var plugins = require('../plugins'); var plugins = require('../plugins');
var notifications = require('../notifications');
module.exports = function (User) { module.exports = function (User) {
User.getSettings = function (uid, callback) { User.getSettings = function (uid, callback) {
@ -81,12 +82,14 @@ module.exports = function (User) {
settings.delayImageLoading = parseInt(getSetting(settings, 'delayImageLoading', 1), 10) === 1; settings.delayImageLoading = parseInt(getSetting(settings, 'delayImageLoading', 1), 10) === 1;
settings.bootswatchSkin = settings.bootswatchSkin || meta.config.bootswatchSkin || 'default'; settings.bootswatchSkin = settings.bootswatchSkin || meta.config.bootswatchSkin || 'default';
settings.scrollToMyPost = parseInt(getSetting(settings, 'scrollToMyPost', 1), 10) === 1; settings.scrollToMyPost = parseInt(getSetting(settings, 'scrollToMyPost', 1), 10) === 1;
settings.notificationType_upvote = getSetting(settings, 'notificationType_upvote', 'notification');
settings['notificationType_new-topic'] = getSetting(settings, 'notificationType_new-topic', 'notification'); notifications.getAllNotificationTypes(next);
settings['notificationType_new-reply'] = getSetting(settings, 'notificationType_new-reply', 'notification'); },
settings.notificationType_follow = getSetting(settings, 'notificationType_follow', 'notification'); function (notificationTypes, next) {
settings['notificationType_new-chat'] = getSetting(settings, 'notificationType_new-chat', 'notification'); notificationTypes.forEach(function (notificationType) {
settings['notificationType_group-invite'] = getSetting(settings, 'notificationType_group-invite', 'notification'); settings[notificationType] = getSetting(settings, notificationType, 'notification');
});
next(null, settings); next(null, settings);
}, },
], callback); ], callback);
@ -139,26 +142,20 @@ module.exports = function (User) {
upvoteNotifFreq: data.upvoteNotifFreq, upvoteNotifFreq: data.upvoteNotifFreq,
}; };
var notificationTypes = [
'notificationType_upvote', 'notificationType_new-topic', 'notificationType_new-reply',
'notificationType_follow', 'notificationType_new-chat', 'notificationType_group-invite',
'notificationType_new-register', 'notificationType_post-queue', 'notificationType_new-post-flag',
'notificationType_new-user-flag',
];
notificationTypes.forEach(function (notificationType) {
if (data[notificationType]) {
settings[notificationType] = data[notificationType];
}
});
if (data.bootswatchSkin) { if (data.bootswatchSkin) {
settings.bootswatchSkin = data.bootswatchSkin; settings.bootswatchSkin = data.bootswatchSkin;
} }
async.waterfall([ async.waterfall([
function (next) { function (next) {
notifications.getAllNotificationTypes(next);
},
function (notificationTypes, next) {
notificationTypes.forEach(function (notificationType) {
if (data[notificationType]) {
settings[notificationType] = data[notificationType];
}
});
plugins.fireHook('filter:user.saveSettings', { settings: settings, data: data }, next); plugins.fireHook('filter:user.saveSettings', { settings: settings, data: data }, next);
}, },
function (result, next) { function (result, next) {

@ -1,6 +1,6 @@
<script> <script>
window.addEventListener('load', function () { window.addEventListener('load', function () {
define('/assets/templates/500.js', function () { define(config.relative_path + '/assets/templates/500.js', function () {
function compiled(helpers, context, get, iter, helper) { function compiled(helpers, context, get, iter, helper) {
return '<div class="alert alert-danger">\n\t<strong>[[global:500.title]]</strong>\n\t<p>[[global:500.message]]</p>\n\t<p>' + return '<div class="alert alert-danger">\n\t<strong>[[global:500.title]]</strong>\n\t<p>[[global:500.message]]</p>\n\t<p>' +
helpers.__escape(get(context && context['path'])) + '</p>\n\t' + helpers.__escape(get(context && context['path'])) + '</p>\n\t' +

Loading…
Cancel
Save