Browse Source

introduction du pipeline quete_calendrier_prive

qui permet de lister les evenements a afficher dans le calendrier de l'espace prive
utilisable par les plugins poru ajouter leurs objets
svn/root/tags/plugins/organiseur/0.7.0 v0.7.0
cedric@yterium.com 11 years ago
parent
commit
d52df976cf
  1. 2
      .gitattributes
  2. 96
      action/quete_calendrier_prive.php
  3. 3
      paquet.xml
  4. 2
      prive/squelettes/contenu/calendrier.html
  5. 2
      prive/squelettes/inclure/organiseur-rv.html
  6. 2
      prive/squelettes/navigation/message.html

2
.gitattributes vendored

@ -1,7 +1,7 @@
* text=auto !eol
action/effacer_messagerecu.php -text
action/quete_autocomplete.php -text
action/quete_calendrier.php -text
action/quete_calendrier_prive.php -text
action/supprimer_message.php -text
base/organiseur.php -text
/calendrier.css -text

96
action/quete_calendrier.php → action/quete_calendrier_prive.php

@ -19,68 +19,84 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
*
* @return void
*/
function action_quete_calendrier_dist(){
function action_quete_calendrier_prive_dist(){
$securiser_action = charger_fonction('securiser_action','inc');
$securiser_action();
$start = _request('start');
$end = _request('end');
$quoi = _request('quoi');
$quoi = (in_array($quoi,array('publication','rv'))?$quoi:'publication');
include_spip('inc/quete_calendrier');
$evt = array();
// recuperer la liste des evenements au format ics
$limites = array(sql_quote(date('Y-m-d H:i:s',$start)),sql_quote(date('Y-m-d H:i:s',$end)));
switch($quoi){
case 'rv':
$entier = array();
$duree = quete_calendrier_interval_rv(reset($limites), end($limites));
break;
default:
list($entier,$duree) = quete_calendrier_interval($limites);
break;
}
$start = date('Y-m-d H:i:s',$start);
$end = date('Y-m-d H:i:s',$end);
$limites = array(sql_quote($start),sql_quote($end));
foreach(array('publication','rv') as $q){
$entier = $duree = array();
// la retransformer au format attendu par fullcalendar
$evt = array();
// facile : chaque evt n'est mentionne qu'une fois, a une date
foreach($entier as $amj=>$l){
$date = substr($amj,0,4).'-'.substr($amj,4,2).'-'.substr($amj,6,2);
foreach($l as $e){
$evt[] = array(
'id' => 0,
'title' => $e['SUMMARY'],
'allDay' => true,
'start' => $date,
'end' => $date,
'url' => str_replace('&','&',$e['URL']),
'className' => "calendrier-event ".$e['CATEGORIES'],
'description' => $e['DESCRIPTION'],
);
switch($q){
case 'rv':
if (!$quoi OR $quoi=='rv')
$duree = quete_calendrier_interval_rv(reset($limites), end($limites));
break;
case 'publication':
if (!$quoi OR $quoi=='publication')
list($entier,$duree) = quete_calendrier_interval($limites);
break;
}
}
// ici il faut faire attention : un evt apparait N fois
// mais on a son id
$seen = array();
foreach($duree as $amj=>$l){
foreach($l as $id=>$e){
if (!isset($seen[$e['URL']])){
// la retransformer au format attendu par fullcalendar
// facile : chaque evt n'est mentionne qu'une fois, a une date
foreach($entier as $amj=>$l){
$date = substr($amj,0,4).'-'.substr($amj,4,2).'-'.substr($amj,6,2);
foreach($l as $e){
$evt[] = array(
'id' => $id,
'id' => 0,
'title' => $e['SUMMARY'],
'allDay' => false,
'start' => convert_dateical($e['DTSTART']), //Ymd\THis
'end' => convert_dateical($e['DTEND']), // Ymd\THis
'allDay' => true,
'start' => $date,
'end' => $date,
'url' => str_replace('&','&',$e['URL']),
'className' => "calendrier-event ".$e['CATEGORIES'],
'description' => $e['DESCRIPTION'],
);
$seen[$e['URL']] = true;
}
}
// ici il faut faire attention : un evt apparait N fois
// mais on a son id
$seen = array();
foreach($duree as $amj=>$l){
foreach($l as $id=>$e){
if (!isset($seen[$e['URL']])){
$evt[] = array(
'id' => $id,
'title' => $e['SUMMARY'],
'allDay' => false,
'start' => convert_dateical($e['DTSTART']), //Ymd\THis
'end' => convert_dateical($e['DTEND']), // Ymd\THis
'url' => str_replace('&','&',$e['URL']),
'className' => "calendrier-event ".$e['CATEGORIES'],
'description' => $e['DESCRIPTION'],
);
$seen[$e['URL']] = true;
}
}
}
}
// permettre aux plugins d'afficher leurs evenements dans ce calendrier
$evt = pipeline('quete_calendrier_prive',
array(
'args' => array('start' => $start, 'end' => $end, 'quoi'=>$quoi),
'data' => $evt,
)
);
// format json
include_spip('inc/json');
echo json_encode($evt);
}

3
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="organiseur"
categorie="date"
version="0.6.1"
version="0.7.0"
etat="test"
compatibilite="[3.0.0-alpha2;["
logo="prive/themes/spip/images/calendrier-32.png"
@ -28,6 +28,7 @@
<pipeline nom="affiche_auteurs_interventions" inclure="organiseur_pipelines.php" />
<pipeline nom="post_edition" inclure="organiseur_pipelines.php" />
<pipeline nom="alertes_auteur" inclure="organiseur_pipelines.php" />
<pipeline nom="quete_calendrier_prive" action="" />
<menu nom="calendrier" titre="organiseur:info_agenda_interne" parent="outils_collaboratifs" icone="images/calendrier-16.png" />
<menu nom="messagerie" titre="info_messagerie_interne" action="messages" parent="outils_collaboratifs" icone="images/messagerie-16.png" />

2
prive/squelettes/contenu/calendrier.html

@ -10,7 +10,7 @@ jQuery(document).ready(function() {
$('#calendrier').fullCalendar({
editable: false,
events: "[(#URL_ACTION_AUTEUR{quete_calendrier,calendrier}|replace{'&amp;','&'})]",
events: "[(#URL_ACTION_AUTEUR{quete_calendrier_prive,calendrier}|replace{'&amp;','&'})]",
header: {
left: 'prevYear,prev,next,nextYear today',
center: 'title',

2
prive/squelettes/inclure/organiseur-rv.html

@ -10,7 +10,7 @@ jQuery(document).ready(function() {
$('#calendrier').fullCalendar({
editable: false,
events: "[(#URL_ACTION_AUTEUR{quete_calendrier,calendrier}|parametre_url{quoi,rv,&})]",
events: "[(#URL_ACTION_AUTEUR{quete_calendrier_prive,calendrier}|parametre_url{quoi,rv,&})]",
header: {
left: 'prev,next today',
center: 'title',

2
prive/squelettes/navigation/message.html

@ -33,7 +33,7 @@ jQuery(document).ready(function() {
month:[(#DATE_HEURE|affdate{m}|moins{1})],
date:[(#DATE_HEURE|affdate{d})],
editable: false,
events: "[(#URL_ACTION_AUTEUR{quete_calendrier,calendrier}|parametre_url{quoi,rv,&})]",
events: "[(#URL_ACTION_AUTEUR{quete_calendrier_prive,calendrier}|parametre_url{quoi,rv,&})]",
header: {
left : '',
center: 'prev,next today',

Loading…
Cancel
Save