Censure inopérante

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

Résolu Censure inopérante

Message par Sophie Clift le Jeu 1 Mar 2012 - 18:16

Je suis navrée de vous solliciter mais il y a un souci que je ne parviens pas à résoudre :

J'ai beau censurer certains mots et paramétrer leur remplacement automatique, il ne se passe rien, ni dans les posts ni dans les MP.
Ce sont des mots de deux lettres et, pour que ces mots soient pris en considération par le système, il m'a fallu taper un 3e caractère, en l'occurrence une espace.
Serait-ce cette espace qui empêcherait la censure de se faire ?
Mais alors, si tel était le cas, cela signifierait-il que seuls les mots comprenant au moins 3 lettres peuvent être censurés ?

Merci d'avance pour votre aide éventuelle ! Wink

Sophie Clift
**

Féminin
Messages : 55
Inscrit(e) le : 21/03/2009

http://cartographe.forum-actif.net/
Sophie Clift a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Censure inopérante

Message par Dr. Karlos le Jeu 1 Mar 2012 - 23:11

Bonsoir,

Les mots censurés doivent effectivement faire plus de deux caractères. Vous pouvez par contre censurer des mots à l'aide du Javascript en suivant ce tutoriel. Wink


Cordialement.

Dr. Karlos
+ Hyperactif +

Masculin
Messages : 2623
Inscrit(e) le : 03/01/2012

http://www.forum.forumactif.com
Dr. Karlos a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Censure inopérante

Message par Sophie Clift le Sam 3 Mar 2012 - 2:14

Le Javascript semble compliqué à maîtriser, tout de même. Alors quel en est l'intérêt ? Shocked
Je pose cette question car j'ai eu beau lire et lire les tutoriaux disponibles à ce sujet, je n'arrive pas à comprendre l'intérêt d'apprendre à maîtriser cela si ça ne fait pas de différence au bout du compte pour la censure.
Or, j'imagine que le Javascript doit avoir des avantages, sinon on n'apprendrait pas à le maitriser. N'est-ce pas ?

Sophie Clift
**

Féminin
Messages : 55
Inscrit(e) le : 21/03/2009

http://cartographe.forum-actif.net/
Sophie Clift a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Censure inopérante

Message par Dr. Karlos le Sam 3 Mar 2012 - 2:48

Bonsoir,

Le tutoriel vous apprend à modifier un code afin de censurer des mots à l'aide du Javascript. Wink La censure des mots avec moins de trois caractères n'étant pas faisable, il s'agit de votre seule alternative pour censurer ces mots dans les sujets.

Le code est relativement simple à modifier:
Code:
var censorship =
[
["type de remplacement",/expression à chercher/,"par quoi on la remplace"],
["type de remplacement",/expression à chercher/,"par quoi on la remplace"],
["type de remplacement",/expression à chercher/,"par quoi on la remplace"],
["type de remplacement",/expression à chercher/,"par quoi on la remplace"]
];

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() {
$("div.postbody div" ($("body#phpbb").length ? ".content div" : $("#ipbwrapper").length ? ".post-entry div:not(.clear)" : $("#pun-foot").length ? ".entry-content div div:not(.clear)" : "")).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)
})
});

Pour le type de remplacement, vous avez plusieurs choix:
- "text": le script cherchera sur les messages le mot en question. On recherche du texte qu'on remplace par du texte.
- "html": le code HTML des messages sera analysé afin de trouver l'expression recherchée. Une fois trouvée, elle sera remplacée par l'expression désirée.
- autres attributs: le script cherche dans les balises qui ont l'attribut l'expression recherchée et la remplace par le contenu demandé.

Dans votre cas, il s'agit de "text".

Vous remplacez "expression à chercher" par le mot de deux caractères que vous désirez censurer. Vous changez "par quoi on le remplace" par l'expression qui doit prendre la place de ce mot à deux caractères.

Si je veux remplacer le mot "forumactif" sur mon forum par le mot "publicité interdite", mon code ressemblerait à ceci:
Code:
var censorship =
[
["text",/forumactif/,"publicité interdite"],
];

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() {
$("div.postbody div" ($("body#phpbb").length ? ".content div" : $("#ipbwrapper").length ? ".post-entry div:not(.clear)" : $("#pun-foot").length ? ".entry-content div div:not(.clear)" : "")).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)
})
});

Le reste du code n'est pas à modifier. Wink


Cordialement.

Dr. Karlos
+ Hyperactif +

Masculin
Messages : 2623
Inscrit(e) le : 03/01/2012

http://www.forum.forumactif.com
Dr. Karlos a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Censure inopérante

Message par Sophie Clift le Dim 4 Mar 2012 - 17:28

Merci infiniment pour tout le mal que vous vous êtes donné pour moi.
Ce qui est "relativement simple" pour vous est totalement obscur, de mon côté.
Donc, rien de cela ne me servira car, vraiment, ça m'est incompréhensible, mais je suis touchée par vos efforts qui, je l'espère, serviront à d'autres personnes moins crétines que moi.

Sophie Clift
**

Féminin
Messages : 55
Inscrit(e) le : 21/03/2009

http://cartographe.forum-actif.net/
Sophie Clift a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Censure inopérante

Message par Dr. Karlos le Dim 4 Mar 2012 - 18:17

Re,

Je peux le faire pour vous en tentant de vous le ré expliquer. Wink Quels mots désirez-vous remplacer? Et quels mots désirez-vous voir à la place de ceux-ci?


Cordialement.

Dr. Karlos
+ Hyperactif +

Masculin
Messages : 2623
Inscrit(e) le : 03/01/2012

http://www.forum.forumactif.com
Dr. Karlos a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Censure inopérante

Message par Sophie Clift le Lun 5 Mar 2012 - 9:41

C'est vraiment adorable de votre part, cher Doctor Karlos !
Je vois que vous ne vous découragez pas malgré mon inexpérience qui peut paraître exaspérante. Mad

Je veux bien que vous m'arrangiez cela, alors, si toutefois vous en trouvez le temps.
Dans mon forum, il y a des membres qui refusent de comprendre certains principes inhérents à l'orthographe, notamment à propos des mots ça (pronom démonstratif) et çà (adverbe de lieu qui peut s'employer en interjection).
Malgré mes efforts répétés, certains de ces membres persistent à employer çà alors que, dans 99 % des cas, ils devraient employer ça.
Dans un forum consacré à la culture, à l'expression française et à la typographie, constater ce genre de coquilles récurrentes ne fait pas très sérieux.
Donc, vu que j'en ai un peu marre de passer pour la flicquette de service et pour la grosse méchante, j'aimerais que tous les çà, tous les et tous les Çà soient automatiquement remplacés par des ça et des Ça.

De mon côté, j'avais pensé avoir trouvé la solution par le biais des censures en ajoutant une espace (en typographie, le mot espace est féminin, comme le spécifient d'ailleurs le Petit Robert, le Larousse ainsi que le recueil de Règles de la typographie de l'Imprimerie nationale) après les mots. Une espace comptant pour un caractère, le principe aurait dû fonctionner, mais il se trouve que non, hélas.
Chez XPress et chez Word ça fonctionne vu que même les espaces sont considérées comme des caractères, mais chez ForumActif ce n'est pas le cas. Confused

Quoi qu'il en soit, merci beaucoup pour l'attention que vous portez à mon problème. Yahoo

Sophie Clift
**

Féminin
Messages : 55
Inscrit(e) le : 21/03/2009

http://cartographe.forum-actif.net/
Sophie Clift a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Censure inopérante

Message par Dr. Karlos le Lun 5 Mar 2012 - 15:34

Bonjour,

Les espaces fonctionnement normalement dans la censure. Tentez de remplacer les espaces par nbsp (ajoutez un point-virgule tout de suite après le p) dans la censure des mots.

Si je désire censurer forum actif, j'insère forum&nbspactif (j'ajoute un point-virgule après le p). Wink

Néanmoins, voici le code à insérer dans la gestion des codes Javascript (PA | Modules | Gestion des codes Javascript) de votre forum:
Code:
var censorship =
[
  ["text",/çà/,"ça"],
  ["text",/Çà/,"Ça"],
  ["text",/Cà/,"Ça"],
];

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() {
      $("div.postbody div" + ($("body#phpbb").length ? ".content div" : $("#ipbwrapper").length ? ".post-entry div:not(.clear)" : $("#pun-foot").length ? ".entry-content div div:not(.clear)" : "")).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)
  })
});

La partie qui a été modifiée est celle-ci:
Code:
[
  ["text",/çà/,"ça"],
  ["text",/Çà/,"Ça"],
  ["text",/Cà/,"Ça"],
];

Comme mentionné dans un des précédents messages, les premiers mot s(text) représentent le type de remplacement qu'on désire effectuer.

Les deuxièmes mots (çà, Çà, Cà) représentent le texte qu'on cherche à remplacer.

Les troisièmes mots (ça, Ça) sont les mots qui doivent s'afficher à la place des mots à remplacer (les deuxièmes mots).

On peut donc comprendre dans le code que:
Je veux remplacer çà par ça.
Je veux remplacer Çà par Ça.
Je veux remplacer Cà par Ça.



Cordialement.

Dr. Karlos
+ Hyperactif +

Masculin
Messages : 2623
Inscrit(e) le : 03/01/2012

http://www.forum.forumactif.com
Dr. Karlos a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Censure inopérante

Message par Sophie Clift le Mar 6 Mar 2012 - 15:05

Vos explications paraissent on ne peut plus claires.
Merci infiniment pour tout ce travail que je vous ai donné.

Je viens d'insérer, dans mon forum, votre code tel que vous me l'avez donné.
Je vais attendre quelques jours pour voir ce que ça donne sur le terrain puis je viendrai vous raconter comment ça s'est passé. Promis !

Je vous souhaite une excellente journée.

Merci encore pour votre professionnalisme et votre très sympathique assistance.

Sophie Clift
**

Féminin
Messages : 55
Inscrit(e) le : 21/03/2009

http://cartographe.forum-actif.net/
Sophie Clift 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