Version imprimable http://spipeur.free.fr/article.php3?id_article=10
Le site des utilisateurs de SPIP

Etre averti lors de l’envoi de commentaire

Par Eric, le lundi 22 décembre 2003.

Votre site est hébergé chez Free, voici comment vous pouvez utiliser le script form2mail de free pour être averti lorsqu’un visiteur poste un nouveau message dans le forum associé à un article.

La fonction PHP mail() est maintenant disponible chez free, pour en savoir plus, consulter cet article

Vous désirez (en tant que propriétaire d’un site SPIP hébergé chez Free) être averti lorsqu’un visiteur poste un nouveau message dans le forum associé à un article, voici comment utiliser le script form2mail de free pour y arriver.(Les modifications décrites ici sont basées sur la version 1.6 de SPIP).

Le principe consiste à brancher l’exécution de 2 scripts différents quand un visiteur cliquera sur le bouton ’Message définitif : Envoyer au site’.
Voici la marche à suivre pour y parvenir :

-  Editer le fichier ./inc_forum.php [1]
-  Localiser la fonction retour_forum() dans laquelle nous allons effectuer toutes les modifications décrites ci-après
-  Localiser les lignes


$ret .= "\n<a name='formulaire_forum'></a>\n";
$ret .= "\n<FORM ACTION='$lien' METHOD='post'>";
   Modifier cette portion comme :

$ret .= "\n<a name='formulaire_forum'></a>\n";
$form4free=false; // Pour ajouter le formulaire invisible de free uniquement quand le bouton 'envoyer est présent
$ret .= "\n<FORM ACTION='$lien' METHOD='post'>";

-  Un peu plus bas, localiser les lignes

if (!$nouveau_document AND $afficher_texte != 'non'){
   $ret .= "<div class='spip_encadrer'>";
   if ($afficher_texte != "non"){
   Modifier cette portion comme :

if (!$nouveau_document AND $afficher_texte != 'non'){
   $ret .= "<div class='spip_encadrer'>";
   $form4free=true; // On doit ajouter le formulaire free
   if ($afficher_texte != "non"){

-  Toujours peu plus bas, localiser les lignes

if (strlen($texte) < 10 AND !$presence_mots)
 $ret .= "<p><div align='right'><font color=red>"._T('forum_attention_dix_caracteres')."</font></div>\n";
else if (strlen($titre) < 3 AND $afficher_texte <> "non")
 $ret .= "<p><div align='right'><font color=red>"._T('forum_attention_trois_caracteres')."</font></div>\n";
else
 $ret .= "\n<p><DIV ALIGN='right'><INPUT TYPE='submit' NAME='confirmer' CLASS='spip_bouton' VALUE='"._T('forum_message_definitif')."'></DIV>";
   Modifier cette portion comme :

if (strlen($texte) < 10 AND !$presence_mots)
   $ret .= "<p><div align='right'><font color=red>"._T('forum_attention_dix_caracteres')."</font></div>\n";
else if (strlen($titre) < 3 AND $afficher_texte <> "non")
   $ret .= "<p><div align='right'><font color=red>"._T('forum_attention_trois_caracteres')."</font></div>\n";
else
   $ret .= "\n<p><DIV ALIGN='right'><INPUT TYPE='submit' NAME='confirmer' CLASS='spip_bouton' VALUE='"._T('forum_message_definitif')."' onClick=\"perlfree.submit();formulaire.submit();\"></DIV>";

-  Enfin à la fin de la fonction, localiser les lignes :

$ret .= "</FORM>";

$ret .= '<'.'?php } ?'.'>';        // fin forums abo
   Modifier cette portion pour y insérer le formulaire free :

$ret .= "</FORM>";
// Ajoute l'appel au forumlaire free si l'on affiche le bouton validant le message
if ($form4free){ // Le formulaire doit être affiché
   $ret.="\n<form target='GOTOMAILFREE' name='cgimailfree' method='post' action='http://perso0.free.fr/cgi-bin/form2mail.pl'>
       <input type='Hidden' name='Typemessage' value=\"Demande de publication\">\n
       <input type='Hidden' name='Titre' value=\"$titre\">\n
       <INPUT TYPE='Hidden' NAME='id_message' VALUE=\"$id_message\">\n
       <INPUT TYPE='Hidden' NAME='ajout_forum' VALUE=\"oui\">\n
       <INPUT TYPE='Hidden' NAME='forum_id_rubrique' VALUE=\"$id_rubrique\">\n
       <INPUT TYPE='Hidden' NAME='forum_id_parent' VALUE=\"$id_parent\">\n
       <INPUT TYPE='Hidden' NAME='forum_id_article' VALUE=\"$id_article\">\n
       <INPUT TYPE='Hidden' NAME='forum_id_breve' VALUE=\"$id_breve\">\n
       <INPUT TYPE='Hidden' NAME='forum_id_syndic' VALUE=\"$id_syndic\">\n
       </form>";
}

$ret .= '<'.'?php } ?'.'>';        // fin forums abo

Voilà c’est tout, il reste encore à copier le fichier result.html nécessaire au fonctionnement du script à la racine du site. Son contenu importe peu car cette page ne sera pas affichée.

Le script form2mail s’exécute bien dans une fenêtre particulière (a priori sans l’option target associée au formulaire de free, l’envoi ne fonctionne pas), mais cette fenêtre repositionne le visiteur sur la page permettant d’envoyer un commentaire. Pour éviter ce désagrément, il suffit de mettre un code javascript sur la page forum.html permettant de tester le nom de la fenêtre dans laquelle la page à été ouverte. Si le nom de la fenêtre est le nom utilisé dans la balise target du formulaire free, alors on ferme tout simplement cette fenêtre. Voici le code javascript pour y parvenir (à insérer entre les balises <head>...</head>) :


<SCRIPT LANGUAGE="JavaScript">
if (window.name=="GOTOMAILFREE")
  window.close();
</script>

[1] ou ./inc_forum.php3 si vous n’utilisez pas la version 1.6 pour free dont il est question dans cet article


Spip’eur - Scripts, articles, ressources, astuces pour SPIP http://spipeur.free.fr/article.php3?id_article=10