--- /dev/null
+[(#REM) L'appel depuis un article se fait par < fullcalendarXX >, alors id_fullcalendar=XX\r
+ ou par un modele CROCHET(# MODELE{fullcalendar}{id_fullcalendar=XX})CROCHET , alors id_fullcalendar=XX\r
+]\r
+\r
+<?php\r
+\r
+ $id = '[(#ENV{id_fullcalendar,0}|texte_script)]';\r
+\r
+ # Quelle source de donnée ?\r
+\r
+ $req = sql_select('type', 'spip_fullcalendar_main', 'id_fullcalendar='.intval($id));\r
+ $num_calendar = sql_count($req);\r
+\r
+ if(!$num_calendar) return; # il n'y as pas de gabonnais au numéro demandé...\r
+\r
+ else {\r
+\r
+ $row=sql_fetch($req);\r
+\r
+ switch($row['type']){\r
+\r
+ # AGENDA D'UNE RUBRIQUE\r
+\r
+ case 'rub':\r
+ # Récupère l'id de la rubrique pour cet agenda ...\r
+ $result = sql_select('lien', 'spip_fullcalendar_events', 'id_fullcalendar='.intval($id));\r
+ $row = sql_fetch($result);\r
+ if(!$row['lien']) return;\r
+\r
+ # Récupère les article liés à cette rubrique\r
+ $events='events: [';\r
+\r
+ $req = sql_select(\r
+ array(\r
+ "A.id_article",\r
+ "A.titre",\r
+ "A.date",\r
+ "A.date_redac" ),\r
+ array(\r
+ "spip_articles AS A",\r
+ "spip_rubriques AS R" ),\r
+ array(\r
+ "A.id_rubrique='".intval($row['lien'])."'",\r
+ "A.statut='publie'",\r
+ "A.id_rubrique=R.id_rubrique" ),\r
+ "",\r
+ "A.date ASC");\r
+ $num_events = sql_count($req);\r
+ if($num_events)\r
+ while ($row = sql_fetch($req)) {\r
+\r
+ $date = explode('-',substr($row['date'],0,10));\r
+ $date_fin = explode('-',substr($row['date_redac'],0,10));\r
+ $start = explode(':',substr($row['date'],11,5));\r
+ $end = explode(':',substr($row['date_redac'],11,5));\r
+\r
+ $url="url:'spip.php?article".$row['id_article']."',";\r
+ if($date!='0000-00-00'&&$date_fin!='0000-00-00')\r
+ $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},";\r
+\r
+ }\r
+ $events=substr($events,0,strlen($events)-1);\r
+ $events.=']';\r
+\r
+ break;\r
+\r
+ # AGENDA BASE SUR LES ARTICLES\r
+\r
+ case 'article':\r
+\r
+ # Récupère l'id du mot clé de cet agenda ...\r
+ $result = sql_select('lien', 'spip_fullcalendar_events', 'id_fullcalendar='.intval($id));\r
+ $row = sql_fetch($result);\r
+ if(!$row['lien']) return;\r
+\r
+ # Récupère les article liés à ce mot clé\r
+ $events='events: [';\r
+\r
+ $req = sql_select(\r
+ array(\r
+ "A.id_article",\r
+ "A.titre",\r
+ "A.date",\r
+ "A.date_redac" ),\r
+ array(\r
+ "spip_articles AS A",\r
+ "spip_mots_articles AS M" ),\r
+ array(\r
+ "M.id_mot='".intval($row['lien'])."'",\r
+ "A.statut='publie'",\r
+ "A.id_article=M.id_article" ),\r
+ "",\r
+ "A.date ASC");\r
+\r
+ $num_events = sql_count($req);\r
+ if($num_events)\r
+ while ($row = sql_fetch($req)) {\r
+\r
+ $date = explode('-',substr($row['date'],0,10));\r
+ $date_fin = explode('-',substr($row['date_redac'],0,10));\r
+ $start = explode(':',substr($row['date'],11,5));\r
+ $end = explode(':',substr($row['date_redac'],11,5));\r
+\r
+ $url="url:'spip.php?article".$row['id_article']."',";\r
+ if($date!='0000-00-00'&&$date_fin!='0000-00-00')\r
+ $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},";\r
+ }\r
+ $events=substr($events,0,strlen($events)-1);\r
+ $events.=']';\r
+\r
+ break;\r
+\r
+ # AGENDA MySQL\r
+\r
+ case 'mysql':\r
+\r
+ # Récupère les style css\r
+\r
+ $result = sql_select(array('id_style', 'bgcolor', 'textcolor', 'bordercolor'), 'spip_fullcalendar_styles', 'id_style', '', '');\r
+ while ( $row = sql_fetch($result)){\r
+ $style[$row['id_style']]['back'] = $row['bgcolor'];\r
+ $style[$row['id_style']]['text'] = $row['textcolor'];\r
+ $style[$row['id_style']]['bord'] = $row['bordercolor'];\r
+ }\r
+ sql_free($result);\r
+\r
+ $events='events: [';\r
+\r
+ $result = sql_select(array('titre', 'start', 'end', 'lien', 'id_style'), 'spip_fullcalendar_events', 'id_fullcalendar='.intval($id), '', 'start ASC');\r
+ while ( $row = sql_fetch($result)){\r
+\r
+ $date = explode('-',substr($row['start'],0,10));\r
+ $date_fin = explode('-',substr($row['end'],0,10));\r
+ $start = explode(':',substr($row['start'],11,5));\r
+ $end = explode(':',substr($row['end'],11,5));\r
+\r
+ if(strlen(trim($row['lien'])))\r
+ $url="url:'".trim($row['lien'])."',";\r
+ else\r
+ $url='';\r
+\r
+ if($row['id_style']>0){\r
+ $class=",backgroundColor: '".$style[$row['id_style']]['back']."', textColor: '".$style[$row['id_style']]['text']."', borderColor: '".$style[$row['id_style']]['bord']."'";\r
+ } else $class='';\r
+\r
+ $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},";\r
+ }\r
+ sql_free($result);\r
+ $events=substr($events,0,strlen($events)-1);\r
+ $events.=']';\r
+ break;\r
+\r
+ # AGENDA GOOGLE\r
+\r
+ case 'google':\r
+\r
+ # Choppe la clé Google dans le seul évènement de cet agenda ...\r
+ $result = sql_select('lien', 'spip_fullcalendar_events', 'id_fullcalendar='.intval($id));\r
+ $row = sql_fetch($result);\r
+ if(!strlen($row['lien'])) return;\r
+\r
+ $URL_AGENDA = "http://www.google.com/calendar/feeds/".$row['lien']."/public/basic";\r
+\r
+ $events = "events: $.fullCalendar.gcalFeed('".$URL_AGENDA."'),\r
+\r
+ eventClick: function(event) {\r
+ // opens events in a popup window\r
+ window.open(event.url, 'gcalevent', 'width=700,height=600');\r
+ return false;\r
+ },\r
+\r
+ loading: function(bool) {\r
+ if (bool) {\r
+ $('#loading').show();\r
+ }else{\r
+ $('#loading').hide();\r
+ }\r
+ }\r
+ ";\r
+\r
+ break;\r
+ default:\r
+ }\r
+\r
+ # Récupère les variable Paramètres / CFG\r
+\r
+ $aspectRatio = "[(#ENV{aspectRatio,#CONFIG{fullcalendar/aspectRatio,'1.35'}}|texte_script)]";\r
+ $useTheme = "[(#ENV{useTheme,#CONFIG{fullcalendar/useTheme,true}}|texte_script)]";\r
+ $useTheme = ($useTheme=='true')? 'theme: true,' : '' ;\r
+ $weekends = "[(#ENV{weekends,#CONFIG{fullcalendar/weekends,true}}|texte_script)]";\r
+ $defaultView = "[(#ENV{defaultView,#CONFIG{fullcalendar/defaultView,month}}|texte_script)]";\r
+\r
+ $headerLeft = "[(#CONFIG{fullcalendar/headerLeft, 'prev,next'}|texte_script)]";\r
+ $headerCenter = "[(#CONFIG{fullcalendar/headerCenter, 'title'}|texte_script)]";\r
+ $headerRight = "[(#CONFIG{fullcalendar/headerRight, 'month,agendaWeek,agendaDay'}|texte_script)]";\r
+ $firstDay = "[(#CONFIG{fullcalendar/firstDay, '1'}|texte_script)]";\r
+ $month_titleFormat = "[(#CONFIG{fullcalendar/month_titleFormat, 'MMMM yyyy'}|texte_script)]";\r
+ $month_columnFormat = "[(#CONFIG{fullcalendar/month_columnFormat, 'dddd'}|texte_script)]";\r
+ $month_timeFormat = "[(#CONFIG{fullcalendar/month_timeFormat, ''}|texte_script)]";\r
+ #$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)]";\r
+ $week_titleFormat = "[(#CONFIG{fullcalendar/week_titleFormat, 'd MMMM yyyy{ - d MMMM yyyy}'}|texte_script)]";\r
+ $week_columnFormat = "[(#CONFIG{fullcalendar/week_columnFormat, 'dddd d'}|texte_script)]";\r
+ $week_timeFormat_basic = "[(#CONFIG{fullcalendar/week_timeFormat_basic, 'H(:mm)'}|texte_script)]";\r
+ $week_timeFormat_agenda = "[(#CONFIG{fullcalendar/week_timeFormat_agenda, 'H(:mm)'}|texte_script)]";\r
+ $day_titleFormat = "[(#CONFIG{fullcalendar/day_titleFormat, 'dddd d MMMM yyyy'}|texte_script)]";\r
+ $day_columnFormat = "[(#CONFIG{fullcalendar/day_columnFormat, 'dddd d MMMM'}|texte_script)]";\r
+ $day_timeFormat_basic = "[(#CONFIG{fullcalendar/day_timeFormat_basic, 'H:mm{ - H:mm}'}|texte_script)]";\r
+ $day_timeFormat_agenda = "[(#CONFIG{fullcalendar/day_timeFormat_agenda, 'H:mm{ - H:mm}'}|texte_script)]";\r
+\r
+ $rand = rand(0,1000);\r
+\r
+ # Génère le fullcalendar avec tous ses paramètres ...\r
+ print "\r
+ <script type='text/javascript'>\r
+ $(document).ready(function() {\r
+ if( ! $('#calendar".$rand."').data('fullcalendar_set') ) {\r
+ $('#calendar".$rand."').fullCalendar({\r
+ ".$useTheme."\r
+ firstDay: ".$firstDay.",\r
+ defaultView: '".$defaultView."',\r
+ aspectRatio: ".$aspectRatio.",\r
+ header: { left: '".$headerLeft."', center: '".$headerCenter."', right: '".$headerRight."' },\r
+ editable: false,\r
+ allDayText: 'Journée',\r
+ ".$events.",\r
+ weekends: ".$weekends.",\r
+ titleFormat: {\r
+ month: '".$month_titleFormat."',\r
+ week: \"".$week_titleFormat."\",\r
+ day: '".$day_titleFormat."'\r
+ },\r
+ columnFormat: {\r
+ month: '".$month_columnFormat."',\r
+ week: '".$week_columnFormat."',\r
+ day: '".$day_columnFormat."'\r
+ },\r
+ timeFormat: {\r
+ month: \"".$month_timeFormat."\",\r
+ agendaDay: \"".$day_timeFormat_agenda."\",\r
+ agendaWeek: \"".$week_timeFormat_agenda."\",\r
+ basicWeek: \"".$week_timeFormat_basic."\",\r
+ basicDay: \"".$day_timeFormat_basic."\",\r
+ '': 'H(:mm)'\r
+ },\r
+ });\r
+ }\r
+ $('#calendar".$rand."').data('fullcalendar_set', 1);\r
+ });\r
+ </script>\r
+\r
+ <div id='calendar".$rand."'></div>\r
+\r
+ ";\r
+\r
+ }\r
+?>\r