source: spip-zone/_plugins_/_stable_/agenda/saisie_rapide/exec/saisie_rapide.php @ 7438

Last change on this file since 7438 was 7438, checked in by patfr@…, 14 years ago

une pétouille de compatibilité et un Reset tout neuf !

File size: 12.1 KB
Line 
1<?php
2/*
3ajout d'une fonctionnalite de saisie rapide au plugin agenda.
4c'est trop penible d'ajouter les evenements un par un qd yen a plus de trois...
5en gros, pour moi, ca me change trop la vie !
6
7j'attends l'avis des developpeurs pour l'inserer eventuellement plus tard au plugin s'ils le desirent.
8Cette extension est testee sous spip 1.9.2 et fonctionne probablement sous spip 1.9.1.
9
10fichiers à placer dans le repertoire plugins/agenda :
11        exec/saisie_rapide.php : dialogue de saisie rapide
12        inc/agenda_gestion.php : fichier d'origine modifie
13        SAISIE.TXT : les details.
14
15attention : aucune internationalisation pour l'instant !
16
17Patrice VANNEUFVILLE - patrice.vanneufville(arob)laposte(pt)net
18
19Syntaxe :
20        "jj/mm[/aaaa][-jj/mm[/aaaa]] [hh:mm[-hh:mm]] "Le titre" ["Le lieu" [ "La description"]] [REP=jj/mm/aaaa[,jj/mm/aaaa,etc]]
21
22Les crochets indiquent les éléments facultatifs.
23Les répétitions de l'évènement sont indiquées par 'REP=' suivi d'une liste de dates séparées par des virgules.
24Bien respecter les espaces entre les éléments et ne pas mettre de guillemets dans les textes.
25
26Exemple 1 : 20/09/2006 19:30-22:00 "Répétition de rentrée" "Temple des Gobelins" "Reprise de contact, Duruflé, et mise au point des calendriers"
27        (ajoute un évènement précis à une date précise, et d'une durée précise)
28Exemple 2 : 17/08-23/08 "Stage d'été " "Les Salines"
29        (ajoute un évènement cette année, sans description et sur plusieurs jours)
30Exemple 3 : 01/01/2007 "Bonne année à tous !" REP=01/01/2008,01/01/2009,01/01/2010
31        (ajoute un évènement sans horaire, sans lieu, à une date précise et répété sur 3 autres dates)
32
33*/
34
35if (!defined("_ECRIRE_INC_VERSION")) return;
36
37// essai d'intertionalisation...
38$test = _T('onchargelalangue');
39$GLOBALS[$GLOBALS['idx_lang']] += array(
40 'saisie_rapide_entete' => "L'agenda pour les experts",
41 'saisie_rapide_merci' => "Merci, vos &eacute;v&egrave;nements ont bien &eacute;t&eacute; enregistr&eacute;s :", 
42 'saisie_rapide_compiler' => "Compiler et v&eacute;rifier la liste",
43 'saisie_rapide_enregistrer' => "Enregistrer ces &eacute;v&egrave;nements",
44 'saisie_rapide_votre_liste' => "VOTRE LISTE D'EVENEMENTS",
45 'saisie_rapide_votre_liste_infos' => "Indiquer un seul &eacute;v&egrave;nement (&eacute;ventuellement ses r&eacute;p&eacute;titions) par ligne :",
46 'saisie_rapide_article' => "Article propri&eacute;taire : ",
47 'saisie_rapide_compilation' => "COMPILATION DE LA LISTE",
48 'saisie_rapide_compilation_infos' => "Voici votre liste interpr&eacute;t&eacute;e par le compilateur.<br>En absence d'erreur, enregistrez d&eacute;finitvement les &eacute;v&egrave;nements suivants :",
49 'saisie_rapide_evenement_de' => "EVENEMENTS DE : ",
50 'saisie_rapide_heure_id' => "Id.",
51 'saisie_rapide_heure_debut' => "Heure de d&eacute;but",
52 'saisie_rapide_heure_fin' => "Heure de fin",
53 'saisie_rapide_fermer' => "Fermer",
54 'saisie_rapide_reset' => "Reset",
55);
56// fin de l'essai !!
57
58global $spip_version_code;
59if ($spip_version_code<1.92) { 
60 include_spip('inc/presentation'); 
61 function set_request($var, $val = NULL) {
62        unset($_GET[$var]);
63        unset($_POST[$var]);
64        if ($val !== NULL) $_GET[$var] = $val;
65 }
66} else include_spip('inc/commencer_page');
67
68include_spip('inc/agenda_filtres');
69include_spip('inc/agenda_gestion');
70
71function affiche_et_enregistre(&$t) {
72 global $result;
73
74 debut_cadre_enfonce("../plugins/agenda/img_pack/agenda-24.png", false, "", _T('saisie_rapide_merci')); 
75 foreach($t as $e=>$v) if ($t[$e]=="") unset($t[$e]); 
76 affiche_table_evenements($t); 
77 fin_cadre_enfonce();
78 echo "<div align='center'><button class='fondo' onClick='javascript:window.close()'>"._T('saisie_rapide_fermer').'</button></div>';
79 set_request('evenement_insert', 1);
80 foreach ($result as $r) {
81  foreach ($r as $r2=>$v) set_request($r2, $v);
82  Agenda_action_formulaire_article(_request('id_article'));
83 } 
84 // affiche_evenements_article(); // Peut-etre pas necessaire...
85 echo "<script type=\"text/javascript\"><!--
86 window.opener.location.reload();
87 --></script>";
88}
89
90function affiche_evenements_article() {
91 global $titre_defaut;
92 //echo Agenda_formulaire_article(_request('id_article'), false);
93 echo "<br>";
94 debut_cadre_enfonce("../plugins/agenda/img_pack/agenda-24.png", false, "", _T('saisie_rapide_evenement_de').$titre_defaut); 
95  list($s, $les_evenements) = Agenda_formulaire_article_afficher_evenements(_request('id_article'), false);
96  echo $s;
97 fin_cadre_enfonce();
98}
99
100function compile_t(&$t) {
101 foreach($t as $e=>$v) {
102  $t[$e]=trim(str_replace("\t", " ", $t[$e]));
103  if (ereg ("([0-9]{1,2})/([0-9]{1,2})/?([0-9]{4})?-?([0-9]{1,2})?/?([0-9]{1,2})?/?([0-9]{4})? +".
104                        "([0-9]{1,2})?:?([0-9]{1,2})?-?([0-9]{1,2})?:?([0-9]{1,2})? *".
105                        '" *([^ ^"][^"]*) *" *("([^"]*)")? *("([^"]*)")? *'.
106                        '(REP *=)?([0-9 /,]*)?', $t[$e]=trim($t[$e]), $regs)) {
107   // annee_debut omise
108   if($regs[3]=='') $regs[3]=date('Y', time());
109   // annee_fin omise
110   if($regs[6]=='') $regs[6]=$regs[3]; ;
111   // heure_fin omise
112   if($regs[9].$regs[10]=='') { $regs[9]=$regs[7]; $regs[10]=$regs[8]; }   
113   // date_fin omise
114   if($regs[4].$regs[5]=='') { $regs[4]=$regs[1]; $regs[5]=$regs[2]; }   
115   // format complet
116   for ($i=0;$i<=10;$i++) $regs[$i]=sprintf("%02d", intval($regs[$i]));
117   $t[$e]="$regs[1]/$regs[2]/$regs[3]-$regs[4]/$regs[5]/$regs[6] $regs[7]:$regs[8]-$regs[9]:$regs[10]".
118                  " \"$regs[11]\" \"$regs[13]\" \"$regs[15]\" REP=".str_replace(' ','',trim($regs[17]));
119  } else { if ($t[$e]!="") $t[$e]=""; else unset($t[$e]); }
120 }
121}
122
123function affiche_table_evenements(&$t) { 
124 global $result; unset($result); global $result; ?>
125   <div class="liste liste-evenements"><table background="" border="0" cellpadding="2" cellspacing="2" width="100%">
126   <tbody><tr class="tr_liste">
127   <th><?=_T('saisie_rapide_heure_id')?></th>
128   <th><?=_T('agenda:evenement_date_debut')?></th>
129   <th><?=_T('agenda:evenement_date_fin')?></th>
130   <th><?=_T('saisie_rapide_heure_debut')?></th>
131   <th><?=_T('saisie_rapide_heure_fin')?></th>
132   <th><?=_T('agenda:evenement_titre')?></th>
133   <th><?=_T('agenda:evenement_lieu')?></th>
134   <th><?=_T('agenda:evenement_descriptif')?></th>
135 </tr><?php $n=0;
136 foreach($t as $e=>$v) {
137  echo "<tr ><th>".++$n."</th>";
138  if (ereg ("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})-([0-9]{1,2})/([0-9]{1,2})/([0-9]{4}) ".
139                        "([0-9]{1,2}):([0-9]{1,2})-([0-9]{1,2}):([0-9]{1,2}) ".
140                        '"([^"]*)" ("([^"]*)") ("([^"]*)") *'.
141                        '(REP=)([0-9 /,]*)?', $t[$e], $regs)) {
142   echo "<td>$regs[1]/$regs[2]/$regs[3]</td><td>$regs[4]/$regs[5]/$regs[6]</td>";
143   echo "<td><div align=center>$regs[7]:$regs[8]</div></td><td><div align=center>$regs[9]:$regs[10]</div></td>";
144   echo "<td>$regs[11]</td><td>".($regs[13]?$regs[13]:"&nbsp;")."</td><td>".($regs[15]?$regs[15]:"&nbsp;")."</td></tr>\n";
145   if ($regs[17]!="") echo "<tr ><th>&nbsp;</th><td colspan=7>Autres occurences : ".str_replace(',',', ',$regs[17])."</td></tr>";
146   $result[$n]['evenement_titre']=$regs[11];
147   $result[$n]['evenement_lieu']=$regs[13];
148   $result[$n]['evenement_descriptif']=$regs[15];
149   $result[$n]['jour_evenement_debut']=$regs[1];
150   $result[$n]['mois_evenement_debut']=$regs[2];
151   $result[$n]['annee_evenement_debut']=$regs[3];
152   $result[$n]['evenement_horaire']="$regs[7]:$regs[8]-$regs[9]:$regs[10]"=="00:00-00:00"?'non':'oui';
153   $result[$n]['heure_evenement_debut']=$regs[7];
154   $result[$n]['minute_evenement_debut']=$regs[8];
155   $result[$n]['jour_evenement_fin']=$regs[4];
156   $result[$n]['mois_evenement_fin']=$regs[5];
157   $result[$n]['annee_evenement_fin']=$regs[6];
158   $result[$n]['heure_evenement_fin']=$regs[9];
159   $result[$n]['minute_evenement_fin']=$regs[10];
160   $result[$n]['selected_date_repetitions']=$regs[17];
161  } else echo "<td colspan=7>Format invalide !</td></tr>";
162 }
163 ?></tbody></table></div><?php
164 }
165
166function affiche_compilation(&$t) {
167 debut_cadre_enfonce("../plugins/agenda/img_pack/agenda-24.png", false, "", _T('saisie_rapide_compilation')); 
168 echo _T('saisie_rapide_compilation_infos');
169 ?>
170  <form method="POST">
171  <input name='exec' type='hidden' value='saisie_rapide' />
172  <input name='action' type='hidden' value='enregistre' />
173  <input name='id_article' type='hidden' value='<?=_request('id_article')?>' />
174  <input name='liste_evenements' type='hidden' value="<?=htmlentities(_request('liste_evenements'))?>" />
175  <?php affiche_table_evenements($t); ?>
176 <div align='right'><input class='fondo' type='submit' value='<?=_T('saisie_rapide_enregistrer')?>'></div>
177 </form>
178 <?php
179 fin_cadre_enfonce(); 
180}
181
182function affiche_formulaire() {
183  debut_cadre_enfonce("../plugins/agenda/img_pack/agenda-24.png", false, "", _T('saisie_rapide_votre_liste')); 
184  echo _T('saisie_rapide_votre_liste_infos');
185  ?>
186 
187  <form method="POST">
188  <input name='exec' type='hidden' value='saisie_rapide' />
189  <input name='action' type='hidden' value='compile' />
190  <input name='id_article' type='hidden' value='<?=_request('id_article')?>' />
191  <textarea name="liste_evenements" style="width: 99%;" rows="10" class="forml" ><?=_request('liste_evenements')?></textarea>
192  <a href="<?=generer_url_ecrire("saisie_rapide", "id_article="._request("id_article"))?>"><?=_T('saisie_rapide_reset')?></a>
193  <div align='right'><input class='fondo' type='submit' value='<?=_T('saisie_rapide_compiler')?>'></div></form>
194  <?php fin_cadre_enfonce(); 
195    debut_cadre_formulaire(); ?>
196    <strong>Syntaxe</strong> : &quot;jj/mm[/aaaa][-jj/mm[/aaaa]] [hh:mm[-hh:mm]]
197    &quot;Le titre&quot;
198[&quot;Le lieu&quot; [ &quot;La description&quot;]] [REP=jj/mm/aaaa[,jj/mm/aaaa,etc]]<br>
199 Les crochets indiquent les &eacute;l&eacute;ments facultatifs. <br>
200 Les r&eacute;p&eacute;titions de l'&eacute;v&egrave;nement sont indiqu&eacute;es par  'REP=' suivi d'une liste de dates s&eacute;par&eacute;es par des virgules. <br>
201 Bien respecter les espaces (ou tabulations) entre les &eacute;l&eacute;ments et ne pas mettre de guillemets dans les textes. <br>
202    <br>
203
204    <em>Exemple 1</em> :
20520/09/2006 19:30-22:00 &quot;R&eacute;p&eacute;tition de rentr&eacute;e&quot; &quot;Temple des Gobelins&quot; &quot;Reprise de contact, Durufl&eacute;, et mise au point des calendriers&quot;<br />
206<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ajoute un &eacute;v&egrave;nement pr&eacute;cis &agrave; une date pr&eacute;cise, et d'une dur&eacute;e  pr&eacute;cise)</em><br>
207    <em>Exemple 2</em> :
208  17/08-23/08 &quot;Stage d'&eacute;t&eacute; <?=date('Y', time())?> &quot; &quot;Les Salines&quot; <br>
209  <em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ajoute un &eacute;v&egrave;nement cette ann&eacute;e, sans description et sur plusieurs jours)<br />
210  Exemple 3</em> :
211  01/01/2007 &quot;Bonne ann&eacute;e &agrave; tous !&quot; REP=01/01/2008,01/01/2009,01/01/2010<br />
212  <em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ajoute un &eacute;v&egrave;nement sans horaire, sans lieu, &agrave; une date pr&eacute;cise et r&eacute;p&eacute;t&eacute; sur 3 autres dates)</em><br />
213  <em></em>
214  <?php fin_cadre_formulaire(); 
215}
216
217function exec_saisie_rapide_dist()
218{ global $titre_defaut;
219        //header("Content-Type: text/html; charset=utf-8");
220        //echo _DOCTYPE_ECRIRE, html_lang_attributes();
221        //echo "<head><title>", "L'agenda pour les experts",    "</title></head>\n";
222
223        // s'assurer que les tables sont crees
224        Agenda_install();
225
226        include_spip('inc/headers');
227        http_no_cache();
228        echo init_entete(_T('saisie_rapide_entete'), 0);
229
230        echo "<body>";
231        $titre_defaut = "";
232        $res = spip_query("SELECT titre FROM spip_articles where id_article=".spip_abstract_quote(_request('id_article')));
233        if ($row = spip_fetch_array($res)) $titre_defaut = $row['titre'];
234        echo '<h3>'._T('saisie_rapide_article')._request('id_article').". $titre_defaut</h3>";
235    $t=split("\n",_request('liste_evenements'));
236        compile_t($t);
237        if  (_request('action')=='enregistre') affiche_et_enregistre($t);
238        else {
239                if (_request('liste_evenements')) affiche_compilation($t);
240                affiche_formulaire();
241                affiche_evenements_article();
242        }       
243
244        echo "</body></html>";
245}
246?>
Note: See TracBrowser for help on using the repository browser.