Valider 330380ae rédigé par esj's avatar esj
Parcourir les fichiers

[7637, suite: inc_bouton_auteur devient la fonction fabriquant le code HTML...

[7637, suite: inc_bouton_auteur devient la fonction fabriquant le code HTML des informations sur un auteur, ce qui permet de partager le code et homogénise l'interface.

Dans le résultat de cette fonction, l'icone de messagerie reférence le mail s'il est présent dans la table, le script de messagerie interne sinon (cela pour prendre en compte le peu d'utilisation de cette messagerie, mais on peut toujours appliquer ce script à cet auteur par le bouton au bas de la page de l'auteur). Comme auparavant (mais à présent cela s'applique donc aussi au mail) cette icone n'apparait pas si l'auteur ne s'est pas connecté depuis plus de 15 jours (et n'apparait pas pour soi-meme).

Enfin, cliquer sur l'icone de statut d'un auteur affiche la pages des auteurs ayant ce statut (nouvelle fonctionnalité du script auteurs.php).
parent 935b2bbb
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+6 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -91,6 +91,12 @@ function exec_auteur_infos_dist()
	  debut_cadre_relief("redacteurs-24.gif", true),
	  $legender_auteur, $instituer_auteur;

	echo pipeline('affiche_milieu',
	        array('args' => array(
        	        'exec'=>'auteur_infos',
                	'id_auteur'=>$id_auteur),
		      'data'=>''));

	auteurs_interventions($id_auteur, $auteur['statut']);

	echo fin_cadre_relief(true),
+42 −72
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -17,12 +17,12 @@ include_spip('inc/presentation');
// http://doc.spip.org/@exec_auteurs_dist
function exec_auteurs_dist()
{
	global  $visiteurs;

	$tri = preg_replace('/\W/', '', _request('tri'));
	if (!$tri) $tri='nom'; 
	$statut = preg_replace('/\W/', '', _request('statut'));

	$result = requete_auteurs($tri, $visiteurs);
	$result = requete_auteurs($tri, $statut);
	$nombre_auteurs = spip_num_rows($result);
	$max_par_page = 30;
	$debut = intval(_request('debut'));
@@ -31,13 +31,13 @@ function exec_auteurs_dist()

	list($auteurs, $lettre)= lettres_d_auteurs($result, $debut, $max_par_page, $tri);

	$res = auteurs_tranches(afficher_n_auteurs($auteurs), $debut, $lettre, $tri, $visiteurs, $max_par_page, $nombre_auteurs);
	$res = auteurs_tranches(afficher_n_auteurs($auteurs), $debut, $lettre, $tri, $statut, $max_par_page, $nombre_auteurs);

	if (_request('var_ajaxcharset')) ajax_retour($res);

	pipeline('exec_init',array('args'=>array('exec'=>'auteurs'),'data'=>''));

	bandeau_auteurs($auteurs, $debut, $tri, $visiteurs, $max_par_page, $nombre_auteurs);
	bandeau_auteurs($tri, $statut);

	echo "<div id='auteurs'>", $res, "</div>", fin_page();
}
@@ -72,7 +72,7 @@ function lettres_d_auteurs($query, $debut, $max_par_page, $tri)


// http://doc.spip.org/@bandeau_auteurs
function bandeau_auteurs($auteurs, $debut, $tri, $visiteurs, $max_par_page, $nombre_auteurs)
function bandeau_auteurs($tri, $statut)
{
	global $options, $spip_lang_right, $connect_id_auteur,   $connect_statut,   $connect_toutes_rubriques;

@@ -81,24 +81,22 @@ function bandeau_auteurs($auteurs, $debut, $tri, $visiteurs, $max_par_page, $nom
	if ($tri=='nombre') $s = _T('info_par_nombre_articles');
	$s = ' ('._T('info_par_nombre_article').')';

	if ($visiteurs == "oui") {
	if ($statut == '6forum') {
		debut_page(_T('titre_page_auteurs'),"auteurs","redacteurs");
		$visiteurs = '&visiteurs=oui';
	} else {
		debut_page(_T('info_auteurs_par_tri', array('partri' => $s)),"auteurs","redacteurs");
	$visiteurs = "";
	}
	debut_gauche();

	debut_boite_info();
	if ($visiteurs)
	if ($statut == '6forum') 
		echo "\n<p class='arial1'>"._T('info_gauche_visiteurs_enregistres'), '</p>';
	else {
	else 
		echo "\n<p class='arial1'>"._T('info_gauche_auteurs'), '</p>';

	if ($connect_statut == '0minirezo')
		echo "\n<br />". _T('info_gauche_auteurs_exterieurs');
	}

	fin_boite_info();


@@ -108,14 +106,14 @@ function bandeau_auteurs($auteurs, $debut, $tri, $visiteurs, $max_par_page, $nom
			$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("auteurs_edit","id_auteur=$connect_id_auteur"), "fiche-perso-24.gif","rien.gif", false);
		$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);

		$n = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs WHERE statut='6forum' LIMIT 1"));
		if ($n) {
			if ($visiteurs)
				$res .= icone_horizontale (_T('icone_afficher_auteurs'), generer_url_ecrire("auteurs",""), "auteur-24.gif", "", false);
			if ($statut == '6forum')
				$res .= icone_horizontale (_T('icone_afficher_auteurs'), generer_url_ecrire("auteurs"), "auteur-24.gif", "", false);
			else
				$res .= icone_horizontale (_T('icone_afficher_visiteurs'), generer_url_ecrire("auteurs","visiteurs=oui"), "auteur-24.gif", "", false);
				$res .= icone_horizontale (_T('icone_afficher_visiteurs'), generer_url_ecrire("auteurs","statut=6forum"), "auteur-24.gif", "", false);
		}
		echo bloc_des_raccourcis($res);
	}
@@ -125,7 +123,7 @@ function bandeau_auteurs($auteurs, $debut, $tri, $visiteurs, $max_par_page, $nom
	debut_droite();

	echo "\n<br />";
	if ($visiteurs)
	if ($statut == '6forum') 
		gros_titre(_T('info_visiteurs'));
	else
		gros_titre(_T('info_auteurs'));
@@ -133,7 +131,7 @@ function bandeau_auteurs($auteurs, $debut, $tri, $visiteurs, $max_par_page, $nom
}

// http://doc.spip.org/@auteurs_tranches
function auteurs_tranches($auteurs, $debut, $lettre, $tri, $visiteurs, $max_par_page, $nombre_auteurs)
function auteurs_tranches($auteurs, $debut, $lettre, $tri, $statut, $max_par_page, $nombre_auteurs)
{
	global $options, $spip_lang_right;

@@ -147,29 +145,27 @@ function auteurs_tranches($auteurs, $debut, $lettre, $tri, $visiteurs, $max_par_
	  $res .= auteurs_href(http_img_pack('admin-12.gif', $t, "border='0'"),'tri=statut', " title=\"$t\"");
	}

	$res .= "</td><td>";
	$res .= "</td><td width='20'></td><td colspan='2'>";

	if ($tri == '' OR $tri=='nom')
		$res .= '<b>'._T('info_nom').'</b>';
	else
		$res .= auteurs_href(_T('info_nom'), "tri=nom", " title='"._T('lien_trier_nom'). "'");

	if ($options == 'avancees')
	 	$res .= "</td><td colspan='2'>"._T('info_contact');

	$res .= "</td><td>";

	if (!$visiteurs) {
	if ($statut != '6forum') {
		if ($tri=='nombre')
			$res .= '<b>'._T('info_articles').'</b>';
		else
			$res .= auteurs_href(_T('info_articles_2'), "tri=nombre", " title=\""._T('lien_trier_nombre_articles'). '"');
	} else $visiteurs = '&visiteurs=oui';
	}

	$res .= "</td></tr>\n";

	if ($nombre_auteurs > $max_par_page) {
		$res .= "\n<tr bgcolor='white'><td class='arial1' colspan='".($options == 'avancees' ? 5 : 3)."'>";
		$res .= "\n<tr bgcolor='white'><td class='arial1' colspan='5'>";

		for ($j=0; $j < $nombre_auteurs; $j+=$max_par_page) {
			if ($j > 0) 	$res .= " | ";
@@ -177,9 +173,9 @@ function auteurs_tranches($auteurs, $debut, $lettre, $tri, $visiteurs, $max_par_
			if ($j == $debut)
				$res .= "<b>$j</b>";
			else if ($j > 0)
				$res .= auteurs_href($j, "tri=$tri$visiteurs&debut=$j");
				$res .= auteurs_href($j, "tri=$tri&statut=$statut&debut=$j");
			else
				$res .= auteurs_href('0', "tri=$tri$visiteurs");
				$res .= auteurs_href('0', "tri=$tri&statut=$statut");
			if ($debut > $j  AND $debut < $j+$max_par_page){
				$res .= " | <b>$debut</b>";
			}
@@ -192,7 +188,7 @@ function auteurs_tranches($auteurs, $debut, $lettre, $tri, $visiteurs, $max_par_
				if ($val == $debut)
					$res .= "<b>$key</b>\n";
				else
					$res .= auteurs_href($key, "tri=$tri$visiteurs&debut=$val") . "\n";
					$res .= auteurs_href($key, "tri=$tri&statut=$statut&debut=$val") . "\n";
			}
			$res .= "</td></tr>\n";
		}
@@ -206,11 +202,11 @@ function auteurs_tranches($auteurs, $debut, $lettre, $tri, $visiteurs, $max_par_

		if ($debut > 0) {
			$debut_prec = max($debut - $max_par_page, 0);
			$nav .= auteurs_href('&lt;&lt;&lt;',"tri=$tri&debut=$debut_prec$visiteurs");
			$nav .= auteurs_href('&lt;&lt;&lt;',"tri=$tri&debut=$debut_prec&statut=$statut");
		}
		$nav .= "</td><td style='text-align: $spip_lang_right'>";
		if ($debut_suivant < $nombre_auteurs) {
			$nav .= auteurs_href('&gt;&gt;&gt;',"tri=$tri&debut=$debut_suivant$visiteurs");
			$nav .= auteurs_href('&gt;&gt;&gt;',"tri=$tri&debut=$debut_suivant&statut=$statut");
		}
		$nav .= "</td></tr></table>\n";
	}
@@ -236,7 +232,7 @@ function auteurs_href($clic, $args='', $att='')
}

// http://doc.spip.org/@requete_auteurs
function requete_auteurs($tri, $visiteurs)
function requete_auteurs($tri, $statut)
{
  global $connect_statut, $spip_lang, $connect_id_auteur;

@@ -248,8 +244,8 @@ function requete_auteurs($tri, $visiteurs)
// sauf les admins, toujours visibles.
// limiter les statuts affiches
if ($connect_statut == '0minirezo') {
	if ($visiteurs == "oui") {
		$sql_visible = "aut.statut IN ('6forum','5poubelle')";
	if ($statut) {
		$sql_visible = "aut.statut IN ('$statut')";
		$tri = 'nom';
	} else {
		$sql_visible = "aut.statut IN ('0minirezo','1comite','5poubelle')";
@@ -271,7 +267,7 @@ case 'nombre':
	break;

case 'statut':
	$sql_order = ' statut, login = "", unom';
	$sql_order = ' statut, unom';
	break;

case 'nom':
@@ -286,7 +282,7 @@ default:
// La requete de base est tres sympa
//

 $row = spip_query("SELECT							aut.id_auteur AS id_auteur,							aut.statut AS statut,								aut.login AS login,								aut.nom AS nom,								aut.email AS email,								aut.source AS source,								aut.pass AS pass,								aut.url_site AS url_site,							aut.messagerie AS messagerie,							UPPER(aut.nom) AS unom,							count(lien.id_article) as compteur						$sql_sel									FROM spip_auteurs as aut							LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur	LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)		WHERE	$sql_visible								GROUP BY aut.id_auteur	 ORDER BY		$sql_order");
 $row = spip_query("SELECT							aut.id_auteur AS id_auteur,							aut.statut AS statut,								aut.nom AS nom,								UPPER(aut.nom) AS unom,							count(lien.id_article) as compteur						$sql_sel									FROM spip_auteurs as aut							LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur	LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)		WHERE	$sql_visible								GROUP BY aut.id_auteur	 ORDER BY		$sql_order");
 return $row;
}

@@ -298,48 +294,22 @@ function afficher_n_auteurs($auteurs) {
	$bouton_auteur = charger_fonction('bouton_auteur', 'inc');
	foreach ($auteurs as $row) {

		$nom = typo($row['nom']);

		list($s, $mail, $nom, $w, $p) = $bouton_auteur($row['id_auteur']);
		$res .= "\n<tr style='background-color: #eeeeee;'>"
		. "\n<td style='border-top: 1px solid #cccccc;'>"
		. bonhomme_statut($row)
		. $s
		. "</td><td class='arial1' style='border-top: 1px solid #cccccc;'>"
		. $mail
		. "</td><td class='verdana11' style='border-top: 1px solid #cccccc;'>"
		. "<a href='"
		. generer_url_ecrire('auteurs_edit',"id_auteur=".$row['id_auteur'])
		."'>"
		. ($nom ? $nom : ("<span style='color: red'>" . _T('texte_vide') . '</span>'))
		. '</a>';

		if (isset($row['restreint']) AND $row['restreint'])
			$res .= " &nbsp;<small>"._T('statut_admin_restreint')."</small>";


	// contact
		if ($options == 'avancees') {
			$res .= "</td><td class='arial1' style='border-top: 1px solid #cccccc;'>";
			$res .= $bouton_auteur($row['id_auteur'])."&nbsp;";
			if ($connect_statut=="0minirezo")
				if (strlen($row['email'])>3)
					$res .= "<a href='mailto:".$row['email']."'>"._T('lien_email')."</a>";
				else
					$res .= "&nbsp;";

			if (strlen($row['url_site'])>3)
				$res .= "</td><td class='arial1' style='border-top: 1px solid #cccccc;'><a href='".$row['url_site']."'>"._T('lien_site')."</a>";
			else
				$res .= "</td><td style='border-top: 1px solid #cccccc;'>&nbsp;";
		}

	// nombre d'articles
		$res .= "</td><td class='arial1' style='border-top: 1px solid #cccccc;'>";
		if ($row['compteur'] > 1)
			$res .= $row['compteur']."&nbsp;"._T('info_article_2');
		else if($row['compteur'] == 1)
			$res .= "1&nbsp;"._T('info_article');
		else
			$res .= "&nbsp;";

		$res .= "</td></tr>\n";
		. $nom
		. ((isset($row['restreint']) AND $row['restreint'])
		   ? (" &nbsp;<small>"._T('statut_admin_restreint')."</small>")
		   : '')
		 ."</td><td class='arial1' style='border-top: 1px solid #cccccc;'>"
		 . $w
		 . "</td><td class='arial1' style='border-top: 1px solid #cccccc;'>"
		 . $p
		.  "</td></tr>\n";
	}
	return $res;
}
+4 −5
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -91,13 +91,12 @@ if ($id_parent) {
    if ($titre_parent) {
	debut_cadre_forum("forum-interne-24.gif", false, "", typo($titre_parent));
	echo "<span class='arial2'>$date_heure_parent</span> ";
	echo " ".typo($auteur_parent);

	if ($id_auteur_parent) {
		$bouton_auteur = charger_fonction('bouton_auteur', 'inc');
		$bouton = $bouton_auteur($id_auteur_parent);
		if ($bouton) echo "&nbsp;".$bouton;
	}
		list($s, $mail, $nom, $w, $p) = $bouton_auteur($id_auteur_parent);
		echo "$mail&nbsp;$nom";
	} else 	echo " ", typo($auteur_parent);

	echo justifier(propre($texte_parent));

+47 −17
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -13,31 +13,61 @@
if (!defined("_ECRIRE_INC_VERSION")) return;

//
// affiche un bouton appelant le script de messagerie interne
//
// Construit un tableau des 5 informations principales sur un auteur,
// avec des liens vers les scripts associes:
// 1. l'icone du statut, avec lien vers la page de tous ceux ayant ce statut
// 2. le nom, avec lien vers la page complete des informations
// 3. le mot "mail" avec un lien mailto ou a defaut la messagerie de Spip
// 4. le nom du site perso avec le lien vers lui
// 5. le nombre d'articles publies

function inc_bouton_auteur_dist($id_auteur) {

	global $connect_id_auteur, $spip_lang_rtl;

	if ($id_auteur == $connect_id_auteur)
		return '';
	$id_auteur = intval($id_auteur);

	$row = spip_fetch_array(spip_query("SELECT *, (en_ligne<DATE_SUB(NOW(),INTERVAL 15 DAY)) AS parti FROM spip_auteurs where id_auteur=$id_auteur"));

	$vals = array();

	$login_req = spip_query("SELECT login, messagerie FROM spip_auteurs where id_auteur=" . intval($id_auteur) ." AND en_ligne>DATE_SUB(NOW(),INTERVAL 15 DAY)");
	$row = spip_fetch_array($login_req);
	$href = generer_url_ecrire("auteurs","statut=" . $row['statut']);
	$vals[] = "<a href='$href'>" . bonhomme_statut($row) . '</a>';

	if (($row['login'] == "") OR ($row['messagerie'] == "non")) {
			return '';
	if (($id_auteur == $connect_id_auteur) OR $row['parti'])
		$vals[]= '&nbsp;';
	else {
		if ($row['email']) $href='mailto:' . $row['email'];
		else $href = generer_url_ecrire("message_edit","new=oui&dest=$id_auteur&type=normal");

		$vals[]= "<a href='$href' title=\""
		  . _T('email')
		  . '">'
		  . http_img_pack("m_envoi$spip_lang_rtl.gif", "m&gt;", "width='14' height='7'", _T('info_envoyer_message_prive'))
		  . '</a>';
	}

	$title = _T('info_envoyer_message_prive');
	if ($bio_auteur = attribut_html(propre(couper($row["bio"], 100))))
		$bio_auteur = " title=\"$bio_auteur\"";

	if (!$nom = typo($row['nom']))
		$nom = "<span style='color: red'>" . _T('texte_vide') . '</span>';

	$vals[] = "<a href='"
	. generer_url_ecrire('auteur_infos', "id_auteur=$id_auteur&initial=-1")
	. "' $bio_auteur>$nom</a>";

	if ($url_site_auteur = $row["url_site"]) $vals[] =  "<a href='$url_site_auteur'>"._T('info_site_min')."</a>";
	else $vals[] =  "&nbsp;";

	$cpt = spip_fetch_array(spip_query("SELECT COUNT(articles.id_article) AS n FROM spip_auteurs_articles AS lien, spip_articles AS articles WHERE lien.id_auteur=$id_auteur AND articles.id_article=lien.id_article AND articles.statut IN " . ($connect_statut == "0minirezo" ? "('prepa', 'prop', 'publie', 'refuse')" : "('prop', 'publie')") . " GROUP BY lien.id_auteur"));

	$nombre_articles = intval($cpt['n']);

	if ($nombre_articles > 1) $vals[] =  $nombre_articles.' '._T('info_article_2');
	elseif ($nombre_articles == 1) $vals[] =  _T('info_1_article');
	else $vals[] =  "&nbsp;";

	return "<a href='"
	. generer_url_ecrire("message_edit","new=oui&dest=$id_auteur&type=normal")
	. "' title=\""
	. $title
	. "\">"
	. http_img_pack("m_envoi$spip_lang_rtl.gif", "m&gt;", "width='14' height='7'", $title)
	. "</a>";
	return $vals;
}
?>
+9 −40
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -22,7 +22,7 @@ function inc_editer_auteurs_dist($id_article, $flag, $cherche_auteur, $ids)
{
	global $options;

	$les_auteurs = join(',', determiner_auteurs_article($id_article));
	$les_auteurs = determiner_auteurs_article($id_article);
	if ($flag AND $options == 'avancees') {
		$futurs = ajouter_auteurs_articles($id_article, $les_auteurs);
	} else $futurs = '';
@@ -174,49 +174,18 @@ function afficher_auteurs_articles($id_article, $flag_editable, $les_auteurs)

	$table = array();

	$result = spip_query("SELECT * FROM spip_auteurs AS A WHERE A.id_auteur IN ($les_auteurs) ORDER BY A.nom");

	$bouton_auteur = charger_fonction('bouton_auteur', 'inc');
	while ($row = spip_fetch_array($result)) {
			$vals = array();
			$id_auteur = $row["id_auteur"];
			$nom_auteur = $row["nom"];
			$email_auteur = $row["email"];
			if ($bio_auteur = attribut_html(propre(couper($row["bio"], 100))))
			  $bio_auteur = " title=\"$bio_auteur\"";
			$url_site_auteur = $row["url_site"];

			$vals[] = bonhomme_statut($row);

			$vals[] = "<a href='" . generer_url_ecrire('auteurs_edit', "id_auteur=$id_auteur") . "' $bio_auteur>".typo($nom_auteur)."</a>";

			$vals[] = $bouton_auteur($id_auteur);
		
			if ($email_auteur) $vals[] =  "<a href='mailto:$email_auteur'>"._T('email')."</a>";
			else $vals[] =  "&nbsp;";

			if ($url_site_auteur) $vals[] =  "<a href='$url_site_auteur'>"._T('info_site_min')."</a>";
			else $vals[] =  "&nbsp;";

			$cpt = spip_fetch_array(spip_query("SELECT COUNT(articles.id_article) AS n FROM spip_auteurs_articles AS lien, spip_articles AS articles WHERE lien.id_auteur=$id_auteur AND articles.id_article=lien.id_article AND articles.statut IN " . ($connect_statut == "0minirezo" ? "('prepa', 'prop', 'publie', 'refuse')" : "('prop', 'publie')") . " GROUP BY lien.id_auteur"));

			$nombre_articles = intval($cpt['n']);

			if ($nombre_articles > 1) $vals[] =  $nombre_articles.' '._T('info_article_2');
			elseif ($nombre_articles == 1) $vals[] =  _T('info_1_article');
			else $vals[] =  "&nbsp;";
	foreach($les_auteurs as $id_auteur) {
		$vals = $bouton_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_article,-$id_auteur",'articles', "id_article=$id_article", array(_T('lien_retirer_auteur')."&nbsp;". http_img_pack('croix-rouge.gif', "X", "width='7' height='7' border='0' align='middle'")));
			} else {
			  $vals[] = "";
			}
		
		} else  $vals[] = "";
		$table[] = $vals;
	}
	
	$largeurs = array('14', '', '', '', '', '', '');
	$styles = array('arial11', 'arial2', 'arial11', 'arial11', 'arial11', 'arial11', 'arial1');
	$largeurs = array('14', '', '', '', '', '');
	$styles = array('arial11', 'arial2', 'arial11', 'arial11', 'arial11', 'arial1');

	return "<div class='liste'><table width='100%' cellpadding='3' cellspacing='0' border='0' background=''>"
	. afficher_liste($largeurs, $table, $styles)
Chargement en cours