Connexion

Récupérer mon mot de passe

Derniers sujets
» *[Invision] 3D pour invision
par Temps-pour-elle Aujourd'hui à 12:31

» [Invision]Afficher les boutons " éditer, citer, supprimer, etc ... " sous forme de texte
par Temps-pour-elle Aujourd'hui à 12:28

» [PhpBB2] Comme sur ce forum....capture écran jointe
par Milouze14 Aujourd'hui à 4:21

» [PhpBB2] Index colonnes
par Milouze14 Aujourd'hui à 4:20

» *RESOLU*[PhpBB3] Changer la couleur du texte dans" Qui est en ligne "
par Milouze14 Hier à 19:06

» Règlement de l'entraide Forumactif
par Angelface Hier à 18:07

» *RESOLU*[PhpBB2] Bouton qui est en ligne qui clignote....
par Milouze14 Hier à 16:22

» [PHPBB2] Cacher tous les sujets des invités
par dédé54 Hier à 12:42

» [PhpBB2] index colonnes
par Milouze14 Hier à 4:24

» *RESOLU*[PhpBB2] coloration du titre du sujet dans chaque rubrique .
par Milouze14 Mer 16 Oct 2019 - 18:58

» histoire du Jour sans fin
par Quad Daniel Mer 16 Oct 2019 - 8:06

» Histoire de Blondes Sans Fin
par Quad Daniel Mer 16 Oct 2019 - 8:00

» *RESOLU*[PhpBB3] L'harmonie des couleurs
par 1bernard1 Mer 16 Oct 2019 - 5:18

» *RESOLU*[PhpBB2] Script qui beug depuis plusieurs jours
par Milouze14 Mar 15 Oct 2019 - 19:46

» *RESOLU*[PhpBB2] Coloration de citation parteille et autres
par Milouze14 Mar 15 Oct 2019 - 19:11

» *CORBEILLE*[Edge] Probleme affichage d'avatar..
par Milouze14 Mar 15 Oct 2019 - 19:02

» *RESOLU*[PhpBB2] Je n'ai pas le nombre de posts et sujets dans l'astuce...
par Milouze14 Mar 15 Oct 2019 - 19:00

» *RESOLU*[PhpBB3] Couleurs des liens dans le widget " derniers sujets "
par Milouze14 Lun 14 Oct 2019 - 19:58

» [PhpBB2]Afficher le nombre de sujets/messages sur les messages
par Milouze14 Dim 13 Oct 2019 - 18:04

» [PhpBB3]Afficher le nombre de sujets/messages sur les messages
par Milouze14 Sam 12 Oct 2019 - 18:44

*RESOLU*[PhpBB2] Vérifier valeur dans InArray (Jquery)

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

Bipo
Bipo
Milouzien

MessageBipo le Jeu 8 Aoû 2019 - 13:02

  • Version du forum :
    PhpBB2
  • Templates modifiés :
    oui
  • Navigateur :
    Chrome
Bonjour x)

Je reviens une nouvelle fois vers vous... car je suis en PLS depuis quelques heures... (encore). Ma demande fait suite à la première de ce sujet.

Voici l'état actuel de mon script :

Code:
$(function() {
    if (_userdata["user_id"] > -1) {
        $.get("/profile?mode=editprofile", function(data) {
            var categorie = [];
            $(data).find('#profile_field_12_1').find('input[type="checkbox"]:checked').each(function() {
                categorie.push($(this).closest('label').text());
            });
            var reason = $("#reason").text();
            if (jQuery.inArray(reason, categorie) != -1) {
                $(".Trigger_Warning").remove();
            }
            console.log(categorie);
            console.log(reason);
        });
    }
});

En lisant deux sources jQuery.inArray et cette démo ici, je souhaite vérifier si la variable reason se trouve dans la liste categorie.

Du coup, si j'ai bien compris, la fonction InArray me permet de savoir si un élément est bien dans la tableau.

Sauf que... ça ne semble pas fonctionner... Je ne comprends pas. Je pense avoir correctement rédigé le code au regard de ces différents exemples.

Une idée de mon erreur ?

Bipo.


Dernière édition par Bipo le Ven 9 Aoû 2019 - 20:46, édité 1 fois
Milouze14
Milouze14
Fondateur

MessageMilouze14 le Jeu 8 Aoû 2019 - 17:29

Hello Bipo,
je ne suis pas expert et très à l'aise avec cette méthode mon ami, mais que veux tu faire exactement ,
récupérer les cases cochées et prendre le texte et l’insérer dans le profil des messages ?

Mon ami Arnaud @no_way sera mieux te répondre sur l’utilisation de ce script
Sinon, en épluchant le script et la démo

Cette ligne doit recevoir les textes il me semble:

Code:
var categorie = [];

Comme la démo:

Code:
var names = ['vadim', 'thomas', 'tanya', 'timur', 'eve', 'kate', 'karen', 'peter'];
Bipo
Bipo
Milouzien

MessageBipo le Jeu 8 Aoû 2019 - 21:17

Hello :)

En effet, je cherche à faire une condition sur la liste var categorie.

Même en testant une version simplifiée du script :

Code:
$(function() {
    if (_userdata["user_id"] > -1) {
        $.get("/profile?mode=editprofile", function(data) {
            var reason = [];
            $(data).find('#profile_field_12_1').find('input[type="checkbox"]:checked').each(function() {
                reason.push($(this).closest('label').text());
            });
         
          if (reason == "Sexe") {
            $(".Trigger_Warning").remove();
          } 
            console.log(reason);
        });
    }
});

La condition ne fonctionne pas.

Je pense que le problème vient du fait que je récupère .text() et non la valeur .val() du tableau...
Milouze14
Milouze14
Fondateur

MessageMilouze14 le Ven 9 Aoû 2019 - 4:19

Hello Bipo,

ceci veut dire si 1 est égale a 2 alors :
Code:
 
if (reason == "Sexe") {

Que représente :
Code:
$(".Trigger_Warning").remove();

Bref, si tu testes ce script:

tu récupères bien les valeurs dans la partie gauche du profil:
Code:
$(function() {
if (_userdata["user_id"] > -1) {
$.get("/profile?mode=editprofile", function(data) {
$(data).find('#profile_field_12_1').find('input[type="checkbox"]:checked').each(function() {
var texte=$(this).closest('label').text();
if (texte)
{

  $('#profile_field_12_3').closest('tr').find('td:first').append(texte);           
}
console.log(texte);
            });});
        }
    });

Bipo
Bipo
Milouzien

MessageBipo le Ven 9 Aoû 2019 - 13:14

Cher Milouze,

Voici une capture écran pour illustrer le principe :

*RESOLU*[PhpBB2] Vérifier valeur dans InArray (Jquery) 09-08-10

Milouze14
Milouze14
Fondateur

MessageMilouze14 le Ven 9 Aoû 2019 - 15:09

Re Bipo,
Hum peux-tu me donner le code html afin que je puisse tester sur mon fofo de test phpbb2 . Ainsi que le ou les templates modifiés Je reviens en fin de journée car je suis avec Android clin oeil
Bipo
Bipo
Milouzien

MessageBipo le Ven 9 Aoû 2019 - 16:21

Re,

Je vais te détailler le projet. Le but de ce projet est de faire un système de trigger warning (TW) pour mon forum RPG.

Lorsqu'un membre souhaite poster un RP avec un contenu potentiellement sensible, il se doit de le signaler :

*RESOLU*[PhpBB2] Vérifier valeur dans InArray (Jquery) 09-08-11

Après avoir coché une ou plusieurs option(s), il code est inséré dans la textarea :

*RESOLU*[PhpBB2] Vérifier valeur dans InArray (Jquery) 09-08-12

Code:
/* CSS Trigger Warning [JS RGPD] */

.postbody .content {
    font-size: 1.3rem;
  position: relative;
    }

.Trigger_Warning{
  background: rgba(0,0,0,0.7);
  color : #FFF;
  z-index:1;
  position: absolute;
  width:100%;
  height: 100%;
  text-align: center;
  left: 0;
  vertical-align: middle;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  border-radius: 20px;
  font-size: 30px;
  line-height: 1;
}

.content label#id_TW {
  background: white;
  width: 75px;
  height: 50px;
  border-radius:10px;
  padding: 10px;
}
.content input[id^="trigger"]{display: none;}

.content input[id^="trigger"]:checked ~ :nth-child(2){display:none;opacity:0px;}

Code:
$(window).load(function() {
    var settings = {
        img: 'https://i.servimg.com/u/f38/11/01/36/00/warnin11.png',
        title: 'Avertissement public (Trigger Warning)'
    };

    $('.sceditor-group:last').after('<div class="sceditor-group"><a class="sceditor-button sceditor-button-message" title="' + settings["title"] + '"><div style="background:url(' + settings["img"] + ') no-repeat;"></div></a></div>');
    $('body').append('<div id="messageList" style="z-index:15;display:none;position:absolute;background:#fff;border:1px solid #ccc;padding:3px;"><ul id="reason" class="reasonClass"><li><label><input type="checkbox" name="reason" value="Sexe"> Sexe</label></li><li><label><input type="checkbox" name="reason" value="Sexe (violence)"> Sexe (violence)</label></li><li><label><input type="checkbox" name="reason" value="Violence (psychologique)"> Violence (psychologique)</label></li><li><label><input type="checkbox" name="reason" value="Violence (physique)"> Violence (physique)</label></li><li><label><input type="checkbox" name="reason" value="Automutilation"> Automutilation</label></li><li><label><input type="checkbox" name="reason" value="Insultes/Vulgarité">&nbsp;Insultes/Vulgarité</label></li><li><label><input type="checkbox" name="reason" value="Autre : ">Autre :</label><div style="border-style: solid;border-width: 1px 0 0;margin-top: 10px;border-color: #ebebeb;"><input type="text" id="RAinput" name="RAinput" placeholder="à préciser"/></div></li></ul><div style="border-style: solid;border-width: 1px 0 0;margin-top: 10px;border-color: #ebebeb;"><input type="button" value="Publier"></div>');

    $('.sceditor-button-message').click(function() {
        var display = $('#messageList').css('display');
        if (display == 'none') {
            var Y = $(this).offset().top;
            var X = $(this).offset().left;
            $('#messageList').show().offset({
                top: Y + 25,
                left: X
            });
        } else {
            $('#messageList').hide();
        }
    });

    $("input[type='button']").click(function() {
        var reason = [];
        var otherreason = $("#RAinput").val();
        var id_trigger = Math.floor(Math.random() * 15);
        $.each($("input[name='reason']:checked"), function() {
            reason.push($(this).val());
        });

        $('#text_editor_textarea').sceditor("instance").insertText('<!-- BALISE TW A NE PAS SUPPRIMER --><input type="checkbox" id="trigger_' + id_trigger + '" name="scales"><div class="Trigger_Warning TW_' + id_trigger + '"><br>Ce message mentionne du contenu sensible <br />' + reason.join(",  ") + otherreason + '<br /><br /><label id="id_TW" for="trigger_' + id_trigger + '">Afficher quand même</label></div><!-- FIN DE BALISE -->');
    });
});

Cela la partie fonctionnelle du système.

Maintenant, j'aimerai que le membre puisse personnaliser l'affichage ou non des TW. Par exemple, si un membre ne souhaite pas voir les TW des RP Sexe, il peut le cocher dans son profil afin que cela désactive l'option. C'est le script JS donné plus haut, sur lequel je bute...

Voilà :)

Par contre, je fais les tests sur un forum ModernBB pour ce développement.
Milouze14
Milouze14
Fondateur

MessageMilouze14 le Ven 9 Aoû 2019 - 17:07

Oki je regarde cela ,
donc tu butes simplement sur le profil.
Tu as donc deux choix pour l'affichage ou non du code html?:
Oui ou Non ?

Ton projet est tout de même pour la version PhppBB2?
Milouze14
Milouze14
Fondateur

MessageMilouze14 le Ven 9 Aoû 2019 - 17:23

Vu que ton sujet mentionné la version Phpbb2, j'ai continué mes essais sur cette dernière.

Alors , j'ai créé deux champs dans le profil Oui ou non.

La case on est cochée par défaut:

*RESOLU*[PhpBB2] Vérifier valeur dans InArray (Jquery) 120

Ce qui donne sur le profil:

*RESOLU*[PhpBB2] Vérifier valeur dans InArray (Jquery) 119

Puis ce script:
Code:

$(function() {
if (_userdata["user_id"] > -1) {
$.get("/profile?mode=editprofile", function(data) {
$(data).find('#profile_field_12_1').each(function(){
var oui=$(this).find('input[type="checkbox"]:first:checked').length;
var non=$(this).find('input[type="checkbox"]:last:checked').length;
if (non) {$('.Trigger_Warning').remove();}});});}});



Ou celui-ci pour supprimer aussi le bouton sur l'éditeur:
Code:
$(function() {
if (_userdata["user_id"] > -1) {
$.get("/profile?mode=editprofile", function(data) {
$(data).find('#profile_field_12_1').each(function(){
  var oui=$(this).find('input[type="checkbox"]:first:checked').length;
  var non=$(this).find('input[type="checkbox"]:last:checked').length;
if (non) {$('.Trigger_Warning,a.sceditor-button.sceditor-button-message').remove();  }});});}});

Ce dernier est fonctionnel mon ami clin oeil
Bipo
Bipo
Milouzien

MessageBipo le Ven 9 Aoû 2019 - 19:10

Re,

Merci pour cet avancement.

Du coup, je pense plutôt faire une liste que des checkbox afin que les membres évitent de cliquer sur Oui et Non en même temps.

J'ai donc fait une liste Oui/Non.

Je pensais réécrire le code de cette manière :

Code:
$(function() {
    if (_userdata["user_id"] > -1) {
        $.get("/profile?mode=editprofile", function(data) {
            $(data).find('#profile_field_7_1').each(function() {
                if ($('#profile_field_7_1 option[value="0"]:selected')) {
                    $('.Trigger_Warning').remove();
                }
            });
        });
    }
});

Mais visiblement, cela ne fonctionne pas. Je désespère à ne pas comprendre pourquoi cela ne fonctionne pas même en suivant x tutoriels...

Milouze14
Milouze14
Fondateur

MessageMilouze14 le Ven 9 Aoû 2019 - 20:06

Ok, effectivement on a plus le choix de créer des listes prédéfinies.

Code:
if ($('#profile_field_7_1 option[value="0"]:selected')) {

La tu mentionnes le choix oui  le choix non à cette valeur 1

Ce script devrait fonctionner Bipo:


Code:
$(function() {
if (_userdata["user_id"] > -1) {
$.get("/profile?mode=editprofile", function(data) {
$(data).find('#profile_field_7_1').each(function(){
var non=$(this).find('option[value="1"]:selected').length;
if(non)
{
$('.Trigger_Warning,a.sceditor-button.sceditor-button-message').remove();  
}

            });});
        }
    });
Bipo
Bipo
Milouzien

MessageBipo le Ven 9 Aoû 2019 - 20:46

Re,

Pourquoi je cherche toujours compliqué...

C'est parfait Milouze, je fais étudier la propriété .length.

Résolu :) Un grand merci !
Milouze14
Milouze14
Fondateur

MessageMilouze14 le Sam 10 Aoû 2019 - 6:24


Hello Bipo,

de rien cher ami.


Hello


Sujet résolu et déplacé dans le forum adéquate

A bientôt pour une prochaine demande clin oeil

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

Créer un compte ou se connecter pour répondre

Vous devez être membre pour répondre.

S'enregistrer

Rejoignez notre communauté ! C'est facile !


S'enregistrer

Connexion

Vous êtes déjà membre ? Aucun soucis, cliquez ici pour vous connecter.


Connexion

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