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 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

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 votre compte webmestre.

Footnotes

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

Discussion

140 discussions

  • 1

    Bonjour de nouveau problème après avoir forcé la compatibilité du plugin à 4.4.*
    sous spip 4.4.2
    php 8.3.15
    lors d’une nouvelle création de test car la récup d’anciennes production plante !.
    après initialisation, enregistrement la fonction d’ajout d’objet editorial retourne :
    Oups. Une erreur inattendue a empêché de soumettre le formulaire. Vous pouvez essayer à nouveau.
    La sélection créer le plugin me donne :

    `Warning: Undefined array key 0 in /var/www/vhosts/choeurcrescendo.ouvaton.org/httpdocs/plugins/auto/fabrique/v3.2.0/formulaires/fabriquer_plugin.php on line 480

    Warning: Trying to access array offset on null in /var/www/vhosts/choeurcrescendo.ouvaton.org/httpdocs/plugins/auto/fabrique/v3.2.0/formulaires/fabriquer_plugin.php on line 480

    Fatal error: Uncaught Error: Call to undefined function exec() in /var/www/vhosts/choeurcrescendo.ouvaton.org/httpdocs/plugins/auto/fabrique/v3.2.0/inc/fdiff.php:334 Stack trace: #0 /var/www/vhosts/choeurcrescendo.ouvaton.org/httpdocs/plugins/auto/fabrique/v3.2.0/inc/fdiff.php(397): Fdiff->get_diff_unix() #1 /var/www/vhosts/choeurcrescendo.ouvaton.org/httpdocs/plugins/auto/fabrique/v3.2.0/formulaires/fabriquer_plugin_actions.php(355): Fdiff->get_diff() #2 /var/www/vhosts/choeurcrescendo.ouvaton.org/httpdocs/plugins/auto/fabrique/v3.2.0/formulaires/fabriquer_plugin.php(527): fabrique_generer_diff() #3 /var/www/vhosts/choeurcrescendo.ouvaton.org/httpdocs/ecrire/public/aiguiller.php(296): formulaires_fabriquer_plugin_traiter_dist() #4 /var/www/vhosts/choeurcrescendo.ouvaton.org/httpdocs/ecrire/index.php(72): traiter_formulaires_dynamiques() #5 main thrown in /var/www/vhosts/choeurcrescendo.ouvaton.org/httpdocs/plugins/auto/fabrique/v3.2.0/inc/fdiff.php on line 334’

    Merci bien Alain

    • Bonjour,
      En complément :
      en tentant de créer un tout nouveau plugin, après avoir fait l’entête et voulu avoir un élément éditorial, j’obtiens :

      Site en travaux
      Attention : un problème technique (serveur SQL) empêche l’accès à cette partie du site. Merci de votre compréhension.

      La même chose si je veux un “peuplement”.
      Donc ça ne vas pas plus loin !
      Merci bien Alain

    Reply to this message

  • 2

    Bonjour,

    j’ai créé un champ “sélection” qui permet à un rédacteur de choisir entre 15 choix possibles mais dans la table spip_dédiée de l’objet éditorial, il n’y a que la clé qui s’affiche et je n’ai pas accès à la valeur. Quelqu’un aurait une idée ?

    Merci :-)

    déf SQL
    text NOT NULL DEFAULT ’’

    type de saisie
    sélection

    option de saisie
    data=[(#ARRAYcle1,Do♯ Majeur,cle2,Fa♯ Majeur,cle3,Si Majeur,cle4,Mi Majeur,cle5,La Majeur,cle6,Ré Majeur,cle7,Sol Majeur,cle8,Do Majeur,cle9,Fa Majeur,cle10,Si♭ Majeur,cle11,Mi♭ Majeur,cle12,La♭ Majeur,cle13,Ré♭ Majeur,cle14,Sol♭ Majeur,cle15,Do♭Majeur)]

    • Oui c’est normal, seuls les clés sont enregistrées, ca permet d’ajuster les choses.

      A toi ensuite de convertir la clé en valeur affichable.

      Personnellement je déclare toutes mes saisies en PHP et jamais en #SAISIES, ce qui facilite le travail de conversion (et je pense même que du coup coté privé c’est géré automatiquement).

    • je te remercie pour ta réponse, c’est ce que je fais actuellement :-) (mais je me suis dit au cas où pourquoi ne pas demander)
      Bon dimanche

    Reply to this message

  • 7

    Je voudrais utiliser ce plugin mais dès le départ j’ai une erreur.
    mon_site/ecrire/src/Compilateur/Iterateur/Data.php on line 356

    Comment la réparer ?
    Merci

    • Quelle est l’erreur et quelles sont les étapes pour les reproduires.
      Merci d’avance

      Maïeul ROuquette

    • Dans le fichier data.php ligne 356
      «
      Warning: range(): Argument #1 ($start) must not be empty, casted to 0 in »
      $enum = range(array_shift($this->command['enum']), array_shift($this->command['enum']));

    • Cette erreur apparaît dès le départ, avant même que j’aie commencé à remplir le formulaire.

    • J’ai essayé de reproduire et je ne le fais.

      Donc

      1. Version du plugin ?
      2. Version de Php ?

    • 3. Version SPIP aussi

    • Oups,

      J’étais en SPIP 4.2.
      j’upgrade et je reviens

    • Bon,

      Ma configuration était défectueuse. Réparé.
      Plus d’alerte.
      Désolé

    Reply to this message

  • 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

    Reply to this 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.

    Reply to this message

  • 2

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

    merci
    Natacha

    Reply to this 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

    Reply to this 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

    Reply to this 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.

    Reply to this 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.

    Reply to this message

Add a comment

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.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom