Proposition d’article à partir de l’espace public par un visiteur non auteur.
mercredi 2 août 2006, par Robert Sebille. Dernier ajout jeudi 26 octobre 2006
A partir d’un auteur générique (Visiteur, par exemple), ce squelette permet à un visiteur non auteur spip de proposer un article arrivant directement dans l’espace privé. Un email peut être alors envoyé aux responsables du site, par exemple à l’adresse de suivi de l’activité éditoriale.
Note : Dernière modif : vendredi 30 septembre 2005, 14:13
Le nom de l’auteur spip est un auteur générique, toujours le même pour tous les articles. Le nom et l’email de l’auteur réel de l’article sont recueilli par le formulaire et ajouté au bas de l’article, dans le post scriptum. Il s’agit donc ici d’articles exclusivement "visiteur".
Fonctionnalités supplémentaires
Les champs surtitre, sous-titre, descriptif, chapeau et post-scriptum sont gérés.
Une liste déroulante permet le choix d’une rubrique.
Une liste déroulante multiselect permet le choix de 0, un ou plusieurs mots clés.
les champs du formulaire sont traités non seulement par des addslashes, mais aussi des corriger_caracteres et htmlentities, suivant les cas.
un mail peut être envoyé avertissant de l’arrivée d’un article, par exemple à l’adresse de suivi de l’activité éditoriale, et au visiteur auteur de l’article. Le mail comporte l’entièreté de l’article. Le mail de suivi éditorial comprend un lien vers l’article dans la partie privée, et celui du visiteur, un lien vers son article (valable si celui-ci est publié). Le visiteur est averti que le lien n’est valable que si son article est accepté. (NB. : Si vous publiez l’article, il peut être aimable de le signaler au visiteur, puisque vous avez son adresse email).
l’adresse IP, la date et l’heure de proposition sont relevés et envoyés via l’email.
Les champs (spip 1.8) id_secteur, auteur_modif, date_modif, lang, id_version de $table_prefix."_articles" Les préfixes de tables sont gérés.
l’adresse email de l’auteur visiteur est traitée contre le spam sous la forme user(AT)domain(PT)tld.
le champ TEXTE comprend une barre de raccourci spip
Configuration :
1. Créer un auteur générique (par exemple "Visiteur") qui servira d’auteur spip pour toutes les contributions à partir de ce squelette. Retenir l’id de l’auteur.
2. Créer une rubrique particulière pour ce squelette (rubrique=XX.html, par exemple) et à l’emplacement de l’affichage du contenu faire l’inclusion de rubrique-article-proposer.php3 comme suit : <INCLURE(rubrique-article-proposer.php3){id_rubrique}>
3. Ouvrir rubrique-article-proposer.html, et dans le <select name="rubrique"> adapter les 3 boucles rubriques (BOUCLE_rubrique0, BOUCLE_sous_rubriques0, BOUCLE_recursive0) à vos besoins. Au moins : id_rubrique != XX où vous remplacez (3 fois) XX par le n° (id) de la rubrique de ce squelette, car ça aurait peu de sens de proposer des articles ici.
4. Ouvrir rubrique-article-proposer.php3, et, au début du script, entre "/* A configurer (début) */" et "/* A configurer (fin) */", vous remplacez :
dans $id_auteur= "YY";, YY par l’id de l’auteur générique crée au point 1. Ceci est obligatoire.
dans $fromto="";, vous placez éventuellement l’adresse email de suivi de l’activité éditoriale entre les "". Ceci n’est pas obligatoire. Si vous laissez les "" vide, aucun mail ne sera envoyé. Attention à ceci : A) L’envoi d’email n’est possible que si votre hébergeur le permet. B) Si vous utilisez une liste de diffusion pour le suivi de l’activité éditoriale, attention à bien la configurer pour éviter des "bounces" sans fin.
5. Charger sur votre site rubrique-article-proposer.php3 et ip_date_heure.php3 à la racine, rubrique-article-proposer.html dans le dossier des squelettes et le répertoire misenform et son contenu à la racine. (misenform contient les icônes de la barre de raccourcis ; je ne suis pas très doué pour le graphisme ;), mais rien ne vous empêche d’en faire des plus jolis).
6. Il faut forcer la publication de la rubrique. Il y a plusieurs solutions :
La solution spip. Depuis SPIP 1.7.1 "{tout} affiche les rubriques vides en plus des rubriques contenant des éléments publiés." http://www.spip.net/fr_article904.html#crit_tout Personnellement, j’utilise une autre solution avec des articles numérotés, je construis mes boucles ainsi :
{titre !== ^0\.[[:blank:]].*} me permet d’écrire des "articles techniques" débutant par 0. (0.espace) qui ne sont pas affiché dans la navigation, mais me permettent, en les mettant en ligne de forcer aisément l’affichage d’une rubrique vide.
J’ai bien installé votre excellent formulaire mais j’obtiens toujours ce message d’erreur lié aux MOTS-CLÉS et à la table array correspondante.
Warning : htmlspecialchars() expects parameter 1 to be string, array given in c :\program files\easyphp1-8\www\testspip\ecrire\inc_filtres.php3 on line 32
J’ai bien regardé mon fichier inc_filtres.php3 à la ligne 32 mais, étant donné mon manque de connaissance en php, je n’y vois que dalle.
je ne vois pas très bien d’où vient ce warning, le script ne faisant pas appel à cette fonction, et je n’ai pas l’avertissement chez moi. Ceci dit, ça n’est pas très grave, et voici comment supprimer cet affichage intempestif :
il s’agit d’un warning, et donc non pas une erreur dans le script, mais plutôt d’une incorrection "quelque part" dans l’interprétation des scripts, incorrection qui n’a pas de conséquence sur le fonctionnement. L’avertissement dit que la fonction htmlspecialchars est appelée à un moment donné, ne trouve pas comme premier argument attendu une chaîne de caractères, et elle renvoie un avis, sans plus.
L’affichage des errors et warnings peut-être activé ou désactivé dans le fichier php.ini. En général, il est activé en local (comme chez vous avec easyphp), parce ça permet un debugging au développeur, et désactivé sur les serveurs en production (hébergeurs, par exemple) parce qu’il constitue une faille de sécurité potentielle en donnant à d’éventuels pirates des informations qui leur facilitent la tâche (Et donc, si des warnings s’affichent chez votre hébergeur, il vaudrait mieux alors en changer).
Pour désactiver activer ou désactiver l’affichage en local, vous devez éditer votre fichier php.ini (je ne connais pas windows, mais je crois que c’est possible avec easyphp), chercher la variable display_errors = On et remplacer comme suit :
display_errors = Off
les warnings disparaîtront. ATTENTION, comme vous ne vous y connaissez pas en php, respectez scrupuleusement la syntaxe (une erreur d’un ; avec php, et c’est la page blanche!) et utilisez exclusivement un éditeur de texte (et pas un traitement de texte, qui peut ajouter des codes invisible au fichier php.ini)
Voilà, le script a été testé sur spip 1.8.1 et 1.8.2, ne fonctionne actuellement pas sur 1.8.9, mais je suis intéressé de savoir s’il fonctionne sur 1.8.3 (que je n’ai pas encore testé). Donc, si vous utilisez 1.8.3 et que le script fonctionne, pouvez vous le signaler sur le forum ?
Chapo à l’auteur de cette contrib !!
J’ai testé sur SPIP1.9 Après validation j’obtient une erreur 404 :
The requested URL /rubrique.php3 was not found on this server.
Je suis incapable de faire l’adaptation moi-meme. J’attend avec impatience une mise à jour.
Superbe contribution, du jamais vu ! Mais je n’arrive pas trop à appeler le formulaire dans mon site... AS-TU DES EXEMPLES VRAIMENT CONCRETS POUR LES NULS ?
1- En fait je ne comprend pas comment réaliser le POINT #2 de ta configuration qui dit ceci :
2. Créer une rubrique particulière pour ce squelette (rubrique=XX.html, par exemple) et à l’emplacement de l’affichage du contenu faire l’inclusion de rubrique-article-proposer.php3 comme suit : <.INCLURE(rubrique-article-proposer.php3)id_rubrique.>
2- Ensuite, comment faire le lien à partir de mon menu ? J’ai essayé ceci mais cela ne semble pas être bon...
<.a href="#URL_SITE_SPIP/rubrique.php3?id_rubrique=69" title="Inscription d’un lien">Inscription d’un lien<./a>
3- Dernier point, que-fait-on avec le fichier "ip_date_heure.php3" ??
Merci
P.S. J’ai mis des petits points dans les codes pour que le forum ne les interprète pas comme des liens
Il y a un lien vers un exemple dans le corps de l’article
La doc pour créer des rubriques particulières (rubrique=XX.html, par exemple) où XX est l’ID_RUBRIQUE, est ici :
http://www.spip.net/fr_article877.html sous l’intertitre "Une interface différente dans le même site".
A la place du contenu habituel du corps de la rubrique (en général des titres d’articles), tu mets :
<INCLURE(rubrique-article-proposer.php3){id_rubrique}> (et surtout pas : <.INCLURE(rubrique-article-proposer.php3)id_rubrique.> )
Note bien que pour écrire du code dans ce forum, il suffit de l’entourer des balises spip <code></code>. c’est mieux pour ceux qui ferait des copier/coller de ton code.
<.a href="#URL_SITE_SPIP/rubrique.php3 ?id_rubrique=69" title="Inscription d’un lien">Inscription d’un lien<./a> ? est-ce qu’il ne serait pas plus "spip" de faire quelque chose du genre :
ip_date_heure.php3 va à la racine du site. C’est le fichier qui rélève la date et l’heure de l’envoi et l’IP de l’envoyeur. Ceux-ci te parviendront dans l’email d’avertissement (si tu as configuré ton squelette ainsi, et si ton hébergeur a activé l’envoi d’email). Cela est fait pour éviter qu’on spamme ton site en t’envoyant des articles illégaux ou pornographiques, par exemple. Tu tiens alors un identifiant de l’envoyeur, et la protection de la vie privée par les hébergeurs ne joue plus en cas d’action illégale.