Browse Source

gestion des auteurs : on casse tout

spip-2.0
Fil 16 years ago
parent
commit
14dcaca5e9
  1. 6
      .gitattributes
  2. 95
      ecrire/action/editer_auteur.php
  3. 2
      ecrire/action/editer_auteurs.php
  4. 2
      ecrire/exec/accueil.php
  5. 111
      ecrire/exec/auteur_infos.php
  6. 2
      ecrire/exec/auteurs.php
  7. 19
      ecrire/exec/auteurs_edit.php
  8. 3
      ecrire/exec/editer_auteurs.php
  9. 43
      ecrire/exec/legender_auteur.php
  10. 2
      ecrire/exec/message.php
  11. 2
      ecrire/exec/messagerie.php
  12. 2
      ecrire/exec/naviguer.php
  13. 283
      ecrire/inc/auteur_infos.php
  14. 35
      ecrire/inc/autoriser.php
  15. 2
      ecrire/inc/boutons.php
  16. 2
      ecrire/inc/commencer_page.php
  17. 24
      ecrire/inc/editer_auteurs.php
  18. 4
      ecrire/inc/formater_auteur.php
  19. 2
      ecrire/inc/forum.php
  20. 2
      ecrire/inc/gadgets.php
  21. 2
      ecrire/inc/informer_auteur.php
  22. 208
      ecrire/inc/instituer_auteur.php
  23. 2
      ecrire/inc/message_select.php
  24. 3
      ecrire/inc/urls.php
  25. 2
      ecrire/inc/vieilles_defs.php

6
.gitattributes vendored

@ -341,6 +341,7 @@ ecrire/action/dater.php -text
ecrire/action/desinstaller_plugin.php -text
ecrire/action/documenter.php -text
ecrire/action/editer_article.php -text
ecrire/action/editer_auteur.php -text
ecrire/action/editer_auteurs.php -text
ecrire/action/editer_breve.php -text
ecrire/action/editer_message.php -text
@ -364,7 +365,6 @@ ecrire/action/instituer_rubrique_breves.php -text
ecrire/action/instituer_syndic.php -text
ecrire/action/joindre.php -text
ecrire/action/legender.php -text
ecrire/action/legender_auteur.php -text
ecrire/action/logout.php -text
ecrire/action/petitionner.php -text
ecrire/action/poster_forum_prive.php -text
@ -407,7 +407,6 @@ ecrire/exec/articles_tous.php -text
ecrire/exec/articles_versions.php -text
ecrire/exec/auteur_infos.php -text
ecrire/exec/auteurs.php -text
ecrire/exec/auteurs_edit.php -text
ecrire/exec/breves.php -text
ecrire/exec/breves_edit.php -text
ecrire/exec/breves_voir.php -text
@ -444,7 +443,6 @@ ecrire/exec/install.php -text
ecrire/exec/instituer_auteur.php -text
ecrire/exec/lang_raccourcis.php -text
ecrire/exec/legender.php -text
ecrire/exec/legender_auteur.php -text
ecrire/exec/meme_rubrique.php -text
ecrire/exec/memoriser.php -text
ecrire/exec/menu_agenda.php -text
@ -486,6 +484,7 @@ ecrire/inc/agenda.php -text
ecrire/inc/aider.php -text
ecrire/inc/ajouter_documents.php -text
ecrire/inc/article_select.php -text
ecrire/inc/auteur_infos.php -text
ecrire/inc/autoriser.php -text
ecrire/inc/boutons.php -text
ecrire/inc/chercher_logo.php -text
@ -523,7 +522,6 @@ 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

95
ecrire/action/legender_auteur.php → ecrire/action/editer_auteur.php

@ -16,21 +16,21 @@ include_spip('inc/filtres');
include_spip('inc/acces');
include_spip('base/abstract_sql');
// http://doc.spip.org/@action_legender_auteur_dist
function action_legender_auteur_dist()
{
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
function action_editer_auteur_dist() {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
if (!preg_match(",^(\d+)\D(\d*)(\D(\w*))?$,", $arg, $r)) {
$r = "action_legender_auteur_dist $arg pas compris";
if (!preg_match(",^(\d+)$,", $arg, $r)) {
$r = "action_editer_auteur_dist $arg pas compris";
spip_log($r);
} else redirige_par_entete(action_legender_auteur_post($r));
} else {
$url = action_legender_auteur_post($r);
redirige_par_entete($url);
}
}
// http://doc.spip.org/@action_legender_auteur_post
function action_legender_auteur_post($r)
{
function action_legender_auteur_post($r) {
global $auteur_session;
$bio = _request('bio');
@ -183,7 +183,49 @@ 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
//
// Modifications de statut
//
// TODO : autorisations correspondantes !
//
if ($statut = _request('statut')
AND autoriser('modifier', 'auteur', $id_auteur, $qui = null,
$opt = array('statut'=>$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="._q($statut) . " WHERE id_auteur=" . _q($id_auteur));
}
}
// Rubriques restreintes
$restreintes = _request('restreintes');
if ($id_parent = intval(_request('id_parent'))) {
if (is_array($restreintes))
$restreintes[] = $id_parent;
else
$restreintes = array($id_parent);
}
if (is_array($restreintes)
AND autoriser('modifier', 'auteur', $id_auteur, $qui = null,
$opt = array('restreint'=>$restreintes))) {
include_spip('base/abstract_sql');
spip_query("DELETE FROM spip_auteurs_rubriques WHERE id_auteur="._q($id_auteur));
foreach (array_unique($restreintes) as $id_rub)
if ($id_rub = intval($id_rub)) // si '0' on ignore
spip_abstract_insert('spip_auteurs_rubriques', "(id_auteur,id_rubrique)", "($id_auteur,$id_rub)");
}
// Lier a un article
if ($id_article = intval(_request('lier_id_article'))
#AND autoriser('modifier', 'article', $id_article)
) {
spip_query("INSERT spip_auteurs_articles (id_article,id_auteur) VALUES ($id_article,$id_auteur)");
}
// Si on modifie la fiche auteur, reindexer
if ($GLOBALS['meta']['activer_moteur'] == 'oui') {
include_spip("inc/indexation");
marquer_indexer('spip_auteurs', $id_auteur);
@ -193,28 +235,21 @@ function action_legender_auteur_post($r)
$echec = $echec ? '&echec=' . join('@@@', $echec) : '';
// il faudrait rajouter OR $echec mais il y a conflit avec Ajax
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.
$redirect = rawurldecode($redirect);
$ret = !$redirect ? ''
: ('&redirect=' . rawurlencode(rawurldecode($redirect)));
if ($echec) {
// revenir au formulaire de saisie
$ret = !$redirect
? ''
: ('&redirect=' . rawurlencode($redirect));
$script = (_request('var_ajaxcharset') ? 'legender_auteur' : 'auteur_infos');
return generer_url_ecrire($script, "id_auteur=$id_auteur&initial=$init$echec$ret",true);
return generer_url_ecrire('auteur_infos',
"id_auteur=$id_auteur$echec$ret",'&');
} else {
// modif: renvoyer le resultat ou a nouveau le formulaire si erreur
if (!$redirect) {
$redirect = generer_url_ecrire("auteur_infos", "id_auteur=$id_auteur", true, true);
$anc = '';
} else
list($redirect,$anc) = split('#',rawurldecode($redirect));
$redirect .= $echec . $anc . ($echec ? '' : '&initial=-1');
// modif: renvoyer le resultat ou a nouveau le formulaire si erreur
if (!$redirect)
$redirect = generer_url_ecrire("auteur_infos", "id_auteur=$id_auteur", '&', true);
return $redirect;
}
}

2
ecrire/action/editer_auteurs.php

@ -20,8 +20,6 @@ function action_editer_auteurs_dist() {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
$redirect = urldecode(_request('redirect'));
if ($script_aut = _request('script_aut'))
$redirect = parametre_url($redirect,'script_aut',$script_aut,'&');
if ($script = _request('script'))
$redirect = parametre_url($redirect,'script',$script,'&');
if ($titre = _request('titre'))

2
ecrire/exec/accueil.php

@ -257,7 +257,7 @@ function personnel_accueil($coockcookie)
$t);
$res .= $t;
}
$titre_cadre = afficher_plus(generer_url_ecrire("auteurs_edit","id_auteur=$connect_id_auteur"));
$titre_cadre = afficher_plus(generer_url_ecrire("auteur_infos","id_auteur=$connect_id_auteur"));
$titre_cadre .= majuscules(typo($GLOBALS['auteur_session']['nom']));
return debut_cadre_relief("fiche-perso-24.gif",true, '',$titre_cadre)

111
ecrire/exec/auteur_infos.php

@ -13,44 +13,43 @@
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
include_spip('inc/acces');
include_spip('inc/autoriser');
// http://doc.spip.org/@exec_auteur_infos_dist
function exec_auteur_infos_dist()
{
global $id_auteur, $redirect, $echec, $initial, $spip_display,
$connect_statut, $connect_toutes_rubriques, $connect_id_auteur;
function exec_auteur_infos_dist() {
global $connect_id_auteur;
$id_auteur = intval($id_auteur);
$id_auteur = intval(_request('id_auteur'));
pipeline('exec_init',
array('args' => array(
'exec'=>'auteur_infos',
'exec'=> 'auteur_infos',
'id_auteur'=>$id_auteur),
'data'=>'') );
// id_auteur nul ==> creation, et seuls les admins complets creent
if (!$id_auteur AND $connect_toutes_rubriques) {
$arg = "0/";
include_spip('inc/headers');
redirige_par_entete(generer_action_auteur('legender_auteur', $arg, $redirect, true));
exit;
'data'=>''
)
);
if ($id_auteur) {
$s = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur");
$auteur = spip_fetch_array($s);
} else {
$auteur = array();
if (strlen(_request('nom')))
$auteur['nom'] = _request('nom');
}
$auteur = spip_fetch_array(spip_query("SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur"));
if (!$auteur) {
gros_titre(_T('info_acces_interdit'));
exit;
}
$auteur_infos = charger_fonction('auteur_infos', 'inc');
$fiche = $auteur_infos($auteur, _request('redirect'));
$legender_auteur = charger_fonction('legender_auteur', 'inc');
$legender_auteur_r = $legender_auteur($id_auteur, $auteur, $initial, $echec, $redirect);
if (_request('var_ajaxcharset'))
ajax_retour($legender_auteur_r);
/* // Si on est appele en ajax, on renvoie la fiche
if (_request('var_ajaxcharset')) {
ajax_retour($fiche);
}
// Sinon on la met en page
else {
*/
// Entete
if ($connect_id_auteur == $id_auteur) {
$commencer_page = charger_fonction('commencer_page', 'inc');
echo $commencer_page($auteur['nom'], "auteurs", "perso");
@ -65,20 +64,12 @@ function exec_auteur_infos_dist()
echo cadre_auteur_infos($id_auteur, $auteur);
echo pipeline('affiche_gauche',
array('args' => array(
'exec'=>'auteur_infos',
'id_auteur'=>$id_auteur),
'data'=>'')
);
// charger ça tout de suite pour diposer de la fonction ci-dessous
$instituer_auteur = charger_fonction('instituer_auteur', 'inc');
$instituer_auteur_r = $instituer_auteur($id_auteur, $auteur['statut'], "auteurs_edit");
array('args' => array (
'exec'=>'auteur_infos',
'id_auteur'=>$id_auteur),
'data'=>'')
);
if (statut_modifiable_auteur($id_auteur, $auteur) AND ($spip_display != 4)) {
$iconifier = charger_fonction('iconifier', 'inc');
$icone = $iconifier('id_auteur', $id_auteur, 'auteur_infos');
} else $icone ='';
creer_colonne_droite();
echo pipeline('affiche_droite',
@ -87,9 +78,26 @@ function exec_auteur_infos_dist()
'id_auteur'=>$id_auteur),
'data'=>'')
);
echo $icone, debut_droite();
echo debut_cadre_relief("redacteurs-24.gif", true),
$legender_auteur_r, $instituer_auteur_r;
// Interface de logo
if ($id_auteur > 0
AND $spip_display != 4) {
$iconifier = charger_fonction('iconifier', 'inc');
echo $iconifier('id_auteur', $id_auteur, 'auteur_infos');
}
echo debut_droite();
echo debut_cadre_relief("redacteurs-24.gif", true);
// $fiche est vide si on demande par exemple
// a creer un auteur alors que c'est interdit
if ($fiche) {
echo $fiche;
} else {
gros_titre(_T('info_acces_interdit'));
}
echo pipeline('affiche_milieu',
array('args' => array(
@ -97,12 +105,13 @@ function exec_auteur_infos_dist()
'id_auteur'=>$id_auteur),
'data'=>''));
auteurs_interventions($id_auteur, $auteur['statut']);
auteurs_interventions($auteur);
echo fin_cadre_relief(true),
fin_gauche(),
fin_page();
}
fin_gauche(),
fin_page();
/* } */
}
// http://doc.spip.org/@cadre_auteur_infos
@ -132,10 +141,14 @@ function cadre_auteur_infos($id_auteur, $auteur)
// http://doc.spip.org/@auteurs_interventions
function auteurs_interventions($id_auteur, $statut)
{
function auteurs_interventions($auteur) {
$id_auteur = $auteur['id_auteur'];
$statut = $auteur['statut'];
global $connect_statut, $connect_id_auteur;
include_spip('inc/message_select');
if ($connect_statut == "0minirezo") $aff_art = "'prepa','prop','publie','refuse'";
else if ($connect_id_auteur == $id_auteur) $aff_art = "'prepa','prop','publie'";
else $aff_art = "'prop','publie'";

2
ecrire/exec/auteurs.php

@ -114,7 +114,7 @@ function bandeau_auteurs($tri, $statut)
$res = icone_horizontale(_T('icone_creer_nouvel_auteur'), generer_url_ecrire("auteur_infos"), "auteur-24.gif", "creer.gif", false);
else $res = '';
$res .= icone_horizontale(_T('icone_informations_personnelles'), generer_url_ecrire("auteur_infos","id_auteur=$connect_id_auteur&initial=-1"), "fiche-perso-24.gif","rien.gif", false);
$res .= icone_horizontale(_T('icone_informations_personnelles'), generer_url_ecrire("auteur_infos","id_auteur=$connect_id_auteur"), "fiche-perso-24.gif","rien.gif", false);
$n = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs WHERE statut='6forum' LIMIT 1"));
if ($n) {

19
ecrire/exec/auteurs_edit.php

@ -1,19 +0,0 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2007 *
* 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;
$id_auteur = intval(_request('id_auteur'));
include_spip('inc/headers');
redirige_par_entete("./?exec=auteur_infos&id_auteur=$id_auteur&initial=-1");
?>

3
ecrire/exec/editer_auteurs.php

@ -26,11 +26,10 @@ function exec_editer_auteurs_dist()
echo minipres();
exit;
}
$script_aut = _request('script_aut');
$script = _request('script');
$titre = ($titre=_request('titre'))?urldecode($titre):$titre;
$editer_auteurs = charger_fonction('editer_auteurs', 'inc');
ajax_retour($editer_auteurs($type, $id, 'ajax', _request('cherche_auteur'), _request('ids'),$titre,$script,$script_aut));
ajax_retour($editer_auteurs($type, $id, 'ajax', _request('cherche_auteur'), _request('ids'),$titre,$script));
}
?>

43
ecrire/exec/legender_auteur.php

@ -1,43 +0,0 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2007 *
* 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;
include_spip('inc/presentation');
include_spip('inc/acces');
include_spip('inc/action');
// http://doc.spip.org/@exec_legender_auteur_dist
function exec_legender_auteur_dist()
{
global $id_auteur, $retour, $echec, $initial,
$connect_statut, $connect_toutes_rubriques, $connect_id_auteur;
$id_auteur = intval($id_auteur);
$auteur = spip_fetch_array(spip_query("SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur"));
if (!$auteur) {
gros_titre(_T('info_acces_interdit'));
exit;
}
if (!$echec AND $retour) {
include_spip('inc/headers');
redirige_par_entete(rawurldecode($retour));
exit;
}
$legender_auteur = charger_fonction('legender_auteur', 'inc');
ajax_retour($legender_auteur($id_auteur, $auteur, $initial, $echec, $retour));
}
?>

2
ecrire/exec/message.php

@ -223,7 +223,7 @@ function http_message_avec_participants($id_message, $statut, $forcer_dest, $che
$ifond = 1 - $ifond;
$auteurs_tmp[] = "<a href='" .
generer_url_ecrire('auteurs_edit',"id_auteur=" . $id_auteur) ."'>". $nom_auteur . "</a>";
generer_url_ecrire('auteur_infos',"id_auteur=" . $id_auteur) ."'>". $nom_auteur . "</a>";
$aut = (($id_auteur != $expediteur) ? '' :
("<span class='arial0'>". _T('info_auteur_message') ."</span> "));

2
ecrire/exec/messagerie.php

@ -125,7 +125,7 @@ if (spip_num_rows($result) > 0) {
$id_auteur = $row['id_auteur'];
$nom = typo($row["nom"]);
$total = $row["total"];
echo "<div class='tr_liste'\nonmouseover=\"changeclass(this,'tr_liste_over');\"\nonmouseout=\"changeclass(this,'tr_liste');\"\nstyle='padding: 2px; padding-left: 10px; border-bottom: 1px solid #cccccc;'><div class='verdana1'><img src='" . _DIR_IMG_PACK . "redac-12.gif'\nstyle='border: 0px' alt=' ' /> <a href='" . generer_url_ecrire("auteurs_edit","id_auteur=$id_auteur"), "'>",
echo "<div class='tr_liste'\nonmouseover=\"changeclass(this,'tr_liste_over');\"\nonmouseout=\"changeclass(this,'tr_liste');\"\nstyle='padding: 2px; padding-left: 10px; border-bottom: 1px solid #cccccc;'><div class='verdana1'><img src='" . _DIR_IMG_PACK . "redac-12.gif'\nstyle='border: 0px' alt=' ' /> <a href='" . generer_url_ecrire("auteur_infos","id_auteur=$id_auteur"), "'>",
$nom,
"</a> ($total)</div></div>";
if ($count == ceil(spip_num_rows($result)/2)) echo "</td><td valign='top' width='50%' style='background-color: #eeeeee;'>";

2
ecrire/exec/naviguer.php

@ -177,7 +177,7 @@ function infos_naviguer($id_rubrique, $statut, $ze_logo)
echo
http_img_pack('admin-12.gif','',''),
" <a href='", generer_url_ecrire('auteurs_edit', "id_auteur=$id"),
" <a href='", generer_url_ecrire('auteur_infos', "id_auteur=$id"),
"'>",
extraire_multi($row['nom']),
'</a><br />';

283
ecrire/inc/legender_auteur.php → ecrire/inc/auteur_infos.php

@ -13,44 +13,77 @@
if (!defined("_ECRIRE_INC_VERSION")) return;
// http://doc.spip.org/@inc_legender_auteur_dist
function inc_legender_auteur_dist($id_auteur, $auteur, $initial, $echec='', $redirect='')
{
// Affiche la fiche de renseignements d'un auteur
// eventuellement editable
function inc_auteur_infos_dist($auteur, $redirect) {
if (!$auteur['id_auteur']) {
if (_request('new') == 'oui') {
$new = true;
} else {
include_spip('inc/headers');
redirige_par_entete(generer_url_ecrire('auteurs'));
}
}
$corps = (($initial < 0) OR !statut_modifiable_auteur($id_auteur, $auteur))
? legender_auteur_voir($auteur, $redirect)
: legender_auteur_saisir($id_auteur, $auteur, $initial, $echec, $redirect);
return $redirect ? $corps :
ajax_action_greffe("legender_auteur-$id_auteur", $corps);
if (!$new) {
$corps = "<div id='auteur_infos_voir'>"
. legender_auteur_voir($auteur, $redirect)
. "</div>\n";
} else
$corps = '';
if (_request('echec'))
$corps .= afficher_erreurs_auteur(_request('echec'));
// Calculer le bloc de statut (modifiable ou non selon)
$instituer_auteur = charger_fonction('instituer_auteur', 'inc');
$bloc_statut = $instituer_auteur($auteur);
// Calculer le formulaire general
if (autoriser('modifier', 'auteur', $auteur['id_auteur'])) {
$corps = legender_auteur_saisir($auteur, $corps, $bloc_statut, $redirect);
} else {
// Indiquer le bloc statut (cas non modifiable) ?
$corps .= $bloc_statut;
}
return $corps;
}
function afficher_erreurs_auteur($echec) {
foreach (split('@@@',$echec) as $e)
$corps .= '<p>' . _T($e) . "</p>\n";
$corps = debut_cadre_relief('', true)
. "<span style='color: red; left-margin: 5px'>"
. http_img_pack("warning.gif", _T('info_avertissement'), "style='width: 48px; height: 48px; float: left; margin: 5px;'")
. $corps
. _T('info_recommencer')
. "</span>\n"
. fin_cadre_relief(true);
return $corps;
}
// http://doc.spip.org/@legender_auteur_saisir
function legender_auteur_saisir($id_auteur, $auteur, $initial, $echec='', $redirect='')
{
function legender_auteur_saisir($auteur, $auteur_infos_voir, $bloc_statut, $redirect) {
global $options, $connect_statut, $connect_id_auteur, $connect_toutes_rubriques;
$corps = '';
if ($echec){
$id_auteur = $auteur['id_auteur'];
foreach (split('@@@',$echec) as $e)
$corps .= '<p>' . _T($e) . "</p>\n";
$corps = debut_cadre_relief('', true)
. "<span style='color: red; left-margin: 5px'>"
. http_img_pack("warning.gif", _T('info_avertissement'), "style='width: 48px; height: 48px; float: left; margin: 5px;'")
. $corps
. _T('info_recommencer')
. "</span>\n"
. fin_cadre_relief(true);
}
$setmail = ($connect_statut == "0minirezo"
AND ($connect_toutes_rubriques OR $auteur['statut']<>'0minirezo'));
$setconnecte = ($connect_id_auteur == $id_auteur);
// Elaborer le formulaire
$corps = '';
$corps .= _T('titre_cadre_signature_obligatoire')
. "("
. _T('entree_nom_pseudo')
@ -92,16 +125,13 @@ function legender_auteur_saisir($id_auteur, $auteur, $initial, $echec='', $redir
. fin_cadre_enfonce(true)
. "\n<br />";
if ($options == "avancees") {
if ($options == "avancees"
OR strlen($auteur['pgp'])) {
$corps .= debut_cadre_enfonce("cadenas-24.gif", true, "", _T('entree_cle_pgp'))
. "<textarea name='pgp' class='forml' rows='4' cols='40'>"
. entites_html($auteur['pgp'])
. "</textarea>\n"
. fin_cadre_enfonce(true);
} else {
$corps .= "<input type='hidden' name='pgp' value=\""
. entites_html($auteur['pgp'])
. "\" />";
}
$corps .= "\n<br />";
@ -165,26 +195,64 @@ function legender_auteur_saisir($id_auteur, $auteur, $initial, $echec='', $redir
$corps .= $res;
}
$corps .= fin_cadre_relief(true)
. "<br />"
. (!$setconnecte ? '' : apparait_auteur_infos($id_auteur, $auteur));
$att = " style='float: "
. $GLOBALS['spip_lang_right']
. "' class='fondo'";
$arg = intval($id_auteur) . '/';
return '<div>&nbsp;</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 . "<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>';
$corps .= fin_cadre_relief(true);
//
// Retour
//
$corps = $auteur_infos_voir
. "<div id='auteur_infos_edit'>\n"
. '<div>&nbsp;</div>'
. "\n<div class='serif'>"
. debut_cadre_relief("fiche-perso-24.gif",
true, "", _T("icone_informations_personnelles"))
. $corps
. fin_cadre_relief(true)
. (!$setconnecte ? '' : apparait_auteur_infos($id_auteur, $auteur))
. "</div>\n" # /serif
. "</div>\n"; # /auteur_infos_edit
// Installer la fiche "auteur_infos_voir"
// et masquer le formulaire si on n'en a pas besoin
$new = ($auteur_infos_voir == '');
if (!$new
AND !_request('echec')
AND !_request('edit')) {
$corps .= "<script>jQuery('#auteur_infos_edit').hide()</script>\n";
} else {
$corps .= "<script>jQuery('#auteur_infos_voir').hide()</script>\n";
}
// Formulaire de statut
$corps .= $bloc_statut;
// Lier a un article (creation d'un auteur depuis un article)
if ($id_article = intval(_request('lier_id_article')))
$corps .= "<input type='hidden' name='lier_id_article' value='$id_article' />\n";
// Redirection apres enregistrement ?
if ($redirect)
$corps .= "<input type='hidden' name='redirect' value=\"".attribut_html($redirect)."\" />\n";
$corps .= "<div align='right'><input type='submit' value='"._T('bouton_enregistrer')."' class='fondo' /></div>";
if (!$redirect)
$redirect = generer_url_ecrire('auteur_infos', "id_auteur=$id_auteur", '&');
$arg = intval($id_auteur);
$ret .= generer_action_auteur('editer_auteur', $arg, $redirect, $corps, ' method="POST"');
$ret .= fin_cadre_relief(true)
. '</div>';
return $ret;
}
//
@ -192,8 +260,7 @@ function legender_auteur_saisir($id_auteur, $auteur, $initial, $echec='', $redir
//
// http://doc.spip.org/@apparait_auteur_infos
function apparait_auteur_infos($id_auteur, $auteur)
{
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'>"
@ -211,86 +278,84 @@ function apparait_auteur_infos($id_auteur, $auteur)
. "</label> ";
}
return debut_cadre_formulaire('', true)
. debut_cadre_relief("messagerie-24.gif", true, "", _T('info_liste_redacteurs_connectes'))
. "\n<div>"
. _T('texte_auteur_messagerie')
. "</div>"
. $res
. fin_cadre_relief(true)
. "<br />"
. fin_cadre_formulaire(true);
return
"<br />"
.debut_cadre_formulaire('', true)
. debut_cadre_relief("messagerie-24.gif", true, "", _T('info_liste_redacteurs_connectes'))
. "\n<div>"
. _T('texte_auteur_messagerie')
. "</div>"
. $res
. fin_cadre_relief(true)
. "<br />"
. fin_cadre_formulaire(true);
}
// http://doc.spip.org/@legender_auteur_voir
function legender_auteur_voir($auteur, $redirect)
{
global $connect_toutes_rubriques, $connect_statut, $connect_id_auteur, $champs_extra, $options,$spip_lang_right ;
$id_auteur=$auteur['id_auteur'];
$nom=$auteur['nom'];
$bio=$auteur['bio'];
$email=$auteur['email'];
$nom_site_auteur=$auteur['nom_site'];
$url_site=$auteur['url_site'];
$statut=$auteur['statut'];
$pgp=$auteur["pgp"];
$extra = $auteur["extra"];
function legender_auteur_voir($auteur) {
global $connect_toutes_rubriques, $connect_statut, $connect_id_auteur, $champs_extra, $options, $spip_lang_right;
if (!$id_auteur = $auteur['id_auteur']) {
$new = true;
}
$res = "<table width='100%' cellpadding='0' border='0' cellspacing='0'>"
. "<tr>"
. "<td style='width: 100%' valign='top'>"
. gros_titre($nom,'',false)
. gros_titre(
sinon($auteur['nom'],_T('item_nouvel_auteur')),
'',false)
. "<div>&nbsp;</div>";
if (strlen($email) > 2)
$res .= "<div>"._T('email_2')." <b><a href='mailto:$email'>$email</a></b></div>";
if (strlen($auteur['email']))
$res .= "<div>"._T('email_2')
." <b><a href='mailto:".htmlspecialchars($auteur['email'])."'>"
.$auteur['email']."</a></b></div>";
if ($url_site) {
if (!$nom_site_auteur) $nom_site_auteur = _T('info_site');
$res .= propre(_T('info_site_2')." [{{".$nom_site_auteur."}}->".$url_site."]");
if ($auteur['url_site']) {
if (!$auteur['nom_site'])
$auteur['nom_site'] = _T('info_site');
$res .= propre(_T('info_site_2')." [{{".$auteur['nom_site']."}}->".$auteur['url_site']."]");
}
$res .= "</td>"
. "<td>";
if (statut_modifiable_auteur($id_auteur, $auteur)) {
$ancre = "legender_auteur-$id_auteur";
// Bouton "modifier" ?
if (autoriser('modifier', 'auteur', $id_auteur)) {
$res .= "</td>\n<td id='bouton_modifier_auteur'>";
$clic = _T("admin_modifier_auteur");
$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>";
}
$res .= icone($clic, $h, "redacteurs-24.gif", "edit.gif", '', '',true);
$h = generer_url_ecrire("auteur_infos","id_auteur=$id_auteur&edit=oui");
$h = "<a\nhref='$h'>$clic</a>";
$res .= icone($clic, $h, "redacteurs-24.gif", "edit.gif", '', '',true);
$res .= "<script type='text/javascript'><!--
jQuery('#bouton_modifier_auteur a')
.click(function() {
jQuery('#auteur_infos_edit')
.show();
jQuery('#auteur_infos_voir')
.hide();
return false;
});
// --></script>\n";
}
$res .= "</td></tr></table>";
if (strlen($bio) > 0) { $res .= "<div>".propre("<quote>".$bio."</quote>")."</div>"; }
if (strlen($pgp) > 0) { $res .= "<div>".propre("PGP:<cadre>".$pgp."</cadre>")."</div>"; }
if (strlen($auteur['bio'])) {
$res .= propre("<quote>".$auteur['bio']."</quote>");
}
if (strlen($auteur['pgp'])) {
$res .= propre("PGP: <cadre>".$auteur['pgp']."</cadre>");
}
if ($champs_extra AND $extra) {
if ($GLOBALS['champs_extra'] AND $auteur['extra']) {
include_spip('inc/extra');
$res .= extra_affichage($extra, "auteurs");
$res .= extra_affichage($auteur['extra'], 'auteurs');
}
return $res;
}
// http://doc.spip.org/@statut_modifiable_auteur
function statut_modifiable_auteur($id_auteur, $auteur)
{
global $connect_statut, $connect_toutes_rubriques, $connect_id_auteur;
// on peut se changer soi-meme
return (($connect_id_auteur == $id_auteur) ||
// sinon on doit etre admin
// et pas admin restreint pour changer un autre admin ou creer qq
(($connect_statut == "0minirezo") &&
($connect_toutes_rubriques OR
($id_auteur AND ($auteur['statut'] != "0minirezo")))));
}
?>

35
ecrire/inc/autoriser.php

@ -310,6 +310,7 @@ function autoriser_webmestre_dist($faire, $type, $id, $qui, $opt) {
// Attention tout depend de ce qu'on veut modifier
// http://doc.spip.org/@autoriser_auteur_modifier_dist
function autoriser_auteur_modifier_dist($faire, $type, $id, $qui, $opt) {
// Ni admin ni redacteur => non
if (!in_array($qui['statut'], array('0minirezo', '1comite')))
return false;
@ -319,14 +320,42 @@ function autoriser_auteur_modifier_dist($faire, $type, $id, $qui, $opt) {
if ($qui['statut'] == '1comite') {
if ($opt['statut'] OR $opt['restreintes'])
return false;
if ($id == $qui['id_auteur'])
else if ($id == $qui['id_auteur'])
return true;
return false;
else
return false;
}
// Un admin restreint peut modifier/creer un auteur non-admin mais il
// n'a le droit ni de le promouvoir admin, ni de changer les rubriques
if ($qui['restreint']) {
if ($opt['statut'] == '0minirezo'
OR $opt['restreintes']) {
return false;
} else {
if ($id == $qui['id_auteur']) {
if ($opt['statut'])
return false;
else
return true;
}
else if ($id_auteur = intval($id)) {
$s = spip_query("SELECT statut FROM spip_auteurs WHERE id_auteur=$id_auteur");
if ($t = spip_fetch_array($s)
AND $t['statut'] != '0minirezo')
return true;
else
return false;
}
// id = 0 => creation
else
return true;
}
}
// Un admin complet fait ce qu'elle veut
return
true;
}
?>

2
ecrire/inc/boutons.php

@ -264,7 +264,7 @@ function definir_barre_onglets($rubrique) {
case 'auteur':
$onglets['auteur']=
new Bouton('auteur-24.gif', 'onglet_auteur',
generer_url_ecrire("auteurs_edit","id_auteur=$id_auteur"));
generer_url_ecrire("auteur_infos","id_auteur=$id_auteur"));
$onglets['infos']=
new Bouton('fiche-perso-24.gif', 'icone_informations_personnelles',
generer_url_ecrire("auteur_infos","id_auteur=$id_auteur"));

2
ecrire/inc/commencer_page.php

@ -126,7 +126,7 @@ function init_body($rubrique='accueil', $sous_rubrique='accueil', $id_rubrique='
. (($spip_ecran == "large") ? 300 : 110)
. "px; height: 14px; overflow: hidden;'>"
. "<a href='"
. generer_url_ecrire("auteur_infos","id_auteur=$connect_id_auteur&initial=-1")
. generer_url_ecrire("auteur_infos","id_auteur=$connect_id_auteur")
. "' class='icone26' title=\""
. entites_html(_T('icone_informations_personnelles'))
. '">'

24
ecrire/inc/editer_auteurs.php

@ -20,14 +20,9 @@ define('_SPIP_SELECT_MIN_AUTEURS', 10); // en dessous: balise Select
define('_SPIP_SELECT_MAX_AUTEURS', 100); // au-dessus: saisie + return
// http://doc.spip.org/@inc_editer_auteurs_dist
function inc_editer_auteurs_dist($type, $id, $flag, $cherche_auteur, $ids, $titre_boite = NULL, $script_edit_objet = NULL, $script_edit_auteur = NULL)
{
function inc_editer_auteurs_dist($type, $id, $flag, $cherche_auteur, $ids, $titre_boite = NULL, $script_edit_objet = NULL) {
global $options;
$arg_ajax = "&id_{$type}=$id";
if ($script_edit_auteur===NULL)
$script_edit_auteur = 'auteur_infos';
else
$arg_ajax .= "&script_aut=$script_edit_auteur";
if ($script_edit_objet===NULL) $script_edit_objet = $type.'s';
if ($titre_boite===NULL)
$titre_boite = _T('texte_auteurs'). aide("artauteurs");
@ -36,7 +31,7 @@ function inc_editer_auteurs_dist($type, $id, $flag, $cherche_auteur, $ids, $titr
$cond_les_auteurs = "";
$aff_les_auteurs = afficher_auteurs_objet($type, $id, $flag, $cond_les_auteurs, $script_edit_objet, $script_edit_auteur, $arg_ajax);
$aff_les_auteurs = afficher_auteurs_objet($type, $id, $flag, $cond_les_auteurs, $script_edit_objet, $arg_ajax);
if ($flag AND $options == 'avancees') {
$futurs = ajouter_auteurs_objet($type, $id, $cond_les_auteurs,$script_edit_objet, $arg_ajax);
@ -55,7 +50,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');
//
// complement de action/editer_auteurs.php pour notifier la recherche d'auteur
//
@ -67,8 +62,10 @@ 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, "articles","id_article=$id");
$legende = generer_url_ecrire("bolino", "new=oui&lier_id_article=$id");
$legende = parametre_url($legende, 'nom', $cherche_auteur);
$legende = parametre_url($legende, 'redirect',
generer_url_ecrire('articles', "id_article=$id", '&'));
$reponse .="<div style='width: 200px;'>"
. icone_horizontale($clic, $legende, "redacteurs-24.gif", "creer.gif", false)
@ -92,7 +89,10 @@ 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, "articles","id_article=$id");
$legende = generer_url_ecrire("bolino", "new=oui&lier_id_article=$id");
$legende = parametre_url($legende, 'nom', $cherche_auteur);
$legende = parametre_url($legende, 'redirect',
generer_url_ecrire('articles', "id_article=$id", '&'));
$clic = "<span class='verdana1'><b>$clic</b></span>";
$res = "<div style='width:170px;'>"
@ -201,7 +201,7 @@ function rechercher_auteurs_objet($cherche_auteur, $ids, $type, $id, $script_edi
}
// http://doc.spip.org/@afficher_auteurs_objet
function afficher_auteurs_objet($type, $id, $flag_editable, $cond_les_auteurs, $script_edit, $script_edit_auteur, $arg_ajax)
function afficher_auteurs_objet($type, $id, $flag_editable, $cond_les_auteurs, $script_edit, $arg_ajax)
{
global $connect_statut, $options,$connect_id_auteur, $spip_display;
@ -236,7 +236,7 @@ function afficher_auteurs_objet($type, $id, $flag_editable, $cond_les_auteurs, $
while ($row = spip_fetch_array($result)) {
$id_auteur = $row['id_auteur'];
$vals = $formater_auteur($id_auteur, $script_edit_auteur);
$vals = $formater_auteur($id_auteur);
if ($flag_editable AND ($connect_id_auteur != $id_auteur OR $connect_statut == '0minirezo') AND $options == 'avancees') {
$vals[] = ajax_action_auteur('editer_auteurs', "$id,$type,-$id_auteur", $script_edit, "id_{$type}=$id", array(_T('lien_retirer_auteur')."&nbsp;". http_img_pack('croix-rouge.gif', "X", " class='puce' style='vertical-align: bottom;'")),$arg_ajax);

4
ecrire/inc/formater_auteur.php

@ -24,7 +24,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
//
// http://doc.spip.org/@inc_formater_auteur_dist
function inc_formater_auteur_dist($id_auteur, $script_edition = 'auteur_infos') {
function inc_formater_auteur_dist($id_auteur) {
global $connect_id_auteur, $spip_lang_rtl, $connect_statut;
@ -48,7 +48,7 @@ function inc_formater_auteur_dist($id_auteur, $script_edition = 'auteur_infos')
$nom = "<span style='color: red'>" . _T('texte_vide') . '</span>';
$vals[] = "<a href='"
. generer_url_ecrire($script_edition, "id_auteur=$id_auteur&initial=-1")
. generer_url_ecrire('auteur_infos', "id_auteur=$id_auteur")
. "' $bio_auteur>$nom</a>";
if ($url_site_auteur = $row["url_site"]) $vals[] = "<a href='$url_site_auteur'>"._T('info_site_min')."</a>";

2
ecrire/inc/forum.php

@ -101,7 +101,7 @@ function boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur=0, $ref
$suppression = false;
$controle = "<br /><span style='color: red; font-weight: bold;'>"._T('info_message_supprime')." $forum_ip</span>";
if($forum_id_auteur)
$controle .= " - <a href='" . generer_url_ecrire('auteurs_edit', "id_auteur=$forum_id_auteur") .
$controle .= " - <a href='" . generer_url_ecrire('auteur_infos', "id_auteur=$forum_id_auteur") .
"'>" ._T('lien_voir_auteur'). "</a>";
break;
# forum propose (a moderer) sur le site public

2
ecrire/inc/gadgets.php

@ -101,7 +101,7 @@ function bandeau_gadgets($largeur, $options, $id_rubrique) {
// Infos perso
$bandeau .= "\n<div id='bandeauinfoperso' class='bandeau bandeau_couleur_sous' style='$spip_lang_left: 200px;'>"
. "<a href='" . generer_url_ecrire("auteurs_edit","id_auteur=$connect_id_auteur") . "' class='lien_sous'>"
. "<a href='" . generer_url_ecrire("auteur_infos","id_auteur=$connect_id_auteur") . "' class='lien_sous'>"
. _T('icone_informations_personnelles')
. "</a>"
. "</div>";

2
ecrire/inc/informer_auteur.php

@ -54,7 +54,7 @@ function inc_informer_auteur_dist($id)
return "<div class='arial2' style='padding: 5px; background-color: white; border: 1px solid $couleur_foncee; border-top: 0px;'>"
. (!$res ? '' : $res)
. "<div><a href='"
. generer_url_ecrire('auteur_infos', "id_auteur=$id&initial=-1")
. generer_url_ecrire('auteur_infos', "id_auteur=$id")
. "'>"
. bonhomme_statut($row)
. "</a> "

208
ecrire/inc/instituer_auteur.php

@ -23,118 +23,62 @@ include_spip('inc/message_select');
// les admins restreints les voient mais
// ne peuvent les utiliser que pour mettre un auteur a la poubelle
// http://doc.spip.org/@inc_instituer_auteur_dist
function inc_instituer_auteur_dist($id_auteur, $statut, $url_self)
{
function inc_instituer_auteur_dist($auteur) {
global $connect_toutes_rubriques, $connect_id_auteur, $connect_statut, $spip_lang_right, $spip_lang;
if (($connect_statut != '0minirezo')
OR (!($id_auteur = intval($id_auteur))))
return '';
$result_admin = spip_query("SELECT rubriques.id_rubrique, " . creer_objet_multi ("titre", $spip_lang) . " FROM spip_auteurs_rubriques AS lien, spip_rubriques AS rubriques WHERE lien.id_auteur=$id_auteur AND lien.id_rubrique=rubriques.id_rubrique ORDER BY multi");
$restreint = spip_num_rows($result_admin);
if (!$restreint)
$res = _T('info_admin_gere_toutes_rubriques');
else {
$modif = ($connect_toutes_rubriques AND $connect_id_auteur != $id_auteur) ? "id_auteur=$id_auteur" : '';
$lien = !$modif
? ''
: array(_T('lien_supprimer_rubrique'));
$res = '';
while ($row_admin = spip_fetch_array($result_admin)) {
$id_rubrique = $row_admin["id_rubrique"];
$res .= "\n<li><a href='"
. generer_url_ecrire("naviguer","id_rubrique=$id_rubrique")
. "'>"
. typo($row_admin["multi"])
. "</a>"
. (!$modif ? '' :
"&nbsp;&nbsp;&nbsp;&nbsp;[<span class='spip_x-small'>"
. ajax_action_auteur('instituer_auteur', "$id_auteur/-$id_rubrique", $url_self, $modif, $lien)
. "</span>]")
. '</li>';
}
$res = _T('info_admin_gere_rubriques')
. "\n<ul style='list-style-image: url("
. _DIR_IMG_PACK
. "rubrique-12.gif)'>"
. $res
. "</ul>";
}
// si pas admin au chargement, rien a montrer.
$vis = ($statut == '0minirezo') ? '' : " style='display: none'";
// Ajouter une rubrique a un administrateur restreint
if ($connect_toutes_rubriques AND $connect_id_auteur != $id_auteur) {
$label = $restreint ? _T('info_ajouter_rubrique') : _T('info_restreindre_rubrique');
if ($connect_statut != '0minirezo') return '';
$chercher_rubrique = charger_fonction('chercher_rubrique', 'inc');
$statut = $auteur['statut'];
$res .= debut_block_visible("statut$id_auteur")
. "\n<div id='ajax_rubrique' class='arial1'><br />\n"
. "<b>"
. $label
. "</b><br />"
. "\n<input name='id_auteur' value='"
. $id_auteur
. "' type='hidden' />"
. $chercher_rubrique(0, 'auteur', false)
. "</div>\n"
. fin_block();
if (!$id_auteur = $auteur['id_auteur']) {
$new = true;
$statut = '1comite';
}
$droit = (($connect_toutes_rubriques OR $statut != "0minirezo")
&& ($connect_id_auteur != $id_auteur));
$ancre = "instituer_auteur-" . intval($id_auteur);
if ($droit) {
$res = "<b>"._T('info_statut_auteur')." </b> "
. choix_statut_auteur($statut, "$ancre-aff")
. "<div id='$ancre-aff'$vis>"
. $res
. "</div>";
if ($menu = choix_statut_auteur($statut, $id_auteur, "$ancre-aff"))
$res = "<b>"._T('info_statut_auteur')."</b> " . $menu;
$res = ajax_action_post('instituer_auteur', $id_auteur, $url_self, (!$id_auteur ? "" : "id_auteur=$id_auteur"), $res, _T('bouton_valider'), " style='float: $spip_lang_right' class='fondo'")."<br class='nettoyeur' />";
}
// Prepare le bloc des rubriques restreintes ;
// si l'auteur n'est pas admin, on le cache
$vis = ($statut == '0minirezo') ? '' : " style='display: none'";
if ($menu_restreints = choix_rubriques_admin_restreint($auteur))
$res .= "<div id='$ancre-aff'$vis>"
. $menu_restreints
. "</div>";
return (_request('var_ajaxcharset'))
? $res
: (debut_cadre_relief('',true)
return debut_cadre_relief('',true)
. "<div id='"
. $ancre
. "'>"
. $res
. '</div>'
. fin_cadre_relief(true));
. fin_cadre_relief(true);
}
// Menu de choix d'un statut d'auteur
// http://doc.spip.org/@choix_statut_auteur
function choix_statut_auteur($statut, $ancre) {
global $connect_toutes_rubriques;
function choix_statut_auteur($statut, $id_auteur, $ancre) {
// Le menu doit-il etre actif ?
if (!autoriser('modifier', 'auteur', $id_auteur,
null, array('statut' => '?')))
return '';
// Calculer le menu
$menu = "<select name='statut' size='1' class='fondl'
onchange=\"(this.selectedIndex==0)?jQuery('#$ancre').slideDown():jQuery('#$ancre:visible').slideUp();\">";
onchange=\"(this.options[this.selectedIndex].value == '0minirezo')?jQuery('#$ancre').slideDown():jQuery('#$ancre:visible').slideUp();\">";
// Si on est admin restreint, on n'a pas le droit de modifier un admin
if ($connect_toutes_rubriques)
// A-t-on le droit de promouvoir cet auteur comme admin ?
if (autoriser('modifier', 'auteur', intval($id_auteur),
null, array('statut' => '0minirezo'))) {
$menu .= "\n<option" .
mySel("0minirezo",$statut) .
">" . _T('item_administrateur_2')
. '</option>';
}
// Ajouter le choix "comite"
$menu .=
@ -187,4 +131,98 @@ function choix_statut_auteur($statut, $ancre) {
return $menu;
}
function choix_rubriques_admin_restreint($auteur) {
global $connect_toutes_rubriques, $connect_id_auteur, $connect_statut, $spip_lang_right, $spip_lang;
$id_auteur = intval($auteur['id_auteur']);
$result_admin = spip_query("SELECT rubriques.id_rubrique, " . creer_objet_multi ("titre", $spip_lang) . " FROM spip_auteurs_rubriques AS lien, spip_rubriques AS rubriques WHERE lien.id_auteur=$id_auteur AND lien.id_rubrique=rubriques.id_rubrique ORDER BY multi");
if (spip_num_rows($result_admin) == 0) {
$phrase = _T('info_admin_gere_toutes_rubriques')."\n";
$menu = '';
} else {
// L'autorisation de modifier les rubriques restreintes
// est egale a l'autorisation de passer en admin
$modif = autoriser('modifier', 'auteur', $id_auteur, null, array('statut' => '0minirezo'));
// Il faut un element zero pour montrer qu'on a l'interface
// sinon il est impossible de deslectionner toutes les rubriques
$menu = $modif
? "<input type='hidden' name='restreintes[]' value='0' />\n"
: '';
while ($row_admin = spip_fetch_array($result_admin)) {
$id_rubrique = $row_admin["id_rubrique"];
$menu .= "\n<li id='rubrest_$id_rubrique'>"
. ($modif
? "<input type='checkbox' checked='checked' name='restreintes[]' value='$id_rubrique' />\n"
: ''
)
. "<a href='?exec=naviguer&amp;id_rubrique=$id_rubrique'>"
. typo($row_admin["multi"])
. "</a>"
. '</li>';
}
$phrase = _T('info_admin_gere_rubriques');
}
if ($auteur['statut'] != '0minirezo')
$phrase = '';
$res = "<p>$phrase</p>\n"
. "<ul id='liste_rubriques_restreintes' style='list-style-image: url("
. _DIR_IMG_PACK
. "rubrique-12.gif)'>"
. $menu
. "</ul>\n";
// Ajouter une rubrique a un administrateur restreint
if ($connect_toutes_rubriques AND $connect_id_auteur != $id_auteur) {
$label = $restreint
? _T('info_ajouter_rubrique')
: _T('info_restreindre_rubrique');
$chercher_rubrique = charger_fonction('chercher_rubrique', 'inc');
$res .= debut_block_visible("statut$id_auteur")
. "\n<div id='ajax_rubrique' class='arial1'><br />\n"
. "<b>"
. $label
. "</b><br />"
. "\n<input name='id_auteur' value='"
. $id_auteur
. "' type='hidden' />"
. $chercher_rubrique(0, 'auteur', false)
. "</div>\n"
// onchange = pour le menu
// l'evenement doit etre provoque a la main par le selecteur ajax
. "<script type='text/javascript'><!--
jQuery('input[@name=id_parent]')
.bind('change', function(){
var id_parent = this.value;
var titre = jQuery('#titreparent').attr('value') || this.options[this.selectedIndex].text;
// Ajouter la rubrique selectionnee au formulaire,
// sous la forme d'un input name='rubriques[]'
var el = '<input type=\'checkbox\' checked=\'checked\' name=\'restreintes[]\' value=\''+id_parent+'\' /> ' + '<a href=\'?exec=naviguer&amp;id_rubrique='+id_parent+'\'>'+titre+'</a>';
if (jQuery('#rubrest_'+id_parent).size() == 0) {
jQuery('#liste_rubriques_restreintes')
.append('<li id=\'rubrest_'+id_parent+'\'>'+el+'</li>');
}
}); //--></script>\n"
. fin_block();
}
return $res;
}
?>

2
ecrire/inc/message_select.php

@ -94,7 +94,7 @@ function afficher_message_boucles($row, &$messages_vus, $voir_logo, $afficher_au
$auteurs = '';
while ($row_auteurs = spip_fetch_array($result_auteurs)) {
$id_auteur = $row_auteurs['id_auteur'];
$auteurs[] = "<a href='" . generer_url_ecrire("auteurs_edit","id_auteur=$id_auteur") . "'>".typo($row_auteurs['nom'])."</a>";
$auteurs[] = "<a href='" . generer_url_ecrire("auteur_infos","id_auteur=$id_auteur") . "'>".typo($row_auteurs['nom'])."</a>";
}
if ($auteurs AND $type == 'normal') {

3
ecrire/inc/urls.php

@ -66,7 +66,8 @@ function generer_url_ecrire_auteur($id_auteur, $statut='') {
$args = "id_auteur=" . intval($id_auteur);
if (!$statut)
return generer_url_action('redirect', $args);
else return generer_url_ecrire('auteurs_edit',$args);
else
return generer_url_ecrire('auteur_infos',$args);
}
// http://doc.spip.org/@generer_url_ecrire_forum

2
ecrire/inc/vieilles_defs.php

@ -95,7 +95,7 @@ spip_log('affiche_auteur_boucle() '.$GLOBALS['REQUEST_URI'].' - '.$_SERVER['SCRI
$nom = $row['nom'];
$s = bonhomme_statut($row);
$s .= "<a href='" . generer_url_ecrire("auteurs_edit","id_auteur=$id_auteur") . "'>";
$s .= "<a href='" . generer_url_ecrire("auteur_infos","id_auteur=$id_auteur") . "'>";
$s .= typo($nom);
$s .= "</a>";
$vals[] = $s;

Loading…
Cancel
Save