La Fabrique

La Fabrique est un outil pour créer des plugins, essentiel dans la phase de développement d’un site SPIP. 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 » 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.

Notes

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

Discussion

137 discussions

  • 9

    Bonjour,
    Sur un spip v4.2.8 php 8.1 fabrique 3.1.1
    j’ai une erreur php dans :
    nomplugin_options.php,
    nomplugin_fonctions.php

    Dans ces fichiers je ne trouve que :
    if (!defined('_ECRIRE_INC_VERSION')) {        return; }
    Il n’y a rien d’autre de défini dans ces fichiers.
    et bien sur « ça plante spip »
    que faudrait-il avoir en complément ?
    Merci bien Alain

    • Bonjour,
      Sur un spip v4.2.8 php 8.1
      En fait, dans lafabrique, une fois tout renseigné, j’ai une annonce d’erreur :
      Oups une erreur à empêché de soumettre ....
      Je ne trouve pas ce qu’il manque.
      Je joint le fichier de sauvegarde si ça peut aider
      Merci bien Alain

    • Bonjour,
      Je tourne en rond sans arriver à créer un plugin qui ’marche’.
      Sur un spip v4.2.8 php 8.1 fabrique 3.1.1
      La création d’un plugin se passe bien uniquement pour l’entête jusqu’à l’activation du plugin.
      Dés que je déclare un contenus, çà plante inexorablement spip.
      que faire pour trouver ou ça bloque ?
      Merci bien. je vous mets le fichier fabrique_voir.php pour vous fournir ma base de travail.
      Alain
      <?php /** *  Fichier généré par la Fabrique de plugin v7 *   le 2024-01-15 18:37:02 * *  Ce fichier de sauvegarde peut servir à recréer *  votre plugin avec le plugin «Fabrique» qui a servi à le créer. * *  Bien évidemment, les modifications apportées ultérieurement *  par vos soins dans le code de ce plugin généré *  NE SERONT PAS connues du plugin «Fabrique» et ne pourront pas *  être recréées par lui ! * *  La «Fabrique» ne pourra que régénerer le code de base du plugin *  avec les informations dont il dispose. * **/ if (!defined('_ECRIRE_INC_VERSION')) {         return; } $data = array (  'fabrique' =>  array (    'version' => 7,  ),  'paquet' =>  array (    'prefixe' => 'voir',    'nom' => 'pour voir',    'slogan' => 'rien a faire',    'description' => 'sans contenus pour tester simplement',    'logo' =>    array (      0 => '',    ),    'credits' =>    array (      'logo' =>      array (        'texte' => '',        'url' => '',      ),    ),    'version' => '1.0.0',    'auteur' => 'alain3',    'auteur_lien' => '',    'licence' => 'GNU/GPL',    'etat' => 'dev',    'compatibilite' => '[4.2.8;4.3.*]',    'documentation' => '',    'administrations' => '',    'schema' => '1.0.0',    'formulaire_config' => '',    'formulaire_config_titre' => '',    'fichiers' =>    array (      0 => 'autorisations',      1 => 'fonctions',      2 => 'options',      3 => 'pipelines',    ),    'inserer' =>    array (      'paquet' => '',      'administrations' =>      array (        'maj' => '',        'desinstallation' => '',        'fin' => '',      ),      'base' =>      array (        'tables' =>        array (          'fin' => '',        ),      ),    ),    'scripts' =>    array (      'pre_copie' => '',      'post_creation' => '',    ),    'exemples' => 'on',    'saisies_mode' => 'php',  ),  'objets' =>  array (    0 =>    array (      'nom' => 'vides',      'nom_singulier' => 'vide',      'genre' => 'masculin',      'logo' =>      array (        0 => '',        32 => '',        24 => '',        16 => '',        12 => '',      ),      'table' => 'spip_vide',      'cle_primaire' => 'id_vide',      'cle_primaire_sql' => 'bigint(21) NOT NULL',      'table_type' => 'vide',      'champs' =>      array (        0 =>        array (          'nom' => 'seul',          'champ' => 'seul',          'sql' => 'varchar(50) NOT NULL DEFAULT \'\'',          'caracteristiques' =>          array (            0 => 'editable',            1 => 'versionne',          ),          'recherche' => '1',          'saisie' => 'textarea',          'explication' => '',          'saisie_options' => 'conteneur_class=pleine_largeur, class=inserer_barre_edition, rows=4',        ),      ),      'champ_titre' => 'seul',      'champ_date' => 'date_publication',      'champ_date_ignore' => '',      'statut' => 'on',      'chaines' =>      array (        'titre_objets' => 'Vides',        'titre_page_objets' => 'Les vides',        'titre_objet' => 'Vide',        'info_aucun_objet' => 'Aucun vide',        'info_1_objet' => 'Un vide',        'info_nb_objets' => '@nb@ vides',        'icone_creer_objet' => 'Créer un vide',        'icone_modifier_objet' => 'Modifier ce vide',        'titre_logo_objet' => 'Logo de ce vide',        'titre_langue_objet' => 'Langue de ce vide',        'texte_definir_comme_traduction_objet' => 'Ce vide est une traduction du vide numéro :',        'titre_\\objets_lies_objet' => 'Liés à ce vide',        'titre_objets_rubrique' => 'Vides de la rubrique',        'info_objets_auteur' => 'Les vides de cet auteur',        'retirer_lien_objet' => 'Retirer ce vide',        'retirer_tous_liens_objets' => 'Retirer tous les vides',        'ajouter_lien_objet' => 'Ajouter ce vide',        'texte_ajouter_objet' => 'Ajouter un vide',        'texte_creer_associer_objet' => 'Créer et associer un vide',        'texte_changer_statut_objet' => 'Ce vide est :',        'supprimer_objet' => 'Supprimer cet vide',        'confirmer_supprimer_objet' => 'Confirmez-vous la suppression de cet vide ?',      ),      'liaison_directe' => '',      'table_liens' => '',      'afficher_liens' => '',      'roles' => '',      'auteurs_liens' => '',      'vue_auteurs_liens' => '',      'autorisations' =>      array (        'objets_voir' => '',        'objet_creer' => '',        'objet_voir' => '',        'objet_modifier' => '',        'objet_supprimer' => '',        'associerobjet' => '',      ),    ),  ),  'images' =>  array (    'paquet' =>    array (      'logo' =>      array (        0 =>        array (          'extension' => '',          'contenu' => '',        ),      ),    ),    'objets' =>    array (      0 =>      array (      ),    ),  ), );

    • Erreur innatendue dans un formulaire -> erreur PHP.

      Il faudrait activer via mes_options.php l’affichage des erreurs et/ou accéder aux logs PHP pour en savoir plus

    • Bonjour,
      Merci bien pour votre réponse.
      Le morceau de spip.log réalisé lors de la dernière tentative de création :
      2024-01-16 11:26:10 127.0.0.1 (pid 4434) :Pri:info: creation ../plugins/fabrique_auto/voir/prive/objets/liste/ 2024-01-16 11:26:10 127.0.0.1 (pid 4434) :Pri:info: include_spip balise/mid_objet.php non trouve 2024-01-16 11:26:10 127.0.0.1 (pid 4434) :Pri:info: include_spip balise/mid_.php non trouve 2024-01-16 11:26:10 127.0.0.1 (pid 4434) :Pri:info: include_spip balise/mtype.php non trouve
      Puis après avoir re tenté la création qui alors plante spip j’ai eu :
      2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:debug: Connexion MySQLi vers localhost, base spip, prefixe spip operationnelle 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:debug: POST ./?exec=fabrique - ../config/connect.php 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:debug: autoriser loger  0 (Alain) ? 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:debug: autoriser_loger_dist(loger, , 0, Alain) : OK 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:debug: autoriser ecrire   (Alain) ? 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:debug: autoriser_ecrire_dist(ecrire, , , Alain) : OK 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: include_spip formulaires/fabriquer_plugin/verifier.php non trouve 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: include_spip formulaires/fabriquer_plugin/verifier_post_saisies.php non trouve 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: ajoute session ../tmp/sessions/1_c084aadfaab7a11afad7707ee56db644.php cookie 86400 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:debug: autoriser ecrire   (Alain) ? 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:debug: autoriser_ecrire_dist(ecrire, , , Alain) : OK 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: creation ../plugins/fabrique_auto/voir/ 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (1.123 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/fabrique_prefixe.php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:20), data=array:4(fabrique=array:1, paquet=array:21, objets=array:1, …), lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1 (4749 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: table_objet(vide) calculee sans verification 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (1.461 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/paquet.xml] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1 (1789 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: creation ../plugins/fabrique_auto/voir/lang/ 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (0.212 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/lang/paquet-prefixe_fr.php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1 (319 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (0.373 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/lang/prefixe_fr.php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1 (224 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (0.408 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/entetes/php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1, description='Fichier gérant l'installatio…', package=Installation (264 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (2.488 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/prefixe_administrations.php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1 (2808 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (0.323 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/entetes/php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1, description='Définit les autorisations du…', package=Autorisations (241 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (1.624 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/prefixe_autorisations.php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1 (3531 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (0.321 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/entetes/php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1, description='Fonctions utiles au plugin po…', package=Fonctions (227 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (1.042 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/prefixe_fonctions.php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1 (459 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (0.320 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/entetes/php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1, description='Options au chargement du plug…', package=Options (230 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (1.018 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/prefixe_options.php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1 (461 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (0.324 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/entetes/php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1, description='Utilisations de pipelines par…', package=Pipelines (230 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (1.521 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/prefixe_pipelines.php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1 (767 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: creation ../plugins/fabrique_auto/voir/base/ 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (0.398 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/entetes/php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1, description='Déclarations relatives à la…', package=Pipelines (237 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (2.228 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/base/prefixe.php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1 (2231 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (1.069 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/lang/objet_fr.php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), objet=array:29(nom=vides, nom_singulier=vide, genre=masculin, …), id_objet=id_vide, type=vide, table=spip_vides, mobjet=VIDES, lobjet=vides, mtype=VIDE, mid_objet=ID_VIDE, lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1 (1284 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: creation ../plugins/fabrique_auto/voir/formulaires/ 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (0.316 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/formulaires/editer_objet.html] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), objet=array:29(nom=vides, nom_singulier=vide, genre=masculin, …), id_objet=id_vide, type=vide, table=spip_vides, mobjet=VIDES, lobjet=vides, mtype=VIDE, mid_objet=ID_VIDE, lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1 (732 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (0.352 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/entetes/php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), objet=array:29(nom=vides, nom_singulier=vide, genre=masculin, …), id_objet=id_vide, type=vide, table=spip_vides, mobjet=VIDES, lobjet=vides, mtype=VIDE, mid_objet=ID_VIDE, lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1, description='Gestion du formulaire de d'é…', package=Formulaires (236 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (3.315 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/formulaires/editer_objet.php] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), objet=array:29(nom=vides, nom_singulier=vide, genre=masculin, …), id_objet=id_vide, type=vide, table=spip_vides, mobjet=VIDES, lobjet=vides, mtype=VIDE, mid_objet=ID_VIDE, lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1 (5389 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: creation ../plugins/fabrique_auto/voir/prive/ 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: creation ../plugins/fabrique_auto/voir/prive/objets/ 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: creation ../plugins/fabrique_auto/voir/prive/objets/contenu/ 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (0.589 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/prive/objets/contenu/objet.html] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), objet=array:29(nom=vides, nom_singulier=vide, genre=masculin, …), id_objet=id_vide, type=vide, table=spip_vides, mobjet=VIDES, lobjet=vides, mtype=VIDE, mid_objet=ID_VIDE, lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1 (245 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: creation ../plugins/fabrique_auto/voir/prive/objets/liste/ 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: calcul (0.692 ms) [../plugins/auto/fabrique/v3.1.1/fabrique/prive/objets/liste/objets.html] fabrique=array:1(version=7), paquet=array:21(prefixe=voir, nom='pour voir', slogan='rien a faire', …), objets=array:1(0=array:29), prefixe=voir, mprefixe=VOIR, exemples=on, les_id_objets=array:1(0=id_vide), les_types=array:1(0=vide), les_objets=array:1(0=vides), les_tables=array:1(0=spip_vides), les_tables_objets=array:1(0=spip_vides), objet=array:29(nom=vides, nom_singulier=vide, genre=masculin, …), id_objet=id_vide, type=vide, table=spip_vides, mobjet=VIDES, lobjet=vides, mtype=VIDE, mid_objet=ID_VIDE, lang=fr, date='2024-01-16 11:34:19', date_default=1, date_redac='2024-01-16 11:34:19', date_redac_default=1 (1847 octets) 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: creation ../plugins/fabrique_auto/voir/prive/themes/ 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: creation ../plugins/fabrique_auto/voir/prive/themes/spip/ 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: creation ../plugins/fabrique_auto/voir/prive/themes/spip/images/ 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: include_spip inc/filtres_images.php non trouve 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:info: ajoute session ../tmp/sessions/1_c084aadfaab7a11afad7707ee56db644.php cookie 86400 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:debug: autoriser ecrire   (Alain) ? 2024-01-16 11:34:19 127.0.0.1 (pid 715) :Pri:debug: autoriser_ecrire_dist(ecrire, , , Alain) : OK
      Vola l’ensemble des logs.
      Le premier messages peut être enlevé car il est sans intérêt.
      Alain

    • Je parlais bien des logs PHP au niveau du serveur / hébergeur, pas des logos SPIP qui sont dans tmp/logs (et que tu m’a copié).

    • Bonjour ,
      Grande patience !!
      je pense que cela devrait te donner des infos plus pertinentes ?
      Obtenus après l’annonce du problème et ce qui plante spip.
      Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /var/www/html/spip/plugins/auto/fabrique/v3.1.1/formulaires/fabriquer_plugin.php on line 739 Fatal error: Uncaught ValueError: Path cannot be empty in /var/www/html/spip/ecrire/inc/flock.php:113 Stack trace: #0 /var/www/html/spip/ecrire/inc/flock.php(113): file_get_contents() #1 /var/www/html/spip/plugins/auto/fabrique/v3.1.1/formulaires/fabriquer_plugin.php(741): spip_file_get_contents() #2 /var/www/html/spip/plugins/auto/fabrique/v3.1.1/formulaires/fabriquer_plugin.php(631): fabriquer_miniature_png() #3 /var/www/html/spip/plugins/auto/fabrique/v3.1.1/formulaires/fabriquer_plugin.php(490): fabriquer_miniatures() #4 /var/www/html/spip/ecrire/public/aiguiller.php(288): formulaires_fabriquer_plugin_traiter_dist() #5 /var/www/html/spip/ecrire/index.php(70): traiter_formulaires_dynamiques() #6 {main} thrown in /var/www/html/spip/ecrire/inc/flock.php on line 113
      A suivre
      Alain

    • Effectivement on a une fatal erreurs, sur la recherche d’un fichier.

      C’est à quel moment que ton formulaire plante ? c’est lequel d’ailleurs.

      Je me demande s’il s’attend pas à trouver un logo/picto et que tu lui fourni pas -> ca plante (ce serrait un bug, mais ca me parait la meilleur piste pour l’instant...)

    • Bonsoir,
      Je viens de tester avec un fichier image. Effectivement ça va jusqu’au bout mais la table spip_vides n’est pas initialisée dans la base de données.
      le plugin a comme préfixe : voir
      les erreurs spip au lancement de la création d’un enregistrement :
      dans Message Erreur SQL 1146 Table 'spip.spip_vides' doesn't exist SELECT * FROM spip_vides WHERE id_vide=0 dans le squelette /var/www/html/spip/ecrire/inc/editer.php Dans la boucle : formulaires_editer_objet_charger(){ sql_fetsel(); }        ligne : 242

      J’ai cette même défaillance avec le plugin brèves qui ne crée pas la table.
      Donc à suivre
      Merci bien Alain

    • Bonjour,
      Grace aux réponses que j’ai exploitées, je peux dire que « çà marche ».
      J’en tire la leçon suivante par ordre de priorités :
      1er mettre des logos
      2e avoir la base mariadb avec le Type InnoDB et interclassement utf8mb4_general_ci
      3e créer le plugin nouveau et l’activer
      4e entrer une première donnée qui fait planter car il est possible que la table ne soit pas « présentée ».
      5e utiliser la fonction de réparation de la base et alors tout rentre dans l’ordre la table est visible et active pour recevoir les futures données.
      Merci aux patients débroussailleurs.
      Alain

    Répondre à ce message

  • il est possible d’installer le plugin sous spip 4 depuis la branche master (téléchargeable depuis le git puis installation manuelle). Pour rendre le plugin actif, il suffit d’installer d’abord le plugin jQuery ui manuellement.

    Répondre à ce message

  • 2

    Bonjour
    y a t’il moyen d’ajouter aux statistiques de Spip 4 un objet créé avec La Fabrique ?

    merci
    Natacha

    Répondre à ce message

  • Bonjour

    comment afficher un champs en fonction de la valeur de radio, case à cocher ou de sélecteur ?
    après un radio oui non Un nom de champ pour SQL « possible_section »

    data=[(#ARRAY{oui,oui,non,non})]

    dans le champ suivant j’ai mis

    @possible_section@ == "oui"

    ou
    mais il s’affiche quand même

    merci pour votre aide
    Natacha

    Répondre à ce message

  • Bonjour et merci pour ce plugin très utile pour créer des outils rédactionnels supplémentaire... Est-ce que ce plugin sera porté sur la version 4.0 de Spip et y aura-t-il des modifications à apporter sur nos add-ons faits maison ?

    Merci

    Répondre à ce message

  • 1

    Bonjour,
    j’essaye de faire un pluging avec la fabrique. Dans l’ensemble cela fonctionne bien. Il me reste un point que je n’arrive pas à comprendre :

    J’ai un objet X qui dépend en liaison directe d’un objet Y et qui peut être rattaché à des rubriques et des articles.
    Je vois bien la liste des objets X de l’objet Y.
    Je vois bien la liste des objets X.
    par contre si je rattache un objet x par exemple a 2 rubriques, j’ai dans la page de l’objet
    Liés à cet objet X et la liste de toutes les rubriques.
    J’ai vue que cela venait de l’element généré

    avec #GETliste=rubrique qui va chercher le code dans prive/objets/liste/rubriques de la dist 3.2
    Je n’arrive pas à résoudre ce pb même en mettant id_Y_X=#ID_OBJET
    savez vous comment résoudre ce pb

    • Salut,

      J’espère qu’en un an, tu as pu trouver solution à ton problème mais comme j’ai galéré pas mal avec cette même difficulté, je précise ici ce que j’ai fais pour résoudre ce problème pour les futurs galériennes :

      Dans mon cas, les objets liés sont surtout des articles, j’ai donc recopié le fichier racine-du-site/prive/objets/liste/articles.html dans plugins/xyz/prive/objets/liste et j’ai ajouté à la boucle liste_art de ce fichier le critère spip_xyz_liens.id_xyz ?

      La documentation du plugin mériterait d’être clarifiée à ce niveau (avec cet exemple ?), j’ai trouvé d’autres personnes qui ne l’ont pas comprises sur ce point.

    Répondre à ce message

  • 1

    bonjour,
    juste pour info pour les néophytes , je teste le mode de saisie php avec avec fabrique-issue_8 ,
    dans « options de saisie » il y a comme exemple :
    Exemple pour selection / checkbox / radio :
    datas=[(#ARRAY{cle1,valeur1,cle2,valeur2})]
    ce qui correspond au mode html
    ... peut être faudrait il indiquer la syntaxe aussi en mode php car dans ce cas cela génére

    array(
    			'saisie' => 'radio',
    			'options' => array(
    				'nom' => 'menu_selections',
    				
    				'label' => _T('page:champ_menu_selections_label'),
    				 'explication' => _T('page:champ_menu_selections_explication'),
    				'datas' => '[(#ARRAY{oui',
    				'oui' => '',
    				'non' => '',
    				'non})]' => '',
    				
    			),
    		),

    qui bien sur ne fonctionne pas.

    Répondre à ce message

  • 3

    bonjour,
    Sauriez vous t ce qui peut empêcher la création des tables alors que la création du plugin s’est bien déroulé , le plugin activé, le cache vidé ?
    les tables ont un format standard nom : spip_ensembles

    SPIP 3.3.0-dev [24578]
    merci

    • Le [24578] m’inquiète : c’est une version SVN et on n’utilise plus ça. Soit il reste un fichier .svn_revision à la racine de ton SPIP. Soit y a un autre soucis.

      Ensuite, il faut regarder tmp/log/mysql ou sqlite pour savoir quelle est l’erreur de création de la table. Ça peut être du à une mauvaise syntaxe de déclaration.

    • cela venait de la présence d’une cote de de trop dans text NOT NULL DEFAULT «  »«  » difficile à voir qui ne génère pas d’erreur. La cote enlevée cela fonctionne.
      C’est bon par contre a l’affichage de la partie ’Autorisations’ de l’objet le plugin affiche deux fois xxx_voir par défaut : toujours .

    • autan pour moi ... ne cherche pas c’est objets _voir et objet_voir ....

    Répondre à ce message

  • Bonjour,

    Je suis en train d’utiliser ce super plugin pour créer un objet éditorial et je rencontre deux problèmes.

    Lors d’un test (le dernier) le plugin a fait planter le spip (en local, bien sûr) avec une page blanche. Impossible donc de désinstaller le plugin depuis la page d’admin. J’ai donc supprimer le dossier du plugin et ça refonctionne. Problème : plusieurs messages d’erreurs s’affichent alors.
    -  Le premier (sur la page d’admin des plugins) m’indiquant

    "Actions non réalisées

    Le plugin « XXX » (version : 1.0.0) va être installé

    Certaines actions n’ont pas été réalisées. Cela peut provenir d’une erreur lors des actions à réaliser, ou d’un affichage de cette page alors que des actions sont encore en cours. Les actions avaient été lancées par test le 28 août 2020 à 13h54min."

    -  Le second, sur toutes les pages d’admin, m’indiquant que les deux tables que devait créer le plugin n’existent pas (Erreur SQL 1146 par le squelette /spip/ecrire/genie/maintenance.php)

    La question est la suivante : comment désinstaller proprement un plugin manuellement. Quels sont les fichiers de conf à supp ? Un script a lancer ?

    J’ai testé ceci https://gist.github.com/Cerdic/5848603#file-site-desactive-plugin-php mais sans succès (les chemins et fichiers ne correspondent pas).

    Je peux repartir d’un spip tout frais mais il y avoir mieux, surtout si ça arrive lors du déploiement sur le site en ligne ! :s Si quelqu’un saurait comment procéder ?

    Autre soucis, déjà évoqué plus bas, sûrement accessoire mais peut-être pas étranger au crash du plugin : les boutons « pré-remplir cet objet » et « supprimer cet objet éditorial » ne sont pas fonctionnels.
    Je suis sous spip SPIP 3.2.7 [24473] avec la Fabrique 2.3.15

    Répondre à ce message

  • Erreur inopinée !

    Si, comme moi, vous avez chargé une version récente de Fabrique et qu’au moment de sauvegarder votre plugin, vous vous prenez une « Erreur inopinée » ?
    Je vous suggère de vérifier la version de PHP que votre serveur utilise...
    -  en PHP 5.6 j’avais l’erreur (sans en comprendre la cause)
    -  en passant sous PHP 7.2... actualiser la page restée ouverte a suffit !

    P.S. : normal que cet outil de développeur utilise les dernières possibilités du langage ! ;-)

    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 :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

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

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom