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

  • Tederic Merger

    Bonjour,
    J’ai utilisé « La Fabrique » pour créer des objets éditoriaux, et ça marche ! Merci et bravo !
    Je l’ai probablement fait d’une manière maladroite (j’ai créé plusieurs plugins, presque un par objet éditorial), mais j’étais tellement pressé d’obtenir quelque chose...
    J’apprécie particulièrement la génération d’un système de liens entre objets éditoriaux.
    Par contre, je voulais aussi pouvoir générer des liens entre différentes fiches du même objet éditorial, et ça ne marche pas :
    J’affiche un objet A, j’utilise le formulaire « lier à objet A » ; finalement, le lien n’est pas créé.
    Mais je vais faire sans pour l’instant.
    Une question : j’ai utilisé la version 1.18.1 du plugin La Fabrique, est-il important de passer à la version 1.20.1 que je vois proposée aujourd’hui ?
    Bravo aussi pour SPIP 3 et justement son concept d’objet éditorial !

    Répondre à ce message

  • 2

    Bonjour, j’utilise pour la première fois ce plugin et je suis en train de rencontrer quelques problèmes : est-ils possible de gérer les relations entre les nouveaux objets éditoriaux ?
    J’ai créé 5 nouveaux objets (A, B, C, D, E), mais je ne n’arrive pas à gérer les liaisons entre eux, même si j’ai activé « creer une table de liens » et coché l’objet A (et les articles*) pour ajouter « un formulaire d’édition de liens sur les objets » dans l’onglet des objets B, C, D et E,.

    Dans la page de gestion d’un ecrire/ ?exec=A&id_A=X, je peux tranquillement associer un mot clé à l’objet X, mais je ne peux pas ajouter une liaison avec B, C, D, E, tandis que dans la page de gestion d’un article (*) je peux ajouter soi des mots-clés soi des liaisons avec B, C, D, E

    SPIP 3.0.16 [21266]
    Fabrique 1.20.1 - essai
    PHP 5.3.28
    MySQL 5.1.56

    Que faire ?
    Merci en avance

    • J’ai résolu le problème du post précédent en ajoutant la possibilité de lier les objets B, C, D et E même aux articles : je crois qu’il s’agissait d’un petit bug.
      Maintenant je suis en train de modifier le squelette rubrique.html pour faire en sorte d’afficher tous les objets du type A et je voudrais me servir de B, C, D et E comme critères conditionnels pour filtrer la liste.
      Est-il possible d’utiliser comme critères conditionnels les objets créés avec le plugin la fabrique ?

      J’ai essayé avec le code qui suit

      mais malheureusement j’obtiens seulement l’erreur « critère inconnu »

      Au contraire avec le code

      il n’y a pas d’erreur et j’obtiens la liste des objets A auxquels j’ai attribué le mot que je mets comme paramètre dans l’url (ex. spip.php ?rubrique1&id_mot=1).

    • J’ai résolu le problème du post précédent en ajoutant la possibilité de lier les objets B, C, D et E même aux articles : je crois qu’il s’agissait d’un petit bug.
      Maintenant je suis en train de modifier le squelette rubrique.html pour faire en sorte d’afficher tous les objets du type A et je voudrais me servir de B, C, D et E comme critères conditionnels pour filtrer la liste.
      Est-il possible d’utiliser comme critères conditionnels les objets créés avec le plugin la fabrique ?

      J’ai essayé avec le code qui suit
      < BOUCLE _liste_A (A) id_rubrique  !par id_A id_B ? id_C ? id_D ? id_E ?>
      mais malheureusement j’obtiens seulement l’erreur « critère inconnu »

      Au contraire avec le code
      < BOUCLE _liste_A (A) id_rubrique  !par id_A id_mot ?>
      il n’y a pas d’erreur et j’obtiens la liste des objets A auxquels j’ai attribué le mot que je mets comme paramètre dans l’url (ex. spip.php ?rubrique1&id_mot=1).

    Répondre à ce message

  • 2

    Re bonjour,

    Concernant la pondération de la recherche dans un champ, on peut aller de 1 à 10. Mais ça marche dans quel sens ? Si je veux donner l’importance la plus haute à un champ pour la recherche, je dois mettre 1 ou 10 ?

    Merci d’avance de vos explications !

    Répondre à ce message

  • 2

    Bonjour,

    Pour un site bien spécifique un doit créer un plugin qui doit se connecter et créer des tables pour les objets dans une base externe. J’ai connecter cette base depuis « Maintenance => Maintenance technique ». Elle y apparait bien et j’ai créer à la main une table avec quelques champs que j’ai rempli et j’arrive à bien boucler dessus... De plus, cette table apparaît avec le nom du fichier de connexion créé par spip au moment ou il possible de créer la structure d’un table pour un objet à partir d’une table existante... Par contre, j’ai essayer de créer une table en mettant comme nom de la table sql « maconnexiontableexterne:manouvelletable », mais cela ne semble pas marcher... Pas d’erreur lors de la création du plugin, mais page blanche suite à son activation...

    Est ce normal ? Est ce possible de créer une table dans un table externe grace à ce plugin ? Si oui, comment faire ?

    Merci d’avance de votre aide !

    • Il n’est pas possible actuellement de déclarer un objet éditorial à SPIP appartenant à une table externe. Ce plugin ne pourra pas vraiment t’aider à cela.

    • OK ! Merci pour la réponse.
      Je vais donc dans un premier temps créer les tables dans la base de spip avant d’en copier la structure dans l’autre base... En parallèle, je chercherais comment il faut modifier le code généré par La Fabrique pour créer directement les tables dans la base voulue...

    Répondre à ce message

  • 4

    Hello !

    Apparemment, y’a encore le soucis de l’enregistrement des champs datetime/date avec La Fabrique ? Sur Google Chrome je n’arrive même pas à modifier la saisie avec le datepicker, tandis que sur Firefox j’arrive à l’éditer mais j’ai l’erreur

    Une erreur technique a empêché l’enregistrement correct du champ 'date_debut'.

    Y’a bien le bout de code qu’il faut dans la fonction verifier du formulaire pour normaliser le tout...

    ++

    • Il te manque probablement le plugin « verifier » ?

    • Et non, verifier est bien présent.

    • Effectivement, il y a un problème si...
      1- tu utilises Chrome ;
      2- dans fonctions avancées -> Norme HTML à suivre, tu as coché « Permettre le HTML5 »

      ....auquel cas le champ de saisie de la date est de type=date (en HTML 4 il sera type=text) et Chrome surcharge automatiquement avec un un calendrier de son cru. Il y a alors un conflit.

      Solution #1
      En repassant à Fonctions avancées -> Norme HTML à suivre -> Se limiter au HTML4 sur le site public et en vidant le cache, cela remarche de nouveau.

      Solution #2
      surcharger le fichier saisies/date.html dans le plugin Saisies. Mais bon...

    • Je crois avoir trouvé mieux. Dans le fichier editer_suffixe_plugin.html ajouter la ligne suivante :

      <div class='formulaire_spip formulaire_editer ....'>
      .....
      </div>
      <script>
      $(function(){
      	$('input[type="date"]').prop('type','text');
      });
      </script>

    Répondre à ce message

  • 4

    Bonjour et merci pour ce plugin qui semble prometteur !

    Je suis confronté à un problème : j’ai une installation spip avec un préfixe « machin_ » sur mes tables (exemple « machin_articles ». Lors de la création d’un nouvel objet « livres » avec comme nom de table « livres », le formulaire de mon objet apparait bien dans l’admin de mon spip.

    Le problème c’est que lors d’un ajout dans cette table, il me dit que l’ajout a échoué car il ne trouve pas la table « machin_livres ». Effectivement, ma table est déclarée comme « livres » dans mon plugin et non « »machin_livres".

    De même si je modifie mon plugin en modifiant le nom de ma table « livres » en « machin_livres », (je le desinstalle et réinstalle) et que je tente à nouveau un ajout, l’insertion échoue à nouveau car il cherche cette fois la table « machin_machin_livres ». Cette fois-ci, il me double le préfixe de mes tables ...

    De plus, si je modifie dans ma BDD son nom en « machin_machin_livres » (comme le voudrait la requête d’insertion), la table est alors trouvée, l’insertion fonctionne, mais mon enregistrement n’apparait pas dans la liste des livres ... Il est donc bien présent en BDD mais n’est pas affiché.

    Merci pour votre aide.

    • Il n’y a normalement rien à faire. Que le préfixe soit ’spip_’ (par défaut) ou ’machin_’, les déclarations dans le plugin sont les mêmes. La table doit avoir un nom ’spip_livres’ et c’est ensuite SPIP qui adapte la requête comme il faut. Peut être que tu as nommé la table ’livres’ au lieu de ’spip_livres’ tout simplement ?

      Lorsque tu installes le plugin, la table créée devrait alors s’appeler ’machin_livres’. Est-ce le cas ?

    • En fait si je dis au plugin de créer un table « livres », il me crée dans la BDD une table « livres », sans préfixes donc. En revanche lorsque je cherche à interragir avec l’objet créé avec mon nouveau plugin il cherche une table « monpréfixe_livres » qui n’existe donc pas en BDD.

      Si je crée dans mon plugin la table « monpréfixe_livres », il crée en bdd une table « »monpréfixe_livres« mais il cherche à interroger (d’après les messages d’erreurs SPIP) une table s’appelant »« monpréfixe_monpréfixe_livres », qui n’existe pas non plus.

      As tu une idée d’ou ca pourrait venir ?

    • Reprenons…

      Dans l’édition de ton objet éditorial « Livres », dans la Fabrique, tu as une partie « Table » dans laquelle est un champ « Nom de la table SQL » avec écrit « Par exemple « spip_choses » ».

      Il te faut ici renseigner « spip_livres ». Est-ce bien ce que tu as fait ?

    • Merci Mathieu pour ton aide, le problème était là.

      Je pensais que la nouvelle table créée dans la BDD devait avoir le même préfixe que les autres tables de mon spip. Je pensais que l’exemple « spip_choses » signifiait qu’il fallait appeler ma table « machin_choses ».

      Le préfixe « spip_ » est donc obligatoire pour toutes les tables des nouveaux objets créés.

      Je vais pouvoir exploiter à fond toutes les possibilités de ce plugin :)

    Répondre à ce message

  • 15
    David Mich

    Bonsoir, super heureux de ce plugin que j’utilise depuis un certain temps, Bravo à Matthieu !

    Mais j’ai un petit soucis avec la saisie de checkbox.

    Dans la configuration du champ concerné de La Fabrique, je mets :
    -  Checkbox pour le type de saisie. OK.
    -  datas=[(#ARRAYcle1,valeur1,cle2,valeur2)] pour l’option. OK.

    Mais que dois je mettre dans la Définition SQL. La je bloque (j’ai essayé des varchar, des tex NOT NULL, et autres mais rien à faire. Impossible d’enregistrer le formulaire après avec juste ce champ en checkbox défini.

    Y a t’il une doc autre que je n’aurais pas trouvé pour choisir les bonne définitions SQL en fonction du type de saisie ?

    Cordialement.

    • Ce n’est pas un problème de structure des données SQL (varchar ou text va très bien). C’est un problème de traitement du formulaire. On ne peut enregistrer dans une colonne SQL une donnée tabulaire. Ici, une liste de choix est une donnée tabulaire. Il faut donc « sérialiser » la donnée, la « linéariser », c’est à dire stocker sous forme de chaîne, d’une manière ou d’une autre ce tableau. Par exemple stocker « cle1,cle2 » ou « cle1|cle2 » ou encore « a:2{s:4{cle1}s:4{cle2}} ».

      En général, pour ces cas là, c’est la virgule qui est utilisée. C’est à dire que dans la partie « traiter » du formulaire, avant l’appel à la fonction d’enregistrement des données soumises par l’utilisateur, il faut modifier la saisie de celui ci pour le champ chekbox. par exemple avec :

      set_request('champ', implode(",", _request('champ')));

      On prend le champ tabulaire saisi avec _request, on l’implose en chaîne séparé par une virgule, et on le restocke dans la saisie d’origine (ce qui la modifie).

      Voilou.

    • David Mich

      Génialissime ! Super, j’ai essayé, j’ai réussi, de nouvelles perspectives s’ouvrent à moi ... Et quelle rapidité pour nous aider ! La Fabrique est magique, elle permet effectivement de renseigner de nouveaux objets éditoriaux, mais pas seulement, il y a une multitude d’applications possibles en détournant l’objectif initial, et l’intérêt d’utiliser SPIP devient évident et grandiose ...

      J’espère que dans les évolutions futures de LAFABRIQUE vous ne supprimerez pas la partie expérimentale « Scripts à exécuter » car elle me semble essentielle pour tout amateur de ce plugin.

    • Heu, on est pas toujours aussi rapides :)

      Pour infos, peux tu expliquer à quoi te sers la partie « Scripts à exécuter » ? Et des exemples si tu as ?

    • David Mich

      Bonjour, je me servais des scripts à exécuter par exemple pour corriger un truc qui me gêne un peu : le peuplement d’une base qui se fait dans le répertoire maître de lafabrique auto.

      foreach(array(
      ’importer_spip_sc_competences.php’,
      ’importer_spip_sc_domaines.php’,
      ’importer_spip_sc_domaines_liens.php’,
      ’importer_spip_sc_items.php’,
      ) as $f)
      copy($destination_plugin. ’../’ . $f, $destination_plugin . ’base/’.$f) ;

      Je fais un peu différemment maintenant, en modifiant les maj dans le fichier administrations.php mais je vais revenir à cette méthode qui me permet d’avoir le répertoire du plugin complet avec les bases à peupler dans /base. En effet, les plugins que je crée avec la fabrique sont destinés à 3 sites, cela me simplifie la vie, un petit peu.

      include_spip(’../importer_spip_sc_competences’) ;
      $maj[’create’][] = array(’importer_spip_sc_competences’) ;

      En effet, je teste souvent peut-être trop l’affichage et la saisie des résultats, alors pour éviter de saisir trop souvent des exemples, je peuple les tables au moment de la création du plugin.

    • Hum… en fait en général je les copie dans base du plugin créé, puis j’utilise le Futilitaire pour réimporter à chaque création via la fabrique du plugin les fichiers que j’avais ajouté dans base/

      http://zone.spip.org/trac/spip-zone/browser/_plugins_/fabrique/trunk/inc/futilitaire.php

      C’est expliqué là http://marcimat.magraine.net/Integrer-une-table-existante-dans-361 .
      Y a eu quelques améliorations du Futilitaire depuis, pour simplifier l’écriture de l’ajout de ligne dans le code source généré. Faut regarder le code source du Futilitaire qui est bien documenté.

      MM.

    • David Mich

      Merci pour cette info, je vais me pencher dessus. A priori, si tu les copies dans base, tu passes par ftp pour la copie, non ? Pour ce qui est de ton exemple avec futilitaire ( (http://marcimat.magraine.net/Integrer-une-table-existante-dans-361), tu n’exclues pas non plus d’utiliser Les scripts à exécuter :

      include_once($destination_ancien_plugin . ’fabrique_geoniche_post_creation.php’) ;
      fabrique_geoniche_post_creation($data, $destination_plugin, $destination_ancien_plugin) ;

      Le code de Futilitaire est effectivement bien documenté et je vais voir ce que je peux en faire, l’idée n’est pas de conserver les scripts à exécuter une fois le plugin prêt pour le déploiement, juste pour me faciliter la vie au moment de la conception.

      Bonne journée.

    • Bonjour,

      J’ai le même problème que Mich, mais j’ai moins de bagage technique que lui. Donc quand je lis : « set_request(’champ’, implode(",", _request(’champ’))) ; » qui semble être la solution à toutes les réponses .... je suis perdu. Je suppose que ça doit être qu’une partie du code, à modifier en fonction. J’utilise la fabrique depuis quelques temps et là ça coince beaucoup.

      je dois mettre ce type de code où dans Le plugin de Lafabrique ?, ( très bien au passage, même pour une bille comme moi ), j’ai regardé par-ci et par-là sur le net pour essayer tant bien que mal de comprendre mais , je séche complètement.

      merci, bonne soirée

    • Bonjour, tu dois mettre ce code dans un fichier php qui se trouve dans le répertoire :

      plugins\fabrique_auto\NOMDETONPLUGIN\formulaires\editer_NOMDETONOBJETEDITORIAL.php

      La fonction dans laquelle tu dois mettre le code est :

      « function formulaires_editer_NOMDETONOBJETEDITORIAL_traiter_dist »

      et tu mets au début de cette fonction le fameux set_request.

      Pour exemple, avec un champ « niveauscolaire » de type checkbox, dans l’objet éditorial sc_connaissance voici ce que cela donne :

      function formulaires_editer_sc_connaissance_traiter_dist($id_sc_connaissance=’new’, $retour=’’, $associer_objet=’’, $lier_trad=0, $config_fonc=’’, $row=array(), $hidden=’’)
      //MOFIFICATION, MERCI MATTHIEU
      set_request(’niveauscolaire’, implode(« , », _request(’niveauscolaire’))) ;

      $res = formulaires_editer_objet_traiter (’sc_connaissance’,$id_sc_connaissance,’’,$lier_trad,$retour,$config_fonc,$row,$hidden) ;

      // Un lien a prendre en compte ?
      if ($associer_objet AND $id_sc_connaissance = $res[’id_sc_connaissance’])
      list($objet, $id_objet) = explode(’|’, $associer_objet) ;

      if ($objet AND $id_objet AND autoriser(’modifier’, $objet, $id_objet))
      include_spip(’action/editer_liens’) ;
      objet_associer(array(’sc_connaissance’ => $id_sc_connaissance), array($objet => $id_objet)) ;
      if (isset($res[’redirect’]))
      $res[’redirect’] = parametre_url ($res[’redirect’], « id_lien_ajoute », $id_sc_connaissance, ’&’) ;



      return $res ;

      En espérant t’avoir aidé.

    • bonjour,
      merci pour cette réponse rapide et précise. ça fonctionne très bien. Je viens de finir le formulaire avec plus de 20 checkbox et je ne rencontre pas de problèmes dans l’immédiat. Merci beaucoup

    • Heureux d’avoir pu t’aider. Bonne Fabrique.

      PS : tu peux aussi personnaliser les champ en te penchant sur les champs extras du plugin saisie et aller plus loin dans les champs de type checkbox. Il faudra toujours utiliser le set_request mais tu pourras éviter d’avoir à lister les couples clés/variables dans la Fabrique, et même automatiser tes listes déroulantes ou listes de checkbox en fonction de valeurs dans ta base. Mieux encore, et là je dis encore bravo à Matthieu Marcillaud, tu peux avoir les champs saisies créés par LaFabrique, en cochant la bonne case, et utiliser un objet éditorial dans un autre objet éditorial.

      Cordialement.

    • bonjour !!
      un truc dont je m’attendais pas, c’est que spip ne fait pas de recherches dans les fiches que les utilisateurs créeront avec le plugin ! Après moultes recherches, je suis tombés sur le plugin « fulltext ». Malheureusement la base ne doit pas comprendre plus de 16 champs. Donc j’ai effectivement splitté ma base pour avoir plusieurs objets éditoriaux - je vais tester -.
      En tout cas, effectivement le plugin est bien bien pensé pour être souple et efficace :)

      A+

    • Spipmalion

      Attention si vous copiez-collez la ligne suivante il faudra remplacer les apostrophes :
      set_request(’niveauscolaire’, implode(« , », _request(’niveauscolaire’))) ;

      Ce code permet de résoudre un problème avec par exemple un champ selecteur_article (la Fabrique), mais il reste ceci :

      Warning : md5() expects parameter 1 to be string, array given in ecrire\inc\editer.php on line 355

    • Il faut bien copier la ligne avec les apostrophes, en tout cas cela marche.

      Par contre, ton premier champ doit être avec des guillemets, ce qui n’est pas le cas, ce ne sont pas les bons caractères guillemets pour php... qui entoure la virgule de séparation des champs ....

    • Spipmalion

      C’est bien ce que je précise pour les futurs lecteurs, le copier/coller du message de Mich http://contrib.spip.net/La-Fabrique#forum471715 ne fonctionnera pas si on ne change pas les apostrophes pour mettre des bons guillemets.

      Il y a toujours le problème Warning : md5() expects parameter 1 to be string, array given in ecrire\inc\editer.php on line 355
      avec les champs de la Fabrique malgré le implode qui règle le problème pour l’enregistrement des champs.

    • Spipmalion

      Ni ça « ni ça ’ ne fonctionne, ça oui mais je crois que c’est modifié quand on valide le post : ’

      Voici une proposition de code à améliorer : http://spip.pastebin.fr/32666

      Pourquoi ne rajouterait-on pas directement dans le code du plugin la Fabrique la génération de ce code, avec :

      if(is_array(...)) ... implode

      Puisque de toutes façons les array ne passent pas ?

    Répondre à ce message

  • 1
    Spipmalion

    Bonjour,

    En créant un objet éditorial avec un champ sélection_article, j’obtiens cette erreur lors de la validation du formulaire du type « Créer un nouveau chat ». Même chose avec sélection_rubrique

    PHP Warning : addslashes() expects parameter 1 to be string, array given in /home/www/www.site.com/ecrire/req/mysql.php on line 1186, referer : http://www.site.com/ecrire/?exec=home_bloc_edit&new=oui&id_home_bloc=0&picker=1&id_r=2

    J’ai mis une définition SQL « text » pour ces champs

    Répondre à ce message

  • 5

    Bonjour,

    J’ai enfin l’occasion de tester la fabrique, après qu’on m’en ait maintes fois parlé.
    Le hic, c’est que lorsque je veux ajouter un objet éditorial, un message s’affiche « Site en travaux Attention : un problème technique (serveur SQL) empêche l’accès à cette partie du site. Merci de votre compréhension. »

    Je suis en SPIP 3.0.11, avec la Fabrique 1.18.1.
    J’ai fait des tests avec une base SQLite, une base MySQL, sur des sites fonctionnant en local (sur Wamp et easyphp) - Version PHP 5.3.27 - MySQL 5.6.11

    Quelqu’un aurait-il une piste à creuser ?

    Merci d’avance,
    Sandrine

    • Bonjour et bonne année à tous,

      Je réponds à ce message car je me trouve dans la même situation, après avoir créé mon plugin via La Fabrique, en tentant d’ajouter un objet éditorial je me retrouve avec un vilain « Site en travaux »

      Et chaque fois que je reviens sur le plugin La Fabrique (j’ai aussi tenté de désactiver/réactiver le plugin) j’obtiens cette erreur.

      Je suis sous SPIP 3.0.13
      J’utilise WAMP :
      Version de Apache : 2.2.22
      Version de PHP : 5.3.13
      Version de MySQL : 5.5.24

      Merci d’avance pour votre aide.

      Freed

    • bonjour,
      pour moi aussi la fonction ajouter un objet éditorial ne fonctionne pas sous spip 3013 et wamp mysql 5612 php 5412 apache 24 ;4 mais je n’ai pas page en travaux mais ça mouline et rien ne vient.

      cordialement alain cousin

    • Et peut être un système Unix/Linux pour son serveur (appel de exec(’diff’) en PHP) [1]

      Je crois que l’article précise que laFabrique peut ne pas fonctionner avec un WAMP apparemment, de mémoire ça à toujours été précisé par l’auteur.

      Vos messages le confirme donc plus ou moins.

    • Bonjour

      Merci pour cette précision. Effectivement, ça semble se confirmer...
      N’ayant pas de compétences techniques très avancées, je n’avais pas tilté sur cette remarque.

      J’avais finalement contourné le problème en installant la fabrique sur un site en ligne (que j’utilise pour des tests) pour créer les objets éditoriaux dont j’avais besoin. Ensuite, il me suffisait de récupérer le plugin généré par FTP pour l’installer sur mon site local.

      Bonne journée,
      Sandrine

    • bonjour, merci pour vos commentaires, j’ai essayé comme Sandrine sur mon hébergeur nuxit mais cela n’a pas fonctionné, donc j’ai installé un linux ubuntu avec apache mysql et tout le reste et la cela fonctionne à merveille. qu’elle pluglins merveilleux il m’aide énormément à la compréhension du php merci aux créateurs.
      merci à tous cordialement alain cousin.

    Répondre à ce message

  • 3

    Bonjour. Est-il possible d’ajouter un champs input de type file depuis l’interface de saisie de la fabrique ou bien est-il nécessaire de modifier manuellement les fichiers dans le répertoire formulaires ?
    Merci.

    • Bonjour,

      Il ne me semble pas encore possible d’ajouter de champs de ce type dans la fabrique en voyant ceci : http://zone.spip.org/trac/spip-zone/browser/_plugins_/saisies/saisies

      Il faut le faire à la mano…

    • Je corrige un peu ce que j’ai dit, ou du moins précise.

      Dans la mécanique de SPIP, l’ajout de fichiers (images, documents, etc.) à des objets éditoriaux se fait par l’intermédiaire des documents joints, implémentés en natif.
      Donc, il suffirait dans votre configuration d’activer les documents joints sur votre nouvel objet.

    • Merci Teddy. Oui j’avais pensé à cela mais je me suis finalement inspiré du mécanisme de médiathèque pour lier des vignettes à des documents.

    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