Ich bin gerade in einem von mir betriebenen Forum auf dieses Problem gestoßen. Reproduktionsschritte:
Als Administrator eine neue Gruppe erstellen
Sichtbarkeit auf „Gruppeninhaber“ setzen
Gruppe erstellen
Zurück zu /g navigieren
Die Gruppe wird nicht angezeigt
Wenn Sie die Konsole mit Group.find_by(name: <name>) prüfen, wird sie korrekt zurückgegeben. Eine Änderung der Sichtbarkeit auf „Gruppeninhaber und Mitarbeiter“ führt dazu, dass die Gruppe wieder angezeigt wird.
Sofern dies nicht beabsichtigt ist, gehe ich davon aus, dass sogar Administratoren Gruppen mit dieser Sichtbarkeitseinstellung sehen sollten (wobei dies nicht für Moderatoren gilt).
Dieses Verhalten ist mir erst nach dem Upgrade auf 2.4.0.beta2 gestern aufgefallen.
Ich kann das bei @justin nicht nachvollziehen. Ich habe es lokal und auf einer bei DO gehosteten Instanz versucht und zudem eine Gruppe von zwei verschiedenen Admin-Konten aus erstellt. Admins sehen in allen Fällen alle Gruppen.
Seltsam – ich werde es auf einer Neuinstallation versuchen. Ich kann es definitiv auf einer meiner Produktionsinstanzen reproduzieren. Ich werde es aktualisieren und dann weitermachen.
Ich habe es bei einer Neuinstallation versucht und bin auf das gleiche Ergebnis wie du, @pmusaraj, gestoßen. Meine Vermutung ist, dass es an einem Plugin liegt, das ich verwende. Sobald ich herausfinde, was los ist, melde ich mich wieder.
Nutzt ihr auch Plugins? Welche (mit Fokus auf die, die Discourse nicht erstellt und mitliefert)? Oder meinst du, dies ist eine neue Regression @justin?
@outofthebox Hast du zufällig das Babble-Chat-Plugin installiert? Es scheint, als handele es sich um einen Regression in Bezug darauf, nachdem ich es von meiner Instanz entfernt habe. Die Deinstallation dieses Plugins und der Neuaufbau haben die Gruppen-Sichtbarkeit wiederhergestellt.
Toller Fund, @justin! Ich habe mir kurz den Babble-Quellcode angesehen, und es scheint tatsächlich einen Konflikt mit meinen Updates für Gruppen im Core zu geben. Babble fügt eine hartkodierte Regel für visibility_level: 4 hinzu, die nun mit der owners-Gruppe im Core kollidiert.
Hoffentlich hat @gdpelican Zeit, sich das anzusehen.
Okay, ich habe mich also etwas tiefer in dieses Problem eingearbeitet.
Es scheint, als hätte Babble für seinen eigenen Bedarf eine eigene visibility_level zugewiesen und den nächsten ungenutzten Konstantenwert (4) verwendet.
Vor ein paar Wochen hat der Discourse-Kerncode ebenfalls eine neue visibility_level hinzugefügt und dabei den nächsten ungenutzten Konstantenwert verwendet, der ebenfalls 4 war. Dies führte zu einer doppelten Verwendung dieses Konstantenwerts.
Eine Lösung würde also aus zwei Teilen bestehen:
Die von Babble verwendete visibility_level ändern. Das wäre einfach. Wenn wir das wirklich sauber machen wollten, würde jedes Plugin sein eigenes BASE_VISIBILITY_LEVEL registrieren, um zukünftige Konflikte zu vermeiden. Aber vorerst könnten wir einfach einen anderen Wert wählen (zum Beispiel 1001).
Die Gruppen mit visibility_level 4 auf den neuen Konstantenwert ändern – aber nur die Gruppen, die von Babble verwendet wurden.
Würde diese Abfrage die richtigen Gruppen auswählen, @gdpelican?
UPDATE groups
SET visibility_level = 1001
WHERE id IN (
SELECT g.id
FROM topics t
LEFT JOIN topic_allowed_groups tag ON tag.topic_id = t.id
LEFT JOIN groups g ON g.id = tag.group_id
WHERE t.archetype='chat');
Hallo, entschuldige bitte. Ich werde mir das in den nächsten Tagen ansehen, aber dein allgemeiner Lösungsansatz ist absolut richtig. Das Zurückportieren wird der knifflige Teil sein, ich werde mir das bald genauer ansehen.
Ich habe ein Problem festgestellt: Die Backfiller-Funktionalität scheint keine Multisite-Unterstützung zu bieten (es muss durch die verfügbaren Verbindungen iteriert werden).