Aller au contenu principal
loading

Drupal et groupe de champs multiples CCK, explication et correction d'erreur Wysiwyg - TinyMCE

POSTÉ DANS Drupal 6 TAGS Drupal 6 AUTEUR herve COMMENTAIRES 1

Pour créer un groupe de champs multiple sous Drupal 6, la fonction n'est pas disponible de base avec le module CCK 2.
En fait, celle-ci a seulement été ajoutée dans CCK 3, qui est en béta, et non stable à l'heure actuelle. Mais on peut simplement l'ajouter dans CCK 2, en téléchargeant le module CCK3, en le décompressant, et en ajoutant le contenu du répertoire cck/modules/content_multigroup à CCK2, au même endroit.
Il faut en plus copier le répertoire cck/js du module CCK3 dans le répertoire du module CCK2, et ça fonctionne parfaitement.

Maintenant, vous avez un nouveau type de champs CCK "Multigroup", à utiliser comme un "Group", avec le même principe d'arborescence.

Une erreur est cependant visible : si vous utilisez un champ de type Wysiwyg dans le multigroup, le contenu de ce champ est supprimé lors du click sur "Add more values", ce qui est vraiment pénible. 
Pour ça, 1 solution qui m'a prit du temps :
 - installer le module Wysiwyg CCK Integration, et ses dépendances (jQuery AOP, jQuery Form Update, JS Alter).

Pour moi, ceci a fonctionné pour l'ajout de 2 champs, mais ma page était soumise lors de l'ajout d'un 3ème champs (lors d'un deuxième clic sur "Add more values").
Pour ça, modifier le script wysiwygcck.js, ligne 39, après var editor = params.editor; et rajouter :

params.status = false;
Drupal.wysiwygDetach(context, params);

Si vous avre d'autres champs Wysiwyg dans votre page, il faut rajouter un appel à une fonction Drupal.wysiwygcck.triggerLoadAllWysiwyg(this) ligne 25, juste après l'appel à la fonction Drupal.wysiwygcck.triggerSave(this); afin de relancer l'editeur dans tous les champs.

Le contenu de cette fonction est le suivant :

Drupal.wysiwygcck.triggerLoadAllWysiwyg = function(context) {
  var instances = Drupal.wysiwygcck.getInstances(context); 
  for (var id in instances) {
    var params = instances[id];
    var editor = params.editor;
    // ajout hervé multigroup
    params.status = true;
    Drupal.wysiwygAttach(context, params);
    // fin ajout hervé multigroup
  }
}

Le script modifié est en attachement.

Voilà qui devrait résoudre tous les soucis.

En espérant que ça vous évite de perdre une matinée comme moi...

Fichier attaché Taille
wysiwygcck.js_1.txt 4.6 Ko


1 commentaire