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
Lorsque j’affiche dans un squelette les champs créés avec la fabrique, je dois explicitement passer le filtre « propre » pour pouvoir afficher « proprement » le contenu, avec les sauts de ligne et autres jolies foritures d’affichage de spip.
Y a-t-il quelque chose que j’aie loupé ?
Faut-il mettre un paramètre lors de la définition des champs ?
Voir la doc sur table_des_traitements dans http://programmer.spip.net/declarer_tables_interfaces,379.
Ensuite vous devez intégrer tout ça dans le fichier prefixeplugin/base/prefixplugin.php, et enfin secouer SPIP plus violemment qu’une bouteille d’Orangina pour que cela prenne effet :)
Plus concrètement , sur ce dernier point, je crois avoir trouver une recette
1- désactiver votre plugin ;
2- faire la modif et changer la version du plugin (up de z comme ont dit) ;
3- vider le cache du site ;
4- réactiver le plugin.
Ça devrait être bon.
Répondre à ce message
Bonjour,
En local ubuntu 14.4 64bits et un spip tout neuf 3.1 (même problème avec un spip réputé mis à jour), rien n’est présenté dans l’onglet « squelettes » pour démarrer avec la fabrique ?
que pourrai-t-il me manquer ?
MErci bien Alain
Bonjour
en attendant appelez ecrire/ ?exec=fabrique
Natacha
Avec SPIP 3.1, l’accès à la Fabrique se fait via le nouveau menu Développement.
L’activation de ce menu se fait en allant sur la page « Mes préférences » (/ecrire/ ?exec=configurer_preferences).
À noter que ce menu n’est activable que par un webmester.
Répondre à ce message
Apparemment la Fabrique oublie d’ajouter un H1 au début des pages de liste d’objets (exec=patates). Donc pas de titre principal à la page, et donc pas non plus de titre dans la fenêtre/onglet.
À priori il faudrait ajouter à minima le titre de l’objet au pluriel « Patates » (ou une nouvelle chaîne ajoutée « Toutes les patates » ?), juste avant le formulaire de recherche.
Répondre à ce message
Bonjour,
Bravo et merci pour ce magnifique plugin très impressionant.
A force de modifications d’un plugin, en particulier l’ajout de nombreux champs à un objet éditorial, sans savoir désactivé le plugin au préalable, j’ai dû désinstaller mon plugin.
Lors de la réactivation, la table de l’objet n’est pas recréée.
Je ne trouve pas comment recréer cette table qui me manque...
MErci,
Sylvain
Problème non résolu.
Je réinitialise tout, recommence un plugin tout neuf.
J’ajoute un objet éditorial.
J’ajoute des champs, je teste le plugin, tout va bien.
Au bout d’un certain nombre de champs (64), je reteste : le plugin ne veut pas s’installer, j’insiste, il s’installe, mais ensuite la table de l’objet a disparu.
Je désactive et/ou désinstalle, réactive, je reviens en arrière avec les backups, rien à faire, même avec la toute première version de sauvegarde (sans l’objet editorial), il cherche la table, qui n’existe pas(Erreur SQL 1146 Table ’matable’ doesn’t exist ).
J’’ai bien vu le message concernant max_input_vars, je l’ai ajouté au php.ini, cela ne change rien.
une idée ?
Le bug : j’avais un nom de champ qui contenait un « - » et non un « _ », ce qui provoquait une erreur sql lors de la création de la table.
Merci infiniment Marcimat pour la piste : regarder les logs de tmp/var/mysql.log
euh... tmp/log/mysql.log ... !
Répondre à ce message
Pour info : La Fabrique écrit en autorisation :
autoriser_configurer_nomplugin_dist
alors qu’en fait c’est :
autoriser_nomplugin_configurer_dist
qui fonctionne (en tout cas « pour moi »)
Tout à fait. Et c’est corrigé pour la version 3.0.
La version 3.1 était déjà corrigée d’ailleurs.
Répondre à ce message
Encore une question, cette fois cosmétique.
Lorsque je crée une sélection ou une checkbox, le squelette dans la partie privée me renvoie clé1, clé2 ou clé3 au lieu des valeurs correspondantes à ces clés. Quelle syntaxe faut il utiliser pour afficher les valeurs au lieu des options ? Merci encore pour vos réponses.
Répondre à ce message
Bonjour,
Un grand merci pour ce plugin qui permet d’étendre les possibilités déjà nombreuses de Spip. Dans mon premier plugin, j’ai crée un champs de type Fieldset. Cependant, une fois mon fieldset crée, comment ajouter des champs à l’intérieur de ce fieldset. Merci d’avance pour vos réponses.
Répondre à ce message
Le lien vers le .zip de la version 2.0.19 donne à télécharger la version 2.0.21 qui ne fonctionne qu’avec SPIP 3.1 : compatibilite=« [3.1.0-dev ;3.1.*] »
La version 2 est spécifique à SPIP 3.1 effectivement. Donc jusque là tout est normal.
Ce qui l’est moins, c’est que ce soit affiché compatible SPIP 3.0 sur SPIP Contrib !
Ce qui n’est pourtant pas le cas sur http://plugins.spip.net/fabrique.html
Ok super les infos ont été corrigées sur SPIP Contrib
Il y a un moyen d’avoir accès à un changelog entre Fabrique v1 et v2 ?
(j’ai installé les deux versions et n’ai pas vu de différence flagrante)
Et ... super plugin Matthieu !
La seule grosse différence est sa… non compatibilité avec SPIP 3.0.
Et quelques détails : http://zone.spip.org/trac/spip-zone/browser/_plugins_/fabrique/trunk/changelog.txt
Ok merci Matthieu :-)
Répondre à ce message
Secteur par défaut
Bonjour,
Comment configurer un secteur par défaut pour chaque nouvel Objet Editorial créé avec la Fabrique ?
Après install du plugin j’ai tenté de définir une valeur par défaut du champ id_secteur ( et aussi id_rubrique ) directement dans la DB sql,
mais SPIP écrit invariablement id=1 (par défaut)
Merci.
Bonjour,
Dans ces lignes,
je vais préciser ma requête
et vous informer de ce qui ne fonctionne pas...
... Faute d’avoir trouvé une solution :-(
Le but :
Imposer un secteur pour un type d’objet éditorial créé avec la Fabrique
car lors de la création de l’objet,
si dans Champs spéciaux on coche :
, malheureusement,
ils ne proposent pas de renseigner une valeur par défaut qui serait passée dans le contexte d’édition NEW.
Cela affiche dans le squelette editer_objet.html
un champs déroulant Rubriques qui propose toutes les rubriques.
Je cherche donc le moyen de réduire ce choix à un seul secteur et ses sous-rubriques
le code responsable de ce champ déroulant semble être :
bien que je sois incapable de l’analyser précisemment c’est chercher_rubrique qui pose problème
et le fichier php associé dépasse aussi mon entendement ( SPIP... CMS sans connaitre php.... @@@@TCHOOM !!!)
(c’est de ma faute j’suis pas tombé dedans petit )
chercher_rubrique.php dit au début :
et l’url est :
Donc NEW ???
Je tente :
=> échec !
=> pré-sélectionne la rubrique2 mais les autres secteurs restent accessible donc les erreurs de saisies aussi !
C’est pour l’instant la moins PIRE solution
-
-
Ce qui n’a pas fonctionné car SPIP enregistre invariablement id_rubrique=1
→ n’affiche plus le choix déroulant des rubriques
et ajout des saisies :
dans mon cas n=2
J’ai aussi tenté sans résultat plein de modif des critères associés à chercher_rubrique
Voilà où j’en suis après des heures et plus de recherches et d’essais, que cela puisse servir ....
Pour affecter par défaut un id_secteur, tu peux passer par le pipeline pre_insertion
Méthodo
Note importante : à ma connaissance, le code ci-dessous ne peut pas être géré via les formulaires de la Fabrique. Donc une fois que tu en as terminé avec la Fabrique, tu peux utiliser le code suivant :
Dans le fichier base/prefix.php, insérer le code suivant :
et dans le fichier paquet.xml
Bonjour, dans le même ordre d’idée, je souhaite lier mon nouvel objet éditorial (Participations) lors de l’édition d’un nouvel événement. Jusque là pas de soucis avec le plugin fabrique. Cependant, comment transmettre l’id_evenement à l’objet participations en lieu et place d’un titre ? En effet, cet objet (Participations) ne servirait que de conteneur à un objet éditorial du plugin (Contacts & Organisations). Ensuite, un autre objet éditorial (Catégories) lié à (Participations) me permettrait d’ajouter autant de Catégories nécessaires pour une Participation et Une école... Là, je cale...
Un petit coup de pouce serait bienvenu :-/
Pas sûr de comprendre ?
Oui, j’imagine que c’est abstrait dit comme ça :-(
Je poste donc un schéma....
Peut-être que je me complique moi-même la vie là où il ne le faut pas...
Répondre à ce message
Bonsoir
super contrib
je cale sur une petite fonction : je voudrais que l’#ID_AUTEUR de celui qui remplit le formulaire soit associé dans un champs… impossible d’y arriver (y compris avec la table_liens)
j’ai dû zapper qqchose.
s’il y a une solution je suis demandeur :-)
Eric
je me réponds :-)
si on utilise pas id_auteur comme colonne SQL et qu’on permet les liens sur auteurs > l’id_auteur est attribuée
désolé du bruit
à+ éric
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 : |