SPIP-Contrib

SPIP-Contrib

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

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

Accueil > Outils pour plugins > Fabrique > La Fabrique

La Fabrique

20 avril 2012 – par Matthieu Marcillaud – 308 commentaires

101 votes

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

La Fabrique est un outil de construction de plugin spécialement orientée pour la gestion d’objets éditoriaux. Pour ceux qui ont connu le plugin « Chat » ou « Chat2 », sachez que la Fabrique sait gérer tout ce qui est présent dans ce tutoriel / plugin, et même au-delà, bien au-delà.

N’allez pas trop vite !

Cette note est aussi présente lors de l’installation du plugin, mais redisons le encore :

  • la Fabrique crée un code fonctionnel mais qui ne répondra peut être pas à 100% de vos attentes. La Fabrique ne peut pas tout faire. À vous d’adapter ensuite le code généré.
  • un plugin est très vite fait grâce à la Fabrique. Mais attention : le code n’est qu’une partie d’un plugin. Si vous voulez que votre plugin perdure dans le temps, il faut qu’il soit utile, partagé, documenté, traduit, il faut assister les utilisateurs, et maintenir son code avec les évolutions de SPIP et c’est tout cela aussi un plugin !
  • la Zone de SPIP permet de collaborer sur les plugins. Essayez au maximum de ne pas créer des plugins existant déjà, pour éviter des doublons qui peuvent disperser d’autant les énergies pour toutes les tâches citées au point précédent.

Pré-requis

Pour faire fonctionner la Fabrique il faut :

  • PHP >= 5.3 (il est possible que 5.2 fonctionne aussi)
  • SPIP 3.0-RC minimum
  • Un navigateur récent (testé avec FF11 et Chrome 18.0)
  • Saisies >= 0.25
  • Et peut être un système Unix/Linux pour son serveur (appel de exec('diff') en PHP) [1]

Optionnellement mais conseillé :

Démonstration vidéo

Dans la vidéo suivante, vous verrez une présentation de la Fabrique impliquant la construction d’un plugin « Félins » dans lequel nous créons 1 objet éditorial « Chats ».
Cette vidéo est aussi disponible en meilleure qualité sur medias.spip.net

Présentation de la Fabrique en vidéo

Accéder à la fabrique

Depuis SPIP 3.1, La fabrique est accessible dans le menu de développement (il faut activer l’option de vos préférences personnelles pour voir ce menu)

Documentation

En attendant une documentation plus riche ici, vous pouvez lire ces articles :

Capture d’écran

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

À tester

« La Fabrique » débute sa vie publique et doit être testée dans différents environnements. Vous êtes donc invités à explorer cet outil développé maintenant sur la Zone [2]

Limitation connue

Actuellement (version 1.16.3), à partir d’un certain nombre d’objets et de champs (environ 10 objets * 8 champs ici), le formulaire devient naturellement inopérant à cause d’une limitation voulue de PHP : max_input_vars, par défaut à 1000 dans php.ini.
Pour contourner, il faut modifier php.ini pour tolérer plus de champs (5000) par exemple.

Attention

Depuis le version 2.0.0 le menu de la fabrique se trouve dans celui de Développement. Celui-ci est activable depuis l’espace préférence de l’utilisateur.

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

Notes

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

Dernière modification de cette page le 20 janvier 2017

Retour en haut de la page

Tout afficher

Vos commentaires

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

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

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

    Merci !

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

      Oui et non.

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

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

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

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

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

      MM.

    Répondre à ce message

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

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

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

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

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

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

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

      effectivement

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

      merci
      pam

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

      Bonjour,

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

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

      Une idée ?

    Répondre à ce message

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

    bonjour

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

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

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

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

    merci d’avance d’une piste...

    pam

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

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

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

      c’est fait...

      http://spip.pastebin.fr/50123

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

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

      merci

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

      Ah voilà une blague quelle est bonne :)

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

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

    Répondre à ce message

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

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

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

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

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

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

    Merci d’avance pour vos lumières

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

      Bonjour joz,

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

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

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

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

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

    Répondre à ce message

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

    Bonjour,

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

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

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

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

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

      Merci.

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

      Ça fonctionne, merci.

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

    Répondre à ce message

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

    Bonjour,

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

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

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

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

    Actuellement, mes versions :

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

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

    Merci pour votre aide

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

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

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

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

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

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

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

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

      Merci beaucoup et encore bravo pour ce plugin !

    Répondre à ce message

  • Le 31 août 2016 à 05:47, par Jean En réponse à : La Fabrique

    J’ai ajouté dans la déclaration :

    1. 'url_voir' => 'concours',
    2. 'url_edit' => 'editer_concours',

    Télécharger

    ça semble résoudre la bizarrerie ?exec=concour qui donne page introuvable
    et pour le bouton de création rapide qui ne fonctionnait pas, dans paquet.xml régler l’URL concours_creer action=« editer_concours »

     ?exec=concours toujours Accès interdit
    qui serait peut-être causé par ? (les autorisations sont laissées par défaut et « échafauder » les fichiers tout est coché)

    1. [(#ENV**{exec}|=={concours_edit}|?{#INCLURE{fond=prive/squelettes/contenu/concours_edit,redirect='',env,retourajax=oui},#REM|sinon_interdire_acces})]

    En effet, prive/squelettes/contenu/concours_edit.html n’existe pas ...

    Pas faciles les exceptions de la langue française ... un concour, des concours c’est bien aussi :-)
    Prochain exemple de plugin pour suivre le plugin Chats : le plugin Chevaux !

    • Le 31 août 2016 à 09:32, par Matthieu Marcillaud En réponse à : La Fabrique

      Hum, je pense que tu ferais mieux de laisser url_voir à ’concours’ et url_edit à ’concours_edit’.
      Par contre, tu pourrais faire comme Gis pour la page qui liste l’ensemble des concours, c’est à dire l’appeler elle ’concours_tous’.

      C’est un cas que je n’ai pas testé avec la Fabrique d’avoir un objet avec un s final au singulier et pluriel. Le cas cheval / chevaux doit poser moins de souci, de même que jeu / jeux (singulier différent du pluriel donc).

      Il y a des choses à améliorer…

    • Le 7 septembre 2016 à 04:26, par Jean En réponse à : La Fabrique

      Merci pour ta réponse Mathieu
      Le ’s’ pose d’autres problèmes que je ne peux pas résoudre, j’ai laissé sans s au singulier, tant pis

    Répondre à ce message

  • Le 20 septembre 2015 à 13:33, par blablabla En réponse à : La Fabrique

    Bonjour,

    d’abord merci pour ce plugin !!!

    un petit complément à la doc, pour celles et ceux qui galèrent à afficher les nouveaux objets liés à un mot clé. Pour faire ça, il faut une jointure sur la table mots_liens. Or la jointure automatique avec le critère {id_mot} est ambiguë... elle se fait sur la table objets_liens. Pour contourner ça, il suffit de préciser sur quelle table on veut la jointure en mettant le critère {mots_liens.id_mot}

    • Le 30 août 2016 à 11:38, par joz En réponse à : La Fabrique

      Bonjour,
      Est-ce que je comprends bien que cet info est obsolèthe ?
      Je vois que le lien avec le mot-clé est stocké dans la table mots_liens.

    • Le 30 août 2016 à 12:38, par Matthieu Marcillaud En réponse à : La Fabrique

      Non joz, l’info n’est pas obsolète ; seulement tu as mal compris ce qu’il exprime.
      Si tu demandes à créer la table de lien pour ton objet éditorial xxx soit donc spip_xxx_liens, les mots s’enregistrent toujours évidement dans spip_mots_liens ; cependant le critère (XXX){id_mot} ne sait lui, pas forcément toujours s’il doit utiliser comme table de jointure spip_xxx_liens ou spip_mots_liens ; et par défaut ça va prendre le plus court chemin de jointure, le plus près de l’objet éditorial d’origine. Une explication plus détaillée là : http://marcimat.magraine.net/SPIP-3-Documents-Mots

      En alternative tu peux aussi déclarer préférer utiliser la jointure sur spip_mots_liens par défaut pour ton objet ; c’est ce que fait le plugin mots avec la table des auteurs là : http://zone.spip.org/trac/spip-zone/browser/_core_/plugins/mots/base/mots.php#L199 (modification introduite par http://zone.spip.org/trac/spip-zone/changeset/53744)

    • Le 31 août 2016 à 09:40, par joz En réponse à : La Fabrique

      ah ok !
      merci pour l’éclaircissement :)

    Répondre à ce message

  • Le 26 août 2016 à 12:34, par Jean En réponse à : La Fabrique

    Salut, je crée un objet « Concours » :
    Nom pluriel : Concours
    Nom singulier : Concours

    ça m’affiche des id_concour, supprimer_concour.php, ’type’ => ’concour’, ... sans le ’s’ à la fin, c’est normal ?

    Cordialement

    • Le 30 août 2016 à 17:52, par Matthieu Marcillaud En réponse à : La Fabrique

      Le nom pluriel ou singulier sert juste à la création des chaînes de langue ; pas à la création du nom du champ dans la table.

      Ici tu es dans le cas d’une table un peu spéciale dont tu voudrais id_concours ; c’est ce que j’ai nommé dans la Fabrique une « Table hors norme » il me semble.
      Dans la déclaration de l’objet dans la Fabrique :

      • Table > Spécificités de tables hors normes > clé primaire => adapter id_concour à id_concours
      • et type de l’objet au même endroit, je pense qu’il faut mettre ’concours’

      Cela devrait te générer quelque chose de plus adapté. Enfin dans base/concours.php il te faudra peut être adapter (il me semble que la Fabrique crée un code à peu près correct), par exemple en suivant le code de GIS pour les surnoms, qui a la même contrainte (gis, id_gis) :
      http://zone.spip.org/trac/spip-zone/browser/_plugins_/gis/trunk/base/gis.php#L27

      1. $tables['spip_gis'] = array(
      2. /* Declarations principales */
      3. 'table_objet' => 'gis',
      4. 'table_objet_surnoms' => array('gis'),
      5. 'type' => 'gis',
      6. 'type_surnoms' => array('gi'),

      Télécharger

      Notamment le dernier type_surnoms doit avoir la valeur sans s final !

    • Le 31 août 2016 à 04:54, par Jean En réponse à : La Fabrique

      Merci beaucoup Mathieu pour ta réponse
      Effectivement c’était prévu dans « Table hors-normes », my bad

      Dans base/concours.php, il n’y a pas de ’surnom’, j’ai d’ailleurs fait une recherche dans tous les fichiers du plugin, ’surnom’ n’apparaît nul part, ni ’table_objet’

      La déclaration commence par :

      1. function concours_declarer_tables_objets_sql($tables) {
      2.  
      3. $tables['spip_concours'] = array(
      4. 'type' => 'concours',
      5. 'principale' => "oui",
      6. 'field'=> array(
      7. 'id_concours' => 'bigint(21) NOT NULL',
      8. 'titre' => 'text NOT NULL DEFAULT ""',

      Télécharger

      Maintenant j’ai /ecrire/ ?exec=concours : Accès interdit
      Et bizarrement : /ecrire/ ?exec=concour amène sur la gestion de l’objet
      Hors concour.php n’existe pas, on a bien base/concours.php

      J’ai désinstallé le plugin, vérifié que le table était supprimée, vidé le cache, réinstallé, vidé /tmp à la main

       ?exec=concour&var_mode=debug me montre qu’un squelette ../tmp/cache/scaffold/contenu/concour.html est appelé qui donne :
      #ENV
      exec  : concour
      date  : 2016-08-31 04:45:14
      date_default  : 1
      date_redac  : 2016-08-31 04:45:14
      date_redac_default  : 1
      type-page  : concour
      composition  :
      lang  : fr
      espace_prive  : 1

      J’ai vérifié qu’il n’y a pas de concour.* dans le plugin et il n’y a pas de fichier qui contienne concour sans ’s’ ...

      J’ai aussi essayé d’ajouter les mêmes champs que gis :

      1. function concours_declarer_tables_objets_sql($tables) {
      2.  
      3. $tables['spip_concours'] = array(
      4. 'type' => 'concours',
      5. 'principale' => "oui",
      6. 'table_objet' => 'concours',
      7. 'table_objet_surnoms' => array('concours'),
      8. 'type_surnoms' => array('concour'),
      9. 'field'=> array(
      10. 'id_concours' => 'bigint(21) NOT NULL',

      Télécharger

      ça rend le même résultat

    Répondre à ce message

  • Le 17 août 2016 à 16:55, par Alexandre Tomas En réponse à : La Fabrique

    Bonjour,

    J’ai créé avec succès des nouveaux objets éditoriaux avec votre plugin et qui fonctionnent parfaitement.

    Cependant je me suis aperçu que du côté privé, n’importe quel rédacteur pouvait librement modifier ces nouveaux objets éditoriaux sans en être l’auteur pour autant.

    Il y a-t-il un champ sql ou des champs sql spécifique(s) à créer pour qu’un nouvel objet éditorial puisse n’être modifié que par son auteur ?

    Merci et bonne journée.

    • Le 17 août 2016 à 17:13, par Alexandre Tomas En réponse à : La Fabrique

      J’ajouterai que paradoxalement la table spip_auteurs_liens référence bien les nouveaux objets éditoriaux avec une juste correspondance id_auteur-id_objet-objet. Alors peut-être le manque se situe-t-il côté privé. Le cas échéant dois-je créer un formulaire côté privé pour chacun de mes nouveaux objets éditoriaux et qui vérifie réellement qui est l’auteur (avant de proposer une modification) ? Si je trouve entretemps, je réponds ici-même..

    • Le 17 août 2016 à 20:41, par Matthieu Marcillaud En réponse à : La Fabrique

      Dans la partie de la Fabrique qui crée l’objet éditorial, il est possible de modifier déjà quelques paramètres d’autorisations, dans le cadre donc « Autorisations ».

      Cependant le choix de ne permettre la modification que par les auteurs appartenant à l’objet n’est pas présent. C’est un manque à mon avis. Il faudrait je suppose également donc un choix de plus, tel que "Être auteur sur l’objet éditorial ou être au moins administrateur ou administrateur restreint sur la rubrique"… C’est à dire à peu près comme cela se passe sur les articles.

      Sinon, donc, on parle d’autorisations, la Fabrique ne fait que créer les fonctions d’autorisations qu’il est possible d’adapter donc ensuite. Ça se passe dans le fichier généré prefixe_autorisations.php, particulièrement donc sur l’autorisation ’modifier’.

      Il faut s’inspirer d’autres plugins / autorisations pour adapter le code dans votre plugin. Par exemple :
      -  https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/autoriser.php#L653
      -  http://zone.spip.org/trac/spip-zone/browser/_plugins_/albums/branches/v2/albums_autorisations.php#L88
      -  http://zone.spip.org/trac/spip-zone/browser/_plugins_/itineraires/trunk/itineraires_autorisations.php#L82

    • Le 18 août 2016 à 00:26, par Matthieu Marcillaud En réponse à : La Fabrique

      Je viens d’ajouter une nouvelle option d’autorisation qui permet de tester l’auteur de l’objet éditorial. http://zone.spip.org/trac/spip-zone/changeset/99199

      Ça répond en partie à la problématique. Là le statut de l’objet éditorial n’est pas testé, du coup, un rédacteur auteur de son objet peut l’éditer même s’il a été publié (contrairement aux articles).

      En tout cas c’est déjà mieux qu’avant.

    • Le 18 août 2016 à 11:51, par Matthieu Marcillaud En réponse à : La Fabrique

      La version 2.2.0 ajoute 2 nouvelles options d’autorisations en plus, dont une qui est comme le fonctionnement des articles. http://zone.spip.org/trac/spip-zone/changeset/99203

    • Le 18 août 2016 à 13:30, par Alexandre Tomas En réponse à : La Fabrique

      Merci pour tous ces efforts.

      J’ai fait la mise à jour de la fabrique, j’ai recréé mes 2 objets éditoriaux à partir de la sauvegarde du fichier fabrique_[monplugin].php, j’ai pu recréé le plugin de mes 2 objets éditoriaux toujours avec succès mais au final rien n’est changé. N’importe quel rédacteur peut toujours modifier l’objet qui ne lui appartient pas.

      Donc de mon côté je n’ai aucune différence, l’auteur de l’objet éditorial n’est pas testé côté privé apparemment, tout comme avant.

      Peut-être ai-je mal compris ce qu’apportait la mise à jour ?

      Pour mon nouvel objet information par exemple, je suis tombé sur le fichier prive/squelettes/contenu/information.html, et c’est bien sur cette page que je trouve l’autorisation de modifier mon information puisque concrètement c’est là qu’apparaît le bouton de modification alors qu’il ne devrait pas s’y trouver quand nous ne sommes que simple rédacteur et pas l’auteur de l’information.

      Tout à l’air de se passer ici :

      1. [(#AUTORISER{modifier,information,#ID_INFORMATION})
      2. [(#ID_INFORMATION|afficher_qui_edite{information}|non)
      3. [(#URL_ECRIRE{information_edit,id_information=#ID_INFORMATION}|icone_verticale{<:information:icone_modifier_information:>,information,edit,right ajax preload})]
      4. ]
      5. [(#ID_INFORMATION|afficher_qui_edite{information}|oui)
      6. [(#URL_ECRIRE{information_edit,id_information=#ID_INFORMATION}|icone_verticale{#ID_INFORMATION|afficher_qui_edite{information},warning-24,'',right edition_deja ajax preload})]
      7. ]
      8. ]

      Télécharger

      Je peux certainement faire un bricolage pour sauver les meubles en attendant mieux, mais s’il était possible de revoir ce bout de code pour que seul l’auteur de l’information (ou l’administrateur) puisse avoir le droit de modifier ce serait formidable.

      Sinon je m’inspirerai des autres plugins comme suggéré, mais ça va être beaucoup plus difficile à comprendre...

    • Le 18 août 2016 à 13:40, par Matthieu Marcillaud En réponse à : La Fabrique

      Il ne s’agit pas seulement de faire la mise à jour.

      Sur la fabrique, dans la description de l’objet éditorial « Informations » il y a un accordéon nommé « Autorisations ». Dedans, il y a des sélecteurs pour plusieurs types d’autorisations (créer, modifier, supprimer…). Il faut que tu modifies la sélection sur « Modifier » pour le mettre sur "Auteur de l’objet" ou "Auteur de l’objet sauf si publié"… Et de régénérer le plugin. L’avais tu fais ?

    • Le 18 août 2016 à 18:24, par Alexandre Tomas En réponse à : La Fabrique

      Ca marche ! Effectivement dans l’accordéon « Autorisations » j’avais laissé les réglages par défaut... J’ai cette fois régénéré le plugin en spécifiant modifier->Être auteur de l’objet ou au moins administrateur complet.

      Et maintenant donc plus de souci, le rédacteur reste à sa place et ne peut plus inopinément modifier un objet éditorial qu’il n’a pas créé, ni trafiquer son statut.

      Merci infiniment pour ces réponses très rapides !! Bonne fin de soirée !

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?
  • [Se connecter]

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

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

Retour en haut de la page

Ça discute par ici

  • Court-circuit 2

    17 octobre 2011 – 76 commentaires

    Court-circuit 2 permet de rediriger certaines rubriques vers un article particulier. Vous pouvez configurer, dans l’espace privé, les règles de redirection à appliquer. Historique Court-circuit 2 est une évolution de Court-circuit 1, reprenant (...)

  • Créer des squelettes avec Zcore

    14 juillet 2015 – 19 commentaires

    Ou comment bien démarrer avec Zcore. Avec SPIP 3.0 est venu le plugin Zcore développé par un collectif de spipeurs. De plus en plus d’utilisateurs adoptent la mécanique de « Z » pour leurs squelettes. Un premier article a été écris pour expliquer la (...)

  • Envoyer des fichiers avec un formulaire Formidable

    2 janvier – 32 commentaires

    La version 3.0.0 du plugin Formidable permet de créer des formulaires comprenant des envois de fichiers. Cet article regroupe la documentation relative à cette fonctionnalité. Pour une présentation générale de Formidable, voir « Formidable, le (...)

  • Grappes 1.0

    23 novembre 2012 – 27 commentaires

    Présentation et nouveautés Cette version 1.0 du plugin Grappes est un portage pour SPIP 3.x. Le plugin permet de grouper des objets de SPIP dans des grappes. Les objets du core (articles, rubriques, auteurs, etc.) sont pris en charge, ainsi que (...)

  • NoSPAM

    20 novembre 2008 – 277 commentaires

    Un plugin pour limiter le risque de spam dans les forums de SPIP.

Ça spipe par là