source: spip-zone/_plugins_/plugins_seenthis/date_relative_dynamique/js.calcul_date.html @ 87137

Last change on this file since 87137 was 87137, checked in by code@…, 5 years ago

plugins_seenthis/date_relative_dynamique : nettoyage & reformage du code

File size: 3.7 KB
Line 
1[(#HTTP_HEADER{Content-type: text/javascript[; charset=(#CHARSET)]})]
2
3
4var chaines_lang = {
5        'date_il_y_a': '<:date_il_y_a:>',
6        'date_une_seconde': '<:date_une_seconde:>',
7        'date_secondes': '<:date_secondes:>',
8        'date_une_minute': '<:date_une_minute:>',
9        'date_minutes': '<:date_minutes:>',
10        'date_une_heure': '<:date_une_heure:>',
11        'date_heures': '<:date_heures:>',
12
13        'date_hier': '<:date_hier:>',
14        'date_jours': '<:date_jours:>',
15
16        'date_une_semaine': '<:date_une_semaine:>',
17        'date_semaines': '<:date_semaines:>',
18
19        'date_un_mois': '<:date_un_mois:>',
20        'date_mois': '<:date_mois:>'
21};
22
23function _T(chaine, nom_val, val) {
24        return chaines_lang[chaine].replace("@" + nom_val + "@", val);
25}
26
27
28function afficher_dates() {
29        var date_now = Math.floor((new Date()).getTime() / 1000) + Math.floor($.cookie('dateoffset'));
30
31        $(".calcul_date").each(function () {
32                var $this = $(this);
33                var date;
34                if ($this.attr("datetime")) {
35                        var dateTime = new Date($this.attr("datetime"));
36                        date = Math.floor(dateTime.getTime() / 1000);
37                } else if ($this.attr("title")) {
38                        date = Math.floor($this.attr("title"));
39                }
40
41                // L'age de l'article depend du serveur
42                // l'age affichee depend du client
43                var age = date_now - date;
44
45                if (age < 1) age = false;
46                else if (age < 2) age = _T("date_il_y_a", "delai", age + " " + _T("date_une_seconde"));
47                else if (age < 60) age = _T("date_il_y_a", "delai", age + " " + _T("date_secondes"));
48                else {
49                        // passer en minutes
50                        var age_min = Math.floor(age / 60);
51                        if (age_min < 2) age = _T("date_il_y_a", "delai", age_min + " " + _T("date_une_minute"));
52                        else if (age_min < 60) age = _T("date_il_y_a", "delai", age_min + " " + _T("date_minutes"));
53                        else {
54                                // passer en heures
55                                var age_heure = Math.floor(age / (60 * 60));
56                                if (age_heure < 2) age = _T("date_il_y_a", "delai", age_heure + " " + _T("date_une_heure"));
57                                else if (age_heure < 24) age = _T("date_il_y_a", "delai", age_heure + " " + _T("date_heures"));
58
59                                else {
60                                        // passer en jours
61                                        var age_jour = Math.floor(age / (60 * 60 * 24));
62                                        if (age_jour < 2) age = _T("date_hier");
63                                        else if (age_jour < 8) age = _T("date_il_y_a", "delai", age_jour + " " + _T("date_jours"));
64
65                                        else {
66                                                // passer en semaines
67                                                var age_sem = Math.floor(age / (60 * 60 * 24 * 7));
68                                                if (age_sem < 2) age = _T("date_il_y_a", "delai", age_sem + " " + _T("date_une_semaine"));
69                                                else if (age_sem < 4) age = _T("date_il_y_a", "delai", age_sem + " " + _T("date_semaines"));
70
71                                                else {
72                                                        // passer en mois
73                                                        var age_mois = Math.floor(age / (60 * 60 * 24 * 28));
74                                                        if (age_mois < 1) age_mois = 1;
75                                                        if (age_mois < 2) age = _T("date_il_y_a", "delai", age_mois + " " + _T("date_un_mois"));
76                                                        else if (age_mois < 13) age = _T("date_il_y_a", "delai", age_mois + " " + _T("date_mois"));
77
78                                                        else {
79                                                                // passer en mois
80                                                                var age_annee = Math.floor(age / (60 * 60 * 24 * 364));
81                                                                if (age_annee < 1) age_annee = 1;
82                                                                //if (age_annee < 2) age = "last year";
83                                                                //else age = age_annee + " years ago";
84
85                                                                age = false;
86                                                        }
87                                                }
88                                        }
89                                }
90
91
92                        }
93                }
94
95                if (age) {
96                        $this.attr('title', $this.html());
97                        $this.html(age);
98                }
99
100        });
101}
102
103// Masquer les dateServer
104// puis recuperer date serveur
105// donc reafficher dates pour calcul
106$(function () {
107        setInterval("afficher_dates()", 1000);
108
109        if ($.cookie('dateoffset') == null) {
110                var date_now = Math.floor((new Date()).getTime() / 1000);
111                $.ajax({
112                        type: "POST",
113                        url: "[(#VAL{spip.php?action=dateoffset}|url_absolue)]",
114                        data: {time: date_now},
115                        complete: function (data) {
116                                var date_sql = Math.floor(data.responseText);
117                                if (date_sql > 1200000000) // sanity check sur la reponse
118                                        $.cookie('dateoffset', date_sql - date_now, {path: "/"});
119                        }
120                });
121        }
122
123});
Note: See TracBrowser for help on using the repository browser.