Changeset 54163 in spip-zone


Ignore:
Timestamp:
Nov 7, 2011, 4:16:01 PM (8 years ago)
Author:
cedric@…
Message:

Refonte de la page evenements avec navigation laterale en ajax, et utilisation de la pagination indirecte pour simplifier le tout

Location:
_plugins_/agenda/trunk
Files:
3 added
2 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/agenda/trunk/lang/agenda_fr.php

    r54158 r54163  
    5757        'evenements' => 'Événements',
    5858        'evenements_a_venir' => 'À venir',
    59         'evenements_depuis_debut' => 'Tous',
     59        'evenements_depuis_debut' => 'Depuis le début',
    6060// F
    6161        'fermer' => 'fermer',
  • _plugins_/agenda/trunk/prive/objets/liste/evenements-post.html

    r54002 r54163  
    11#SET{self,#SELF|parametre_url{date_debut|id_evenement|debut_agenda,''}}#SET{yena,''}
    2 <h2 class='titre'><:agenda:agenda:> :
    3 <BOUCLE_compte(EVENEMENTS){id_rubrique?}{id_article?}{id_mot?}{id_evenement_source?} />[(#TOTAL_BOUCLE|singulier_ou_pluriel{agenda:info_un_evenement,agenda:info_nombre_evenements}|sinon{<:agenda:aucun_evenement:>})]#SET{yena,#TOTAL_BOUCLE|oui}<//B_compte></h2>
    42<B_agenda>
     3<h2 class='titre'>[(#GRAND_TOTAL|singulier_ou_pluriel{agenda:info_un_evenement,agenda:info_nombre_evenements})]</h2>
    54<div class='pagination'>
    65<div class='plier_deplier'><a href='#' onclick='jQuery("li.item.court").removeClass("court");return false;' class='noajax'><:lien_tout_deplier:></a> | <a href='#' onclick='set_vevent();return false;' class='noajax'><:lien_tout_replier:></a></div>
     
    98</div>
    109<ul class='liste_items liste-items evenements'>
    11         <BOUCLE_agenda(EVENEMENTS){par date_debut}{pagination #ENV{pagine,20}}{age_relatif_debut<=0}{id_evenement?}{id_article?}{id_rubrique?}{id_mot?}{id_evenement_source?}{statut?}>
     10        <BOUCLE_agenda(EVENEMENTS){par date_debut}{pagination #ENV{pagine,20}}{id_evenement?}{id_article?}{id_rubrique?}{id_mot?}{id_evenement_source?}{statut?}>
    1211        <li class='item[ (#EXPOSE)][ (#ID_EVENEMENT_SOURCE|oui)repetition]'><div class='jour'>[(#DATE_DEBUT|affdate_jourcourt|unique)]</div>
    1312                [(#MODELE{evenement_vevent}|trim|sinon{'?'})]
     
    3231        </BOUCLE_agenda>
    3332</ul>
    34 <div class='pagination'><a href="#URL_ECRIRE{evenement_edit,id_evenement=new&id_article=#ID_ARTICLE}" class='noajax creer'><:agenda:creer_evenement:></a>[ | (#PAGINATION{page})]<div class='nettoyeur'></div></div>
     33<div class='pagination'><a href="#URL_ECRIRE{evenement_edit,id_evenement=new&id_article=#ID_ARTICLE}" class='noajax creer'><:agenda:creer_evenement:></a>[ | (#PAGINATION{prive})]<div class='nettoyeur'></div></div>
    3534</B_agenda>
    36 <div class='pagination'><a href="#URL_ECRIRE{evenement_edit,id_evenement=new&id_article=#ID_ARTICLE}" class='noajax creer'><:agenda:creer_evenement:></a>
    37 [(#GET{yena})
    38 [(#GET{self}|parametre_url{date_debut,1900-01-01}|lien_ou_expose{<:agenda:evenements_depuis_debut:>,#ENV{date_debut}|=={1900-01-01},noajax}) |]
    39 [(#GET{self}|lien_ou_expose{<:agenda:evenements_a_venir:>,#ENV{date_debut}|=={#ENV{date}|affdate{Y-m-d}},noajax}) ]
    40 ]
    41 <div class='nettoyeur'></div>
     35<h2 class='titre'><:agenda:aucun_evenement:></h2>
     36<div class='pagination'>
     37        <a href="#URL_ECRIRE{evenement_edit,id_evenement=new&id_article=#ID_ARTICLE}" class='noajax creer'><:agenda:creer_evenement:></a>
    4238</div>
    4339<//B_agenda>
  • _plugins_/agenda/trunk/prive/squelettes/contenu/evenements.html

    r54002 r54163  
     1<h1 class="grostitre"><:agenda:agenda:></h1>
    12[(#REM) Se placer au debut du mois en cours par defaut]
    2 #SET{date_debut,#VAL{Y-m-}|date|concat{01}}
    3 <BOUCLE_un(EVENEMENTS){id_evenement}{id_article?}{id_rubrique?}{id_mot?}{id_evenement_source?}>
     3#SET{date_debut,#VAL{Y-m-d H:i:s}|date{#ENV{date_debut,#ENV{date}}|affdate{Y-m-d 00:00:00}|strtotime|moins{1}}}
     4<BOUCLE_un(EVENEMENTS){statut==.*}{id_evenement}{id_article?}{id_rubrique?}{id_mot?}{id_evenement_source?}>
    45[(#REM) Si un evenement passe, on commence par le jour de cet evenement]
    5 #SET{date_debut,#DATE_DEBUT|affdate{Y-m-d}}
     6        #SET{id_evenement,#ID_EVENEMENT}
    67</BOUCLE_un>
    7         #SET{date_debut,#ENV{date}|affdate{Y-m-d}}
    8         #SET{date_debut,#ENV{date_debut,#GET{date_debut}}}
     8        <BOUCLE_debut(EVENEMENTS){evenement_a_venir #GET{date_debut}}{statut==.*}{id_article?}{id_rubrique?}{id_mot?}{id_evenement_source?}{par date_debut}{0,1}>
     9                #SET{id_evenement,#ID_EVENEMENT}
     10        </BOUCLE_debut>
    911<//B_un>
    10 [(#INCLURE{fond=prive/objets/liste/evenements-post}{date_debut=#GET{date_debut}}{env}{ajax})
     12<div id="liste_des_evenements">
     13        [(#INCLURE{fond=prive/objets/liste/evenements-post}{debut_agenda=#ENV{debut_agenda,@#GET{id_evenement}}}{env}{ajax})
     14</div>
    1115<script type='text/javascript'>
    1216function set_vevent(){
  • _plugins_/agenda/trunk/prive/squelettes/navigation/evenements.html

    r54002 r54163  
    1 #SET{self,#SELF|parametre_url{id_evenement|date_debut,''}|parametre_url{debut_mois,#EVAL{_request('debut_mois')}}}
    2 <ul class='agenda_navigation menu'>
    3 <li>[(#GET{self}|lien_ou_expose{<:agenda:evenements_a_venir:>,#ENV{date_debut,''}|non})]</li>
    4 <BOUCLE_debut(EVENEMENTS){par date_debut}{0,1}{id_article?}{id_rubrique?}{id_evenement_source?}>
    5 <li>[(#GET{self}|parametre_url{date_debut,#DATE_DEBUT|affdate{Y-01-01}}|lien_ou_expose{<:agenda:evenements_depuis_debut:>,#ENV{date_debut,''}|=={#DATE_DEBUT|affdate{Y-01-01}}})]</li>
     1[(#BOITE_OUVRIR{[(#CHEMIN_IMAGE{calendrier-24.png}|balise_img{'',cadre-icone})],'simple'})]
     2#SET{self,#SELF|parametre_url{id_evenement|date_debut|debut_agenda,''}|parametre_url{debut_mois,#EVAL{_request('debut_mois')}}}
     3<ul class='liste-items agenda-nav'>
     4<BOUCLE_debut(EVENEMENTS){par date_debut}{0,1}{id_article?}{id_rubrique?}{id_evenement_source?}{statut==.*}>
     5<li class="item[(#ENV{date_debut,''}|=={#DATE_DEBUT|affdate{Y-01-01}}|oui)on]"><a
     6        href="[(#GET{self}|parametre_url{date_debut,#DATE_DEBUT|affdate{Y-01-01}})]"
     7        onclick='return update_agenda(this);'><:agenda:evenements_depuis_debut:></a></li>
    68</BOUCLE_debut>
    7 [<li>
    8 (#INCLURE{fond=prive/listes/mois-evenements}{ajax}{env}{self=#GET{self}})
    9 </li>]
     9<li class="item[(#ENV{date_debut,''}|non)on]"><a
     10        href="[(#GET{self})]"
     11        onclick='return update_agenda(this);'><:agenda:evenements_a_venir:></a></li>
    1012</ul>
    11 [(#INCLURE{fond=prive/listes/rubriques-agenda}{ajax}{env}{self=#GET{self}})]
     13[(#INCLURE{fond=prive/squelettes/inclure/agenda-navigation-mois}{ajax}{env}{self=#GET{self}})]
     14#BOITE_FERMER
     15[(#INCLURE{fond=prive/squelettes/inclure/agenda-rubriques}{ajax}{env}{self=#GET{self}})]
     16<script type="text/javascript">
     17function update_agenda(link){
     18        var date_debut = parametre_url(jQuery(link).attr('href'),'date_debut');
     19        $("#liste_des_evenements").ajaxReload({args:{date_debut:date_debut,debut_agenda:""},history:true});
     20        jQuery(link).closest('.box').find('li.on').removeClass('on');
     21        jQuery(link).closest('li').addClass('on');
     22        return false;
     23}
     24
     25</script>
  • _plugins_/agenda/trunk/prive/style_prive_plugin_agenda.html

    r54158 r54163  
    2626/* liste des evenements */
    2727.plier_deplier { float: #ENV{left}; font-size: 0.9em; }
    28 .evenements li.item { padding-left: 130px; }
    29 .evenements li.court { border-width: 1px; }
    30 .evenements li.item .jour { width: 120px; margin-left: -130px; float: #ENV{left}; display: inline; position: relative; overflow: hidden; white-space: nowrap; font-size: 98%; }
     28.liste-items.evenements li.item { padding-left: 130px; }
     29.liste-items.evenements li.court { border-width: 1px; }
     30.liste-items.evenements li.item .jour { width: 120px; margin-left: -130px; float: #ENV{left}; display: inline; position: relative; overflow: hidden; white-space: nowrap; font-size: 98%; }
    3131
    3232li.item .repetitions {margin-top:0.5em;font-size:0.9em;}
     
    3535li.item .repetitions li {display:inline;margin:0;padding:0;}
    3636
    37 .evenements .actions {text-align:right;font-size:0.9em;margin:5px 0 0;}
     37.liste-items.evenements .actions {text-align:right;font-size:0.9em;margin:5px 0 0;}
    3838
    3939/* sur la fiche rubriques */
  • _plugins_/agenda/trunk/public/agenda.php

    r45958 r54163  
    55 *
    66 */
    7 
    8 
    9 /**
    10  * <BOUCLE(EVENEMENTS)>
    11  *
    12  * @param <type> $id_boucle
    13  * @param <type> $boucles
    14  * @return <type>
    15  */
    16 function boucle_EVENEMENTS_dist($id_boucle, &$boucles) {
    17         $boucle = &$boucles[$id_boucle];
    18         $id_table = $boucle->id_table;
    19 
    20         if (!isset($boucle->modificateur['criteres']['statut'])) {
    21                 // Restreindre aux elements publies
    22                 // uniquement les evenements d'un article publie
    23                 if (!$GLOBALS['var_preview'])
    24                         if (!isset($boucle->modificateur['lien']) AND !isset($boucle->modificateur['tout'])
    25                         AND (!isset($boucle->lien) OR !$boucle->lien) AND (!isset($boucle->tout) OR !$boucle->tout)) {
    26                                 $boucle->from["articles"] =  "spip_articles";
    27                                 $boucle->where[]= array("'='", "'articles.id_article'", "'$id_table.id_article'");
    28                                 $boucle->where[]= array("'='", "'articles.statut'", "'\"publie\"'");
    29                         }
    30         }
    31         return calculer_boucle($id_boucle, $boucles);
    32 }
    337
    348
Note: See TracChangeset for help on using the changeset viewer.