[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / fullcalendar / modeles / minifullcalendar.html
1 [(#REM) L'appel depuis un article se fait par < minifullcalendarXX >, alors id_minifullcalendar=XX
2 ou par un modele CROCHET(# MODELE{minifullcalendar}{id_minifullcalendar=XX})CROCHET
3 ]
4
5 <?php
6
7 $id = '[(#ENV{id_minifullcalendar, #CONFIG{fullcalendar/mini_id, 0}}|texte_script)]';
8
9 # Quelle source de donnée ?
10
11 $req = sql_select('type', 'spip_fullcalendar_main', 'id_fullcalendar='.intval($id));
12 $num_calendar = sql_count($req);
13
14 if(!$num_calendar) return; # il n'y as pas de gabonnais au numéro demandé...
15
16 else {
17
18 $row=sql_fetch($req);
19
20 switch($row['type']){
21
22 # AGENDA D'UNE RUBRIQUE
23
24 case 'rub':
25 # Récupère l'id de la rubrique pour cet agenda ...
26 $result = sql_select('lien', 'spip_fullcalendar_events', 'id_fullcalendar='.intval($id));
27 $row = sql_fetch($result);
28 if(!$row['lien']) return;
29
30 # Récupère les article liés à cette rubrique
31 $events='events: [';
32
33 $req = sql_select(
34 array(
35 "A.id_article",
36 "A.titre",
37 "A.date",
38 "A.date_redac" ),
39 array(
40 "spip_articles AS A",
41 "spip_rubriques AS R" ),
42 array(
43 "A.statut='publie'",
44 "A.id_rubrique='".intval($row['lien'])."'",
45 "A.id_rubrique=R.id_rubrique" ),
46 "",
47 "A.date ASC");
48 $num_events = sql_count($req);
49 if($num_events)
50 while ($row = sql_fetch($req)) {
51
52 $date = explode('-',substr($row['date'],0,10));
53 $date_fin = explode('-',substr($row['date_redac'],0,10));
54 $start = explode(':',substr($row['date'],11,5));
55 $end = explode(':',substr($row['date_redac'],11,5));
56
57 $url="url:'spip.php?article".$row['id_article']."',";
58 if($date!='0000-00-00'&&$date_fin!='0000-00-00')
59 $events.="{title: '".texte_script(supprimer_numero($row['titre']))."',start:new Date(parseInt('".$date[0]."',10) , parseInt('".($date[1]-1)."',10) , parseInt('".$date[2]."',10), parseInt('".$start[0]."',10) , parseInt('".$start[1]."',10)),end: new Date(parseInt('".$date_fin[0]."',10), parseInt('".($date_fin[1]-1)."',10), parseInt('".$date_fin[2]."',10), parseInt('".$end[0]."',10), parseInt('".$end[1]."',10)),$url allDay: false},";
60 }
61 $events=substr($events,0,strlen($events)-1);
62 $events.=']';
63
64 break;
65
66
67 # AGENDA BASE SUR LES ARTICLES
68
69 case 'article':
70
71 # Récupère l'id du mot clé de cet agenda ...
72 $result = sql_select('lien', 'spip_fullcalendar_events', 'id_fullcalendar='.intval($id));
73 $row = sql_fetch($result);
74 if(!$row['lien']) return;
75
76 # Récupère les article liés à ce mot clé
77 $events='events: [
78
79 ';
80
81 $req = sql_select(
82 array(
83 "A.id_article",
84 "A.titre",
85 "A.date",
86 "A.date_redac" ),
87 array(
88 "spip_articles AS A",
89 "spip_mots_articles AS M" ),
90 array(
91 "A.statut='publie'",
92 "M.id_mot='".intval($row['lien'])."'",
93 "A.id_article=M.id_article" ),
94 "",
95 "A.date ASC");
96
97 $num_events = sql_count($req);
98 if($num_events)
99 while ($row = sql_fetch($req)) {
100
101 $date = explode('-',substr($row['date'],0,10));
102 $date_fin = explode('-',substr($row['date_redac'],0,10));
103 $start = explode(':',substr($row['date'],11,5));
104 $end = explode(':',substr($row['date_redac'],11,5));
105
106 $url="url:'spip.php?article".$row['id_article']."',";
107 if($date!='0000-00-00'&&$date_fin!='0000-00-00')
108 $events.="{title: '".texte_script(supprimer_numero($row['titre']))."',start:new Date(parseInt('".$date[0]."',10) , parseInt('".($date[1]-1)."',10) , parseInt('".$date[2]."',10), parseInt('".$start[0]."',10) , parseInt('".$start[1]."',10)),end: new Date(parseInt('".$date_fin[0]."',10), parseInt('".($date_fin[1]-1)."',10), parseInt('".$date_fin[2]."',10), parseInt('".$end[0]."',10), parseInt('".$end[1]."',10)),$url allDay: false},";
109 }
110 $events=substr($events,0,strlen($events)-1);
111 $events.=']';
112
113 break;
114
115 # AGENDA MySQL
116
117 case 'mysql':
118
119 # Récupère les style css
120
121 $result = sql_select(array('id_style', 'bgcolor', 'textcolor', 'bordercolor'), 'spip_fullcalendar_styles', 'id_style', '', '');
122 while ( $row = sql_fetch($result)){
123 $style[$row['id_style']]['back'] = $row['bgcolor'];
124 $style[$row['id_style']]['text'] = $row['textcolor'];
125 $style[$row['id_style']]['bord'] = $row['bordercolor'];
126 }
127 sql_free($result);
128
129 $events='events: [';
130
131 $result = sql_select(array('titre', 'start', 'end', 'lien', 'id_style'), 'spip_fullcalendar_events', 'id_fullcalendar='.intval($id), '', 'start ASC');
132 while ( $row = sql_fetch($result)){
133
134 $date = explode('-',substr($row['start'],0,10));
135 $date_fin = explode('-',substr($row['end'],0,10));
136 $start = explode(':',substr($row['start'],11,5));
137 $end = explode(':',substr($row['end'],11,5));
138
139 if(strlen(trim($row['lien'])))
140 $url="url:'".trim($row['lien'])."',";
141 else
142 $url='';
143
144 if($row['id_style']>0){
145 $class=",backgroundColor: '".$style[$row['id_style']]['back']."', textColor: '".$style[$row['id_style']]['text']."', borderColor: '".$style[$row['id_style']]['bord']."'";
146 } else $class='';
147
148 $events.="{title: '".texte_script($row['titre'])."',start: new Date(parseInt('".$date[0]."',10), parseInt('".($date[1]-1)."',10), parseInt('".$date[2]."',10), parseInt('".$start[0]."',10), parseInt('".$start[1]."',10)),end: new Date(parseInt('".$date_fin[0]."',10), parseInt('".($date_fin[1]-1)."',10), parseInt('".$date_fin[2]."',10), parseInt('".$end[0]."',10), parseInt('".$end[1]."',10)), $url allDay: false $class},";
149 }
150 sql_free($result);
151 $events=substr($events,0,strlen($events)-1);
152 $events.=']';
153 break;
154
155 # AGENDA GOOGLE
156
157 case 'google':
158
159 # Choppe la clé Google dans le seul évènement de cet agenda ...
160 $result = sql_select('lien', 'spip_fullcalendar_events', 'id_fullcalendar='.intval($id));
161 $row = sql_fetch($result);
162 if(!strlen($row['lien'])) return;
163
164 $URL_AGENDA = "http://www.google.com/calendar/feeds/".$row['lien']."/public/basic";
165
166 $events = "events: $.fullCalendar.gcalFeed('".$URL_AGENDA."'),
167
168 eventClick: function(event) {
169 // opens events in a popup window
170 window.open(event.url, 'gcalevent', 'width=700,height=600');
171 return false;
172 },
173
174 loading: function(bool) {
175 if (bool) {
176 $('#loading').show();
177 }else{
178 $('#loading').hide();
179 }
180 }
181 ";
182
183 break;
184 default:
185 }
186
187 # Récupère les variable Paramètres / CFG
188
189 $aspectRatio = "[(#ENV{aspectRatio,#CONFIG{fullcalendar/aspectRatio,'1.35'}}|texte_script)]";
190 $useTheme = "[(#ENV{useTheme,#CONFIG{fullcalendar/useTheme,true}}|texte_script)]";
191 $useTheme = ($useTheme=='true')? 'theme: true,' : '' ;
192 $weekends = "[(#ENV{weekends,#CONFIG{fullcalendar/miniweekends,false}}|texte_script)]";
193 $defaultView = "[(#ENV{defaultView,#CONFIG{fullcalendar/defaultView,month}}|texte_script)]";
194
195 $headerLeft = "[(#CONFIG{fullcalendar/miniheaderLeft, 'today'}|texte_script)]";
196 $headerCenter = "[(#CONFIG{fullcalendar/miniheaderCenter, 'title'}|texte_script)]";
197 $headerRight = "[(#CONFIG{fullcalendar/miniheaderRight, 'prev,next'}|texte_script)]";
198 $firstDay = "[(#CONFIG{fullcalendar/firstDay, '1'}|texte_script)]";
199 $month_titleFormat = "[(#CONFIG{fullcalendar/minimonth_titleFormat, 'MMM yy'}|texte_script)]";
200 $month_columnFormat = "[(#CONFIG{fullcalendar/minimonth_columnFormat, 'ddd'}|texte_script)]";
201 $month_timeFormat = "[(#CONFIG{fullcalendar/minimonth_timeFormat, ''}|texte_script)]";
202 #$week_titleFormat = "[(#CONFIG{fullcalendar/week_titleFormat, 'd [(#VAL{91}|chr)]MMMM[(#VAL{93}|chr)] [(#VAL{91}|chr)] yyyy[(#VAL{93}|chr)][(#VAL{123}|chr)] - d MMMM yyyy[(#VAL{125}|chr)]' }|texte_script)]";
203 $week_titleFormat = "[(#CONFIG{fullcalendar/week_titleFormat, 'd MMMM yyyy{ - d MMMM yyyy}'}|texte_script)]";
204 $week_columnFormat = "[(#CONFIG{fullcalendar/week_columnFormat, 'dddd d'}|texte_script)]";
205 $week_timeFormat_basic = "[(#CONFIG{fullcalendar/week_timeFormat_basic, 'H(:mm)'}|texte_script)]";
206 $week_timeFormat_agenda = "[(#CONFIG{fullcalendar/week_timeFormat_agenda, 'H(:mm)'}|texte_script)]";
207 $day_titleFormat = "[(#CONFIG{fullcalendar/day_titleFormat, 'dddd d MMMM yyyy'}|texte_script)]";
208 $day_columnFormat = "[(#CONFIG{fullcalendar/day_columnFormat, 'dddd d MMMM'}|texte_script)]";
209 $day_timeFormat_basic = "[(#CONFIG{fullcalendar/day_timeFormat_basic, 'H:mm{ - H:mm}'}|texte_script)]";
210 $day_timeFormat_agenda = "[(#CONFIG{fullcalendar/day_timeFormat_agenda, 'H:mm{ - H:mm}'}|texte_script)]";
211
212 $rand = rand(0,1000);
213
214 # Génère le fullcalendar avec tous ses paramètres ...
215 print "
216 <script type='text/javascript'>
217 $(document).ready(function() {
218 if( ! $('#minicalendar".$rand."').data('fullcalendar_set') ) {
219 $('#minicalendar".$rand."').fullCalendar({
220 ".$useTheme."
221 firstDay: ".$firstDay.",
222 defaultView: '".$defaultView."',
223 aspectRatio: ".$aspectRatio.",
224 header: { left: '".$headerLeft."', center: '".$headerCenter."', right: '".$headerRight."' },
225 editable: false,
226 allDayText: 'Journée',
227 ".$events.",
228 weekends: ".$weekends.",
229 titleFormat: {
230 month: '".$month_titleFormat."',
231 week: \"".$week_titleFormat."\",
232 day: '".$day_titleFormat."'
233 },
234 columnFormat: {
235 month: '".$month_columnFormat."',
236 week: '".$week_columnFormat."',
237 day: '".$day_columnFormat."'
238 },
239 timeFormat: {
240 month: \"".$month_timeFormat."\",
241 agendaDay: \"".$day_timeFormat_agenda."\",
242 agendaWeek: \"".$week_timeFormat_agenda."\",
243 basicWeek: \"".$week_timeFormat_basic."\",
244 basicDay: \"".$day_timeFormat_basic."\",
245 '': 'H(:mm)'
246 },
247 eventMouseover: function(event, jsEvent, view) {
248 if (view.name !== 'agendaDay') {
249 $(jsEvent.target).attr('title', event.title);
250 }
251 }
252 });
253 }
254 $('#minicalendar".$rand."').data('fullcalendar_set', 1);
255
256 });
257 </script>
258
259 <div id='minicalendar".$rand."' class='minicalendar'></div>
260
261 ";
262
263 }
264 ?>
265
266 <style type="text/css">
267 <!--
268 .minicalendar {
269 width: #CONFIG{fullcalendar/mini_width, 200}px;
270 margin: 0 auto;
271 font-size: 10px;
272 }
273 .minicalendar .fc-header-title {
274 font-size: #CONFIG{fullcalendar/mini_font, 1}em;
275 padding-top:5px;
276 white-space: normal !important;
277 }
278 .minicalendar .fc-view-month .fc-event, .fc-view-agendaWeek .fc-event {
279 font-size: 0;
280 overflow: hidden;
281 height: 2px;
282 }
283 .minicalendar.fc-view-agendaWeek .fc-event-vert {
284 font-size: 0;
285 overflow: hidden;
286 width: 2px !important;
287 }
288 .minicalendar .fc-agenda-axis {
289 width: 20px !important;
290 font-size: .7em;
291 }
292
293 .minicalendar .fc-button-content {
294 padding: 0;
295 }
296 -->
297 </style>