Browse Source

- page referers qui gere aussi referers du jour et de la veille, donc suppression de l'ancienne page php qui faisait ça

- navigation entre stats et referers d'un article
- icones tirees de http://www.fatcow.com/free-icons sous licence CC-by-sa 3.0
spip-3.0 v0.3.0
cedric@yterium.com 12 years ago
parent
commit
e5797df1b8
  1. 17
      .gitattributes
  2. 75
      exec/statistiques_referers.php
  3. 149
      inc/referenceurs.php
  4. 13
      inc/stats_referers_to_array.php
  5. 29
      plugin.xml
  6. 26
      prive/squelettes/contenu/stats_referers.html
  7. 11
      prive/squelettes/inclure/stats-visites-data.html
  8. BIN
      prive/themes/spip/images/chartpie-16.png
  9. BIN
      prive/themes/spip/images/chartpie-24.png
  10. BIN
      prive/themes/spip/images/chartpie-32.png
  11. 2
      prive/themes/spip/images/licence.txt
  12. BIN
      prive/themes/spip/images/referers-16.png
  13. BIN
      prive/themes/spip/images/referers-24.png
  14. BIN
      prive/themes/spip/images/referers-32.png
  15. BIN
      prive/themes/spip/images/statistique-16.png
  16. BIN
      prive/themes/spip/images/statistique-24.png
  17. BIN
      prive/themes/spip/images/statistique-32.png
  18. 0
      prive/themes/spip/images/statistiques-48.png
  19. BIN
      prive/themes/spip/images/zoomin-16.png
  20. BIN
      prive/themes/spip/images/zoomin-24.png
  21. BIN
      prive/themes/spip/images/zoomin-32.png
  22. BIN
      prive/themes/spip/images/zoomout-16.png
  23. BIN
      prive/themes/spip/images/zoomout-24.png
  24. BIN
      prive/themes/spip/images/zoomout-32.png

17
.gitattributes vendored

@ -5,7 +5,6 @@ base/stats_upgrade.php -text
/engines-list.txt -text
exec/base_delete_stats.php -text
exec/statistiques_lang.php -text
exec/statistiques_referers.php -text
exec/statistiques_repartition.php -text
formulaires/configurer_compteur.html -text
formulaires/configurer_compteur.php -text
@ -20,7 +19,6 @@ javascript/jquery.flot.js -text
javascript/jquery.tflot.js -text
/plugin.xml -text
prive/bouton/statistiques.html -text
prive/images/statistiques-48.png -text
prive/squelettes/contenu/stats_referers.html -text
prive/squelettes/contenu/stats_referers_fonctions.php -text
prive/squelettes/contenu/stats_visites.html -text
@ -31,8 +29,23 @@ prive/squelettes/top/stats_referers.html -text
prive/squelettes/top/stats_visites.html -text
prive/stats/visites.html -text
prive/style_prive_plugin_stats.html -text
prive/themes/spip/images/chartpie-16.png -text
prive/themes/spip/images/chartpie-24.png -text
prive/themes/spip/images/chartpie-32.png -text
prive/themes/spip/images/licence.txt -text
prive/themes/spip/images/referers-16.png -text
prive/themes/spip/images/referers-24.png -text
prive/themes/spip/images/referers-32.png -text
prive/themes/spip/images/statistique-16.png -text
prive/themes/spip/images/statistique-24.png -text
prive/themes/spip/images/statistique-32.png -text
prive/themes/spip/images/statistiques-48.png -text
prive/themes/spip/images/zoomin-16.png -text
prive/themes/spip/images/zoomin-24.png -text
prive/themes/spip/images/zoomin-32.png -text
prive/themes/spip/images/zoomout-16.png -text
prive/themes/spip/images/zoomout-24.png -text
prive/themes/spip/images/zoomout-32.png -text
prive/transmettre/statistiques.html -text
public/stats.php -text
/stats_autoriser.php -text

75
exec/statistiques_referers.php

@ -1,75 +0,0 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2011 *
* 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');
// http://doc.spip.org/@exec_statistiques_referers_dist
function exec_statistiques_referers_dist()
{
$jour = _request('jour');
$limit = _request('limit');
// nombre de referers a afficher
$limit = intval($limit); //secu
if (!autoriser('voirstats','article')) {
include_spip('inc/minipres');
echo minipres();
} else {
if ($limit == 0) $limit = 100;
if ($jour<>'veille') $jour='jour';
$referenceurs = charger_fonction('referenceurs', 'inc');
$res = $referenceurs (0, "SUM(visites_$jour)", 'spip_referers', "visites_$jour>0", "referer", $limit);
$n = count($res);
$args = "jour=$jour&limit=" . strval($limit+200);
$plus = generer_url_ecrire('statistiques_referers', $args);
if ($plus) {
$plus = "<div style='text-align:right;'><b><a href='$plus'>+++</a></b></div>";
}
$titre = _T('titre_liens_entrants')
. " ($n "
. ($n <= 1 ? _T('info_site') : _T('info_sites'))
. ")";
$commencer_page = charger_fonction('commencer_page', 'inc');
echo $commencer_page(_T('titre_page_statistiques_referers'), "statistiques_visites", "referers");
echo gros_titre($titre,'', false);
echo debut_gauche('', true);
echo debut_boite_info(true);
echo "<p style='font-size:small; text-align:left;' class='verdana1'>";
echo _T('info_gauche_statistiques_referers');
echo "</p>";
echo fin_boite_info(true);
echo debut_droite('', true);
echo barre_onglets("stat_referers", $jour . '_referers'); // attention a pas avoir le meme id d'onglet...
if ($res) {
echo "<br /><div style='font-size:small;' class='verdana1'>";
echo "<ul class='referers'><li>";
echo join("</li><li>\n", $res);
echo "</li></ul>";
echo $plus;
}
echo "</div><br />";
echo fin_gauche(), fin_page();
}
}
?>

149
inc/referenceurs.php

@ -12,115 +12,15 @@
if (!defined("_ECRIRE_INC_VERSION")) return;
//
// Afficher les referers d'un article (ou du site)
//
// http://doc.spip.org/@inc_referenceurs_dist
function inc_referenceurs_dist($id_article, $select, $table, $where, $groupby, $limit, $serveur = ''){
$nbvisites = $lescriteres = array();
$result = sql_select("referer_md5, referer, $select AS vis", $table, $where, $groupby, "maj DESC", $limit, '', $serveur);
while ($row = sql_fetch($result, $serveur)){
$referer = interdire_scripts($row['referer']);
$buff = stats_show_keywords($referer, $referer);
if ($buff["host"]){
$numero = $buff["hostname"];
$visites = $row['vis'];
$referermd5 = $row['referer_md5'];
$lesreferermd5[$numero] = $referermd5;
$lesliens[$numero] = $referer;
$lesurls[$numero] = $buff["host"];
if (!isset($nbvisites[$numero]))
$nbvisites[$numero] = $visites;
else
$nbvisites[$numero] += $visites;
if (!isset($lesreferers[$numero]))
$lesreferers[$numero] = array();
if (!isset($lesliensracine[$numero]))
$lesliensracine[$numero] = 0;
if (isset($buff["keywords"])
AND $c = $buff["keywords"]){
if (!isset($lescriteres[$numero][$c])){
$lescriteres[$numero][$c] = true;
$tmp = " &laquo;&nbsp;$c&nbsp;&raquo;";
} else $tmp = "";
} else {
$tmp = $buff["path"];
if ($buff["query"])
$tmp .= "?".$buff['query'];
if (strlen($tmp)>18)
$tmp = "/".substr($tmp, 0, 15)."...";
else if (strlen($tmp)>0)
$tmp = "/$tmp";
}
if ($tmp){
$lesreferers[$numero][] = "<a href=\"".attribut_html($referer)."\">".quote_amp(urldecode($tmp))."</a>".(($visites>1) ? " ($visites)" : "").($id_article ? '' : referes($referermd5));
} else $lesliensracine[$numero] += $visites;
}
}
if (!count($nbvisites)) return array();
arsort($nbvisites);
return referers_group($nbvisites, $id_article, $lesliensracine, $lesreferermd5, $lesreferers, $lesurls);
}
function referers_group($nbvisites, $id_article, $lesliensracine, $lesreferermd5, $lesreferers, $lesurls){
global $spip_lang_right, $source_vignettes;
$vign = ((strlen($source_vignettes)>0) &&
$GLOBALS['meta']["activer_captures_referers"]!='non');
$aff = array();
foreach ($nbvisites as $numero => $visites){
if (!$numero) next;
$referermd5 = $lesreferermd5[$numero];
$bouton = $ret = "";
if ($vign)
$ret = "\n<a href=\"http://".$lesurls[$numero]."\"><img src=\"$source_vignettes".rawurlencode($lesurls[$numero])."\"\nstyle=\"float: $spip_lang_right; margin-bottom: 3px; margin-left: 3px;\" alt='' /></a>";
if ($visites>5) $bouton .= "<span class='visites visites3'>$visites "._T('info_visites')."</span> ";
else if ($visites>1) $bouton .= "<span class='visites visites2'>$visites "._T('info_visites')."</span> ";
else $bouton .= "<span class='visites visites1'>$visites "._T('info_visite')."</span> ";
if ($numero=="(email)"){
$ret .= $bouton."<b>".$numero."</b>";
}
else {
$n = count($lesreferers[$numero]);
if (($n>1) || ($n>0 && substr(supprimer_tags($lesreferers[$numero][0]), 0, 1)!='/')){
$rac = $lesliensracine[$numero];
$bouton .= "<a href=\"http://".attribut_html($lesurls[$numero])."\" style='font-weight: bold;'>".$numero."</a>"
.(!$rac ? '' : (" <span class='spip_x-small'>(".$rac.")</span>"));
$ret .= bouton_block_depliable($bouton, false)
.debut_block_depliable(false)
."\n<ul><li>"
.join("</li><li>", $lesreferers[$numero])
."</li></ul>"
.fin_block();
} else {
$ret .= $bouton;
$lien = $n ? $lesreferers[$numero][0] : '';
if (preg_match(",^(<a [^>]+>)([^ ]*)( \([0-9]+\))?,i", $lien, $regs)){
$lien = quote_amp($regs[1]).$numero.$regs[2];
if (!strpos($lien, '</a>')) $lien .= '</a>';
} else
$lien = "<a href=\"http://".attribut_html($numero)."\">".$numero."</a>";
$ret .= "<b>".quote_amp($lien)."</b>"
.($id_article ? '' : referes($referermd5));
}
}
$aff[] = $ret;
}
return $aff;
}
// Les deux fonctions suivantes sont adaptees du code des "Visiteurs",
// par Jean-Paul Dezelus (http://www.phpinfo.net/applis/visiteurs/)
// http://doc.spip.org/@stats_load_engines
/**
* Recuperer la liste des moteurs de recherche depuis un fichier txt
* Adaptees du code des "Visiteurs",
* par Jean-Paul Dezelus (http://www.phpinfo.net/applis/visiteurs/)
*
* http://doc.spip.org/@stats_load_engines
*
* @return array
*/
function stats_load_engines(){
$arr_engines = Array();
lire_fichier(find_in_path('engines-list.txt'), $moteurs);
@ -137,8 +37,18 @@ function stats_load_engines(){
return $arr_engines;
}
// http://doc.spip.org/@stats_show_keywords
function stats_show_keywords($kw_referer, $kw_referer_host){
/**
* Retrouver les mots cles de recherche dans une url de referer
*
* Adaptees du code des "Visiteurs",
* par Jean-Paul Dezelus (http://www.phpinfo.net/applis/visiteurs/)
*
* http://doc.spip.org/@stats_show_keywords
*
* @param string $kw_referer
* @return array
*/
function stats_show_keywords($kw_referer){
static $arr_engines = '';
static $url_site;
@ -231,11 +141,14 @@ function stats_show_keywords($kw_referer, $kw_referer_host){
}
//
// Recherche des articles pointes par le referer
//
// http://doc.spip.org/@referes
/**
* Recherche des articles pointes par le referer
* http://doc.spip.org/@referes
*
* @param $referermd5
* @param string $serveur
* @return string
*/
function referes($referermd5, $serveur = ''){
$retarts = sql_allfetsel('J2.id_article, J2.titre', 'spip_referers_articles AS J1 LEFT JOIN spip_articles AS J2 ON J1.id_article = J2.id_article', "(referer_md5='$referermd5' AND J1.maj>=DATE_SUB(".sql_quote(date('Y-m-d H:i:s')).", INTERVAL 2 DAY))", '', "titre", '', '', $serveur);
@ -246,9 +159,9 @@ function referes($referermd5, $serveur = ''){
}
if (count($retarts)>1)
return '<br />&rarr; '.join(',<br />&rarr; ', $retarts);
return '&rarr; '.join(',<br />&rarr; ', $retarts);
if (count($retarts)==1)
return '<br />&rarr; '.array_shift($retarts);
return '&rarr; '.array_shift($retarts);
return '';
}

13
inc/stats_referers_to_array.php

@ -20,13 +20,19 @@ define('MOYENNE_GLISSANTE_JOUR', 30);
define('MOYENNE_GLISSANTE_MOIS', 12);
include_spip('inc/referenceurs');
function inc_stats_referers_to_array_dist($limit, $id_article, $options = array()) {
$now = time();
function inc_stats_referers_to_array_dist($limit, $jour, $id_article, $options = array()) {
$visites = 'visites';
$table = "spip_referers";
$where = array();
$serveur = '';
if (in_array($jour,array('jour','veille'))){
$visites .= "_$jour";
$where[] = "$visites>0";
}
//$res = $referenceurs (0, "SUM(visites_$jour)", 'spip_referers', "visites_$jour>0", "referer", $limit);
if ($id_article) {
$table = "spip_referers_articles";
$where[] = "id_article=".intval($id_article);
@ -35,8 +41,7 @@ function inc_stats_referers_to_array_dist($limit, $id_article, $options = array(
$where = implode(" AND ",$where);
$limit = $limit?"0,".intval($limit):'';
$nbvisites = $lescriteres = array();
$result = sql_select("referer_md5, referer, visites AS vis", $table, $where, '', "maj DESC", $limit,'',$serveur);
$result = sql_select("referer_md5, referer, $visites AS vis", $table, $where, '', "maj DESC", $limit,'',$serveur);
$referers = array();
$trivisites = array(); // pour le tri

29
plugin.xml

@ -1,8 +1,8 @@
<plugin>
<nom>Statistiques</nom>
<icon>prive/themes/spip/images/statistique-24.png</icon>
<icon>prive/themes/spip/images/statistique-32.png</icon>
<auteur>Collectif SPIP</auteur>
<version>0.1.4</version>
<version>0.3.0</version>
<version_base>0.1.0</version_base>
<etat>dev</etat>
<description>
@ -57,42 +57,25 @@
<url>stats_visites</url>
</bouton>
<onglet id='stats_visites' parent='statistiques'>
<icone>null</icone>
<icone>images/statistique-24.png</icone>
<titre>icone_statistiques_visites</titre>
<url>stats_visites</url>
</onglet>
<onglet id='stats_referers' parent='statistiques'>
<icone>null</icone>
<icone>images/referers-24.png</icone>
<titre>titre_liens_entrants</titre>
<url>stats_referers</url>
</onglet>
<onglet id='statistiques_repartition' parent='statistiques'>
<icone>null</icone>
<icone>images/chartpie-24.png</icone>
<titre>icone_repartition_visites</titre>
<url>statistiques_repartition</url>
</onglet>
<onglet id='statistiques_lang' parent='statistiques'>
<icone>null</icone>
<icone>images/langue-24.png</icone>
<titre>onglet_repartition_lang</titre>
<url>statistiques_lang</url>
</onglet>
<bouton id="referers" parent="bando_activite" position="1">
<icone>images/referer-16.png</icone>
<titre>titre_liens_entrants</titre>
<url>statistiques_referers</url>
</bouton>
<onglet id='jour_referers' parent='stat_referers'>
<icone>null</icone>
<titre>date_aujourdhui</titre>
<url>statistiques_referers</url>
</onglet>
<onglet id='veille_referers' parent='stat_referers'>
<icone>null</icone>
<titre>date_hier</titre>
<url>statistiques_referers</url>
<args>jour=veille</args>
</onglet>
</plugin>

26
prive/squelettes/contenu/stats_referers.html

@ -1,7 +1,25 @@
<BOUCLE_expose(ARTICLES){id_article}{statut==.*}>
#BOITE_OUVRIR{'','note'}
<a class='annule_filtre ajax' href="[(#SELF|parametre_url{id_article,''})]" title="<:tout_voir|attribut_html:>">[(#CHEMIN_IMAGE{fermer-16.png}|balise_img|inserer_attribut{alt,<:tout_voir:>})]</a>
<:titre_liens_entrants:> <:info_pour:>
<h2 class='objet_titre'><a href='#URL_ARTICLE'>#TITRE</a></h2>
<a href="#URL_ECRIRE{stats_visites,id_article=#ID_ARTICLE}"><:titre_page_statistiques_visites:></a>
#BOITE_FERMER
</BOUCLE_expose>
<div class="onglets_simple clearfix">
<ul>
<li>[(#URL_ECRIRE{stats_referers}|lien_ou_expose{<:info_tout_afficher:>,[(#ENV{jour,''}|non)],ajax})]</li>
<li>[(#URL_ECRIRE{stats_referers,jour=jour}|lien_ou_expose{<:date_aujourdhui|ucfirst:>,#ENV{jour,''}|=={jour},ajax})]</li>
<li>[(#URL_ECRIRE{stats_referers,jour=veille}|lien_ou_expose{<:date_hier|ucfirst:>,#ENV{jour,''}|=={veille},ajax})]</li>
</ul>
</div>
<B_statsr>
<h1><:onglet_origine_visites:> (#TOTAL_BOUCLE [(#TOTAL_BOUCLE|singulier_ou_pluriel{info_site,info_sites})])</h1>
[<h2>(#ENV{jour,''}|=={jour}|oui)<:date_aujourdhui|ucfirst:></h2>]
[<h2>(#ENV{jour,''}|=={veille}|oui)<:date_hier|ucfirst:></h2>]
<ul class="liste-items referers">
<BOUCLE_statsr(DATA){source stats_referers,#ENV{limit,100},#ENV{id_article}}>
<BOUCLE_statsr(DATA){source stats_referers,#ENV{limit,100},#ENV{jour,''},#ENV{id_article}}>
<li class="item referer" onclick="$(this).find('.referer-detail').toggle('fast');">
<h3>
<span class="visites">[[(#VALEUR{visites}) ](#VALEUR{visites}|singulier_ou_pluriel{info_visite,info_visites}|trim{:}|trim)]</span>
@ -18,7 +36,7 @@
<BOUCLE_sous(POUR){tableau #VALEUR{referers}}>
<li><a href="#VALEUR{referer}">[(#VALEUR{keywords}|?{[&laquo;&nbsp;(#VALEUR{keywords})&nbsp;&raquo;],[(#VALEUR{path})]})]</a>
[(#VALEUR{visites}|>{1}|oui)\(#VALEUR{visites}\)]
[(#VALEUR{referes})]
[<br />(#VALEUR{referes})]
</li>
</BOUCLE_sous>
</ul>
@ -29,5 +47,7 @@
</ul>
</B_statsr>
<h1><:onglet_origine_visites:></h1>
[<h2>(#ENV{jour,''}|=={jour}|oui)<:date_aujourdhui|ucfirst:></h2>]
[<h2>(#ENV{jour,''}|=={veille}|oui)<:date_hier|ucfirst:></h2>]
<//B_statsr>
<p class="action plus"><a href="[(#SELF|parametre_url{limit,#ENV{limit,100}|plus{200}})]" class="ajax">+++</a></p>
<p class="action plus"><a href="[(#SELF|parametre_url{limit,#ENV{limit,100}|plus{200}})]" class="ajax">+++</a></p>

11
prive/squelettes/inclure/stats-visites-data.html

@ -1,9 +1,10 @@
[(#BOITE_OUVRIR{[(#CHEMIN_IMAGE{statistique-24.png}|balise_img{'',cadre-icone})]<h1><:titre_evolution_visite:></h1>,'simple stats'})]
<BOUCLE_expose(ARTICLES){id_article}>
<BOUCLE_expose(ARTICLES){id_article}{statut==.*}>
#BOITE_OUVRIR{'','note'}
<a class='annule_filtre ajax' href="[(#SELF|parametre_url{id_article,''})]" title="<:tout_voir|attribut_html:>">[(#CHEMIN_IMAGE{fermer-16.png}|balise_img|inserer_attribut{alt,<:tout_voir:>})]</a>
<:titre_page_statistiques_visites:> <:info_pour:>
<h2 class='objet_titre'><a href='#URL_ARTICLE'>#TITRE</a></h2>
<a href="#URL_ECRIRE{stats_referers,id_article=#ID_ARTICLE}"><:titre_liens_entrants:></a>
#BOITE_FERMER
</BOUCLE_expose>
#SET{c,#VAL{article}|classement_populaires}
@ -13,12 +14,12 @@
#SET{args,#ARRAY{id_article,#ID_ARTICLE,duree,#DUREE}}
<a href="[(#URL_PAGE{transmettre,[(#VAL{statistiques}|param_low_sec{#GET{args}, '', 'transmettre'})]})]" class="noajax">CSV</a>
</span>
[<span class="duree">(#ENV{duree,90}) <:info_jours:></span>]
|
[<span class="duree">(#ENV{duree,90}) <:info_jours:></span>] |
<a href="[(#SELF|parametre_url{duree,#ENV{duree,90}|duree_zoom{moins}})]"
class="ajax">[(#CHEMIN_IMAGE{loupe-moins.gif}|balise_img{<:info_zoom:> -})]</a>
class="ajax">[(#CHEMIN_IMAGE{zoomout-24.png}|balise_img{<:info_zoom:> -})]</a>
<a href="[(#SELF|parametre_url{duree,#ENV{duree,90}|duree_zoom{plus}})]"
class="ajax">[(#CHEMIN_IMAGE{loupe-plus.gif}|balise_img{<:info_zoom:> +})]</a>
class="ajax">[(#CHEMIN_IMAGE{zoomin-24.png}|balise_img{<:info_zoom:> +})]</a>
</p>
#SET{max,0}
#SET{moy,0}

BIN
prive/themes/spip/images/chartpie-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 821 B

BIN
prive/themes/spip/images/chartpie-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
prive/themes/spip/images/chartpie-32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

2
prive/themes/spip/images/licence.txt

@ -0,0 +1,2 @@
Icones sous license: Creative Commons (Attribution 3.0 United States)
credits : http://www.fatcow.com/free-icons

BIN
prive/themes/spip/images/referers-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 B

BIN
prive/themes/spip/images/referers-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
prive/themes/spip/images/referers-32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
prive/themes/spip/images/statistique-16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 811 B

After

Width:  |  Height:  |  Size: 604 B

BIN
prive/themes/spip/images/statistique-24.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 942 B

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
prive/themes/spip/images/statistique-32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

0
prive/images/statistiques-48.png → prive/themes/spip/images/statistiques-48.png

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
prive/themes/spip/images/zoomin-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 797 B

BIN
prive/themes/spip/images/zoomin-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
prive/themes/spip/images/zoomin-32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
prive/themes/spip/images/zoomout-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 B

BIN
prive/themes/spip/images/zoomout-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
prive/themes/spip/images/zoomout-32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Loading…
Cancel
Save