La Fabrique est un outil de construction de plugin spécialement orientée pour la gestion d’objets éditoriaux. Pour ceux qui ont connu le plugin « Chat » ou « Chat2 », sachez que la Fabrique sait gérer tout ce qui est présent dans ce tutoriel / plugin, et même au-delà, bien au-delà.
N’allez pas trop vite !
Cette note est aussi présente lors de l’installation du plugin, mais redisons le encore :
- la Fabrique crée un code fonctionnel mais qui ne répondra peut être pas à 100% de vos attentes. La Fabrique ne peut pas tout faire. À vous d’adapter ensuite le code généré.
- un plugin est très vite fait grâce à la Fabrique. Mais attention : le code n’est qu’une partie d’un plugin. Si vous voulez que votre plugin perdure dans le temps, il faut qu’il soit utile, partagé, documenté, traduit, il faut assister les usages, et maintenir son code avec les évolutions de SPIP et c’est tout cela aussi un plugin !
- la Zone de SPIP permet de collaborer sur les plugins. Essayez au maximum de ne pas créer des plugins existant déjà, pour éviter des doublons qui peuvent disperser d’autant les énergies pour toutes les tâches citées au point précédent.
Pré-requis
Pour faire fonctionner la Fabrique il faut :
- PHP >= 5.3 (il est possible que 5.2 fonctionne aussi)
- SPIP 3.0-RC minimum
- Un navigateur récent (testé avec FF11 et Chrome 18.0)
- Saisies >= 0.25
- Et peut être un système Unix/Linux pour son serveur (appel de
exec('diff')
en PHP) [1]
Optionnellement mais conseillé :
Démonstration vidéo
Dans la vidéo suivante, vous verrez une présentation de la Fabrique impliquant la construction d’un plugin « Félins » dans lequel nous créons 1 objet éditorial « Chats ».
Cette vidéo est aussi disponible en meilleure qualité sur medias.spip.net
Accéder à la fabrique
Depuis SPIP 3.1, La fabrique est accessible dans le menu de développement (il faut activer l’option de vos préférences personnelles pour voir ce menu)
Documentation
En attendant une documentation plus riche ici, vous pouvez lire ces articles :
Capture d’écran
À tester
« La Fabrique » doit être testée dans différents environnements. Vous êtes donc invités à explorer cet outil développé avec git sur la Zone [2]
Limitation connue
Actuellement (version 1.16.3), à partir d’un certain nombre d’objets et de champs (environ 10 objets * 8 champs ici), le formulaire devient naturellement inopérant à cause d’une limitation voulue de PHP : max_input_vars, par défaut à 1000 dans php.ini.
Pour contourner, il faut modifier php.ini pour tolérer plus de champs (5000) par exemple.
Attention
Depuis la version 2.0.0, le menu de la fabrique se trouve dans celui de Développement. Celui-ci est activable depuis l’espace préférence de votre compte webmestre.
Discussions par date d’activité
137 discussions
merci pour votre générosité lors du développement de ce plugin et de votre tutoriel !
Répondre à ce message
Bonjour
Le Diff ne fonctionne pas chez moi. J’ai bien une petite fenêtre mais elle est vide.
Le fichier fabrique_diff.diff existe, il est mis à jour (date) mais il est vide.
Les anciens fichiers sont bien copiés dans le répertoire .backup.
Une idée ?
Quelle plateforme ?
Je n’ai jamais testé sous windows, ni mac os.
Y a peut être à voir quelque chose à voir de ce côté.
Re Mathieu
En client, je suis sur Windows 8.
Sur le serveur, c’est du Linux.
Mais le diff est généré par le serveur n’est-ce pas ?
Répondre à ce message
Re-bonjour
1 ) Un petit truc qui peut être gênant surtout si on ne le
sait pas. Si on ajoute des saisies dans le répertoire saisies, il faut que le plugin en cours de création soit activé.
2) Fabrique génère le fichier de saisie d’un nouvel objet éditorial. Mais il n’y a que le HTML. Il manque le yaml ? cela expliquerait-il que le sélecteur de saisie de cet objet ne soit pas disponible dans un autre objet ?
Bonjour Bruno,
1) Activé pour que quoi ? pour qu’il soit disponible dans les propositions de saisie si tu crées d’autres objets éditoriaux avec la fabrique ? si c’est ça effectivement. Autrement je ne sais pas de quoi tu parles.
2) Oui, la fabrique actuelle ne génère pas le yaml ; Ça serait bien pourtant effectivement, même un yaml minimal.
Bonjour Matthieu
Il faut que le plugin en cours de création par la Fabrique soit activé pour que les nouvelles saisies créées par Fabrique, et relatives à ce nouveau plugin, soit visibles dans le selecteur de type de saisie, quand on créé une nouvelle entrée dans le plugin.
Répondre à ce message
Je ai défini un champ checkbox en un formulaire avec fabrique et le formulaire renvoie une chaîne comme celle-ci :
array(4) [0]=> string(20) « manutenzione_pulizie » [1]=> string(23) « assistenza_alla_persona » [2]=> string(24) « formazione_professionale » [3]=> string(12) « baby_sitting »
mais pas sauvé à MySQL...
« Une erreur technique a empêché l’enregistrement correct du champ ’attivita’. »
Quel type champ de mysql dois-je utiliser pour un ckeckbox ? je ai tenté avec text, longtext,varchar()....
Merci, Enzo
On ne peut pas enregistrer de données tabulaires directement en base de données. En tout cas en mysql. Il faut sérialiser d’une manière ou d’une autre ce tableau.
Il y a différentes manières ou lieu pour faire cela. Ça peut être fait en JS au moment de la soumission du formulaire, ou dans le CVT, ou au moment de l’enregistrement des données (pre_edition). Le plus simple si on débute étant de le faire dans le CVT. Le plus courant est de faire un
implode(',', $valeurs)
, par exemple dans la fonction verifier. À l’inverse il faut recréer le tableau, par exemple dans la fonction charger (ci dessous), OU dans le html du formulaire, dans la saisie en ajoutant[(#SAISIE{checkbox,mon_champ, ..., valeur=#ENV{mon_champ}|explode{","}})]
.Répondre à ce message
Bonjour Matthieu
Plugin magnifique et intelligent, que j’utilise depuis quelques années.
Aujourd’hui, je m’essaye à la création d’objet éditoriaux. Comme je n’ai pas les idées très claires, j’ajoute des champs au fur et à mesure que me viennent les idées. Cependant, j’aimerai pouvoir commencer à utiliser mon plugin même s’il n’y a pas encore tous les champs.
J’ai essayé de créer de nouveaux champs et de désactiver/réactiver le plugin. Les nouveaux champs ne sont pas présents dans la table. :o(
Le code a l’air correct pourtant :
Quelle erreur ai-je commise ?
MERCI pour ton aide.
Salut bruno,
Si tu veux up les champs faut désinstaller ou bien faire une maj dans ce fichier
et modifier la version du shema dans le paquet.
Bonjour Pierre
MERCI pour ton aide.
Le problème de la désinstallation est qu’elle supprime les tables, avec les données évidemment. Et cela je ne peux le faire.
Donc il reste la mise à jour manuelle de la fonction d’installation/upgrade, qui permettrait d’ajouter finement les champs tout en conservant les données.
MERCI Pierre
Répondre à ce message
Bonjour Matthieu,
Petite remarque : la fabrique génère le fichier nom-plugin_options.php et il manque un espace dans la 3e ligne juste avant « au chargement » :
* Options du plugin nom-pluginau chargement
françois
Répondre à ce message
Bonjour,
Je viens d’essayer de télécharger la version 1.20.4 de La Fabrique mais, contrairement a ce qui est indiqué sur cette page, elle ne semble etre compatible qu’avec SPIP 3.1 ( [3.1.0-dev ;3.1.*] ).
Alors, oublie de mise a jour sur cette page, ou erreur dans le paquet.xml ? ( l’option 2 serait plus pratique pour moi :) )
Merci d’avance !
Ah c’est Jack qui s’est planté dans la création du zip http://zone.spip.org/trac/spip-zone/changeset/86058 . Je vais corriger : il a écrasé le paquet pour la 3.0 !
Réparé par r86077 et r86078
Merci.
Nickel, merci beaucoup !
Répondre à ce message
J’ai une petite remarque à faire : il faudrait signaler au moment de l’ajout des champs qu’ils doivent être en minuscule. C’est une restriction liée à SPIP. La Fabrique permet de créer des champs en camelCase, mais ils sont inexploitables dans les formulaires. Donc il faudrait que le plugin passe les champs par un strtolower() pour être fonctionnel, non ?
Je pense aussi que l’élément qui sert pour calculer le titre devrait être obligatoire car en pratique il sert pour les squelettes générés, ou presque
Répondre à ce message
je cherche le code en php de par exemple lorsque on a un checkbox et trois champs de saisies on veut dit a la page que si le checkbox n’est pas selectionner faut geiser les trois champs
Répondre à ce message
Bonjour
Bravo matieu pour ce super plugin !
j’ai une petite question, j’ai créé un plugin contenant 3 objets éditoriaux, Maisons, Appartements et Terrains , ils ont en commun un champ « ville », je voudrais savoir s’il y avait une astuce pour pouvoir faire une boucle spip sur les 3 objets éditoriaux ? sachant qu’ils partagent un certain nombre de champs (ville, code postal etc...)
dans le genre :
Merci d’avance, sachant que je ne suis pas une bête en php :-(
Marc
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |