{{* ========================================================================= MODULE AGENDA ADMINISTRATION : accès admin géré par les permissions Paheko réelles (membre connecté avec droit d'écriture sur la section "web"), via {{#restrict}} ci-dessous. Plus de code partagé dans l'URL. ========================================================================= *}} {{#restrict section="web" level="write"}} {{:assign var="est_admin" value=true}} {{else}} {{if $is_logged==true}} {{:assign _url="%sindex.html"|args:$module.url}} {{else}} {{:assign _url="%sagenda.html"|args:$module.url}} {{/if}} {{:assign var="est_admin" value=false}} {{/restrict}} {{if $est_admin==true}} {{:admin_header title="Agenda" custom_css="/m/agenda/agenda.css" layout="" current="module_agenda"}} {{* {{else}} TODO membre logué *}} {{/if}} {{* ---------- Temp correction ---------- *}} {{*:delete where="$$.type = :type AND id > 9" :type="event"*}} {{*:save key="c489ba90-16d0-42cb-b5b8-8daa2f7e0d06" date="28/10/2026"|parse_date*}} {{* ---------- Ajout ou Modification d'un événement ---------- *}} {{#form on="save_event" }} {{if $_POST.save_event && $est_admin}} {{if $_POST.save_event == 0}} {{:assign var="_eventKey" value="%s"|uuid}} {{else}} {{:assign var="_eventKey" value=$_POST.save_event}} {{/if}} {{:debug post=$_POST _eventKey=$_eventKey}} {{:save key=$_eventKey type="event" titre=$_POST.titre|strval|trim date=$_POST.date|parse_date debut=$_POST.debut|parse_time fin=$_POST.fin|parse_time lieu=$_POST.lieu|strval|trim description=$_POST.description|strval|trim lien1_label=$_POST.lien1_label|strval|trim lien1_url=$_POST.lien1_url|strval|trim lien2_label=$_POST.lien2_label|strval|trim lien2_url=$_POST.lien2_url|strval|trim lien3_label=$_POST.lien3_label|strval|trim lien3_url=$_POST.lien3_url|strval|trim couleur=$_POST.couleur|strval|trim calendrier=$_POST.calendrier|strval|trim}} {{:redirect url="?an=%s&mois=%s"|args:$_POST.retour_an:$_POST.retour_mois*}} {{/if}} {{else}} {{:form_errors}} {{/form}} {{* ---------- Modification d'un événement ---------- {{#form on="rename_event"}} {{if $_POST.rename_event && $est_admin}} {{:assign var="t" value=$_POST.titre|strval|trim}} {{:assign var="d" value=$_POST.date|strval|trim}} {{if $t != "" && $d != ""}} {{:save id=$_POST.rename_event|intval type="event" titre=$t date=$d debut=$_POST.debut|strval|trim fin=$_POST.fin|strval|trim lieu=$_POST.lieu|strval|trim description=$_POST.description|strval|trim lien1_label=$_POST.lien1_label|strval|trim lien1_url=$_POST.lien1_url|strval|trim lien2_label=$_POST.lien2_label|strval|trim lien2_url=$_POST.lien2_url|strval|trim lien3_label=$_POST.lien3_label|strval|trim lien3_url=$_POST.lien3_url|strval|trim couleur=$_POST.couleur|strval|trim calendrier=$_POST.calendrier|strval|trim}} {{*:redirect url="index.html?an=%s&mois=%s"|args:$_POST.retour_an:$_POST.retour_mois}} {{/if}} {{/if}} {{else}} {{:form_errors}} {{/form}} *}} {{* ---------- Suppression d'un événement ---------- *}} {{if $_POST.suppr_event && $est_admin}} {{:delete id=$_POST.suppr_event|intval}} {{:redirect url="index.html?an=%s&mois=%s"|args:$_POST.retour_an:$_POST.retour_mois}} {{/if}} {{* ---------- Ajout d'une permanence récurrente ---------- *}} {{if $_POST.add_perm && $est_admin}} {{:assign var="lbl" value=$_POST.label|strval|trim}} {{if $lbl != ""}} {{:save type="permanence" jour=$_POST.jour|intval debut=$_POST.debut|strval|trim fin=$_POST.fin|strval|trim label=$lbl lieu=$_POST.lieu|strval|trim description=$_POST.description|strval|trim date_debut=$_POST.date_debut|strval|trim date_fin=$_POST.date_fin|strval|trim type_recurrence=$_POST.type_recurrence|strval|trim semaine_du_mois=$_POST.semaine_du_mois|intval couleur=$_POST.couleur|strval|trim calendrier=$_POST.calendrier|strval|trim}} {{:redirect url="index.html"}} {{/if}} {{/if}} {{* ---------- Modification d'une permanence ---------- *}} {{if $_POST.rename_perm && $est_admin}} {{:assign var="lbl" value=$_POST.label|strval|trim}} {{if $lbl != ""}} {{:save id=$_POST.rename_perm|intval type="permanence" jour=$_POST.jour|intval debut=$_POST.debut|strval|trim fin=$_POST.fin|strval|trim label=$lbl lieu=$_POST.lieu|strval|trim description=$_POST.description|strval|trim date_debut=$_POST.date_debut|strval|trim date_fin=$_POST.date_fin|strval|trim type_recurrence=$_POST.type_recurrence|strval|trim semaine_du_mois=$_POST.semaine_du_mois|intval couleur=$_POST.couleur|strval|trim calendrier=$_POST.calendrier|strval|trim}} {{:redirect url="index.html"}} {{/if}} {{/if}} {{* ---------- Suppression d'une permanence ---------- *}} {{if $_POST.suppr_perm && $est_admin}} {{:delete id=$_POST.suppr_perm|intval}} {{:redirect url="index.html"}} {{/if}} {{* ---------- Suppression d'une seule occurrence (date) d'un rendez-vous régulier ---------- *}} {{if $_POST.suppr_occurrence && $est_admin}} {{:assign var="perm_id" value=$_POST.perm_id|intval}} {{:assign var="date_exclue" value=$_POST.date_exclue|strval|trim}} {{#load id=$perm_id}} {{:assign var="ov_jour" value=$jour}} {{:assign var="ov_debut" value=$debut}} {{:assign var="ov_fin" value=$fin}} {{:assign var="ov_label" value=$label}} {{:assign var="ov_date_debut" value=$date_debut}} {{:assign var="ov_date_fin" value=$date_fin}} {{:assign var="ov_type_recurrence" value=$type_recurrence}} {{:assign var="ov_semaine_du_mois" value=$semaine_du_mois}} {{:assign var="ov_couleur" value=$couleur}} {{:assign var="ov_lieu" value=$lieu}} {{:assign var="ov_description" value=$description}} {{:assign var="ov_calendrier" value=$calendrier}} {{#foreach from=$exceptions item="ex"}} {{:assign var="new_exceptions." value=$ex}} {{/foreach}} {{/load}} {{:assign var="new_exceptions." value=$date_exclue}} {{:save id=$perm_id type="permanence" jour=$ov_jour debut=$ov_debut fin=$ov_fin label=$ov_label lieu=$ov_lieu description=$ov_description date_debut=$ov_date_debut date_fin=$ov_date_fin type_recurrence=$ov_type_recurrence semaine_du_mois=$ov_semaine_du_mois couleur=$ov_couleur calendrier=$ov_calendrier exceptions=$new_exceptions}} {{:redirect url="index.html?an=%s&mois=%s"|args:$_POST.retour_an:$_POST.retour_mois}} {{/if}} {{* ---------- Mois affiché (par défaut : le mois en cours) ---------- *}} {{:assign var="an" value=$_GET.an|intval}} {{:assign var="mois" value=$_GET.mois|intval}} {{if $an < 1}}{{:assign var="an" value=$now|date:"Y"}}{{/if}} {{if $mois < 1 || $mois > 12}}{{:assign var="mois" value=$now|date:"n"}}{{/if}} {{:assign var="premier_du_mois" value="%04d-%02d-01"|args:$an:$mois}} {{:assign var="nb_jours" value=$premier_du_mois|date:"t"}} {{:assign var="dow_premier" value=$premier_du_mois|date:"N"}} {{:assign var="decalage" value="%d-1"|math:$dow_premier}} {{:assign var="nom_mois" value=$premier_du_mois|date:"F Y"}} {{:assign var="aujourdhui" value=$now|date:"Y-m-d"}} {{* ---------- Mois précédent / suivant ---------- *}} {{if $mois == 1}} {{:assign var="mois_prec" value=12}} {{:assign var="an_prec" value="%d-1"|math:$an}} {{else}} {{:assign var="mois_prec" value="%d-1"|math:$mois}} {{:assign var="an_prec" value=$an}} {{/if}} {{if $mois == 12}} {{:assign var="mois_suiv" value=1}} {{:assign var="an_suiv" value="%d+1"|math:$an}} {{else}} {{:assign var="mois_suiv" value="%d+1"|math:$mois}} {{:assign var="an_suiv" value=$an}} {{/if}} {{* ---------- Vue choisie : mois (défaut), semaine ou liste ---------- *}} {{if $_GET.nav != "conf"}} {{:assign var="vue" value=$_GET.vue|strval|trim}} {{if $vue != "semaine" && $vue != "liste"}}{{:assign var="vue" value="mois"}}{{/if}} {{/if}} {{* ---------- Gestion des calendriers (ajout / suppression, admin) ---------- *}} {{if $_POST.add_calendrier && $est_admin}} {{:assign var="nom_cal" value=$_POST.nom_calendrier|strval|trim}} {{if $nom_cal != ""}} {{:save type="calendrier" nom=$nom_cal}} {{:redirect url="index.html?nav=conf&conf=manage_cal&msg=ajout"}} {{/if}} {{/if}} {{if $_POST.suppr_calendrier && $est_admin}} {{:assign var="cal_a_suppr" value=$_POST.suppr_calendrier|strval|trim}} {{:assign var="where_reassign" value="$$.calendrier = '%s'"|args:$cal_a_suppr}} {{#load where=$where_reassign}} {{if $type == "event"}} {{:save id=$id type="event" titre=$titre date=$date debut=$debut fin=$fin lieu=$lieu description=$description lien=$lien lien1_label=$lien1_label lien1_url=$lien1_url lien2_label=$lien2_label lien2_url=$lien2_url lien3_label=$lien3_label lien3_url=$lien3_url couleur=$couleur calendrier=""}} {{elseif $type == "permanence"}} {{:save id=$id type="permanence" jour=$jour debut=$debut fin=$fin label=$label lieu=$lieu description=$description date_debut=$date_debut date_fin=$date_fin type_recurrence=$type_recurrence semaine_du_mois=$semaine_du_mois couleur=$couleur exceptions=$exceptions calendrier=""}} {{/if}} {{/load}} {{:delete id=$cal_a_suppr|intval}} {{:redirect url="index.html?nav=conf&conf=manage_cal&msg=suppression"}} {{/if}} {{* ---------- Liste des calendriers disponibles (Agenda + ceux ajoutés) ---------- *}} {{:assign var="calendriers_liste.agenda.id" value="agenda"}} {{:assign var="calendriers_liste.agenda.nom" value="Agenda"}} {{:assign var="calendriers_liste.agenda.par_defaut" value=true}} {{#load where="$$.type = 'calendrier'" order="$$.nom ASC"}} {{:assign var="calendriers_liste.%s.id"|args:$id value=$id}} {{:assign var="calendriers_liste.%s.nom"|args:$id value=$nom}} {{:assign var="calendriers_liste.%s.par_defaut"|args:$id value=false}} {{/load}} {{* ---------- Filtre calendrier (choisi via ?cal=..., "agenda" par défaut) ---------- *}} {{:assign var="cal_filtre" value=$_GET.cal|strval|trim}} {{:assign var="cal_filtre_valide" value=false}} {{if $cal_filtre == "tous"}}{{:assign var="cal_filtre_valide" value=true}}{{/if}} {{#foreach from=$calendriers_liste item="cd_check"}} {{if $cd_check.id == $cal_filtre}}{{:assign var="cal_filtre_valide" value=true}}{{/if}} {{/foreach}} {{if !$cal_filtre_valide}}{{:assign var="cal_filtre" value="agenda"}}{{/if}} {{:assign var="filtre_cal_sql" value=""}} {{if $cal_filtre == "agenda"}} {{:assign var="filtre_cal_sql" value=" AND ($$.calendrier = 'agenda' OR $$.calendrier IS NULL OR $$.calendrier = '')"}} {{elseif $cal_filtre != "tous"}} {{:assign var="filtre_cal_sql" value=" AND $$.calendrier = '%s'"|args:$cal_filtre}} {{/if}} {{* ---------- Nombre de rangées du mois affiché, et du mois précédent (pour la navigation par semaine) ---------- *}} {{:assign var="total_rows" value="ceil((%d+%d)/7)"|math:$nb_jours:$decalage}} {{:assign var="premier_du_mois_prec" value="%04d-%02d-01"|args:$an_prec:$mois_prec}} {{:assign var="nb_jours_prec" value=$premier_du_mois_prec|date:"t"}} {{:assign var="dow_premier_prec" value=$premier_du_mois_prec|date:"N"}} {{:assign var="decalage_prec" value="%d-1"|math:$dow_premier_prec}} {{:assign var="total_rows_prec" value="ceil((%d+%d)/7)"|math:$nb_jours_prec:$decalage_prec}} {{* ---------- Rangée sélectionnée pour la vue semaine (par défaut : celle contenant aujourd'hui) ---------- *}} {{:assign var="semaine_sel" value=$_GET.semaine_sel|intval}} {{if $semaine_sel < 1}} {{:assign var="jour_today_num" value=$aujourdhui|date:"j"}} {{if $an == $now|date:"Y" && $mois == $now|date:"n"}} {{:assign var="semaine_sel" value="ceil((%d+%d)/7)"|math:$jour_today_num:$decalage}} {{else}} {{:assign var="semaine_sel" value=1}} {{/if}} {{/if}} {{if $semaine_sel > $total_rows}}{{:assign var="semaine_sel" value=$total_rows}}{{/if}} {{* ---------- Purge automatique des événements passés et rendez-vous réguliers expirés ---------- *}} {{* FB : Ne Fonctionne pas : erreur "Database is locked" / perso ca m'arrrange de conserver les anciens RDV pour avoir une trace ;-)SS *}} {{:assign var="purge_faite" value=false}} {{:assign var="where_purge_evt" value="$$.type = 'event' AND $$.date < '%s'"|args:$aujourdhui}} {{#load where=$where_purge_evt}} {{*:delete id=$id*}} {{*:debug id=$id*}} {{:assign var="purge_faite" value=true}} {{/load}} {{:assign var="where_purge_perm" value="$$.type = 'permanence' AND $$.date_fin != '' AND $$.date_fin < '%s'"|args:$aujourdhui}} {{#load where=$where_purge_perm}} {{*:delete id=$id*}} {{*:debug id=$id*}} {{:assign var="purge_faite" value=true}} {{/load}} {{if $purge_faite}} {{* FB : provoque une redirection en boucle et un timeout *}} {{*:redirect url="index.html?vue=%s&an=%s&mois=%s&cal=%s"|args:$vue:$an:$mois:$cal_filtre*}} {{/if}} {{* ---------- Chargement des événements du mois affiché (pour la grille) ---------- *}} {{:assign var="date_fin_mois" value="%04d-%02d-%02d"|args:$an:$mois:$nb_jours}} {{:assign var="where_mois" value="$$.type = 'event' AND $$.date >= '%s' AND $$.date <= '%s'%s"|args:$premier_du_mois:$date_fin_mois:$filtre_cal_sql}} {{#load module="agenda" where=$where_mois order="$$.date ASC"}} {{:assign var="events_par_jour.%s.%s.titre"|args:$date:$id value=$titre}} {{:assign var="events_par_jour.%s.%s.id"|args:$date:$id value=$id}} {{:assign var="events_par_jour.%s.%s.debut"|args:$date:$id value=$debut}} {{:assign var="events_par_jour.%s.%s.fin"|args:$date:$id value=$fin}} {{:assign var="events_par_jour.%s.%s.couleur"|args:$date:$id value=$couleur}} {{:assign var="events_par_jour.%s.%s.lieu"|args:$date:$id value=$lieu}} {{:assign var="events_par_jour.%s.%s.description"|args:$date:$id value=$description}} {{:assign var="events_par_jour.%s.%s.lien"|args:$date:$id value=$lien}} {{:assign var="events_par_jour.%s.%s.lien1_label"|args:$date:$id value=$lien1_label}} {{:assign var="events_par_jour.%s.%s.lien1_url"|args:$date:$id value=$lien1_url}} {{:assign var="events_par_jour.%s.%s.lien2_label"|args:$date:$id value=$lien2_label}} {{:assign var="events_par_jour.%s.%s.lien2_url"|args:$date:$id value=$lien2_url}} {{:assign var="events_par_jour.%s.%s.lien3_label"|args:$date:$id value=$lien3_label}} {{:assign var="events_par_jour.%s.%s.lien3_url"|args:$date:$id value=$lien3_url}} {{/load}} {{* ---------- Préchargement des permanences (pour la grille, avec vérification date début/fin) ---------- *}} {{:assign var="where_perms" value="$$.type = 'permanence'%s"|args:$filtre_cal_sql}} {{#load module="agenda" where=$where_perms order="$$.jour ASC, $$.debut ASC"}} {{:assign var="perms_data.%s.id"|args:$id value=$id}} {{:assign var="perms_data.%s.jour"|args:$id value=$jour}} {{:assign var="perms_data.%s.label"|args:$id value=$label}} {{:assign var="perms_data.%s.lieu"|args:$id value=$lieu}} {{:assign var="perms_data.%s.description"|args:$id value=$description}} {{:assign var="perms_data.%s.debut"|args:$id value=$debut}} {{:assign var="perms_data.%s.fin"|args:$id value=$fin}} {{:assign var="perms_data.%s.date_debut"|args:$id value=$date_debut}} {{:assign var="perms_data.%s.date_fin"|args:$id value=$date_fin}} {{:assign var="perms_data.%s.type_recurrence"|args:$id value=$type_recurrence}} {{:assign var="perms_data.%s.semaine_du_mois"|args:$id value=$semaine_du_mois}} {{:assign var="perms_data.%s.exceptions"|args:$id value=$exceptions}} {{:assign var="perms_data.%s.couleur"|args:$id value=$couleur}} {{/load}} {{* ---------- Chargement des événements à venir (pour la liste) ---------- *}} {{:assign var="where_venir" value="$$.type = 'event' AND $$.date >= '%s'%s"|args:$aujourdhui:$filtre_cal_sql}} {{* ---------- Vue Liste uniquement : occurrences des rendez-vous réguliers sur les 3 prochains mois, fusionnées avec les événements ---------- *}} {{if $vue == "liste"}} {{#load module="agenda" where=$where_venir order="$$.date ASC"}} {{:assign var="cle_liste" value="%s_%s_evt%s"|args:$date:$debut:$id}} {{:assign var="liste_fusionnee.%s.date"|args:$cle_liste value=$date}} {{:assign var="liste_fusionnee.%s.debut"|args:$cle_liste value=$debut}} {{:assign var="liste_fusionnee.%s.fin"|args:$cle_liste value=$fin}} {{:assign var="liste_fusionnee.%s.label"|args:$cle_liste value=$titre}} {{:assign var="liste_fusionnee.%s.couleur"|args:$cle_liste value=$couleur|or:"#8c3a1e"}} {{:assign var="liste_fusionnee.%s.type"|args:$cle_liste value="Événement"}} {{:assign var="liste_fusionnee.%s.lien"|args:$cle_liste value=$lien}} {{:assign var="liste_fusionnee.%s.lien1_label"|args:$cle_liste value=$lien1_label}} {{:assign var="liste_fusionnee.%s.lien1_url"|args:$cle_liste value=$lien1_url}} {{:assign var="liste_fusionnee.%s.lien2_label"|args:$cle_liste value=$lien2_label}} {{:assign var="liste_fusionnee.%s.lien2_url"|args:$cle_liste value=$lien2_url}} {{:assign var="liste_fusionnee.%s.lien3_label"|args:$cle_liste value=$lien3_label}} {{:assign var="liste_fusionnee.%s.lien3_url"|args:$cle_liste value=$lien3_url}} {{/load}} {{* -- Mois 1 : le mois en cours -- *}} {{:assign var="an_m0" value=$now|date:"Y"}} {{:assign var="mois_m0" value=$now|date:"n"}} {{* -- Mois 2 : le mois suivant -- *}} {{if $mois_m0 == 12}}{{:assign var="mois_m1" value=1}}{{:assign var="an_m1" value="%d+1"|math:$an_m0}} {{else}}{{:assign var="mois_m1" value="%d+1"|math:$mois_m0}}{{:assign var="an_m1" value=$an_m0}}{{/if}} {{* -- Mois 3 : encore le mois suivant -- *}} {{if $mois_m1 == 12}}{{:assign var="mois_m2" value=1}}{{:assign var="an_m2" value="%d+1"|math:$an_m1}} {{else}}{{:assign var="mois_m2" value="%d+1"|math:$mois_m1}}{{:assign var="an_m2" value=$an_m1}}{{/if}} {{:assign var="jours_du_mois." value=1}}{{:assign var="jours_du_mois." value=2}}{{:assign var="jours_du_mois." value=3}}{{:assign var="jours_du_mois." value=4}}{{:assign var="jours_du_mois." value=5}}{{:assign var="jours_du_mois." value=6}}{{:assign var="jours_du_mois." value=7}}{{:assign var="jours_du_mois." value=8}}{{:assign var="jours_du_mois." value=9}}{{:assign var="jours_du_mois." value=10}} {{:assign var="jours_du_mois." value=11}}{{:assign var="jours_du_mois." value=12}}{{:assign var="jours_du_mois." value=13}}{{:assign var="jours_du_mois." value=14}}{{:assign var="jours_du_mois." value=15}}{{:assign var="jours_du_mois." value=16}}{{:assign var="jours_du_mois." value=17}}{{:assign var="jours_du_mois." value=18}}{{:assign var="jours_du_mois." value=19}}{{:assign var="jours_du_mois." value=20}} {{:assign var="jours_du_mois." value=21}}{{:assign var="jours_du_mois." value=22}}{{:assign var="jours_du_mois." value=23}}{{:assign var="jours_du_mois." value=24}}{{:assign var="jours_du_mois." value=25}}{{:assign var="jours_du_mois." value=26}}{{:assign var="jours_du_mois." value=27}}{{:assign var="jours_du_mois." value=28}}{{:assign var="jours_du_mois." value=29}}{{:assign var="jours_du_mois." value=30}} {{:assign var="jours_du_mois." value=31}} {{:assign var="mois_traite_an.0" value=$an_m0}}{{:assign var="mois_traite_mois.0" value=$mois_m0}} {{:assign var="mois_traite_an.1" value=$an_m1}}{{:assign var="mois_traite_mois.1" value=$mois_m1}} {{:assign var="mois_traite_an.2" value=$an_m2}}{{:assign var="mois_traite_mois.2" value=$mois_m2}} {{:assign var="idx_mois." value=0}} {{:assign var="idx_mois." value=1}} {{:assign var="idx_mois." value=2}} {{#foreach from=$idx_mois item="idx_m"}} {{:assign var="an_l2" from="mois_traite_an.%s"|args:$idx_m}} {{:assign var="mois_l2" from="mois_traite_mois.%s"|args:$idx_m}} {{:assign var="premier_l2" value="%04d-%02d-01"|args:$an_l2:$mois_l2}} {{:assign var="nb_jours_l2" value=$premier_l2|date:"t"}} {{#foreach from=$jours_du_mois item="jn"}} {{if $jn <= $nb_jours_l2}} {{:assign var="date_l2" value="%04d-%02d-%02d"|args:$an_l2:$mois_l2:$jn}} {{if $date_l2 >= $aujourdhui}} {{:assign var="dow_l2" value=$date_l2|date:"N"}} {{:assign var="occ_l2" value="floor((%d-1)/7)+1"|math:$jn}} {{:assign var="derniere_l2" value=false}} {{if "%d+7"|math:$jn > $nb_jours_l2}}{{:assign var="derniere_l2" value=true}}{{/if}} {{#foreach from=$perms_data item="pd"}} {{if $pd.jour == $dow_l2}} {{if $pd.date_debut == "" || $date_l2 >= $pd.date_debut}} {{if $pd.date_fin == "" || $date_l2 <= $pd.date_fin}} {{:assign var="excl_l2" value=false}} {{#foreach from=$pd.exceptions item="ex2"}} {{if $ex2 == $date_l2}}{{:assign var="excl_l2" value=true}}{{/if}} {{/foreach}} {{if !$excl_l2}} {{:assign var="ok_l2" value=false}} {{if $pd.type_recurrence == "mensuel"}} {{if $pd.semaine_du_mois == -1 && $derniere_l2}}{{:assign var="ok_l2" value=true}}{{/if}} {{if $pd.semaine_du_mois == $occ_l2}}{{:assign var="ok_l2" value=true}}{{/if}} {{elseif $pd.type_recurrence == "quinzaine"}} {{if $pd.date_debut != ""}} {{:assign var="ref_sem_q2" value=$pd.date_debut|date:"W"|intval}} {{:assign var="cell_sem_q2" value=$date_l2|date:"W"|intval}} {{:assign var="diff_sem_q2" value="(%d-%d) %% 2"|math:$cell_sem_q2:$ref_sem_q2}} {{if $diff_sem_q2 == 0}}{{:assign var="ok_l2" value=true}}{{/if}} {{/if}} {{else}} {{:assign var="ok_l2" value=true}} {{/if}} {{if $ok_l2}} {{:assign var="cle_liste2" value="%s_%s_perm%s"|args:$date_l2:$pd.debut:$pd.id}} {{:assign var="liste_fusionnee.%s.date"|args:$cle_liste2 value=$date_l2}} {{:assign var="liste_fusionnee.%s.debut"|args:$cle_liste2 value=$pd.debut}} {{:assign var="liste_fusionnee.%s.fin"|args:$cle_liste2 value=$pd.fin}} {{:assign var="liste_fusionnee.%s.label"|args:$cle_liste2 value=$pd.label}} {{:assign var="liste_fusionnee.%s.couleur"|args:$cle_liste2 value=$pd.couleur|or:"#4c7a2e"}} {{:assign var="liste_fusionnee.%s.type"|args:$cle_liste2 value="Rendez-vous régulier"}} {{/if}} {{/if}} {{/if}} {{/if}} {{/if}} {{/foreach}} {{/if}} {{/if}} {{/foreach}} {{/foreach}} {{:assign var="liste_triee" value=$liste_fusionnee|ksort|values}} {{/if}} {{* ---------- Noms des jours ---------- *}} {{:assign var="noms_jours." value=""}} {{:assign var="noms_jours." value="Lundi"}} {{:assign var="noms_jours." value="Mardi"}} {{:assign var="noms_jours." value="Mercredi"}} {{:assign var="noms_jours." value="Jeudi"}} {{:assign var="noms_jours." value="Vendredi"}} {{:assign var="noms_jours." value="Samedi"}} {{:assign var="noms_jours." value="Dimanche"}} {{* ---------- Événement / permanence en cours de modification ---------- *}} {{:assign var="edit_event" value=$_GET.edit_event|intval}} {{if $edit_event}} {{#load id=$edit_event assign="event"}} {{:assign var="ee_titre" value=$titre}} {{:assign var="ee_date" value=$date}} {{:assign var="ee_debut" value=$debut}} {{:assign var="ee_fin" value=$fin}} {{:assign var="ee_lieu" value=$lieu}} {{:assign var="ee_description" value=$description}} {{:assign var="ee_lien1_label" value=$lien1_label}} {{:assign var="ee_lien1_url" value=$lien1_url}} {{:assign var="ee_lien2_label" value=$lien2_label}} {{:assign var="ee_lien2_url" value=$lien2_url}} {{:assign var="ee_lien3_label" value=$lien3_label}} {{:assign var="ee_lien3_url" value=$lien3_url}} {{if $ee_lien1_url == "" && $ee_lien2_url == "" && $ee_lien3_url == "" && $lien != ""}} {{:assign var="ee_lien1_url" value=$lien}} {{/if}} {{:assign var="ee_couleur" value=$couleur}} {{:assign var="ee_calendrier" value=$calendrier}} {{/load}} {{/if}} {{:assign var="edit_perm" value=$_GET.edit_perm|intval}} {{if $edit_perm}} {{#load id=$edit_perm assign="perm"}} {{:assign var="ep_jour" value=$jour}} {{:assign var="ep_debut" value=$debut}} {{:assign var="ep_fin" value=$fin}} {{:assign var="ep_label" value=$label}} {{:assign var="ep_lieu" value=$lieu}} {{:assign var="ep_description" value=$description}} {{:assign var="ep_date_debut" value=$date_debut}} {{:assign var="ep_date_fin" value=$date_fin}} {{:assign var="ep_type_recurrence" value=$type_recurrence}} {{:assign var="ep_semaine_du_mois" value=$semaine_du_mois}} {{:assign var="ep_couleur" value=$couleur}} {{:assign var="ep_calendrier" value=$calendrier}} {{/load}} {{/if}} {{* Agenda — {{$config.org_name}} *}} {{* Si edition ou suppression d'évenements ou RDV *}} {{if $est_admin==true}} {{if $_GET.edit_event > 0}} {{:assign _nav="conf"}} {{:assign _conf="manage_eve"}} {{elseif $_GET.edit_perm > 0}} {{:assign _nav="conf"}} {{:assign _conf="manage_app"}} {{else}} {{:assign _nav=$_GET.nav}} {{:assign _conf=$_GET.conf}} {{/if}} {{/if}} {{* Navigation *}} {{if $_nav == "conf"}} {{if !$_conf}} {{:include file="_nav.html" current="config" subcurrent="manage_cal"}} {{:assign _conf="manage_cal"}} {{else}} {{:include file="_nav.html" current="config" subcurrent="%s"|args:$_conf}} {{:assign _conf=$_conf}} {{/if}} {{:include file="_config.html" subconf=$_conf}} {{else}} {{:include file="_nav.html" current="agenda" subcurrent="%s"|args:$vue vue=$vue an=$an mois=$mois cal=$cal_filtre}} {{/if}}
{{* FB : Retour vers l'admin du site si admin {{if $est_admin}}

← Retour au site

{{else}}

← Retour au site

{{/if}}

Agenda{{if $est_admin}}mode admin{{/if}}

*}} {{* *}} {{if $vue == "mois" || $vue == "semaine"}} {{:include file="_calendar.html" vue=$vue}} {{elseif $vue == "liste"}} {{:include file="_appointments_list.html" vue=$vue}} {{:include file="_events_list.html" vue=$vue}} {{/if}} {{* CALENDAR {{if $vue != "liste"}}

Calendrier ({{$cal_filtre}})

{{if $vue == "mois"}} {{else}} {{/if}}
{{:assign var="cellules." value=1}}{{:assign var="cellules." value=2}}{{:assign var="cellules." value=3}}{{:assign var="cellules." value=4}}{{:assign var="cellules." value=5}}{{:assign var="cellules." value=6}}{{:assign var="cellules." value=7}}{{:assign var="cellules." value=8}}{{:assign var="cellules." value=9}}{{:assign var="cellules." value=10}} {{:assign var="cellules." value=11}}{{:assign var="cellules." value=12}}{{:assign var="cellules." value=13}}{{:assign var="cellules." value=14}}{{:assign var="cellules." value=15}}{{:assign var="cellules." value=16}}{{:assign var="cellules." value=17}}{{:assign var="cellules." value=18}}{{:assign var="cellules." value=19}}{{:assign var="cellules." value=20}} {{:assign var="cellules." value=21}}{{:assign var="cellules." value=22}}{{:assign var="cellules." value=23}}{{:assign var="cellules." value=24}}{{:assign var="cellules." value=25}}{{:assign var="cellules." value=26}}{{:assign var="cellules." value=27}}{{:assign var="cellules." value=28}}{{:assign var="cellules." value=29}}{{:assign var="cellules." value=30}} {{:assign var="cellules." value=31}}{{:assign var="cellules." value=32}}{{:assign var="cellules." value=33}}{{:assign var="cellules." value=34}}{{:assign var="cellules." value=35}}{{:assign var="cellules." value=36}}{{:assign var="cellules." value=37}}{{:assign var="cellules." value=38}}{{:assign var="cellules." value=39}}{{:assign var="cellules." value=40}} {{:assign var="cellules." value=41}}{{:assign var="cellules." value=42}} {{#foreach from=$cellules item="n"}} {{:assign var="rangee_n" value="floor((%d-1)/7)+1"|math:$n}} {{if $vue == "mois" || $rangee_n == $semaine_sel}} {{:assign var="jour_num" value="%d-%d"|math:$n:$decalage}} {{if $jour_num >= 1 && $jour_num <= $nb_jours}} {{:assign var="date_cellule" value="%04d-%02d-%02d"|args:$an:$mois:$jour_num}} {{:assign var="dow_cellule" value=$date_cellule|date:"N"}} {{:assign var="occurrence_mois" value="floor((%d-1)/7)+1"|math:$jour_num}} {{:assign var="est_derniere_occurrence" value=false}} {{if "%d+7"|math:$jour_num > $nb_jours}}{{:assign var="est_derniere_occurrence" value=true}}{{/if}} {{:assign var="evts_ce_jour" from="events_par_jour.%s"|args:$date_cellule}} {{:assign var="badges_jour" value=""}} {{#foreach from=$perms_data item="pd"}} {{if $pd.jour == $dow_cellule}} {{if $pd.date_debut == "" || $date_cellule >= $pd.date_debut}} {{if $pd.date_fin == "" || $date_cellule <= $pd.date_fin}} {{:assign var="est_exclue" value=false}} {{#foreach from=$pd.exceptions item="ex"}} {{if $ex == $date_cellule}}{{:assign var="est_exclue" value=true}}{{/if}} {{/foreach}} {{if !$est_exclue}} {{:assign var="afficher_badge" value=false}} {{if $pd.type_recurrence == "mensuel"}} {{if $pd.semaine_du_mois == -1 && $est_derniere_occurrence}}{{:assign var="afficher_badge" value=true}}{{/if}} {{if $pd.semaine_du_mois == $occurrence_mois}}{{:assign var="afficher_badge" value=true}}{{/if}} {{elseif $pd.type_recurrence == "quinzaine"}} {{if $pd.date_debut != ""}} {{:assign var="ref_sem_q" value=$pd.date_debut|date:"W"|intval}} {{:assign var="cell_sem_q" value=$date_cellule|date:"W"|intval}} {{:assign var="diff_sem_q" value="(%d-%d) %% 2"|math:$cell_sem_q:$ref_sem_q}} {{if $diff_sem_q == 0}}{{:assign var="afficher_badge" value=true}}{{/if}} {{/if}} {{else}} {{:assign var="afficher_badge" value=true}} {{/if}} {{if $afficher_badge}} {{:assign var="cle_b" value="%s_a_perm%s"|args:$pd.debut:$pd.id}} {{:assign var="badges_jour.%s.type"|args:$cle_b value="perm"}} {{:assign var="badges_jour.%s.debut"|args:$cle_b value=$pd.debut}} {{:assign var="badges_jour.%s.fin"|args:$cle_b value=$pd.fin}} {{:assign var="badges_jour.%s.label"|args:$cle_b value=$pd.label}} {{:assign var="badges_jour.%s.couleur"|args:$cle_b value=$pd.couleur|or:'#4c7a2e'}} {{:assign var="badges_jour.%s.pid"|args:$cle_b value=$pd.id}} {{:assign var="badges_jour.%s.lieu"|args:$cle_b value=$pd.lieu}} {{:assign var="badges_jour.%s.description"|args:$cle_b value=$pd.description}} {{/if}} {{/if}} {{/if}} {{/if}} {{/if}} {{/foreach}} {{if $evts_ce_jour}} {{#foreach from=$evts_ce_jour item="ev"}} {{:assign var="cle_b" value="%s_b_evt%s"|args:$ev.debut:$ev.id}} {{:assign var="badges_jour.%s.type"|args:$cle_b value="evt"}} {{:assign var="badges_jour.%s.id"|args:$cle_b value=$ev.id}} {{:assign var="badges_jour.%s.debut"|args:$cle_b value=$ev.debut}} {{:assign var="badges_jour.%s.fin"|args:$cle_b value=$ev.fin}} {{:assign var="badges_jour.%s.label"|args:$cle_b value=$ev.titre}} {{:assign var="badges_jour.%s.couleur"|args:$cle_b value=$ev.couleur|or:'#8c3a1e'}} {{:assign var="badges_jour.%s.lieu"|args:$cle_b value=$ev.lieu}} {{:assign var="badges_jour.%s.description"|args:$cle_b value=$ev.description}} {{:assign var="badges_jour.%s.lien"|args:$cle_b value=$ev.lien}} {{:assign var="badges_jour.%s.lien1_label"|args:$cle_b value=$ev.lien1_label}} {{:assign var="badges_jour.%s.lien1_url"|args:$cle_b value=$ev.lien1_url}} {{:assign var="badges_jour.%s.lien2_label"|args:$cle_b value=$ev.lien2_label}} {{:assign var="badges_jour.%s.lien2_url"|args:$cle_b value=$ev.lien2_url}} {{:assign var="badges_jour.%s.lien3_label"|args:$cle_b value=$ev.lien3_label}} {{:assign var="badges_jour.%s.lien3_url"|args:$cle_b value=$ev.lien3_url}} {{/foreach}} {{/if}} {{if $badges_jour}} {{:assign var="badges_tries" value=$badges_jour|ksort|values}} {{else}} {{:assign var="badges_tries" value=""}} {{/if}}
{{$jour_num}}
{{#foreach from=$badges_tries item="bj"}} {{if $bj.type == "perm"}}
{{if $bj.debut}}{{$bj.debut}}{{if $bj.fin}}–{{$bj.fin}}{{/if}} — {{/if}}{{$bj.label}}{{if $bj.lieu}}
📍 {{$bj.lieu}}{{/if}} {{if $bj.description}}
{{$bj.description}}
{{/if}}
{{if $est_admin}} ✎
{{/if}}
{{else}}
{{if $bj.debut}}{{$bj.debut}}{{if $bj.fin}}–{{$bj.fin}}{{/if}} — {{/if}}{{$bj.label}}{{if $bj.lieu}}
📍 {{$bj.lieu}}{{/if}} {{if $bj.description}}
{{$bj.description}}
{{/if}}
{{if $est_admin}} ✎
{{/if}}
{{/if}} {{/foreach}} {{else}}
{{/if}} {{/if}} {{if $vue == "mois" && "%d %% 7"|math:$n == 0 && $n != 42}}{{/if}} {{/foreach}}
LunMarMerJeuVenSamDim
{{/if}} *}} {{*if $est_admin}}

Gérer les calendriers

{{#foreach from=$calendriers_liste item="cd_gest"}} {{/foreach}}
Nom
{{$cd_gest.nom}}{{if $cd_gest.par_defaut}} (par défaut){{/if}} {{if !$cd_gest.par_defaut}}
{{/if}}

Supprimer un calendrier ne supprime pas les événements/rendez-vous qui y étaient rattachés — ils basculent simplement dans "Agenda" par défaut.

{{/if*}} {{*if $est_admin}}

Rendez-vous réguliers

{{:assign var="perm_trouve" value=false}}
{{if $est_admin}}{{/if}} {{#load where="$$.type = 'permanence'" order="$$.jour ASC, $$.debut ASC"}} {{:assign var="perm_trouve" value=true}} {{:assign var="nom_jour" from="noms_jours.%s"|args:$jour}} {{if $est_admin}} {{/if}} {{/load}}
RécurrenceJourHorairesDétailLieuCalendrierDepuis / jusqu'à
{{if $type_recurrence == "mensuel"}} {{if $semaine_du_mois == -1}}Dernier{{elseif $semaine_du_mois == 1}}1er{{else}}{{$semaine_du_mois}}e{{/if}} du mois {{elseif $type_recurrence == "quinzaine"}} Toutes les 2 semaines {{else}} Chaque semaine {{/if}} {{$nom_jour}} {{$debut}}{{if $fin}} — {{$fin}}{{/if}} {{$label}} {{if $lieu}}{{$lieu}}{{/if}} {{:assign var="cal_eff_tab" value=$calendrier}} {{if $cal_eff_tab == ""}}{{:assign var="cal_eff_tab" value="agenda"}}{{/if}} {{:assign var="nom_cal_tab" from="calendriers_liste.%s.nom"|args:$cal_eff_tab}} {{$nom_cal_tab}} {{if $date_debut}}à partir du {{$date_debut|date_short}}{{/if}}{{if $date_debut && $date_fin}}
{{/if}}{{if $date_fin}}jusqu'au {{$date_fin|date_short}}{{/if}}
✎
{{if !$perm_trouve}}

Aucun rendez-vous régulier enregistré.

{{/if}}
{{/if*}} {{*

{{if $vue == "liste"}}Calendrier en liste (3 prochains mois){{else}}Événements à venir{{/if}}

{{if $vue == "liste"}} {{:assign var="rien_trouve" value=true}} {{if $rien_trouve}}

Rien de prévu sur les 3 prochains mois.

{{/if}} {{else}} {{:assign var="event_trouve" value=false}} {{if !$event_trouve}}

Aucun événement à venir pour l'instant.

{{/if}} {{/if}}
*}} {{*if $est_admin}}

{{if $edit_event}}Modifier l'événement{{else}}Ajouter un événement{{/if}}

Liens (affiche, document, inscription… — jusqu'à 3, facultatifs)

{{if $edit_event}} Annuler {{else}} {{/if}}
{{/if*}} {{*if $est_admin}}

{{if $edit_perm}}Modifier ce rendez-vous régulier{{else}}Ajouter un rendez-vous régulier{{/if}}

Laissez ces deux dates vides pour un rendez-vous permanent, sans limite dans le temps. Pour "Toutes les 2 semaines", renseignez "Depuis le" avec la date du premier rendez-vous : c'est elle qui sert de point de départ pour calculer une semaine sur deux.

{{if $edit_perm}} Annuler {{else}} {{/if}}
{{/if*}}
{{* *}} {{if $est_admin==true}} {{:admin_footer}} {{/if}}