Masquer certains utilisateurs de

J’ai pensé à partager un simple script JavaScript pour masquer certains utilisateurs de la liste Users. J’imagine que cela pourrait être bien plus élégant si cela était fait via un plugin, mais je ne suis pas encore assez courageux pour le faire ! De plus, cela doit être fait pour chaque thème et ce script est codé en dur pour fonctionner uniquement avec le thème Light ! Les principes s’appliquent à n’importe quel thème.

Disons que vous avez des utilisateurs appelés james-admin et another-admin et que vous ne souhaitez pas qu’ils soient visibles ouvertement pour tous les utilisateurs. Il suffit d’ajouter le script personnalisé suivant à la personnalisation </body> (Paramètres -> Personnaliser -> Thèmes -> Light -> </body>):

<script type="text/javascript">
    
    // utilisateurs masqués
    let hidden_users = [ "james-admin", "another-admin" ];
    
    // lorsqu'une page est chargée via AJAX
    $( document ).ajaxComplete( function( event, xhr, settings ) {
        
        // vérifier si on est sur la liste des utilisateurs
        if ( settings.url.startsWith("/directory_items?") ) {
            
            // trouver tous les conteneurs avec des utilisateurs masqués
            hidden_users.forEach(function ( hidden_user ) {
                $( "a:contains('" + hidden_user + "')" ).each( function() {
                    
                    // double vérification
                    if ( this.text === hidden_user ) {
                        
                        // masquer / supprimer l'utilisateur (spécifique à ce thème !)
                        $( this ).closest( "tr" ).remove();
                        
                    }
                    
                });
            });
            
        }
        
    });
    
</script>

Commentaires bienvenus !

Juste pour confirmer, s’agit-il de la page À propos qui liste les administrateurs et les modérateurs ?

C’est vraiment génial. Je dois en apprendre davantage sur la programmation.

@Heliosurge, bonne remarque — il s’agissait de la liste des utilisateurs (/u), mais j’ai maintenant mis à jour pour inclure les informations du site (/about).

J’ai mis à jour le code afin que vous puissiez spécifier les pages à masquer et également si un conteneur parent doit également être supprimé.

<script type="text/javascript">
    
    // pages à masquer (page|parent)
    let mask_pages = ["/directory_items?|tr", "/about.json"];
    let mask_users = ["james-admin", "another-admin"];
    
    // lorsqu'une page est chargée via AJAX
    $(document).ajaxComplete(function(event, xhr, settings) {
        
        // vérifier si on est sur la liste des utilisateurs
        mask_pages.forEach(function(mask_page_full_spec) {
            
            // diviser la spécification
            let mask_page_spec = mask_page_full_spec.split("|");
            
            // trouver la page
            if (settings.url.startsWith(mask_page_spec[0])) {
                mask_users.forEach(function(mask_user) {
                    
                    // obtenir le conteneur
                    let mask_user_elem = $("[data-username='"+mask_user+"']");
                    
                    // conteneur parent ?
                    if (mask_page_spec.length == 2) {
                        mask_user_elem.closest(mask_page_spec[1]).remove();
                    } else {
                        mask_user_elem.remove();
                    }
                    
                });
            }
            
        });
        
    });
    
</script>

C’est un travail formidable.

J’ai réalisé que cela ne fonctionnait pas pour la version mobile. Modifiez ce qui suit :

// rechercher <tr> ou <div>, dans cet ordre
let mask_pages = ["/directory_items?|tr,div", "/about.json"];

// rechercher à partir du parent, car closest peut inclure l'objet lui-même
mask_user_elem.parent().closest(mask_page_spec[1]).remove();

J’espère que cela sera utile à certains. Comme je l’ai dit, je suis convaincu qu’un plugin serait une bien meilleure façon de masquer les utilisateurs qui sont ‘admins’ et ne souhaitent pas être visibles sur un forum client.

Je réalise que ce JavaScript pourrait aussi être un composant partageable entre des thèmes compatibles. Je vais arrêter de vous ennuyer avec cette fonctionnalité insignifiante – mais elle m’a bien aidé ! :grinning: