Changeset 8224 in spip-zone


Ignore:
Timestamp:
Dec 22, 2006, 11:41:20 AM (12 years ago)
Author:
cedric@…
Message:

de l'action pour maintenir le suspens
et un peu d'ajax pour commencer le nettoyage
La c'est tout cassé, donc un repasse en dev
Il faut faire un update to revision sur la revision precedante si vous en avez besoin

Location:
_plugins_/_stable_/agenda/1_9_2
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_stable_/agenda/1_9_2/inc/agenda_gestion.php

    r8223 r8224  
    33include_spip('inc/texte');
    44include_spip('inc/date');
     5include_spip('inc/layer');
     6include_spip('inc/presentation');
     7include_spip('inc/minipres');
     8include_spip('inc/calendar');
    59include_spip('agenda_mes_fonctions');
    610
     
    268272                $out .=  "<td>";
    269273       
    270                 $out .=  generer_url_post_ecrire("articles", "id_article=$id_article");
    271274                if (in_array($id_evenement,explode(",",$les_evenements)) && $edit==1){
    272275                        $out .=  "<span class='verdana1'><strong>"._T('agenda:titre_cadre_modifier_evenement')."&nbsp; </strong></span>\n";
     
    276279                $out .=  "<div><input type='hidden' name='id_article' value=\"$id_article\">";
    277280
     281                $bouton_ajout = false;
    278282                if (in_array($id_evenement,explode(",",$les_evenements)) && $edit==1){
    279                         $out .= Agenda_formulaire_edition_evenement($id_evenement, false);
    280                         $out .= "</div>";
    281                         $out .=  "</td></tr></table>";
    282                         $out .= "<div style='clear: both;'></div>";
    283                         $url = parametre_url(self(),'edit','');
    284                         $url = parametre_url($url,'neweven','1');
    285                         $url = parametre_url($url,'id_evenement','');
    286                         $out .= icone_horizontale(_T("agenda:icone_creer_evenement"),$url , "../"._DIR_PLUGIN_AGENDA."/img_pack/agenda-24.png", "creer.gif",false);
     283                        $form .= Agenda_formulaire_edition_evenement($id_evenement, false);
     284                        $bouton_ajout = true;
    287285                }
    288286                else{
     
    293291                                $titre_defaut = $row['titre'];
    294292                       
    295                         $out .= Agenda_formulaire_edition_evenement(NULL, true, '', $titre_defaut);
    296                         $out .= "</div>";
    297                         $out .=  "</td></tr></table>";
     293                        $form .= Agenda_formulaire_edition_evenement(NULL, true, '', $titre_defaut);
     294                        $id_evenement = 0;
     295                }
     296                $out .= ajax_action_auteur('editer_evenement',"$id_article-$id_evenement",'articles', "id_article=$id_article", $form);
     297                       
     298                $out .= "</div>";
     299                $out .=  "</td></tr></table>";
     300                $out .= "<div style='clear: both;'></div>";
     301
     302                if ($bouton_ajout){
     303                        $url = parametre_url(self(),'edit','');
     304                        $url = parametre_url($url,'neweven','1');
     305                        $url = parametre_url($url,'id_evenement','');
     306                        $out .= icone_horizontale(_T("agenda:icone_creer_evenement"),$url , "../"._DIR_PLUGIN_AGENDA."/img_pack/agenda-24.png", "creer.gif",false);
    298307                }
    299308
     
    309318        global $connect_statut, $options,$connect_id_auteur, $couleur_claire ;
    310319       
    311         $out = "";
     320        $out = "<div id='editer_evenement-$id_article'>";
    312321        $out .= "<a name='agenda'></a>";
    313322        if ($flag_editable) {
    314                 $out .= Agenda_action_formulaire_article($id_article);
     323                //$out .= Agenda_action_formulaire_article($id_article);
    315324                if (_request('edit')||_request('neweven'))
    316325                        $bouton = bouton_block_visible("evenementsarticle");
     
    337346
    338347        $out .= fin_cadre_enfonce(true);
     348        $out .= "</div>";
    339349        return $out;
    340350}
    341 
    342 
    343 function Agenda_action_update_repetitions($id_evenement,$repetitions,$liste_mots){
    344         // evenement source
    345         $res = spip_query("SELECT * FROM spip_evenements WHERE id_evenement="._q($id_evenement));
    346         if ($row = spip_fetch_array(($res))){
    347                 $titre = $row['titre'];
    348                 $descriptif = $row['descriptif'];
    349                 $horaire = $row['horaire'];
    350                 $lieu = $row['lieu'];
    351                 $date_debut = strtotime($row['date_debut']);
    352                 $date_fin = strtotime($row['date_fin']);
    353                 $duree = $date_fin - $date_debut;
    354                 $id_evenement_source = $row['id_evenement_source'];
    355                 $id_article = $row['id_article'];
    356                 if ($id_evenement_source!=0)
    357                         return; // pas un evenement source donc rien a faire ici
    358 
    359                 $repetitions_updated = array();
    360                 // mettre a jour toutes les repetitions deja existantes ou les supprimer si plus lieu
    361                 $res = spip_query("SELECT id_evenement FROM spip_evenements WHERE id_evenement_source="._q($id_evenement));
    362                 while ($row = spip_fetch_array($res)){
    363                         $date = strtotime(date('Y-m-d',$row['date_debut']));
    364                         if (in_array($date,$repetitions)){
    365                                 // il est maintenu, on l'update
    366                                 $repetitions_updated[] = $date;
    367                                 $update_date_debut = date('Y-m-d',$date)." ".date('H:i:s',$date_debut);
    368                                 $update_date_fin = date('Y-m-d H:i:s',strtotime($update_date_debut)+$duree);
    369                                
    370                                 // TODO : prendre en charge la mise a jour uniquement si conforme a l'original
    371                                 $update_titre = $titre;
    372                                 $update_descriptif = $descriptif;
    373                                 $update_lieu = $lieu;
    374                                
    375                                 // mettre a jour l'evenement
    376                                 $res=spip_query("UPDATE spip_evenements SET `titre`="._q($update_titre)
    377                                 . ",`descriptif`="._q($update_descriptif)
    378                                 . ",`lieu`="._q($update_lieu)
    379                                 . ",`horaire`="._q($horaire)
    380                                 . ",`date_debut`="._q($update_date_debut)
    381                                 . ",`date_fin`="._q($update_date_fin)
    382                                 . ",`id_article`="._q($id_article)
    383                                 . " WHERE `id_evenement` ="._q($row['id_evenement']));
    384                                 Agenda_action_update_liste_mots($row['id_evenement'],$liste_mots);
    385                         }
    386                         else {
    387                                 // il est supprime
    388                                 spip_query("DELETE FROM spip_mots_evenements WHERE id_evenement=".$row['id_evenement']);
    389                                 spip_query("DELETE FROM spip_evenements WHERE id_evenement=".$row['id_evenement']);
    390                         }
    391                        
    392                 }
    393                 // regarder les repetitions a ajouter
    394                 foreach($repetitions as $date){
    395                         if (!in_array($date,$repetitions_updated)){
    396                                 $update_date_debut = date('Y-m-d',$date)." ".date('H:i:s',$date_debut);
    397                                 $update_date_fin = date('Y-m-d H:i:s',strtotime($update_date_debut)+$duree);
    398                                 $update_titre = $titre;
    399                                 $update_descriptif = $descriptif;
    400                                 $update_lieu = $lieu;
    401 
    402                                 $id_evenement_new = spip_abstract_insert("spip_evenements",
    403                                         "(id_evenement_source,maj)",
    404                                         "("._q($id_evenement).",NOW())");
    405                                 if ($id_evenement_new==0)
    406                                         spip_log("agenda action formulaire article : impossible d'ajouter un evenement repete");
    407                                 else {
    408                                         // mettre a jour l'evenement
    409                                         $res=spip_query("UPDATE spip_evenements SET `titre`="._q($update_titre)
    410                                         . ",`descriptif`="._q($update_descriptif)
    411                                         . ",`lieu`="._q($update_lieu)
    412                                         . ",`horaire`="._q($horaire)
    413                                         . ",`date_debut`="._q($update_date_debut)
    414                                         . ",`date_fin`="._q($update_date_fin)
    415                                         . ",`id_article`="._q($id_article)
    416                                         . " WHERE `id_evenement` ="._q($id_evenement_new));
    417                                        
    418                                         Agenda_action_update_liste_mots($id_evenement_new,$liste_mots);
    419                                 }
    420                         }
    421                 }
    422         }
    423 }
    424 function Agenda_action_supprime_repetitions($supp_evenement){
    425         $res = spip_query("SELECT * FROM spip_evenements WHERE id_evenement_source="._q($supp_evenement));
    426         while ($row = spip_fetch_array($res)){
    427                 $id_evenement = $row['id_evenement'];
    428                 spip_query("DELETE FROM spip_mots_evenements WHERE id_evenement="._q($id_evenement));
    429                 spip_query("DELETE FROM spip_evenements WHERE id_evenement="._q($id_evenement));
    430         }
    431 }
    432 
    433 function Agenda_action_update_liste_mots($id_evenement,$liste_mots){
    434         // suppression des mots obsoletes
    435         $cond_in = "";
    436         if (count($liste_mots))
    437                 $cond_in = "AND " . calcul_mysql_in('id_mot', implode(",",$liste_mots), 'NOT');
    438         spip_query("DELETE FROM spip_mots_evenements WHERE id_evenement="._q($id_evenement)." ".$cond_in);
    439         // ajout/maj des nouveaux mots
    440         foreach($liste_mots as $id_mot){
    441                 if (!spip_fetch_array(spip_query("SELECT * FROM spip_mots_evenements WHERE id_evenement="._q($id_evenement)." AND id_mot="._q($id_mot))))
    442                         spip_query("INSERT INTO spip_mots_evenements (id_mot,id_evenement) VALUES ("._q($id_mot).","._q($id_evenement).")");
    443         }
    444 }
    445 
    446 
    447 function Agenda_action_formulaire_article($id_article){
    448         include_spip('base/abstract_sql');
    449         // s'assurer que les tables sont crees
    450         Agenda_install();
    451         // gestion des requetes de mises à jour dans la base
    452         $id_evenement = intval(_request('id_evenement'));
    453         $insert = _request('evenement_insert');
    454         $modif = _request('evenement_modif');
    455         $supp_evenement = intval(_request('supp_evenement'));
    456 
    457         if (($insert || $modif)&&(!$supp_evenement)){
    458        
    459                 if ( ($insert) && (!$id_evenement) ){
    460                         $id_evenement = spip_abstract_insert("spip_evenements",
    461                                 "(id_evenement_source,maj)",
    462                                 "('0',NOW())");
    463                         if ($id_evenement==0){
    464                                 spip_log("agenda action formulaire article : impossible d'ajouter un evenement");
    465                                 return;
    466                         }
    467                 }
    468                 if ($id_article){
    469                         // mettre a jour le lien evenement-article
    470                         spip_query("UPDATE spip_evenements SET id_article="._q($id_article)." WHERE id_evenement="._q($id_evenement));
    471                 }
    472                 $titre = _request('evenement_titre');
    473                 $descriptif = _request('evenement_descriptif');
    474                 $lieu = _request('evenement_lieu');
    475                 $horaire = _request('evenement_horaire');
    476                 if ($horaire!='oui') $horaire='non';
    477        
    478                 // pour les cas ou l'utilisateur a saisi 29-30-31 un mois ou ca n'existait pas
    479                 $maxiter=4;
    480                 $st_date_deb=FALSE;
    481                 $jour_debut=_request('jour_evenement_debut');
    482                 // test <= car retour strtotime retourne -1 ou FALSE en cas d'echec suivant les versions
    483                 while(($st_date_deb<=FALSE)&&($maxiter-->0)) {
    484                         $date_deb=_request('annee_evenement_debut').'-'._request('mois_evenement_debut').'-'.($jour_debut--)
    485                                 .' '._request('heure_evenement_debut').':'._request('minute_evenement_debut');
    486                         $st_date_deb=strtotime($date_deb);
    487                 }
    488                 $date_deb=format_mysql_date(date("Y",$st_date_deb),date("m",$st_date_deb),date("d",$st_date_deb),date("H",$st_date_deb),date("i",$st_date_deb), $s=0);
    489        
    490                 // pour les cas ou l'utilisateur a saisi 29-30-31 un mois ou ca n'existait pas
    491                 $maxiter=4;
    492                 $st_date_fin=FALSE;
    493                 $jour_fin=_request('jour_evenement_fin');
    494                 // test <= car retour strtotime retourne -1 ou FALSE en cas d'echec suivant les versions
    495                 while(($st_date_fin<=FALSE)&&($maxiter-->0)) {
    496                         $st_date_fin=_request('annee_evenement_fin').'-'._request('mois_evenement_fin').'-'.($jour_fin--)
    497                                 .' '._request('heure_evenement_fin').':'._request('minute_evenement_fin');
    498                         $st_date_fin=strtotime($st_date_fin);
    499                 }
    500                 $st_date_fin = max($st_date_deb,$st_date_fin);
    501                 $date_fin=format_mysql_date(date("Y",$st_date_fin),date("m",$st_date_fin),date("d",$st_date_fin),date("H",$st_date_fin),date("i",$st_date_fin), $s=0);
    502        
    503                 // mettre a jour l'evenement
    504                 $res=spip_query("UPDATE spip_evenements SET `titre`="._q($titre)
    505                 . ",`descriptif`="._q($descriptif)
    506                 . ",`lieu`="._q($lieu)
    507                 . ",`horaire`="._q($horaire)
    508                 . ",`date_debut`="._q($date_deb)
    509                 . ",`date_fin`="._q($date_fin)
    510                 . " WHERE `id_evenement` ="._q($id_evenement));
    511 
    512                 // les mots cles : par groupes
    513                 $res = spip_query("SELECT * FROM spip_groupes_mots WHERE evenements='oui' ORDER BY titre");
    514                 $liste_mots = array();
    515                 while ($row = spip_fetch_array($res,SPIP_ASSOC)){
    516                         $id_groupe = $row['id_groupe'];
    517                         $id_mot_a = _request("evenement_groupe_mot_select_$id_groupe"); // un array
    518                         if (is_array($id_mot_a) && count($id_mot_a)){
    519                                 if ($row['unseul']=='oui')
    520                                         $liste_mots[] = intval(reset($id_mot_a));
    521                                 else
    522                                         foreach($id_mot_a as $id_mot)
    523                                                 $liste_mots[] = intval($id_mot);
    524                         }                               
    525                 }
    526 
    527                 Agenda_action_update_liste_mots($id_evenement,$liste_mots);
    528                                
    529                 // gestion des repetitions
    530                 if (($repetitions = _request('selected_date_repetitions'))!=NULL){
    531                         $repetitions = explode(',',$repetitions);
    532                         $rep = array();
    533                         foreach($repetitions as $key=>$date){
    534                                 if (preg_match(",[0-9][0-9]?/[0-9][0-9]?/[0-9][0-9][0-9][0-9],",$date)){
    535                                         $date = explode('/',$date);
    536                                         $date = $date[2]."/".$date[0]."/".$date[1];
    537                                         $date = strtotime($date);
    538                                 }
    539                                 else {
    540                                         $date = preg_replace(",[0-2][0-9]:[0-6][0-9]:[0-6][0-9]\s*(UTC|GMT)(\+|\-)[0-9]{4},","",$date);
    541                                         $date = explode(' ',$date);
    542                                         $date = strtotime($date[2]." ".$date[1]." ".$date[3]);
    543                                 }
    544                                 if (!in_array($date,$repetitions))
    545                                         $rep[] = $date;
    546                         }
    547                         $repetitions = $rep;
    548                 }
    549                 else
    550                         $repetitions = array();
    551                 Agenda_action_update_repetitions($id_evenement, $repetitions, $liste_mots);
    552         }
    553         else if ($supp_evenement){
    554                 $id_article = intval(_request('id_article'));
    555 
    556                 if (!$id_article)
    557                         $id_article = intval(_request('ajouter_id_article'));
    558                 $res = spip_query("SELECT * FROM spip_evenements WHERE id_article="._q($id_article)." AND id_evenement="._q($supp_evenement));
    559                 if ($row = spip_fetch_array($res)){
    560                         spip_query("DELETE FROM spip_mots_evenements WHERE id_evenement="._q($supp_evenement));
    561                         spip_query("DELETE FROM spip_evenements WHERE id_evenement="._q($supp_evenement));
    562                 }
    563                 Agenda_action_supprime_repetitions($supp_evenement);
    564         }
    565         return "";
    566 }
    567 
    568351
    569352function Agenda_formulaire_edition_evenement($id_evenement, $neweven, $ndate="", $titre_defaut=""){
     
    623406  $out .=       "<a href='$url'><img src='"._DIR_PLUGIN_AGENDA."/img_pack/croix.png' width='12' height='12' style='border:none;'></a>";
    624407  $out .= "</div>\n";
    625   $out .=  "<form name='edition_evenement' action='$url' method='post'>";
    626   #$out .=  "<input type='hidden' name='redirect' value='$url' />\n";
     408  //$out .=  "<form name='edition_evenement' action='$url' method='post'>";
    627409        if (!$neweven){
    628410          $out .=  "<input type='hidden' name='id_evenement' value='$fid_evenement' />\n";
     
    744526  $out .=  "</div>";
    745527
    746         $out .=  "</form>";
     528        //$out .=  "</form>";
    747529        $out .=  "</div>\n";
    748530        return $out;
  • _plugins_/_stable_/agenda/1_9_2/plugin.xml

    r7978 r8224  
    1212        </version>
    1313        <etat>
    14         test
     14        dev
    1515        </etat>
    1616        <description>
Note: See TracChangeset for help on using the changeset viewer.