Astuces Forumactif
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Membres connectés récemment
Voir tous les membres

[AWESOMEBB] Afficher une alerte aux membres dont un champ du profil est vide



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

Anonymous
Invité
Invité

MessageInvité Mer 1 Sep 2021 - 13:12

  • Version du forum :
    AWESOMEBB
  • Templates modifiés :
    non
  • Navigateur :
    Firefox
Bonjour,
Je vais avoir à purger la valeur d'un champ de profil pour tous les utilisateurs.
Une fois que cela sera fait, j'aimerais que tous les membres pensent à le remplir de nouveau.

J'aimerais bien donc que lorsqu'un membre se connecte au forum, une vérification soit faite sur la valeur du champ, et que si le champ n'est pas rempli une alerte soit affichée au membre après connexion (sous la forme d'un alert en JS cela irait très bien) afin de l'inviter à se rendre sur son profil pour éditer le champ en question.

J'utilise le profil simple et le champ concerné est affiché sur les profils et porte l'id field_id1.
Aucune personnalisation ne touche au profil actuellement.

La cerise sur le gâteau serait de pouvoir proposer au membre un champ de saisie (il s'agit d'un champ de profil texte sur une ligne) directement dans le alert qui changerait la valeur du champ, mais déjà l'avertissement serait une grosse avancée ok

(Cette demande n'est pas sans lien avec mon autre demande en cours ^^)




Merci d'avance (en espérant que ce ne soit pas aussi difficile à faire que ma première demande ! marreordi )


Dernière édition par chattigre le Jeu 2 Sep 2021 - 9:11, édité 2 fois
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mer 1 Sep 2021 - 15:40

Hello chattigre,
tu peux essayer ceci, mais juste sur l'index car ce sera redondant sinon.
Je ne serais pas mettre en place juste une seule alerte après la connexion.

Le script va regarder si le champs contient un mot, dans le cas contraire (null) on affichera une confirmation ou tu pourras modifier les variables comme bon te semble(elles sont commentées).

Si le membre clique sur ok il aura un petit texte "je fonce le modifier" a modifier
et sera redirigé vers son profil.


Modules/HTML&JAVASCRIPT/Gestion des codes Javascript/Créer un nouveau Javascript

Mettre un titre explicite.
Cocher sur l'index.


Déposer ceci:

Code:

$(function(){
  if(!_userdata["session_logged_in"])return;
$(function(){
var pseudo=_userdata["username"];
//premier texte
var texte=",\nmerci de renseigner le champs suivant dans votre profil:\n  ";
var link=$('div[id="main-user-menu"]').find('ul li:first a[href^="/u"]').attr('href');
$.get(link , function(data){
var champ=$(data).find('.cp.advanced-profile #profile-tab-field-profil').find('dl#field_id1').find('dt').text();
var val=$(data).find('.cp.advanced-profile #profile-tab-field-profil').find('dl#field_id1').find('div.field_uneditable').text();
var nom =val.match(/\w+/);
  //SI PAS DE MOTS ALORS...
if(nom==null)
{
//ON LANCE LES VARIABLES CI DESSUS
if ( confirm('Bonjour '+pseudo+texte+champ+'') )
{
//UN PETIT MOT SYMPA
alert('je fonce le modifier');  
window.location.href='/profile?mode=editprofile';
}
else
{
//si on cliques sur annuler alors j affiche le texte ci dessous
alert(' je renonce');
}}});})});

Penser a cliquer sur le bouton Valid
 

Message envoyé via la réponse rapide par: @Milouze14


Dernière édition par Milouze14 le Mer 14 Aoû 2024 - 20:10, édité 1 fois
Anonymous
Invité
Invité

MessageInvité Mer 1 Sep 2021 - 16:01

Merci Milouze !
J'ai juste modifié les sélecteurs puisque j'utilise le profil simple et que le code me semble prévu pour le profil avancé (résultat l'alerte s'affichait que le champ soit rempli ou non) ok

Y-a-t-il un moyen :
 - De vérifier que plusieurs champs sont remplis (et d'afficher une seule alerte regroupant tout)
 - D'exclure certains utilisateurs à partir de leur id ?

Voici où j'en suis pour le moment : impeccable
Code:
    $(function(){
      if(!_userdata["session_logged_in"])return;
    $(function(){
    var pseudo=_userdata["username"];
    var texte=",\nmerci de renseigner le champ suivant dans votre profil:\n  ";
    var link=$('div[id="main-user-menu"]').find('ul li:first a[href^="/u"]').attr('href');
    //var profil=$('div[id="main-user-menu"]').find('a[href="/profile?mode=editprofile"]');
    $.get(link , function(data){
    var champ=$(data).find('#profile').find('dl#field_id1').find('dt').text();
    var val=$(data).find('#profile').find('dl#field_id1').find('div.field_uneditable').text();
    var nom =val.match(/\w+/);
      //SI PAS DE MOTS ALORS...
    if(nom==null)
    {
    //ON LANCE LES VARIABLES CI DESSUS
    if ( confirm('Bonjour '+pseudo+texte+champ+'') )
    {
    window.location.href= link;
    }}});})});

Merci beaucoup !
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mer 1 Sep 2021 - 16:20

Oups effectivement,
j'aurais penché pour .grid-2 au lieu de #profile

Comme ceci:

Code:
$(function(){
  if(!_userdata["session_logged_in"])return;
$(function(){
var pseudo=_userdata["username"];
var texte=",\nmerci de renseigner le champs suivant dans votre profil:\n  ";
var link=$('div[id="main-user-menu"]').find('ul li:first a[href^="/u"]').attr('href');
$.get(link , function(data){
var champ=$(data).find('.grid-2').find('dl#field_id2').find('dt').text();
var val=$(data).find('.grid-2').find('dl#field_id2').find('div.field_uneditable').text();
var nom =val.match(/\w+/);
  //SI PAS DE MOTS ALORS...
if(nom==null)
{
//ON LANCE LES VARIABLES CI DESSUS
if ( confirm('Bonjour '+pseudo+texte+champ+'') )
{
//UN PETIT MOT SYMPA
alert('je fonce le modifier'); 
window.location.href='/profile?mode=editprofile';
}
else
{
//si on clicques sur annuler alors j affiche le texte ci dessous
alert(' je renonce');
}}});})});


Pour bloquer certains id:

Tu peux utiliser ceci:
Code:
if(_userdata["user_id"]== 1||16)return;

On bloque l'id 1 et 16
A placer en dessous de :
Code:
  if(!_userdata["session_logged_in"])return;
les deux barres verticales || sont a placer en chaque id.


De vérifier que plusieurs champs sont remplis (et d'afficher une seule alerte regroupant tout)


Vi mais ce sera sur la partie du profil donc la class .grid-2 (partie du milieu).
Mais je dois me sauver pour l'instant et je verrais tout cela en fin de journée.


Message envoyé via la réponse rapide par: @Milouze14
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mer 1 Sep 2021 - 18:46

@chattigre ,

alors pour cette demande:
chattigre a écrit:De vérifier que plusieurs champs sont remplis (et d'afficher une seule alerte regroupant tout)
Il faut savoir si tous les champs de profil sont du texte.
L'actuel script va rechercher juste un contenu ayant du texte.
Je pense que tes autres champs ont autre valeur?

Message envoyé via la réponse rapide par: @Milouze14
Anonymous
Invité
Invité

MessageInvité Mer 1 Sep 2021 - 19:16

Bonjour Milouze,

Merci pour le nouveau code, je vais voir ça !
L'autre champ à vérifier est aussi textuel ok
C'est une liste déroulante, mais l'affichage sur le profil et la structure HTML / CSS à l'affichage est la même si je ne me trompe pas (L'autre champ a pour id field_id3).

L'objectif est donc de vérifier que ni un champ ni l'autre n'est vide, et que si l'un des deux l'est alors l'alerte s'affiche.

Merci !

Message envoyé via la réponse rapide par: @chattigre
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mer 1 Sep 2021 - 19:57

Re,
ce n'est que pour un autre champ chattigre ?
Cela m’arrange lOL .

Il faut donc si je saisis bien faire une condition pour les deux ?

Je verrais cela demain désormais cher ami ok .


Message envoyé via la réponse rapide par: @Milouze14
Anonymous
Invité
Invité

MessageInvité Mer 1 Sep 2021 - 20:23

Re,
Mon modeste niveau en JS m'a suffit pour réadapter ton code à mes besoins ok

Je te transmets le résultat, vois-tu une erreur de syntaxe dedans ? ^^

Code:
$(function(){
  if(!_userdata["session_logged_in"])return;
  if(_userdata["user_id"]== (1||47||77))return;
  $(function(){
  var pseudo=_userdata["username"];
  var texte=",\nMerci de renseigner le(s) champ(s) suivant(s) dans ton profil:\n";
  var link=$('div[id="main-user-menu"]').find('ul li:first a[href^="/u"]').attr('href');
  $.get(link , function(data){
  var champ1=$(data).find('.grid-2').find('dl#field_id1').find('dt').text()+'\n';
  champ1 = champ1.replace(/\* :/g, '');
  var val1=$(data).find('.grid-2').find('dl#field_id1').find('div.field_uneditable').text();
  var champ2=$(data).find('.grid-2').find('dl#field_id3').find('dt').text()+'\n';
  champ2 = champ2.replace(/\* :/g, '');
  var val2=$(data).find('.grid-2').find('dl#field_id3').find('div.field_uneditable').text();
  var bool1 =val1.match(/\w+/);
  var bool2 =val2.match(/\w+/);
    //SI PAS DE MOTS ALORS...
  if((bool1===null) || (bool2===null)) {
    var displayed = '';
    if(bool1 ===  null) displayed+= ' - ' +champ1;
    if(bool2 === null) displayed+= ' - ' +champ2;
    //ON LANCE LES VARIABLES CI DESSUS
    if ( confirm('Bonjour '+pseudo+texte+displayed) )
    {
    window.location.href=link;
    }
  }
  });
  });
});

Chez moi il est fonctionnel, mais bon, je préfère demander plutôt que de laisser un truc bancal MdR

Merci beaucoup pour ton aide

Bonne journée
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Jeu 2 Sep 2021 - 7:15

Hello chattigre,
bravo pour ce code, mais pourquoi venir chercher de l'aide
si tu maitrises ainsi ?



Message envoyé via la réponse rapide par: @Milouze14
Anonymous
Invité
Invité

MessageInvité Jeu 2 Sep 2021 - 9:11

Salut,
Merci ok

En fait, je comprends le code, j'arrive à l'étendre ou le reproduire, mais j'ai encore beaucoup de mal à partir de zéro pour arriver à ce que je veux...

(Et puis je parle de codes simples, dès que c'est des codes plus complexes, c'est pas la même histoire hurle MdR)

Merci pour ton aide !

Message envoyé via la réponse rapide par: @chattigre
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Jeu 2 Sep 2021 - 12:04

Ok cher ami,
en tout cas bravo hinhin .


Hello


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

A bientôt pour une prochaine demande clin oeil



Message envoyé via la réponse rapide par: @Milouze14

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