From 3d8349f78bf4a9bb9422098685d10819fcf07254 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Sat, 10 Feb 2007 07:57:06 +0000 Subject: [PATCH] pas mal de bugs sur la creation d'un auteur : - le bouton 'enregistrer' n'apparaissait pas - des erreurs d'autorisation lorsqu'on demandait de 'creer un auteur nomme' avec un nom contenant un caractere special (par exemple espace) tout ca a cause des auteurs restreints --- ecrire/action/legender_auteur.php | 42 ++++++++++++++----------------- ecrire/inc/editer_auteurs.php | 5 ++-- ecrire/inc/instituer_auteur.php | 6 +++-- ecrire/inc/legender_auteur.php | 23 +++++++++-------- 4 files changed, 39 insertions(+), 37 deletions(-) diff --git a/ecrire/action/legender_auteur.php b/ecrire/action/legender_auteur.php index a5e377060f..4910445efa 100644 --- a/ecrire/action/legender_auteur.php +++ b/ecrire/action/legender_auteur.php @@ -22,9 +22,7 @@ function action_legender_auteur_dist() $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); - $echec = array(); - - if (!preg_match(",^(\d+)\D(\d*)(\D(\w*)\D(.*))?$,", $arg, $r)) { + if (!preg_match(",^(\d+)\D(\d*)(\D(\w*))?$,", $arg, $r)) { $r = "action_legender_auteur_dist $arg pas compris"; spip_log($r); } else redirige_par_entete(action_legender_auteur_post($r)); @@ -48,7 +46,10 @@ function action_legender_auteur_post($r) $statut = _request('statut'); $url_site = _request('url_site'); - list($tout, $id_auteur, $ajouter_id_article,$x,$s, $n) = $r; + $echec = array(); + + + list($tout, $id_auteur, $ajouter_id_article,$x,$s) = $r; // // si id_auteur est hors table, c'est une creation sinon une modif // @@ -59,17 +60,16 @@ function action_legender_auteur_post($r) if (!$auteur) { $id_auteur = 0; $source = 'spip'; - $nom = $n ? $n : _T('ecrire:item_nouvel_auteur'); $statut = '1comite'; // statut par defaut if ($s) { if (ereg("^(0minirezo|1comite|5poubelle|6forum)$",$s)) $statut = $s; else spip_log("action_legender_auteur_dist: statut $s incompris"); } - } else $nom = _request('nom'); // risque de conflits en globale. + } $acces = ($id_auteur == $auteur_session['id_auteur']) ? true : " a voir "; - $auteur['nom'] = corriger_caracteres($nom); + $auteur['nom'] = corriger_caracteres(_request('nom')); // login et mot de passe $modif_login = false; @@ -183,21 +183,19 @@ function action_legender_auteur_post($r) spip_query("UPDATE spip_auteurs SET $query_pass nom=" . _q($auteur['nom']) . ", login=" . _q($auteur['login']) . ", bio=" . _q($auteur['bio']) . ", email=" . _q($auteur['email']) . ", nom_site=" . _q($auteur['nom_site']) . ", url_site=" . _q($auteur['url_site']) . ", pgp=" . _q($auteur['pgp']) . (!$extra ? '' : (", extra = " . _q($extra) . "")) . " WHERE id_auteur=".$auteur['id_auteur']); } -// Si on modifie la fiche auteur, reindexer - if ($nom OR $statut) { - if ($GLOBALS['meta']['activer_moteur'] == 'oui') { - include_spip("inc/indexation"); - marquer_indexer('spip_auteurs', $id_auteur); - } - // ..et mettre a jour les fichiers .htpasswd et .htpasswd-admin - ecrire_acces(); + // Si on modifie la fiche auteur, reindexer + if ($GLOBALS['meta']['activer_moteur'] == 'oui') { + include_spip("inc/indexation"); + marquer_indexer('spip_auteurs', $id_auteur); } + // ..et mettre a jour les fichiers .htpasswd et .htpasswd-admin + ecrire_acces(); - if ($echec) $echec = '&echec=' . join('@@@', $echec); + $echec = $echec ? '&echec=' . join('@@@', $echec) : ''; // il faudrait rajouter OR $echec mais il y a conflit avec Ajax - if (($init = ($tout[0]=='0'))) { + if ($echec OR ($init = ($tout[0]=='0'))) { // tout nouveau. envoyer le formulaire de saisie du reste // en transmettant le retour eventuel // decode / encode car encode pas necessairement deja fait. @@ -205,7 +203,9 @@ function action_legender_auteur_post($r) $ret = !$redirect ? '' : ('&redirect=' . rawurlencode(rawurldecode($redirect))); - return generer_url_ecrire("auteur_infos", "id_auteur=$id_auteur&initial=$init$echec$ret",true); + $script = (_request('var_ajaxcharset') ? 'legender_auteur' : 'auteur_infos'); + + return generer_url_ecrire($script, "id_auteur=$id_auteur&initial=$init$echec$ret",true); } else { // modif: renvoyer le resultat ou a nouveau le formulaire si erreur if (!$redirect) { @@ -214,11 +214,7 @@ function action_legender_auteur_post($r) } else list($redirect,$anc) = split('#',rawurldecode($redirect)); - if (!$echec) - $redirect .= '&initial=-1' . $anc; - else { - $redirect .= $echec . '&initial=0' . $anc; - } + $redirect .= $echec . $anc . ($echec ? '' : '&initial=-1'); return $redirect; } } diff --git a/ecrire/inc/editer_auteurs.php b/ecrire/inc/editer_auteurs.php index a1f002ace5..32fbdb8931 100644 --- a/ecrire/inc/editer_auteurs.php +++ b/ecrire/inc/editer_auteurs.php @@ -55,7 +55,7 @@ function editer_auteurs_objet($type, $id, $flag, $cherche_auteur, $ids, $les_aut $bouton_creer_auteur = $GLOBALS['connect_toutes_rubriques']; $clic = _T('icone_creer_auteur'); - $arg = "0/$id/" . ($statut ? $statut : '1comite') . '/'; + $arg = "0/$id/" . ($statut ? $statut : '1comite'); // // complement de action/editer_auteurs.php pour notifier la recherche d'auteur // @@ -67,7 +67,8 @@ function editer_auteurs_objet($type, $id, $flag, $cherche_auteur, $ids, $les_aut if ($type=='article' && $bouton_creer_auteur) { // pas generique pour le moment - $legende = redirige_action_auteur("legender_auteur", $arg . rawurlencode($cherche_auteur), "articles","id_article=$id"); + $legende = redirige_action_auteur("legender_auteur", $arg, "articles","id_article=$id"); + $legende = parametre_url($legende, 'nom', $cherche_auteur); $reponse .="<div style='width: 200px;'>" . icone_horizontale($clic, $legende, "redacteurs-24.gif", "creer.gif", false) diff --git a/ecrire/inc/instituer_auteur.php b/ecrire/inc/instituer_auteur.php index 7dd69b9610..9880600715 100644 --- a/ecrire/inc/instituer_auteur.php +++ b/ecrire/inc/instituer_auteur.php @@ -43,7 +43,7 @@ function inc_instituer_auteur_dist($id_auteur, $statut, $url_self) $lien = !$modif ? '' - : array(" [<span class='spip_x-small'>" . _T('lien_supprimer_rubrique') . "</span>]"); + : array(_T('lien_supprimer_rubrique')); $res = ''; @@ -56,7 +56,9 @@ function inc_instituer_auteur_dist($id_auteur, $statut, $url_self) . typo($row_admin["multi"]) . "</a>" . (!$modif ? '' : - ajax_action_auteur('instituer_auteur', "$id_auteur/-$id_rubrique", $url_self, $modif, $lien)) + " [<span class='spip_x-small'>" + . ajax_action_auteur('instituer_auteur', "$id_auteur/-$id_rubrique", $url_self, $modif, $lien) + . "</span>]") . '</li>'; } diff --git a/ecrire/inc/legender_auteur.php b/ecrire/inc/legender_auteur.php index 7759fbb601..bff7a9f49f 100644 --- a/ecrire/inc/legender_auteur.php +++ b/ecrire/inc/legender_auteur.php @@ -14,11 +14,12 @@ if (!defined("_ECRIRE_INC_VERSION")) return; // http://doc.spip.org/@inc_legender_auteur_dist -function inc_legender_auteur_dist($id_auteur, $auteur, $mode, $echec='', $redirect='') +function inc_legender_auteur_dist($id_auteur, $auteur, $initial, $echec='', $redirect='') { - $corps = (($mode < 0) OR !statut_modifiable_auteur($id_auteur, $auteur)) + + $corps = (($initial < 0) OR !statut_modifiable_auteur($id_auteur, $auteur)) ? legender_auteur_voir($auteur, $redirect) - : legender_auteur_saisir($id_auteur, $auteur, $mode, $echec, $redirect); + : legender_auteur_saisir($id_auteur, $auteur, $initial, $echec, $redirect); return $redirect ? $corps : ajax_action_greffe("legender_auteur-$id_auteur", $corps); @@ -26,7 +27,7 @@ function inc_legender_auteur_dist($id_auteur, $auteur, $mode, $echec='', $redire } // http://doc.spip.org/@legender_auteur_saisir -function legender_auteur_saisir($id_auteur, $auteur, $mode, $echec='', $redirect='') +function legender_auteur_saisir($id_auteur, $auteur, $initial, $echec='', $redirect='') { global $options, $connect_statut, $connect_id_auteur, $connect_toutes_rubriques; $corps = ''; @@ -55,9 +56,9 @@ function legender_auteur_saisir($id_auteur, $auteur, $mode, $echec='', $redirect . _T('entree_nom_pseudo') . ")<br />\n" . "<input type='text' name='nom' class='formo' size='40' value=\"" - . entites_html($auteur['nom']) + . entites_html(sinon($auteur['nom'], _T('ecrire:item_nouvel_auteur'))) . "\" " - . (!$mode ? '' : ' onfocus="if(!antifocus){this.value=\'\';antifocus=true;}"') + . (strlen($auteur['nom']) ? '' : ' onfocus="if(!antifocus){this.value=\'\';antifocus=true;}"') . " />\n<br />" . "<b>"._T('entree_adresse_email')."</b>"; @@ -177,9 +178,11 @@ function legender_auteur_saisir($id_auteur, $auteur, $mode, $echec='', $redirect return '<div> </div>' . "\n<div class='serif'>" . debut_cadre_relief("fiche-perso-24.gif", true, "", _T("icone_informations_personnelles")) - . ($redirect - ? generer_action_auteur('legender_auteur', $arg, $redirect, $corps) - : ajax_action_post('legender_auteur', $arg, 'auteur_infos', "id_auteur=$id_auteur&initial=-1&retour=$redirect", $corps, _T('bouton_enregistrer'), $att)) + . ( + $redirect + ? generer_action_auteur('legender_auteur', $arg, $redirect, + $corps . "<div align='right'><input type='submit' value='"._T('bouton_enregistrer')."' class='fondo' /></div>") + : ajax_action_post('legender_auteur', $arg, 'auteur_infos', "id_auteur=$id_auteur&initial=-1", $corps, _T('bouton_enregistrer'), $att)) . fin_cadre_relief(true) . '</div>'; } @@ -255,7 +258,7 @@ function legender_auteur_voir($auteur, $redirect) if (statut_modifiable_auteur($id_auteur, $auteur)) { $ancre = "legender_auteur-$id_auteur"; $clic = _T("admin_modifier_auteur"); - $h = generer_url_ecrire("auteur_infos","id_auteur=$id_auteur&initial=0"); + $h = generer_url_ecrire("auteur_infos","id_auteur=$id_auteur"); if ((_SPIP_AJAX === 1 ) AND !$redirect) { $evt = "\nonclick=" . ajax_action_declencheur($h,$ancre); $h = "<a\nhref='$h#$ancre'$evt>$clic</a>"; -- GitLab