1021 lines
53 KiB
HTML
1021 lines
53 KiB
HTML
{{* =========================================================================
|
||
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é
|
||
<link rel='stylesheet' id='agenda-css' href='agenda.css' media='all'/>*}}
|
||
{{/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}}
|
||
{{*
|
||
<!DOCTYPE html>
|
||
<html lang="fr">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<title>Agenda — {{$config.org_name}}</title>
|
||
</style>
|
||
</head>
|
||
<body>*}}
|
||
|
||
{{* 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}}
|
||
|
||
<div class="wrap">
|
||
{{* FB : Retour vers l'admin du site si admin
|
||
{{if $est_admin}}
|
||
<p><a class="retour" href="/admin">← Retour au site</a></p>
|
||
{{else}}
|
||
<p><a class="retour" href="/">← Retour au site</a></p>
|
||
{{/if}}
|
||
<h1>Agenda{{if $est_admin}}<span class="badge-admin">mode admin</span>{{/if}}</h1>
|
||
*}}
|
||
{{*
|
||
<nav class="vue-tabs">
|
||
<a class="{{if $vue == "mois"}}current{{/if}}" href="index.html?vue=mois&an={{$an}}&mois={{$mois}}&cal={{$cal_filtre}}">Mois</a>
|
||
<a class="{{if $vue == "semaine"}}current{{/if}}" href="index.html?vue=semaine&an={{$an}}&mois={{$mois}}&cal={{$cal_filtre}}">Semaine</a>
|
||
<a class="{{if $vue == "liste"}}current{{/if}}" href="index.html?vue=liste&cal={{$cal_filtre}}">Liste</a>
|
||
</nav>
|
||
|
||
<nav class="vue-tabs cal-tabs">
|
||
<a class="{{if $cal_filtre == "tous"}}current{{/if}}" href="index.html?vue={{$vue}}&an={{$an}}&mois={{$mois}}&cal=tous">Tous les calendriers</a>
|
||
{{#foreach from=$calendriers_liste item="cd_tab"}}
|
||
<a class="{{if $cal_filtre == $cd_tab.id}}current{{/if}}" href="index.html?vue={{$vue}}&an={{$an}}&mois={{$mois}}&cal={{$cd_tab.id}}">{{$cd_tab.nom}}</a>
|
||
{{/foreach}}
|
||
</nav>
|
||
*}}
|
||
{{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"}}
|
||
<div class="card">
|
||
<h2>Calendrier ({{$cal_filtre}})</h2>
|
||
{{if $vue == "mois"}}
|
||
<div class="nav-mois">
|
||
<a href="index.html?vue=mois&an={{$an_prec}}&mois={{$mois_prec}}">←</a>
|
||
<span>{{$nom_mois}}</span>
|
||
<a href="index.html?vue=mois&an={{$an_suiv}}&mois={{$mois_suiv}}">→</a>
|
||
</div>
|
||
{{else}}
|
||
<div class="nav-mois">
|
||
{{if $semaine_sel <= 1}}
|
||
<a href="index.html?vue=semaine&an={{$an_prec}}&mois={{$mois_prec}}&semaine_sel={{$total_rows_prec}}">←</a>
|
||
{{else}}
|
||
<a href="index.html?vue=semaine&an={{$an}}&mois={{$mois}}&semaine_sel={{"%d-1"|math:$semaine_sel}}">←</a>
|
||
{{/if}}
|
||
<span>Semaine du {{$nom_mois}}</span>
|
||
{{if $semaine_sel >= $total_rows}}
|
||
<a href="index.html?vue=semaine&an={{$an_suiv}}&mois={{$mois_suiv}}&semaine_sel=1">→</a>
|
||
{{else}}
|
||
<a href="index.html?vue=semaine&an={{$an}}&mois={{$mois}}&semaine_sel={{"%d+1"|math:$semaine_sel}}">→</a>
|
||
{{/if}}
|
||
</div>
|
||
{{/if}}
|
||
<div class="scroll-cal">
|
||
<table class="calendrier">
|
||
<thead>
|
||
<tr><th>Lun</th><th>Mar</th><th>Mer</th><th>Jeu</th><th>Ven</th><th>Sam</th><th>Dim</th></tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
{{: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}}
|
||
<td{{if $date_cellule == $aujourdhui}} class="today"{{/if}}>
|
||
<div class="num">{{$jour_num}}</div>
|
||
{{#foreach from=$badges_tries item="bj"}}
|
||
{{if $bj.type == "perm"}}
|
||
<div class="perm-badge" style="background:{{$bj.couleur}};">
|
||
<div class="badge-content" onclick="ouvrirDetailEvt(this);" data-titre="{{$bj.label}}" data-horaire="{{if $bj.debut}}{{$bj.debut}}{{if $bj.fin}}–{{$bj.fin}}{{/if}}{{/if}}" data-lieu="{{$bj.lieu}}" data-description="{{$bj.description}}" data-lien1-label="" data-lien1-url="" data-lien2-label="" data-lien2-url="" data-lien3-label="" data-lien3-url="">
|
||
{{if $bj.debut}}{{$bj.debut}}{{if $bj.fin}}–{{$bj.fin}}{{/if}} — {{/if}}{{$bj.label}}{{if $bj.lieu}}<br /><a class="lieu-lien" href="https://www.openstreetmap.org/search?query={{$bj.lieu|url_encode}}" target="_blank" rel="noopener" onclick="event.stopPropagation();">📍 {{$bj.lieu}}</a>{{/if}}
|
||
{{if $bj.description}}<div class="evt-desc-apercu">{{$bj.description}}</div>{{/if}}
|
||
</div>
|
||
{{if $est_admin}}
|
||
<span class="badge-actions">
|
||
<a class="badge-edit" href="index.html?edit_perm={{$bj.pid}}#form-perm" title="Modifier" onclick="event.stopPropagation();">✎</a>
|
||
<form method="post" action="index.html?an={{$an}}&mois={{$mois}}" class="mini-form" onclick="event.stopPropagation();">
|
||
<input type="hidden" name="perm_id" value="{{$bj.pid}}" />
|
||
<input type="hidden" name="date_exclue" value="{{$date_cellule}}" />
|
||
<input type="hidden" name="retour_an" value="{{$an}}" />
|
||
<input type="hidden" name="retour_mois" value="{{$mois}}" />
|
||
<button type="submit" name="suppr_occurrence" value="1" class="mini-x" title="Supprimer seulement ce jour">✕</button>
|
||
</form>
|
||
</span>
|
||
{{/if}}
|
||
</div>
|
||
{{else}}
|
||
<div class="evt-badge" style="background:{{$bj.couleur}};">
|
||
<div class="badge-content" onclick="ouvrirDetailEvt(this);" data-titre="{{$bj.label}}" data-horaire="{{if $bj.debut}}{{$bj.debut}}{{if $bj.fin}}–{{$bj.fin}}{{/if}}{{/if}}" data-lieu="{{$bj.lieu}}" data-description="{{$bj.description}}" data-lien="{{$bj.lien}}" data-lien1-label="{{$bj.lien1_label}}" data-lien1-url="{{$bj.lien1_url}}" data-lien2-label="{{$bj.lien2_label}}" data-lien2-url="{{$bj.lien2_url}}" data-lien3-label="{{$bj.lien3_label}}" data-lien3-url="{{$bj.lien3_url}}">
|
||
{{if $bj.debut}}{{$bj.debut}}{{if $bj.fin}}–{{$bj.fin}}{{/if}} — {{/if}}{{$bj.label}}{{if $bj.lieu}}<br /><a class="lieu-lien" href="https://www.openstreetmap.org/search?query={{$bj.lieu|url_encode}}" target="_blank" rel="noopener" onclick="event.stopPropagation();">📍 {{$bj.lieu}}</a>{{/if}}
|
||
{{if $bj.description}}<div class="evt-desc-apercu">{{$bj.description}}</div>{{/if}}
|
||
</div>
|
||
{{if $est_admin}}
|
||
<span class="badge-actions">
|
||
<a class="badge-edit" href="index.html?edit_event={{$bj.id}}&an={{$an}}&mois={{$mois}}#form-event" title="Modifier" onclick="event.stopPropagation();">✎</a>
|
||
<form method="post" action="index.html?an={{$an}}&mois={{$mois}}" class="mini-form" onclick="event.stopPropagation();">
|
||
<input type="hidden" name="retour_an" value="{{$an}}" />
|
||
<input type="hidden" name="retour_mois" value="{{$mois}}" />
|
||
<button type="submit" name="suppr_event" value="{{$bj.id}}" class="mini-x" title="Supprimer">✕</button>
|
||
</form>
|
||
</span>
|
||
{{/if}}
|
||
</div>
|
||
{{/if}}
|
||
{{/foreach}}
|
||
</td>
|
||
{{else}}
|
||
<td class="vide"></td>
|
||
|
||
{{/if}}
|
||
{{/if}}
|
||
{{if $vue == "mois" && "%d %% 7"|math:$n == 0 && $n != 42}}</tr><tr>{{/if}}
|
||
{{/foreach}}
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
{{/if}}
|
||
*}}
|
||
|
||
{{*if $est_admin}}
|
||
<div class="card">
|
||
<h2>Gérer les calendriers</h2>
|
||
<table class="permanences">
|
||
<thead><tr><th>Nom</th><th></th></tr></thead>
|
||
<tbody>
|
||
{{#foreach from=$calendriers_liste item="cd_gest"}}
|
||
<tr>
|
||
<td>{{$cd_gest.nom}}{{if $cd_gest.par_defaut}} <small style="color:#999;">(par défaut)</small>{{/if}}</td>
|
||
<td>
|
||
{{if !$cd_gest.par_defaut}}
|
||
<form method="post" action="index.html" style="display:inline">
|
||
<button type="submit" name="suppr_calendrier" value="{{$cd_gest.id}}" class="mini" title="Supprimer ce calendrier">✕ Supprimer</button>
|
||
</form>
|
||
{{/if}}
|
||
</td>
|
||
</tr>
|
||
{{/foreach}}
|
||
</tbody>
|
||
</table>
|
||
<form method="post" action="index.html" class="ajout" style="margin-top:.8rem;">
|
||
<div class="champ" style="flex:2; min-width:14rem;"><label>Nouveau calendrier</label><input type="text" name="nom_calendrier" placeholder="ex. Réunions" required="required" /></div>
|
||
<button type="submit" name="add_calendrier" value="1">Ajouter</button>
|
||
</form>
|
||
<p class="aide" style="color:#777; font-size:.85rem; margin:.6rem 0 0;">Supprimer un calendrier ne supprime pas les événements/rendez-vous qui y étaient rattachés — ils basculent simplement dans "Agenda" par défaut.</p>
|
||
</div>
|
||
{{/if*}}
|
||
|
||
{{*if $est_admin}}
|
||
<div class="card card-perm">
|
||
<h2>Rendez-vous réguliers</h2>
|
||
{{:assign var="perm_trouve" value=false}}
|
||
<div class="scroll-cal">
|
||
<table class="permanences">
|
||
<thead><tr><th>Récurrence</th><th>Jour</th><th>Horaires</th><th>Détail</th><th>Lieu</th><th>Calendrier</th><th>Depuis / jusqu'à</th>{{if $est_admin}}<th></th>{{/if}}</tr></thead>
|
||
<tbody>
|
||
{{#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}}
|
||
<tr>
|
||
<td>
|
||
{{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}}
|
||
</td>
|
||
<td>{{$nom_jour}}</td>
|
||
<td>{{$debut}}{{if $fin}} — {{$fin}}{{/if}}</td>
|
||
<td>{{$label}}</td>
|
||
<td>{{if $lieu}}<a class="lieu-lien" href="https://www.openstreetmap.org/search?query={{$lieu|url_encode}}" target="_blank" rel="noopener">{{$lieu}}</a>{{/if}}</td>
|
||
<td>
|
||
{{: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}}
|
||
</td>
|
||
<td>{{if $date_debut}}à partir du {{$date_debut|date_short}}{{/if}}{{if $date_debut && $date_fin}}<br />{{/if}}{{if $date_fin}}jusqu'au {{$date_fin|date_short}}{{/if}}</td>
|
||
{{if $est_admin}}
|
||
<td>
|
||
<a class="mini" href="index.html?edit_perm={{$id}}#form-perm" title="Modifier">✎</a>
|
||
<form method="post" action="index.html" style="display:inline">
|
||
<button type="submit" name="suppr_perm" value="{{$id}}" class="mini" title="Supprimer">✕</button>
|
||
</form>
|
||
</td>
|
||
{{/if}}
|
||
</tr>
|
||
{{/load}}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
{{if !$perm_trouve}}<p class="vide">Aucun rendez-vous régulier enregistré.</p>{{/if}}
|
||
</div>
|
||
{{/if*}}
|
||
|
||
{{*
|
||
<div class="card">
|
||
<h2>{{if $vue == "liste"}}Calendrier en liste (3 prochains mois){{else}}Événements à venir{{/if}}</h2>
|
||
{{if $vue == "liste"}}
|
||
{{:assign var="rien_trouve" value=true}}
|
||
<ul class="liste-evt">
|
||
{{#foreach from=$liste_triee item="it"}}
|
||
{{:assign var="rien_trouve" value=false}}
|
||
<li>
|
||
<span class="date-evt">{{$it.date|date_long}}{{if $it.debut}} — {{$it.debut}}{{if $it.fin}} à {{$it.fin}}{{/if}}{{/if}}</span>
|
||
<span class="titre-evt">
|
||
<span class="tag-type" style="background:{{$it.couleur}};">{{$it.type}}</span>
|
||
{{$it.label}}
|
||
{{if $it.lien1_url}}<br /><a class="lien-evt" href="{{$it.lien1_url}}" target="_blank" rel="noopener">{{$it.lien1_label|or:"Voir l'affiche / plus d'infos"}} →</a>{{/if}}
|
||
{{if $it.lien2_url}}<br /><a class="lien-evt" href="{{$it.lien2_url}}" target="_blank" rel="noopener">{{$it.lien2_label|or:"Voir l'affiche / plus d'infos"}} →</a>{{/if}}
|
||
{{if $it.lien3_url}}<br /><a class="lien-evt" href="{{$it.lien3_url}}" target="_blank" rel="noopener">{{$it.lien3_label|or:"Voir l'affiche / plus d'infos"}} →</a>{{/if}}
|
||
{{if !$it.lien1_url && !$it.lien2_url && !$it.lien3_url && $it.lien}}<br /><a class="lien-evt" href="{{$it.lien}}" target="_blank" rel="noopener">Voir l'affiche / plus d'infos →</a>{{/if}}
|
||
</span>
|
||
</li>
|
||
{{/foreach}}
|
||
</ul>
|
||
{{if $rien_trouve}}<p class="vide">Rien de prévu sur les 3 prochains mois.</p>{{/if}}
|
||
{{else}}
|
||
{{:assign var="event_trouve" value=false}}
|
||
<ul class="liste-evt">
|
||
{{#load where=$where_venir order="$$.date ASC"}}
|
||
{{:assign var="event_trouve" value=true}}
|
||
<li>
|
||
<span class="date-evt">{{$date|date_long}}{{if $debut}} — {{$debut}}{{if $fin}} à {{$fin}}{{/if}}{{/if}}</span>
|
||
<span class="titre-evt">{{$titre}}{{if $description}}<br /><small>{{$description}}</small>{{/if}}{{if $lien1_url}}<br /><a class="lien-evt" href="{{$lien1_url}}" target="_blank" rel="noopener">{{$lien1_label|or:"Voir l'affiche / plus d'infos"}} →</a>{{/if}}{{if $lien2_url}}<br /><a class="lien-evt" href="{{$lien2_url}}" target="_blank" rel="noopener">{{$lien2_label|or:"Voir l'affiche / plus d'infos"}} →</a>{{/if}}{{if $lien3_url}}<br /><a class="lien-evt" href="{{$lien3_url}}" target="_blank" rel="noopener">{{$lien3_label|or:"Voir l'affiche / plus d'infos"}} →</a>{{/if}}{{if !$lien1_url && !$lien2_url && !$lien3_url && $lien}}<br /><a class="lien-evt" href="{{$lien}}" target="_blank" rel="noopener">Voir l'affiche / plus d'infos →</a>{{/if}}</span>
|
||
{{if $lieu}}<span class="lieu-evt"><a href="https://www.openstreetmap.org/search?query={{$lieu|url_encode}}" target="_blank" rel="noopener">📍 {{$lieu}}</a></span>{{/if}}
|
||
{{if $est_admin}}
|
||
<span>
|
||
<a class="mini" href="index.html?edit_event={{$id}}&an={{$an}}&mois={{$mois}}#form-event" title="Modifier">✎</a>
|
||
<form method="post" action="index.html?an={{$an}}&mois={{$mois}}" style="display:inline">
|
||
<input type="hidden" name="retour_an" value="{{$an}}" />
|
||
<input type="hidden" name="retour_mois" value="{{$mois}}" />
|
||
<button type="submit" name="suppr_event" value="{{$id}}" class="mini" title="Supprimer">✕</button>
|
||
</form>
|
||
</span>
|
||
{{/if}}
|
||
</li>
|
||
{{/load}}
|
||
</ul>
|
||
{{if !$event_trouve}}<p class="vide">Aucun événement à venir pour l'instant.</p>{{/if}}
|
||
{{/if}}
|
||
</div>
|
||
*}}
|
||
|
||
{{*if $est_admin}}
|
||
<div class="card" id="form-event">
|
||
<h2>{{if $edit_event}}Modifier l'événement{{else}}Ajouter un événement{{/if}}</h2>
|
||
<form method="post" action="index.html?an={{$an}}&mois={{$mois}}">
|
||
<input type="hidden" name="retour_an" value="{{$an}}" />
|
||
<input type="hidden" name="retour_mois" value="{{$mois}}" />
|
||
<div class="ajout">
|
||
<div class="champ" style="flex:2; min-width:14rem;"><label>Titre</label><input type="text" name="titre" value="{{$ee_titre}}" required="required" /></div>
|
||
<div class="champ"><label>Date</label><input type="date" name="date" value="{{$ee_date}}" required="required" /></div>
|
||
<div class="champ"><label>De</label><input type="time" name="debut" value="{{$ee_debut}}" /></div>
|
||
<div class="champ"><label>À</label><input type="time" name="fin" value="{{$ee_fin}}" /></div>
|
||
<div class="champ" style="flex:1; min-width:10rem;"><label>Lieu</label><input type="text" name="lieu" value="{{$ee_lieu}}" /></div>
|
||
<div class="champ" style="flex:0 0 5rem;"><label>Couleur</label><input type="color" name="couleur" value="{{$ee_couleur|or:'#8c3a1e'}}" style="height:2.4rem; padding:.2rem;" /></div>
|
||
<div class="champ" style="flex:0 0 10rem;">
|
||
<label>Calendrier</label>
|
||
<select name="calendrier">
|
||
{{:assign var="ee_cal_eff" value=$ee_calendrier}}
|
||
{{if $ee_cal_eff == ""}}{{:assign var="ee_cal_eff" value="agenda"}}{{/if}}
|
||
{{#foreach from=$calendriers_liste item="cd_opt"}}
|
||
<option value="{{$cd_opt.id}}" {{if $cd_opt.id == $ee_cal_eff}}selected="selected"{{/if}}>{{$cd_opt.nom}}</option>
|
||
{{/foreach}}
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<p><label>Description (facultatif)</label><textarea name="description" rows="2">{{$ee_description}}</textarea></p>
|
||
<p style="margin:.8rem 0 .3rem; font-size:.85rem; color:#666;">Liens (affiche, document, inscription… — jusqu'à 3, facultatifs)</p>
|
||
<div class="ajout">
|
||
<div class="champ" style="flex:1; min-width:10rem;"><label>Lien 1 — libellé</label><input type="text" name="lien1_label" value="{{$ee_lien1_label}}" placeholder="ex. Affiche" /></div>
|
||
<div class="champ" style="flex:2; min-width:14rem;"><label>Lien 1 — URL</label><input type="url" name="lien1_url" value="{{$ee_lien1_url}}" placeholder="https://…" /></div>
|
||
</div>
|
||
<div class="ajout">
|
||
<div class="champ" style="flex:1; min-width:10rem;"><label>Lien 2 — libellé</label><input type="text" name="lien2_label" value="{{$ee_lien2_label}}" placeholder="ex. Programme" /></div>
|
||
<div class="champ" style="flex:2; min-width:14rem;"><label>Lien 2 — URL</label><input type="url" name="lien2_url" value="{{$ee_lien2_url}}" placeholder="https://…" /></div>
|
||
</div>
|
||
<div class="ajout">
|
||
<div class="champ" style="flex:1; min-width:10rem;"><label>Lien 3 — libellé</label><input type="text" name="lien3_label" value="{{$ee_lien3_label}}" placeholder="ex. Inscription" /></div>
|
||
<div class="champ" style="flex:2; min-width:14rem;"><label>Lien 3 — URL</label><input type="url" name="lien3_url" value="{{$ee_lien3_url}}" placeholder="https://…" /></div>
|
||
</div>
|
||
{{if $edit_event}}
|
||
<button type="submit" name="rename_event" value="{{$edit_event}}">Enregistrer les modifications</button>
|
||
<a class="retour" href="index.html?an={{$an}}&mois={{$mois}}">Annuler</a>
|
||
{{else}}
|
||
<button type="submit" name="add_event" value="1">Ajouter l'événement</button>
|
||
{{/if}}
|
||
</form>
|
||
</div>
|
||
{{/if*}}
|
||
|
||
{{*if $est_admin}}
|
||
<div class="card" id="form-perm">
|
||
<h2>{{if $edit_perm}}Modifier ce rendez-vous régulier{{else}}Ajouter un rendez-vous régulier{{/if}}</h2>
|
||
<form method="post" action="index.html">
|
||
<div class="ajout">
|
||
<div class="champ">
|
||
<label>Récurrence</label>
|
||
<select name="type_recurrence">
|
||
<option value="hebdomadaire" {{if $ep_type_recurrence != "mensuel" && $ep_type_recurrence != "quinzaine"}}selected="selected"{{/if}}>Chaque semaine</option>
|
||
<option value="quinzaine" {{if $ep_type_recurrence == "quinzaine"}}selected="selected"{{/if}}>Toutes les 2 semaines</option>
|
||
<option value="mensuel" {{if $ep_type_recurrence == "mensuel"}}selected="selected"{{/if}}>Un jour précis du mois</option>
|
||
</select>
|
||
</div>
|
||
<div class="champ">
|
||
<label>Jour</label>
|
||
<select name="jour">
|
||
<option value="1" {{if $ep_jour == 1}}selected="selected"{{/if}}>Lundi</option>
|
||
<option value="2" {{if $ep_jour == 2}}selected="selected"{{/if}}>Mardi</option>
|
||
<option value="3" {{if $ep_jour == 3}}selected="selected"{{/if}}>Mercredi</option>
|
||
<option value="4" {{if $ep_jour == 4}}selected="selected"{{/if}}>Jeudi</option>
|
||
<option value="5" {{if $ep_jour == 5}}selected="selected"{{/if}}>Vendredi</option>
|
||
<option value="6" {{if $ep_jour == 6}}selected="selected"{{/if}}>Samedi</option>
|
||
<option value="7" {{if $ep_jour == 7}}selected="selected"{{/if}}>Dimanche</option>
|
||
</select>
|
||
</div>
|
||
<div class="champ">
|
||
<label>Quel(le) — si "un jour précis du mois"</label>
|
||
<select name="semaine_du_mois">
|
||
<option value="1" {{if $ep_semaine_du_mois == 1}}selected="selected"{{/if}}>1er</option>
|
||
<option value="2" {{if $ep_semaine_du_mois == 2}}selected="selected"{{/if}}>2e</option>
|
||
<option value="3" {{if $ep_semaine_du_mois == 3}}selected="selected"{{/if}}>3e</option>
|
||
<option value="4" {{if $ep_semaine_du_mois == 4}}selected="selected"{{/if}}>4e</option>
|
||
<option value="-1" {{if $ep_semaine_du_mois == -1}}selected="selected"{{/if}}>Dernier</option>
|
||
</select>
|
||
</div>
|
||
<div class="champ"><label>De</label><input type="time" name="debut" value="{{$ep_debut}}" /></div>
|
||
<div class="champ"><label>À</label><input type="time" name="fin" value="{{$ep_fin}}" /></div>
|
||
<div class="champ" style="flex:2; min-width:14rem;"><label>Détail</label><input type="text" name="label" value="{{$ep_label}}" placeholder="ex. Ouvert aux adhérents" required="required" /></div>
|
||
<div class="champ" style="flex:1; min-width:10rem;"><label>Lieu (facultatif)</label><input type="text" name="lieu" value="{{$ep_lieu}}" placeholder="ex. Local associatif" /></div>
|
||
<div class="champ"><label>Depuis le (facultatif)</label><input type="date" name="date_debut" value="{{$ep_date_debut}}" /></div>
|
||
<div class="champ"><label>Jusqu'au (facultatif)</label><input type="date" name="date_fin" value="{{$ep_date_fin}}" /></div>
|
||
<div class="champ" style="flex:0 0 5rem;"><label>Couleur</label><input type="color" name="couleur" value="{{$ep_couleur|or:'#4c7a2e'}}" style="height:2.4rem; padding:.2rem;" /></div>
|
||
<div class="champ" style="flex:0 0 10rem;">
|
||
<label>Calendrier</label>
|
||
<select name="calendrier">
|
||
{{:assign var="ep_cal_eff" value=$ep_calendrier}}
|
||
{{if $ep_cal_eff == ""}}{{:assign var="ep_cal_eff" value="agenda"}}{{/if}}
|
||
{{#foreach from=$calendriers_liste item="cd_opt2"}}
|
||
<option value="{{$cd_opt2.id}}" {{if $cd_opt2.id == $ep_cal_eff}}selected="selected"{{/if}}>{{$cd_opt2.nom}}</option>
|
||
{{/foreach}}
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<p><label>Description (facultatif)</label><textarea name="description" rows="2">{{$ep_description}}</textarea></p>
|
||
<p class="aide" style="color:#777; font-size:.85rem; margin:.4rem 0 0;">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.</p>
|
||
{{if $edit_perm}}
|
||
<button type="submit" name="rename_perm" value="{{$edit_perm}}">Enregistrer</button>
|
||
<a class="retour" href="index.html">Annuler</a>
|
||
{{else}}
|
||
<button type="submit" name="add_perm" value="1">Ajouter</button>
|
||
{{/if}}
|
||
</form>
|
||
</div>
|
||
{{/if*}}
|
||
|
||
</div>
|
||
|
||
<div class="modal-overlay" id="modalDetailEvt" onclick="if(event.target===this){fermerDetailEvt();}">
|
||
<div class="modal-box" role="dialog" aria-modal="true" aria-labelledby="modalDetailTitre">
|
||
<button type="button" class="modal-close" onclick="fermerDetailEvt();" aria-label="Fermer">×</button>
|
||
<h3 id="modalDetailTitre"></h3>
|
||
<p class="modal-meta" id="modalDetailHoraire"></p>
|
||
<p class="modal-meta" id="modalDetailLieu"></p>
|
||
<p class="modal-description" id="modalDetailDescription"></p>
|
||
<div class="modal-liens" id="modalDetailLiens"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<script type="text/javascript">
|
||
function echapperHtml(str) {
|
||
return str.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/'/g,''');
|
||
}
|
||
function lienifier(str) {
|
||
return echapperHtml(str).replace(/(https?:\/\/[^\s<]+)/g, function(url) {
|
||
var suffixe = '';
|
||
var m = url.match(/[.,;:!?)]+$/);
|
||
if (m) { suffixe = m[0]; url = url.slice(0, -suffixe.length); }
|
||
return '<a href="' + url + '" target="_blank" rel="noopener">' + url + '</a>' + suffixe;
|
||
});
|
||
}
|
||
function ouvrirDetailEvt(el) {
|
||
document.getElementById('modalDetailTitre').textContent = el.getAttribute('data-titre') || '';
|
||
var horaire = el.getAttribute('data-horaire') || '';
|
||
var elH = document.getElementById('modalDetailHoraire');
|
||
elH.textContent = horaire;
|
||
elH.style.display = horaire ? '' : 'none';
|
||
var lieu = el.getAttribute('data-lieu') || '';
|
||
var elL = document.getElementById('modalDetailLieu');
|
||
if (lieu) {
|
||
elL.innerHTML = '<a href="https://www.openstreetmap.org/search?query=' + encodeURIComponent(lieu) + '" target="_blank" rel="noopener">📍 ' + echapperHtml(lieu) + '</a>';
|
||
elL.style.display = '';
|
||
} else {
|
||
elL.style.display = 'none';
|
||
}
|
||
var desc = el.getAttribute('data-description') || '';
|
||
var elD = document.getElementById('modalDetailDescription');
|
||
elD.innerHTML = lienifier(desc);
|
||
elD.style.display = desc ? '' : 'none';
|
||
var conteneurLiens = document.getElementById('modalDetailLiens');
|
||
conteneurLiens.innerHTML = '';
|
||
var liens = [];
|
||
for (var i = 1; i <= 3; i++) {
|
||
var url = el.getAttribute('data-lien' + i + '-url') || '';
|
||
if (url) {
|
||
var label = el.getAttribute('data-lien' + i + '-label') || '';
|
||
liens.push({ label: label || "Voir l'affiche / plus d'infos", url: url });
|
||
}
|
||
}
|
||
if (liens.length === 0) {
|
||
var lienHerite = el.getAttribute('data-lien') || '';
|
||
if (lienHerite) { liens.push({ label: "Voir l'affiche / plus d'infos", url: lienHerite }); }
|
||
}
|
||
liens.forEach(function(l) {
|
||
var a = document.createElement('a');
|
||
a.href = l.url;
|
||
a.target = '_blank';
|
||
a.rel = 'noopener';
|
||
a.textContent = l.label + ' →';
|
||
conteneurLiens.appendChild(a);
|
||
});
|
||
document.getElementById('modalDetailEvt').classList.add('open');
|
||
}
|
||
function fermerDetailEvt() {
|
||
document.getElementById('modalDetailEvt').classList.remove('open');
|
||
}
|
||
document.addEventListener('keydown', function(e) { if (e.key === 'Escape') { fermerDetailEvt(); } });
|
||
</script>
|
||
{{*</body>
|
||
</html>
|
||
*}}
|
||
{{if $est_admin==true}}
|
||
{{:admin_footer}}
|
||
{{/if}} |