source: spip-zone/_plugins_/planning_simple/inclure/temps.html @ 84873

Last change on this file since 84873 was 84873, checked in by toutati@…, 5 years ago

Avant fin septembre voila un plugin pour créer un emploi du temps et l'imprimer, mais il affichera aussi du mardi au samedi si on veut pour un festival
ca marche basiquement pour l'instant avec les evenements d'un article.
Dans le futur ce sera modifiable en ligne.
Voir le README pour les détails.

  • Property svn:executable set to *
File size: 4.3 KB
Line 
1#SET{heure_max_fin,00}
2#SET{heure_max_debut,24}
3[(#SET{tds_supprimer,#ARRAY})]
4
5<BOUCLE_donnees(EVENEMENTS){par date_debut}{id_article}>
6
7[(#REM) <!-- heure max de début --->]
8[(#DATE_DEBUT|affdate{H:i}|<{#GET{heure_max_debut}}|oui)
9        [(#SET{heure_max_debut,[(#DATE_DEBUT|affdate{H})]})]
10]
11
12[(#REM) <!-- heure max de fin --->]
13[(#DATE_FIN|affdate{H:i}|>{#GET{heure_max_fin}}|oui)
14        [(#SET{heure_max_fin,[(#DATE_FIN|affdate{H})]})]
15]
16
17[(#REM) <!-- quel jour au_debut --->]
18[(#COMPTEUR_BOUCLE|=={1}|oui)
19        [(#SET{jour_debut_numero,[(#DATE_DEBUT|affdate{w})]})]
20        [(#SET{au_debut,[(#DATE_DEBUT|affdate{Y-m-d H:i}|strtotime)]})]
21        [(#SET{date_zero,[(#DATE_DEBUT|affdate{Y-m-d H:i})]})]
22        #SET{date_zerook,#DATE_DEBUT}
23]
24
25[(#REM) <!-- quel jour au_final --->]
26[(#COMPTEUR_BOUCLE|=={#TOTAL_BOUCLE}|oui)
27        [(#SET{jour_fin,[(#DATE_DEBUT|affdate{w})]})]
28        [(#SET{au_final,[(#DATE_FIN|affdate{Y-m-d H:i}|strtotime)]})]
29        #SET{au_finalok,#DATE_FIN}
30]
31
32[(#REM) <!-- on calcule les cases à ne pas occuper -->]
33[(#SET{debute_mn,[(#GET{date_zero}|duree{#DATE_DEBUT,minutes})]})]
34[(#SET{duree_mn,[(#DATE_DEBUT|duree{#DATE_FIN,minutes})]})]             
35[(#SET{nb_td,[(#GET{duree_mn}|div{30})]})]
36<BOUCLE_ajouter_td(DATA){enum 1,#GET{nb_td}|moins{1}}>
37[(#SET{td_a_virer,[(#GET{debute_mn}|plus{[(#VALEUR|mult{30})]})]})]
38#SET{tds_supprimer, #GET{tds_supprimer}|push{#GET{td_a_virer}}}
39</BOUCLE_ajouter_td>
40
41</BOUCLE_donnees>
42
43[(#REM) <!-- nombre de jours colonnes --->]
44[(#SET{nb_jours,
45        [(#GET{date_zerook}|duree{#GET{au_finalok},days}|plus{1})]
46})]
47
48[(#REM) <!-- nombre d'heures --->]
49[(#SET{nb_heures,
50        [(#EVAL{[(#GET{heure_max_fin}|intval)]-[(#GET{heure_max_debut}|intval)]}|plus{1})]
51})]
52
53
54[(#REM) <!-- nombre de minutes --->]
55[(#SET{nb_minutes,
56        [(#GET{nb_heures}|moins{1}|mult{60}|plus{1})]
57})]
58
59[(#REM) <!--
60<p>Les #GET{nb_jours} jours
61entre [(#VAL{date_jour_#GET{jour_debut_numero}|plus{1}}|_T)] et [(#VAL{date_jour_#GET{jour_fin}|plus{1}}|_T)] vont au maximum de [(#GET{heure_max_debut})h] [à (#GET{heure_max_fin})h]</p>
62<p>La table aura donc #GET{nb_heures} heures pour [ (#GET{nb_minutes}) ] minutes sur [ (#GET{nb_jours}) ] colonnes (les jours)</p>
63-->]
64
65<style type="text/css">
66#planning_simple td{width:[(#EVAL{750}|div{#GET{nb_jours}})px];} /* 750 = table 800px moins heures 50px*/
67</style>
68
69
70
71<div class='planning_simple'>
72[(#REM) <!-- l'emploi du temps en table, la construction tr/td est réalisé puis remplit en fonction des minutes, de 0 lundi 8h à 6400… le vendredi 16h -->]
73<table id="planning_simple">
74<caption>#INFO_TITRE{article,#ENV{id_article}}</caption>
75<tbody>
76<tr>
77                <th class="horaires"><!--Horaires--></th>
78        [(#REM) <!-- les jours (colonnes) de la semaine en multilingues -->]
79        <BOUCLE_jours(DATA){enum 1,#GET{nb_jours}}>
80                <th class="jours">[(#VAL{date_jour_#GET{jour_debut_numero}|plus{#VALEUR}}|_T|ucfirst)]</th>
81        </BOUCLE_jours>
82       
83</tr>
84
85        [(#REM) <!-- 1 ligne = 30 minutes -->
86        <BOUCLE_30_minutes(DATA){enum 0,#GET{nb_minutes},30}>
87                [(#SET{30_minutes,[(#EVAL{date("H:i", strtotime("+[(#GET{heure_max_debut}|round|moins{1}) hours ][(#VALEUR)] minutes","00:00"))})]})]
88                <tr class="#GET{30_minutes} [ (#COMPTEUR_BOUCLE|alterner{heure,demie})]">
89                               
90                        <td class="horaires">#GET{30_minutes}</td>
91                       
92                        [(#REM) <!-- les evenements de chaque cellules -->]
93                        <BOUCLE_cellules(DATA){enum 1,#GET{nb_jours}}>
94                               
95                                [(#REM) <!-- calcule la période en minutes a additionner à la cellule zéro (exemple 490 minutes) -->]
96                                [(#SET{periode,[(#VALEUR|moins{1}|intval|mult{1440}|plus{#_30_minutes:VALEUR})]})]
97                               
98                                [(#REM) <!-- additionne la cellule zéro + la période -->]
99                                [(#SET{date_evalue,[(#EVAL{date("Y-m-d H:i", strtotime("[+(#GET{periode}) minutes]","[(#GET{au_debut})]"))})]})]
100                               
101                                [(#REM) <!-- la cellule doit-elle disparaitre au profit d'un rowspan précédent, reprend le array -->]
102                                #SET{td_supprime,non}
103                                [(#GET{periode}|in_array{#GET{tds_supprimer}}|oui) [(#SET{td_supprime,oui})]]
104                               
105                                [(#REM) <!-- affiche l'evenement qui correspond à cette date -->]
106                                <INCLURE{fond=inclure/evenement_date_value,id_article,date_evalue=#GET{date_evalue},td_supprime=#GET{td_supprime}} />
107                                               
108                        </BOUCLE_cellules>     
109                </tr>
110        </BOUCLE_30_minutes>
111
112</tbody>
113</table>
114
115</div>
116
117</B_donnees><:planning_simple:aucune_donnee:><code>/?page=planning_simple&id_article=13</code>
118<:planning_simple:explication_evenements_dependances:>
119<//B_donnees>
Note: See TracBrowser for help on using the repository browser.