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

  • 12
    roger burton

    Bonjour,

    tout simplement exceptionnel.

    Je cherche le meilleur moyen pour faire deux choses :
    1/ via une table de jointure lier un objet X à un autre objet X. malheureusement dans le panneau de config « liaisons », cette possibilité n’existe pas (toutes les tables sont présentes sauf celle que l’on est en train de créer)
    2/ dans une liaison (table jointure) j’aimerais ajouter un champ qui spécifie la liaison (une colonne supplémentaire en plus de id_machin, type_objet, id_objet) ?

    Si vous avez une idée de départ ... merci d’avance.

    par ailleurs, ce serait bien que :
    1/ le code génère automatiquement un sélecteur pour un nouvel objet éditorial, sur le modèle du sélecteur saisies-auteurs
    2/ quand je fais une liaison de l’objet X à l’objet Y (créé dans le même plugin), et que je souhaite faire une liaison de Y vers l’objet X (seule possibilité automatique pour que la possibilité de liaison soit présente dans chaque l’interface de chaque objet), deux tables de jointure sont créées. il y a moyend e faire avec mais c’est pas optimum.

    Mais c’est vraiment terrible comme plugin !!!
    Mille mercis

    R. Burton

    • 1.1)
      Il me semble que j’avais amélioré ce point en permettant d’attraper un objet en cours de création. Sinon, la solution est le de : créer le premier objet, activer le plugin, revenir sur la fabrique, et continuer la création : le premier objet est alors sélectionnable car connu de SPIP.

      1.2)
      Il n’y a aucune API graphique pour gérer ces champs là. par contre l’API editer_liens en SPIP/php le gère. Il suffit d’ajouter le champs à la table de liaison (mais ce n’est pas à la Fabrique de gérer un cas particulier comme ça).

      2.1)
      La saisie auteurs du plugin saisie n’est vraiment adapté que s’il n’y a que peu d’auteurs. Je vois pas en quoi générer ce type de saisie serait bien.

      2.2)
      Les liaisons X -> Y et Y -> X ne sont pas les même choses. Le cas typique est :
      -  Attacher des mots sur des documents, ou des documents sur des mots clés. La table de liaison n’est pas la même. Par défaut dans la fabrique, si on demande de lier à autre chose, il prend la même table, et ne fais le truc que dans 1 sens, par exemple en mettant le formulaire X->Y sur l’objet X. Si tu veux la même liaison sur l’objet Y (X->Y) il faut l’ajouter à la main dans le pipeline après la construction du plugin.

    • rburton

      Bonjour,

      D’abord merci pour cette réponse rapide.

      1.1 hé bien non. Je crée l’objet x, je crée le plugin, je reviens sur la fabrique,
      objet x : dans l’onglet liaisons, l’objet x n’apparaît pas. (il apparaît évidemment dans les autres objets, y, z, etc.)

      1.2 le seul fait d’ajouter ledit champ à la table de lien ne suffit pas à spip pour en afficher l’input dans le formulaire d’édition de liens. Mais ok, c’est pas à la Fabrique :-). je chercherai.

      2.1 ok en plus mal conceptualisé de mon coté

      2.2 merci du tuyau.

      votre plugin est balèze ! vraiment.

      RB

    • Pardon, j’avais mal compris 1.1
      Effectivement je n’ai pas permis de lier un X dans un X. Quel est l’intérêt ? À part peut être créer des bugs ? Non, pour gérer une hierarchie (si c’est pour cela), il faut ajouter et gérer un champ « id_parent » dans la table X.

    • Sinon, pour le 2.1, c’est loin d’être sot de proposer en option une saisie utilisable. Juste que la saisie auteurs du plugin saisie est un sélect qui ne s’adapte pas au nombre d’élément contenu dans la table et ceci ne va pas.

      Une autre idée est de faire générer des pages publiques de contenu, au format Z. Enfin ça urge pas, et ptet que des bonnes volontés voudrons améliorer la Fabrique pour le faire, maintenant que le mécanisme de construction est à peu près en place.

    • rburton

      Bonjour,

      pour 1.1
      j’ai trouvé la parade via une table tierce, mieux adaptée en fait.

      pour 2.1 la question des saisies. Je vais plancher pour élaborer une nouvelle saisie pour des objets susceptibles d’être très nombreux. si ça marche, je proposerai un commit sur saisies, et ce sera donc j’imagine disponible automatiquement dans fabrique.

      pour toucher à La Fabrique, me faudra du temps pour démonter ce que vous avez mis si ingénieusement en place. Ce sera pour beaucoup plus tard :-)

      J’ai lu vos deux articles sur Marcimat. Excellent pour conserver ses propres modifs au plugin créé via Fabrique, tout en continuant à le développer via Fabrique.

      Grand merci
      RB

    • Bonjour,

      je suis dans le même cas que vous c’est à dire « dans une liaison (table jointure) j’aimerais ajouter un champ qui spécifie la liaison » (le point 1.2) et je sèche.

      Voici où j’en suis :
      1- dans base/mon_plugin.php, j’ai ajouté le nouveau champ
      "nouveau_champ"        => "VARCHAR(6) DEFAULT 'non' NOT NULL",
      ...et le champ est bien là dans la table de liaison.
      2- dans prive/objet/liste/mon_plugin_associer.html, j’ai ajouté le champ input

      ...mais rien n’est enregistré dans la base de données.

      J’ai également exploré l’API editer_liens, mais je ne vois pas où il serait pertinent d’ajouter la fonction objet_associer.

      Avez-vous trouvé une solution ?

    • Bonjour,

      non pas réussi ...
      J’ai contourné le problème en créant un objet via La Fabrique, qui s’appelle « relation », et qui contient au moins un (chez moi plusieurs) champs de spécif de la relation.
      Cet objet est liable aux objets que je veux mettre en relation.

      ça complexifie un peu les boucles, mais ça marche.

      Attention, les tables de jointures ne sont pas « symétriques » si deux objets peuvent être associés l’un à l’autre à partir de chacun d’entre eux, il y aura deux tables à traiter pour retourner toutes les liaisons.

      Par ailleurs, la table jointure (en tous cas les boucles qui la traitent en cas de jointure automatique et l’interface privée) e permettent pas qu’une instance d’un objet soit liée à une autre instance du même objet.

      Bon travail,
      RB

    • Bonjour,

      et merci pour ce retour d’expérience.

      J’ai fini par trouver une solution à mon problème de qualification de la relation.
      Il était assez simple : il s’agissait pour une fiche film de dire qui est le réalisateur et/ou le scénariste, sachant qu’une même personne peut avoir à son actif plusieurs films, un film peut avoir été co-écrit et co-réalisé par deux personnes différentes, etc.

      Mon plugin créé un objet éditorial « Créateurs » avec le nom et la bio de la personne,et depuis la fiche film (un article SPIP), on lie le ou les créateurs en précisant si ils sont réalisateur et/ou scénariste.

      1- j’ai rajouté les deux inputs correspondants dans le fichier mon_plugin/prive/objets/liste/mon_plugin_associer.html
      2- j’ai créé un fichier mon_plugin_options.php dans lequel j’ai placé une surcharge de la fonction formulaires_editer_liens_traiter() (qui se trouve à l’origine dans prive /formulaires/editer_liens.php)
      La surcharge consiste à faire un _request(’mon_champ’), puis à passer cette valeur dans la fonction objet_associer du paragraphe « if ($ajouter’) »

      Todo : j’ai encore à trouver une solution si le rédacteur utilise le bouton « Créer et associer un nouveau créateur »

      Un grand merci pour ce plugin qui m’à fait gagner un temps considérable

    • Intéressant.

      Je vais sûrement faire dans les jours à venir un plugin pour permettre de gérer un peu des rôles sur les liens, et permettre à la Fabrique de créer les squelettes avec.

      Je serais néanmoins intéressé pour voir comment ça rend chez toi et le code que tu as utilisé.

      Enfin je n’avais pas pensé à ce bouton « créer et associer... ». Peut être dans ce cas devrait il y avoir une valeur par défaut du rôle à la création.

    • Je mis le code et des copies d’écran sur http://www.akilia.net/Nouvel-objet-editorial-Createurs-pour-SPIP

      Pour le bouton « créer et associer... » une valeur par défaut est nécessaire mais pas suffisante. J’ai mis par défaut la valeur "non". Ainsi, à la création d’une relation, la personne n’est donc ni scénariste, ni réalisateur. Il faut alors « Retirer le créateur », le qualifier puis l’ajouter. Faut que je trouve qqc de mieux !

      autre todo : rendre obligatoire la sélection d’au moins une des deux cases à cocher. Un petit jQuery fera l’affaire je pense

    • Je reviens sur ce point.

      J’ai envoyé aujourd’hui une adaptation de la Fabrique pour gérer de façon expérimentale des « rôles » sur des tables de liaison.

      Ce que génère la Fabrique nécessite alors le plugin « Roles » qui est le résultat pour SPIP 3.0 de la discussion abordée là http://thread.gmane.org/gmane.comp.web.spip.devel/63059 et dont une documentation est présente là http://contrib.spip.net/ecrire/?exec=article&id_article=4199

      Dans le textarea prévu on peut par exemple saisir :

      participant,Participant
      organisateur,Organisateur
      formateur,Formateur

      Le premier de la liste étant celui qui sera le rôle par défaut. Tous les rôles sont alors permis sur les objets de liaison cochés. Évidement comme toujours avec la Fabrique, le code créé est une base de travail simple que vous devrez certainement adapter ensuite à votre gré.

    Répondre à ce message

  • 2

    bonjour,
    Je souhaite que seuls les auteurs (administrateurs, auteurs OU visiteurs) d’un objet donné puissent le voir côté public.
    Je suppose que ça se passe dans la fonction :

    function autoriser_monobjet_voir_dist($faire, $type, $id, $qui, $opt) {
            ???
    }

    mais que dois-je mettre pour vérifier que l’utilisateur connecté est auteur de l’objet ?

    J’ai bien pensé au plugin accès restreint mais mon nouvel objet éditorial n’est pas dans une rubrique. y a-t-il moyen de déclarer à acces restreint qu’il y a un autre type d’objet à prendre en compte en dehors de toute rubrique ?

    • Il faut récupérer les liens de la table spip_auteurs_liens avec ton objet, et comparer avec $qui['id'] de la personne connectée.

      Tu peux donc jouer avec la fonction de action/editer_liens (http://www.spip.net/fr_article5477.html) : objet_trouver_liens($objets_source,$objets_lies)

      Tu peux aussi regarder dans inc/autoriser, il doit y avoir des exemples également avec sql_select() peut être.

    • merci pour le tuyau
      sur le principe je vois vaguement mais concrètement je ne sais pas comment faire.
      cette fonction objet_trouver_liens($objets_source,$objets_lies) je ne vois pas comment ça marche ni où la placer.

      d’avance merci pour ton aide

    Répondre à ce message

  • Pierre-Philippe

    Félicitations pour ce plugin !
    Quel gain de temps !

    Répondre à ce message

  • 2

    Bonjour,
    soit une table avec 2 champs date : date_publication et date_echeance.
    afin de pouvoir utiliser le critère age relativement à date_echeance dans une boucle, j’ai choisi
    dans la fabrique : Champ SQL de date = date_echeance

    (
    Si j’ai bien suivi c’est ce qui fait que j’obtiens dans /base/monplugin.php :
    function kaye_declarer_tables_objets_sql($tables)
    ...
    $tables[’spip_matable’] = array(
    ...
    ’date’ => « date_publication »,
    ...
    C’est ça ? je demande car en réalité j’ai fais la modif à posterori et je veux être certain de n’avoir rien oublié
    )

    Petit problème : dans l’espace privé, la page d’affichage de l’objet exec=mon_objet&id_mon_objet=x
    j’obtiens un cadre DATE DE PUBLICATION EN LIGNE : XX-XX-XXXX
    qui affiche la date d’écheance et non pas la date de publication

    je comprend la logique du système mais ça génère quelque chose d’incohérent pour l’auteur de l’objet.

    y a t-il un moyen de corriger cela ?

    d’avance merci

    • je voulais écrire ’date’ => « date_echeance »,

    • Non, date gère à la fois le statut de publication ET le champ par défaut des criteres ages.
      Je t’invite à utiliser les mêmes critères suivi du nom du champ que tu veux (xx dans date_xx) : {age_echeance} {mois_echeance} etc. ou {age_relatif_echeance} {mois_relatif_echeance}, etc. ... .

    Répondre à ce message

  • 5

    Bonjour,
    Très intéressant ce plugin.
    Son utilisation ne me permet pas cependant de corriger un bug déjà rencontré lors de la création d’un plugin « en dur » :
    -  lorsque je permets l’ajout de document à un objet éditorial et que je crée un nouvel objet, j’arrive bien à « téléverser » un document sélectionné. Mais lorsque j’enregistre ce nouvel objet, le document n’est pas lié à l’objet. Dans la table documents-lien, l’id_objet est =-1...
    -  Si une fois l’objet crée je fais « ajouter un document », alors cela fonctionne.

    Il y a donc un problème pour les nouveaux objets, que l’on ne rencontre pas pour les nouveaux articles.
    Merci de votre aide

    Répondre à ce message

  • 1

    Encore deux questions :
    Quand on a fait un plugin avec la fabrique puis modifié ce plugin à posteriori (à la main), est-il possible d’éditer à nouveau le plugin dans la fabrique sans perdre les modifs faites à la main ?

    Soit plugin avec 2 objets, dans le formulaire de saisie du premier objet comment intégrer une liste déroulante de sélection des occurrences du second objet.
    Pour l’instant j’édite à posteriori et ajoute une boucle dans un select, mais je ne bénéficie pas du traitement de l’erreur comme avec les autres saisies ?
    Y a-t-il un moyen simple de faire un sélecteur d’objet ?

    D’avance merci

    PS : c’est extra la fabrique, je n’arrive pas à décrocher

    • 1) Non.
      2) Ça dépend. Entre autres du nombre d’éléments possible dans la saisie : trop, il faut un chargement ajax avec recherche par exemple, sinon, un select avec 10000 éléments, c’est pas pratique, et en plus ça rame.

      Je t’invite à lire ou relire http://marcimat.magraine.net/?article361

      Y est expliqué une façon de faire pour :

      • qu’après la création du plugin, la Fabrique modifie ses fichiers (je m’en servais donc pour remettre du code que j’avais modifié ultérieurement)
      • faire une saisie ville / insee

      MM.

    Répondre à ce message

  • 3

    Pour les rédacteurs et les admin restreints, le bouton de création d’un nouvel objet n’apparaît pas dans les outils rapides.
    Voici les autorisations générées :

    ...
    // bouton de menu
    function autoriser_devoirs_menu_dist($faire, $type, $id, $qui, $opts){
    	return true;
    } 
    // bouton d'outils rapides
    function autoriser_devoirscreer_menu_dist($faire, $type, $id, $qui, $opts){
    	return autoriser('creer', 'devoir', '', $qui, $opts);
    } 
    // creer
    function autoriser_devoir_creer_dist($faire, $type, $id, $qui, $opt) {
    	return in_array($qui['statut'], array('0minirezo', '1comite')); 
    }
    ...

    J’ai pensé qu’il manquait un _ entre devoirs et creer dans autoriser_devoirscreer_menu_dist, mais ça n’a rien changé.
    Une solution ?
    D’avance merci

    (ie 8, ff 11, fabrique 1.14)

    Répondre à ce message

  • 4
    vince_

    Salut à tous,
    Pour remonter une info qui pourra intéresser Matthieu, j’ai eu une erreur lorsque j’ai accédé pour la première fois à /ecrire/ ?exec=fabrique

    Erreur :
    Filtremb_strtoupper non défini
    Dans le fichier : ../plugins/fabrique/formulaires/fabriquer_plugin.html
    _tab_objets
    Ligne : 44

    Config SPIP 3.0.0-rc [19216]

    En espérant que ça puisse aider au dev.
    Bonne journée

    • vince_

      Re ;-)
      J’ai dorénavant cette erreur lorsque j’affiche /ecrire/ ?exec=fabrique.
      Pour avoir ce message jai tenté de créer un objet éditorial après création du plugin...
      Je précise que je suis bien en PHP 5.3 et base MySql

      Erreur :
      Fatal error : Call to undefined function mb_strtoupper() in /xxx/xxxxxxx/xxx/xxx/plugins/fabrique/fabrique_fonctions.php on line 535

      Bonne appétit tout le monde !

    • Bah écoute, je sais pas, cette fonction est dans le module PHP « mbstring » qui est logiquement dans PHP par défaut (http://www.php.net/manual/fr/mbstring.requirements.php)

    • vince_

      Merci pour ton suivi parfait ;-) Effectivement mbstring n’était pas installé par défaut sur une config « grand public ». Une fois installé tout roule.
      Si ce module php est vraiment important peux-tu indiquer la necessité d’installer ce module auparavant et/ou l’indiquer dans un message d’erreur ?
      Si ce module permet d’aller de l’avant ou est très important évitons de l’éviter... ;-) Je pense que ce module s’adressera à des personnes (dev ou « bidouilleurs » confirmés) qui sauront certainement l’installer ou vérifier qu’ils l’ont...

    Répondre à ce message

  • 4

    L’arrivée de spip 3 et la perspective de devoir reprendre mon plugin kaye m’angoissait heureusement la fabrique est arrivée. Merci Matthieu Marcillaud.

    J’ai un message d’erreur avec un champ date :
    « Une erreur technique a empêché l’enregistrement correct du champ ’date_echeance’. »
    Détails :
    -  Définition SQL : date NOT NULL DEFAULT ’0000-00-00’
    -  Type de saisie : date
    -  SPIP 3.0.0-rc
    -  La Fabrique 1.13.3
    -  mysql 5.1.40-0
    -  php 5.2.6

    Une idée ?

    Remarque : lorsque le message d’erreur s’affiche, on reste sur la page exec=objet_edit, pourtant les données sont postées. Le risque c’est que l’utilisateur poste x fois les données avant de s’apercevoir de quelque chose.

    Grand merci et bonne continuation

    • Je suppose que c’est un champ que tu as ajouté toi-même dans la liste des champs créés (c’est pas un date dans « champs spéciaux » donc.

      Il me semble que la saisie date ne modifie pas automatiquement ce qui est saisi pour le formater à ce qui est attendu par mysql (ie. ça envoie ’2012/12/04’ au lieu de ’2012-12-04’) ou un truc comme ça.

      Tu peux essayer déjà de passer non pas un date SQL, mais un ’datetime’ avec defaut ’0000-00-00 00:00:00’ mais a mon avis cela sera pareil.

      En fait, pour date, il va te falloir éditer à postériori le plugin, en utilisant le plugin « verifier » et en demandant une vérification de ce champ tout en le « normalisant ». Ça pourrait ressembler, dans ton verifier() du formulaire d’édition de l’objet à quelque chose comme ça :

      $erreurs = formulaires_editer_objet_verifier('chat',$id_chat, array('nom'));
      // verifier et changer en datetime sql la date envoyee
      $verifier = charger_fonction('verifier', 'inc');
      $champ = 'date'; 
      $normaliser = null;
      if ($erreur = $verifier(_request($champ), 'date', array('normaliser'=>'datetime'), $normaliser)) {
          $erreurs[$champ] = $erreur;
      // si une valeur de normalisation a ete transmis, la prendre.
      } elseif (!is_null($normaliser)) {
          set_request($champ, $normaliser);
      }
      return $erreurs;

      Cf. une utilisation dans champs extras http://zone.spip.org/trac/spip-zone/browser/_plugins_/champs_extras/core/trunk/cextras_pipelines.php#L200

      N’hésite pas à poster ici la solution que tu auras utilisé.

    • Et par ailleurs, tu dois pouvoir lire l’erreur SQL générée dans tmp/log/ prive_mysql.log ou prive_sqlite.log

    • Merci Matthieu, voici la solution que j’ai utilisée :
      j’ai installé le plugin vérifier, et j’ai édité (dans mon plugin) le fichier /formulaires/editer_truc.php
      Dans la fonction formulaires_editer_truc_verifier_dist
      j’ai remplacé return formulaires_editer_objet_verifier('truc',$id_truc, array('titre'));
      par

      $erreurs = formulaires_editer_objet_verifier('truc',$id_truc, array('titre'));
      // verifier et changer en datetime sql la date envoyee
      $verifier = charger_fonction('verifier', 'inc');
      $champ = 'date_echeance';
      $normaliser = null;
      if ($erreur = $verifier(_request($champ), 'date', array('normaliser'=>'datetime'), $normaliser)) {
      $erreurs[$champ] = $erreur;
      // si une valeur de normalisation a ete transmis, la prendre.
      } elseif (!is_null($normaliser)) {
      set_request($champ, $normaliser);
      }
      return $erreurs;

      Une automatisation par la fabrique ça serait super bien.

      Important : la définition sql doit être de la forme datetime NOT NULL DEFAULT ’0000-00-00 00:00:00’

      Autrement j’ai trouvé une autre solution (mais beaucoup moins satisfaisante) :
      j’ai copié le fichier /prive/formulaires/dateur/inc-dateur.html (de spip) vers /formulaires/dateur/inc-mondateur.html (de mon plugin). J’ai été obligé de renommer car la surcharge ne fonctionne pas. Dans ce fichier j’ai changé dateFormat : ’yy-mm-dd’

      J’ai ensuite édité mon fichier /formulaires/editer_truc.html en changeant le type de saisie date en input et en rajoutant la classe date

      [(#SAISIE{input, date_echeance,
      label=<:truc:label_date_echeance:>,
      class=date})]

      puis j’ai ajouté

      [(#INCLURE{fond=formulaires/dateur/inc-mondateur})]

      Ce n’est pas satisfaisant car il y a une surcharge et les utilisateurs voient la date (dans le champ de saisie) sous la forme 0000-00-00.

      Merci Matthieu

      PS : comment fait-on du « beau » code dans les commentaires ?

    • Pour du code (on a normalement des icones pour ça dans la barre d’icones au dessus du textarea, mais Cédric l’a désactivé suite à un bug sur contrib. J’ai pas réussi à reproduire, faudra que je me repenche dessus voir). Et donc, il faut insérer des :

      <cadre class='spip'>
      Pour du SPIP
      </cadre_>
      (sans le _ de fin !)
      
      <cadre class='php'>
      Pour du PHP
      </cadre_>
      
      et ainsi de suite.

    Répondre à ce message

  • 2

    Easyphp 5.3.8.0
    Firefox 11
    Windows 7 64 bit
    SPIP 3.0.0-rc [19299]

    J’ai créer un répertoire fabrique_auto dans le dossier plugins/auto
    J’ai voulu faire un test en faisant comme dans la vidéo dans un premier temps.
    J’ai rempli description et paquet comme dans la video, puis j’ai cliquer sur « creer un plugin », j’ai eu comme message :

    Warning : copy(../tmp/cache/fabrique/.backup/exports/fabrique_felins 2012-04-25 00:32:48.php) [function.copy] : failed to open stream : Invalid argument in C :\Program Files (x86)\EasyPHP-5.3.8.0\www\spipdev\plugins\auto\fabrique\v1.13.3\formulaires\fabriquer_plugin_actions.php on line 282

    Le plugin a été créé avec succès dans
    ../tmp/cache/fabrique/felins/

    Vous pouvez pour vous faciliter les tests créer un répertoire fabrique_auto accessible en écriture dans votre répertoire de plugins. Ainsi, les plugins créés seront aussitôt disponibles sur l’administration des plugins et activables.

    • Manifestement il y a plusieurs problèmes :
      1) il y a un caractère, peut être les « :» que Windows n’aime pas dans les copies. Enfin c’est étonnant. Si tu veux essayer de trouver la source du problème n’hésite pas.
      2) si tu as bien créé le répertoire fabrique_auto avec des droits d’accès suffisants pour le serveur, il n’aurait pas du le créer dans tmp/cache.

    • 1) - même pb systématique. si je trouve, je vous dis...
      2) - le dossier « fabrique_auto » est à créer dans plugins et non dans plugins/auto ;-)

    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