SPIP-Contrib

SPIP-Contrib

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

286 Plugins, 197 contribs sur SPIP-Zone, 255 visiteurs en ce moment

Accueil > Rédaction > Édition publique > Rédiger coté public > Utiliser et personnaliser le formulaire public d’ajout d’articles

Utiliser et personnaliser le formulaire public d’ajout d’articles

20 octobre 2009 – par acatonne – 14 commentaires

10 votes

Ceci est une « contribution pédagogique », qui montre par l’exemple comment développer une nouvelle fonctionnalité pour SPIP.

La procédure sous SPIP 2 pour mettre en place la proposition publique d’articles

Le projet pour lequel j’ai travaillé cette procédure est un dictionnaire de traduction. il y a donc la procédure pour la proposition publique d’articles et une partie traduction publique d’articles que je vous mets également.
L’ensemble est une synthèse d’informations de la liste et de tests personnels.

Par rapport à certaines propositions lues, on obtient bien dans l’espace public un formulaire d’ajout d’articles différent de celui utilisé dans l’administration (ecrire)

Environnement :
Un spip 209
Une organisation multilingue par secteur
Des internautes qui s’enregistrent sur le site (via l’inscription de rédacteurs)

EDIT : j’utilise ce travail ici : http://www.lecinedico.com. Merci de ne pas vous en servir pour tester via des faux mots

1/ Poser le cadre + la reconnaissance de l’auteur

Créer un squelette auteur_propose_art.html
On peut copier le squelette auteur.html pour modèle
Il appelle le formulaire et gère deux cas : proposer un article ou proposer une traduction
La boucle supérieure

  1. <BOUCLE_principale(AUTEURS) {id_auteur=#SESSION{id_auteur}}{tout}>
  2. ...
  3. </BOUCLE_principale>

Télécharger

L’internaute enregistré et loggué (via les formulaires standards de spip) est amené sur cette page via un lien, dans n’importe quel squelette :

  1. <a href="#URL_PAGE{auteur_propose_art,id_auteur=#SESSION{id_auteur}}">proposer un article</a>

Dans une boucle article, le lien proposer une traduction :

  1. <a href="[(#URL_PAGE{auteur_propose_art,id_auteur=#SESSION{id_auteur}}|parametre_url{lier_trad, #ID_ARTICLE})]">proposer une traduction</a>

2/ le formulaire proprement dit et sa gestion

Dans le squelette auteur_propose_art.html

  1. [(#ENV{lier_trad}|non) Proposer un article ]
  2.  
  3. <BOUCLE_a_traduire(ARTICLES){id_article=#ENV{lier_trad, 0}}{statut IN publie, prop}>
  4. [ proposer la traduction de (#TITRE)]
  5. </BOUCLE_a_traduire>
  6. </B_a_traduire>
  7.  
  8.  
  9. #FORMULAIRE_PERSO_AJOUTER_ART{oui,"1",#SELF,#ENV{lier_trad},"",""}

Télécharger

La gestion du formulaire
Dans le dossier squelettes/formulaires
copier les fichiers editer_article.html/editer_article.php de /prive/formulaires
les renommer en perso_ajouter_art.html et perso_ajouter_art.php

Dans perso_ajouter_art.php :
-  modifier les occurences « editer_article » en « perso_ajouter_art »
-  remplacer le contenu de la première fonction (dont le nom vient de changer) « formulaires_perso_ajouter_art_charger_dist » par :
_

  1. $contexte['_hidden'] = str_replace('editer_article', 'perso_ajouter_art', $contexte['_hidden']);
  2. // preciser que le formulaire doit etre securise auteur/action
  3. $contexte['_action'] = array('perso_ajouter_art',$id_article);
  4.  
  5. return $contexte;
  6.  
  7.  
  8. // unset($valeurs['id_rubrique']);
  9. return $valeurs;

Télécharger

Dans perso_ajouter_art.html :
Ajouter :

  1. <input type='hidden' name='statut' value='prop' />
  2. [<input type='hidden' name='lier_trad' value='(#ENV{lier_trad})' />]

Télécharger

EDIT : la langue de l’article est automatiquement récupérée de la rubrique dans une configuration multilingue, avec une langue par rubrique à la racine, et en admin le réglage « Activer le menu de langue sur les articles » sur non

NB : personnellement il me reste deux problèmes :
la liste des rubriques garde sa numérotation (pas de supprimer_numero)
la configuration automatique des champs du formulaire n’est pas prise en compte (?), mais on peut en effacer directement dans le perso_ajouter_art.html

Dernière modification de cette page le 26 novembre 2009

Retour en haut de la page

Vos commentaires

  • Le 22 décembre 2012 à 14:22, par Shaka En réponse à : Utiliser et personnaliser le formulaire public d’ajout d’articles

    Bonjour, grand merci pour cette intéressante contribution, je viens de l’appliquer ça marche correctement mais le formulaire que j’ai c’est pas celui que je désire, comme je suis débutant en spip je ne sais pas ou, modifier ce formulaire, ou tout simplement ou je peu trouver un formulaire, ou il n’y a que le :
    -  Nom
    -  Email
    -  Numero de téléphone
    -  titre du texte
    -  l’endroit ou mettre le texte
    -  l’endroit ou uploader une image
    -  envoyer

    et Quand le visiteur envois son article il y’a un message qui lui indique que son article a été envoyé.
    Je vous remercie.

    Répondre à ce message

  • Le 15 avril 2011 à 14:01, par jacangers En réponse à : Utiliser et personnaliser le formulaire public d’ajout d’articles

    bonjour,

    j’ai suivi scrupuleusement cette contibution …

    le formulaire s’affiche bien … mais la validation me ramene dans l’espace privé, sans avoir pris en compte mes champs ? qu’est ce que j’ai oublié dans la manip ?

    si je regarde dans le code source, dans le formulaire affiché voila ce que j’ai :

    1. <form method='post' action='/monsite/spip.php?page=auteur_propose_art&amp;id_auteur=397' enctype='multipart/form-data'>

    pourquoi est ce que la validation n’est pas bonne ?

    jacques

    Répondre à ce message

  • Le 7 novembre 2010 à 17:56, par  ? En réponse à : Utiliser et personnaliser le formulaire public d’ajout d’articles

    Bonjour,
    avez-vous tester cette contrib sous spip 2.1 ?
    Si oui est-ce que ça marche ?
    Car chez moi rien ne se passe.
    merci d’avance !

    Répondre à ce message

  • Le 27 juin 2010 à 18:10, par Zab En réponse à : Utiliser et personnaliser le formulaire public d’ajout d’articles

    Bonjour,

    bravo pour cette contrib qui est exactement ce que je cherchais.

    Il me manque juste deux fonctionnalités, que mes compétences en spip / php sont encore trop minces pour développer :

    -  si on essaye de proposer un article sans être enregistré, une page blanche s’affiche avec juste « # ». Comment afficher à la place, à la place du formulaire, « vous ne pouvez pas écrire un article sans être enregistré, inscrivez vous (lien de la page) » ?

    -  comment affecter à cet article des mots clés (j’en ai trois groupes)

    Merci

    Zab

    Répondre à ce message

  • Le 7 janvier 2010 à 12:18, par Perline En réponse à : Accès partie privée ? Téléchargement de fichier possible ?

    Bonjour,
    Très intéressante contribution.
    Une question : avec leur login/mot de passe les contributeurs peuvent donc voir la partie privée ?
    Si oui, y a-t-il moyen qu’ils ne travaillent que dans la partie publique ?
    Autre question : peut-on leur faire télécharger un fichier s’ils le veulent ?
    Je n’ai pas osé m’inscrire sur ton site pour ne pas surajouter des données inutiles.
    Merci

    • Le 10 février 2010 à 23:39, par acatonne En réponse à : Accès partie privée ? Téléchargement de fichier possible ?

      Bonjour,

      Pardon pour le délais

      L’accès à l’admin est limité aux administrateurs en mettant dans mes_options.php (dans /config)

      function autoriser_ecrire($faire, $type, $id, $qui, $opt) {
              return in_array($qui['statut'], array('0minirezo'));
      }

      Pour le téléchargement, pas eu besoin, mais le plugin upload doit pouvoir être branché (?)

      Pour le site lecinedico.com, des inscriptions ne sont pas gênantes (il existe un profil redacteur/redacteur au besoin), c’est la soumission de faux mots qui serait dérangeante ;-)

    • Le 26 mai 2010 à 19:37, par audwill En réponse à : Utiliser et personnaliser le formulaire public d’ajout d’articles

      bonjour,

      j’ai essayé d’ajouter ce code pour restreindre l’accès à l’espace privé aux seuls administrateurs.
      ça marche mais avec quelques bizarreries :
      -  quand un admin se connecte à l’espace privé il arrive sur une page indiquant « vous êtes enregistré, par ici » et en cliquant sur ce lien ça mène effectivement à l’espace privé : n’y a t’il pas moyen d’éviter l’affichage de cette page intermédiaire ?
      -  quand un admin se déconnecte de l’espace privé il est dirigé vers une page d’erreur 302 indiquant : HTTP 302 - Si votre navigateur n’est pas redirigé, cliquez ici pour continuer.
      Et en cliquant il revient à la page de login d’ecrire. .
      Ce message d’erreur 302 s’affiche aussi de temps en temps dans l’espace privé après une validation de modif...
      Comment l’éviter ?

    Répondre à ce message

  • Le 26 novembre 2009 à 09:38, par Manar En réponse à : Utiliser et personnaliser le formulaire public d’ajout d’articles

    Bonjour,

    Merci pour le squelette. ça marche parfaitement.
    j’ai dû, seulement, ajouté deux lignes dans le squelette appellant le formulaire :

    [(#ENVid_article|==0| ?<:article_ajout_erreur :>,’’)]
    [(#ENVid_article|>0| ?<:article_ajoute :>,’’)]

    pour que les rédacteurs sachent bien que l’article est posté, dans le cas échéant, qu’il y a erreur.

    Cependant, en cas d’erreur (titre non saisie par ex), le formulaire se vide. Donc les rédacteurs sont contraint de re-saisir tout le contenu !!

    une idée ?!

    Merci.

    • Le 19 mars 2010 à 14:18, par audwill En réponse à : Utiliser et personnaliser le formulaire public d’ajout d’articles

      J’avais essayé d’ajouter ces deux lignes dans mon squelette, sans succès. Eric m’a suggéré sur la liste spip une autre solution, qui fonctionne très bien chez moi :

      dans le fichier php du formulaire personnalisé d’édition d’article, par exemple dans squelettes/formulaires/editer_monarticle.php, modifier la fonction
      function formulaires_editer_monarticle_traiter_dist comme ceci :

      1. function formulaires_editer_monarticle_traiter_dist($id_article='new',
      2. $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='articles_edit_config', $row=array(), $hidden=''){
      3.  
      4. $ok = formulaires_editer_objet_traiter('article',$id_article,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden);
      5.  
      6. if($ok == true) {
      7. return array('message_ok'=>'Votre article a bien été enregistré');
      8. }
      9. else { return array('message_ok'=>'Une erreur est survenue'); }
      10.  
      11. }

      Télécharger

      Résultat : quand l’auteur enregistre son article dans l’espace public, il obtient un message de confirmation (« votre article a bien été enregistré ») ou un message d’erreur (une erreur est survenue).

    Répondre à ce message

  • Le 5 mars 2010 à 11:01, par audwill En réponse à : Et pour le formulaire d’édition de la fiche auteur ?

    Bonjour,
    et merci beaucoup pour cette contrib - super claire !

    j’essaie de proposer aux auteurs de pouvoir modifier leur bio depuis l’espace public. donc j’ai suivi la même méthode en modifiant le formulaire d’édition auteur : editer_auteur.html et editer_auteur.php (renommés en editer_auteur_perso)

    mais je cale sur la modif de la première fonction dans le fichier php. Que faudrait-il modifier dans ce cas ? j’ai naïvement essayé de modifier la fonction comme ça mais ça marche pas :

    $contexte['_hidden'] = str_replace('editer_auteur', 'editer_auteur_perso', $contexte['_hidden']);
            // preciser que le formulaire doit etre securise auteur/action
    $contexte['_action'] = array('editer_auteur_perso',$id_auteur);
           
            return $contexte;
    //        unset($valeurs['id_rubrique']);
            return $valeurs;

    audwill

    Répondre à ce message

  • Le 21 octobre 2009 à 08:29, par philooo En réponse à : Utiliser et personnaliser le formulaire public d’ajout d’articles

    est-ce qu’on peut voir une demo de ton code quelque part ?

    Répondre à ce message

  • Le 21 octobre 2009 à 13:05, par acatonne En réponse à : Utiliser et personnaliser le formulaire public d’ajout d’articles

    Bonjour,
    Le site sera mis en ligne dans quelques jours, j’ajouterai alors le lien.
    A.

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

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

  • Plugin Analyclick - un compteur de téléchargements

    26 février 2011 – 180 commentaires

    Ce plugin permet de compter les téléchargements de documents sur son site. Il introduit une balise #URL_DOC_COMPTEUR qui va compter chaque clic fait sur ce lien. Il affiche une page de statistique. Avertissement Le passage en SPIP v.3 est en (...)

  • Menu privé alphabétique

    19 décembre 2016 – commentaire

    A force d’ajouter des plugins, le menu principal de l’espace privé se remplit d’items qui sont rangés un peu n’importe comment. Pas toujours facile de s’y retrouver. Ce plugin fait deux choses : trier les items des menus par ordre alphabétique, (...)

  • Réservation d’événements

    16 mars 2015 – 236 commentaires

    Ce plugin permet d’offrir aux visiteurs de s’inscrire pour un évènement du plugin Agenda et de gérer les réservations enregistrées. Installation Le plugin s’installe comme n’importe quel plugin. il nécessite : Agenda API de vérification (...)

  • Champs Extras 3

    16 janvier 2012 – 561 commentaires

    Ce plugin permet de créer et/ou de gérer des champs supplémentaires dans les objets éditoriaux de SPIP. Il permet donc de prendre en compte et d’afficher de nouveaux éléments dans n’importe quel objet éditorial de SPIP. Screencast Vous n’aimez pas (...)

  • GIS 4

    11 août 2012 – 1336 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)

Ça spipe par là