[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / fullcalendar / modeles / fullcalendar.html
1 [(#REM) L'appel depuis un article se fait par < fullcalendarXX >, alors id_fullcalendar=XX
2 ou par un modele CROCHET(# MODELE{fullcalendar}{id_fullcalendar=XX})CROCHET , alors id_fullcalendar=XX
3 ]
4
5 <?php
6
7 $id = '[(#ENV{id_fullcalendar,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.id_rubrique='".intval($row['lien'])."'",
44 "A.statut='publie'",
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 }
62 $events=substr($events,0,strlen($events)-1);
63 $events.=']';
64
65 break;
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 $req = sql_select(
80 array(
81 "A.id_article",
82 "A.titre",
83 "A.date",
84 "A.date_redac" ),
85 array(
86 "spip_articles AS A",
87 "spip_mots_articles AS M" ),
88 array(
89 "M.id_mot='".intval($row['lien'])."'",
90 "A.statut='publie'",
91 "A.id_article=M.id_article" ),
92 "",
93 "A.date ASC");
94
95 $num_events = sql_count($req);
96 if($num_events)
97 while ($row = sql_fetch($req)) {
98
99 $date = explode('-',substr($row['date'],0,10));
100 $date_fin = explode('-',substr($row['date_redac'],0,10));
101 $start = explode(':',substr($row['date'],11,5));
102 $end = explode(':',substr($row['date_redac'],11,5));
103
104 $url="url:'spip.php?article".$row['id_article']."',";
105 if($date!='0000-00-00'&&$date_fin!='0000-00-00')
106 $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},";
107 }
108 $events=substr($events,0,strlen($events)-1);
109 $events.=']';
110
111 break;
112
113 # AGENDA MySQL
114
115 case 'mysql':
116
117 # Récupère les style css
118
119 $result = sql_select(array('id_style', 'bgcolor', 'textcolor', 'bordercolor'), 'spip_fullcalendar_styles', 'id_style', '', '');
120 while ( $row = sql_fetch($result)){
121 $style[$row['id_style']]['back'] = $row['bgcolor'];
122 $style[$row['id_style']]['text'] = $row['textcolor'];
123 $style[$row['id_style']]['bord'] = $row['bordercolor'];
124 }
125 sql_free($result);
126
127 $events='events: [';
128
129 $result = sql_select(array('titre', 'start', 'end', 'lien', 'id_style'), 'spip_fullcalendar_events', 'id_fullcalendar='.intval($id), '', 'start ASC');
130 while ( $row = sql_fetch($result)){
131
132 $date = explode('-',substr($row['start'],0,10));
133 $date_fin = explode('-',substr($row['end'],0,10));
134 $start = explode(':',substr($row['start'],11,5));
135 $end = explode(':',substr($row['end'],11,5));
136
137 if(strlen(trim($row['lien'])))
138 $url="url:'".trim($row['lien'])."',";
139 else
140 $url='';
141
142 if($row['id_style']>0){
143 $class=",backgroundColor: '".$style[$row['id_style']]['back']."', textColor: '".$style[$row['id_style']]['text']."', borderColor: '".$style[$row['id_style']]['bord']."'";
144 } else $class='';
145
146 $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},";
147 }
148 sql_free($result);
149 $events=substr($events,0,strlen($events)-1);
150 $events.=']';
151 break;
152
153 # AGENDA GOOGLE
154
155 case 'google':
156
157 # Choppe la clé Google dans le seul évènement de cet agenda ...
158 $result = sql_select('lien', 'spip_fullcalendar_events', 'id_fullcalendar='.intval($id));
159 $row = sql_fetch($result);
160 if(!strlen($row['lien'])) return;
161
162 $URL_AGENDA = "http://www.google.com/calendar/feeds/".$row['lien']."/public/basic";
163
164 $events = "events: $.fullCalendar.gcalFeed('".$URL_AGENDA."'),
165
166 eventClick: function(event) {
167 // opens events in a popup window
168 window.open(event.url, 'gcalevent', 'width=700,height=600');
169 return false;
170 },
171
172 loading: function(bool) {
173 if (bool) {
174 $('#loading').show();
175 }else{
176 $('#loading').hide();
177 }
178 }
179 ";
180
181 break;
182 default:
183 }
184
185 # Récupère les variable Paramètres / CFG
186
187 $aspectRatio = "[(#ENV{aspectRatio,#CONFIG{fullcalendar/aspectRatio,'1.35'}}|texte_script)]";
188 $useTheme = "[(#ENV{useTheme,#CONFIG{fullcalendar/useTheme,true}}|texte_script)]";
189 $useTheme = ($useTheme=='true')? 'theme: true,' : '' ;
190 $weekends = "[(#ENV{weekends,#CONFIG{fullcalendar/weekends,true}}|texte_script)]";
191 $defaultView = "[(#ENV{defaultView,#CONFIG{fullcalendar/defaultView,month}}|texte_script)]";
192
193 $headerLeft = "[(#CONFIG{fullcalendar/headerLeft, 'prev,next'}|texte_script)]";
194 $headerCenter = "[(#CONFIG{fullcalendar/headerCenter, 'title'}|texte_script)]";
195 $headerRight = "[(#CONFIG{fullcalendar/headerRight, 'month,agendaWeek,agendaDay'}|texte_script)]";
196 $firstDay = "[(#CONFIG{fullcalendar/firstDay, '1'}|texte_script)]";
197 $month_titleFormat = "[(#CONFIG{fullcalendar/month_titleFormat, 'MMMM yyyy'}|texte_script)]";
198 $month_columnFormat = "[(#CONFIG{fullcalendar/month_columnFormat, 'dddd'}|texte_script)]";
199 $month_timeFormat = "[(#CONFIG{fullcalendar/month_timeFormat, ''}|texte_script)]";
200 #$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)]";
201 $week_titleFormat = "[(#CONFIG{fullcalendar/week_titleFormat, 'd MMMM yyyy{ - d MMMM yyyy}'}|texte_script)]";
202 $week_columnFormat = "[(#CONFIG{fullcalendar/week_columnFormat, 'dddd d'}|texte_script)]";
203 $week_timeFormat_basic = "[(#CONFIG{fullcalendar/week_timeFormat_basic, 'H(:mm)'}|texte_script)]";
204 $week_timeFormat_agenda = "[(#CONFIG{fullcalendar/week_timeFormat_agenda, 'H(:mm)'}|texte_script)]";
205 $day_titleFormat = "[(#CONFIG{fullcalendar/day_titleFormat, 'dddd d MMMM yyyy'}|texte_script)]";
206 $day_columnFormat = "[(#CONFIG{fullcalendar/day_columnFormat, 'dddd d MMMM'}|texte_script)]";
207 $day_timeFormat_basic = "[(#CONFIG{fullcalendar/day_timeFormat_basic, 'H:mm{ - H:mm}'}|texte_script)]";
208 $day_timeFormat_agenda = "[(#CONFIG{fullcalendar/day_timeFormat_agenda, 'H:mm{ - H:mm}'}|texte_script)]";
209
210 $rand = rand(0,1000);
211
212 # Génère le fullcalendar avec tous ses paramètres ...
213 print "
214 <script type='text/javascript'>
215 $(document).ready(function() {
216 if( ! $('#calendar".$rand."').data('fullcalendar_set') ) {
217 $('#calendar".$rand."').fullCalendar({
218 ".$useTheme."
219 firstDay: ".$firstDay.",
220 defaultView: '".$defaultView."',
221 aspectRatio: ".$aspectRatio.",
222 header: { left: '".$headerLeft."', center: '".$headerCenter."', right: '".$headerRight."' },
223 editable: false,
224 allDayText: 'Journée',
225 ".$events.",
226 weekends: ".$weekends.",
227 titleFormat: {
228 month: '".$month_titleFormat."',
229 week: \"".$week_titleFormat."\",
230 day: '".$day_titleFormat."'
231 },
232 columnFormat: {
233 month: '".$month_columnFormat."',
234 week: '".$week_columnFormat."',
235 day: '".$day_columnFormat."'
236 },
237 timeFormat: {
238 month: \"".$month_timeFormat."\",
239 agendaDay: \"".$day_timeFormat_agenda."\",
240 agendaWeek: \"".$week_timeFormat_agenda."\",
241 basicWeek: \"".$week_timeFormat_basic."\",
242 basicDay: \"".$day_timeFormat_basic."\",
243 '': 'H(:mm)'
244 },
245 });
246 }
247 $('#calendar".$rand."').data('fullcalendar_set', 1);
248 });
249 </script>
250
251 <div id='calendar".$rand."'></div>
252
253 ";
254
255 }
256 ?>