From e7a8775944f4a08053140e454662beabf47ba7fe Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Thu, 12 Oct 2006 21:39:55 +0000 Subject: [PATCH] =?UTF-8?q?Permettre=20la=20surcharge=20du=20formulaire=20?= =?UTF-8?q?cr=C3=A9ant=20et/ou=20d=C3=A9crivant=20un=20auteur=20(introduct?= =?UTF-8?q?ion=20de=20la=20fonction=20legender=5Fauteur).=20Il=20faudrait?= =?UTF-8?q?=20fusionner=20=20cette=20fonction=20avec=20le=20squelette=20fo?= =?UTF-8?q?rmulaire=5Finscription=20qui=20n'en=20est=20qu'un=20cas=20parti?= =?UTF-8?q?culier.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 1 + ecrire/exec/auteur_infos.php | 194 +++++++++++++++++++-------------- ecrire/inc/legender_auteur.php | 194 +++++++++++++++++++++++++++++++++ 3 files changed, 307 insertions(+), 82 deletions(-) create mode 100644 ecrire/inc/legender_auteur.php diff --git a/.gitattributes b/.gitattributes index df4bd9edec..b6a43716fd 100644 --- a/.gitattributes +++ b/.gitattributes @@ -452,6 +452,7 @@ ecrire/inc/instituer_auteur.php -text ecrire/inc/joindre.php -text ecrire/inc/lang_liste.php -text ecrire/inc/legender.php -text +ecrire/inc/legender_auteur.php -text ecrire/inc/maintenance.php -text ecrire/inc/message_select.php -text ecrire/inc/minipres.php -text diff --git a/ecrire/exec/auteur_infos.php b/ecrire/exec/auteur_infos.php index 8879d94775..01b9088ef0 100644 --- a/ecrire/exec/auteur_infos.php +++ b/ecrire/exec/auteur_infos.php @@ -46,6 +46,35 @@ global $ajouter_id_article, 'data'=>'') ); + list($echec, $auteur) = action_auteur_infos_dist($id_auteur, $ajouter_id_article); +// Redirection + + if (!$echec AND $_SERVER['REQUEST_METHOD'] == "POST") { + redirige_par_entete($redirect ? rawurldecode($redirect) : generer_url_ecrire("auteurs_edit", "id_auteur=$id_auteur", true)); +} + exec_affiche_auteur_info_dist($id_auteur, $auteur, $echec, $redirect, $ajouter_id_article); +} + +function action_auteur_infos_dist($id_auteur, $ajouter_id_article) +{ +global $bio, + $champs_extra, + $connect_id_auteur, + $connect_statut, + $connect_toutes_rubriques, + $email, + $id_auteur, + $new_login, + $new_pass, + $new_pass2, + $nom, + $nom_site_auteur, + $perso_activer_imessage, + $pgp, + $redirect, + $statut, + $url_site; + // // Recuperer id_auteur ou se preparer a l'inventer // @@ -54,7 +83,7 @@ global $ajouter_id_article, if (!$auteur) exit; } else { $auteur['nom'] = filtrer_entites(_T('item_nouvel_auteur')); - $onfocus = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\""; + $auteur['statut'] = '1comite'; // statut par defaut a la creation $auteur['source'] = 'spip'; } @@ -190,26 +219,23 @@ if ($nom OR $statut) { // Mettre a jour les fichiers .htpasswd et .htpasswd-admin ecrire_acces(); -} -// Redirection -if (!$echec AND $_SERVER['REQUEST_METHOD'] == "POST") { - redirige_par_entete($redirect ? rawurldecode($redirect) : generer_url_ecrire("auteurs_edit", "id_auteur=$id_auteur", true)); -} -exec_affiche_auteur_info_dist($id_auteur, $auteur, $echec, $redirect, $ajouter_id_article, $onfocus); - + } + return array($echec, $auteur); } // http://doc.spip.org/@exec_affiche_auteur_info_dist -function exec_affiche_auteur_info_dist($id_auteur, $auteur, $echec, $redirect, $ajouter_id_article, $onfocus) +function exec_affiche_auteur_info_dist($initial, $auteur, $echec, $redirect, $ajouter_id_article) { global $connect_id_auteur; + $id_auteur = $auteur['id_auteur']; + if ($connect_id_auteur == $id_auteur) debut_page($auteur['nom'], "auteurs", "perso"); else debut_page($auteur['nom'],"auteurs","redacteurs"); - echo "<br><br><br>"; + echo "<br /><br /><br />"; debut_gauche(); @@ -242,12 +268,8 @@ function exec_affiche_auteur_info_dist($id_auteur, $auteur, $echec, $redirect, } debut_cadre_formulaire(); - echo generer_url_post_ecrire('auteur_infos', (!$id_auteur ? "" : "id_auteur=$id_auteur")); - if ($ajouter_id_article) - echo "<input name='ajouter_id_article' value='$ajouter_id_article' type='hidden'>\n" - . "\n<input name='redirect' value='$redirect' type='hidden' />"; - formulaire_auteur_infos($id_auteur, $auteur, $onfocus); + echo formulaire_auteur_infos($id_auteur, $auteur, $initial, $ajouter_id_article, $redirect); echo "</form>"; echo $instituer_auteur($id_auteur, $auteur['statut'], "auteurs_edit"); @@ -259,66 +281,72 @@ function exec_affiche_auteur_info_dist($id_auteur, $auteur, $echec, $redirect, // http://doc.spip.org/@formulaire_auteur_infos -function formulaire_auteur_infos($id_auteur, $auteur, $onfocus) +function formulaire_auteur_infos($id_auteur, $auteur, $initial, $ajouter_id_article, $redirect) { - global $connect_statut, $connect_toutes_rubriques,$connect_id_auteur, $options, $champs_extra ; + global $connect_statut, $connect_toutes_rubriques,$connect_id_auteur, $options, $champs_extra ; + $onfocus = $initial ? '' : " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\""; -// -// Infos personnelles -// - -echo "\n<div class='serif'>"; - -debut_cadre_relief("fiche-perso-24.gif", false, "", _T("icone_informations_personnelles")); + $corps = generer_url_post_ecrire('auteur_infos', (!$id_auteur ? "" : "id_auteur=$id_auteur")); -echo _T('titre_cadre_signature_obligatoire'); -echo "("._T('entree_nom_pseudo').")<br />\n"; -echo "<input type='text' name='nom' class='formo' value=\"".entites_html($auteur['nom'])."\" size='40' $onfocus />\n<p>"; - -echo "<B>"._T('entree_adresse_email')."</B>"; + if ($ajouter_id_article) + $corps .= "<input name='ajouter_id_article' value='$ajouter_id_article' type='hidden'>\n" + . "\n<input name='redirect' value='$redirect' type='hidden' />"; + $corps .= "\n<div class='serif'>" + . debut_cadre_relief("fiche-perso-24.gif", true, "", _T("icone_informations_personnelles")) + . _T('titre_cadre_signature_obligatoire') + . "("._T('entree_nom_pseudo').")<br />\n" + . "<input type='text' name='nom' class='formo' value=\"" + . entites_html($auteur['nom']) + . "\" size='40' $onfocus />\n<p>" + . "<b>"._T('entree_adresse_email')."</b>"; + + if ($connect_statut == "0minirezo" + AND ($connect_toutes_rubriques OR $auteur['statut']<>'0minirezo')) { + $corps .= "<br /><input type='text' name='email' class='formo' value=\"".entites_html($auteur['email'])."\" size='40' />\n<p>\n"; + } else { + $corps .= " : <tt>".$auteur['email']."</tt>" + . "<br>("._T('info_reserve_admin').")\n" + . "\n<p>"; + } -if ($connect_statut == "0minirezo" -AND ($connect_toutes_rubriques OR $auteur['statut']<>'0minirezo')) { - echo "<br /><input type='text' name='email' class='formo' value=\"".entites_html($auteur['email'])."\" size='40' />\n<p>\n"; -} -else { - echo " : <tt>".$auteur['email']."</tt>"; - echo "<br>("._T('info_reserve_admin').")\n"; - echo "\n<p>"; -} + $corps .= "<b>"._T('entree_infos_perso')."</b><br />\n" + . "("._T('entree_biographie').")<br />\n" + . "<textarea name='bio' class='forml' rows='4' cols='40' wrap=soft>" + . entites_html($auteur['bio']) + . "</textarea>\n" + . debut_cadre_enfonce("site-24.gif", true, "", _T('info_site_web')) + . "<b>"._T('entree_nom_site')."</b><br />\n" + . "<input type='text' name='nom_site_auteur' class='forml' value=\"" + . entites_html($auteur['nom_site']) + . "\" size='40'><P>\n" + . "<b>" + . _T('entree_url') + . "</b><br />\n" + . "<input type='text' name='url_site' class='forml' value=\"" + . entites_html($auteur['url_site']) + . "\" size='40'>\n" + . fin_cadre_enfonce(true) + . "\n<p>"; + + if ($options == "avancees") { + $corps .= debut_cadre_enfonce("cadenas-24.gif", true, "", _T('entree_cle_pgp')) + . "<textarea name='pgp' class='forml' rows='4' cols='40' wrap=soft>" + . entites_html($auteur['pgp']) + . "</textarea>\n" + . fin_cadre_enfonce(true) + . "\n<p>"; + } else { + $corps .= "<input type='hidden' name='pgp' value=\"" + . entites_html($auteur['pgp']) + . "\" />"; + } -echo "<B>"._T('entree_infos_perso')."</b><br />\n"; -echo "("._T('entree_biographie').")<br />\n"; -echo "<textarea name='bio' class='forml' rows='4' cols='40' wrap=soft>"; -echo entites_html($auteur['bio']); -echo "</textarea>\n"; - -debut_cadre_enfonce("site-24.gif", false, "", _T('info_site_web')); -echo "<b>"._T('entree_nom_site')."</b><br />\n"; -echo "<input type='text' name='nom_site_auteur' class='forml' value=\"".entites_html($auteur['nom_site'])."\" size='40'><P>\n"; - -echo "<b>"._T('entree_url')."</b><br />\n"; -echo "<input type='text' name='url_site' class='forml' value=\"".entites_html($auteur['url_site'])."\" size='40'>\n"; -fin_cadre_enfonce(); - echo "\n<p>"; - -if ($options == "avancees") { - debut_cadre_enfonce("cadenas-24.gif", false, "", _T('entree_cle_pgp')); - echo "<textarea name='pgp' class='forml' rows='4' cols='40' wrap=soft>"; - echo entites_html($auteur['pgp']); - echo "</textarea>\n"; - fin_cadre_enfonce(); - echo "\n<p>"; -} -else { - echo "<input type='hidden' name='pgp' value=\"".entites_html($auteur['pgp'])."\" />"; -} + $corps .= "\n<p>"; -echo "\n<p>"; if ($champs_extra) { include_spip('inc/extra'); - extra_saisie($auteur['extra'], 'auteurs', $auteur['statut']); + $corps .= extra_saisie($auteur['extra'], 'auteurs', $auteur['statut'],'', false); } // @@ -343,25 +371,25 @@ else { $edit_pass = false; } - debut_cadre_relief("base-24.gif"); + $corps .= debut_cadre_relief("base-24.gif", true); // Avertissement en cas de modifs de ses propres donnees if (($edit_login OR $edit_pass) AND $connect_id_auteur == $id_auteur) { - debut_cadre_enfonce(); - echo http_img_pack("warning.gif", _T('info_avertissement'), "width='48' height='48' align='right'"); - echo "<b>"._T('texte_login_precaution')."</b>\n"; - fin_cadre_enfonce(); - echo "\n<p>"; + $corps .= debut_cadre_enfonce(true) + . http_img_pack("warning.gif", _T('info_avertissement'), "width='48' height='48' align='right'") + . "<b>"._T('texte_login_precaution')."</b>\n" + . fin_cadre_enfonce(true) + . "\n<p>"; } // Un redacteur n'a pas le droit de modifier son login ! if ($edit_login) { - echo "<b>"._T('item_login')."</b> "; - echo "<font color='red'>("._T('texte_plus_trois_car').")</font> :<br />\n"; - echo "<input type='text' name='new_login' class='formo' value=\"".entites_html($auteur['login'])."\" size='40' /><p>\n"; + $corps .= "<b>"._T('item_login')."</b> " + . "<font color='red'>("._T('texte_plus_trois_car').")</font> :<br />\n" + . "<input type='text' name='new_login' class='formo' value=\"".entites_html($auteur['login'])."\" size='40' /><p>\n"; } else { - echo "<fieldset style='padding:5'><legend><B>"._T('item_login')."</B><br />\n</legend><br><b>".$auteur['login']."</b> "; - echo "<i> ("._T('info_non_modifiable').")</i>\n<p>"; + $corps .= "<fieldset style='padding:5'><legend><B>"._T('item_login')."</B><br />\n</legend><br><b>".$auteur['login']."</b> " + . "<i> ("._T('info_non_modifiable').")</i>\n<p>"; } // On ne peut modifier le mot de passe en cas de source externe (par exemple LDAP) @@ -371,9 +399,9 @@ else { . "<input type='password' name='new_pass' class='formo' value=\"\" size='40' /><br />\n" . _T('info_confirmer_passe')."<br />\n" . "<input type='password' name='new_pass2' class='formo' value=\"\" size='40'><p>\n"; - echo $res; + $corps .= $res; } - fin_cadre_relief(); + $corps .= fin_cadre_relief(true); $res = "<p />"; @@ -391,9 +419,11 @@ else { 'id_auteur'=>$id_auteur), 'data'=>'')); - echo $res; - echo "</div>"; - fin_cadre_relief(); + $corps .= $res + . "</div>" + . fin_cadre_relief(true); + + return $corps; } // diff --git a/ecrire/inc/legender_auteur.php b/ecrire/inc/legender_auteur.php new file mode 100644 index 0000000000..d744656ae7 --- /dev/null +++ b/ecrire/inc/legender_auteur.php @@ -0,0 +1,194 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +if (!defined("_ECRIRE_INC_VERSION")) return; + + +// http://doc.spip.org/@formulaire_auteur_infos +function inc_legender_auteur($id_auteur, $auteur, $initial, $ajouter_id_article, $redirect) +{ + global $connect_statut, $connect_toutes_rubriques,$connect_id_auteur, $options, $champs_extra ; + + $onfocus = $initial ? '' : " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\""; + + $corps = generer_url_post_ecrire('auteur_infos', (!$id_auteur ? "" : "id_auteur=$id_auteur")); + + if ($ajouter_id_article) + $corps .= "<input name='ajouter_id_article' value='$ajouter_id_article' type='hidden'>\n" + . "\n<input name='redirect' value='$redirect' type='hidden' />"; + $corps .= "\n<div class='serif'>" + . debut_cadre_relief("fiche-perso-24.gif", true, "", _T("icone_informations_personnelles")) + . _T('titre_cadre_signature_obligatoire') + . "("._T('entree_nom_pseudo').")<br />\n" + . "<input type='text' name='nom' class='formo' value=\"" + . entites_html($auteur['nom']) + . "\" size='40' $onfocus />\n<p>" + . "<b>"._T('entree_adresse_email')."</b>"; + + if ($connect_statut == "0minirezo" + AND ($connect_toutes_rubriques OR $auteur['statut']<>'0minirezo')) { + $corps .= "<br /><input type='text' name='email' class='formo' value=\"".entites_html($auteur['email'])."\" size='40' />\n<p>\n"; + } else { + $corps .= " : <tt>".$auteur['email']."</tt>" + . "<br>("._T('info_reserve_admin').")\n" + . "\n<p>"; + } + + $corps .= "<b>"._T('entree_infos_perso')."</b><br />\n" + . "("._T('entree_biographie').")<br />\n" + . "<textarea name='bio' class='forml' rows='4' cols='40' wrap=soft>" + . entites_html($auteur['bio']) + . "</textarea>\n" + . debut_cadre_enfonce("site-24.gif", true, "", _T('info_site_web')) + . "<b>"._T('entree_nom_site')."</b><br />\n" + . "<input type='text' name='nom_site_auteur' class='forml' value=\"" + . entites_html($auteur['nom_site']) + . "\" size='40'><P>\n" + . "<b>" + . _T('entree_url') + . "</b><br />\n" + . "<input type='text' name='url_site' class='forml' value=\"" + . entites_html($auteur['url_site']) + . "\" size='40'>\n" + . fin_cadre_enfonce(true) + . "\n<p>"; + + if ($options == "avancees") { + $corps .= debut_cadre_enfonce("cadenas-24.gif", true, "", _T('entree_cle_pgp')) + . "<textarea name='pgp' class='forml' rows='4' cols='40' wrap=soft>" + . entites_html($auteur['pgp']) + . "</textarea>\n" + . fin_cadre_enfonce(true) + . "\n<p>"; + } else { + $corps .= "<input type='hidden' name='pgp' value=\"" + . entites_html($auteur['pgp']) + . "\" />"; + } + + $corps .= "\n<p>"; + + if ($champs_extra) { + include_spip('inc/extra'); + $corps .= extra_saisie($auteur['extra'], 'auteurs', $auteur['statut'],'', false); + } + +// +// Login et mot de passe : +// accessibles seulement aux admins non restreints et l'auteur lui-meme +// + +if ($auteur['source'] != 'spip') { + $edit_login = false; + $edit_pass = false; +} +else if (($connect_statut == "0minirezo") AND $connect_toutes_rubriques) { + $edit_login = true; + $edit_pass = true; +} +else if ($connect_id_auteur == $id_auteur) { + $edit_login = false; + $edit_pass = true; +} +else { + $edit_login = false; + $edit_pass = false; +} + + $corps .= debut_cadre_relief("base-24.gif", true); + +// Avertissement en cas de modifs de ses propres donnees + if (($edit_login OR $edit_pass) AND $connect_id_auteur == $id_auteur) { + $corps .= debut_cadre_enfonce(true) + . http_img_pack("warning.gif", _T('info_avertissement'), "width='48' height='48' align='right'") + . "<b>"._T('texte_login_precaution')."</b>\n" + . fin_cadre_enfonce(true) + . "\n<p>"; + } + +// Un redacteur n'a pas le droit de modifier son login ! + if ($edit_login) { + $corps .= "<b>"._T('item_login')."</b> " + . "<font color='red'>("._T('texte_plus_trois_car').")</font> :<br />\n" + . "<input type='text' name='new_login' class='formo' value=\"".entites_html($auteur['login'])."\" size='40' /><p>\n"; + } else { + $corps .= "<fieldset style='padding:5'><legend><B>"._T('item_login')."</B><br />\n</legend><br><b>".$auteur['login']."</b> " + . "<i> ("._T('info_non_modifiable').")</i>\n<p>"; + } + +// On ne peut modifier le mot de passe en cas de source externe (par exemple LDAP) + if ($edit_pass) { + $res = "<b>"._T('entree_nouveau_passe')."</b> " + . "<font color='red'>("._T('info_plus_cinq_car').")</font> :<br />\n" + . "<input type='password' name='new_pass' class='formo' value=\"\" size='40' /><br />\n" + . _T('info_confirmer_passe')."<br />\n" + . "<input type='password' name='new_pass2' class='formo' value=\"\" size='40'><p>\n"; + $corps .= $res; + } + $corps .= fin_cadre_relief(true); + + $res = "<p />"; + + if ($GLOBALS['connect_id_auteur'] == $id_auteur) + $res .= apparait_auteur_infos($id_auteur, $auteur); + + $res .= "\n<div align='right'>" + . "\n<input type='submit' class='fondo' value='" + . _T('bouton_enregistrer') + . "'></div>" + + . pipeline('affiche_milieu', + array('args' => array( + 'exec'=>'auteur_infos', + 'id_auteur'=>$id_auteur), + 'data'=>'')); + + $corps .= $res + . "</div>" + . fin_cadre_relief(true); + + return $corps; +} + +// +// Apparaitre dans la liste des redacteurs connectes +// + +// http://doc.spip.org/@apparait_auteur_infos +function apparait_auteur_infos($id_auteur, $auteur) +{ + + if ($auteur['imessage']=="non"){ + $res = "<input type='radio' name='perso_activer_imessage' value='oui' id='perso_activer_imessage_on'>" + . " <label for='perso_activer_imessage_on'>"._T('bouton_radio_apparaitre_liste_redacteurs_connectes')."</label> " + . "<br />\n<input type='radio' name='perso_activer_imessage' value='non' checked id='perso_activer_imessage_off'>" + . " <b><label for='perso_activer_imessage_off'>"._T('bouton_radio_non_apparaitre_liste_redacteurs_connectes')."</label></b> "; + } else { + $res = "<input type='radio' name='perso_activer_imessage' value='oui' id='perso_activer_imessage_on' checked>" + . " <b><label for='perso_activer_imessage_on'>" + . _T('bouton_radio_apparaitre_liste_redacteurs_connectes') + . "</label></b> " + . "<br />\n<input type='radio' name='perso_activer_imessage' value='non' id='perso_activer_imessage_off'>" + . " <label for='perso_activer_imessage_off'>" + . _T('bouton_radio_non_apparaitre_liste_redacteurs_connectes') + . "</label> "; + } + + return debut_cadre_relief("messagerie-24.gif", true, "", _T('info_liste_redacteurs_connectes')) + . "\n<div>" + . _T('texte_auteur_messagerie') + . "</div>" + . $res + . fin_cadre_relief(true) + . "<p />"; +} +?> -- GitLab