From 2f6b9eb80a76f131f47e5ee7f9617fd3fe4ba1db Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 28 Jul 2015 09:35:10 -0400 Subject: [PATCH 01/15] updated theme minvers --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 72aa261a1c..126b8b2874 100644 --- a/package.json +++ b/package.json @@ -49,8 +49,8 @@ "nodebb-plugin-spam-be-gone": "^0.4.0", "nodebb-rewards-essentials": "^0.0.1", "nodebb-theme-lavender": "^1.0.48", - "nodebb-theme-persona": "^1.0.16", - "nodebb-theme-vanilla": "^2.0.14", + "nodebb-theme-persona": "^1.0.20", + "nodebb-theme-vanilla": "^2.0.16", "nodebb-widget-essentials": "^1.0.2", "npm": "^2.1.4", "passport": "^0.2.1", From fcebfd8f3921a9010121faf61ce2ff885df8d117 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 28 Jul 2015 09:37:29 -0400 Subject: [PATCH 02/15] latest fallbacks --- public/language/ar/groups.json | 1 + public/language/bg/groups.json | 11 ++++++----- public/language/bn/groups.json | 1 + public/language/cs/groups.json | 1 + public/language/da/groups.json | 11 ++++++----- public/language/de/groups.json | 1 + public/language/el/groups.json | 1 + public/language/en@pirate/groups.json | 1 + public/language/en_US/groups.json | 1 + public/language/es/groups.json | 11 ++++++----- public/language/et/groups.json | 1 + public/language/fa_IR/groups.json | 1 + public/language/fi/groups.json | 1 + public/language/fr/groups.json | 11 ++++++----- public/language/he/groups.json | 1 + public/language/hu/groups.json | 1 + public/language/id/groups.json | 1 + public/language/it/groups.json | 1 + public/language/ja/groups.json | 1 + public/language/ko/groups.json | 1 + public/language/lt/groups.json | 1 + public/language/ms/groups.json | 1 + public/language/nb/groups.json | 1 + public/language/nl/groups.json | 1 + public/language/pl/groups.json | 1 + public/language/pt_BR/groups.json | 1 + public/language/ro/groups.json | 1 + public/language/ru/groups.json | 1 + public/language/sc/groups.json | 1 + public/language/sk/groups.json | 1 + public/language/sr/groups.json | 1 + public/language/sv/groups.json | 1 + public/language/th/groups.json | 1 + public/language/tr/groups.json | 1 + public/language/vi/groups.json | 1 + public/language/zh_CN/groups.json | 1 + public/language/zh_TW/groups.json | 1 + 37 files changed, 57 insertions(+), 20 deletions(-) diff --git a/public/language/ar/groups.json b/public/language/ar/groups.json index 4fe45b075e..ae753b2d42 100644 --- a/public/language/ar/groups.json +++ b/public/language/ar/groups.json @@ -38,6 +38,7 @@ "details.private_help": "في حالة تفعيل الخيار، الانضمام إلى المجموعة يستلزم قبول مالكها", "details.hidden": "مخفي", "details.hidden_help": "في حالة تفعيل الخيار، لن تظهر المجموعة للعموم والإنضمام إليها سيتلزم دعوة يدوية.", + "details.delete_group": "Delete Group", "event.updated": "تم تحديث بيانات المجموعة", "event.deleted": "تم حذف المجموعة %1", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/bg/groups.json b/public/language/bg/groups.json index db9f29610b..1304f49c36 100644 --- a/public/language/bg/groups.json +++ b/public/language/bg/groups.json @@ -38,11 +38,12 @@ "details.private_help": "Ако е включено, присъединяването към група изисква одобрението на собственика ѝ", "details.hidden": "Скрита", "details.hidden_help": "Ако е включено, тази група няма да бъде извеждана в списъка от групи и потребителите ще трябва да бъдат поканени лично", + "details.delete_group": "Delete Group", "event.updated": "Подробностите за групата бяха обновени", "event.deleted": "Групата „%1“ беше изтрита", - "membership.accept-invitation": "Accept Invitation", - "membership.invitation-pending": "Invitation Pending", - "membership.join-group": "Join Group", - "membership.leave-group": "Leave Group", - "membership.reject": "Reject" + "membership.accept-invitation": "Приемане на поканата", + "membership.invitation-pending": "Чакаща покана", + "membership.join-group": "Присъединяване към групата", + "membership.leave-group": "Напускане на групата", + "membership.reject": "Отхвърляне" } \ No newline at end of file diff --git a/public/language/bn/groups.json b/public/language/bn/groups.json index 9dbffb5a8f..dd582c072a 100644 --- a/public/language/bn/groups.json +++ b/public/language/bn/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/cs/groups.json b/public/language/cs/groups.json index 15aa76b661..7690fb15a5 100644 --- a/public/language/cs/groups.json +++ b/public/language/cs/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/da/groups.json b/public/language/da/groups.json index 7cce8f8fc5..f7094f1ac1 100644 --- a/public/language/da/groups.json +++ b/public/language/da/groups.json @@ -38,11 +38,12 @@ "details.private_help": "Hvis aktiveret, så vil det kræve godkendelse af gruppe ejeren for at tilslutte sig en gruppe", "details.hidden": "Skjult", "details.hidden_help": "Hvis aktiveret, så vil denne gruppe ikke kunne ses i gruppelisten og bruhere skal inviteres manuelt", + "details.delete_group": "Delete Group", "event.updated": "Gruppe detaljer er blevet opdateret", "event.deleted": "Gruppen \"%1\" er blevet slettet", - "membership.accept-invitation": "Accept Invitation", - "membership.invitation-pending": "Invitation Pending", - "membership.join-group": "Join Group", - "membership.leave-group": "Leave Group", - "membership.reject": "Reject" + "membership.accept-invitation": "Acceptér Invitation", + "membership.invitation-pending": "Afventende Invitationer", + "membership.join-group": "Bliv medlem af gruppe", + "membership.leave-group": "Forlad Gruppe", + "membership.reject": "Afvis" } \ No newline at end of file diff --git a/public/language/de/groups.json b/public/language/de/groups.json index 974f35dc02..0f26786358 100644 --- a/public/language/de/groups.json +++ b/public/language/de/groups.json @@ -38,6 +38,7 @@ "details.private_help": "Wenn aktiviert, setzt ein Gruppenbeitritt die Zustimmung eines Gruppenbesitzers voraus", "details.hidden": "Versteckt", "details.hidden_help": "Wenn aktiviert, wird diese Gruppe in der Gruppenliste nicht zu finden sein, und Benutzer werden manuell eingeladen werden müssen.", + "details.delete_group": "Delete Group", "event.updated": "Gruppendetails wurden aktualisiert", "event.deleted": "Die Gruppe \"%1\" wurde gelöscht.", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/el/groups.json b/public/language/el/groups.json index 93f2ba7466..b81d08c2c4 100644 --- a/public/language/el/groups.json +++ b/public/language/el/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/en@pirate/groups.json b/public/language/en@pirate/groups.json index badb766544..1e1623c38f 100644 --- a/public/language/en@pirate/groups.json +++ b/public/language/en@pirate/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/en_US/groups.json b/public/language/en_US/groups.json index badb766544..1e1623c38f 100644 --- a/public/language/en_US/groups.json +++ b/public/language/en_US/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/es/groups.json b/public/language/es/groups.json index df6b609da9..1da9e025e2 100644 --- a/public/language/es/groups.json +++ b/public/language/es/groups.json @@ -38,11 +38,12 @@ "details.private_help": "Si está habilitado, entrar en los grupos requiere aprobación de sus propietarios", "details.hidden": "Oculto", "details.hidden_help": "Si está habilitado, este grupo no aparecerá en los listados de grupos, y los usuarios tendrán que ser invitados manualmente", + "details.delete_group": "Delete Group", "event.updated": "Los detalles del grupo han sido actualizados", "event.deleted": "El grupo \"%1\" ha sido eliminado", - "membership.accept-invitation": "Accept Invitation", - "membership.invitation-pending": "Invitation Pending", - "membership.join-group": "Join Group", - "membership.leave-group": "Leave Group", - "membership.reject": "Reject" + "membership.accept-invitation": "Aceptar Invitación", + "membership.invitation-pending": "Invitación Pendiente", + "membership.join-group": "Unirse al grupo", + "membership.leave-group": "Dejar el grupo", + "membership.reject": "Rechazar" } \ No newline at end of file diff --git a/public/language/et/groups.json b/public/language/et/groups.json index 3761420ae1..1ddeb7ce14 100644 --- a/public/language/et/groups.json +++ b/public/language/et/groups.json @@ -38,6 +38,7 @@ "details.private_help": "Kui sisse lülitatud, siis grupiga liitumine nõuab grupi omaniku nõusolekut", "details.hidden": "Peidetud", "details.hidden_help": "Kui sisse lülitatud, siis seda gruppi ei kuvata gruppide nimekirjas ning liikmed tuleb lisada manuaalselt", + "details.delete_group": "Delete Group", "event.updated": "Grupi lisainformatsiooni on uuendatud", "event.deleted": "Grupp \"%1\" on kustutatud", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/fa_IR/groups.json b/public/language/fa_IR/groups.json index 27558f977a..4309d8390a 100644 --- a/public/language/fa_IR/groups.json +++ b/public/language/fa_IR/groups.json @@ -38,6 +38,7 @@ "details.private_help": "اگر فعال باشد، پیوستن به گروه مستلزم موافقت صاحب گروه است", "details.hidden": "پنهان", "details.hidden_help": "اگر فعال باشد، این گروه در فهرست گروه‌ها پیدا نمی‌شود و کاربران باید دستی فراخوانده شوند", + "details.delete_group": "Delete Group", "event.updated": "جزییات گروه با موفقیت به روز گردید", "event.deleted": "گروه \"%1\" حدف شد", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/fi/groups.json b/public/language/fi/groups.json index f324b87a58..a2cf33e9ce 100644 --- a/public/language/fi/groups.json +++ b/public/language/fi/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/fr/groups.json b/public/language/fr/groups.json index 7298e22cfc..35488f192e 100644 --- a/public/language/fr/groups.json +++ b/public/language/fr/groups.json @@ -38,11 +38,12 @@ "details.private_help": "Si cette case est cochée, rejoindre un groupe nécessite l'accord d'un propriétaire du groupe.", "details.hidden": "Masqué", "details.hidden_help": "Si cette case est cochée, ce groupe n'est pas affiché dans la liste des groupes, et les utilisateurs devront être invités manuellement.", + "details.delete_group": "Delete Group", "event.updated": "Les détails du groupe ont été mis à jour", "event.deleted": "Le groupe \"%1\" a été supprimé", - "membership.accept-invitation": "Accept Invitation", - "membership.invitation-pending": "Invitation Pending", - "membership.join-group": "Join Group", - "membership.leave-group": "Leave Group", - "membership.reject": "Reject" + "membership.accept-invitation": "Accepter l'invitation", + "membership.invitation-pending": "Invitation en attente", + "membership.join-group": "Rejoindre le groupe", + "membership.leave-group": "Quitter le groupe", + "membership.reject": "Refuser" } \ No newline at end of file diff --git a/public/language/he/groups.json b/public/language/he/groups.json index c4e95b17f4..0cb4cafcb8 100644 --- a/public/language/he/groups.json +++ b/public/language/he/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "פרטי הקבוצה עודכנו", "event.deleted": "קבוצת \"%1\" נמחקה", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/hu/groups.json b/public/language/hu/groups.json index 308ce94928..a5332f50b4 100644 --- a/public/language/hu/groups.json +++ b/public/language/hu/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/id/groups.json b/public/language/id/groups.json index c42a61d1fe..d67ca443d1 100644 --- a/public/language/id/groups.json +++ b/public/language/id/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/it/groups.json b/public/language/it/groups.json index 2babcabd07..1718c967ac 100644 --- a/public/language/it/groups.json +++ b/public/language/it/groups.json @@ -38,6 +38,7 @@ "details.private_help": "Se abilitato, l'ingresso ai gruppi richiede l'approvazione di uno dei proprietari", "details.hidden": "Nascosto", "details.hidden_help": "Se abilitato, questo gruppo non sarà visibile nella lista dei gruppi e gli utenti dovranno essere invitati manualmente", + "details.delete_group": "Delete Group", "event.updated": "I dettagli del Gruppo sono stati aggiornati", "event.deleted": "Il gruppo \"%1\" è stato eliminato", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/ja/groups.json b/public/language/ja/groups.json index badb766544..1e1623c38f 100644 --- a/public/language/ja/groups.json +++ b/public/language/ja/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/ko/groups.json b/public/language/ko/groups.json index 1f65474e51..ce5f1c3912 100644 --- a/public/language/ko/groups.json +++ b/public/language/ko/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/lt/groups.json b/public/language/lt/groups.json index cc39bdf99d..a6e81d61e8 100644 --- a/public/language/lt/groups.json +++ b/public/language/lt/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Paslėptas", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "Grupės informacija atnaujinta", "event.deleted": "Grupė \"%1\" pašalinta", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/ms/groups.json b/public/language/ms/groups.json index 8fcf3403c7..3bc71433f1 100644 --- a/public/language/ms/groups.json +++ b/public/language/ms/groups.json @@ -38,6 +38,7 @@ "details.private_help": "Jika dibolehkan, menyertai kumpulan memerlukan kelulusan pemilik kumpulan", "details.hidden": "Sembunyi", "details.hidden_help": "Jika dibolehkan, kumpulan ini tidak akan dijumpai di senarai kumpulan, dan pengguna hendaklah di jemput secara manual", + "details.delete_group": "Delete Group", "event.updated": "Perincian kumpulan telah dikemaskini", "event.deleted": "Kumpulan \"%1\" telah dipadam", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/nb/groups.json b/public/language/nb/groups.json index 09391809c5..62e2979113 100644 --- a/public/language/nb/groups.json +++ b/public/language/nb/groups.json @@ -38,6 +38,7 @@ "details.private_help": "Hvis aktivert, vil medlemskap i grupper kreve godkjennelse fra en gruppe-eier", "details.hidden": "Skjult", "details.hidden_help": "vis aktivert, vil denne gruppen ikke bli funnet i gruppelista, og brukere må inviteres manuellt", + "details.delete_group": "Delete Group", "event.updated": "Gruppedetaljer har blitt oppgradert", "event.deleted": "Gruppen \"%1\" har blitt slettet", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/nl/groups.json b/public/language/nl/groups.json index 8964e9902e..d91ad473b0 100644 --- a/public/language/nl/groups.json +++ b/public/language/nl/groups.json @@ -38,6 +38,7 @@ "details.private_help": "Wanneer ingeschakeld, zal eerst een groepseigenaar goedkeuring moeten verlenen voordat nieuwe leden kunnen toetreden", "details.hidden": "Niet getoond", "details.hidden_help": "Indien geactiveerd zal deze groep niet getoond worden in de groepslijst en zullen gebruikers handmatig uitgenodigd moeten worden.", + "details.delete_group": "Delete Group", "event.updated": "Groepsdetails zijn bijgewerkt", "event.deleted": "De groep \"%1\" is verwijderd", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/pl/groups.json b/public/language/pl/groups.json index 0ded21291d..90c7195a0b 100644 --- a/public/language/pl/groups.json +++ b/public/language/pl/groups.json @@ -38,6 +38,7 @@ "details.private_help": "Jeśli aktywowane, przystępowanie do grup wymaga zatwierdzenia przez właściciela grupy", "details.hidden": "Ukryty", "details.hidden_help": "Jeśli aktywowane, ta grupa nie będzie widoczna w wykazie grup, a użytkownicy będą musieli być zapraszani manualnie.", + "details.delete_group": "Delete Group", "event.updated": "Dane grupy zostały zaktualizowane", "event.deleted": "Grupa \"%1\" została skasowana", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/pt_BR/groups.json b/public/language/pt_BR/groups.json index 4a41877f62..5391da0e8f 100644 --- a/public/language/pt_BR/groups.json +++ b/public/language/pt_BR/groups.json @@ -38,6 +38,7 @@ "details.private_help": "Se habilitado, a entrada nos grupos requer aprovação de um dos donos do grupo", "details.hidden": "Oculto", "details.hidden_help": "Se habilitado, este grupo não se encontrará na listagem de grupos e os usuários terão de ser convivados manualmente", + "details.delete_group": "Delete Group", "event.updated": "Os detalhes do grupo foram atualizados", "event.deleted": "O grupo \"%1\" foi deletado", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/ro/groups.json b/public/language/ro/groups.json index d17aa24df7..16d4fbb1d3 100644 --- a/public/language/ro/groups.json +++ b/public/language/ro/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/ru/groups.json b/public/language/ru/groups.json index 4a3ef02436..d4c115bd0d 100644 --- a/public/language/ru/groups.json +++ b/public/language/ru/groups.json @@ -38,6 +38,7 @@ "details.private_help": "Если включено, вступление в группы будет подтверждаться владельцем группы", "details.hidden": "Скрыто", "details.hidden_help": "Если включено, группа не будет показываться в списках, а пользователи должны приглашаться вручную", + "details.delete_group": "Delete Group", "event.updated": "Настройки группы обновлены", "event.deleted": "Группа \"%1\" удалена", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/sc/groups.json b/public/language/sc/groups.json index badb766544..1e1623c38f 100644 --- a/public/language/sc/groups.json +++ b/public/language/sc/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/sk/groups.json b/public/language/sk/groups.json index badb766544..1e1623c38f 100644 --- a/public/language/sk/groups.json +++ b/public/language/sk/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/sr/groups.json b/public/language/sr/groups.json index 7f3f0e4fe3..a4666c6d8f 100644 --- a/public/language/sr/groups.json +++ b/public/language/sr/groups.json @@ -38,6 +38,7 @@ "details.private_help": "Уколико је укључено, приступање групи захтева одобрење власника групе.", "details.hidden": "Скривена", "details.hidden_help": "Уколико је укључено, група неће бити видљива на списку група, и корисницима се позивнице морају слати ручно.", + "details.delete_group": "Delete Group", "event.updated": "Детаљи групе су ажурирани", "event.deleted": "Група „%1“ је обрисана", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/sv/groups.json b/public/language/sv/groups.json index 152daab350..2cb6de26df 100644 --- a/public/language/sv/groups.json +++ b/public/language/sv/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/th/groups.json b/public/language/th/groups.json index 3747eb2a3d..027579e466 100644 --- a/public/language/th/groups.json +++ b/public/language/th/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "ซ่อน", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "ข้อมูล Group ได้รับการบันทึกแล้ว", "event.deleted": "The group \"%1\" has been deleted", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/tr/groups.json b/public/language/tr/groups.json index 46abe947de..bac723142e 100644 --- a/public/language/tr/groups.json +++ b/public/language/tr/groups.json @@ -38,6 +38,7 @@ "details.private_help": "Gruba katılmak için eğer etkinse grup sahibini onayı gerekir, ", "details.hidden": "Gizli", "details.hidden_help": "Bu grup eğer etkinse grup listelerinde bulunmaz, ve kullanıcılar bizzat davet eder", + "details.delete_group": "Delete Group", "event.updated": "Grup detayları güncellenmiştir", "event.deleted": "\"%1\" grubu silinmiş", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/vi/groups.json b/public/language/vi/groups.json index 3b80f9359a..2deebd443e 100644 --- a/public/language/vi/groups.json +++ b/public/language/vi/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "Hidden", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "Thông tin nhóm đã được cập nhật", "event.deleted": "The group \"%1\" has been deleted", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/zh_CN/groups.json b/public/language/zh_CN/groups.json index ca11bcb910..0f02408c81 100644 --- a/public/language/zh_CN/groups.json +++ b/public/language/zh_CN/groups.json @@ -38,6 +38,7 @@ "details.private_help": "启用此选项后,加入小组需要组长审批。", "details.hidden": "隐藏", "details.hidden_help": "启用此选项后,小组将不在小组列表中展现,成员只能通过邀请加入。", + "details.delete_group": "Delete Group", "event.updated": "小组信息已更新", "event.deleted": "小组 \"%1\" 已被删除", "membership.accept-invitation": "Accept Invitation", diff --git a/public/language/zh_TW/groups.json b/public/language/zh_TW/groups.json index 2004ee24a7..b69c394a33 100644 --- a/public/language/zh_TW/groups.json +++ b/public/language/zh_TW/groups.json @@ -38,6 +38,7 @@ "details.private_help": "If enabled, joining of groups requires approval from a group owner", "details.hidden": "隱藏", "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "details.delete_group": "Delete Group", "event.updated": "群組詳細訊息已被更新", "event.deleted": "此 \"%1\" 群組已被刪除了", "membership.accept-invitation": "Accept Invitation", From 6348eb2babed47ed1d22691b3744c7cee4e77dd6 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 28 Jul 2015 10:24:46 -0400 Subject: [PATCH 03/15] fixed #3359 --- public/src/modules/chat.js | 7 ++++--- public/src/modules/taskbar.js | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index 9ccc434abf..c47999de0a 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -82,7 +82,7 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra taskbar.updateActive(modal.attr('UUID')); Chats.scrollToBottom(modal.find('#chat-content')); } else { - module.toggleNew(modal.attr('UUID'), true); + module.toggleNew(modal.attr('UUID'), true, true); } if (!isSelf && (!modal.is(":visible") || !app.isFocused)) { @@ -97,9 +97,10 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra } else { module.createModal({ username: username, - touid: data.withUid + touid: data.withUid, + silent: true }, function(modal) { - module.toggleNew(modal.attr('UUID'), true); + module.toggleNew(modal.attr('UUID'), true, true); if (!isSelf) { app.alternatingTitle('[[modules:chat.user_has_messaged_you, ' + username + ']]'); sounds.play('chat-incoming'); diff --git a/public/src/modules/taskbar.js b/public/src/modules/taskbar.js index 58d3629c83..e664037c0d 100644 --- a/public/src/modules/taskbar.js +++ b/public/src/modules/taskbar.js @@ -74,7 +74,6 @@ define('taskbar', function() { }; taskbar.toggleNew = function(uuid, state, silent) { - console.log('TOGGLING'); var btnEl = taskbar.tasklist.find('[data-uuid="' + uuid + '"]'); btnEl.toggleClass('new', state); From 03b6b1e15c621cc66795e6fc438817e22fbadbc9 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 28 Jul 2015 10:36:51 -0400 Subject: [PATCH 04/15] Fixed crash on launch if no hooks listen to filter:router.page A previous commit added a new hook, although it executed async.each on a var without a null check, so if no hooks were registered, it was null, and not an empty array, causing async to crash. --- src/middleware/middleware.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/middleware/middleware.js b/src/middleware/middleware.js index 7295efbb7f..093362c433 100644 --- a/src/middleware/middleware.js +++ b/src/middleware/middleware.js @@ -67,7 +67,7 @@ middleware.pageView = function(req, res, next) { }; middleware.pluginHooks = function(req, res, next) { - async.each(plugins.loadedHooks['filter:router.page'], function(hookObj, next) { + async.each(plugins.loadedHooks['filter:router.page'] || [], function(hookObj, next) { hookObj.method(req, res, next) }, function(req, res) { // If it got here, then none of the subscribed hooks did anything, or there were no hooks From 7e640806b5db8b9360b0fbe9e96a771ab0fa0eef Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 28 Jul 2015 10:40:54 -0400 Subject: [PATCH 05/15] updated dev branch version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 126b8b2874..6d0d473261 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "0.7.2-dev", + "version": "0.7.3-dev", "homepage": "http://www.nodebb.org", "repository": { "type": "git", From eac92b00c66ba7e86528d8ba82b7d9de5cbb1f5e Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 28 Jul 2015 12:16:57 -0400 Subject: [PATCH 06/15] better error checking with socket broadcast method --- public/src/modules/chat.js | 2 +- src/socket.io/rooms.js | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index c47999de0a..54b8fbe93f 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -142,7 +142,7 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra } }); - callback(chats); + callback(null, chats); }); socket.on('event:chats.open', function(data) { diff --git a/src/socket.io/rooms.js b/src/socket.io/rooms.js index c32f9a5dc9..615d650cd6 100644 --- a/src/socket.io/rooms.js +++ b/src/socket.io/rooms.js @@ -39,19 +39,29 @@ rooms.broadcast = function(socket, room, msg, data, callback) { callback = callback || function() {}; + // Filter out socketIds that aren't actually connected + socketIds = socketIds.filter(function(id) { + return io.server.sockets.connected.hasOwnProperty(id); + }); + async.map(socketIds, function(id, next) { - var timeout; + var timeout, + timeoutPassed = false; + if (socket.id === id) { return setImmediate(next, null, []); } timeout = setTimeout(function() { + timeoutPassed = true; next(null, []); }, 500); - io.server.sockets.connected[id].emit(msg, data || {}, function(chats) { + io.server.sockets.connected[id].emit(msg, data || {}, function(err, returnData) { clearTimeout(timeout); - next(null, chats); + if (!timeoutPassed) { + next(null, returnData); + } }); }, callback); }; From 05411651b3bdd7bbe373e99a4f9a569fa6b9212f Mon Sep 17 00:00:00 2001 From: barisusakli Date: Tue, 28 Jul 2015 13:26:52 -0400 Subject: [PATCH 07/15] server side check so you can't leave admin group --- src/socket.io/groups.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/socket.io/groups.js b/src/socket.io/groups.js index 6f2d364b0a..7ee8d59b0b 100644 --- a/src/socket.io/groups.js +++ b/src/socket.io/groups.js @@ -43,6 +43,10 @@ SocketGroups.leave = function(socket, data, callback) { return callback(new Error('[[error:invalid-uid]]')); } + if (data.groupName === 'administrators') { + return callback(new Error('[[error:cant-remove-self-as-admin]]')); + } + groups.leave(data.groupName, socket.uid, callback); }; @@ -131,7 +135,7 @@ function acceptRejectAll(type, socket, data, callback) { } ], callback); }); -}; +} SocketGroups.issueInvite = function(socket, data, callback) { if (!data) { From 47cc1083df8c7239b96cb51d5f138c84837b5b4c Mon Sep 17 00:00:00 2001 From: barisusakli Date: Tue, 28 Jul 2015 15:03:20 -0400 Subject: [PATCH 08/15] fix mark all read --- src/socket.io/topics.js | 6 +++--- src/topics/unread.js | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/socket.io/topics.js b/src/socket.io/topics.js index 6e9cafcf63..06ea14d9d7 100644 --- a/src/socket.io/topics.js +++ b/src/socket.io/topics.js @@ -97,7 +97,7 @@ SocketTopics.postcount = function(socket, tid, callback) { }; SocketTopics.markAsRead = function(socket, tids, callback) { - if(!Array.isArray(tids) || !socket.uid) { + if (!Array.isArray(tids) || !socket.uid) { return callback(new Error('[[error:invalid-data]]')); } @@ -123,14 +123,14 @@ SocketTopics.markAsRead = function(socket, tids, callback) { }; SocketTopics.markTopicNotificationsRead = function(socket, tid, callback) { - if(!tid || !socket.uid) { + if (!tid || !socket.uid) { return callback(new Error('[[error:invalid-data]]')); } topics.markTopicNotificationsRead(tid, socket.uid); }; SocketTopics.markAllRead = function(socket, data, callback) { - topics.getLatestTidsFromSet('topics:recent', 0, -1, 'day', function(err, tids) { + db.getSortedSetRevRangeByScore('topics:recent', 0, -1, '+inf', Date.now() - topics.unreadCutoff, function(err, tids) { if (err) { return callback(err); } diff --git a/src/topics/unread.js b/src/topics/unread.js index b0252d02ce..7abaf5ab4c 100644 --- a/src/topics/unread.js +++ b/src/topics/unread.js @@ -14,6 +14,8 @@ module.exports = function(Topics) { var unreadCutoff = 86400000 * 2; + Topics.unreadCutoff = unreadCutoff; + Topics.getTotalUnread = function(uid, callback) { Topics.getUnreadTids(0, uid, 0, 20, function(err, tids) { callback(err, tids ? tids.length : 0); From 60a6775c7234fffb3f0064c67e9e2389b0d7cc8a Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 29 Jul 2015 12:41:09 -0400 Subject: [PATCH 09/15] Changed behaviour of the Chat Typing Notification Instead of being placed at the bottom of the modal/list, it will now be displayed at the top of the modal, and not shown in the chats page at all (as it is already present in the contact list) --- public/src/client/chats.js | 12 ------------ public/src/modules/chat.js | 7 ++----- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/public/src/client/chats.js b/public/src/client/chats.js index 95fa9266b7..68ee5bf98a 100644 --- a/public/src/client/chats.js +++ b/public/src/client/chats.js @@ -148,22 +148,10 @@ define('forum/chats', ['components', 'string', 'sounds', 'forum/infinitescroll', }); socket.on('event:chats.userStartTyping', function(withUid) { - var typingNotifEl = $('.user-typing'); - - if (Chats.isCurrentChat(withUid)) { - typingNotifEl.removeClass('hide'); - } - $('.chats-list li[data-uid="' + withUid + '"]').addClass('typing'); }); socket.on('event:chats.userStopTyping', function(withUid) { - var typingNotifEl = $('.user-typing'); - - if (Chats.isCurrentChat(withUid)) { - typingNotifEl.addClass('hide'); - } - $('.chats-list li[data-uid="' + withUid + '"]').removeClass('typing'); }); diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index 54b8fbe93f..da4efcafd5 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -312,8 +312,6 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra } }); - chatModal.find('.user-typing .text').translateText('[[modules:chat.user_typing, ' + data.username + ']]'); - taskbar.push('chat', chatModal.attr('UUID'), { title: data.username, touid: data.touid, @@ -459,14 +457,13 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra } module.appendChatMessage = function(chatModal, data, done) { - var chatContent = chatModal.find('#chat-content'), - typingNotif = chatModal.find('.user-typing'); + var chatContent = chatModal.find('#chat-content'); Chats.parseMessage(data, function(html) { var message = $(html); message.find('img:not(".chat-user-image")').addClass('img-responsive'); message.find('.timeago').timeago(); - message.insertBefore(typingNotif); + message.appendTo(chatContent); Chats.scrollToBottom(chatContent); if (typeof done === 'function') { From 81dc2b96150a01523e889f1955fcba30f5faed65 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 29 Jul 2015 12:43:25 -0400 Subject: [PATCH 10/15] updated theme minvers --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 6d0d473261..f00fb0e28f 100644 --- a/package.json +++ b/package.json @@ -49,8 +49,8 @@ "nodebb-plugin-spam-be-gone": "^0.4.0", "nodebb-rewards-essentials": "^0.0.1", "nodebb-theme-lavender": "^1.0.48", - "nodebb-theme-persona": "^1.0.20", - "nodebb-theme-vanilla": "^2.0.16", + "nodebb-theme-persona": "^1.0.22", + "nodebb-theme-vanilla": "^2.0.18", "nodebb-widget-essentials": "^1.0.2", "npm": "^2.1.4", "passport": "^0.2.1", From 2593f1b4d9122d9f395bd6dbab0d471659120d50 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 29 Jul 2015 12:58:06 -0400 Subject: [PATCH 11/15] Fix bug where new chat messages would not append ... due to incorrect class and id assignment of the chat modal. Regression was caused by an earlier commit that moved the typing span elsewhere. --- public/src/client/chats.js | 5 +++-- public/src/modules/chat.js | 16 ++++++++-------- src/messaging.js | 3 +++ 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/public/src/client/chats.js b/public/src/client/chats.js index 68ee5bf98a..d9b309bd5d 100644 --- a/public/src/client/chats.js +++ b/public/src/client/chats.js @@ -125,8 +125,9 @@ define('forum/chats', ['components', 'string', 'sounds', 'forum/infinitescroll', }; function onMessagesParsed(html) { - var newMessage = $(html); - newMessage.insertBefore($('.user-typing')); + var newMessage = $(html), + chatContainer = $('.chat-content'); + newMessage.appendTo(chatContainer); newMessage.find('.timeago').timeago(); newMessage.find('img:not(".chat-user-image")').addClass('img-responsive'); Chats.scrollToBottom($('.expanded-chat .chat-content')); diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index da4efcafd5..8d2fe2217b 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -80,7 +80,7 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra if (modal.is(":visible")) { taskbar.updateActive(modal.attr('UUID')); - Chats.scrollToBottom(modal.find('#chat-content')); + Chats.scrollToBottom(modal.find('.chat-content')); } else { module.toggleNew(modal.attr('UUID'), true, true); } @@ -111,7 +111,7 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra socket.on('event:chats.userStartTyping', function(withUid) { var modal = module.getModal(withUid); - var chatContent = modal.find('#chat-content'); + var chatContent = modal.find('.chat-content'); if (!chatContent.length) { return; } @@ -234,7 +234,7 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra return; } - chatModal.find('#chat-content').css('height', module.calculateChatListHeight(chatModal)); + chatModal.find('.chat-content').css('height', module.calculateChatListHeight(chatModal)); }); chatModal.draggable({ @@ -373,7 +373,7 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra chatModal.removeClass('hide'); checkStatus(chatModal); taskbar.updateActive(uuid); - Chats.scrollToBottom(chatModal.find('#chat-content')); + Chats.scrollToBottom(chatModal.find('.chat-content')); module.bringModalToTop(chatModal); module.focusInput(chatModal); socket.emit('modules.chats.markRead', chatModal.attr('touid')); @@ -387,7 +387,7 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra module.enableMobileBehaviour = function(modalEl) { app.toggleNavbar(false); modalEl.attr('data-mobile', '1'); - var messagesEl = modalEl.find('#chat-content'); + var messagesEl = modalEl.find('.chat-content'); messagesEl.css('height', module.calculateChatListHeight(modalEl)); $(window).on('resize', function() { @@ -402,7 +402,7 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra module.calculateChatListHeight = function(modalEl) { var totalHeight = modalEl.find('.modal-content').outerHeight() - modalEl.find('.modal-header').outerHeight(), padding = parseInt(modalEl.find('.modal-body').css('padding-top'), 10) + parseInt(modalEl.find('.modal-body').css('padding-bottom'), 10), - contentMargin = parseInt(modalEl.find('#chat-content').css('margin-top'), 10) + parseInt(modalEl.find('#chat-content').css('margin-bottom'), 10), + contentMargin = parseInt(modalEl.find('.chat-content').css('margin-top'), 10) + parseInt(modalEl.find('.chat-content').css('margin-bottom'), 10), sinceHeight = modalEl.find('.since-bar').outerHeight(true), inputGroupHeight = modalEl.find('.input-group').outerHeight(); @@ -426,7 +426,7 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra function loadChatSince(chatModal, since, callback) { socket.emit('modules.chats.get', {touid: chatModal.attr('touid'), since: since}, function(err, messages) { - var chatContent = chatModal.find('#chat-content'); + var chatContent = chatModal.find('.chat-content'); chatContent.find('.chat-message').remove(); module.appendChatMessage(chatModal, messages, callback); }); @@ -457,7 +457,7 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra } module.appendChatMessage = function(chatModal, data, done) { - var chatContent = chatModal.find('#chat-content'); + var chatContent = chatModal.find('.chat-content'); Chats.parseMessage(data, function(html) { var message = $(html); diff --git a/src/messaging.js b/src/messaging.js index 9edd99d836..bb1ce85182 100644 --- a/src/messaging.js +++ b/src/messaging.js @@ -164,6 +164,9 @@ var db = require('./database'), if (index > 0 && parseInt(message.timestamp, 10) > parseInt(messages[index-1].timestamp, 10) + (1000*60*5)) { // If it's been 5 minutes, this is a new set of messages message.newSet = true; + } else if (index > 0 && message.fromuid !== messages[index-1].fromuid) { + // If the previous message was from the other person, this is also a new set + message.newSet = true } return message; From 8b5195fa827d58d65a1c3582795adda54513d938 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 29 Jul 2015 12:59:38 -0400 Subject: [PATCH 12/15] updating theme minvers again --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f00fb0e28f..6a50b86f93 100644 --- a/package.json +++ b/package.json @@ -49,8 +49,8 @@ "nodebb-plugin-spam-be-gone": "^0.4.0", "nodebb-rewards-essentials": "^0.0.1", "nodebb-theme-lavender": "^1.0.48", - "nodebb-theme-persona": "^1.0.22", - "nodebb-theme-vanilla": "^2.0.18", + "nodebb-theme-persona": "^1.0.23", + "nodebb-theme-vanilla": "^2.0.19", "nodebb-widget-essentials": "^1.0.2", "npm": "^2.1.4", "passport": "^0.2.1", From 98b74f848eaddc574f624c49ebb82fc8252192c5 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 29 Jul 2015 13:16:52 -0400 Subject: [PATCH 13/15] Fix newSet detection on chat messages --- public/src/client/chats.js | 4 +++- public/src/modules/chat.js | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/public/src/client/chats.js b/public/src/client/chats.js index d9b309bd5d..373a97d71c 100644 --- a/public/src/client/chats.js +++ b/public/src/client/chats.js @@ -136,11 +136,13 @@ define('forum/chats', ['components', 'string', 'sounds', 'forum/infinitescroll', Chats.addSocketListeners = function() { socket.on('event:chats.receive', function(data) { var typingNotifEl = $('.user-typing'), - containerEl = $('.expanded-chat ul'); + containerEl = $('.expanded-chat ul'), + lastSpeaker = parseInt(containerEl.find('.chat-message').last().attr('data-uid'), 10); if (Chats.isCurrentChat(data.withUid)) { newMessage = data.self === 0; data.message.self = data.self; + data.message.newSet = lastSpeaker !== data.message.fromuid; Chats.parseMessage(data.message, onMessagesParsed); } else { $('.chats-list li[data-uid="' + data.withUid + '"]').addClass('unread'); diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index 8d2fe2217b..5e9c5c7b42 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -457,7 +457,10 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra } module.appendChatMessage = function(chatModal, data, done) { - var chatContent = chatModal.find('.chat-content'); + var chatContent = chatModal.find('.chat-content'), + lastSpeaker = parseInt(chatContent.find('.chat-message').last().attr('data-uid'), 10); + + data.newSet = lastSpeaker !== data.fromuid; Chats.parseMessage(data, function(html) { var message = $(html); From 53a1e6106e0b37e57992e071b6ca7a4ad39dd503 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 29 Jul 2015 14:31:33 -0400 Subject: [PATCH 14/15] Fix bug where an empty chat message would appear in the chat modal --- public/src/modules/chat.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index 5e9c5c7b42..41d178a413 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -460,7 +460,9 @@ define('chat', ['components', 'taskbar', 'string', 'sounds', 'forum/chats', 'tra var chatContent = chatModal.find('.chat-content'), lastSpeaker = parseInt(chatContent.find('.chat-message').last().attr('data-uid'), 10); - data.newSet = lastSpeaker !== data.fromuid; + if (!Array.isArray(data)) { + data.newSet = lastSpeaker !== data.fromuid; + } Chats.parseMessage(data, function(html) { var message = $(html); From cead53ec8641c8e3baf4bb1a18041d0ef6e059a6 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 29 Jul 2015 15:22:00 -0400 Subject: [PATCH 15/15] Fix list behaviour in chat page --- package.json | 2 +- public/src/client/chats.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 6a50b86f93..52665b2e92 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "nodebb-plugin-spam-be-gone": "^0.4.0", "nodebb-rewards-essentials": "^0.0.1", "nodebb-theme-lavender": "^1.0.48", - "nodebb-theme-persona": "^1.0.23", + "nodebb-theme-persona": "^1.0.24", "nodebb-theme-vanilla": "^2.0.19", "nodebb-widget-essentials": "^1.0.2", "npm": "^2.1.4", diff --git a/public/src/client/chats.js b/public/src/client/chats.js index 373a97d71c..53478fdcc5 100644 --- a/public/src/client/chats.js +++ b/public/src/client/chats.js @@ -164,7 +164,7 @@ define('forum/chats', ['components', 'string', 'sounds', 'forum/infinitescroll', }; Chats.resizeMainWindow = function() { - var messagesList = $('.expanded-chat ul'); + var messagesList = $('.expanded-chat .chat-content'); if (messagesList.length) { var margin = $('.expanded-chat ul').outerHeight(true) - $('.expanded-chat ul').height(),