Mise en forme automatique de mots clefs

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

Résolu Mise en forme automatique de mots clefs

Message par Erlin le Mar 17 Juin 2014 - 11:00

Bonjour,

C'est la première fois que je poste sur ce forum, c'est pourquoi, si ma question est au mauvais endroit je m'en excuse. J'ai fais les recherches nécessaires mais je n'ai pas trouvé la réponse à ma question mais il se peut qu'elle est quand même été abordée.

Je suis administrateur adjoint d'un forum qui traite de plantes. J'aimerais pouvoir remplacer certains mots par d'autres lorsque l'on utilise des mots clefs. Par exemple :
G.Africana => Genlisea Africana

En fouillant sur le panneau d'administration je n'ai pas trouvé d'option qui le permette (j'ai peut être mal cherché). La seule chose que j'ai pu trouver c'est la censure de mot. Celle ci permet bien le remplacement de mots clefs par d'autres mais ne prend pas en compte les balises italiques.

Si dans le menu censure j'ajoute le mot :
G.Africana à remplacer par "[ i]Genlisea Africana[ /i]"
Il m'affichera [ i]Genlisea Africana[ /i] lorsque j'utiliserai le mot clef. le seul moyen pour qu'il tienne compte de la balise est de passer par le menu éditer et de revalider le message. Ce qui, vous en conviendrez n'est pas très pratique.

C'est pourquoi je m'adresse à vous, si vous avez une solution pour m'aider ou s'il n'y en a pas je prend lol! 

Bien à vous,
Erlin.


Dernière édition par Erlin le Jeu 19 Juin 2014 - 14:17, édité 1 fois

Erlin
Nouveau membre

Messages : 6
Inscrit(e) le : 16/03/2014

http://www.plantes-carnivores01.com/forum
Erlin a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Mise en forme automatique de mots clefs

Message par demeter1 le Mar 17 Juin 2014 - 11:30

Bonjour Erlin,
Ce tutoriel devrait t'aider :
http://forum.forumactif.com/t311476-censure-des-messages-en-javascript

Bon courage pour contrecarrer les abréviations des genres; tu vas avoir un sacré boulot.
Rien que pour citer ton  exemple, pour  G.Africana tu as aussi  Gastrodia africana

demeter1
+ Hyperactif +

Masculin
Messages : 8232
Inscrit(e) le : 23/01/2009

http://altitudetropicale.forums-actifs.com/index.forum
demeter1 a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Mise en forme automatique de mots clefs

Message par Erlin le Mar 17 Juin 2014 - 11:48

Merci pour ta réponse je vais tester ça. Est ce que ce type de modification provoque un ralentissement du forum ou de l'affichage des messages ?
Pour ce qui est de contrecarrer les abréviations des genres je ne devrais pas avoir de problème c'est un forum sur les plants carnivores et donc avec des espèces précises. Mais ça représente tout de même plusieurs de centaines de mots clefs à créer.

Dès que j'aurais réussis si je ne rencontre pas de problème je mettrais le sujet en "résolu" Smile


Erlin
Nouveau membre

Messages : 6
Inscrit(e) le : 16/03/2014

http://www.plantes-carnivores01.com/forum
Erlin a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Mise en forme automatique de mots clefs

Message par demeter1 le Mar 17 Juin 2014 - 15:51

L'adjonction du js créera un léger retard le temps qu'il s'exécute. Si tu n'as pas trop de js sur le forum, les membres ne s'en rendront absolument pas compte.

Le seul inconvénient, c'est que les membres qui naviguent en ayant désactivé le js sur leur navigateur n'auront pas les modifs. Bon, ceci dit, c'est assez rare.

demeter1
+ Hyperactif +

Masculin
Messages : 8232
Inscrit(e) le : 23/01/2009

http://altitudetropicale.forums-actifs.com/index.forum
demeter1 a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Mise en forme automatique de mots clefs

Message par Erlin le Mar 17 Juin 2014 - 20:47

Je viens de faire un test et ça ne fonctionne pas. Enfin pas comme je veux. Voilà mon code :

Code:
var censorship =
[
    ["text", /D.Lusitanicum/g, "[i]Drosophyllum Lusitanicum[/i]"],
    ["text", /slt/g, "salut"],
 
];

function censorNode(a) {
  if(a.nodeType == 3) {
    for(var b in censorship) {
      if(censorship[b][0] === "text") {
        a.nodeValue = a.nodeValue.replace(censorship[b][1], censorship[b][2])
      }
    }
  }else {
    if(a.nodeType == 1) {
      for(b in censorship) {
        a.hasAttribute(censorship[b][0]) && a.setAttribute(censorship[b][0], a.getAttribute(censorship[b][0]).replace(censorship[b][1], censorship[b][2]))
      }
    }
    if(a.hasChildNodes()) {
      a = a.childNodes;
      for(b = 0;b < a.length;b++) {
        censorNode(a[b])
      }
    }
  }
}
$(function() {
  $(window).bind("load", function() {
    setTimeout(function() {
      var phpbb3 = "body#phpbb", invision = "#ipbwrapper", punbb = "#pun-foot";
      $( $(phpbb3).length ? "div.postbody > div.content" : $(invision).length ? "div.postbody > div.post-entry" : $(punbb).length ? "div.post div.post-entry" : "div.postbody" ).each(function() {
        censorNode(this);
        for(var a in censorship) {
          censorship[a][0] === "html" && censorship[a][1].test($(this).html()) && $(this).html($(this).html().replace(censorship[a][1], censorship[a][2]))
        }
      })
    }, 600)
  })
});

Après un test l'affichage du slt en "salut" fonctionne mais l'affichage du D.Lusitanicum en Drosphyllum Lusitanicum ne prend pas en charge les balises italiques.

Y a t-il un moyen de contourner le problème ? Car pour l'instant la solution du JS donne le même résultat que pour la censure.

Peut être y a t-il un moyen de modifier directement le code concernant la censure du menu admin pour qu'elle affiche dans 100% des cas le texte en italique. Nous n'utilisons que très peu la censure, la dévier à cet usage ne poserait aucun problème.

Bien à vous,
Erlin

Erlin
Nouveau membre

Messages : 6
Inscrit(e) le : 16/03/2014

http://www.plantes-carnivores01.com/forum
Erlin a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Mise en forme automatique de mots clefs

Message par Erlin le Mer 18 Juin 2014 - 19:33

Bonsoir,

Je me permet de faire un petit up. J'ai lu sur le forum que le BBcode n'était pas pris en compte par la censure mais que celui en HTML fonctionnerait. J'ai donc essayé mais là rien non plus. Peut être cela a-t-il été modifié. Je vous mets le code au cas où :

Code:
var censorship =
[
    ["text", /D.Lusitanicum/g, "<i>Drosophyllum Lusitanicum</i>"],
    ["text", /slt/g, "salut"],
 
];

function censorNode(a) {
  if(a.nodeType == 3) {
    for(var b in censorship) {
      if(censorship[b][0] === "text") {
        a.nodeValue = a.nodeValue.replace(censorship[b][1], censorship[b][2])
      }
    }
  }else {
    if(a.nodeType == 1) {
      for(b in censorship) {
        a.hasAttribute(censorship[b][0]) && a.setAttribute(censorship[b][0], a.getAttribute(censorship[b][0]).replace(censorship[b][1], censorship[b][2]))
      }
    }
    if(a.hasChildNodes()) {
      a = a.childNodes;
      for(b = 0;b < a.length;b++) {
        censorNode(a[b])
      }
    }
  }
}
$(function() {
  $(window).bind("load", function() {
    setTimeout(function() {
      var phpbb3 = "body#phpbb", invision = "#ipbwrapper", punbb = "#pun-foot";
      $( $(phpbb3).length ? "div.postbody > div.content" : $(invision).length ? "div.postbody > div.post-entry" : $(punbb).length ? "div.post div.post-entry" : "div.postbody" ).each(function() {
        censorNode(this);
        for(var a in censorship) {
          censorship[a][0] === "html" && censorship[a][1].test($(this).html()) && $(this).html($(this).html().replace(censorship[a][1], censorship[a][2]))
        }
      })
    }, 600)
  })
});

Du coup je ne vois pas trop de solution. Y a t-il un moyen de changer quelques ligne dans ce code pour afficher de manière systématique la correction en italique ?

Bien à vous,
Erlin.

Erlin
Nouveau membre

Messages : 6
Inscrit(e) le : 16/03/2014

http://www.plantes-carnivores01.com/forum
Erlin a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Mise en forme automatique de mots clefs

Message par demeter1 le Jeu 19 Juin 2014 - 11:40

Le soucis se situe au niveau de "l'appel". Si on utilise du html il faut le spécifier .
au lieu de
Code:
 ["text", /D.Lusitanicum/g, "<i>Drosophyllum Lusitanicum</i>"],
il faut mettre
Code:
 ["html", /D.Lusitanicum/g, "<i>Drosophyllum Lusitanicum</i>"],

Le js modifié
Code:
var censorship =
[
    ["html", /D.Lusitanicum/g, "<i>Drosophyllum Lusitanicum</i>"],
    ["text", /slt/g, "salut"],
 
];

function censorNode(a) {
  if(a.nodeType == 3) {
    for(var b in censorship) {
      if(censorship[b][0] === "text") {
        a.nodeValue = a.nodeValue.replace(censorship[b][1], censorship[b][2])
      }
    }
  }else {
    if(a.nodeType == 1) {
      for(b in censorship) {
        a.hasAttribute(censorship[b][0]) && a.setAttribute(censorship[b][0], a.getAttribute(censorship[b][0]).replace(censorship[b][1], censorship[b][2]))
      }
    }
    if(a.hasChildNodes()) {
      a = a.childNodes;
      for(b = 0;b < a.length;b++) {
        censorNode(a[b])
      }
    }
  }
}
$(function() {
  $(window).bind("load", function() {
    setTimeout(function() {
      var phpbb3 = "body#phpbb", invision = "#ipbwrapper", punbb = "#pun-foot";
      $( $(phpbb3).length ? "div.postbody > div.content" : $(invision).length ? "div.postbody > div.post-entry" : $(punbb).length ? "div.post div.post-entry" : "div.postbody" ).each(function() {
        censorNode(this);
        for(var a in censorship) {
          censorship[a][0] === "html" && censorship[a][1].test($(this).html()) && $(this).html($(this).html().replace(censorship[a][1], censorship[a][2]))
        }
      })
    }, 600)
  })
});

Bon courage pour le travail qui va suivre.

demeter1
+ Hyperactif +

Masculin
Messages : 8232
Inscrit(e) le : 23/01/2009

http://altitudetropicale.forums-actifs.com/index.forum
demeter1 a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Mise en forme automatique de mots clefs

Message par Erlin le Jeu 19 Juin 2014 - 14:15

Bonjour,

Merci t'es un chef ça fonctionne à merveille !
C'est vrai que ça va demander quelques centaines de saisies, peut petre que ça va provoquer un ralentissement je verrais bien ça sera la surprise  lol! 

Problème résolu Smile

Erlin
Nouveau membre

Messages : 6
Inscrit(e) le : 16/03/2014

http://www.plantes-carnivores01.com/forum
Erlin 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