Problème avec intitulé de citation

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

Résolu Problème avec intitulé de citation

Message par pinke le 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
avatar

pinke
****

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

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

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

Message par Neptunia le Lun 12 Juin 2017 - 16:14

Bonjour ^^


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

Neptunia
Membre actif

Féminin
Messages : 11896
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 pinke le 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
avatar

pinke
****

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

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

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

Message par pinke le Mer 14 Juin 2017 - 9:04

UP Very Happy
avatar

pinke
****

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

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

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

Message par Lixyr le 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.




avatar

Lixyr
Aidactive
Aidactive

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

http://forum-test-in-lixyr.rpg-dynasty.com/
Lixyr a été remercié(e) par l'auteur de ce sujet.

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

Message par Neptunia le 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
avatar

Neptunia
Membre actif

Féminin
Messages : 11896
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 pinke le Mer 14 Juin 2017 - 12:52

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

Bonne journée I love you
avatar

pinke
****

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

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