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 utilisateurs, 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 l’utilisateur.
Discussions par date d’activité
17 discussions
Bonjour,
si c’est pas encore fait, je confirme que dans un environnement windows 7 pro 64bits, avec wampserver 3.1.9 (apache 2.4.33, php 5.6.35 à 7.2.4, MySQL 5.7.21, spip 3.2.5) la fabrique (2.3.15) bloque sur la génération des fichiers avec les messages suivant
- si le dossier /plugins/fabrique_auto/ est présent : La sauvegarde de ../plugins/fabrique_auto/alloc n’a pu être réalisée. Le plugin par précaution n’a pas été régénéré. La cause probable provient de droits insufisants ce répertoire source pour le serveur. (avec une faute « insuffisants » dans la chaîne de langue)
- si le dossier est absent : vérifier les droits d’écriture
Le système a rencontré une erreur lors de l’écriture du fichier tmp/cache/fabrique/alloc /.plat. Veuillez, en tant qu’administrateur du site, vérifier les droits d’écriture sur le répertoire ecrire/tmp/cache/fabrique/alloc .
La même chose dans un environnement Unix/Linux y a pas de soucis (sauf la faute d’orthographe ;)
cordialement
Répondre à ce message
Salut,
Une petite anomalie sous spip 3.2 Factory (2.3.15)
Je crée un objet blob simple sans liaison directe, mais avec une liaison indirecte
sur des articles
Lors de l’édition du premier objet, nous avons une erreur de compilation :
Argument manquant dans la balise INFO_
../plugins/fabrique_auto/blobings/prive/squelettes/contenu/blob_edit.html
Mauvaise utilisation ?
Merci
Répondre à ce message
Bonjour,
je n’arrive pas à effectuer ce correctif :
Pourriez-vous donner un exemple ou « xxx » en effet les fichiers sont au pluriel et le id_ au singulier...
Voici mon code après modification la table s’appelle bien « spip_etapes_liens » avec « id_etape » :
Ce code provoque une erreur « Critère inconnu etapes_liens.id_etape »
je ne comprends pas d’où vient cette erreur...
NB : retirer l’espace devant le « ? » ne change rien.
Voici un exemple ou j’avais fait cette modification et qui marche :
ajout de rivieres_liens.id_riviere ? sinon
a l’affichage d’une riviere on a tous les articles et non seulement les articles qui lui sont associes .
\prive\objets\liste\articles.html
=> et alors seuls les articles (et non tous) auxquels une riviere est associee, sont listes quand on affiche cette riviere
Répondre à ce message
Merci pour cet outil vraiment pratique ! J’ai créé un nouvel objet éditorial (que j’appelle « fiches »), tout fonctionne sauf les inclusions de doc.
Je copie/colle une inclusion de doc dans un texte (exemple : doc18, entre balises ouvrante et fermante). Dans l’espace privé, ma fiche s’affiche bien avec sa jolie image.
Dans l’espace public, impossible par contre d’afficher cette fiche avec son image. Cela m’affiche l’inclusion « doc18 » en toute lettre.... Pourtant, je code exactement pareil que pour un objet « article » standard (sauf le nom des balises qui changent...).
Ya un truc que j’ai pas dû suivre... Vous avez une idée ?
Il n’y a rien de spécial à faire. Je suppose que le nom du champ (la colonne SQL) n’est pas commune pour SPIP (pas ’texte’ ou ’descriptif’ par exemple). Dans ce cas, il faut soit utiliser
[(#TRUC|propre)]
pour appliquer les traitements typos au cas par cas dans les squelettes, soit déclarer un traitement typo automatiquement sur cette balise, ce qui se fait dans le pipeline ’declarer_interfaces’, avec par exemple :où ’SLOGAN’ est le nom du champ, et ’fiches’ le nom de la table (sans spip_).
Merci beaucoup Matthieu !
Effectivement |propre fonctionne bien. Je vais de suite me renseigner par quelle magie ce filtre opère !
Bonjour,
vous écrivez :
« , soit déclarer un traitement typo automatiquement sur cette balise, ce qui se fait dans le pipeline ’declarer_interfaces’, avec par exemple :
$interface[’table_des_traitements’][’SLOGAN’][’fiches’] = _TRAITEMENT_RACCOURCIS ;
où ’SLOGAN’ est le nom du champ, et ’fiches’ le nom de la table (sans spip_). »
Où se trouve ce pipeline ’declarer_interfaces’ ?
Cordialement
Il est créé et utilisé normalement tout seul par le plugin Fabrique et est présent dans base/objet.php par exemple là : https://gitlab.com/magraine/vortaro/blob/master/base/vortaro.php#L15 ; et c’est effectivement
declarer_tables_interfaces
, pasdeclarer_interfaces
.Merci de votre réponse.
Suite à vos commentaires j’ai modifié mon fichier « bases/tours.php » comme suit
Je n’ai aucun effet...
Cordialement
C’est pourtant il me semble la bonne écriture.
(je me suis permis d’éditer ton commentaire pour colorer le code)
Ah… je vois le problème : dans ton code, il faut utiliser
$interfaces
au pluriel ; c’est le nom de la variable qui arrive et repart du pipelines. Tu as modifié$interface
sans s.Une fois ce genre de modifications faite, il faut ensuite soit repasser par la page de gestion des plugins (ecrire/ ?exec=admin_plugin) soit lancer un ?var_mode=recalcul sur une page. Mais je suppose que c’est ce qui avait été fait ; le seul problème venant de ce petit
s
Bonjour,
merci pour ta réponse.
Effectivement comme cela c’est bon. J’aurais du y penser et non me contenter de recopier le le code.
Répondre à ce message
Bonjour,
près plusieurs tentatives d’installations, de réinitialisation...
J’arrive à créer le plugin, mais lorsque que j’ai créé un objet éditorial, je n’arrive pas utiliser la commande : Pré-remplir cet objet.
Je suis en PHP 7.2, SPIP 3.2.4
Merci de me donner une piste pour trouver une solution...
l
La console d’inspection affiche ce message :
An invalid form control with name=’objets[0][nom]’ is not focusable.
An invalid form control with name=’objets[0][table]’ is not focusable.
Répondre à ce message
Bonjour,
sous ubuntu 18.04 et spip
SPIP 3.2.1 [24285] plugin la fabrique 2.3.13
+ écran de sécurité 1.3.11 (la mise à jour vers 3.2.4 se déroule, mais l’info de version ne change pas).
je peux créer un début de pluning, mais désque je cherche à intégrer un objet éditorial, j’ai systématiquement :
et ça ’plante’ !
je suis démuni.
Merci bien pour votre implication Alain
Même erreur, dans un environnement Debian/Strecth
Aucune erreur dans les log d’apache :-(
Dans les log de spip, j’ai
Pri:ERREUR : Le serveur ’_connect’ version 1 n’a pas ’showbase’
Mais cela ne semble pas être dans le code de la fabrique...
Sur une autre machine, très semblable (stretch aussi), la fabrique veut bien fonctionner !
Une idée ?
Pour le « Le serveur ’_connect’ » ... c’est qu’il doit exister un fichier config/_connect.php compris par SPIP comme une base de données distante, mais qui ne fonctionne pas dans ton contexte. Renommes le en
_connect.php.prod
par exemple, ou du moins quelque chose ne terminant pas par .php :)Répondre à ce message
Bonjour,
Après moult tentatives, ça avance mais j’ai l’erreur -voir image jointe-
Sous UBUNTU 18.04.1
apache 2.4.29
php 7.2.17
mariadb 10.3.14
et spip tout neuf 3.2.4(24285)
Dans la déclaration de table si je ne mets pas le nom de la base (spip2) devant le nom de la table je n’ai pas de création de table et si je mets spip2_qrcodes, j’ai bien la création de la table mais j’ai cette erreur ?
Que faire
J’ai par le passé, il y a plusieurs mises à jour de spip depuis, utilisé la fabrique avec bonheur, mais la ça plante.
Merci bien Alain
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 : |