CCK - CoCKTaiL, 3e partie

· 3 min de lecture

Publication originale

Cet article a été publié à l'origine le 11 février 2008 sur The Standard, le blogue de Raincity Studios, sous la signature « Djun Kim ». Cet article reflète le contexte et les outils de l'époque; certains liens et services mentionnés n'existent plus. Article traduit de l'anglais. La version anglaise est le texte original.

Voir l'original dans l'Internet Archive

Mise à jour

Comme promis dans mon dernier billet, je vais présenter un générateur de code basé sur CoCKTaiL, qui accepte du code CoCKTaiL en entrée et génère du PHP pouvant être importé dans Drupal au moyen du module Content-copy de CCK.

Séance au DrupalCon

J'ai soumis une proposition de séance, Taming CCK configurations with CoCKTail, pour le DrupalCon Boston. Si vous aimeriez voir CoCKTaiL gagner en popularité, pensez à la consulter et à voter pour elle.

Code disponible par SVN anonyme

J'ai rendu le code accessible par SVN anonyme dans le dépôt SVN public de Raincity. J'invite toute personne intéressée à y jeter un coup d'œil, à l'essayer et à y contribuer! Mais attention : il s'agit encore d'un code très expérimental.

État d'avancement

La version actuelle du code fournit un validateur en ligne de commande qui vérifie le code CoCKTaiL. Le signalement des erreurs est encore extrêmement rudimentaire. Il y a aussi un générateur de code basé sur des gabarits, qui prend du CoCKTaiL en entrée et génère du code PHP pouvant être importé dans une application Drupal. Les deux sont définis comme des fichiers d'entrée PHP Lemon et partagent, bien sûr, une grammaire (et un analyseur lexical) communs.

Le générateur de code CoCKTaiL peut maintenant générer des champs texte; la prise en charge des autres champs « de base » sera implantée dans les prochains jours. Il y a une certaine prise en charge des liens et des noderefs.

Génération de code à partir de gabarits

Pour écrire un générateur de code qui produit des spécifications d'importation CCK (PHP) à partir de code CoCKTaiL, il faudra :

  1. faire correspondre les attributs fournis aux attributs du type donné (ce qui comprend les attributs de type, de groupe et de champ)
  2. fournir des valeurs par défaut pour chaque attribut obligatoire qui n'est pas nommé explicitement

Pour ce faire, il faudra connaître les types et les champs CCK ainsi que leurs attributs permis et obligatoires.

Le résultat sera un tableau PHP contenant une spécification de type.

La stratégie : les gabarits

Nous fournirons un gabarit pour tous les attributs par défaut. Les valeurs obtenues en analysant la description CoCKTaiL remplaceront les valeurs du gabarit, si elles ont une valeur appropriée.

Il y aura un gabarit pour chacun des éléments suivants :

  • les attributs de type
  • les attributs de groupe
  • les attributs de champ

Des attributs de champ devront être ajoutés pour chaque nouveau champ, puisque CCK est évidemment extensible.

Quelques détails

Comme l'un des objectifs de CoCKTaiL est de faciliter la vie des développeurs, nous allons un peu plus loin que simplement copier les attributs fournis dans un gabarit. En particulier, le statut de publication, les commentaires et quelques autres attributs couramment utilisés pour les nœuds peuvent être fournis comme attributs scalaires plutôt que comme valeurs de tableau.

Autrement dit, on peut écrire

...
  status true;
  comment 2;
...

plutôt que

...
  node-options array(
    status true;
    comment 2;
    ...
  );
...

De plus, les gabarits peuvent contenir des stubs (espaces réservés) qui sont remplacés au moment de la génération du code.

Prochaines étapes

Comme je l'ai mentionné, je dois encore créer les gabarits pour les autres champs CCK de base. J'espère ainsi pouvoir valider l'utilité de l'approche par gabarits pour la génération de code.

Voici quelques-uns des grands enjeux qui restent à régler :

  • comment gérer les champs partagés
  • comment générer automatiquement les relations
  • comment gérer les versions

Il semble y avoir beaucoup de défis intéressants à relever. Restez à l'écoute, ou mieux encore, mettez la main à la pâte, et d'ici là, n'oubliez pas de voter pour ma séance.

Votre entreprise mérite d'être trouvée.

Parlez-nous de votre projet. Nous vous répondons en français ou en anglais, et nous nous déplaçons partout dans la MRC de Papineau.

Affichage

Vos choix restent dans ce navigateur. Rien n'est envoyé.

Taille du texte
100 %
Couleurs
Lecture
Autres aides
Accessibilité du site