Problème avec intitulé de citation

3 participants

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

Résolu Problème avec intitulé de citation

Message par foxies Lun 12 Juin 2017 - 13:01

Détails techniques


Version du forum : phpBB2
Poste occupé : Administrateur
Navigateur(s) concerné(s) : Google Chrome
Personnes concernées par le problème : Tous les utilisateurs
Lien du forum : (lien masqué, vous devez poster pour le voir)

Description du problème

Bonjour !

J'ai suivi à la lettre ce tutoriel mais il apparaît que celui-ci ne prenne pas en compte le nom des membres tagué. Le résultat est donc celui attendu en enlevant l'option des tags (dans mon cas : je veux simplement que le nom du membre cité apparaisse, voir ci-dessous le JS que j'utilise sur mon forum) mais en activant la dite option, les citations ne s'affichent plus comme désirées et reprennent leur apparence initiale soit : "@nomdumembre a écrit:" (au lieu de "@nomdumembre"). Pourriez-vous m'indiquer ce qui cloche s'il vous plaît ? Smile

Code:
;$(function() {
 
  /* paramètres à régler */
  var spoiler_text = "Spoiler (cliquer pour afficher le contenu)";
  var citation_text = "Citation";
  var code_text = "Code";
  var a_ecrit_text = "";
  /* fin des paramètres à régler */
 
  $(".postbody").find("dl.spoiler dt, dl.codebox dt, dl.codebox dt span.genmed b, blockquote cite").each(function() {
    if (!this.hasChildNodes() || this.firstChild.nodeType != 3) return;
 
    var c = this.firstChild, t = c.nodeValue.trim();
 
    t == "Spoiler:" && (c.nodeValue = spoiler_text) ||
    t == "Citation :" && (c.nodeValue = citation_text) ||
    t == "Code:" && (c.nodeValue = code_text) ||
    t.substr(-9) == " a écrit:" && (c.nodeValue = t.substr(0, t.length - 9) + a_ecrit_text);
  }).filter('cite').find('a[rel][href^="/u"]').each(function(){
    if($(this).text().substr(0,1)!="@")return;
    $(this.nextSibling).replaceWith(a_ecrit_text);
  });
});


Dernière édition par pinke le Mer 14 Juin 2017 - 12:53, édité 1 fois
foxies

foxies
*****

Féminin
Messages : 607
Inscrit(e) le : 02/05/2010

http://hawkeyeriver.forumgratuit.org/
foxies a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Problème avec intitulé de citation

Message par Neptunia Lun 12 Juin 2017 - 16:14

Bonjour ^^


Pourrions nous avoir un lien accessible aux invités et contenant une citation ?
Neptunia

Neptunia
Membre actif

Féminin
Messages : 17853
Inscrit(e) le : 08/08/2010

https://www.galaxie-series.net/
Neptunia a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Problème avec intitulé de citation

Message par foxies Mar 13 Juin 2017 - 8:49

Bonjour Smile Le forum "Espace staff" est désormais visible pour les invités, j'ai créé un nouveau sujet "Test citation" pour que vous ayez un aperçu du problème Very Happy
foxies

foxies
*****

Féminin
Messages : 607
Inscrit(e) le : 02/05/2010

http://hawkeyeriver.forumgratuit.org/
foxies a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Problème avec intitulé de citation

Message par foxies Mer 14 Juin 2017 - 9:04

UP Very Happy
foxies

foxies
*****

Féminin
Messages : 607
Inscrit(e) le : 02/05/2010

http://hawkeyeriver.forumgratuit.org/
foxies a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Problème avec intitulé de citation

Message par Lixyr Mer 14 Juin 2017 - 11:05

Bonjour,

Effectivement. J'ai analysé le code, et le code ne fonctionne que si le champ à modifier est entièrement du texte. Or, comme vous avez un tagg utilisateur dans le champ modifié, celui-ci passe en élément, donc le code ne le prend pas en compte.

De ce que j'ai vu le code est sensé gérer le cas présent puisqu'il recherche un "@", mais comme il rejette tout élément qui n'est pas entièrement du texte... ca ne peut pas fonctionner. Comme ce code date maintenant, il se peut qu'il faille faire une petite mise à jour. J'ai essayé de corriger le code pour que ça prenne en compte les citations comprenant un tagg utilisateur, malheureusement c'est trop laborieux.

Donc je vous propose un code supplémentaire pour ce cas précis. Code rajouté dans le code initial, donc remplacez tout votre code par celui-ci :

Code:
;$(function() {
 
  /* paramètres à régler */
  var spoiler_text = "Cliquer pour afficher le contenu :";
  var citation_text = "Ceci est une citation :";
  var code_text = "Ceci est un code :";
  var a_ecrit_text = " a écrit précédemment :";
  /* fin des paramètres à régler */
 
  $(".postbody").find("dl.spoiler dt, dl.codebox dt, dl.codebox dt span.genmed b, blockquote cite").each(function() {
    if (!this.hasChildNodes() || (this.firstChild.nodeType == 1 && this.firstChild.className == "genmed")) {
      var c = this.firstChild.lastElementChild, tag = c.lastElementChild;
     $(tag.nextSibling).replaceWith(a_ecrit_text);
    }

    if (!this.hasChildNodes() || this.firstChild.nodeType != 3) return;
    var c = this.firstChild, t = c.nodeValue.trim();
    t == "Spoiler:" && (c.nodeValue = spoiler_text) ||
    t == "Citation :" && (c.nodeValue = citation_text) ||
    t == "Code:" && (c.nodeValue = code_text) ||
    t.substr(-9) == " a écrit:" && (c.nodeValue = t.substr(0, t.length - 9) + a_ecrit_text);
  }).filter('cite').find('a[rel][href^="/u"]').each(function(){
    if($(this).text().substr(0,1)!="@")return;
    $(this.nextSibling).replaceWith(a_ecrit_text);
  });
});

J'ai rajouté une exception pour le cas où on a un tagg utilisateur dans la citation, mais pour voir si ça n'a pas cassé le reste du code il faudrait que vous rajoutiez des spoiler, codes etc à la suite.


Pour faciliter les recherches, mettez un titre explicite.
Remerciez Problème avec intitulé de citation  976083691 le message qui vous a aidé pour que celui-ci soit mis en évidence.
Épinglez votre sujet en résolu Problème avec intitulé de citation  3592387030 pour prévenir la modération.

Problème avec intitulé de citation  Baston10
Lixyr

Lixyr
Aidactive
Aidactive

Féminin
Messages : 7402
Inscrit(e) le : 22/07/2010

https://forum.forumactif.com
Lixyr a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Problème avec intitulé de citation

Message par Neptunia Mer 14 Juin 2017 - 12:34

Edité :

Lixyr : En fait le code avait subi une mise à jour mi-2015 pour prendre en compte ces tags utilisateurs. D'où le fait que le code de filtrage soit présent. Malheureusement nous n'avions filtré que la balise cite, qui n'existe pas en phpBB2.
Le code qui suit est fonctionnel sous phpBB2, punBB et ModernBB. Devrait aussi fonctionner sur les autres versions, mais pas testé de mon côté.

Fin de zone éditée.




Désolée, mais je n'avais pas vu votre réponse d'hier.

pinke a écrit:J'ai suivi à la lettre ce tutoriel mais il apparaît que celui-ci ne prenne pas en compte le nom des membres tagué. Le résultat est donc celui attendu en enlevant l'option des tags

Le tutoriel avait été mis à jour quelques mois après l'apparition des tags utilisateurs et mots-clé mais je reproduis effectivement votre problème sur phpBB2.

Remplacez votre script par :

Code:
;$(function() {
 
  /* paramètres à régler */
  var spoiler_text = "Spoiler (cliquer pour afficher le contenu)";
  var citation_text = "Citation";
  var code_text = "Code";
  var a_ecrit_text = "";
  /* fin des paramètres à régler */
 
  $(".postbody").find("dl.spoiler dt, dl.codebox dt, dl.codebox dt span.genmed b, blockquote cite").each(function() {
    if (!this.hasChildNodes() || this.firstChild.nodeType != 3) return;
 
    var c = this.firstChild, t = c.nodeValue.trim();
 
    t == "Spoiler:" && (c.nodeValue = spoiler_text) ||
    t == "Citation :" && (c.nodeValue = citation_text) ||
    t == "Code:" && (c.nodeValue = code_text) ||
    t.substr(-9) == " a écrit:" && (c.nodeValue = t.substr(0, t.length - 9) + a_ecrit_text);
  }).filter('cite, dl.codebox dt span.genmed b').find('a[rel][href^="/u"]').each(function(){
    if($(this).text().substr(0,1)!="@")return;
    $(this.nextSibling).replaceWith(a_ecrit_text);
  });
});

Code testé et fonctionnel sur phpBB2
Neptunia

Neptunia
Membre actif

Féminin
Messages : 17853
Inscrit(e) le : 08/08/2010

https://www.galaxie-series.net/
Neptunia a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Problème avec intitulé de citation

Message par foxies Mer 14 Juin 2017 - 12:52

Merci à vous deux Smile Le script de Neptunia marche à merveille !

Bonne journée I love you
foxies

foxies
*****

Féminin
Messages : 607
Inscrit(e) le : 02/05/2010

http://hawkeyeriver.forumgratuit.org/
foxies 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