Comparaison variable javascript et {variable_template}

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

Résolu Comparaison variable javascript et {variable_template}

Message par curiosity le Ven 27 Juin 2014 - 18:59

Bonjour,
J'aimerais comparer une variable javascript (l'un des _userdata[qqch1]) avec une "variable" de template {qqch2} dans un script javascript.
Est-ce possible, et si oui avec quelle syntaxe ?

J'ai comme l'impression que ce sont des entités de niveau très différent, mais je sais qu'on peut y avoir accès via le js.
J'ai essayé des choses du genre
Code:
if(_userdata["qqch1"] == {qqch2})
ou la même chose avec des ' ' mais ça me renvoie toujours false alors que ça devrait renvoyer vrai :
Code:
if(_userdata["qqch1"] == '{qqch2}')
.

Pourriez-vous m'aider à avancer Smile ?


Dernière édition par curiosity le Mer 2 Juil 2014 - 21:34, édité 4 fois

curiosity
Nouveau membre

Messages : 18
Inscrit(e) le : 23/06/2014

curiosity a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Comparaison variable javascript et {variable_template}

Message par curiosity le Ven 27 Juin 2014 - 19:00

PS : J'ai supposé implicitement que les deux variables étaient des chaînes de caractères et qu'il n'y a pas de problème de "type".

curiosity
Nouveau membre

Messages : 18
Inscrit(e) le : 23/06/2014

curiosity a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Comparaison variable javascript et {variable_template}

Message par curiosity le Sam 28 Juin 2014 - 19:08

J'ai ajouté une description à ma question pour préciser le but de ma question initiale. Si quelqu'un s'est déjà penché sur le problème, ça m'intéresse d'avoir des avis et des idées.

Concrètement, je cherche à savoir, sur la page de consultation d'un sujet, si l'utilisateur est la personne qui a créé le sujet ou pas...

Quelqu'un sait-il faire cela scratch ?  

curiosity
Nouveau membre

Messages : 18
Inscrit(e) le : 23/06/2014

curiosity a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Comparaison variable javascript et {variable_template}

Message par Ea le Sam 28 Juin 2014 - 20:32

Bonjour,


Et vous avez cette donnée où ?

Dans le cas où vous n'êtes pas sur la première page et que le premier message du sujet n'est pas répété sur chaque page, l'information n'est pas disponible.

Dans le cas contraire, c'est juste le premier pseudo sur la page donc on peut mettre un script :

Code:
/^\/t[0-9]+(p[0-9]+)?-/.test(location.pathname) && $(function(){
  if($('.postprofile dt a').first().attr('href') == "/u"+_userdata["user_id"]) {
    $("body").append("YOU ARE THE OP!");
  }
});

pour faire comme vous indiquez, il faudrait avoir un script par post et juste le premier agira ( grâce à une variable du style "var premier_post_passe = false;" qui sera mis à true après le premier post et testée pour l'exécuter ).

Cela me semble mieux de faire comme j'indique au dessus.

Cordialement.

Ea
Aidactif
Aidactif

Messages : 23429
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Comparaison variable javascript et {variable_template}

Message par curiosity le Dim 29 Juin 2014 - 15:06

Merci beaucoup, ça a l'air de correspondre à ce que je cherche.

Pour répondre à la question : c'est justement ce que je cherche à savoir, où récupérer cette donnée !

Je vais explorer cette piste parce qu'il y a aussi du boulot à faire pour comprendre l'imbrication template/javascript et comment faire interagir les deux, notamment comment modifier une classe CSS dont on ne connaît pas le div, etc.

curiosity
Nouveau membre

Messages : 18
Inscrit(e) le : 23/06/2014

curiosity a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Comparaison variable javascript et {variable_template}

Message par curiosity le Dim 29 Juin 2014 - 15:48

@Ea a écrit:Dans le cas contraire, c'est juste le premier pseudo sur la page donc on peut mettre un script :

Code:
/^\/t[0-9]+(p[0-9]+)?-/.test(location.pathname) && $(function(){
  if($('.postprofile dt a').first().attr('href') == "/u"+_userdata["user_id"]) {
    $("body").append("YOU ARE THE OP!");
  }
});


J'ai essayé d'analyser le code proposé et j'ai deux questions à son sujet :
1) Vous parlez de "pseudo sur la page", mais c'est user_id qui est utilisé, cad l'id de l'utilisateur qui regarde la page. Ai-je mal compris ?
2) C'est le test "$('.postprofile dt a').first().attr('href') == "/u"+_userdata["user_id"]" qui me semble le plus intéressant ici pour progresser. D'après ce que j'ai compris, le $ équivaut à la chaîne document.getElementById. Donc on va chercher (mes souvenirs sont un peu vieux alors j'ai vérifié sur internet mais sans doute il y a encore des lacunes...), dans le "class" .postprofile, la liste de définition et l'ancre (??), le premier élément ayant pour attribut "href" et on le compare à la chaine /uxxxxx où xxxx est l'id de l'utilisateur.
Hein ?  Shocked Ca voudrait dire qu'on a accès par l'intermédiaire du CSS a de telles informations ? Mais si c'est le cas, comment peut-on savoir tout cela ? Où est-ce écrit ?
Et sinon, qu'est-ce que j'ai loupé ?

Pourriez-vous m'en dire plus, svp ?

curiosity
Nouveau membre

Messages : 18
Inscrit(e) le : 23/06/2014

curiosity a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Comparaison variable javascript et {variable_template}

Message par curiosity le Mar 1 Juil 2014 - 21:47

Bonjour !
Je fais un petit victoire UP parce qu'on m'a donné un poisson et j'ai pu me nourrir, mais j'aimerais beaucoup apprendre à pêcher Smile...
 Thanks 

curiosity
Nouveau membre

Messages : 18
Inscrit(e) le : 23/06/2014

curiosity a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Comparaison variable javascript et {variable_template}

Message par Ea le Mar 1 Juil 2014 - 22:55

Le $ sur forumactif correspond à la librairie javascript jQuery et utilisé comme cela ça permet de sélectionner les éléments qui correspondent à un sélecteur CSS.

Le sélecteur CSS ".postprofile dt a" sélectionnera les éléments <a> dans un élément <dt> dans un élément avec la class="postprofile", cela correspondra donc aux liens de pseudos dans les sujets pour phpbb3 : http://i.imgur.com/4dIYeWh.png

Donc $('.postprofile dt a') nous donne une liste de liens avec le pseudo et menant aux profils.

Ensuite .first() prend le premier élément de la liste ( le lien du premier posteur de la page sur laquelle on se trouve ).

Et puis .attr('href') nous fournit la valeur de l'attribut "href" de l'élément courant ( l'url du lien ).

J'utilise du jQuery car dans ce cas-ci ça facilite les choses, en javascript de base ça ressemblerait à ceci, qui est plus long et moins performant :

Code:
/^\/t[0-9]+(p[0-9]+)?-/.test(location.pathname) && (function(){

   var prev_load = window.load;
   if(prev_load === undefined)
      prev_load = function(){};
      
   window.onload=function(){
      prev_load();
      
      var pp = document.getElementsByClassName('postprofile');
      if(pp.length==0) return;
      
      var dts = pp[0].getElementsByTagName('DT');
      if(dts.length==0) return;
      
      var as = dts[0].getElementsByTagName('A');
      if(as.length==0) return;
      
      if(as[0].getAttribute('href') == "/u"+_userdata["user_id"]) {
         document.body.appendChild(document.createTextNode("YOU ARE THE OP!"));
      }
   };

})();

Pour la documentation, il y a un site en anglais ( et plusieurs sites de traduction en français qu'on peut trouver sur google ) :

- documentation sur les sélecteurs : http://api.jquery.com/category/selectors/
- documentation sur $() équivalent de jQuery() : http://api.jquery.com/jQuery/
- documentation sur .first() : http://api.jquery.com/first/
- documentation sur .attr() : http://api.jquery.com/attr/
- documentation sur .append() : http://api.jquery.com/append/

Cordialement.

Ea
Aidactif
Aidactif

Messages : 23429
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.
  • 0

Résolu Re: Comparaison variable javascript et {variable_template}

Message par curiosity le Mer 2 Juil 2014 - 21:33

Merci beaucoup, c'était très clair et j'ai tout compris Smile.


curiosity
Nouveau membre

Messages : 18
Inscrit(e) le : 23/06/2014

curiosity a été remercié(e) par l'auteur de ce sujet.

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


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