Changeset 99441 in spip-zone


Ignore:
Timestamp:
Sep 11, 2016, 8:01:51 AM (3 years ago)
Author:
maieul@…
Message:

correction sur les décalages:

  • on supprime le bouton d'application manuelle du décalage
  • lorsque le décalage change au moment de l'édition d'un almanach, on applique la différence entre le nouveau décalage et l'ancien décalage.
  • Par exemple: ancien décalage: -1h, nouveau décalage: +2h. On décalage tout les évènements de 2 - (-1) = 3 h
Location:
_plugins_/import_ics/trunk
Files:
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/import_ics/trunk/formulaires/editer_almanach.php

    r99440 r99441  
    9090 */
    9191function formulaires_editer_almanach_traiter_dist($id_almanach='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     92        if ($id_almanach!='new'){
     93                $ancien_decalage = sql_getfetsel("decalage","spip_almanachs","id_almanach=$id_almanach");
     94        }
     95        else{// si jamais il n'y avait pas encore d'article, on considère que le décalage ne change pas
     96                $ancien_decalage = _request("decalage");
     97        }
    9298        $chargement = formulaires_editer_objet_traiter('almanach',$id_almanach,'',$lier_trad,$retour,$config_fonc,$row,$hidden);
    9399        #on recupère l'id de l'almanach dont on aura besoin plus tard
     
    97103        $id_mot = _request("id_mot");
    98104        $decalage = _request("decalage");
     105       
    99106        #on associe le mot à l'almanach
    100107        if ($id_mot){
     
    108115                );
    109116        }
     117       
     118        # on corrige le décalage sur les evts existant (cas de modif d'un article)
     119        corriger_decalage($id_almanach,$decalage,$ancien_decalage);
     120       
     121        # on importe les autres évènement
    110122        importer_almanach($id_almanach,$url,$id_article,$id_mot,$decalage);
     123       
    111124        return $chargement;
    112125}
    113126
    114 
    115 ?>
     127function corriger_decalage($id_almanach,$nouveau_decalage,$ancien_decalage){
     128        $decalage = intval($nouveau_decalage) - intval($ancien_decalage);
     129        if ($decalage !=0){
     130                $liens = sql_allfetsel('E.uid, E.id_evenement',
     131                                                                                                                        "spip_evenements AS E
     132                                                                                                                        INNER JOIN spip_almanachs_liens AS L
     133                                                                                                                        ON E.id_evenement = L.id_objet AND L.id_almanach=$id_almanach","E.horaire!=".sql_quote("non"));
     134               
     135                $champs_sql = array(
     136                        "date_debut" => "DATE_ADD(date_debut, INTERVAL  $decalage HOUR)",
     137                        "date_fin" => "DATE_ADD(date_fin, INTERVAL  $decalage HOUR)",
     138                );
     139                foreach ($liens as $l){
     140                        $id_evenement = intval($l["id_evenement"]);
     141                        autoriser_exception('evenement','modifier',$id_evenement);
     142                        objet_modifier('evenement',$id_evenement,$champs_sql);
     143                        autoriser_exception('evenement','modifier',$id_evenement,false);
     144                }
     145  }
     146}
  • _plugins_/import_ics/trunk/lang/almanach_fr.php

    r99440 r99441  
    1111        'ajouter_lien_almanach' => 'Ajouter cet almanach',
    1212        'almanach' => 'Almanach',
    13         'appliquer_decalage' => 'Appliquer le décalage',
    14         'appliquer_decalage_explication' => 'Voulez-vous appliquer le décalage à tous les événements associés à cet almanach (il est préférable de supprimer l’ancien décalage puis d’appliquer le nouveau) ?',
    1513        'attendee' => 'Intervenant(e)',
    1614        'aucun_decalage' => "Aucun décalage",
  • _plugins_/import_ics/trunk/prive/objets/contenu/almanach.html

    r99087 r99441  
    5151        </div>
    5252
    53         <div class="appliquer_decalage"><:almanach:appliquer_decalage_explication:>
    54                 [(#BOUTON_ACTION{<:almanach:appliquer_decalage:>,#URL_ACTION_AUTEUR{appliquer_decalage,#ID_ALMANACH,#SELF},ajax,<:almanach:confirmation_appliquer_decalage{titre_almanach=#TITRE}:>,})]
    55 
    56         </div>
    57 
    5853        <div class='purger_almanach'>
    5954        <BOUCLE_nb_evenement(spip_almanachs_liens){id_almanach=#ID_ALMANACH}{objet=evenement}>
Note: See TracChangeset for help on using the changeset viewer.