File "articles_versions.php"
Full path: /home/meharicl/www/ecrire/exec/articles_versions.php
File
size: 7.39 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2016 *
* 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/@exec_articles_versions_dist
function exec_articles_versions_dist()
{
exec_articles_versions_args(intval(_request('id_article')),
intval(_request('id_version')),
intval(_request('id_diff'))); // code mort ?
}
// http://doc.spip.org/@exec_articles_versions_args
function exec_articles_versions_args($id_article, $id_version, $id_diff)
{
global $spip_lang_left, $spip_lang_right;
if (!autoriser('voirrevisions', 'article', $id_article)
OR !$row = sql_fetsel("*", "spip_articles", "id_article=".sql_quote($id_article))){
include_spip('inc/minipres');
echo minipres();
return;
}
include_spip('inc/suivi_versions');
include_spip('inc/presentation');
include_spip('inc/revisions');
// recuperer les donnees actuelles de l'article
$id_article = $row["id_article"];
$id_rubrique = $row["id_rubrique"];
$titre = $row["titre"];
$statut_article = $row["statut"];
$lang = $row["lang"];
// Afficher le debut de la page (y compris rubrique)
$commencer_page = charger_fonction('commencer_page', 'inc');
echo $commencer_page(_T('info_historique')." « $titre »", "naviguer", "articles", $id_rubrique);
echo debut_grand_cadre(true);
echo afficher_hierarchie($id_rubrique);
echo fin_grand_cadre(true);
//////////////////////////////////////////////////////
// Affichage de la colonne de gauche
//
echo debut_gauche('', true);
echo bloc_des_raccourcis(icone_horizontale(_T('icone_retour_article'), generer_url_ecrire("articles","id_article=$id_article"), "article-24.gif","rien.gif", false) .
icone_horizontale(_T('icone_suivi_revisions'), generer_url_ecrire("suivi_revisions",""), "historique-24.gif","rien.gif", false));
//////////////////////////////////////////////////////
// Affichage de la colonne de droite
//
echo debut_droite('', true);
$lang_dir = lang_dir(changer_typo($lang));
//
// recuperer les donnees versionnees
//
$last_version = false;
if (!$id_version) {
$id_version = $row['id_version'];
$last_version = true;
}
$textes = revision_comparee($id_article, $id_version, 'complet', $id_diff);
unset($id_rubrique); # on n'en n'aura besoin que si on affiche un diff
//
// Titre, surtitre, sous-titre
//
$debut = $corps = '';
if (is_array($textes))
foreach ($textes as $var => $t) {
switch ($var) {
case 'id_rubrique':
$debut .= "<div dir='$lang_dir' class='arial1 spip_x-small'>"
. $t
. "</div>\n";
break;
case 'surtitre':
case 'soustitre':
$debut .= "<div dir='$lang_dir' class='arial1 spip_medium'><b>" . propre_diff($t) . "</b></div>\n";
break;
case 'titre':
$debut .= gros_titre(propre_diff($t),
puce_statut($statut_article, " style='vertical-align: center'"), false);
break;
// trois champs a affichage combine
case 'descriptif':
case 'url_site':
case 'nom_site':
if (!$vudesc++) {
$debut .= "<div style='text-align: $spip_lang_left; padding: 5px; border: 1px dashed #aaaaaa; background-color: #e4e4e4;' dir='$lang_dir'>";
$texte_case = ($textes['descriptif']) ? "{{"._T('info_descriptif')."}} ".$textes['descriptif']."\n\n" : '';
$texte_case .= ($textes['nom_site'].$textes['url_site']) ? "{{"._T('info_urlref')."}} [".$textes['nom_site']."->".$textes['url_site']."]" : '';
$debut .= "<span class='verdana1 spip_small'>"
. propre($texte_case). "</span>";
$debut .= "</div>";
}
break;
default:
$corps .= "<div dir='$lang_dir' class='champ contenu_$var'>"
. "<div class='label'>$var</div>"
. "<div class='$var'>"
. propre_diff($t)
. "</div></div>\n";
break;
}
}
echo '<div id="contenu">';
echo debut_cadre_relief('', true);
echo "\n<table id='diff' cellpadding='0' cellspacing='0' border='0' width='100%'>";
echo "<tr><td style='width: 100%' valign='top'>";
echo $debut;
echo "</td><td>";
// Icone de modification
if (autoriser('modifier', 'article', $id_article))
echo icone_inline(
_T('icone_modifier_article').'<br />('._T('version')." $id_version)",
generer_url_ecrire("articles_edit",
"id_article=$id_article".((!$last_version)?"&id_version=$id_version":"")),
"article-24.gif",
"edit.gif",
$spip_lang_right
);
echo "</td>";
echo "</tr></table>";
echo fin_cadre_relief(true);
//////////////////////////////////////////////////////
// Affichage des versions
//
$result = sql_select("id_version, titre_version, date, id_auteur",
"spip_versions",
"id_article=".sql_quote($id_article)." AND id_version>0",
"", "id_version DESC");
echo debut_cadre_relief('', true);
$zapn = 0;
$lignes = array();
$points = '...';
$tranches = 10;
while ($row = sql_fetch($result)) {
$res = '';
// s'il y en a trop on zappe a partir de la 10e
// et on s'arrete juste apres celle cherchee
if ($zapn++ > $tranches
AND abs($id_version - $row['id_version']) > $tranches<<1) {
if ($points) {
$lignes[]= $points;
$points = '';
}
if ($id_version > $row['id_version']) break;
continue;
}
$date = affdate_heure($row['date']);
$version_aff = $row['id_version'];
$titre_version = typo($row['titre_version']);
$titre_aff = $titre_version ? $titre_version : $date;
if ($version_aff != $id_version) {
$lien = parametre_url(self(), 'id_version', $version_aff);
$lien = parametre_url($lien, 'id_diff', '');
$res .= "<a href='".($lien.'#diff')."' title=\""._T('info_historique_affiche')."\">$titre_aff</a>";
} else {
$res .= "<b>$titre_aff</b>";
}
if (is_numeric($row['id_auteur'])
AND $t = sql_getfetsel('nom', 'spip_auteurs', "id_auteur=" . intval($row['id_auteur']))) {
$res .= " (".typo($t).")";
} else {
$res .= " (".$row['id_auteur'].")"; #IP edition anonyme
}
if ($version_aff != $id_version) {
$res .= " <span class='verdana2'>";
if ($version_aff == $id_diff) {
$res .= "<b>("._T('info_historique_comparaison').")</b>";
} else {
$lien = parametre_url(self(), 'id_version', $id_version);
$lien = parametre_url($lien, 'id_diff', $version_aff);
$res .= "(<a href='".($lien.'#diff').
"'>"._T('info_historique_comparaison')."</a>)";
}
$res .= "</span>";
}
$lignes[]= $res;
}
if ($lignes) {
echo "<ul class='verdana3'><li>\n";
echo join("\n</li><li>\n", $lignes);
echo "</li></ul>\n";
}
//////////////////////////////////////////////////////
// Corps de la version affichee
//
echo "\n\n<div id='wysiwyg' style='text-align: justify;'>$corps";
// notes de bas de page
if (strlen($GLOBALS['les_notes']))
echo "<div class='champ contenu_notes'>
<div class='label'>"._T('info_notes')."</div>
<div class='notes' dir='$lang_dir'>"
.$GLOBALS['les_notes']
."</div></div>\n";
echo "</div>\n";
echo fin_cadre_relief(true);
echo '</div>'; // /#contenu
echo fin_gauche(), fin_page();
}
?>