Changeset 54004 in spip-zone


Ignore:
Timestamp:
Nov 3, 2011, 5:54:37 PM (8 years ago)
Author:
cedric@…
Message:

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

Location:
_core_/plugins/organiseur
Files:
4 edited
1 moved

Legend:

Unmodified
Added
Removed
  • _core_/plugins/organiseur/action/quete_calendrier_prive.php

    r53971 r54004  
    2020 * @return void
    2121 */
    22 function action_quete_calendrier_dist(){
     22function action_quete_calendrier_prive_dist(){
    2323        $securiser_action = charger_fonction('securiser_action','inc');
    2424        $securiser_action();
     
    2727        $end = _request('end');
    2828        $quoi = _request('quoi');
    29         $quoi = (in_array($quoi,array('publication','rv'))?$quoi:'publication');
    3029
    3130        include_spip('inc/quete_calendrier');
    3231
     32        $evt = array();
     33
    3334        // recuperer la liste des evenements au format ics
    34         $limites = array(sql_quote(date('Y-m-d H:i:s',$start)),sql_quote(date('Y-m-d H:i:s',$end)));
    35         switch($quoi){
    36                 case 'rv':
    37                         $entier = array();
    38                         $duree = quete_calendrier_interval_rv(reset($limites), end($limites));
    39                         break;
    40                 default:
    41                         list($entier,$duree) = quete_calendrier_interval($limites);
    42                         break;
    43         }
     35        $start = date('Y-m-d H:i:s',$start);
     36        $end = date('Y-m-d H:i:s',$end);
     37        $limites = array(sql_quote($start),sql_quote($end));
     38        foreach(array('publication','rv') as $q){
     39                $entier = $duree = array();
    4440
    45         // la retransformer au format attendu par fullcalendar
    46         $evt = array();
    47         // facile : chaque evt n'est mentionne qu'une fois, a une date
    48         foreach($entier as $amj=>$l){
    49                 $date = substr($amj,0,4).'-'.substr($amj,4,2).'-'.substr($amj,6,2);
    50                 foreach($l as $e){
    51                         $evt[] = array(
    52                                 'id' => 0,
    53                                 'title' => $e['SUMMARY'],
    54                                 'allDay' => true,
    55                                 'start' => $date,
    56                                 'end' => $date,
    57                                 'url' => str_replace('&','&',$e['URL']),
    58                                 'className' => "calendrier-event ".$e['CATEGORIES'],
    59                                 'description' => $e['DESCRIPTION'],
    60                         );
     41                switch($q){
     42                        case 'rv':
     43                                if (!$quoi OR $quoi=='rv')
     44                                        $duree = quete_calendrier_interval_rv(reset($limites), end($limites));
     45                                break;
     46                        case 'publication':
     47                                if (!$quoi OR $quoi=='publication')
     48                                        list($entier,$duree) = quete_calendrier_interval($limites);
     49                                break;
    6150                }
    62         }
    63         // ici il faut faire attention : un evt apparait N fois
    64         // mais on a son id
    65         $seen = array();
    66         foreach($duree as $amj=>$l){
    67                 foreach($l as $id=>$e){
    68                         if (!isset($seen[$e['URL']])){
     51
     52                // la retransformer au format attendu par fullcalendar
     53                // facile : chaque evt n'est mentionne qu'une fois, a une date
     54                foreach($entier as $amj=>$l){
     55                        $date = substr($amj,0,4).'-'.substr($amj,4,2).'-'.substr($amj,6,2);
     56                        foreach($l as $e){
    6957                                $evt[] = array(
    70                                         'id' => $id,
     58                                        'id' => 0,
    7159                                        'title' => $e['SUMMARY'],
    72                                         'allDay' => false,
    73                                         'start' => convert_dateical($e['DTSTART']), //Ymd\THis
    74                                         'end' => convert_dateical($e['DTEND']), // Ymd\THis
     60                                        'allDay' => true,
     61                                        'start' => $date,
     62                                        'end' => $date,
    7563                                        'url' => str_replace('&','&',$e['URL']),
    7664                                        'className' => "calendrier-event ".$e['CATEGORIES'],
    7765                                        'description' => $e['DESCRIPTION'],
    7866                                );
    79                                 $seen[$e['URL']] = true;
     67                        }
     68                }
     69                // ici il faut faire attention : un evt apparait N fois
     70                // mais on a son id
     71                $seen = array();
     72                foreach($duree as $amj=>$l){
     73                        foreach($l as $id=>$e){
     74                                if (!isset($seen[$e['URL']])){
     75                                        $evt[] = array(
     76                                                'id' => $id,
     77                                                'title' => $e['SUMMARY'],
     78                                                'allDay' => false,
     79                                                'start' => convert_dateical($e['DTSTART']), //Ymd\THis
     80                                                'end' => convert_dateical($e['DTEND']), // Ymd\THis
     81                                                'url' => str_replace('&','&',$e['URL']),
     82                                                'className' => "calendrier-event ".$e['CATEGORIES'],
     83                                                'description' => $e['DESCRIPTION'],
     84                                        );
     85                                        $seen[$e['URL']] = true;
     86                                }
    8087                        }
    8188                }
    8289        }
    8390
     91        // permettre aux plugins d'afficher leurs evenements dans ce calendrier
     92        $evt = pipeline('quete_calendrier_prive',
     93                        array(
     94                                'args' => array('start' => $start, 'end' => $end, 'quoi'=>$quoi),
     95                                'data' => $evt,
     96                        )
     97               );
     98
     99        // format json
    84100        include_spip('inc/json');
    85101        echo json_encode($evt);
  • _core_/plugins/organiseur/paquet.xml

    r50368 r54004  
    22        prefix="organiseur"
    33        categorie="date"
    4         version="0.6.1"
     4        version="0.7.0"
    55        etat="test"
    66        compatibilite="[3.0.0-alpha2;["
     
    2929        <pipeline nom="post_edition" inclure="organiseur_pipelines.php" />
    3030        <pipeline nom="alertes_auteur" inclure="organiseur_pipelines.php" />
     31        <pipeline nom="quete_calendrier_prive" action="" />
    3132
    3233        <menu nom="calendrier" titre="organiseur:info_agenda_interne" parent="outils_collaboratifs" icone="images/calendrier-16.png" />
  • _core_/plugins/organiseur/prive/squelettes/contenu/calendrier.html

    r46322 r54004  
    1111        $('#calendrier').fullCalendar({
    1212                        editable: false,
    13                         events: "[(#URL_ACTION_AUTEUR{quete_calendrier,calendrier}|replace{'&amp;','&'})]",
     13                        events: "[(#URL_ACTION_AUTEUR{quete_calendrier_prive,calendrier}|replace{'&amp;','&'})]",
    1414                        header: {
    1515                                left: 'prevYear,prev,next,nextYear today',
  • _core_/plugins/organiseur/prive/squelettes/inclure/organiseur-rv.html

    r50053 r54004  
    1111        $('#calendrier').fullCalendar({
    1212                        editable: false,
    13                         events: "[(#URL_ACTION_AUTEUR{quete_calendrier,calendrier}|parametre_url{quoi,rv,&})]",
     13                        events: "[(#URL_ACTION_AUTEUR{quete_calendrier_prive,calendrier}|parametre_url{quoi,rv,&})]",
    1414                        header: {
    1515                                left: 'prev,next today',
  • _core_/plugins/organiseur/prive/squelettes/navigation/message.html

    r50367 r54004  
    3434                        date:[(#DATE_HEURE|affdate{d})],
    3535                        editable: false,
    36                         events: "[(#URL_ACTION_AUTEUR{quete_calendrier,calendrier}|parametre_url{quoi,rv,&})]",
     36                        events: "[(#URL_ACTION_AUTEUR{quete_calendrier_prive,calendrier}|parametre_url{quoi,rv,&})]",
    3737                        header: {
    3838                                left : '',
Note: See TracChangeset for help on using the changeset viewer.