Ho appena riscontrato questo problema su un forum che gestisco. Passaggi per riprodurre:
Crea un nuovo gruppo come amministratore
Imposta la visibilità su “proprietari del gruppo”
Crea il gruppo
Torna a /g
Il gruppo non viene visualizzato
Se controlli la console usando Group.find_by(name: <nome>), la ricerca restituisce correttamente il risultato. Cambiare la visibilità in “Proprietari del gruppo e personale” ripristina la visibilità.
A meno che non sia previsto dal design, il mio assunto è che anche gli amministratori dovrebbero vedere i gruppi impostati a questo livello di visibilità (anche se non i moderatori).
Non avevo notato questo comportamento fino all’aggiornamento a 2.4.0.beta2 di ieri.
Non riesco a riprodurre il problema @justin. Ho provato in locale e su un’istanza ospitata su DO, e ho anche creato un gruppo da due diversi account amministratore. In tutti i casi, gli amministratori vedono tutti i gruppi.
Strano - dovrò provare a farlo su un’installazione nuova. Posso sicuramente riprodurlo su un’istanza di produzione che ho. Proverò ad aggiornarla e vediamo da lì.
Ho provato con una nuova installazione e ho ottenuto gli stessi risultati di te, @pmusaraj. Penso che sia un plugin che sto usando. Se scoprirò di cosa si tratta, farò rapporto.
Anche voi usate dei plugin? Quali (concentrandovi su quelli che Discourse non crea e non include)… o state dicendo che si tratta di una nuova regressione, @justin?
Ciao, ho appena modificato la visibilità di un gruppo da “Solo proprietari del gruppo” a “Proprietari e membri del gruppo” e il gruppo è diventato di nuovo visibile. Mi chiedo se ci sia qualcosa di strano nel codice relativo all’impostazione della visibilità di un gruppo quando questa è limitata a “Solo proprietari del gruppo”?
@outofthebox Per caso hai installato il plugin di chat Babble? Sembra che si tratti di una regressione legata a quel plugin dopo averlo rimosso dalla mia istanza. Disinstallando il plugin e ricostruendo tutto, la visibilità del gruppo è tornata.
Ottima scoperta @justin, ho dato un’occhiata veloce al codice sorgente di Babble e sembra esserci un conflitto con le mie modifiche ai gruppi nel core. Babble aggiunge una regola hardcoded per visibility_level: 4, che ora entra in conflitto con il gruppo owners nel core.
Speriamo che @gdpelican abbia tempo di dare un’occhiata.
Ok, quindi ho analizzato più a fondo questo problema.
Sembra che babble avesse assegnato un proprio visibility_level per il proprio utilizzo, prendendo la costante non utilizzata successiva (4).
Qualche settimana fa, il codice principale di Discourse ha aggiunto un nuovo visibility_level, prendendo anch’esso la costante non utilizzata successiva, che era anch’essa 4. Questo ha causato un uso duplicato di questa costante.
Una soluzione consisterebbe in due parti:
cambiare il visibility_level utilizzato da babble. Sarebbe semplice. Se volessimo farlo in modo davvero ordinato, ogni plugin registrerebbe il proprio BASE_VISIBILITY_LEVEL per evitare futuri conflitti. Ma per ora potremmo semplicemente sceglierne uno (ad esempio 1001).
cambiare i gruppi con visibility_level 4 alla nuova costante - ma solo i gruppi utilizzati da babble.
Questa query selezionerebbe i gruppi giusti @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');
Ciao, scusa, darò un’occhiata a questo nei prossimi giorni, ma la tua bozza generale di soluzione è perfetta. Il backport sarà la parte più delicata, ci darò un’occhiata più da vicino presto.