Changeset 96547 in spip-zone


Ignore:
Timestamp:
Apr 8, 2016, 3:23:56 PM (3 years ago)
Author:
cyp@…
Message:

Bug fix + ajout export des statistiques en CSV

Location:
_plugins_/shortcut_url/trunk
Files:
6 added
11 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/shortcut_url/trunk/README.md

    r93886 r96547  
    1111
    1212* d3js (https://github.com/magikcypress/spip_d3js) [utilise]
     13
     14## Version 1.0.5 (08/04/2016)
     15
     16- Ajout du détail des clicks par bots et par humains
     17- Ajout du graph en ligne pour le nombre de click par les bots
     18- Ajout de l'export des statistiques au format CSV
     19- Fixe le liens vers la liste des stats sur la liste des stats des bots
     20- Fixe les chaînes de langue qui ne le sont pas
     21- Fixe le bug de lien vers la page de détail de stats sur la page résumé du click
     22- Fixe le nombre de click par URL, compte aussi les bots dans le total
    1323
    1424## Version 1.0.4 (23/12/2015)
  • _plugins_/shortcut_url/trunk/formulaires/shortcut_url.html

    r92636 r96547  
    2020                                <label for="#GET{name}"><:shortcut_url:ajouter_shortcut_url:></label>[
    2121                                <span class='erreur_message'>(#GET{erreurs})</span>
    22                                 ]<div class="choix">
    23                                         <input type="input" class="text" name="#GET{name}" id="#GET{name}" value="#ENV{#GET{name}}" size="50" />
    24                                 </div>
     22                                ]
     23                                <input type="input" class="text" name="#GET{name}" id="#GET{name}" value="#ENV{#GET{name}}" size="50" />
    2524                        </li>
    2625                        #SET{name,titre}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
     
    6867        <BOUCLE_stats(SHORTCUT_URLS_LOGS){id_shortcut_url}{0,1}>
    6968        <span class="icone s24 horizontale shortcut_url">
    70         <a href="[(#URL_ECRIRE{shortcut_url_logs_detail,id_shortcut_url=#ID_SHORTCUT_URL})]"><img width="24" height="24" alt="Supprimer URL raccourci" src="#CHEMIN_IMAGE{shortcut_url-new-24.png}"><b><:shortcut_url:titre_shortcut_url_liste_log:></a></b>
     69        <a href="[(#URL_ECRIRE{shortcut_url_logs_stats,id_shortcut_url=#ID_SHORTCUT_URL}|parametre_url{page,detail})]"><img width="24" height="24" alt="Supprimer URL raccourci" src="#CHEMIN_IMAGE{shortcut_url-new-24.png}"><b><:shortcut_url:titre_shortcut_url_liste_log:></a></b>
    7170        </span>
    7271        </BOUCLE_stats>
  • _plugins_/shortcut_url/trunk/lang/shortcut_url_fr.php

    r96495 r96547  
    1010        'ajouter_shortcut_title' => 'Ajouter votre propre raccourci',
    1111        'auteur_shortcut_url' => 'Cet URL a été créée par : ',
     12
     13        // C
     14        'config_export_ok' => 'L\'export des données c\'est correctement déroulé',
    1215
    1316        // E
     
    4346        'info_nb_shortcut_url_stat' => '@nb@ connexion sur l\'ensemble des URLs',
    4447        'info_nb_shortcut_url_stats' => '@nb@ connexions sur l\'ensemble des URLs',
     48        'info_1_shortcut_url_humain' => '<strong>@click@</strong> clicks pour les humains',
     49        'info_1_shortcut_url_bot' => '<strong>@click@</strong> clicks pour les robots',
     50        'item_utiliser_shortcut_export' => 'Exporter les statistiques des liens raccourcis',
    4551        'item_utiliser_shortcut_url' => 'Ajouter une URL et puis c\'est tout',
    4652        'item_utiliser_shortcut_title' => 'Vous pouvez définir le raccourci de votre URL (max @nb@ caractères)',
     53
     54        'label_mois' => 'Sélectionner un mois',
     55        'label_annee' => 'Sélectionner une année',
    4756
    4857        // N
     
    6271        'shortcut_url' => 'Raccourcis d\'URL',
    6372        'shortcut_url_logs' => 'Stats des raccourcis',
     73        'shortcut_url_logs_export' => 'Export des raccourcis',
    6474
    6575        // T
     
    6777        'titre_afficher_logs_shortcut_url' => 'Afficher les logs',
    6878        'titre_afficher_bots_shortcut_url' => 'Afficher les bots',
     79        'titre_export_logs_shortcut_url' => 'Exporter des raccourcis',
    6980        'titre_modifier_shortcut_url' => 'Modifier un lien raccourci',
    7081        'titre_details_url' => 'Détails de l\'URL raccourcie',
     
    8495        'titre_shortcut_url_graph_bots' => 'Raccourcis par bots',
    8596        'titre_shortcut_url_graph_click' => 'Nombre de clicks par jour',
     97        'titre_shortcut_url_graph_humain_click' => 'Nombre de clicks par jour pour les humains',
     98        'titre_shortcut_url_graph_bot_click' => 'Nombre de clicks par jour pour les robots',
    8699        'titre_shortcut_url_liste_logs_bots' => 'Liste statistique des bots'
    87100);
  • _plugins_/shortcut_url/trunk/paquet.xml

    r93870 r96547  
    22        prefix="shortcut_url"
    33        categorie="edition"
    4         version="1.0.4"
     4        version="1.0.5"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.1.*]"
  • _plugins_/shortcut_url/trunk/prive/objets/editer/shortcut_url_bots_detail.html

    r92352 r96547  
    44}})
    55]
     6<BOUCLE_count_humains(SHORTCUT_URLS_LOGS) {id_shortcut_url}>
     7[(#SET{total_humain, #TOTAL_BOUCLE})]
     8</BOUCLE_count_humains>
     9<BOUCLE_count_bots(SHORTCUT_URLS_BOTS) {id_shortcut_url}>
     10[(#SET{total_bot, #TOTAL_BOUCLE})]
     11</BOUCLE_count_bots>
     12
    613<BOUCLE_liste_shortcut_url_bots_detail(SHORTCUT_URLS){id_shortcut_url}>
    714<h1><:shortcut_url:titre_shortcut_url_log_detail:> #URL_SITE_SPIP/#TITRE</h1>
     
    3037
    3138[<strong>(#ENV*{titre,#CLICK|singulier_ou_pluriel{shortcut_url:info_1_shortcut_url_click,shortcut_url:info_nb_shortcut_url_clicks}})</strong>]
     39<p>
     40        <:shortcut_url:info_1_shortcut_url_humain{click=#GET{total_humain}}:><br />
     41        <:shortcut_url:info_1_shortcut_url_bot{click=#GET{total_bot}}:>
     42</p>
    3243
    3344<B_liste_shortcut_url_bots>
  • _plugins_/shortcut_url/trunk/prive/objets/editer/shortcut_url_bots_graphs.html

    r92637 r96547  
    118118#BOITE_FERMER
    119119
     120<h2><:shortcut_url:titre_shortcut_url_graph_bot_click:></h2>
     121
     122<script type="text/javascript">
     123
     124        $(document).ready(function($) {
     125                        var json = [
     126                                <BOUCLE_liste_shortcut_url_click_graph(SHORTCUT_URLS){id_shortcut_url}>
     127                                        <BOUCLE_shortcut_url_dateclick_graph(SHORTCUT_URLS_LOGS){id_shortcut_url}{humain=bot}{fusion DATE_FORMAT(date_modif, '%Y-%m-%d')}{!par date_modif}>#SET{date_modif,#DATE_MODIF|affdate{Y-m-d}}
     128                                        <BOUCLE_shortcut_url_dateclick_graph_nb(SHORTCUT_URLS_LOGS){id_shortcut_url}{humain=bot}{date_modif LIKE (#GET{date_modif})%}> </BOUCLE_shortcut_url_dateclick_graph_nb>
     129                                                {
     130                                                        "label": "[(#GET{date_modif})]",
     131                                                        "value": "#TOTAL_BOUCLE"
     132                                                },
     133                                        </B_shortcut_url_dateclick_graph_nb>
     134                                        </BOUCLE_shortcut_url_dateclick_graph>
     135                                </BOUCLE_liste_shortcut_url_click_graph>
     136                        ];
     137
     138                        var title_value = "<:shortcut_url:nb_click:>";
     139
     140                        var margin = {top: 60, right: 60, bottom: 60, left: 60},
     141                                width = 760 - margin.left - margin.right,
     142                                height = 400 - margin.top - margin.bottom;
     143
     144                        var parseDate = d3.time.format("%Y-%m-%d").parse;
     145                        var tooltipDate = d3.time.format("%e %b");
     146
     147                        var x = d3.time.scale()
     148                                .range([0, width]);
     149
     150                        var y = d3.scale.linear()
     151                                .range([height, 0]);
     152
     153                        var xAxis = d3.svg.axis()
     154                                .scale(x)
     155                                .tickSize(-height)
     156                                .tickSubdivide(1);
     157
     158                        var yAxis = d3.svg.axis()
     159                                .scale(y)
     160                                .ticks(6)
     161                                .orient("left");
     162
     163                        var line = d3.svg.area()
     164                                .x(function(d) { return x(d.label); })
     165                                .y(function(d) { return y(d.value); });
     166
     167                        var div = d3.select("body")
     168                                .append("div")
     169                                .attr("class", "tooltip")
     170                                .style("opacity", 0);
     171
     172                        var svg = d3.select("#d3_click").append("svg")
     173                                .attr("width", (width + margin.left + margin.right))
     174                                .attr("height", height + margin.top + margin.bottom)
     175                                .append("g")
     176                                .attr("transform", "translate(" + margin.left + "," + margin.top + ")");
     177
     178                        json.forEach(function(d) {
     179                                d.label = parseDate(d.label);
     180                                d.value = +d.value;
     181                        });
     182
     183                        x.domain(d3.extent(json, function(d) { return d.label; }));
     184                        y.domain(d3.extent(json, function(d) { return d.value; }));
     185
     186                        svg.append("g")
     187                                .attr("class", "x axis")
     188                                .attr("transform", "translate(0," + height + ")")
     189                                .call(xAxis)
     190                                .selectAll("text") 
     191                                        .style("text-anchor", "end")
     192                                        .attr("dx", "-.8em")
     193                                        .attr("dy", ".15em")
     194                                        .attr("transform", "rotate(-65)" );
     195
     196                        svg.append("g")
     197                                .attr("class", "y axis")
     198                                .call(yAxis)
     199                                .append("text")
     200                                .attr("y", -16)
     201                                .attr("dy", ".71em")
     202                                .style("text-anchor", "end")
     203                                .text(title_value);
     204
     205                        svg.append("path")
     206                                .datum(json)
     207                                .attr("class", "line")
     208                                .attr("d", line);
     209
     210                        svg.selectAll("dot")
     211                                .data(json)
     212                                .enter().append("circle")
     213                                .attr("class", "circle")
     214                                .attr("r", 6)
     215                                .attr("cx", function(d) { return x(d.label); })
     216                                .attr("cy", function(d) { return y(d.value); })
     217                                .on("mouseover", function(d) {
     218                                        div.transition()
     219                                                .duration(500)
     220                                                .style("opacity", 0);
     221                                        div.transition()
     222                                                .duration(200)
     223                                                .style("opacity", .9);
     224                                        div.html(tooltipDate(d.label) + "<br/>"  + d.value + " " + title_value)
     225                                                .style("left", (d3.event.pageX) + "px")
     226                                                .style("top", (d3.event.pageY - 28) + "px")
     227                                                .style("z-index", 5000);
     228                                })
     229                                .on("mousemove", function (d) {
     230                                        div.style("left", (d3.event.pageX)+ "px")
     231                                                .style("top",(d3.event.pageY - 48) + "px");
     232                                })
     233                                .on("mouseout", function(d) {
     234                                        div.style("opacity", 0);
     235                                });
     236
     237                });
     238</script>
     239
     240#BOITE_OUVRIR
     241        <div id="d3_click"></div>
     242#BOITE_FERMER
     243
    120244</BOUCLE_si_plugins_d3js>
    121245</B_si_plugins_d3js>
  • _plugins_/shortcut_url/trunk/prive/objets/editer/shortcut_url_logs_detail.html

    r92352 r96547  
    44}})
    55]
     6
     7<BOUCLE_count_humains(SHORTCUT_URLS_LOGS) {id_shortcut_url}>
     8[(#SET{total_humain, #TOTAL_BOUCLE})]
     9</BOUCLE_count_humains>
     10<BOUCLE_count_bots(SHORTCUT_URLS_BOTS) {id_shortcut_url}>
     11[(#SET{total_bot, #TOTAL_BOUCLE})]
     12</BOUCLE_count_bots>
     13
    614<BOUCLE_liste_shortcut_url_logs_detail(SHORTCUT_URLS){id_shortcut_url}>
    715<h1><:shortcut_url:titre_shortcut_url_log_detail:> #URL_SITE_SPIP/#TITRE</h1>
     
    3038
    3139[<strong>(#ENV*{titre,#CLICK|singulier_ou_pluriel{shortcut_url:info_1_shortcut_url_click,shortcut_url:info_nb_shortcut_url_clicks}})</strong>]
     40<p>
     41        <:shortcut_url:info_1_shortcut_url_humain{click=#GET{total_humain}}:><br />
     42        <:shortcut_url:info_1_shortcut_url_bot{click=#GET{total_bot}}:>
     43</p>
    3244
    3345<B_liste_shortcut_url_logs>
  • _plugins_/shortcut_url/trunk/prive/objets/editer/shortcut_url_logs_graphs.html

    r92638 r96547  
    195195#BOITE_FERMER
    196196
    197 <h2><:shortcut_url:titre_shortcut_url_graph_click:></h2>
     197<h2><:shortcut_url:titre_shortcut_url_graph_humain_click:></h2>
    198198
    199199<script type="text/javascript">
     
    202202                        var json = [
    203203                                <BOUCLE_liste_shortcut_url_click_graph(SHORTCUT_URLS){id_shortcut_url}>
    204                                         <BOUCLE_shortcut_url_dateclick_graph(SHORTCUT_URLS_LOGS){id_shortcut_url}{fusion DATE_FORMAT(date_modif, '%Y-%m-%d')}{!par date_modif}>#SET{date_modif,#DATE_MODIF|affdate{Y-m-d}}
    205                                         <BOUCLE_shortcut_url_dateclick_graph_nb(SHORTCUT_URLS_LOGS){id_shortcut_url}{date_modif LIKE (#GET{date_modif})%}> </BOUCLE_shortcut_url_dateclick_graph_nb>
     204                                        <BOUCLE_shortcut_url_dateclick_graph(SHORTCUT_URLS_LOGS){id_shortcut_url}{humain=oui}{fusion DATE_FORMAT(date_modif, '%Y-%m-%d')}{!par date_modif}>#SET{date_modif,#DATE_MODIF|affdate{Y-m-d}}
     205                                        <BOUCLE_shortcut_url_dateclick_graph_nb(SHORTCUT_URLS_LOGS){id_shortcut_url}{humain=oui}{date_modif LIKE (#GET{date_modif})%}> </BOUCLE_shortcut_url_dateclick_graph_nb>
    206206                                                {
    207207                                                        "label": "[(#GET{date_modif})]",
  • _plugins_/shortcut_url/trunk/prive/squelettes/contenu/shortcut_url_bots.html

    r96495 r96547  
    22        <ul>
    33                <li>
    4                         <a href="[(#URL_ECRIRE{shortcut_url_bots})]" title="<:shortcut_url:titre_afficher_logs_shortcut_url:>"><:shortcut_url:titre_afficher_logs_shortcut_url:></a>
     4                        <a href="[(#URL_ECRIRE{shortcut_url_logs})]" title="<:shortcut_url:titre_afficher_logs_shortcut_url:>"><:shortcut_url:titre_afficher_logs_shortcut_url:></a>
    55                </li>
    66        </ul>
  • _plugins_/shortcut_url/trunk/shortcut_url_fonctions.php

    r92312 r96547  
    5656                $humain = 'bot';
    5757                $insert_bot = sql_insertq('spip_shortcut_urls_bots', array('id_shortcut_url' => $id_shortcut_url,'date_modif' => $date_modif,'referrer' => $referrer,'user_agent' => $user_agent,'ip_address' => $ip_address));
     58                $insert_click = sql_updateq('spip_shortcut_urls', array('click' => $click), 'id_shortcut_url=' . intval($id_shortcut_url));
    5859        } else
    5960                $humain = 'oui';
  • _plugins_/shortcut_url/trunk/shortcut_url_pipelines.php

    r93870 r96547  
    9292        include_spip('inc/autoriser');
    9393        if(autoriser('menu','_menu_shortcut_url')){
    94                 $boutons_admin['menu_shortcut_url']->sousmenu[str_replace('.html','',$page)] = new Bouton(find_in_theme('images/shortcut_url-16.png'), 'shortcut_url:shortcut_url_logs', 'shortcut_url_logs');
     94                $pages = array('shortcut_url_logs', 'shortcut_url_logs_export');
     95                foreach($pages as $page){
     96                        $boutons_admin['menu_shortcut_url']->sousmenu[] = new Bouton(find_in_theme('images/shortcut_url-16.png'), 'shortcut_url:' . $page, $page);
     97                }
     98
     99
    95100        }
    96101        else{
Note: See TracChangeset for help on using the changeset viewer.