Réécriture de champs complexe avec Drupal 7 et views 3

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous chère utilisateurs(ices) de Drupal.

Comme cité dans le titre, je rencontre un problème pour des réécritures de champs avec Views 3 et Drupla 7.
J'ai une solution fonctionnelle (expliqué plus bas) mais PAS DU TOUT ELEGANTE!!!!!

Voici la problématique :
Je réécris certains champs dans la plupart de mes vues.
Ces champs font appel à des attribut HTML com onclick ou autres qui me permettent d'appeler des fonctions de javascript personnalisés.
Exemple de réécriture de contenu

<div class="test" onclick="prout();">
click moi :)
</div>

Avant de bêtement réécrire le champs, views utilise une methode (render_altered() )pour "filtrer le code", (/sites/all/modules/views/handelers/views_handeler_field.inc)
En voici un petit exemple

**
   * Render this field as altered text, from a fieldset set by the user.
   */
  function render_altered($alter, $tokens) {
    // Filter this right away as our substitutions are already sanitized.
    $value = filter_xss_admin($alter['text']);
    $value = strtr($value, $tokens);

    return $value;
  }

Cette méthode retire les attributs de mon code de réécriture et je me retrouve avec un code de ce genre :

<div> click moi :)</div>

Du coup, moi pas content !!! car ma fonction js pas appelée :(

MAIS :) j'ai trouvé une mauvaise solution :)
Hé oui... modifier manuellement la méthode directement dans le fichier views_handeler_field.inc(Dieu, Allah, Bouda, les 4 vents et compagnie, pardonnez mon incompétence sivouplait sivouplait )
Voici comment je l'ai modifié a titre informatif (c'est pas bien... mais ça fonctionne....)

* Render this field as altered text, from a fieldset set by the user.
   */
  function render_altered($alter, $tokens) {
    // Filter this right away as our substitutions are already sanitized.
    //$value = filter_xss_admin($alter['text']); car les filtres c pour les nuls...
    $value = strtr($alter['text'], $tokens);

    return $value;

Et voilà le (mauvais) travail, cette modification fonctionne mais voici l'une des principale faiblesse :
- A CHAQUE MISE A JOUR DE VIEWS vous devrez REFAIRE LA MODIF.
bref c'est suicidairement chiant et pas du tout élégant.

Voici la question
Serrait-il possible d'overrider cette methode dans le theme ? de sorte a ne pas modifier directement le code de views et de ne pas devoir effectuer la modification après chaque mise a jour sur TOUS les sites... :(
Toute idée est la bienvenue :)
En espérant avoir attiré votre attention avec mon problème et dans l'attente de vos idée ingénieuses qui permettront de révolutionner le monde de la programmation :) je vous souhaite , chère membres de la communauté, un agréable weekend (et mes meilleures salutations :) ).
Roland Kulé

Version de Drupal :