Membres connectés récemment
AWESOMEBB] Ajouter ou retirer un membre des groupes depuis la liste des membres
2 participants
Page 3 sur 3 • Partagez
Page 3 sur 3 • 1, 2, 3
- InvitéInvité
Rappel du premier message :
- Version du forum :AWESOMEBB
- Templates modifiés :non
- Navigateur :Firefox
Bonjour,
J'ai un forum où j'ai à faire beaucoup de mouvements dans les groupes, et ce avec beaucoup de groupes ^^
Aussi je me demandais s'il serait possible de fabriquer quelque chose de quelque peu similaire dans l'idée à l'astuce pour utiliser les outils de modération sur la liste des sujets, mais avec les groupes, et ce sur la liste des membres
Je souhaiterai que sur chaque ligne de la liste des membres ( = pour chaque membre) j'aie en tant qu'administrateur un bouton qui affiche la liste des groupes, et que je puisse ajouter le membre dans le groupe directement depuis la liste des membres.
Si c'est possible, ce serait l'idéal de pouvoir également les supprimer de tel ou tel groupe, mais le premier objectif pour moi est de pouvoir ajouter de nombreux membres dans plusieurs groupes différents rapidement.
Ainsi lorsque je cliquerai sur le bouton du membre, ça pourrait dans l'idéal donner quelque chose comme ça :
Je ne sais pas si ce que je demande est impossible, mais si c'est possible ce serait génial !!
Un grand merci d'avance
chattigre
J'ai un forum où j'ai à faire beaucoup de mouvements dans les groupes, et ce avec beaucoup de groupes ^^
Aussi je me demandais s'il serait possible de fabriquer quelque chose de quelque peu similaire dans l'idée à l'astuce pour utiliser les outils de modération sur la liste des sujets, mais avec les groupes, et ce sur la liste des membres
Je souhaiterai que sur chaque ligne de la liste des membres ( = pour chaque membre) j'aie en tant qu'administrateur un bouton qui affiche la liste des groupes, et que je puisse ajouter le membre dans le groupe directement depuis la liste des membres.
Si c'est possible, ce serait l'idéal de pouvoir également les supprimer de tel ou tel groupe, mais le premier objectif pour moi est de pouvoir ajouter de nombreux membres dans plusieurs groupes différents rapidement.
Ainsi lorsque je cliquerai sur le bouton du membre, ça pourrait dans l'idéal donner quelque chose comme ça :
Ajouter le membre :
- Bureau
- Communication
- ...
Retirer le membre
- Adhérents
- ....
Je ne sais pas si ce que je demande est impossible, mais si c'est possible ce serait génial !!
Un grand merci d'avance
chattigre
Alors j'ai pas essayé mais d'après ce que tu me décris essaie plutôt comme ça ?
Je pense que oui en écrivant le code j'ai passé en paramètre de la fonction l'id de l'utilisateur et pas sa classe ^^ .
Message envoyé via la réponse rapide par: @Self
- Code:
$(function(){
let tools = `<article id="groupstool" class="hidden">
<form action="" method="post" name="post">
<h2></h2>
<div class="gtool">
</div>
<select id="groupsChoice">
<option value="">Choisir un groupe</option>
<option value="2">Modérateurs</option>
<option value="3">groupe 1</option>
<option value="4">groupe 2</option>
</select><input class="btn btn-default" type="submit" name="add" value="Ajouter"><span class="check"><i class="material-icons">check_circle</i></span>
<input type="hidden" id="username" name="username">
<input type="hidden" name="g">
<input type="hidden" name="tid">
</form>
</article>`;
let getColor = function(user, userPlace){
$.get('/memberlist?mode=lastvisit&order=DESC&submit=Ok&username='+user, function(d){
let newColor = $('.member span', d).attr('style');
if(newColor && $('.member.'+userPlace).html().indexOf('strong') == -1){ let w = $('.member.'+userPlace).text(); $('.member.'+userPlace).html('<span style="'+newColor+'"><strong>'+w+'</strong></span>');
}else if(newColor){ $('.member.'+userPlace+' span').attr('style', newColor);
}else{ let w = $('.member.'+userPlace).text(); $('.member.'+userPlace).html(w); }
});
}, removeUser = function(uid, userPlace){
$('.gps').each(function(){
$(this).append('<i class="material-icons">cancel</i>');
});
$('.gps i').click(e =>{
let tgt = e.target.parentElement, a = tgt.getAttribute('data-action'), g = tgt.getAttribute('data-g');
$('#groupstool form').attr('action', a);
$('input[name="g"]').attr('value', g);
$('#groupsChoice option:disabled[value="'+g+'"]').removeAttr('disabled');
let options = new Array();
options.push({name: 'members[]', value: uid}, {name: 'remove', value: 'supprimer+la+sélection'}, $('#groupstool form').serializeArray());
$.post(a, options, function(){
tgt.remove();
}).done(function(){getColor($('#username').attr('value'), userPlace);});
});
}, groupList = function(user, uid, userPlace){
$.get('/memberlist?mode=groups&order&submit=Ok&username='+user, function(d){
$('.gtool').html($('.gps', d));
removeUser(uid, userPlace);
$('#groupstool').toggleClass('visible hidden');
$('#groupstool h2').text('Groupe auxquels appartient '+user);
$('#groupsChoice option').each(function(){
for(let i = 1; i < ($('.gps').length+1); i++){
if($(this).text() == $('.gps:nth-child('+i+')').text().replace('cancel', '')){
$('.gps:nth-child('+i+')').attr('data-action', '/g'+$(this).attr("value")+'-'+$(this).text().replace(" ", "-")).attr('data-g', $(this).attr('value'));
$(this).attr('disabled', '');
}
}
});
$('#groupsChoice').on('change', e => {
$('#groupsChoice').css('background', 'initial');
let s = $("#groupsChoice option:selected"), t = s.text().replace(' ', '-'), v = '/g'+s.attr('value')+'-'+t;
$('#groupstool form').attr('action', v);
$('input[name="g"]').val(s.val());
});
$('#groupstool form').submit(e =>{
e.preventDefault();
e.stopPropagation();
if(!$("#groupsChoice option:selected").attr('value') == ''){
let options = new Array(), a = $('#groupstool form').attr('action');
options.push({name: 'username', value: $('#username').attr('value')}, {name: 'add', value: 'Ajouter+le+membre'}, {name: 'g', value: $('input[name="g"]').attr('value')}, {name: 'tid', value: _tid});
$.post(a, options, function(){
let s = $("#groupsChoice option:selected").attr('value'), t = $("#groupsChoice option:selected").text();
$("#groupsChoice option:selected").attr('disabled', '');
$('.check i').fadeIn('fast').delay('1000').fadeOut('fast');
$('.gtool').prepend('<span class="gps" data-action="'+$('#groupstool form').attr('action')+'" data-g="'+s+'">'+t+'<i class="material-icons">cancel</i></span>');
$('.gps:first i').click(e =>{
let tgt = e.target.parentElement, a = tgt.getAttribute('data-action'), g = tgt.getAttribute('data-g');
let options = new Array();
options.push({name: 'members[]', value: uid}, {name: 'remove', value: 'supprimer+la+sélection'}, $('#groupstool form').serializeArray());
$('#groupsChoice option:disabled[value="'+g+'"]').removeAttr('disabled');
$.post(a, options, function(){
tgt.remove();
$('#groupsChoice option:first').attr('selected', '');
}).done(function(){getColor($('#username').attr('value'), userPlace);});
});
$('#groupsChoice option:first').attr('selected', '');
}).done(function(){getColor($('#username').attr('value'), userPlace);});
return;
}else{
$('#groupsChoice').css('background', 'antiquewhite');
}
});
});
};
$('.m_search').click(e =>{
e.preventDefault();
let u = e.currentTarget.classList[1], user = $('.member.'+u).text(), uid = $('.member.'+u).parent().attr('href').match(/[0-9]+/)[0];
$('#groupsChoice option').each(function(){ $(this).removeAttr('disabled'); });
$('#username').val(user);
$('#dimmer').toggleClass('visible hidden').click(e =>{ $('#groupstool').attr('hidden'); });
groupList(user, uid, u);
});
if(!_userdata.user_level == 1) $('.m_search').remove();
else $('body').append(tools); $('input[name="tid"]').attr('value', _tid);
});
Je pense que oui en écrivant le code j'ai passé en paramètre de la fonction l'id de l'utilisateur et pas sa classe ^^ .
Message envoyé via la réponse rapide par: @Self
Milouze14 aime ce message
- InvitéInvité
Salut,
Ah ben là, tout de suite, ça marche mieux !
Il me reste encore quelques soucis de requêtes qui s'envoient deux fois de manière aléatoire, comme si une partie du code mettait parfois plus de temps qu'une autre à s'exécuter...
Mais bon, à moins que tu aies une solution pour qu'il ne puisse pas y avoir deux requêtes à la même seconde par exemple, ça reste un bug très mineur...
(Quand la requête s'envoie deux fois j'ai "Choisir un groupe" qui apparait dans la liste des groupes du membre, et plus le même groupe plusieurs fois)
Pourtant je ne fais bien qu'un clic sur le bouton...
Sinon je pense que je mettrai ce sujet en résolu, avec un énorme MERCI pour l'énorme gain de temps ! A peine 5 minutes pour une trentaine de mouvements (et il y en aura d'autres ^^), c'est génial. Surtout qu'on gère les groupes "membre par membre" et pas "groupe par groupe" à devoir se rappeler qui il faut pas oublier dans ce groupe, qui y est déjà, etc. ^^
Bonne soirée
Message envoyé via la réponse rapide par: @chattigre
Ah ben là, tout de suite, ça marche mieux !
Il me reste encore quelques soucis de requêtes qui s'envoient deux fois de manière aléatoire, comme si une partie du code mettait parfois plus de temps qu'une autre à s'exécuter...
Mais bon, à moins que tu aies une solution pour qu'il ne puisse pas y avoir deux requêtes à la même seconde par exemple, ça reste un bug très mineur...
(Quand la requête s'envoie deux fois j'ai "Choisir un groupe" qui apparait dans la liste des groupes du membre, et plus le même groupe plusieurs fois)
Pourtant je ne fais bien qu'un clic sur le bouton...
Sinon je pense que je mettrai ce sujet en résolu, avec un énorme MERCI pour l'énorme gain de temps ! A peine 5 minutes pour une trentaine de mouvements (et il y en aura d'autres ^^), c'est génial. Surtout qu'on gère les groupes "membre par membre" et pas "groupe par groupe" à devoir se rappeler qui il faut pas oublier dans ce groupe, qui y est déjà, etc. ^^
Bonne soirée
Message envoyé via la réponse rapide par: @chattigre
Oui change de navigateur . Je suis pas sur PC la, je regarde des que possible si je reproduis encore malgré le stopPropagation, car je n'ai pas eu le bogue depuis moi .
Et pas de soucis, je comprends je déteste toutes ces pages d'erreurs et de confirmation avec redirection chez FA.
EDIT: j'ai reproduis en limitant la bande passante. Je ne vois pas vraiment pourquoi et pas vraiment comment palier à ça..
Message envoyé via la réponse rapide par: @Self
Et pas de soucis, je comprends je déteste toutes ces pages d'erreurs et de confirmation avec redirection chez FA.
EDIT: j'ai reproduis en limitant la bande passante. Je ne vois pas vraiment pourquoi et pas vraiment comment palier à ça..
Message envoyé via la réponse rapide par: @Self
- InvitéInvité
Salut,
Hum, de loin je dirai, une variable qui enregistre la dernière requête envoyée et qui empêche d'envoyer exactement la même (même groupe, même membre, même action ajout / suppression) deux fois de suite ?
J'ai l'impression que j'ai ce bug en particulier lorsque je fais plusieurs mouvements à la suite, je ne saurais dire pourquoi ...
Mais si tu ne sais pas quoi faire, on peut laisser comme ça au pire aussi
Merci et bonne soirée !
Self a écrit:EDIT: j'ai reproduis en limitant la bande passante. Je ne vois pas vraiment pourquoi et pas vraiment comment palier à ça..
Hum, de loin je dirai, une variable qui enregistre la dernière requête envoyée et qui empêche d'envoyer exactement la même (même groupe, même membre, même action ajout / suppression) deux fois de suite ?
J'ai l'impression que j'ai ce bug en particulier lorsque je fais plusieurs mouvements à la suite, je ne saurais dire pourquoi ...
Mais si tu ne sais pas quoi faire, on peut laisser comme ça au pire aussi
Merci et bonne soirée !
Salut @chattigre !
Je regarderai un peu plus en profondeur sur d'autre navigateurs également et je te tiens au courant d'ici quelques jours si j'ai une solution ou pas .
Message envoyé via la réponse rapide par: @Self
Je regarderai un peu plus en profondeur sur d'autre navigateurs également et je te tiens au courant d'ici quelques jours si j'ai une solution ou pas .
Message envoyé via la réponse rapide par: @Self
Salut @chattigre. Je ne dis pas que ça va fonctionner mais je n'ai pas reproduit sur d'autres navigateur.
Peux tu juste essayer de me dire si tu as toujours le problème en désactivant le cache sous firefox : clic droit sur la page -> inspecter -> onglet réseau -> cocher la case désactiver le cache.
Je vais continuer mes tests au cas ou en attendant mais je n'ai pas énormément de temps en ce moment.
Message envoyé via la réponse rapide par: @Self
Peux tu juste essayer de me dire si tu as toujours le problème en désactivant le cache sous firefox : clic droit sur la page -> inspecter -> onglet réseau -> cocher la case désactiver le cache.
Je vais continuer mes tests au cas ou en attendant mais je n'ai pas énormément de temps en ce moment.
Message envoyé via la réponse rapide par: @Self
Milouze14 aime ce message
- InvitéInvité
Salut,
En fait, j'ai surtout l'impression que le problème se produit sur écran tactile ou lorsque tu fais un double clic involontaire sur le bouton
Du coup, ce que j'ai fait pour le moment, c'est
et
Avec #btngroupadd le bouton "Ajouter" de l'outil
En forçant un attribut disabled au clic du bouton jusqu'à ce que l'action soit terminée, je n'ai plus de requêtes envoyées en double il semblerait !
Je ne sais pas ce que tu penses de cette solution ? Moi après, tant que ça marche...
Bonne journée
Message envoyé via la réponse rapide par: @chattigre
En fait, j'ai surtout l'impression que le problème se produit sur écran tactile ou lorsque tu fais un double clic involontaire sur le bouton
Du coup, ce que j'ai fait pour le moment, c'est
- Code:
$('#groupstool form').submit(e =>{
e.preventDefault();
e.stopPropagation();
$('#btngroupadd').attr('disabled', 'disabled');
et
- Code:
.done(function(){getColor($('#username').attr('value'), userPlace); $('#btngroupadd').removeAttr('disabled');});
return;
}else{
$('#groupsChoice').css('background', 'antiquewhite');
$('#btngroupadd').removeAttr('disabled');
}
Avec #btngroupadd le bouton "Ajouter" de l'outil
En forçant un attribut disabled au clic du bouton jusqu'à ce que l'action soit terminée, je n'ai plus de requêtes envoyées en double il semblerait !
Je ne sais pas ce que tu penses de cette solution ? Moi après, tant que ça marche...
Bonne journée
Message envoyé via la réponse rapide par: @chattigre
Salut, je fais une grosse journée de taff aujourd'hui alors je réponds rapidement sur téléphone. C'est une solution effectivement. Le problème est que la on part que du cas où la requête renvoit un succès. Si ce n'est pas le cas le bouton reste désactivé jusqu'à ce qu'on recharge la page.. Est ce que je pourrais te demander ce que tu utilises comme appareil tactile ? Téléphone ? Tablette ?
Message envoyé via la réponse rapide par: @Self
Message envoyé via la réponse rapide par: @Self
- InvitéInvité
Salut,Self a écrit:Salut, je fais une grosse journée de taff aujourd'hui alors je réponds rapidement sur téléphone. C'est une solution effectivement. Le problème est que la on part que du cas où la requête renvoit un succès. Si ce n'est pas le cas le bouton reste désactivé jusqu'à ce qu'on recharge la page.. Est ce que je pourrais te demander ce que tu utilises comme appareil tactile ? Téléphone ? Tablette ?
C'est pas faux
Sinon, sur mon mobile par exemple je reproduis, un "double clic" est vite arrivé...
Mais ça vient surtout du fait que si deux clics sont faits au lieu d'un en l'espace de quelques millisecondes, l'option sélectionné n'est pas encore en disabled.
Sinon, j'ai remplacé ce que j'avais mis dans le .done par
- Code:
.always(function() {$('#btngroupadd').removeAttr('disabled');});
Cela résout toujours le bug de mon côté, et je pense que ça supprime un défaut de ma première tentative
Bonne journée
Alors autant je peux comprendre le fait de travailler sur une tablette, certaines sont très puissantes et apportent tout le confort nécessaire à la navigation et à l'espace de travail, autant les mobiles à part peut être un Note 10/20 je n'en vois pas l'utilité mais ce n'est qu'un avis personnel. Et pour te dire avant dans mes développements de script je me servais de l'userAgent pour totalement éliminer le fonctionnement du script si ce n'était pas un PC/MAC. Aujourd'hui je suis pour le développement responsive au niveau design mais jamais je ne ferais de la modération sur une version mobile et je ne m'en occupe absolument pas. Si un script pose problème on met une exception et on ne s'en sert que sur PC. Mais pour le coup je suis content que tu ais trouvé la solution qui te convenait. Si tu n'as pas d'autre questions ou bogues par rapport au sujet nous pourrons le passer en résolu ?
Message envoyé via la réponse rapide par: @Self
Message envoyé via la réponse rapide par: @Self
Milouze14 aime ce message
- InvitéInvité
Salut,Self a écrit:Alors autant je peux comprendre le fait de travailler sur une tablette, certaines sont très puissantes et apportent tout le confort nécessaire à la navigation et à l'espace de travail, autant les mobiles à part peut être un Note 10/20 je n'en vois pas l'utilité mais ce n'est qu'un avis personnel. Et pour te dire avant dans mes développements de script je me servais de l'userAgent pour totalement éliminer le fonctionnement du script si ce n'était pas un PC/MAC. Aujourd'hui je suis pour le développement responsive au niveau design mais jamais je ne ferais de la modération sur une version mobile et je ne m'en occupe absolument pas. Si un script pose problème on met une exception et on ne s'en sert que sur PC. Mais pour le coup je suis content que tu ais trouvé la solution qui te convenait. Si tu n'as pas d'autre questions ou bogues par rapport au sujet nous pourrons le passer en résolu ?
On est entièrement d'accord
Après, il m'arrive d'avoir besoin de faire quelque chose rapidement sur mobile, donc SI c'est possible que mes outils soient compatibles, je préfère ^^
Je pense en effet que ma demande a pleinement trouvé sa solution à présent !
Il ne me reste plus qu'à te remercier et te féliciter encore une fois pour cet outil parfaitement fonctionnel qui me fait gagner un temps précieux dans la gestion technique de notre forum !!
Bonne journée !
Hello
Sujet résolu et déplacé dans le forum adéquate
A bientôt pour une prochaine demande
Sujet résolu et déplacé dans le forum adéquate
A bientôt pour une prochaine demande
Message envoyé via la réponse rapide par: @Milouze14
Page 3 sur 3 • 1, 2, 3
Sujets similaires
» [AWESOMEBB]Retirer les crochets des groupes dans le Qeel
» [PHPBB2] Afficher l'id du membre au lieu de la numérotation dans la liste des membres
» [AWESOMEBB] Colorier l'icône de nouveaux sujets depuis la dernière visite
» [EDGE] Ajouter l'avatar du membre à côté de la réponse rapide
» [PhpBB2] Template gérant la liste des messages d'un membre
» [PHPBB2] Afficher l'id du membre au lieu de la numérotation dans la liste des membres
» [AWESOMEBB] Colorier l'icône de nouveaux sujets depuis la dernière visite
» [EDGE] Ajouter l'avatar du membre à côté de la réponse rapide
» [PhpBB2] Template gérant la liste des messages d'un membre
Créer un compte ou se connecter pour répondre
Vous devez être membre pour répondre.
Page 3 sur 3
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum