Masquer certains boutons de modération en fonction du groupe

4 participants

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Aller en bas

Résolu Masquer certains boutons de modération en fonction du groupe

Message par chattigre Lun 25 Mai 2020 - 19:17

Bonjour,
Je ne m'y connais pas du tout en Javascript, donc je poste cette demande...
Est-ce qu'il serait possible de me faire un Javascript (je vois pas comment sinon) qui corresponde à ceci ? :
- Utilisateur modérateur ET [sur un sujet OU panneau de modération OU sous-forum] ?
     - Appartient au groupe 99 ?
          - Ajouter le CSS (<style>): .maclasse { display:none }
Merci d'avance Wink
chattigre

chattigre
Membre habitué

Masculin
Messages : 1923
Inscrit(e) le : 17/04/2019

Voir le profil de l'utilisateur https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.
  • 0

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par mSyx Lun 25 Mai 2020 - 19:24

Oy o/
J'ai justement essayé de retrouver comment faire cette nuit et j'ai rien pu trouver. Je sais qu'un code parfaitement fonctionnel existe, mais qu'il est peu commun i_i

Dans le doute, ça pourrait quand même t'aider: https://forum.forumactif.com/t357257-pseudos-personnalises-en-fonction-du-groupe
mSyx

mSyx
****

Masculin
Messages : 394
Inscrit(e) le : 22/09/2012

Voir le profil de l'utilisateur https://forum.forumactif.com/
mSyx a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par chattigre Lun 25 Mai 2020 - 19:26

Euh oui et non... je souhaite appliquer du CSS sur complètement autre chose que les noms d'utilisateurs Very Happy
Sur certains boutons pour être précis Very Happy
Donc je vois pas... ^^
chattigre

chattigre
Membre habitué

Masculin
Messages : 1923
Inscrit(e) le : 17/04/2019

Voir le profil de l'utilisateur https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par mSyx Lun 25 Mai 2020 - 21:28

Ah, bah il faut le préciser :b
Pour l'instant, j'ai pu trouver ça: https://forum.forumactif.com/t376273-afficher-une-ption-seulement-pour-certains-joueurs#3175921
mSyx

mSyx
****

Masculin
Messages : 394
Inscrit(e) le : 22/09/2012

Voir le profil de l'utilisateur https://forum.forumactif.com/
mSyx a été remercié(e) par l'auteur de ce sujet.
  • 0

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par Self Mer 27 Mai 2020 - 21:28

Bonsoir,

Vous l'avez dit vous ne connaissez rien en Javascript, le mieux est donc de dire le résultat que vous voulez un peu plus précisément.
Que voulez vous changer pour certains utilisateurs ?
Est-ce pour des groupes, ou pour des niveau d'utilisateur (un utilisateur peut être modérateur d'un forum sans appartenir à un groupe) ?
Self

Self
Membre actif

Masculin
Messages : 3827
Inscrit(e) le : 13/06/2013

Voir le profil de l'utilisateur https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par chattigre Mer 27 Mai 2020 - 21:54

Bien, donc je vais détailler Very Happy
Merci de votre aide.
J'aimerais, si un utilisateur appartient à un groupe x (ce groupe étant modérateur du sous-forum en question), appliquer un style du type :
Code:
.btn-delete{
display:none;
}
(Je sais que ce n'est pas fiable d'essayer d'empêcher les modérateurs de faire quelque chose en masquant un bouton par display none, mais je veux juste masquer le bouton pour ne pas leur donner envie de s'en servir et pouvoir revenir dessus facilement... maintenant, si vous avez une solution plus fiable et facilement modifiable (CSS et groupes) à l'avenir, je ne dis pas non ^^ Very Happy )
chattigre

chattigre
Membre habitué

Masculin
Messages : 1923
Inscrit(e) le : 17/04/2019

Voir le profil de l'utilisateur https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par chattigre Mer 27 Mai 2020 - 21:59

Bonsoir
J'ajoute que, dans l'idée, le code n'agirait que sur les pages sujets, liste des sujets, et panneau de modération...
Merci d'avance
chattigre

chattigre
Membre habitué

Masculin
Messages : 1923
Inscrit(e) le : 17/04/2019

Voir le profil de l'utilisateur https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.
  • 0

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par Self Mer 27 Mai 2020 - 23:48

Bonjour,

Je ne vois personnellement pas de bouton de suppression sur la liste des sujets, mais dans l'idée de le cacher autant le supprimer ? Si vos modérateur connaissent un peu les outils de développement ils pourront toujours ré-afficher ce bouton via leur navigateur et supprimer les sujets si il ne s'agit que de CSS.
Donc dans l'idée on pourrait essayer le code suivant :
Code:
if(document.location.pathname.match(/(\/modcp|\/f[0-9+]|\/t[0-9+])/) && _userdata.user_level == 2){
   var btndelete = document.querySelector('input[name="delete"]'), subjectbtn = document.querySelector('.topic-admin a:first-child'), quickmod = document.querySelector('.quickmod-wrap option[value="delete"]');
   if(btndelete){btndelete.remove()
   }else if(subjectbtn && quickmod){subjectbtn.remove(); quickmod.remove()}
}

Sachant que je ne suis pas bien sur que c'est ce que vous voulez puisque ici on agit sur tout les modérateurs et si j'ai bien compris vous voulez qu'il n'agisse que sur les modérateurs d'un certains forum ?
Self

Self
Membre actif

Masculin
Messages : 3827
Inscrit(e) le : 13/06/2013

Voir le profil de l'utilisateur https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par Chacha Mar 2 Juin 2020 - 9:33

Masquer certains boutons de modération en fonction du groupe UmaslZ4Bonjour,

Attention, cela fait 6 jours que nous n'avons pas de nouvelles concernant votre demande, si vous ne voulez pas voir votre sujet déplacé à la corbeille, merci de poster dans les 24h qui suivent ce message.

Si votre sujet est résolu, merci d'éditer votre premier message et de cocher l'icône « résolu »
Chacha

Chacha
Modéractif
Modéractif

Masculin
Messages : 66807
Inscrit(e) le : 21/08/2010

Voir le profil de l'utilisateur https://forum.forumactif.com/
Chacha a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par chattigre Mar 2 Juin 2020 - 16:43

Self a écrit:Bonjour,

Je ne vois personnellement pas de bouton de suppression sur la liste des sujets, mais dans l'idée de le cacher autant le supprimer ? Si vos modérateur connaissent un peu les outils de développement ils pourront toujours ré-afficher ce bouton via leur navigateur et supprimer les sujets si il ne s'agit que de CSS.
Donc dans l'idée on pourrait essayer le code suivant :
Code:
if(document.location.pathname.match(/(\/modcp|\/f[0-9+]|\/t[0-9+])/) && _userdata.user_level == 2){
 var btndelete = document.querySelector('input[name="delete"]'), subjectbtn = document.querySelector('.topic-admin a:first-child'), quickmod = document.querySelector('.quickmod-wrap option[value="delete"]');
 if(btndelete){btndelete.remove()
 }else if(subjectbtn && quickmod){subjectbtn.remove(); quickmod.remove()}
}

Sachant que je ne suis pas bien sur que c'est ce que vous voulez puisque ici on agit sur tout les modérateurs et si j'ai bien compris vous voulez qu'il n'agisse que sur les modérateurs d'un certains forum ?
Merci beaucoup Very Happy
Mais en effet je souhaite que le code n'agisse que sur les membres d'un certain groupe.
Concernant le bouton sur la liste des sujets, j'en ai ajouté un Very Happy
Pour faire simple, je vais simplement mettre un display:none sur la classe du bouton Wink Mais si vous pouviez me faire "le squelette" du code, ce serait gentil Very Happy
Après réflexion, j'aimerais également supprimer les boutons de fusion et division Wink
De sorte qu'il ne reste que "Corbeiller, verrouiller, et déplacer" Wink

Enfin, je rêve surement, mais serait-il possible de faire un code qui supprimerait le droit d'édition autre que sur ses propres messages ?
Si c'est possible, dites-le moi avant de le faire (car je suppose que si c'est possible, c'est complexe Very Happy ), car nous devons décider si l'on faut le choix d'appliquer quelque chose dans le genre, et si la réponse est finalement non, je ne voudrais pas vous avoir demandé quelque chose qui serait inutilisé Wink

Merci pour votre aide Wink
chattigre

chattigre
Membre habitué

Masculin
Messages : 1923
Inscrit(e) le : 17/04/2019

Voir le profil de l'utilisateur https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.
  • 0

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par Self Mer 3 Juin 2020 - 13:43

Bonjour,

ça me parait possible, je me met dessus dès que possible Wink .
Self

Self
Membre actif

Masculin
Messages : 3827
Inscrit(e) le : 13/06/2013

Voir le profil de l'utilisateur https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.
  • 0

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par Self Sam 6 Juin 2020 - 18:24

Bonjour,

J'ai fait un code commenté à essayer dans la gestion des codes javascript sur toutes les pages (et oui j'ai bien dit essayer, malheureusement je n'ai pas le moyen de le faire pour le moment alors soyez indulgents What a Face) :
Code:
if(!sessionStorage.inGroups){ /*SI LA SESSION N'EST PAS DEFINIE*/
   $(function(){
      $.get('/groups', function(d){ /*ON CHERCHE SI LE MEMBRE EST DANS LE GROUPE /G3*/
         var inGroups = $('ul.noList a[href^="/g2"]', d).length;
         /*ON DEFINIE DANS LA SESSION SI IL Y EST OUI OU NON*/
         if(inGroups == 1){ sessionStorage.setItem('inGroups', 'yes');
         }else{ sessionStorage.setItem('inGroups', 'false'); }
      });
   });
}
var hiddens = ['delete', 'split', 'merge'];
if(document.location.pathname.match(/(\/modcp|\/f[0-9+])/) && sessionStorage.getItem('inGroups') == 'yes'){ /*SI IL Y EST ET QU'ON EST SUR LA PAGE DE MODERATION OU SUR LA LISTE DES SUJETS*/
   for(var i = 0; i < hiddens.length; i++){
      var mod = document.querySelector('.btn input[name="'+hiddens+'"]');
      /*ON TROUVE LES BOUTONS DE MODERATION ET LEUR AJOUTE LA CLASSE HIDDEN*/
      if(mod){ mod.classList.add('mHidden'); }
   }
}else if(document.location.pathname.match(/\/t[0-9+]/) && sessionStorage.getItem('inGroups') == 'yes'){ /*SINON SI ON EST SUR UN SUJET*/
   for(var i = 0; i < hiddens.length; i++){
      var quickmod = document.querySelector('.quickmod-wrap option[value="'+hiddens[i]+'"]'), topic = document.querySelectorAll('.topic-admin a');
      /*SI ON TROUVE LES OUTILS DE MODERATION*/
      if(quickmod){ quickmod.remove(); } /*ON SUPPRIME LES ELEMENTS DE LA MODERATION RAPIDE*/
      if(topic){
         for(var j = 0; j < topic.length; j++){
            /*ET ON AJOUTE LA CLASSE HIDDEN AUX BOUTONS DE MODERATION*/
            if(topic[j].href.match(hiddens[i])){ topic[j].classList.add('mHidden') }
         }
      }
   }
   /*POUR CHAQUE POSTE*/
   var author = document.querySelectorAll('.post-author-name');
   for(var i = 0; i < p.length; i++){
      /*SI LE NOM EST DIFFERENT DU NOM DE L'UTILISATEUR*/
      if(p[i].innerText != _userdata.username){
         var p = author[i].closest('.post-wrap');
         /*ON SUPPRIME LE BOUTON D'EDITION*/
         p.firstElementChild.querySelector('.btn-edit').remove();
      }
   }
}

Puis il suffit d'ajouter dans votre feuille de style :
Code:
.mHidden{display: none;}

Les explications étant déjà dans le code si vous avez des questions n,'hésitez pas ! Wink
Self

Self
Membre actif

Masculin
Messages : 3827
Inscrit(e) le : 13/06/2013

Voir le profil de l'utilisateur https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par mSyx Sam 6 Juin 2020 - 22:39

@Self

Code:
 $.get('/groups', function(d){ /*ON CHERCHE SI LE MEMBRE EST DANS LE GROUPE /G3*/
         var inGroups = $('ul.noList a[href^="/g2"]', d).length;

G3 ? Ou G2 ? Du coup, ça serait plutôt un commentaire sur la deuxième ligne ? (j'apprends le jQuery, m'enveuxpas)
mSyx

mSyx
****

Masculin
Messages : 394
Inscrit(e) le : 22/09/2012

Voir le profil de l'utilisateur https://forum.forumactif.com/
mSyx a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par Self Sam 6 Juin 2020 - 23:24

Oui la dans la variable on cible le groupe g2, je me suis tromper dans le commentaire car j'avais mis g3 pour les tests.
Self

Self
Membre actif

Masculin
Messages : 3827
Inscrit(e) le : 13/06/2013

Voir le profil de l'utilisateur https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par chattigre Dim 7 Juin 2020 - 11:52

Bonjour,
J'ai testé, rien à faire ça ne marche pas ^^
J'ai bien entendu modifié le numéro du groupe pas celui qui correspond chez moi ^^
Mais rien ne change Wink
Si quelqu'un pouvait tester de son coté je serais sûr que ce n'est pas moi qui dfait quelque chose de travers Wink
Merci encore Wink
chattigre

chattigre
Membre habitué

Masculin
Messages : 1923
Inscrit(e) le : 17/04/2019

Voir le profil de l'utilisateur https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par Self Dim 7 Juin 2020 - 14:03

Non ce n'est pas vous, c'est moi What a Face !

J'avais oublié quelques modifications dans le code, j'ai testé comme j'ai pu dans la console en modifiant pour mon forum.
Le code suivant devrait maintenant fonctionner sur votre forum :
Code:
if(!sessionStorage.inGroups){ /*SI LA SESSION N'EST PAS DEFINIE*/
   $(function(){
      $.get('/groups', function(d){ /*ON CHERCHE SI LE MEMBRE EST DANS LE GROUPE /G3*/
         var inGroups = $('ul.noList a[href^="/g3"]', d).length;
         /*ON DEFINIE DANS LA SESSION SI IL Y EST OUI OU NON*/
         if(inGroups == 1){ sessionStorage.setItem('inGroups', 'yes');
         }else{ sessionStorage.setItem('inGroups', 'false'); }
      });
   });
}
var hiddens = ['delete', 'split', 'merge'];
if(document.location.pathname.match(/(\/modcp|\/f[0-9+])/) && sessionStorage.getItem('inGroups') == 'yes'){ /*SI IL Y EST ET QU'ON EST SUR LA PAGE DE MODERATION OU SUR LA LISTE DES SUJETS*/
   for(var i = 0; i < hiddens.length; i++){
      var mod = document.querySelector('.btn[name="'+hiddens[i]+'"]');
      /*ON TROUVE LES BOUTONS DE MODERATION ET LEUR AJOUTE LA CLASSE HIDDEN*/
      if(mod){ mod.classList.add('mHidden'); }
   }
}else if(document.location.pathname.match(/\/t[0-9+]/) && sessionStorage.getItem('inGroups') == 'yes'){ /*SINON SI ON EST SUR UN SUJET*/
   for(var i = 0; i < hiddens.length; i++){
      var quickmod = document.querySelector('.quickmod-wrap option[value="'+hiddens[i]+'"]'), topic = document.querySelectorAll('.topic-admin a');
      /*SI ON TROUVE LES OUTILS DE MODERATION*/
      if(quickmod){ quickmod.remove(); } /*ON SUPPRIME LES ELEMENTS DE LA MODERATION RAPIDE*/
      if(topic){
         for(var j = 0; j < topic.length; j++){
            /*ET ON AJOUTE LA CLASSE HIDDEN AUX BOUTONS DE MODERATION*/
            if(topic[j].href.match(hiddens[i])){ topic[j].classList.add('mHidden') }
         }
      }
   }
   /*POUR CHAQUE POSTE*/
   var author = document.querySelectorAll('.post-author-name');
   for(var i = 0; i < author.length; i++){
      /*SI LE NOM EST DIFFERENT DU NOM DE L'UTILISATEUR*/
      if(author[i].innerText != _userdata.username){
         var p = author[i].closest('.post-wrap');
         /*ON SUPPRIME LE BOUTON D'EDITION*/
         p.firstElementChild.querySelector('.btn-edit').remove();
      }
   }
}
Self

Self
Membre actif

Masculin
Messages : 3827
Inscrit(e) le : 13/06/2013

Voir le profil de l'utilisateur https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par chattigre Dim 7 Juin 2020 - 15:53

Désolé mais non, ça ne marche toujours pas ^^
Ou alors c'est moi Wink
Le petit bout de CSS à ajouter n'a pas changé, on est d'accord ^^
chattigre

chattigre
Membre habitué

Masculin
Messages : 1923
Inscrit(e) le : 17/04/2019

Voir le profil de l'utilisateur https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par Self Dim 7 Juin 2020 - 16:20

Bonjour, évidemment Very Happy !

Juste une question, il se peut que ça ne marche pas sur la liste des sujets, je ne peux pas savoir quel bouton vous avez ajouté et la classe qu'il a.
Cependant si ça ne fonctionne pas pour le reste mais que ça fonctionne à partir de la console on devrait peut être plutôt faire comme ça :
Code:
$(function(){
   if(!sessionStorage.inGroups){ /*SI LA SESSION N'EST PAS DEFINIE*/
         $.get('/groups', function(d){ /*ON CHERCHE SI LE MEMBRE EST DANS LE GROUPE /G3*/
            var inGroups = $('ul.noList a[href^="/g3"]', d).length;
            /*ON DEFINIE DANS LA SESSION SI IL Y EST OUI OU NON*/
            if(inGroups == 1){ sessionStorage.setItem('inGroups', 'yes');
            }else{ sessionStorage.setItem('inGroups', 'false'); }
         });
   }
   var hiddens = ['delete', 'split', 'merge'];
   if(document.location.pathname.match(/(\/modcp|\/f[0-9+])/) && sessionStorage.getItem('inGroups') == 'yes'){ /*SI IL Y EST ET QU'ON EST SUR LA PAGE DE MODERATION OU SUR LA LISTE DES SUJETS*/
      for(var i = 0; i < hiddens.length; i++){
         var mod = document.querySelector('.btn[name="'+hiddens[i]+'"]');
         /*ON TROUVE LES BOUTONS DE MODERATION ET LEUR AJOUTE LA CLASSE HIDDEN*/
         if(mod){ mod.classList.add('mHidden'); }
      }
   }else if(document.location.pathname.match(/\/t[0-9+]/) && sessionStorage.getItem('inGroups') == 'yes'){ /*SINON SI ON EST SUR UN SUJET*/
      for(var i = 0; i < hiddens.length; i++){
         var quickmod = document.querySelector('.quickmod-wrap option[value="'+hiddens[i]+'"]'), topic = document.querySelectorAll('.topic-admin a');
         /*SI ON TROUVE LES OUTILS DE MODERATION*/
         if(quickmod){ quickmod.remove(); } /*ON SUPPRIME LES ELEMENTS DE LA MODERATION RAPIDE*/
         if(topic){
            for(var j = 0; j < topic.length; j++){
               /*ET ON AJOUTE LA CLASSE HIDDEN AUX BOUTONS DE MODERATION*/
               if(topic[j].href.match(hiddens[i])){ topic[j].classList.add('mHidden') }
            }
         }
      }
      /*POUR CHAQUE POSTE*/
      var author = document.querySelectorAll('.post-author-name');
      for(var i = 0; i < author.length; i++){
         /*SI LE NOM EST DIFFERENT DU NOM DE L'UTILISATEUR*/
         if(author[i].innerText != _userdata.username){
            var p = author[i].closest('.post-wrap');
            /*ON SUPPRIME LE BOUTON D'EDITION*/
            p.firstElementChild.querySelector('.btn-edit').remove();
         }
      }
   }
});
Self

Self
Membre actif

Masculin
Messages : 3827
Inscrit(e) le : 13/06/2013

Voir le profil de l'utilisateur https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par chattigre Dim 7 Juin 2020 - 17:05

Re,
Je confirme que rien ne marchait, et que rien ne marche Very Happy
Pour rappel je suis sous AwesomeBB, je ne sais pas si ça change quelque chose ^^
Pour la liste des sujets, j'ai pas tout compris, mais en fait c'est secondaire, donc si ça peut poser problème, on oublie ^^
chattigre

chattigre
Membre habitué

Masculin
Messages : 1923
Inscrit(e) le : 17/04/2019

Voir le profil de l'utilisateur https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par Self Dim 7 Juin 2020 - 20:36

Bonjour,

Sur votre forum je vois à la place de cette ligne :
Code:
var mod = document.querySelector('.btn[name="'+hiddens[i]+'"]');

ceci :
Code:
var mod = document.querySelector('.btn-[name="'+hiddens[i]+'"]');

Le code ne fonctionne donc pas sur le panneau de modération, je suppose.
Pour le reste, j'ai aussi testé sur un forum AwesomeBB, question est-ce que ce groupe a accès à la page /groups dans les permissions spéciales ?
Self

Self
Membre actif

Masculin
Messages : 3827
Inscrit(e) le : 13/06/2013

Voir le profil de l'utilisateur https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par chattigre Dim 7 Juin 2020 - 21:41

Effectivement, à croire que je n'avais pas enregistré avec la dernière version ^^
Rien ne marche pour autant, désolé Very Happy
Je commence à penser à un conflit, mais avec QUEL CODE ?
J'ai donc testé sur un forum vierge : Rien ne marche non plus ^^
Oui, c'est ok pour les permissions Wink
chattigre

chattigre
Membre habitué

Masculin
Messages : 1923
Inscrit(e) le : 17/04/2019

Voir le profil de l'utilisateur https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par Self Lun 8 Juin 2020 - 14:23

Bonjour,

On peut essayer comme ça :
Code:
$(function(){
   if(!sessionStorage.inGroups){ /*SI LA SESSION N'EST PAS DEFINIE*/
         $.get('/groups', function(d){ /*ON CHERCHE SI LE MEMBRE EST DANS LE GROUPE /G3*/
            var inGroups = $('ul.noList a[href^="/g2"]', d).length;
            /*ON DEFINIE DANS LA SESSION SI IL Y EST OUI OU NON*/
            if(inGroups == 1){ sessionStorage.setItem('inGroups', 'yes');
            }else{ sessionStorage.setItem('inGroups', 'false'); }
         });
   }
   var hiddens = ['delete', 'split', 'merge'];
   if(document.location.pathname.match(/(\/modcp|\/f[0-9]+)/) && sessionStorage.getItem('inGroups') == 'yes'){ /*SI IL Y EST ET QU'ON EST SUR LA PAGE DE MODERATION OU SUR LA LISTE DES SUJETS*/
      for(var i = 0; i < hiddens.length; i++){
         var mod = document.querySelector('.btn[name="'+hiddens[i]+'"]');
         /*ON TROUVE LES BOUTONS DE MODERATION ET LEUR AJOUTE LA CLASSE HIDDEN*/
         if(mod){ mod.classList.add('mHidden'); }
      }
   }else if(document.location.pathname.match(/\/t[0-9]+/) && sessionStorage.getItem('inGroups') == 'yes'){ /*SINON SI ON EST SUR UN SUJET*/
      for(var i = 0; i < hiddens.length; i++){
         var quickmod = document.querySelector('.quickmod-wrap option[value="'+hiddens[i]+'"]'), topic = document.querySelectorAll('.topic-admin a');
         /*SI ON TROUVE LES OUTILS DE MODERATION*/
         if(quickmod){ quickmod.remove(); } /*ON SUPPRIME LES ELEMENTS DE LA MODERATION RAPIDE*/
         if(topic){
            for(var j = 0; j < topic.length; j++){
               /*ET ON AJOUTE LA CLASSE HIDDEN AUX BOUTONS DE MODERATION*/
               if(topic[j].href.match(hiddens[i])){ topic[j].classList.add('mHidden') }
            }
         }
      }
      /*POUR CHAQUE POSTE*/
      var author = document.querySelectorAll('.post-author-name');
      for(var i = 0; i < author.length; i++){
         /*SI LE NOM EST DIFFERENT DU NOM DE L'UTILISATEUR*/
         if(author[i].innerText != _userdata.username){
            var p = author[i].closest('.post-wrap');
            /*ON SUPPRIME LE BOUTON D'EDITION*/
            p.firstElementChild.querySelector('.btn-edit').remove();
         }
      }
   }
});

ça fonctionne sur mon forum AwesomeBB, si ça ne fonctionne toujours pas est-ce que votre template viewtopic_body est modifié ? Si oui pourriez vous me le donner s'il vous plait ?
Self

Self
Membre actif

Masculin
Messages : 3827
Inscrit(e) le : 13/06/2013

Voir le profil de l'utilisateur https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par chattigre Lun 8 Juin 2020 - 14:59

Bonjour,
Sur mon forum, le template est effectivement modifié, mais pas sur mon forum de test.
Voici mon template tout de même Wink

J'ai testé sur mon forum principal en forçant les templates par défaut, rien n'y fait.
Pour changer le numéro du groupe, il faut juste le changer ligne 4, on est d'accord ?
C'est normal que ce soit écrit g2 et pas g2- en sachant que l'url de la page c'est /g2-nom-du-groupe ou /g2- ?
Étrange que ça marche chez vous et pas chez moi !
J'ai mis le script sur toutes les pages, donc il ne devrait pas non plus être bloqué par ça !!!!
chattigre

chattigre
Membre habitué

Masculin
Messages : 1923
Inscrit(e) le : 17/04/2019

Voir le profil de l'utilisateur https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par Self Lun 8 Juin 2020 - 23:47

Bonsoir,

Après mes tests je pense que le problème est que l'on définissait la variable de session si elle n'existait pas déjà et ce même si le membre était déconnecté. Alors comme celle-ci était définie avant la connexion le membre n'appartenait pas au groupe, ça devrait être corrigé avec le code suivant, si toutefois vous vous connectez à un autre compte que votre compte administrateur pour tester dans le même navigateur la variable dira toujours que vous n'appartenez pas au groupe prenant en compte la variable qui a été défini quand vous étiez connecté à votre compte administrateur, pensez donc à faire un (ou plusieurs (on ne sait jamais What a Face )) CTRL+F5 une fois connecté à votre compte test.

Code:
$(function(){
   if(_userdata.session_logged_in == 1 && !sessionStorage.inGroups){ /*SI LA SESSION N'EST PAS DEFINIE*/
         $.get('/groups', function(d){ /*ON CHERCHE SI LE MEMBRE EST DANS LE GROUPE /G3*/
            var inGroups = $('ul.noList a[href^="/g2"]', d).length;
            /*ON DEFINIE DANS LA SESSION SI IL Y EST OUI OU NON*/
            if(inGroups == 1){ sessionStorage.setItem('inGroups', 'yes');
            }else{ sessionStorage.setItem('inGroups', 'false'); }
         });
   }
   var hiddens = ['delete', 'split', 'merge'];
   if(document.location.pathname.match(/(\/modcp|\/f[0-9]+)/) && sessionStorage.getItem('inGroups') == 'yes'){ /*SI IL Y EST ET QU'ON EST SUR LA PAGE DE MODERATION OU SUR LA LISTE DES SUJETS*/
      for(var i = 0; i < hiddens.length; i++){
         var mod = document.querySelector('.btn[name="'+hiddens[i]+'"]');
         /*ON TROUVE LES BOUTONS DE MODERATION ET LEUR AJOUTE LA CLASSE HIDDEN*/
         if(mod){ mod.classList.add('mHidden'); }
      }
   }else if(document.location.pathname.match(/\/t[0-9]+/) && sessionStorage.getItem('inGroups') == 'yes'){ /*SINON SI ON EST SUR UN SUJET*/
      for(var i = 0; i < hiddens.length; i++){
         var quickmod = document.querySelector('.quickmod-wrap option[value="'+hiddens[i]+'"]'), topic = document.querySelectorAll('.topic-admin a');
         /*SI ON TROUVE LES OUTILS DE MODERATION*/
         if(quickmod){ quickmod.remove(); } /*ON SUPPRIME LES ELEMENTS DE LA MODERATION RAPIDE*/
         if(topic){
            for(var j = 0; j < topic.length; j++){
               /*ET ON AJOUTE LA CLASSE HIDDEN AUX BOUTONS DE MODERATION*/
               if(topic[j].href.match(hiddens[i])){ topic[j].classList.add('mHidden') }
            }
         }
      }
      /*POUR CHAQUE POSTE*/
      var author = document.querySelectorAll('.post-author-name');
      for(var i = 0; i < author.length; i++){
         /*SI LE NOM EST DIFFERENT DU NOM DE L'UTILISATEUR*/
         if(author[i].innerText != _userdata.username){
            var p = author[i].closest('.post-wrap');
            /*ON SUPPRIME LE BOUTON D'EDITION*/
            p.firstElementChild.querySelector('.btn-edit').remove();
         }
      }
   }
});
Self

Self
Membre actif

Masculin
Messages : 3827
Inscrit(e) le : 13/06/2013

Voir le profil de l'utilisateur https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par chattigre Mar 9 Juin 2020 - 14:01

Ah ! ça MARCHE ! Very Happy
Merci beaucoup !
Quelques petites choses :
Peut-on faire quelque chose pour supprimer également le bouton d'édition dans le cas d'une navigation sur mobile ?
Peut-on supprimer le lien qui est sur le titre que chaque sujet dans le panneau de modération pour permettre d'aller sur la page de division ?
Est-il normal que le bouton d'édition soit le seul a ne pas être en display : none ?
Tous les autres boutons sont en display : none "simple" il me semble. Est-ce normal ?
Merci pour tout !
chattigre

chattigre
Membre habitué

Masculin
Messages : 1923
Inscrit(e) le : 17/04/2019

Voir le profil de l'utilisateur https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par chattigre Mer 10 Juin 2020 - 19:37

Petit UP Very Happy
chattigre

chattigre
Membre habitué

Masculin
Messages : 1923
Inscrit(e) le : 17/04/2019

Voir le profil de l'utilisateur https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par Self Jeu 11 Juin 2020 - 18:50

Peut-on faire quelque chose pour supprimer également le bouton d'édition dans le cas d'une navigation sur mobile ?

Pour cela je vous conseil d'ouvrir plutôt un nouveau sujet, je suis de retour sur FA depuis peu de temps et je n'ai pas pris le temps de regarder tout ce qui est mobile.

Peut-on supprimer le lien qui est sur le titre que chaque sujet dans le panneau de modération pour permettre d'aller sur la page de division ?
En passant par le template modcp_body et en modifiant ce passage :
Code:
<a class="topictitle" href="{topicrow.U_VIEW_TOPIC}">{topicrow.TOPIC_TITLE}</a>

Par ceci :
Code:
<a class="topictitle" href="/t{topicrow.TOPIC_ID}-">{topicrow.TOPIC_TITLE}</a>
Le lien amènera au sujet et non pas à la page de division et ceci pour tout le monde par contre.

Est-il normal que le bouton d'édition soit le seul a ne pas être en display : none ?
Tous les autres boutons sont en display : none "simple" il me semble. Est-ce normal ?
En effet dans le code je le supprime mais on peut le changer par un ajout de la classe mHidden, après comme je vous l'ai dit de toute façon l'ajout de classe ou la suppression ce fait via le code javascript donc si vous voulez changer quelque chose il faudra changer le javascript..
Self

Self
Membre actif

Masculin
Messages : 3827
Inscrit(e) le : 13/06/2013

Voir le profil de l'utilisateur https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par chattigre Ven 12 Juin 2020 - 9:53

Bonjour,
Merci pour tout !
Je vais commencer par vous répondre... ^^
Pour cela je vous conseil d'ouvrir plutôt un nouveau sujet, je suis de retour sur FA depuis peu de temps et je n'ai pas pris le temps de regarder tout ce qui est mobile.
Je parle d'un forum sous AwesomeBB donc qui n'utilise pas la version mobile proposée par Forumactif sur les autres versions mais qui est responsive et qui a donc quelques différences.
Ici dans le cas de l'en-tête du post :
Code:
<h2><i class="material-icons">description</i><img src="https://i.servimg.com/u/f47/20/05/96/58/alire10.png" alt="À lire" class="tooltipstered"><span><a href="/t44-modes-d-emploi-de-moderation#65">Modes d'emploi de modération</a></span></h2><div class="mobile-hide post-buttons"><ul><li class="btn-quote-multi"><span id="post_mq44_65" onclick="togglePostMultiQuote(this);" class="tooltipstered"><i class="material-icons">format_quote</i><i class="material-icons">add</i></span></li><li class="btn-quote"><a href="/post?p=65&amp;mode=quote" class="tooltipstered"><i class="material-icons">format_quote</i></a></li><li class="btn-edit"><a href="/post?p=65&amp;mode=editpost" class="tooltipstered"><i class="material-icons">edit</i></a></li><li class="btn-delete"><a href="/post?p=65&amp;tid=b6f97f458799a1b371855a42203586f0&amp;mode=delete" class="tooltipstered"><i class="material-icons">delete</i></a></li><li class="btn-ip"><a href="/modcp?mode=ip&amp;p=65&amp;t=44&amp;tid=b6f97f458799a1b371855a42203586f0" class="tooltipstered"><i class="material-icons">info</i></a></li></ul></div><div class="mobile-show dropdown post-buttons-mobile"><i class="material-icons">more_horiz</i><ul class="dropdown-box"><li class="btn-quote-multi"><span id="post_mq44_65" onclick="togglePostMultiQuote(this);" class="tooltipstered"><i class="material-icons">format_quote</i><i class="material-icons">add</i></span></li><li class="btn-quote"><a href="/post?p=65&amp;mode=quote" class="tooltipstered"><i class="material-icons">format_quote</i></a></li><li class="btn-edit"><a href="/post?p=65&amp;mode=editpost" class="tooltipstered"><i class="material-icons">edit</i></a></li><li class="btn-delete"><a href="/post?p=65&amp;tid=b6f97f458799a1b371855a42203586f0&amp;mode=delete" class="tooltipstered"><i class="material-icons">delete</i></a></li><li class="btn-ip"><a href="/modcp?mode=ip&amp;p=65&amp;t=44&amp;tid=b6f97f458799a1b371855a42203586f0" class="tooltipstered"><i class="material-icons">info</i></a></li></ul></div>
Il semble que le bouton en question a également la classe btn-edit mais qu'il est pas touché par le JS, pourriez-vous faire quelque chose pour cela ?

Merci pour l'astuce pour le lien du panneau de modération ^^

En effet dans le code je le supprime mais on peut le changer par un ajout de la classe mHidden, après comme je vous l'ai dit de toute façon l'ajout de classe ou la suppression ce fait via le code javascript donc si vous voulez changer quelque chose il faudra changer le javascript..
D'accord Wink
Au contraire, est-il possible de tout supprimer au lieu d'utiliser des display:none ?
Si c'est compliqué, pas de soucis, on laisse comme ça !

Par contre, dernier problème...
Lorsque je me connecte pour tester avec un compte restreint, les restrictions fonctionnent parfaitement Wink
Problème, si je change de compte, elles restent actives Very Happy
J'ai testé dans plusieurs sens et sur plusieurs navigateurs et j'en déduis que le JS ne "re-clacule" pas au moment où je change de compte. Combien de temps cela peut-il prendre ? Peut-on faire quelque chose contre ça ?
Car du coup je me retrouve avec un compte admin restreint Razz
J'ai supprimé les cookies, pas mieux, en revanche j'ai désactivé / réactivé le JS et là c'était réglé mais bon...
Petite question : Si j'ai 3 groupes, hiérarchisés G1 > G2 > G3, le groupe restrictif est le 3, j'ai un membre qui est dans les groupes 1 et 3, sera-t-il touché ? Le modérateur du groupe est touché je suppose ?
Merci d'avance Very Happy
chattigre

chattigre
Membre habitué

Masculin
Messages : 1923
Inscrit(e) le : 17/04/2019

Voir le profil de l'utilisateur https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.
  • 0

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par Self Ven 12 Juin 2020 - 11:17

Bonjour, je suis sur mobile actuellement, j'essaie de répondre à votre demande dès que possible.
En attendant pour répondre déjà aux questions, oui c'est possible d'enlever celui pour la navigation sur mobile et oui il est possible de tout supprimer à la place de mettre un display none.
Supprimer les cookies du forum ne sert à rien il faut vider le cache en faisant CTRL+F5 comme dit dans mon précédent message ou fermer et rouvrir votre navigateur étant donné que c'est une variable de session qu'on utilise ici.
Le code agit dès que l'on est dans le groupe en question. Et ne prend donc pas en compte la hiérarchie, chose que l'on peu assez facilement modifier. Pour cela pourriez vous me donner les groupes hiérarchiquement au dessus de celui ci ?
Self

Self
Membre actif

Masculin
Messages : 3827
Inscrit(e) le : 13/06/2013

Voir le profil de l'utilisateur https://selfback.forumactif.com/
Self a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Masquer certains boutons de modération en fonction du groupe

Message par chattigre Ven 12 Juin 2020 - 11:36

Merci Very Happy
Pour la hiérarchie, c'est PAR-FAIT, ça m'arrange qu'elle ne soit pas prise en compte, justement Very Happy
Bon, même en vidant le cache c'est capricieux le machin, mais effectivement j'arrive à régler ça ^^
De toute façon je ne devrait avoir le problème qu'une fois de temps en temps en faisant des tests ou une action spéciale Wink
Bon courage et merci encore Very Happy
chattigre

chattigre
Membre habitué

Masculin
Messages : 1923
Inscrit(e) le : 17/04/2019

Voir le profil de l'utilisateur https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum