diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2c6f183395..f9e2798a43 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,23 @@
+#### v2.2.2 (2022-06-30)
+
+##### Chores
+
+* **deps-dev:**
+ * bump eslint from 8.17.0 to 8.18.0 in /install (bfd626b0)
+ * bump jsdom from 19.0.0 to 20.0.0 in /install (d037c2c9)
+* incrementing version number - v2.2.1 (efc77b2a)
+* update changelog for v2.2.1 (667780cf)
+* incrementing version number - v2.2.0 (eecb836d)
+
+##### Bug Fixes
+
+* improper handling of single vs. multiple inputs for hidePrivateData (f38b2a73)
+* observe user-specific and ACP-specific hiding rules for fullname (ecf0e8ce)
+
+##### Refactors
+
+* allow user.hidePrivateData() to handle an array of `userData` (3f5ae893)
+
#### v2.2.1 (2022-06-24)
##### Chores
diff --git a/public/language/de/admin/dashboard.json b/public/language/de/admin/dashboard.json
index 97906ea076..aa25120bae 100644
--- a/public/language/de/admin/dashboard.json
+++ b/public/language/de/admin/dashboard.json
@@ -12,7 +12,7 @@
"page-views-custom": "Benutzerdefinierte Tagesspanne",
"page-views-custom-start": "Spannen-Anfang",
"page-views-custom-end": "Spannen-Ende",
- "page-views-custom-help": "Gib eine Zeitspanne an, in dem du die Besichtigungszahlen ansehen willst. Sollte keine Kalenderauswahl verfügbar sein ist das akzeptierte format YYYY-MM-DD",
+ "page-views-custom-help": "Gebe einen Datumsbereich für Seitenaufrufe ein, die du anzeigen möchtest. Wenn keine Datumsauswahl verfügbar ist, ist das akzeptierte Format YYYY-MM-DD",
"page-views-custom-error": "Bitte gib eine gültige Zeitspanne im Format YYYY-MM-DD an",
"stats.yesterday": "Gestern",
diff --git a/public/language/de/admin/extend/rewards.json b/public/language/de/admin/extend/rewards.json
index 7a6eef6513..d0ed8e051d 100644
--- a/public/language/de/admin/extend/rewards.json
+++ b/public/language/de/admin/extend/rewards.json
@@ -1,15 +1,15 @@
{
"rewards": "Belohnungen",
- "condition-if-users": "Wenn des Benutzers",
+ "condition-if-users": "Wenn Benutzer",
"condition-is": "Ist:",
"condition-then": "Dann:",
- "max-claims": "Anzahl der male, die diese Belohnung beansprucht werden kann",
- "zero-infinite": "Gib 0 für unendlich ein",
- "delete": "Entfernen",
+ "max-claims": "Anzahl der Male von Belohnungen, die beansprucht werden können",
+ "zero-infinite": "0 für unendlich eingeben",
+ "delete": "Löschen",
"enable": "Aktivieren",
"disable": "Deaktivieren",
- "alert.delete-success": "Die Belohnung wurde erfolgreich gelöscht",
+ "alert.delete-success": "Belohnung wurde erfolgreich gelöscht",
"alert.no-inputs-found": "Ungültige Belohnung - keine Eingaben gefunden!",
"alert.save-success": "Belohnungen erfolgreich gespeichert"
}
\ No newline at end of file
diff --git a/public/language/de/admin/extend/widgets.json b/public/language/de/admin/extend/widgets.json
index b2183c6327..9497575e33 100644
--- a/public/language/de/admin/extend/widgets.json
+++ b/public/language/de/admin/extend/widgets.json
@@ -1,30 +1,30 @@
{
"available": "Verfügbare Widgets",
- "explanation": "Widget vom Dropdown-Menu auswählen und anschließend links in den Widget-Bereich einer Vorlage ziehen.",
- "none-installed": "Keine Widgets gefunden! Aktivieren Sie das Widget Essentials Plugin im Plugin-Kontrollzentrum.",
+ "explanation": "Wähle ein Widget aus dem Dropdown-Menü aus und ziehe es per Drag-and-Drop in den Widget-Bereich einer Vorlage auf der linken Seite.",
+ "none-installed": "Keine Widgets gefunden! Aktiviere das Widget Essentials-Plugin in der Plugin-Systemsteuerung.",
"clone-from": "Klone Widget von",
"containers.available": "Verfügbare Container",
- "containers.explanation": "Auf ein beliebiges aktives Widget ziehen",
+ "containers.explanation": "Per Drag-and-Drop auf ein beliebiges aktives Widget ziehen",
"containers.none": "Nichts",
"container.well": "Well",
"container.jumbotron": "Jumbotron",
"container.panel": "Panel",
- "container.panel-header": "Panel Header",
- "container.panel-body": "Panel Körper",
+ "container.panel-header": "Panel-Kopfzeile",
+ "container.panel-body": "Panel-Körper",
"container.alert": "Alarm",
- "alert.confirm-delete": "Sind Sie sicher, dass Sie dieses Widget löschen wollen?",
+ "alert.confirm-delete": "Möchtest Du dieses Widget wirklich löschen?",
"alert.updated": "Widgets aktualisiert",
"alert.update-success": "Widgets erfolgreich aktualisiert",
- "alert.clone-success": "Die Widgets wurden erfolgreich geklont",
+ "alert.clone-success": "Widgets erfolgreich geklont",
- "error.select-clone": "Bitte wähle eine Seite aus von der geklont werden soll",
+ "error.select-clone": "Bitte wähle eine Seite aus, von der geklont werden soll",
"title": "Titel",
- "title.placeholder": "Titel (nur in bestimmten Bereichen zusehen)",
+ "title.placeholder": "Titel (wird nur auf einigen Containern angezeigt)",
"container": "Container",
- "container.placeholder": "Ziehen Sie einen Container per Drag & Drop oder geben Sie hier HTML ein.",
- "show-to-groups": "Für Gruppen anzeigen",
- "hide-from-groups": "Für Gruppen verbergen",
- "hide-on-mobile": "Auf Mobile verbergen"
+ "container.placeholder": "Ziehe einen Container per Drag-and-Drop oder gebe hier HTML ein.",
+ "show-to-groups": "Gruppen anzeigen",
+ "hide-from-groups": "Vor Gruppen verstecken",
+ "hide-on-mobile": "Auf dem Handy verstecken"
}
\ No newline at end of file
diff --git a/public/language/de/admin/manage/registration.json b/public/language/de/admin/manage/registration.json
index 1971466302..e922c5f91a 100644
--- a/public/language/de/admin/manage/registration.json
+++ b/public/language/de/admin/manage/registration.json
@@ -1,20 +1,20 @@
{
"queue": "Warteschlange",
- "description": "Es sind keine Benutzer in der Registrierungs-Warteschlange.
Um diese Funktion zu aktivieren, gehe zu Einstellungen → Benutzer → Benutzer erstellen und ändern sie Registrierungsart auf \"Admin Genehmigung\".",
+ "description": "Es befinden sich keine Benutzer in der Registrierungswarteschlange.
Um diese Funktion zu aktivieren, gehe zu Einstellungen → Benutzer → Benutzerregistrierung und stelle den Registrierungstyp auf \"Admin-Genehmigung\" ein.",
"list.name": "Name",
"list.email": "E-Mail",
- "list.ip": "IP-Adresse",
+ "list.ip": "IP",
"list.time": "Zeit",
- "list.username-spam": "Häufigkeit: %1 Erscheint: %2 Sicherheit: %3",
+ "list.username-spam": "Häufigkeit: %1 Erscheint: %2 Vertrauen: %3",
"list.email-spam": "Häufigkeit: %1 Erscheint: %2",
"list.ip-spam": "Häufigkeit: %1 Erscheint: %2",
"invitations": "Einladungen",
- "invitations.description": "Unterhalb ist eine komplette Liste der versandten Einladungen. Benutze Strg+F um die Liste per Email oder Nutzername zu durchsuchen.
Der Nutzername wird für die Nutzer die ihre Einladung angenommen haben rechts von den E-Mails angezeigt.",
+ "invitations.description": "Nachfolgend findest du eine vollständige Liste der gesendeten Einladungen. Verwende Strg-F, um die Liste nach E-Mail oder Benutzername zu durchsuchen. Der Benutzername wird rechts neben den E-Mails für Benutzer angezeigt, die ihre Einladungen eingelöst haben.",
"invitations.inviter-username": "Nutzername des Einladenden",
- "invitations.invitee-email": "Email des eingeladenen",
- "invitations.invitee-username": "Nutzername des eingeladenen (Wenn registriert)",
+ "invitations.invitee-email": "E-Mail des Eingeladenen",
+ "invitations.invitee-username": "Benutzername des Eingeladenen (falls registriert)",
- "invitations.confirm-delete": "Sind Sie sicher, dass Sie diese Einladung löschen wollen?"
+ "invitations.confirm-delete": "Möchtest du diese Einladung wirklich löschen?"
}
\ No newline at end of file
diff --git a/public/language/de/admin/manage/users.json b/public/language/de/admin/manage/users.json
index 3b9f5c2edb..d797f28a2d 100644
--- a/public/language/de/admin/manage/users.json
+++ b/public/language/de/admin/manage/users.json
@@ -97,16 +97,16 @@
"alerts.confirm-delete-content": "Warnung!
Möchtest Du diese Benutzerinhalte wirklich löschen?
Diese Aktion kann nicht umgekehrt werden! Die Konten der Benutzer bleiben bestehen, aber ihre Beiträge und Themen werden gelöscht.
", "alerts.delete-content-success": "Beiträge des/der Nutzer(s) gelöscht!", "alerts.confirm-purge": "Warnung!Bist du sicher, dass Du den/die Nutzer und deren Beiträge löschen möchtest?
Diese Aktion kann nicht rückgängig gemacht werden! Alle Nutzerdaten und Beiträge werden dabei gelöscht!
", - "alerts.create": "Nutzer Erstellen", + "alerts.create": "Benutzer erstellen", "alerts.button-create": "Erstellen", "alerts.button-cancel": "Abbrechen", "alerts.error-passwords-different": "Die Passwörter müssen übereinstimmen", "alerts.error-x": "Fehler%1
", - "alerts.create-success": "Nutzer erstellt", + "alerts.create-success": "Benutzer erstellt!", "alerts.prompt-email": "E-Mails:", "alerts.email-sent-to": "Eine Einladungsemail wurde an %1 gesendet", "alerts.x-users-found": "%1 Benutzer gefunden, (%2 Sekunden)", "export-users-started": "Der Export von Benutzern als CSV kann eine Weile dauern. Sie erhalten eine Benachrichtigung, wenn es abgeschlossen ist.", - "export-users-completed": "Benutzer wurden als CSV exportiert, klicken Sie hier, um sie herunterzuladen." + "export-users-completed": "Benutzer wurden als CSV exportiert, klicke hier, um sie herunterzuladen." } \ No newline at end of file diff --git a/public/language/de/admin/settings/chat.json b/public/language/de/admin/settings/chat.json index 5eb4dafcb5..d97665c221 100644 --- a/public/language/de/admin/settings/chat.json +++ b/public/language/de/admin/settings/chat.json @@ -3,10 +3,10 @@ "disable": "Chat deaktivieren", "disable-editing": "Chatnachrichtenbearbeitung/löschung deaktivieren", "disable-editing-help": "Administratoren und globale Moderatoren sind von dieser Einschränkung ausgenommen", - "max-length": "Maximale Chatnachrichtenlänge", - "max-room-size": "Maximale Anzahl an Nutzern pro Chat-Room", + "max-length": "Maximale Länge von Chatnachrichten", + "max-room-size": "Maximale Anzahl von Benutzern in Chatrooms", "delay": "Zeit zwischen Chatnachrichten in Millisekunden", - "notification-delay": "Benachrichtigungsverzögerung für Chat Nachrichten. (0 für keine Verzögerung)", - "restrictions.seconds-edit-after": "Dauer in Sekunden, die eine Chat-Nachricht editiert werden kann. (0 deaktiviert)", - "restrictions.seconds-delete-after": "Dauer in Sekunden, die eine Chat-Nachricht gelöscht werden kann. (0 deaktiviert)" + "notification-delay": "Benachrichtigungsverzögerung für Chatnachrichten. (0 für keine Verzögerung)", + "restrictions.seconds-edit-after": "Anzahl der Sekunden, die eine Chat-Nachricht bearbeitet werden kann. (0 deaktiviert)", + "restrictions.seconds-delete-after": "Anzahl der Sekunden, die eine Chat-Nachricht löschbar bleibt. (0 deaktiviert)" } \ No newline at end of file diff --git a/public/language/de/admin/settings/cookies.json b/public/language/de/admin/settings/cookies.json index bacf045321..cf7bdde842 100644 --- a/public/language/de/admin/settings/cookies.json +++ b/public/language/de/admin/settings/cookies.json @@ -1,13 +1,13 @@ { "eu-consent": "EU Cookie Zustimmung", "consent.enabled": "Aktiviert", - "consent.message": "Benachrichtigung", - "consent.acceptance": "Akzeptierungsnachricht", - "consent.link-text": "Police Link Text", - "consent.link-url": "Link zu den Richtlinien", - "consent.blank-localised-default": "Leer lassen um NodeBB lokalisierte Standards zu benutzen", + "consent.message": "Benachrichtigungsnachricht", + "consent.acceptance": "Annahmenachricht", + "consent.link-text": "Richtlinien-Link-Text", + "consent.link-url": "Richtlinienlink-URL", + "consent.blank-localised-default": "Feld leerlassen, um die lokalisierten NodeBB-Standardeinstellungen zu verwenden", "settings": "Einstellungen", - "cookie-domain": "Session Cookie Domain", + "cookie-domain": "Session-Cookie-Domain", "max-user-sessions": "Maximale aktive Sitzungen pro Benutzer", "blank-default": "Leer lassen für Standardwert" } \ No newline at end of file diff --git a/public/language/de/admin/settings/email.json b/public/language/de/admin/settings/email.json index 5161bb5660..aef186d817 100644 --- a/public/language/de/admin/settings/email.json +++ b/public/language/de/admin/settings/email.json @@ -29,7 +29,7 @@ "template.select": "E-Mail Vorlage auswählen", "template.revert": "Original wiederherstellen", "testing": "E-Mail Test", - "testing.select": "Wählen Sie die E-Mail Vorlage", + "testing.select": "E-Mail-Vorlage auswählen", "testing.send": "Test-E-Mail versenden", "testing.send-help": "Die Test-E-Mail wird an die E-Mail Adresse des momentan eingeloggten Nutzers geschickt.", "subscriptions": "Email Zusammenfassungen", diff --git a/public/language/de/admin/settings/group.json b/public/language/de/admin/settings/group.json index 95c85461c3..df50632f6b 100644 --- a/public/language/de/admin/settings/group.json +++ b/public/language/de/admin/settings/group.json @@ -7,7 +7,7 @@ "allow-multiple-badges-help": "Diese Eintellung kann verwendet werden um Benutzern zu erlauben mehrere Gruppen abzeichen auszuwählen, benötigt Theme unterstützung.", "max-name-length": "Maximale Länge von Gruppennamen", "max-title-length": "Maximale Gruppentitellänge", - "cover-image": "Gruppen-Deckbild", - "default-cover": "Standard-Deckbild", - "default-cover-help": "Fügen Sie Komma-getrennte standard-Deckbilder für Gruppen hinzu, welche kein Deckbild hochgeladen haben" + "cover-image": "Titelbild der Gruppe", + "default-cover": "Standard-Titelbilder", + "default-cover-help": "Füge urch Kommas getrennte Standard-Titelbilder für Gruppen hinzu, die kein hochgeladenes Titelbild haben" } \ No newline at end of file diff --git a/public/language/de/admin/settings/guest.json b/public/language/de/admin/settings/guest.json index 3e9e67f2bf..2d5ee7a23e 100644 --- a/public/language/de/admin/settings/guest.json +++ b/public/language/de/admin/settings/guest.json @@ -1,7 +1,7 @@ { "settings": "Einstellungen", "handles.enabled": "Gastzugänge erlauben", - "handles.enabled-help": "Diese Option offenbart ein neues Feld, welches Gästen erlaubt einen Nutzernamen zu wählen, welcher sie mit jedem Beitrag assoziiert den sie erstellen. Wenn diese Option deaktiviert ist, werden sie einfach \"Gast\" genannt", + "handles.enabled-help": "Diese Option zeigt ein neues Feld an, in dem Gäste einen Namen auswählen können, der jedem von ihnen erstellten Beitrag zugeordnet werden soll. Wenn sie deaktiviert sind, werden sie einfach „Gast“ genannt.", "topic-views.enabled": "Gästen erlauben, die gezählte Anzahl der Themenaufrufe zu erhöhen", "reply-notifications.enabled": "Erlauben Sie Gästen, Antwortbenachrichtigungen zu erstellen" } \ No newline at end of file diff --git a/public/language/de/admin/settings/homepage.json b/public/language/de/admin/settings/homepage.json index 186e89ae62..243f51bd45 100644 --- a/public/language/de/admin/settings/homepage.json +++ b/public/language/de/admin/settings/homepage.json @@ -1,8 +1,8 @@ { "home-page": "Startseite", - "description": "Wähle aus, welche Seite angezeigt werden soll, wenn Nutzer zur Startseite des Forums navigieren.", - "home-page-route": "Startseitenpfad", - "custom-route": "Eigener Startseitenpfad", - "allow-user-home-pages": "Benutzern eigene Startseiten erlauben", + "description": "Wähle, welche Seite angezeigt wird, wenn Benutzer zur Stamm-URL deines Forums navigieren.", + "home-page-route": "Startseiten Route", + "custom-route": "Benutzerdefinierte Route", + "allow-user-home-pages": "Benutzer-Startseiten zulassen", "home-page-title": "Titel der Startseite (Standardmäßig \"Home\")" } \ No newline at end of file diff --git a/public/language/de/admin/settings/languages.json b/public/language/de/admin/settings/languages.json index c2358ac047..8aa3dd6590 100644 --- a/public/language/de/admin/settings/languages.json +++ b/public/language/de/admin/settings/languages.json @@ -1,6 +1,6 @@ { "language-settings": "Spracheinstellungen", - "description": "Die Standardsprache legt die Spracheinstellungen für alle Benutzer fest, die das Forum besuchen.Passwort erfolgreich zurückgesetzt. Bitte logge dich erneut ein.", - "wrong_reset_code.title": "Der Reset-Code ist falsch.", + "wrong_reset_code.title": "Falscher Reset-Code", "wrong_reset_code.message": "Der empfangene Reset-Code war falsch. Bitte versuche es erneut oder fordere einen neuen Code an.", "new_password": "Neues Passwort", - "repeat_password": "Wiederhole das Passwort", + "repeat_password": "Passwort bestätigen", "changing_password": "Passwort ändern", - "enter_email": "Bitte gib Deine E-Mail Adresse ein und wir senden Dir eine Anleitung, wie Du Dein Passwort zurücksetzen kannst.", + "enter_email": "Bitte gebe deine E-Mail-Adresse ein und wir senden dir eine E-Mail mit Anweisungen zum Zurücksetzen deines Kontos.", "enter_email_address": "E-Mail Adresse eingeben", - "password_reset_sent": "Falls die angegebene Adresse zu einem Benutzerkonto gehört, wurde eine E-Mail zum zurücksetzen des Passworts versendet. Denk daran, dass maximal eine E-Mail pro Minute versendet wird.", + "password_reset_sent": "Wenn die angegebene Adresse einem bestehenden Benutzerkonto entspricht, wurde eine E-Mail zum Zurücksetzen des Passworts gesendet. Bitte beachte, dass nur eine E-Mail pro Minute versendet wird.", "invalid_email": "Ungültige E-Mail / Adresse existiert nicht!", "password_too_short": "Das eingegebene Passwort ist zu kurz, bitte wähle ein anderes Passwort.", "passwords_do_not_match": "Die eingegebenen Passwörter stimmen nicht überein.", diff --git a/public/language/de/user.json b/public/language/de/user.json index 34599a991f..8a11ed3818 100644 --- a/public/language/de/user.json +++ b/public/language/de/user.json @@ -89,7 +89,7 @@ "upload_cropped_picture": "Zuschneiden und Hochladen", "avatar-background-colour": "Hintergrundfarbe des Avatars", "settings": "Einstellungen", - "show_email": "Zeige meine E-Mail Adresse an.", + "show_email": "Meine E-Mail anzeigen", "show_fullname": "Zeige meinen kompletten Namen an", "restrict_chats": "Erlaube Chatnachrichten nur von Benutzern, denen ich folge.", "digest_label": "Zusammenfassung abonnieren", @@ -192,7 +192,7 @@ "consent.export_posts": "Beiträge exportieren (.csv)", "consent.export-posts-success": "Beiträge werden exportiert, du bekommst eine Benachrichtigung sobald der Vorgang abgeschlossen ist.", "emailUpdate.intro": "Bitte gib unten deine E-Mail-Adresse ein. Dieses Forum verwendet deine E-Mail-Adresse für die geplante Zusammenfassung und diverse Benachrichtigungen sowie für die Konto-Wiederherstellung im Falle eines verlorenen Passworts.", - "emailUpdate.optional": "Dieses Feld ist optional. Du bist nicht verpflichtet, deine E-Mail-Adresse anzugeben, aber ohne eine validierte E-Mail-Adresse kannst du dein Konto nicht wiederherstellen oder dich mit deiner E-Mail-Adresse anmelden.", + "emailUpdate.optional": "Dieses Feld ist optional. Du bist nicht verpflichtet, deine E-Mail-Adresse anzugeben, doch ohne eine validierte E-Mail-Adresse kannst du dein Konto nicht wiederherstellen oder dich mit deiner E-Mail-Adresse anmelden.", "emailUpdate.required": "Dieses Feld ist erforderlich.", "emailUpdate.change-instructions": "An die eingegebene E-Mail-Adresse wird eine Bestätigungs-E-Mail mit einem eindeutigen Link gesendet. Durch den Zugriff auf diesen Link wird dein Eigentum an der E-Mail-Adresse bestätigt und diese wird in deinem Konto aktiv. Du kannst deine E-Mail-Adresse jederzeit auf deiner Kontoseite aktualisieren." } \ No newline at end of file diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index f35e85e17f..1ae52a9cb1 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -311,11 +311,17 @@ ajaxify.widgets = { render: render }; app.processPage(); }; - ajaxify.parseData = function () { - const dataEl = $('#ajaxify-data'); - if (dataEl.length) { - ajaxify.data = JSON.parse(dataEl.text()); - dataEl.remove(); + ajaxify.parseData = () => { + const dataEl = document.getElementById('ajaxify-data'); + if (dataEl) { + try { + ajaxify.data = JSON.parse(dataEl.textContent); + } catch (e) { + console.error(e); + ajaxify.data = {}; + } finally { + dataEl.remove(); + } } }; diff --git a/public/src/app.js b/public/src/app.js index 5768124ca8..6560b911c1 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -23,17 +23,16 @@ app.isFocused = true; app.currentRoom = null; app.widgets = {}; app.flags = {}; - app.onDomReady = function () { $(document).ready(async function () { if (app.user.timeagoCode && app.user.timeagoCode !== 'en') { await import(/* webpackChunkName: "timeago/[request]" */ 'timeago/locales/jquery.timeago.' + app.user.timeagoCode); } - ajaxify.parseData(); app.load(); }); }; +document.addEventListener('DOMContentLoaded', ajaxify.parseData); (function () { let appLoaded = false;