diff --git a/.gitattributes b/.gitattributes index 117b8722cd320786e2b81f8adc5ba335f42aea01..ca7cedfa97e5979308c9d74bf2b7b0fc8512703d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -309,6 +309,7 @@ ecrire/action/editer_mot.php -text ecrire/action/ical.php -text ecrire/action/iconifier.php -text ecrire/action/instituer_article.php -text +ecrire/action/instituer_auteur.php -text ecrire/action/instituer_breve.php -text ecrire/action/instituer_collaboration.php -text ecrire/action/instituer_forum.php -text @@ -404,6 +405,7 @@ ecrire/fragments/editer_mot.php -text ecrire/fragments/grouper_mots.php -text ecrire/fragments/iconifier.php -text ecrire/fragments/informer.php -text +ecrire/fragments/instituer_auteur.php -text ecrire/fragments/legender.php -text ecrire/fragments/memoriser.php -text ecrire/fragments/petitionner.php -text @@ -418,7 +420,6 @@ ecrire/fragments/virtualiser.php -text ecrire/inc/actions.php -text ecrire/inc/agenda.php -text ecrire/inc/article_select.php -text -ecrire/inc/auteur_voir.php -text ecrire/inc/boutons.php -text ecrire/inc/chercher_logo.php -text ecrire/inc/chercher_rubrique.php -text @@ -453,6 +454,7 @@ ecrire/inc/install_ldap3.php -text ecrire/inc/install_ldap4.php -text ecrire/inc/install_ldap5.php -text ecrire/inc/install_unpack.php -text +ecrire/inc/instituer_auteur.php -text ecrire/inc/joindre.php -text ecrire/inc/lang_liste.php -text ecrire/inc/legender.php -text diff --git a/ecrire/action/instituer_auteur.php b/ecrire/action/instituer_auteur.php new file mode 100644 index 0000000000000000000000000000000000000000..d7e32ed1df9ffd07410fb7a892dd5a8d9058b512 --- /dev/null +++ b/ecrire/action/instituer_auteur.php @@ -0,0 +1,50 @@ +<?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/@action_instituer_collaboration_dist +function action_instituer_auteur_dist() { + + include_spip('inc/actions'); + $var_f = charger_fonction('controler_action_auteur', 'inc'); + $var_f(); + + $arg = _request('arg'); + + if (preg_match(",^(\d+)\W-(\d+)$,", $arg, $r)) + spip_query("DELETE FROM spip_auteurs_rubriques WHERE id_auteur=".$r[1]." AND id_rubrique=" . $r[2]); + else if (!preg_match(',^(\d+)$,', $arg, $r)) { + spip_log("action_instituer_auteur_dist: $arg incompris"); + } else { + $id_auteur = $r[1]; + if ($id_parent = intval(_request('id_parent'))) { + include_spip('base/abstract_sql'); + spip_abstract_insert('spip_auteurs_rubriques', "(id_auteur,id_rubrique)", "(" .$id_auteur .',' . $id_parent . ')'); + } + if ($statut = _request('statut')) { + if (!ereg("^(0minirezo|1comite|5poubelle|6forum)$",$statut)) + spip_log("action_instituer_auteur_dist: $statut incompris pour $id_auteur"); + else { + spip_query("UPDATE spip_auteurs SET statut='".$statut . "' WHERE id_auteur=" . $id_auteur); + + if ($GLOBALS['meta']['activer_moteur'] == 'oui') { + include_spip("inc/indexation"); + marquer_indexer('spip_auteurs', $id_auteur); + } + // Mettre a jour les fichiers .htpasswd et .htpasswd-admin + ecrire_acces(); + } + } + } +} +?> diff --git a/ecrire/action/supprimer.php b/ecrire/action/supprimer.php index 643a00dcc305714ee79d8fcd1a44652ba9c52c1d..d3de05d627d851c0d27f6645f5808cf0ed706f23 100644 --- a/ecrire/action/supprimer.php +++ b/ecrire/action/supprimer.php @@ -64,14 +64,6 @@ function action_supprimer_rubrique($id_rubrique) } -// http://doc.spip.org/@action_supprimer_auteur_rubrique -function action_supprimer_auteur_rubrique($arg) -{ - if (preg_match(",^\W*(\d+)\W+(\d+)$,", $arg, $r)) - spip_query("DELETE FROM spip_auteurs_rubriques WHERE id_auteur=".$r[1]." AND id_rubrique=" . $r[2]); - else spip_log("action_supprimer_auteur_rubrique $arg pas compris"); -} - function supprimer_document_et_vignette($arg) { $result = spip_query("SELECT id_vignette, fichier FROM spip_documents WHERE id_document=$arg"); diff --git a/ecrire/exec/auteur_infos.php b/ecrire/exec/auteur_infos.php index e501e16816f4e2fa49f5b0f0c77d844138d3ffe5..c23739a62885bc9c4bba93cb61f03bb22aeed564 100644 --- a/ecrire/exec/auteur_infos.php +++ b/ecrire/exec/auteur_infos.php @@ -12,7 +12,6 @@ if (!defined("_ECRIRE_INC_VERSION")) return; include_spip('inc/presentation'); -include_spip('inc/auteur_voir'); include_spip('inc/acces'); include_spip('base/abstract_sql'); @@ -51,20 +50,24 @@ global $ajouter_id_article, // // Recuperer id_auteur ou se preparer a l'inventer // - if ($id_auteur) { - $auteur = spip_fetch_array(spip_query("SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur")); - 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'; -} + if ($id_auteur) { + $auteur = spip_fetch_array(spip_query("SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur")); + 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'; + } -if (!statut_modifiable_auteur($id_auteur, $auteur)) { - gros_titre(_T('info_acces_interdit')); - exit; - } + // formulaire de changement de statut + // (faux chargement pour disposer de la fonction ci-dessous. a revoir) + $f = charger_fonction('instituer_auteur', 'inc'); + + if (!statut_modifiable_auteur($id_auteur, $auteur)) { + gros_titre(_T('info_acces_interdit')); + exit; + } // // Modification (et creation si besoin) @@ -80,11 +83,11 @@ if (strval($nom)!='') { if (($new_login<>$old_login) AND $connect_statut == '0minirezo' AND $connect_toutes_rubriques AND $auteur['source'] == 'spip') { if ($new_login) { if (strlen($new_login) < 4) - $echec .= "<p>"._T('info_login_trop_court'); + $echec .= "\n<p>"._T('info_login_trop_court'); else { $n = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM spip_auteurs WHERE login=" . spip_abstract_quote($new_login) . " AND id_auteur!=$id_auteur AND statut!='5poubelle'")); if ($n['n']) - $echec .= "<p>"._T('info_login_existant'); + $echec .= "\n<p>"._T('info_login_existant'); else if ($new_login != $old_login) { $modif_login = true; $auteur['login'] = $new_login; @@ -101,9 +104,9 @@ if (strval($nom)!='') { // changement de pass, a securiser en jaja ? if ($new_pass AND ($statut != '5poubelle') AND $auteur['login'] AND $auteur['source'] == 'spip') { if ($new_pass != $new_pass2) - $echec .= "<p>"._T('info_passes_identiques'); + $echec .= "\n<p>"._T('info_passes_identiques'); else if ($new_pass AND strlen($new_pass) < 6) - $echec .= "<p>"._T('info_passe_trop_court'); + $echec .= "\n<p>"._T('info_passe_trop_court'); else { $modif_login = true; $auteur['new_pass'] = $new_pass; @@ -124,7 +127,7 @@ if (strval($nom)!='') { if (isset($email)) { $email = trim($email); if ($email !='' AND !email_valide($email)) - $echec .= "<p>"._T('info_email_invalide'); + $echec .= "\n<p>"._T('info_email_invalide'); $auteur['email'] = $email; } } @@ -174,9 +177,6 @@ if (strval($nom)!='') { } } -// Appliquer des modifications de statut -modifier_statut_auteur($auteur, $_POST['statut'], $_POST['id_parent']); - // Si on modifie la fiche auteur, reindexer et modifier htpasswd if ($nom OR $statut) { @@ -236,9 +236,9 @@ function exec_affiche_auteur_info_dist($id_auteur, $auteur, $echec, $redirect, if ($echec){ debut_cadre_relief(); echo http_img_pack("warning.gif", _T('info_avertissement'), "width='48' height='48' align='left'"); - echo "<font color='red'>$echec <p>"._T('info_recommencer')."</font>"; + echo "<font color='red'>$echec \n<p>"._T('info_recommencer')."</font>"; fin_cadre_relief(); - echo "<p>"; + echo "\n<p>"; } debut_cadre_formulaire(); @@ -262,40 +262,40 @@ function formulaire_auteur_infos($id_auteur, $auteur, $onfocus, $redirect, $ajou // Infos personnelles // -echo "<div class='serif'>"; +echo "\n<div class='serif'>"; debut_cadre_relief("fiche-perso-24.gif", false, "", _T("icone_informations_personnelles")); echo _T('titre_cadre_signature_obligatoire'); -echo "("._T('entree_nom_pseudo').")<BR>"; -echo "<INPUT TYPE='text' NAME='nom' CLASS='formo' VALUE=\"".entites_html($auteur['nom'])."\" SIZE='40' $onfocus><P>"; +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 ($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'><P>\n"; + 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 "<P>"; + echo "\n<p>"; } -echo "<B>"._T('entree_infos_perso')."</B><BR>"; -echo "("._T('entree_biographie').")<BR>"; +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>"; +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>"; +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 "<p>"; + echo "\n<p>"; if ($options == "avancees") { debut_cadre_enfonce("cadenas-24.gif", false, "", _T('entree_cle_pgp')); @@ -303,22 +303,18 @@ if ($options == "avancees") { echo entites_html($auteur['pgp']); echo "</TEXTAREA>\n"; fin_cadre_enfonce(); - echo "<p>"; + echo "\n<p>"; } else { echo "<input type='hidden' name='pgp' value=\"".entites_html($auteur['pgp'])."\">"; } -echo "<p>"; +echo "\n<p>"; if ($champs_extra) { include_spip('inc/extra'); extra_saisie($auteur['extra'], 'auteurs', $auteur['statut']); } -fin_cadre_relief(); -echo "<p>"; - - // // Login et mot de passe : @@ -350,26 +346,26 @@ if (($edit_login OR $edit_pass) AND $connect_id_auteur == $id_auteur) { 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 "<p>"; + echo "\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>"; + 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"; } else { - echo "<fieldset style='padding:5'><legend><B>"._T('item_login')."</B><BR></legend><br><b>".$auteur['login']."</b> "; - echo "<i> ("._T('info_non_modifiable').")</i><p>"; + 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>"; } // On ne peut modifier le mot de passe en cas de source externe (par exemple LDAP) if ($edit_pass) { echo "<B>"._T('entree_nouveau_passe')."</B> "; - echo "<font color='red'>("._T('info_plus_cinq_car').")</font> :<BR>"; - echo "<INPUT TYPE='password' NAME='new_pass' CLASS='formo' VALUE=\"\" SIZE='40'><BR>\n"; - echo _T('info_confirmer_passe')."<BR>"; + echo "<font color='red'>("._T('info_plus_cinq_car').")</font> :<br />\n"; + echo "<INPUT TYPE='password' NAME='new_pass' CLASS='formo' VALUE=\"\" SIZE='40'><br />\n"; + echo _T('info_confirmer_passe')."<br />\n"; echo "<INPUT TYPE='password' NAME='new_pass2' CLASS='formo' VALUE=\"\" SIZE='40'><P>\n"; } fin_cadre_relief(); @@ -382,15 +378,11 @@ echo "<p />"; if ($apparait) apparait_auteur_infos($id_auteur, $auteur); -// Afficher le formulaire de changement de statut (cf. inc/acces) -afficher_formulaire_statut_auteur ($id_auteur, $auteur['statut']); - - echo "<INPUT NAME='ajouter_id_article' VALUE='$ajouter_id_article' TYPE='hidden'>\n"; echo "<INPUT NAME='redirect' VALUE='$redirect' TYPE='hidden'>\n"; echo "<INPUT NAME='redirect_ok' VALUE='oui' TYPE='hidden'>\n"; -echo "<DIV align='right'><INPUT TYPE='submit' CLASS='fondo' NAME='Valider' VALUE='"._T('bouton_enregistrer')."'></DIV>"; +echo "\n<div align='right'><INPUT TYPE='submit' CLASS='fondo' NAME='Valider' VALUE='"._T('bouton_enregistrer')."'></DIV>"; echo pipeline('affiche_milieu', array('args' => array( @@ -400,10 +392,14 @@ echo pipeline('affiche_milieu', ); echo "</div>"; - +fin_cadre_relief(); echo "</form>"; +// Afficher le formulaire de changement de statut (cf. inc_acces) + $f = charger_fonction('instituer_auteur', 'inc'); + echo $f($id_auteur, $auteur['statut'], "auteurs_edit"); } + // // Apparaitre dans la liste des redacteurs connectes // @@ -416,18 +412,18 @@ function apparait_auteur_infos($id_auteur, $auteur) debut_cadre_relief("messagerie-24.gif", false, "", _T('info_liste_redacteurs_connectes')); - echo "<div>"._T('texte_auteur_messagerie')."</div>"; + echo "\n<div>"._T('texte_auteur_messagerie')."</div>"; if ($auteur['imessage']=="non"){ echo "<INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='oui' id='perso_activer_imessage_on'>"; echo " <label for='perso_activer_imessage_on'>"._T('bouton_radio_apparaitre_liste_redacteurs_connectes')."</label> "; - echo "<BR><INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='non' CHECKED id='perso_activer_imessage_off'>"; + echo "<br />\n<INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='non' CHECKED id='perso_activer_imessage_off'>"; echo " <B><label for='perso_activer_imessage_off'>"._T('bouton_radio_non_apparaitre_liste_redacteurs_connectes')."</label></B> "; } else { echo "<INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='oui' id='perso_activer_imessage_on' CHECKED>"; echo " <B><label for='perso_activer_imessage_on'>"._T('bouton_radio_apparaitre_liste_redacteurs_connectes')."</label></B> "; - echo "<BR><INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='non' id='perso_activer_imessage_off'>"; + echo "<br />\n<INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='non' id='perso_activer_imessage_off'>"; echo " <label for='perso_activer_imessage_off'>"._T('bouton_radio_non_apparaitre_liste_redacteurs_connectes')."</label> "; } diff --git a/ecrire/exec/auteurs_edit.php b/ecrire/exec/auteurs_edit.php index c2142d7cc036754692796a8bfbf708d11c16cd31..0316e95fb70358da949ece84b9cebce2ce49fb02 100644 --- a/ecrire/exec/auteurs_edit.php +++ b/ecrire/exec/auteurs_edit.php @@ -33,7 +33,8 @@ function exec_auteurs_edit_dist() if (!$auteur = spip_fetch_array($result)) die('erreur'); - modifier_statut_auteur($auteur, $_POST['statut'], $_POST['id_parent']); + // Afficher le formulaire de changement de statut (cf. inc_acces) + $f = charger_fonction('instituer_auteur', 'inc'); debut_page($auteur['nom'], "auteurs", (($connect_id_auteur == $id_auteur) ? "perso" : "redacteurs")); @@ -55,7 +56,7 @@ function exec_auteurs_edit_dist() 'id_auteur'=>$id_auteur), 'data'=>'') ); - table_auteurs_edit($auteur); + table_auteurs_edit($auteur, $f); echo pipeline('affiche_milieu', array('args' => array( 'exec'=>'auteurs_edit', @@ -68,9 +69,9 @@ function exec_auteurs_edit_dist() } // http://doc.spip.org/@table_auteurs_edit -function table_auteurs_edit($auteur) +function table_auteurs_edit($auteur, $instituer_auteur) { - global $connect_statut, $connect_id_auteur, $champs_extra, $options ; + global $connect_toutes_rubriques, $connect_statut, $connect_id_auteur, $champs_extra, $options,$spip_lang_right ; $id_auteur=$auteur['id_auteur']; $nom=$auteur['nom']; @@ -128,11 +129,7 @@ function table_auteurs_edit($auteur) extra_affichage($extra, "auteurs"); } - // Afficher le formulaire de changement de statut (cf. inc_acces) - if ($options == 'avancees') - afficher_formulaire_statut_auteur ($id_auteur, $auteur['statut'], "auteurs_edit"); - - fin_cadre_relief(); + echo $instituer_auteur($id_auteur, $auteur['statut'], "auteurs_edit"); echo "<div> </div>"; diff --git a/ecrire/fragments/instituer_auteur.php b/ecrire/fragments/instituer_auteur.php new file mode 100644 index 0000000000000000000000000000000000000000..805b265f559ea2723c79ca76bf8ebbcaefa14187 --- /dev/null +++ b/ecrire/fragments/instituer_auteur.php @@ -0,0 +1,26 @@ +<?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; + +function fragments_instituer_auteur_dist() +{ + $script = _request('script'); + $id_auteur = intval(_request('id_auteur')); + if (!preg_match('/^\w+$/', $script)) die("$script !!"); + + $r = spip_fetch_array(spip_query("SELECT statut FROM spip_auteurs WHERE id_auteur=$id_auteur")); + + $f = charger_fonction('instituer_auteur', 'inc'); + return $f(_request('id_auteur'), $r['statut'] , _request('script')); +} +?> diff --git a/ecrire/fragments/selectionner.php b/ecrire/fragments/selectionner.php index 8da36f45f726c956b55297ccdec7083128059410..fb6d3cf9ed4aa5e5566fec2a0e96cf6fbf10c35a 100644 --- a/ecrire/fragments/selectionner.php +++ b/ecrire/fragments/selectionner.php @@ -24,7 +24,7 @@ function fragments_selectionner_dist() include_spip('inc/texte'); include_spip('inc/mini_nav'); - return mini_nav ($id, "choix_parent", "this.form.id_rubrique.value=::sel::;this.form.titreparent.value='::sel2::';findObj('selection_rubrique').style.display='none';", $exclus, $rac, $type!='breve'); + return mini_nav ($id, "choix_parent", "this.form.id_rubrique.value=::sel::;this.form.titreparent.value='::sel2::';findObj_forcer('selection_rubrique').style.display='none';", $exclus, $rac, $type!='breve'); } ?> diff --git a/ecrire/inc/chercher_rubrique.php b/ecrire/inc/chercher_rubrique.php index 19bb0151c544e722df524238cf80acd9041fef28..90f09a9e29593523fc11583cd4e87077ca8e580c 100644 --- a/ecrire/inc/chercher_rubrique.php +++ b/ecrire/inc/chercher_rubrique.php @@ -204,7 +204,7 @@ function selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem=0) { $exclus = "&exclus=$idem&rac=oui"; if ($id_rubrique) - list($titre_parent) = spip_fetch_array(spip_query("SELECT titre FROM spip_rubriques WHERE id_rubrique=$id_rubrique"), SPIP_NUM); + list($titre_parent) = spip_fetch_array(spip_query("SELECT titr<e FROM spip_rubriques WHERE id_rubrique=$id_rubrique"), SPIP_NUM); else if ($type == 'auteur') $titre_parent = ' '; else @@ -212,11 +212,11 @@ function selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem=0) { return "<table width='100%'><tr width='100%'><td width='45'> <a href=\"#\" - onClick=\"if(findObj('selection_rubrique').style.display=='none') + onClick=\"if(findObj_forcer('selection_rubrique').style.display=='none') {charger_id_url_si_vide('" . generer_url_ecrire('selectionner',"id=$id_rubrique$exclus&type=$type", true) ."', 'selection_rubrique');} - else {findObj('selection_rubrique').style.display='none';}\" + else {findObj_forcer('selection_rubrique').style.display='none';}\" ><img src='". _DIR_IMG_PACK . "loupe.png' style='vertical-align: middle;' /></a><img src='". _DIR_IMG_PACK . "searching.gif' id='img_selection_rubrique' style='visibility: hidden;'> diff --git a/ecrire/inc/auteur_voir.php b/ecrire/inc/instituer_auteur.php similarity index 59% rename from ecrire/inc/auteur_voir.php rename to ecrire/inc/instituer_auteur.php index d34752465b67499822550185eb71f41b1d1cd086..d90cee269fe7b54eb2f0e66b2c84efba9eacbfd1 100644 --- a/ecrire/inc/auteur_voir.php +++ b/ecrire/inc/instituer_auteur.php @@ -13,134 +13,124 @@ if (!defined("_ECRIRE_INC_VERSION")) return; include_spip('inc/actions'); - -// http://doc.spip.org/@cadre_auteur_infos -function cadre_auteur_infos($id_auteur, $auteur) -{ - global $connect_statut; - - if ($id_auteur) { - debut_boite_info(); - echo "<CENTER>"; - echo "<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=1><B>"._T('titre_cadre_numero_auteur')." :</B></FONT>"; - echo "<BR><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=6><B>$id_auteur</B></FONT>"; - echo "</CENTER>"; - - -// "Voir en ligne" si l'auteur a un article publie -// seuls les admins peuvent "previsualiser" une page auteur - $n = spip_num_rows(spip_query("SELECT lien.id_article FROM spip_auteurs_articles AS lien, spip_articles AS articles WHERE lien.id_auteur=$id_auteur AND lien.id_article=articles.id_article AND articles.statut='publie'")); - if ($n) - voir_en_ligne ('auteur', $id_auteur, 'publie'); - else if ($connect_statut == '0minirezo') - voir_en_ligne ('auteur', $id_auteur, 'prop'); - - fin_boite_info(); - } -} +include_spip('inc/texte'); +include_spip('inc/layer'); +include_spip('inc/auteur_voir'); +include_spip('inc/presentation'); // affiche le statut de l'auteur dans l'espace prive +// les admins voient et peuvent modifier les droits d'un auteur +// les admins restreints les voient mais +// ne peuvent les utiliser que pour mettre un auteur a la poubelle -// http://doc.spip.org/@afficher_formulaire_statut_auteur -function afficher_formulaire_statut_auteur ($id_auteur, $statut, $post='') { - global $connect_statut, $connect_toutes_rubriques, $connect_id_auteur; - global $spip_lang_right; - - +// http://doc.spip.org/@auteur_voir_rubriques +function inc_instituer_auteur_dist($id_auteur, $statut, $url_self) +{ + global $connect_toutes_rubriques, $connect_id_auteur, $connect_statut, $spip_lang_right; + if ($connect_statut != "0minirezo") return; - $droit = ( ($connect_toutes_rubriques OR $statut != "0minirezo") - && ($connect_id_auteur != $id_auteur)); + $result_admin = spip_query("SELECT rubriques.id_rubrique, titre FROM spip_auteurs_rubriques AS lien, spip_rubriques AS rubriques WHERE lien.id_auteur=$id_auteur AND lien.id_rubrique=rubriques.id_rubrique"); - if ($post && $droit) { - $url_self = $post; - echo "<p />"; - echo generer_url_post_ecrire($post, "id_auteur=$id_auteur"); - } else - $url_self = "auteur_infos"; + $restreint = spip_num_rows($result_admin); - // les admins voient et peuvent modifier les droits - // les admins restreints les voient mais - // ne peuvent les utiliser que pour mettre un auteur a la poubelle + if (!$restreint) + $res .= _T('info_admin_gere_toutes_rubriques'); + else { + $modif = ($connect_toutes_rubriques AND $connect_id_auteur != $id_auteur) ? "id_auteur=$id_auteur" : ''; - debut_cadre_relief(); + $lien .= !$modif ? '' : _T('lien_supprimer_rubrique'); - if ($droit) { - echo "<b>"._T('info_statut_auteur')." </b> "; - echo choix_statut_auteur($statut); + $res .= _T('info_admin_gere_rubriques') + . "\n<ul style='list-style-image: url(" + . _DIR_IMG_PACK + . "rubrique-12.gif)'>"; + + while ($row_admin = spip_fetch_array($result_admin)) { + $id_rubrique = $row_admin["id_rubrique"]; + + $res .= "<li><a href='" + . generer_url_ecrire("naviguer","id_rubrique=$id_rubrique") + . "'>" + . typo($row_admin["titre"]) + . "</a>" + . (!$modif ? '' : + ajax_action_auteur('instituer_auteur', "$id_auteur/-$id_rubrique", $url_self, $modif, array(" [<font size='1'>$lien</font>]"))) + . '</li>'; + } + $res .= "</ul>"; } // si pas admin au chargement, rien a montrer. - echo "<div id='changer_statut_auteur'", - (($statut == '0minirezo') ? '' : " style='visibility: hidden'"), - '>'; - $restreint = auteur_voir_rubriques($id_auteur, $url_self); + $vis = ($statut == '0minirezo') ? '' : " style='visibility: hidden'"; // Ajouter une rubrique a un administrateur restreint if ($connect_toutes_rubriques AND $connect_id_auteur != $id_auteur) { - echo debut_block_visible("statut$id_auteur"); - echo "\n<div id='ajax_rubrique' class='arial1'><br />\n"; + $res .=debut_block_visible("statut$id_auteur"); + $res .="\n<div id='ajax_rubrique' class='arial1'><br />\n"; if (!$restreint) - echo "<b>"._T('info_restreindre_rubrique')."</b><br />"; + $res .="<b>"._T('info_restreindre_rubrique')."</b><br />"; else - echo "<b>"._T('info_ajouter_rubrique')."</b><br />"; - echo "\n<input name='id_auteur' value='$id_auteur' type='hidden' />"; + $res .="<b>"._T('info_ajouter_rubrique')."</b><br />"; + $res .="\n<input name='id_auteur' value='$id_auteur' type='hidden' />"; $selecteur_rubrique = charger_fonction('chercher_rubrique', 'inc'); - echo $selecteur_rubrique(0, 'auteur', false); - echo "</div>\n"; - echo fin_block(); + $res .=$selecteur_rubrique(0, 'auteur', false); + $res .="</div>\n"; + $res .=fin_block(); } + + $droit = (($connect_toutes_rubriques OR $statut != "0minirezo") + && ($connect_id_auteur != $id_auteur)); - echo '</div>'; // fin de la balise a visibilite conditionnelle + $ancre = "instituer_auteur-" . intval($id_auteur); - if ($post && $droit) { - echo "<div align='", - $spip_lang_right, - "'><input type='submit' class='fondo' value=\"", - _T('bouton_valider'), - "\" /></div>", - "</form>\n"; + if ($droit) { + $res = "<b>"._T('info_statut_auteur')." </b> " + . choix_statut_auteur($statut, "$ancre-aff") + . "<div id='$ancre-aff'$vis>" + . $res + . "</div><div align='" + . $spip_lang_right + . "'><input type='submit' class='fondo' value=\"" + . _T('bouton_valider') + . "\" /></div>"; + + $res = ajax_action_auteur('instituer_auteur', $id_auteur, $url_self, (!$id_auteur ? "" : "id_auteur=$id_auteur"), $res); } - fin_cadre_relief(); + return (_request('var_ajaxcharset'))? $res : + (debut_cadre_relief('',true) + . "<div id='" + . $ancre + . "'>" + . $res + . '</div>' + . fin_cadre_relief(true)); } -// http://doc.spip.org/@auteur_voir_rubriques -function auteur_voir_rubriques($id_auteur, $url_self) +// http://doc.spip.org/@cadre_auteur_infos +function cadre_auteur_infos($id_auteur, $auteur) { - global $connect_toutes_rubriques, $connect_id_auteur; - - $result_admin = spip_query("SELECT rubriques.id_rubrique, titre FROM spip_auteurs_rubriques AS lien, spip_rubriques AS rubriques WHERE lien.id_auteur=$id_auteur AND lien.id_rubrique=rubriques.id_rubrique"); + global $connect_statut; - $restreint = spip_num_rows($result_admin); + if ($id_auteur) { + debut_boite_info(); + echo "<CENTER>"; + echo "<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=1><B>"._T('titre_cadre_numero_auteur')." :</B></FONT>"; + echo "<BR><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=6><B>$id_auteur</B></FONT>"; + echo "</CENTER>"; - if (!$restreint) { - echo _T('info_admin_gere_toutes_rubriques'); - } else { - $modif = ($connect_toutes_rubriques AND $connect_id_auteur != $id_auteur) ? "id_auteur=$id_auteur" : ''; - echo _T('info_admin_gere_rubriques'), - "\n<ul style='list-style-image: url(", - _DIR_IMG_PACK, - "rubrique-12.gif)'>"; +// "Voir en ligne" si l'auteur a un article publie +// seuls les admins peuvent "previsualiser" une page auteur + $n = spip_num_rows(spip_query("SELECT lien.id_article FROM spip_auteurs_articles AS lien, spip_articles AS articles WHERE lien.id_auteur=$id_auteur AND lien.id_article=articles.id_article AND articles.statut='publie'")); + if ($n) + voir_en_ligne ('auteur', $id_auteur, 'publie'); + else if ($connect_statut == '0minirezo') + voir_en_ligne ('auteur', $id_auteur, 'prop'); - while ($row_admin = spip_fetch_array($result_admin)) { - $id_rubrique = $row_admin["id_rubrique"]; - - echo "<li><a href='", generer_url_ecrire("naviguer","id_rubrique=$id_rubrique") . "'>", - typo($row_admin["titre"]), - "</a>"; - - if ($modif) { - echo " <font size='1'>[<a href='", redirige_action_auteur('supprimer', "auteur_rubrique-$id_auteur-$id_rubrique", $url_self, $modif), "'>", - _T('lien_supprimer_rubrique'), - "</a>]</font>"; - } - echo '</li>'; - } - echo "</ul>"; - } - return $restreint; + fin_boite_info(); + } } // http://doc.spip.org/@statut_modifiable_auteur @@ -157,33 +147,13 @@ function statut_modifiable_auteur($id_auteur, $auteur) ($id_auteur AND ($auteur['statut'] != "0minirezo"))))); } -// http://doc.spip.org/@modifier_statut_auteur -function modifier_statut_auteur (&$auteur, $statut, $add_rub='') { - global $connect_statut, $connect_toutes_rubriques; - // changer le statut ? - $id_auteur= intval($auteur['id_auteur']); - if (statut_modifiable_auteur($id_auteur, $auteur) && - ereg("^(0minirezo|1comite|5poubelle|6forum)$",$statut)) { - $auteur['statut'] = $statut; - spip_query("UPDATE spip_auteurs SET statut='".$statut."' WHERE id_auteur=$id_auteur"); - } - - // modif auteur restreint, seulement pour les admins - if ($connect_toutes_rubriques) { - if ($add_rub=intval($add_rub)) { - include_spip('base/abstract_sql'); - spip_abstract_insert('spip_auteurs_rubriques', "(id_auteur,id_rubrique)", "($id_auteur, $add_rub)"); - } - } -} - // Menu de choix d'un statut d'auteur // http://doc.spip.org/@choix_statut_auteur -function choix_statut_auteur($statut) { +function choix_statut_auteur($statut, $ancre) { global $connect_toutes_rubriques; - $menu = "<select name='statut' size=1 class='fondl' - onChange=\"setvisibility('changer_statut_auteur', this.selectedIndex ? 'hidden' : 'visible');\">"; + $menu = "<select name='statut' size='1' class='fondl' + onChange=\"findObj_forcer('$ancre').style.visibility = (this.selectedIndex ? 'hidden' : 'visible');\">"; // Si on est admin restreint, on n'a pas le droit de modifier un admin if ($connect_toutes_rubriques) diff --git a/ecrire/inc/mini_nav.php b/ecrire/inc/mini_nav.php index 09d89dce767f6d701a2cffd46798c66fd852fddb..c4f74d7c9d0a479dbaa76467734e3dbf145e72c8 100644 --- a/ecrire/inc/mini_nav.php +++ b/ecrire/inc/mini_nav.php @@ -133,15 +133,15 @@ function mini_nav ($sel, $rac="",$fonction="", $rub_exclus=0, $aff_racine=false, if ($aff_racine) { $onClick = " aff_selection('rubrique','$rac', '0');"; # ce lien provoque la selection (directe) de la rubrique cliquee - $ondbClick = "findObj('id_parent').value=0;"; + $ondbClick = "findObj_forcer('id_parent').value=0;"; # et l'affichage de son titre dans le bandeau - $ondbClick .= "findObj('titreparent').value='" + $ondbClick .= "findObj_forcer('titreparent').value='" . strtr( str_replace("'", "’", str_replace('"', """, textebrut(_T('info_racine_site')))), "\n\r", " ")."';"; - $ondbClick .= "findObj('selection_rubrique').style.display='none';"; + $ondbClick .= "findObj_forcer('selection_rubrique').style.display='none';"; } if ($plonger)