SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

288 Plugins, 197 contribs sur SPIP-Zone, 271 visiteurs en ce moment

Accueil > Outils pour plugins > Fabrique > La Fabrique

La Fabrique

20 avril 2012 – par Matthieu Marcillaud – 316 commentaires

103 votes

La Fabrique est un outil pour webmestres ou développeurs qui souhaitent créer des plugins. La Fabrique est capable de générer le code source minimal d’un plugin pour SPIP 3 (elle accélère donc le démarrage d’un plugin) et peut s’occuper également de construire un plugin fonctionnel gérant un ou plusieurs objets éditoriaux et leurs liaisons (et là, elle devient formidable !). La base du plugin construit, il ne vous reste plus qu’à l’adapter à vos désirs les plus créatifs.

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

Présentation de la Fabrique en vidéo

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

La Fabrique, version 1.13.3
Interface d’accueil de la Fabrique avec un objet éditorial « Chats » de renseigné dans un plugin nommé « Félins »

À tester

« La Fabrique » débute sa vie publique et doit être testée dans différents environnements. Vous êtes donc invités à explorer cet outil développé maintenant 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 le 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.

Voir en ligne : http://plugins.spip.net/fabrique

Notes

[1À faire vérifier par quelqu’un ayant un serveur local sous Windows

Dernière modification de cette page le 20 janvier 2017

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 25 juillet à 22:20, par koan En réponse à : La Fabrique

    Bonjour,
    Je trouve se plugin très utile pour commencer le développement d’un plugin sans trop de difficulté.

    Mais j’ai un souci, j’ai commencé par voir ce que cela pouvait donner en créant un plugin avec un objet éditorial créer de 0, la création est OK mais quand je veux éditer un nouvel objet j’ai le message d’erreur suivant :

    Erreur SQL 1146
    Table ’spip.spip_suivis’ doesn’t exist
    SELECT suivis.id_suivi, 0 as points, ’’, suivis.titre, suivis.titre AS titre_rang FROM spip_suivis AS `suivis` GROUP BY suivis.id_suivi ORDER BY 0+suivis.titre, suivis.titre

    Je comprends que ma table spip_suivis n’existe pas. Pourquoi La Fabrique n’a pas créé ma table ? Suis-je passé à côté de quelque chose ?
    J’ai pourtant suivis l’exemple de la video des félins...

    pour information, j’utilise :

    • spip v.3.1.6
    • La Fabrique 2.3.11

    Merci de votre aide ou éclaircissement.

    Répondre à ce message

  • Le 12 avril à 13:17, par Sauterey Francois En réponse à : La Fabrique

    Je viens de créer une ébauche de plugin destinée à gérer des « auteurs de livres » autrement désignés « écrivains » (le plugin s’appellera... ecrivain).
    J’ai décris les tables du nouvel objet éditorial, et fabrique m’a bien généré le fichier ecrivain_administration.php (jusque là, tout va bien !)
    fichier qui contient
    function ecrivain_upgrade($nom_meta_base_version, $version_cible)
    $maj = array() ;
    $maj[’create’] = array(array(’maj_tables’, array(’spip_ecrivains’, ’spip_ecrivains_liens’))) ;
    include_spip(’base/upgrade’) ;
    maj_plugin($nom_meta_base_version, $version_cible, $maj) ;

    MAIS à l’activation du plugin seule la table de jointure est crée, pas la table principale :-(
    Le fichier fabrique_ecrivain.php.zip est disponible ici :
    http://w3.adapt.snes.edu/IMG/zip/fabrique_ecrivain.php.zip

    Bon, au pire, je vais créer la table à la pain pour continuer...

    • Le 16 avril à 17:08, par Sauterey Francois En réponse à : La Fabrique

      Bon, en reprenant tout de puis le début, tout fonctionne bien :-) (Merci Matthieu pour la vidéo !)
      Bon mon plugin « fonctionne », il me reste à lui faire faire ce que je veux !
      Je cherche un espace où discuter du développement de celui-ci sans polluer les espaces de discussion bien connus... Ça existe ?

    • Le 1er juin à 00:09, par pamillet En réponse à : La Fabrique

      effectivement

      mais ce n’est pas dans le nom d’objet, mais dans le nom de la table
      et il faut après l’avoir changé comme nom de table, aller modifier les noms d’identifiant qui trainent...

      merci
      pam

    • Le 8 juin à 20:50, par LauDai En réponse à : La Fabrique

      Bonjour,

      j’ai exactement le même problème. La table principale n’est pas créée. Mais j’ai beau recommencer depuis le début, j’ai le même problème. Avez vous compris ce que vous ne faisiez pas correctement ?

      J’ai également quelques autres dysfonctionnements, par exemple le prebuild ne fonctionne pas. En indiquant une table (p.ex., spip_article) le bouton est ineffectif.

      Une idée ?

    • Le 23 juillet à 01:02, par Luc En réponse à : La Fabrique

      Le prebuild ne marche pas pour moi non plus. Par contre, si les tables des nouveaux objets ne se créent pas, vous pouvez toujours procéder à une Réparation de la base de données. Ce n’est peut-être pas l’idéal, mais ça a fonctionné pour moi.

    Répondre à ce message

  • Le 10 juillet à 15:33, par jpcrea En réponse à : La Fabrique

    Bonjour à tous,

    Dans l’écriture d’un champ de type « radio », j’ai érit :
    datas=[(#ARRAY{cle1,Faible,cle2,Modéré,cle3,Moyen,cle4,Élevé,cle5,Fort})]

    A l’édition : ce sont les « cle » qui apparaissent à la place des valeurs.
    Je n’ai pas dû comprendre quelque chose ?
    Merci de vos lumière,
    jpcrea

    Répondre à ce message

  • Le 7 juillet à 15:43, par jpcrea En réponse à : La Fabrique

    Bonjour,

    Ce magnifique plugin m’a permis de créer facilement un nouvel objet pour publier des recettes de cuisine qui fonctionne très bien.

    Mais j’ai, lorsque je désire modifier la recette : « Modifier cette recettes » avec un « s » ;
    J’avais effectivement, dans un premier temps, mis par erreur un « s » lors de la création du plugin, j’ai rectifié, mais j’ai toujours ce « s » qui m’embête bien .
    Que faire, je ne vois plus ou aller pour rectifier cette anomalie ?
    Merci de vos lumières.

    • Le 7 juillet à 18:05, par jpcrea En réponse à : La Fabrique

      J’ai pu corriger tout cela dans « Chaînes de langue ».

    Répondre à ce message

  • Le 6 juillet à 15:03, par Franck En réponse à : La Fabrique

    Bonjour à tous...
    Version Fabrique 2.3.11 :
    Juste pour vous informer qu’il me semble qu’une petite erreur d’écriture s’est glissée dans le fichier fabrique/fabrique/prefixe_autorisations.php.html
    Ligne 63, remplacer :

    1. function autoriser_#GET{type}creer_menu_dist($faire, $type, $id, $qui, $opt) {
    2. return autoriser('creer', ['(#TYPE)'], '', $qui, $opt);
    3. }(#VAL{outils_rapides}|in_any{#VALEUR{boutons}})]

    Télécharger

    par :

    1. function autoriser_#GET{type}_creer_menu_dist($faire, $type, $id, $qui, $opt) {
    2. return autoriser('creer', ['(#TYPE)'], '', $qui, $opt);
    3. }(#VAL{outils_rapides}|in_any{#VALEUR{boutons}})]

    Télécharger

    Il manque un underscore entre « #GETtype » et « creer_menu_dist ».

    Cela entraîne le plantage d’un site lors de l’activation d’un plugin généré par la fabrique et utilisant cette fonction.
    Bon développement ! et merci pour ce super plugin !

    • Le 6 juillet à 17:33, par Matthieu Marcillaud En réponse à : La Fabrique

      Non non, cette écriture est correcte et doit générer autoriser_chatcreer_menu_dist(...)

      Voir par exemple dans ecrire/inc/autoriser.php la fonction autoriser_articlecreer_menu_dist.

      Il y a quelques autorisations un peu spécifiques $type$verbe_xxx de la sorte.

      Maintenant que dans ton cas cela provoque une erreur d’activation est plus ennuyant. Il faudrait avoir plus de détail sur l’erreur ?

    • Le 7 juillet à 14:32, par Franck En réponse à : La Fabrique

      Bonjour Mathieu,
      Merci pour ta réponse rapide...
      Ok, pourtant si je ne corrige pas de la façon indiquée, Fabrique génère un fichier prefixe_autorisations.php (prefixe = prefixe de votre plugin) avec la fonction suivante :

      1. function autoriser_prefixecreer_menu_dist($faire, $type, $id, $qui, $opt) {
      2. return autoriser('creer', 'prefixe', '', $qui, $opt);
      3. }

      Télécharger

      Ce qui fait planter mon site spip de dev (3.1.4 ).
      Si je corrige avec :

      1. function autoriser_prefixe_creer_menu_dist($faire, $type, $id, $qui, $opt) {
      2. return autoriser('creer', 'prefixe', '', $qui, $opt);
      3. }

      Télécharger

      Tout est OK.
      Je vais investiguer, sans doute que quelque chose en amont en avale cloche et qu’en changeant la syntaxe je désactive la fonction qui entraîne le crash...
      Merci encore !

    Répondre à ce message

  • Le 9 juin à 09:19, par LauDai En réponse à : La Fabrique

    Bonjour et bravo pour ce plugin vraiment très utile,

    Le plugin Fabrique propose t il un moyen de modifier une version précédente de son plugin qui serait déjà en exploitation et ce sans perdre les données qui seraient déjà saisies ? On peut supposer que l’évolution consisterait à ajouter des champs sur le tard pour s’adapter à un nouveau besoin.

    Merci !

    • Le 9 juin à 18:08, par Matthieu Marcillaud En réponse à : La Fabrique

      Oui et non.

      La fabrique génère un fichier fabrique_{prefixe}.php à la racine du plugin, qui est une sauvegarde de toutes les données du formulaire.
      Par contre ça n’a aucune information sur les fichiers que tu aurais pu avoir modifié / créés à la main, après la création du plugin.

      Ce fichier peut être réimporté pour recréer le plugin depuis la Fabrique (et ajouter des champs donc). Cependant, les actions de mises à jour ne seront pas créées. Il faut t’inspirer d’autres plugins pour ce faire, mais cela consiste à :
      -  augmenter le schéma dans paquet.xml
      -  ajouter un $maj[’x.y.z’] = ... dans le fichier xxx_administrations.php (du numéro de schéma), avec les actions à faire.

      Cela peut être pour ajouter les champs manquants sur spip_matables quelque chose tel que :

      1. $maj['1.1.0'] = array(array('maj_tables', 'spip_matables'));

      Tu as plein de beaux exemples ici :
      https://zone.spip.org/trac/spip-zone/browser/_plugins_/gis/trunk/gis_administrations.php

      MM.

    Répondre à ce message

  • Le 30 mai à 07:28, par pamillet En réponse à : La Fabrique

    bonjour

    découvrant (impressionné !) la fabrique, je fais un premier essai avec qq objets liés, la génération se passe bien, mais j’ai systématiquement une erreur lors de l’activation du plugin...

    Parse error : syntax error, unexpected ’-’, expecting ’(’ in /home/venissie/test/spipr/plugins/fabrique_auto/elec/elec_autorisations.php on line 259

    au cas ou j’ai coché le fichier autorisations...sabs changements...
    je en vois rien de particulier dans elec_autorisations à la ligne indiquée...

    je n’ai fait que des objets éditoriaux avec qq champs et des liaisons indirectes entre eux...

    merci d’avance d’une piste...

    pam

    • Le 30 mai à 10:54, par Matthieu Marcillaud En réponse à : La Fabrique

      Si tu peux mettre dans un pastebin le code généré pour ce fichier d’autorisations, cela pourrait aider à comprendre. Par exemple sur http://spip.pastebin.fr/
      Merci.

    • Le 30 mai à 12:54, par pamillet En réponse à : La Fabrique

      c’est fait...

      http://spip.pastebin.fr/50123

      la ligne 259 signaliée est la définition de fonction sur un des objets...

      function autoriser_spip-resultat_creer_dist($faire, $type, $id, $qui, $opt) {
              return in_array($qui['statut'], array('0minirezo', '1comite'));
      }

      merci

    • Le 30 mai à 18:21, par Matthieu Marcillaud En réponse à : La Fabrique

      Ah voilà une blague quelle est bonne :)

      Bon, donc, il ne faut pas mettre de - dans les noms de tes objets. Tu peux utiliser le _ de préférence je pense.

      Bizarre que je n’ai pas de test sur ce cas. Je verrais, mais je pense que tu as la réponse.

    Répondre à ce message

  • Le 24 novembre 2016 à 14:01, par joz En réponse à : La Fabrique

    Bonjour,
    J’ai un plugin crée avec fabrique, qui ajoute deux tables à la base.
    Depuis la dernière mise à jour spip je reçois cet erreur :

    Unknown column 'projets.date' in 'where clause'
    SELECT projets.id_projet, projets.titre, projets.texte FROM spip_projets AS `projets` INNER JOIN spip_mots_liens AS L2 ON ( L2.id_objet = projets.id_projet AND L2.objet='projet') INNER JOIN spip_projets_liens AS L1 ON ( L1.id_projet = projets.id_projet ) WHERE (projets.statut = 'publie') AND projets.date<'2016-11-27 00:01:00' AND (L1.id_objet = 2117) AND (L1.objet = 'article') AND (L2.id_mot = 645) GROUP BY projets.id_projet

    squelette : /monchemin/ecrire/public/composer.php
    boucle : calculer_select(){ sql_select(); }

    Je n’ai effectivement pas de champs « date » dans ma table, et je n’en ai pas besoin. ça m’embête que ce squelette en a besoin. Est-ce que c’est indispensable ? Est-ce que c’est qqchose qu’il faudrait savoir avant de créer son plugin ?

    J’ai contourné l’affichage de l’erreur en ajoutant tout à ma boucle sur cette table...

    Merci d’avance pour vos lumières

    • Le 24 novembre 2016 à 20:03, par Matthieu Marcillaud En réponse à : La Fabrique

      Bonjour joz,

      Peux tu préciser de quelle mise à jour tu parles ? de SPIP (et de quelle version à quelle version ?) ou de la Fabrique ? à quel endroit tu as cette erreur ?

    • Le 24 novembre 2016 à 22:37, par joz En réponse à : La Fabrique

      Ah oui, sorry : c’est depuis la dernière màj spip que j’ai eu ce problème, vers spip 3.1.3

      J’ai cette erreur sur une page ou j’utilise l’objet « projet » que je cré avec mon plugin. C’est sur ma boucle (PROJETS) où j’ai ajouté {tout} pour que l’erreur ne s’affiche plus.

      J’espère que je m’exprime un peu compréhensible...

    Répondre à ce message

  • Le 15 octobre 2016 à 15:28, par Julien Lanfrey En réponse à : La Fabrique

    Bonjour,

    J’ai relevé un bug quand on utilise « pré-construire » sur l’interface de définition d’un nouvel objet éditorial.

    Si dans la table SQL de notre objet, on a une colonne « id_secteur », celle-ci se retrouve définie au niveau de la section « Champs » et la case à cocher dans la section « champs spéciaux » ne l’est pas. Ça fonctionne en revanche pour « id_rubrique » : « champs spéciaux » coché et rien dans « champs ».

    Voici le schéma SQL utilisé sur lequel je me suis appuyé.

    CREATE TABLE `spip_pomme` (
      `id_pomme` bigint(21) NOT NULL AUTO_INCREMENT,
      `id_rubrique` bigint(21) NOT NULL DEFAULT ’0’,
      `id_secteur` bigint(21) NOT NULL DEFAULT ’0’,
      `titre` text NOT NULL,
      `variete` varchar(255) NOT NULL DEFAULT ’’,
      `date` datetime NOT NULL DEFAULT ’0000-00-00 00:00:00’,
      `statut` varchar(10) NOT NULL DEFAULT ’0’,
      `maj` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id_pomme`),
      KEY `id_rubrique` (`id_rubrique`),
      KEY `id_secteur` (`id_secteur`),
      KEY `statut` (`statut`,`date`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;
    • Le 20 octobre 2016 à 15:56, par Matthieu Marcillaud En réponse à : La Fabrique

      Ah oui, bien vu.
      La version 2.2.1 corrige ce point.
      Je considère qu’il faut forcément id_rubrique pour que id_secteur soit pris en compte aussi.

      Merci.

    • Le 2 novembre 2016 à 11:51, par Julien Lanfrey En réponse à : La Fabrique

      Ça fonctionne, merci.

      Je viens de voir la réorganisation avec les sections « liaisons directes/indirectes » : de mieux en mieux. C’est un un plaisir d’utiliser cet outil !

    Répondre à ce message

  • Le 10 octobre 2016 à 22:40, par Vero En réponse à : La Fabrique

    Bonjour,

    J’ai un problème « récurent » : je n’arrive pas à créer un objet éditorial.

    Message d’erreur : « Oups. Une erreur inattendue a empêché de soumettre le formulaire »
    Puis je me retrouve avec le panneau « Site en travaux ».

    Message dont la recherche m’a mené ici : http://contrib.spip.net/Champs-Extras-3#forum488227

    Problème récurrent, car j’ai déjà rencontré ... il y a longtemps (sur des 3.0), à partir d’une certaine version. Si besoin, je peux retrouver plus de détails.

    Actuellement, mes versions :

    SPIP 3.1.3
    CHAMPS EXTRA 3.8
    SAISIE 2.7.12
    Serveur local : UBUNTU 16.04 (PHP 7 ...)

    J’ai adoré ce plugin ... mais je n’arrive plus à m’en servir. (Snif ...)

    Merci pour votre aide

    • Le 11 octobre 2016 à 09:18, par Matthieu Marcillaud En réponse à : La Fabrique

      Je ne sais pas ce qui provoque cela. Cette erreur peut apparaître si le formulaire n’arrive pas à se poster, en ajax donc. Peut être surchargez-vous des fichiers, tel que jQuery dans votre répertoire squelettes ?

      Avez vous d’autres plugins qui pourraient interagir en dehors de ceux que vous avez déjà indiqué ?

    • Le 12 octobre 2016 à 17:41, par Vero En réponse à : La Fabrique

      J’ai installé le plugin sur une configuration toute neuve : cela marche.

      J’ai, petit à petit, ré-établi la configuration initiale en espérant trouver le coupable .... Niet, cela fonctionne ! ??????????

      Alors, ce n’est pas gênant, puisque « La fabrique » peut être exploitée hors contexte.

      Si je reproduis le problème avec un soupçon, je reviendrai vers vous sur ce fil.

      Merci beaucoup et encore bravo pour ce plugin !

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?
  • [Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Des jeux dans vos articles !

    9 décembre 2006 – 564 commentaires

    Le plugin « Jeux » permet d’insérer dans vos articles des jeux ou des exercices de toute sorte.

  • Qrcode

    3 novembre 2010 – 46 commentaires

    Les QrCodes sont des codes barres lisibles essentiellement par les téléphones portables et permettent d’échanger avec ceux-ci diverses informations, et en particulier des liens. Ce plugin à pour objet de permettre à spip d’utiliser des QrCodes pour (...)

  • Plugin Modèles media

    25 avril 2011 – 180 commentaires

    Les modèles , et produisent chacun un résultat différent et ce résultat, pour les images, dépend du fait qu’elle soit dans le portfolio ou non. Ce plugin propose une nouvelle série de modèles ayant un comportement unifié et indépendant du mode des (...)

  • Speedsyndic pour SPIP 2 et SPIP 3

    11 octobre 2010 – 27 commentaires

    Ce plugin est une version compatible spip 2.0.x / 2.1 / 3.1 du plugin Speedsyndic Note : Une bonne partie du texte ci-dessous a été pompé de cet article, expliquant la version précédente du plugin. je n’ai fait qu’adapter le code pour spip 2, (...)

  • LIM : alléger l’espace privé

    20 avril 2015 – 41 commentaires

    Ce plugin permet de désactiver l’affichage de blocs ou de boutons, présents par défaut dans SPIP mais qui peuvent devenir inutiles dans le cadre de votre projet. Il allège du coup l’interface d’édition et supprime d’éventuels risques de confusion (...)

Ça spipe par là