source: spip-zone/_plugins_/acs/models/cat/composants/agenda/inc-bloc-agenda.html @ 45363

Last change on this file since 45363 was 45363, checked in by webmaster@…, 10 years ago

Nouveau composant Carte affichant une carte de n dernières rubriques géoréférencées mises à jour. Filtrages possibles par rubrique, mot-clé, et recherche.

Nécessite le composant GIS et ses dépendances dont openlayers rev > 45358 du 13/03/2011.

Autres modifications diverses : voir log pour le détail.

File size: 8.8 KB
Line 
1#CACHE{7200}
2<?php
3
4include_once _DIR_RESTREINT_ABS."base/abstract_sql.php";
5
6if (!is_callable(sql_select)) {
7  function sql_select($fields, $table, $cond) {
8    return spip_abstract_select($fields, $table, $cond);
9  }
10}
11if (!is_callable(sql_fetch)) {
12  function sql_fetch($r) {
13    return spip_abstract_fetch($r);
14  }
15}
16
17$calendrier_mois=$_GET['calendrier_mois'];
18$calendrier_annee=$_GET['calendrier_annee'];
19$lang = '#LANG';
20$oldlang = $GLOBALS['spip_lang'];
21$GLOBALS['spip_lang'] = $lang;
22$months = array('', _T('acs:agenda_janvier'), _T('acs:agenda_fevrier'), _T('acs:agenda_mars'),
23         _T('acs:agenda_avril'), _T('acs:agenda_mai'), _T('acs:agenda_juin'), _T('acs:agenda_juillet'),
24         _T('acs:agenda_aout'), _T('acs:agenda_septembre'), _T('acs:agenda_octobre'),
25         _T('acs:agenda_novembre'), _T('acs:agenda_decembre'));
26$days = array(_T('acs:agenda_di'), _T('acs:agenda_lu'), _T('acs:agenda_ma'), _T('acs:agenda_me'), _T('acs:agenda_je'), _T('acs:agenda_ve'), _T('acs:agenda_sa'));
27$GLOBALS['spip_lang'] = $oldlang;
28if ($test_mini_agenda_deja_present!=1 &&!function_exists('mkdate')) {
29        function mkdate($month, $day, $year) {
30                return mktime(0, 0, 0, $month, $day, $year);
31        }
32
33        function preparation_URL($texte_URL,$mois_URL,$annee_URL) {
34    $position = StrPos($texte_URL,"calendrier_mois");
35    $texte_remplacement = "calendrier_mois=".$mois_URL."&amp;calendrier_annee=".$annee_URL;
36    if ($position!==FALSE)
37        {
38        $texte_URL = substr_replace ($texte_URL,$texte_remplacement,$position);}
39        else  { $presence = StrPos($texte_URL,"?");
40                if ($presence === false)
41                  {$texte_URL = $texte_URL."?".$texte_remplacement;}
42                else
43                  {$texte_URL = $texte_URL."&amp;".$texte_remplacement;}
44              }
45    return $texte_URL.'&amp;lang=#LANG';
46        }
47}
48
49if(isset($GLOBALS['var_nav_month'])) {
50        $cal_day = mkdate($GLOBALS['var_nav_month'], 1, $GLOBALS['var_nav_year']);
51} else {
52        $cal_day = time();
53}
54
55$D = intval(date('d', $cal_day));
56if (isset($calendrier_mois)) {
57$M = $calendrier_mois;
58} else {$M = intval(date('m', $cal_day));}
59if (isset($calendrier_annee)) {
60$Y = $calendrier_annee;
61} else {$Y = intval(date('Y', $cal_day));}
62$events = array();
63$test_mini_agenda_deja_present = 1;
64
65$datedebut = date("Ymd", mkdate($M, $D - 31, $Y));
66$datefin = date("Ymd", mkdate($M, $D + 31, $Y));
67
68// Articles publiés ou modifiés
69if (isset($GLOBALS['meta']['acsAgendaBulleVoirArticlesModifies']) && ($GLOBALS['meta']['acsAgendaBulleVoirArticlesModifies'] == 'oui'))
70        $sql_modif = " OR (date_modif BETWEEN '$datedebut' AND '$datefin')";
71$r = sql_select(array('id_article','date','date_modif','titre','chapo'), 'spip_articles', "statut='publie' AND ((date BETWEEN '$datedebut' AND '$datefin')$sql_modif)");
72while($article = sql_fetch($r)) {
73        if (substr($article['chapo'],0,1) == '=') continue; // Masque les redirections d'articles SPIP
74        $heure = ereg_replace("^.*([0-9]{2}):([0-9]{2}):([0-9]{2})$", "\\1h\\2", $article['date']);
75        $date = ereg_replace("^([0-9]{4})-([0-9]{2})-([0-9]{2}).*$", "\\1\\2\\3", $article['date']);
76        if (!isset($events[$date]))
77                $events[$date] = array();
78        if (($date > $datedebut) && ($date < $datefin)) {
79                $events[$date][$heure][ ] = array(
80                        'class' => 'publie',
81                        'type' => 'article',
82                        'id' => $article['id_article'],
83                        'title' => $article['titre']);
84        }       elseif(isset($sql_modif)) {
85                $heure = ereg_replace("^.*([0-9]{2}):([0-9]{2}):([0-9]{2})$", "\\1h\\2", $article['date_modif']);
86                $date = ereg_replace("^([0-9]{4})-([0-9]{2})-([0-9]{2}).*$", "\\1\\2\\3", $article['date_modif']);
87                $events[$date][$heure][ ] = array(
88                        'class' => 'modifie',
89                        'type' => 'article',
90                        'id' => $article['id_article'],
91                        'title' => $article['titre']);
92        }
93}
94
95// Breves, si actives dans SPIP
96if ($GLOBALS['meta']['activer_breves'] == 'oui') {
97        $r = sql_select(array('id_breve','date_heure','titre'), 'spip_breves', "statut='publie' AND date_heure BETWEEN '".date("Ymd", mkdate($M, $D - 31, $Y))."' AND '".date("Ymd", mkdate($M, $D + 31, $Y))."'");
98        while($breve = sql_fetch($r)) {
99                $heure = ereg_replace("^.*([0-9]{2}):([0-9]{2}):([0-9]{2})$", "\\1h\\2", $breve['date_heure']);
100                $date = ereg_replace("^([0-9]{4})-([0-9]{2})-([0-9]{2}).*$", "\\1\\2\\3", $breve['date_heure']);
101                if (!isset($events[$date]))
102                        $events[$date] = array();
103                $events[$date][$heure][ ] = array(
104                        'class' => 'breve',
105                        'type' => 'breve',
106                        'id' => $breve['id_breve'],
107                        'title' => $breve['titre']);
108        }
109}
110
111$mes = $months [$M];
112if ($M==1){
113    $calendrier_mois_moins=12;
114    $calendrier_annee_moins=$Y-1;}
115else {
116    $calendrier_mois_moins=$M-1;
117    $calendrier_annee_moins=$Y;}
118if ($M==12){
119    $calendrier_mois_plus=1;
120    $calendrier_annee_plus=$Y+1;}
121else {
122    $calendrier_mois_plus=$M+1;
123    $calendrier_annee_plus=$Y;}
124
125$self = (isset($_GET['selfurl']) ? $_GET['selfurl'] : '#SELF');
126
127?>
128
129<script type="text/javascript">
130<!--
131var idBulleT;
132var chrono = null;
133var delai = "500";
134var x,y;
135var shiftx = -20;
136
137if (self.innerHeight) // all except Explorer
138{
139        x = self.innerWidth;
140        y = self.innerHeight;
141}
142else if (document.documentElement && document.documentElement.clientHeight)
143        // Explorer 6 Strict Mode
144{
145        x = document.documentElement.clientWidth;
146        y = document.documentElement.clientHeight;
147}
148else if (document.body) // other Explorers
149{
150        x = document.body.clientWidth;
151        y = document.body.clientHeight;
152}
153
154//-->
155</script>
156<div class="cAgenda">
157<table width="100%" cellpadding="1" cellspacing="0" align="center">
158<tr>
159        <th colspan="7" valign="middle" class="title">
160    <img src="[(#ACS_CHEMIN)]agenda/aide.gif" class="chelp" onmouseover="afficheBulle('bullechelp', this)" onmouseout="cacheBulle('bullechelp')" alt="?" />
161                <?php
162                echo '<a id="agenda_prev" href="'.preparation_URL($self,$calendrier_mois_moins,$calendrier_annee_moins).'" title="Mois pr&eacute;c&eacute;dent" class="ajax" rel="nofollow"><img src="[(#ACS_CHEMIN)]agenda/fleche-left.png" alt="&lt;&lt;" /></a>&nbsp;&nbsp;<a href="spip.php?page=agenda&amp;annee='.$Y.'&amp;mois='.$M.'&amp;type=mois&amp;jour=01" class="bloc-title" rel="nofollow">'.$mes.' '.$Y.'</a>&nbsp;&nbsp;<a id="agenda_next" href="'.preparation_URL($self,$calendrier_mois_plus,$calendrier_annee_plus).'" title="Mois suivant" class="ajax" rel="nofollow"><img src="[(#ACS_CHEMIN)]agenda/fleche-right.png" alt="&gt;&gt;" /></a>';
163                ?>
164    <div id="bullechelp" class="bulle" onmouseover="mouseOverBulle()" onmouseout="mouseOutBulle()">
165      <div class="publie"><a href="#"><small>01h11</small>: <:acs:agenda_publie:></a></div>[
166      (#VAR{acsAgendaBulleVoirArticlesModifies}|=={oui}|?{" "})<div class="modifie"><a href="#"><small>02h22</small>: <:acs:agenda_modifie:></a></div>][
167      (#VAR{activer_breves}|=={oui}|?{" "})<div class="breve"><a href="#"><small>03h33</small>: <:breves:></a></div>]
168    </div>
169        </th>
170</tr>
171<tr>
172        <?php
173
174        for($i = 1; $i < 8; $i++) {
175                echo '<th width="14%" class="calendar_head_mini">'.$days[$i%7].'</th>';
176        }
177        $TempD = 1;
178        if(date('w', mkdate($M, 1, $Y)) != 1) {
179                echo '</tr><tr>';
180                $tmp = '';
181                while(date('w', mkdate($M, $TempD, $Y)) != 1) {
182                        $TempD--;
183                        $case = '<td width="14%" valign="top" class="calendar_not_this_month">';
184                        $case .= date('j', mkdate($M, $TempD, $Y));
185                        $date = date('Ymd', mkdate($M, $TempD, $Y));
186
187                        $case .= '</td>';
188                        $tmp = $case.$tmp;
189                }
190                echo $tmp;
191        }
192        $TempD = 1;
193        while((date('m', mkdate($M, $TempD, $Y)) == $M) || (date('w', mkdate($M, $TempD, $Y)) != 1)) {
194                if(date('w', mkdate($M, $TempD, $Y)) == 1) {
195                        echo '</tr><tr>';
196                }
197                echo '<td width="6%" valign="top" class="calendar_'.(date('m', mkdate($M, $TempD, $Y)) != $M ? 'not_' : '').'this_'.(date('Ymd', mkdate($M, $TempD, $Y)) == date('Ymd') ? 'day' : 'month').'">';
198                $date = date('Ymd', mkdate($M, $TempD, $Y));
199                if (isset($events[$date])) {
200                                $evt = '';
201                                $eventsjour = $events[$date];
202                                ksort($eventsjour);
203                                foreach($eventsjour as $heure=>$eventsheure) {
204                                        foreach($eventsheure as $event) {
205                                                $evt .= '<div class="'.$event['class'].'"><a href="spip.php?'.$event['type'].''.$event['id'].'&amp;calendrier_mois='.$M.'&amp;calendrier_annee='.$Y.'" rel="nofollow"><small>'.$heure.'</small>: '.$event['title']."</a></div>\r";
206                                        }
207                                }
208                                echo '<span onmouseover="afficheBulle(\'bulle'.$date.'\', this)" onmouseout="cacheBulle(\'bulle'.$date.'\')">'.
209                                        '<a href="?page=agenda&amp;annee='.$Y.'&amp;mois='.$M.'&amp;jour='.$TempD.'&amp;type=jour&amp;echelle=80" class="agenda_mini" rel="nofollow">'. date('j', mkdate($M, $TempD, $Y)) .'</a></span>'.
210                                        '<div id="bulle'.$date.'" class="bulle" onmouseover="mouseOverBulle()" onmouseout="mouseOutBulle()">'.$evt.'</div>';
211                }
212                else {
213                        echo '<a>'.date('j', mkdate($M, $TempD, $Y)).'</a>';
214                }
215                echo '</td>';
216                $TempD++;
217        }
218        ?>
219</tr>
220</table>
221</div>
222[(#VAR{acsFondSpacer}|?{' '})<div class="spacer"></div>]
Note: See TracBrowser for help on using the repository browser.