Améliorations diverses : plusieurs calendriers avec mode d'accès (catégorie) et couleurs
This commit is contained in:
1 parent
76df5b8ad5
commit
efa2b448ff
14 files changed
+509
-858
No files matched your search
@@ -21,4 +21,4 @@ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|||||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
OTHER DEALINGS IN THE SOFTWARE.
|
OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
For more information, please refer to <https://unlicense.org/>
|
For more information, please refer to <https://unlicense.org/>
|
||||||
@@ -3,13 +3,15 @@
|
|||||||
Module Agenda associatif pour le logiciel Paheko
|
Module Agenda associatif pour le logiciel Paheko
|
||||||
|
|
||||||
## Fonctionnalités
|
## Fonctionnalités
|
||||||
+ Calendrier mensuel/semaine/liste,
|
+ gestion de plusieurs calendriers (couleurs et catégorie),
|
||||||
|
+ catégorie : accès public, membres, administrateurs
|
||||||
|
+ vues : mensuel/semaine/liste,
|
||||||
+ rendez-vous réguliers récurrents (avec exceptions et couleurs),
|
+ rendez-vous réguliers récurrents (avec exceptions et couleurs),
|
||||||
+ événements ponctuels,
|
+ événements ponctuels,
|
||||||
+ purge et tri automatiques.
|
+ purge et tri automatiques.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
Via module dans Paheko
|
Via import module dans Paheko
|
||||||
|
|
||||||
## License
|
## License
|
||||||
Libre de tout droit
|
Libre de tout droit
|
||||||
+158
-140
@@ -1,6 +1,6 @@
|
|||||||
{{if $vue != "liste"}}
|
{{if $vue != "liste"}}
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h2>Calendrier ({{$cal_filtre}})</h2>
|
<h2 style="background:hsl({{$selected_calendar_couleur}},100%,50%)">Calendrier ({{$selected_calendar_name}})</h2>
|
||||||
{{if $vue == "mois"}}
|
{{if $vue == "mois"}}
|
||||||
<div class="nav-mois">
|
<div class="nav-mois">
|
||||||
<a href="{{$_url}}?vue=mois&an={{$an_prec}}&mois={{$mois_prec}}">←</a>
|
<a href="{{$_url}}?vue=mois&an={{$an_prec}}&mois={{$mois_prec}}">←</a>
|
||||||
@@ -21,151 +21,169 @@
|
|||||||
<a href="{{$_url}}?vue=semaine&an={{$an}}&mois={{$mois}}&semaine_sel={{"%d+1"|math:$semaine_sel}}">→</a>
|
<a href="{{$_url}}?vue=semaine&an={{$an}}&mois={{$mois}}&semaine_sel={{"%d+1"|math:$semaine_sel}}">→</a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<div class="scroll-cal">
|
<div class="scroll-cal">
|
||||||
<table class="calendrier">
|
<table class="calendrier">
|
||||||
<thead>
|
<thead>
|
||||||
<tr><th>Lun</th><th>Mar</th><th>Mer</th><th>Jeu</th><th>Ven</th><th>Sam</th><th>Dim</th></tr>
|
<tr><th>Lun</th><th>Mar</th><th>Mer</th><th>Jeu</th><th>Ven</th><th>Sam</th><th>Dim</th></tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<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}}
|
{{#foreach count=42 key="i"}}
|
||||||
{{: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="i" value="1+%d"|math:$i}}
|
||||||
{{: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=$i}}
|
||||||
{{: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}}
|
{{/foreach}}
|
||||||
{{:assign var="cellules." value=41}}{{:assign var="cellules." value=42}}
|
{{*
|
||||||
{{#foreach from=$cellules item="n"}}
|
{{: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="rangee_n" value="floor((%d-1)/7)+1"|math:$n}}
|
{{: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}}
|
||||||
{{if $vue == "mois" || $rangee_n == $semaine_sel}}
|
{{: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="jour_num" value="%d-%d"|math:$n:$decalage}}
|
{{: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}}
|
||||||
{{if $jour_num >= 1 && $jour_num <= $nb_jours}}
|
{{:assign var="cellules." value=41}}{{:assign var="cellules." value=42}}
|
||||||
{{:assign var="date_cellule" value="%04d-%02d-%02d"|args:$an:$mois:$jour_num}}
|
*}}
|
||||||
{{:assign var="dow_cellule" value=$date_cellule|date:"N"}}
|
{{#foreach from=$cellules item="n"}}
|
||||||
{{:assign var="occurrence_mois" value="floor((%d-1)/7)+1"|math:$jour_num}}
|
{{:assign var="rangee_n" value="floor((%d-1)/7)+1"|math:$n}}
|
||||||
{{:assign var="est_derniere_occurrence" value=false}}
|
{{if $vue == "mois" || $rangee_n == $semaine_sel}}
|
||||||
{{if "%d+7"|math:$jour_num > $nb_jours}}{{:assign var="est_derniere_occurrence" value=true}}{{/if}}
|
{{:assign var="jour_num" value="%d-%d"|math:$n:$decalage}}
|
||||||
{{:assign var="evts_ce_jour" from="events_par_jour.%s"|args:$date_cellule}}
|
{{if $jour_num >= 1 && $jour_num <= $nb_jours}}
|
||||||
{{:assign var="badges_jour" value=""}}
|
{{:assign var="date_cellule" value="%04d-%02d-%02d"|args:$an:$mois:$jour_num}}
|
||||||
{{#foreach from=$perms_data item="pd"}}
|
{{:assign var="dow_cellule" value=$date_cellule|date:"N"}}
|
||||||
{{if $pd.jour == $dow_cellule}}
|
{{:assign var="occurrence_mois" value="floor((%d-1)/7)+1"|math:$jour_num}}
|
||||||
{{if $pd.date_debut == "" || $date_cellule >= $pd.date_debut}}
|
{{:assign var="est_derniere_occurrence" value=false}}
|
||||||
{{if $pd.date_fin == "" || $date_cellule <= $pd.date_fin}}
|
{{if "%d+7"|math:$jour_num > $nb_jours}}{{:assign var="est_derniere_occurrence" value=true}}{{/if}}
|
||||||
{{:assign var="est_exclue" value=false}}
|
{{:assign var="evts_ce_jour" from="events_par_jour.%s"|args:$date_cellule}}
|
||||||
{{#foreach from=$pd.exceptions item="ex"}}
|
{{:assign var="badges_jour" value=""}}
|
||||||
{{if $ex == $date_cellule}}{{:assign var="est_exclue" value=true}}{{/if}}
|
{{#foreach from=$perms_data item="pd"}}
|
||||||
{{/foreach}}
|
{{if $pd.jour == $dow_cellule}}
|
||||||
{{if !$est_exclue}}
|
{{if $pd.date_debut == "" || $date_cellule >= $pd.date_debut}}
|
||||||
{{:assign var="afficher_badge" value=false}}
|
{{if $pd.date_fin == "" || $date_cellule <= $pd.date_fin}}
|
||||||
{{if $pd.type_recurrence == "mensuel"}}
|
{{:assign var="est_exclue" value=false}}
|
||||||
{{if $pd.semaine_du_mois == -1 && $est_derniere_occurrence}}{{:assign var="afficher_badge" value=true}}{{/if}}
|
{{#foreach from=$pd.exceptions item="ex"}}
|
||||||
{{if $pd.semaine_du_mois == $occurrence_mois}}{{:assign var="afficher_badge" value=true}}{{/if}}
|
{{if $ex == $date_cellule}}{{:assign var="est_exclue" value=true}}{{/if}}
|
||||||
{{elseif $pd.type_recurrence == "quinzaine"}}
|
{{/foreach}}
|
||||||
{{if $pd.date_debut != ""}}
|
{{if !$est_exclue}}
|
||||||
{{:assign var="ref_sem_q" value=$pd.date_debut|date:"W"|intval}}
|
{{:assign var="afficher_badge" value=false}}
|
||||||
{{:assign var="cell_sem_q" value=$date_cellule|date:"W"|intval}}
|
{{if $pd.type_recurrence == "mensuel"}}
|
||||||
{{:assign var="diff_sem_q" value="(%d-%d) %% 2"|math:$cell_sem_q:$ref_sem_q}}
|
{{if $pd.semaine_du_mois == -1 && $est_derniere_occurrence}}{{:assign var="afficher_badge" value=true}}{{/if}}
|
||||||
{{if $diff_sem_q == 0}}{{: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}}
|
||||||
{{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}}
|
{{/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}}
|
||||||
{{/if}}
|
{{if $badges_jour}}
|
||||||
{{/foreach}}
|
{{:assign var="badges_tries" value=$badges_jour|ksort|values}}
|
||||||
{{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}}
|
{{else}}
|
||||||
{{* background: hsl(var(--first-color), 50%, 90%);
|
{{:assign var="badges_tries" value=""}}
|
||||||
background: linear-gradient(200deg, hsl(var(--first-color), 50%, 90%) 5%, hsl(var(--second-color), 30%, 90%) 30%);
|
|
||||||
*}}
|
|
||||||
<div class="evt-badge" style="background:hsl({{$bj.couleur}},100%,50%);">
|
|
||||||
<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}}
|
{{/if}}
|
||||||
{{/foreach}}
|
|
||||||
</td>
|
|
||||||
{{else}}
|
|
||||||
<td class="vide"></td>
|
|
||||||
|
|
||||||
{{/if}}
|
<td{{if $date_cellule == $aujourdhui}} class="today"{{/if}}>
|
||||||
{{/if}}
|
<div class="num">{{$jour_num}}</div>
|
||||||
{{if $vue == "mois" && "%d %% 7"|math:$n == 0 && $n != 42}}</tr><tr>{{/if}}
|
{{#foreach from=$badges_tries item="bj"}}
|
||||||
{{/foreach}}
|
{{if $bj.type == "perm"}}
|
||||||
</tr>
|
<div class="perm-badge" style="background:{{$bj.couleur}};">
|
||||||
</tbody>
|
<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="">
|
||||||
</table>
|
{{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}}
|
||||||
</div>
|
{{if $bj.description}}<div class="evt-desc-apercu">{{$bj.description}}</div>{{/if}}
|
||||||
</div>
|
</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="" class="mini-form" onclick="event.stopPropagation();">
|
||||||
|
{{:input type="hidden" name="perm_id" default=$bj.pid }}
|
||||||
|
{{:input type="hidden" name="date_exclue" default=$date_cellule }}
|
||||||
|
{{:input type="hidden" name="retour_an" default=$an }}
|
||||||
|
{{:input type="hidden" name="retour_mois" default=$mois }}
|
||||||
|
{{:button type="submit" name="suppr_occurrence" class="mini-x" shape="delete" title="Supprimer seulement ce jour" value=$bj.pid}}
|
||||||
|
{{*
|
||||||
|
<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}}
|
||||||
|
{{* background: hsl(var(--first-color), 50%, 90%);
|
||||||
|
background: linear-gradient(200deg, hsl(var(--first-color), 50%, 90%) 5%, hsl(var(--second-color), 30%, 90%) 30%);
|
||||||
|
*}}
|
||||||
|
<div class="evt-badge" style="background:hsl({{$bj.couleur}},100%,50%);">
|
||||||
|
<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="" class="mini-form" onclick="event.stopPropagation();">
|
||||||
|
{{:input type="hidden" name="retour_an" default=$an }}
|
||||||
|
{{:input type="hidden" name="retour_mois" default=$mois }}
|
||||||
|
{{:button type="submit" name="suppr_event" class="mini-x" shape="delete" title="Supprimer" value=$bj.id}}
|
||||||
|
{{*
|
||||||
|
<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}}
|
||||||
+77
-69
@@ -1,3 +1,4 @@
|
|||||||
|
{{* Gestion des Calendriers *}}
|
||||||
{{if $est_admin && $subconf=="manage_cal"}}
|
{{if $est_admin && $subconf=="manage_cal"}}
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h2>Gérer les calendriers</h2>
|
<h2>Gérer les calendriers</h2>
|
||||||
@@ -6,32 +7,71 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
{{#foreach from=$calendriers_liste item="cd_gest"}}
|
{{#foreach from=$calendriers_liste item="cd_gest"}}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{$cd_gest.nom}}{{if $cd_gest.par_defaut}} <small style="color:#999;">(par défaut)</small>{{/if}}</td>
|
|
||||||
<td>
|
<td>
|
||||||
{{if !$cd_gest.par_defaut}}
|
<span style="color:hsl({{$cd_gest.textecouleur}},100%,50%) ;background:hsl({{$cd_gest.couleur}},100%,50%);"> {{$cd_gest.nom}}</span>
|
||||||
<form method="post" action="" style="display:inline">
|
{{if $cd_gest.par_defaut}} <small style="color:#999;">(par défaut)</small>{{/if}}</td>
|
||||||
{{* <button type="submit" name="suppr_calendrier" value="{{$cd_gest.id}}" class="mini" title="Supprimer ce calendrier">✕ Supprimer</button>*}}
|
<td>
|
||||||
{{:button type="submit" name="suppr_calendrier" label="Supprimer ce calendrier" shape="delete" value="%s"|args:$cd_gest.id}}
|
{{:linkbutton href="index.html?nav=conf&conf=manage_cal&idcal=%s"|args:$cd_gest.id label="Modifier ce calendrier" class="mini" shape="edit"}}
|
||||||
</form>
|
<form method="post" action="" style="display:inline">
|
||||||
{{/if}}
|
{{if !$cd_gest.par_defaut}}
|
||||||
|
{{:button type="submit" name="suppr_calendrier" label="Supprimer ce calendrier" class="mini" shape="delete" value="%s"|args:$cd_gest.id}}
|
||||||
|
{{/if}}
|
||||||
|
</form>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{/foreach}}
|
{{/foreach}}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
<p class="aide">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>
|
||||||
<form method="post" action="" class="ajout" style="margin-top:.8rem;">
|
<form method="post" action="" class="ajout" style="margin-top:.8rem;">
|
||||||
{{* <div class="champ" style="flex:2; min-width:14rem;"><label>Nouveau calendrier</label>
|
<fieldset class="entree">
|
||||||
<input type="text" name="nom_calendrier" placeholder="ex. Réunions" required="required" />
|
{{if $_GET.idcal && $est_admin}}
|
||||||
</div>
|
<h2>Modifier un calendrier</h2>
|
||||||
<button type="submit" name="add_calendrier" value="1">Ajouter</button>
|
{{:assign var="_cnom" from="calendriers_liste.%s.nom"|args:$_GET.idcal}}
|
||||||
*}}
|
{{:assign var="_cdef" from="calendriers_liste.%s.par_defaut"|args:$_GET.idcal}}
|
||||||
<dl>{{:input type="text" name="nom_calendrier" label="Nouveau calendrier" help="ex. Réunions" required=true}}</dl>
|
{{:assign var="_ccou" from="calendriers_liste.%s.couleur"|args:$_GET.idcal}}
|
||||||
{{:button type="submit" name="add_calendrier" label="Ajouter" title="Ajouter un calendrier" shape="plus" value="1"}}
|
{{:assign var="_ctco" from="calendriers_liste.%s.textecouleur"|args:$_GET.idcal}}
|
||||||
|
{{:assign var="_ccat" from="calendriers_liste.%s.categorie"|args:$_GET.idcal}}
|
||||||
|
{{if $_cdef == true}}
|
||||||
|
{{:assign _checked="checked"}}
|
||||||
|
{{/if}}
|
||||||
|
<dl>{{:input type="text" name="nom_calendrier" label="Nom du calendrier" default=$_cnom required=true}}</dl>
|
||||||
|
<dl>{{:input type="hue" name="couleur" label="Couleur de l'arrière-plan" default=$_ccou}}</dl>
|
||||||
|
<dl>{{:input type="hue" name="couleur_texte" label="Couleur du texte" default=$_ctco}}</dl>
|
||||||
|
<dl>{{:input type="checkbox" name="pardefaut" label="Calendrier par défaut ?" checked="%s"|args:$_checked value=true}}</dl>
|
||||||
|
{{if $_ccat == "p"}} {{:assign _p="checked"}} {{elseif $_ccat == "m"}} {{:assign _m="checked"}} {{elseif $_ccat == "a"}} {{:assign _a="checked"}} {{else}} {{:assign _p="checked"}} {{/if}}
|
||||||
|
{{:assign var="options." id="p" texte="public" checked="%s"|args:$_p}}
|
||||||
|
{{:assign var="options." id="m" texte="membres" checked="%s"|args:$_m}}
|
||||||
|
{{:assign var="options." id="a" texte="admins" checked="%s"|args:$_a}}
|
||||||
|
<dl>
|
||||||
|
{{#foreach from=$options item="o"}}
|
||||||
|
{{:input type="radio" name="categorie" label="Catégorie" value=$o.id label=$o.texte checked=$o.checked}}
|
||||||
|
{{/foreach}}
|
||||||
|
{{*:input type="radio" name="categorie" label="Catégorie" checked="%s"|args:$_checked value=true*}}
|
||||||
|
</dl>
|
||||||
|
{{:button type="submit" name="mod_calendrier" label="Modifier" title="Modifier un calendrier" shape="plus" value="%d"|args:$_GET.idcal}}
|
||||||
|
{{else}}
|
||||||
|
<h2>Ajouter un calendrier</h2>
|
||||||
|
<dl>{{:input type="text" name="nom_calendrier" label="Nom du calendrier" help="ex. Réunions" required=true}}</dl>
|
||||||
|
<dl>{{:input type="hue" name="couleur" label="Couleur de l'arrière-plan" help="Couleur par defaut de l'arrière-plan des évènements créés dans ce calendrier." }}</dl>
|
||||||
|
<dl>{{:input type="hue" name="couleur_texte" label="Couleur du texte" default=$_ctco}}</dl>
|
||||||
|
<dl>{{:input type="checkbox" name="pardefaut" label="Calendrier par défaut ?" value=true}}</dl>
|
||||||
|
{{:assign var="options." id="p" texte="public" checked="checked"}}
|
||||||
|
{{:assign var="options." id="m" texte="membres"}}
|
||||||
|
{{:assign var="options." id="a" texte="admins"}}
|
||||||
|
<dl>
|
||||||
|
{{#foreach from=$options item="o"}}
|
||||||
|
{{:input type="radio" name="categorie" label="Catégorie" value=$o.id label=$o.texte checked=$o.checked}}
|
||||||
|
{{/foreach}}
|
||||||
|
</dl>
|
||||||
|
{{:button type="submit" name="add_calendrier" label="Ajouter" title="Ajouter un calendrier" shape="plus" value="1"}}
|
||||||
|
{{/if}}
|
||||||
|
</fieldset>
|
||||||
</form>
|
</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>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
{{* Gestion des évènements *}}
|
||||||
{{if $est_admin && $subconf=="manage_eve"}}
|
{{if $est_admin && $subconf=="manage_eve"}}
|
||||||
{{*:debug event=$event*}}
|
{{*:debug event=$event*}}
|
||||||
<form method="post" action="">
|
<form method="post" action="">
|
||||||
@@ -45,78 +85,46 @@
|
|||||||
{{:input type="time" name="debut" label="De" default=$event.debut}}
|
{{:input type="time" name="debut" label="De" default=$event.debut}}
|
||||||
{{:input type="time" name="fin" label="À" default=$event.fin}}
|
{{:input type="time" name="fin" label="À" default=$event.fin}}
|
||||||
{{:input type="text" name="lieu" label="Lieu" default=$event.lieu}}
|
{{:input type="text" name="lieu" label="Lieu" default=$event.lieu}}
|
||||||
{{:input type="hue" name="couleur" label="Couleur" }}
|
{{if $edit_event}}
|
||||||
|
{{:input type="hue" name="couleur" label="Couleur" default=$event.couleur }}
|
||||||
|
{{/if}}
|
||||||
{{:assign var="ee_cal_eff" value=$event.calendrier}}
|
{{:assign var="ee_cal_eff" value=$event.calendrier}}
|
||||||
{{if $ee_cal_eff == ""}}{{:assign var="ee_cal_eff" value="agenda"}}{{/if}}
|
{{*if $ee_cal_eff == ""}}{{:assign var="ee_cal_eff" value="agenda"}}{{/if*}} {{* inutile *}}
|
||||||
{{#foreach from=$calendriers_liste item="cd_opt"}}
|
{{#foreach from=$calendriers_liste item="cd_opt"}}
|
||||||
{{:assign var="calendriers_options.%s"|args:$cd_opt.id label=$cd_opt.nom}}
|
{{:assign var="calendriers_options.%s"|args:$cd_opt.id label=$cd_opt.nom}}
|
||||||
{{/foreach}}
|
{{/foreach}}
|
||||||
{{*:debug cal=$calendriers_options*}}
|
{{*:debug cal=$calendriers_options*}}
|
||||||
{{:input type="select" name="calendrier" label="Calendrier" default=$event.calendrier options=$calendriers_options required=true}}
|
{{:input type="select" name="calendrier" label="Calendrier" default=$event.calendrier options=$calendriers_options required=true}}
|
||||||
{{:input type="textarea" cols=40 rows=3 name="description" label="Description complète" default=$event.description required=false}}
|
{{:input type="textarea" cols=40 rows=3 name="description" label="Description complète" default=$event.description required=false}}
|
||||||
|
{{#foreach count=3 key="i"}}
|
||||||
|
{{:assign var="i" value="1+%d"|math:$i}}
|
||||||
|
{{:assign _ell="event.lien%d_label"|args:$i _elu="event.lien%d_url"|args:$i}}
|
||||||
|
{{:assign var="ell" from=$_ell}}
|
||||||
|
{{:assign var="elu" from=$_elu}}
|
||||||
|
<div class="ajout">
|
||||||
|
{{:input type="text" name="lien%d_label"|args:$i label="Lien %d — libellé"|args:$i default=$ell placeholder="Ex. Inscription"}}
|
||||||
|
{{:input type="text" name="lien%d_url"|args:$i label="Lien %d — URL"|args:$i default=$elu placeholder="https://…"}}
|
||||||
|
{{/foreach}}
|
||||||
|
{{*
|
||||||
<div class="ajout">{{:input type="text" name="lien1_label" label="Lien 1 — libellé" default=$event.lien1_label placeholder="Ex. Affiche"}}{{:input type="text" name="lien1_url" label="Lien 1 — URL" default=$event.lien1_url placeholder="https://…"}}</div>
|
<div class="ajout">{{:input type="text" name="lien1_label" label="Lien 1 — libellé" default=$event.lien1_label placeholder="Ex. Affiche"}}{{:input type="text" name="lien1_url" label="Lien 1 — URL" default=$event.lien1_url placeholder="https://…"}}</div>
|
||||||
<div class="ajout">{{:input type="text" name="lien2_label" label="Lien 2 — libellé" default=$event.lien2_label placeholder="Ex. Programme"}}{{:input type="text" name="lien2_url" label="Lien 2 — URL" default=$event.lien2_url placeholder="https://…"}}</div>
|
<div class="ajout">{{:input type="text" name="lien2_label" label="Lien 2 — libellé" default=$event.lien2_label placeholder="Ex. Programme"}}{{:input type="text" name="lien2_url" label="Lien 2 — URL" default=$event.lien2_url placeholder="https://…"}}</div>
|
||||||
<div class="ajout">{{:input type="text" name="lien3_label" label="Lien 3 — libellé" default=$event.lien3_label placeholder="Ex. Inscription"}}{{:input type="text" name="lien3_url" label="Lien 3 — URL" default=$event.lien3_url placeholder="https://…"}}</div>
|
<div class="ajout">{{:input type="text" name="lien3_label" label="Lien 3 — libellé" default=$event.lien3_label placeholder="Ex. Inscription"}}{{:input type="text" name="lien3_url" label="Lien 3 — URL" default=$event.lien3_url placeholder="https://…"}}</div>
|
||||||
|
*}}
|
||||||
</dl>
|
</dl>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<p class="submit">
|
<p class="submit">
|
||||||
{{if $edit_event}}
|
{{if $edit_event}}
|
||||||
<a class="retour" href="?an={{$an}}&mois={{$mois}}">Annuler</a>
|
<a class="retour" href="?an={{$an}}&mois={{$mois}}">Annuler</a>
|
||||||
{{:button type="submit" name="save_event" label="Enregistrer les modifications" class="main" value="%s"|args:$event.key}}
|
{{:input type="hidden" name="event_id" default=$event.id}}
|
||||||
|
{{:button type="submit" name="save_event" label="Enregistrer les modifications" class="main"}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:button type="submit" name="save_event" label="Ajouter l'événement" shape="plus" class="main"}}
|
{{:button type="submit" name="save_event" label="Ajouter l'événement" shape="plus" class="main"}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</p>
|
</p>
|
||||||
</form>
|
</form>
|
||||||
{{* <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}}
|
||||||
|
|
||||||
|
{{* Gestion des occurences *}}
|
||||||
{{if $est_admin && $subconf=="manage_app"}}
|
{{if $est_admin && $subconf=="manage_app"}}
|
||||||
<div class="card" id="form-perm">
|
<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>
|
<h2>{{if $edit_perm}}Modifier ce rendez-vous régulier{{else}}Ajouter un rendez-vous régulier{{/if}}</h2>
|
||||||
@@ -163,10 +171,10 @@
|
|||||||
<label>Calendrier</label>
|
<label>Calendrier</label>
|
||||||
<select name="calendrier">
|
<select name="calendrier">
|
||||||
{{:assign var="ep_cal_eff" value=$ep_calendrier}}
|
{{:assign var="ep_cal_eff" value=$ep_calendrier}}
|
||||||
{{if $ep_cal_eff == ""}}{{:assign var="ep_cal_eff" value="agenda"}}{{/if}}
|
{{if $ep_cal_eff == ""}}{{:assign var="ep_cal_eff" value="agenda"}}{{/if}}
|
||||||
{{#foreach from=$calendriers_liste item="cd_opt2"}}
|
{{#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>
|
<option value="{{$cd_opt2.id}}" {{if $cd_opt2.id == $ep_cal_eff}}selected="selected"{{/if}}>{{$cd_opt2.nom}}</option>
|
||||||
{{/foreach}}
|
{{/foreach}}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+6
-1
@@ -31,10 +31,15 @@
|
|||||||
{{if $est_admin}}
|
{{if $est_admin}}
|
||||||
<span>
|
<span>
|
||||||
<a class="mini" href="index.html?edit_event={{$id}}&an={{$an}}&mois={{$mois}}#form-event" title="Modifier">✎</a>
|
<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">
|
<form method="post" action="" style="display:inline">
|
||||||
|
{{:input type="hidden" name="retour_an" default=$an}}
|
||||||
|
{{:input type="hidden" name="retour_mois" default=$mois}}
|
||||||
|
{{:button type="submit" name="suppr_event" label="Supprimer" shape="delete" class="mini" default=$id required=true}}
|
||||||
|
{{*
|
||||||
<input type="hidden" name="retour_an" value="{{$an}}" />
|
<input type="hidden" name="retour_an" value="{{$an}}" />
|
||||||
<input type="hidden" name="retour_mois" value="{{$mois}}" />
|
<input type="hidden" name="retour_mois" value="{{$mois}}" />
|
||||||
<button type="submit" name="suppr_event" value="{{$id}}" class="mini" title="Supprimer">✕</button>
|
<button type="submit" name="suppr_event" value="{{$id}}" class="mini" title="Supprimer">✕</button>
|
||||||
|
*}}
|
||||||
</form>
|
</form>
|
||||||
</span>
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|||||||
@@ -13,13 +13,13 @@
|
|||||||
{{#restrict section="web" level="write"}}
|
{{#restrict section="web" level="write"}}
|
||||||
<aside>
|
<aside>
|
||||||
{{*:debug cf=$cal_filtre*}}
|
{{*:debug cf=$cal_filtre*}}
|
||||||
{{if $cal_filtre == "tous"}}
|
{{if $selected_calendar == -1}}
|
||||||
{{:button label="Tous les calendriers" shape="calendar" href="%s?vue=%s&an=%s&mois=%s&cal=tous"|args:$_url:$vue:$an:$mois disabled=true}}
|
{{:button label="Tous les calendriers" shape="calendar" href="%s?vue=%s&an=%s&mois=%s&cal=-1"|args:$_url:$vue:$an:$mois disabled=true}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:linkbutton label="Tous les calendriers" shape="calendar" href="%s?vue=%s&an=%s&mois=%s&cal=tous"|args:$_url:$vue:$an:$mois}}
|
{{:linkbutton label="Tous les calendriers" shape="calendar" href="%s?vue=%s&an=%s&mois=%s&cal=-1"|args:$_url:$vue:$an:$mois}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#foreach from=$calendriers_liste item="cd_tab"}}
|
{{#foreach from=$calendriers_liste item="cd_tab"}}
|
||||||
{{if $cal_filtre == $cd_tab.id}}
|
{{if $selected_calendar == $cd_tab.id}}
|
||||||
{{:button label="%s"|args:$cd_tab.nom shape="calendar" href="%s?vue=%s&an=%s&mois=%s&cal=%s"|args:$_url:$vue:$an:$mois:$cd_tab.id disabled=true}}
|
{{:button label="%s"|args:$cd_tab.nom shape="calendar" href="%s?vue=%s&an=%s&mois=%s&cal=%s"|args:$_url:$vue:$an:$mois:$cd_tab.id disabled=true}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:linkbutton label="%s"|args:$cd_tab.nom shape="calendar" href="%s?vue=%s&an=%s&mois=%s&cal=%s"|args:$_url:$vue:$an:$mois:$cd_tab.id}}
|
{{:linkbutton label="%s"|args:$cd_tab.nom shape="calendar" href="%s?vue=%s&an=%s&mois=%s&cal=%s"|args:$_url:$vue:$an:$mois:$cd_tab.id}}
|
||||||
@@ -44,9 +44,9 @@
|
|||||||
{{:assign _liclass="nav-mois" _ulclass="modal-liens"}}
|
{{:assign _liclass="nav-mois" _ulclass="modal-liens"}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<ul class="{{$_ulclass}}">
|
<ul class="{{$_ulclass}}">
|
||||||
<li {{if !$subcurrent || $subcurrent == 'mois'}} class="{{$_liclass}}"{{/if}}><a href="{{$_url}}?vue=mois&an={{$an}}&mois={{$mois}}&cal={{$cal}}">Mois</a></li>
|
<li {{if !$subcurrent || $subcurrent == 'mois'}} class="{{$_liclass}}"{{/if}}><a href="{{$_url}}?vue=mois&an={{$an}}&mois={{$mois}}">Mois</a></li>
|
||||||
<li {{if $subcurrent == 'semaine'}} class="{{$_liclass}}"{{/if}}><a href="{{$_url}}?vue=semaine&an={{$an}}&mois={{$mois}}&cal={{$cal}}">Semaine</a></li>
|
<li {{if $subcurrent == 'semaine'}} class="{{$_liclass}}"{{/if}}><a href="{{$_url}}?vue=semaine&an={{$an}}&mois={{$mois}}">Semaine</a></li>
|
||||||
<li {{if $subcurrent == 'liste'}} class="{{$_liclass}}"{{/if}}><a href="{{$_url}}?vue=liste&cal={{$cal}}">Liste</a></li>
|
<li {{if $subcurrent == 'liste'}} class="{{$_liclass}}"{{/if}}><a href="{{$_url}}?vue=liste">Liste</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#restrict section="web" level="write"}}
|
{{#restrict section="web" level="write"}}
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ a.lieu-lien:hover { text-decoration: underline; }
|
|||||||
ul.liste-evt .lien-evt { color: var(--terra); font-size: .85rem; }
|
ul.liste-evt .lien-evt { color: var(--terra); font-size: .85rem; }
|
||||||
.tag-type { display: inline-block; color: #fff; font-size: .75rem; text-transform: uppercase; letter-spacing: .03em; padding: .1rem .4rem; border-radius: .3rem; margin-right: .4rem; vertical-align: middle; }
|
.tag-type { display: inline-block; color: #fff; font-size: .75rem; text-transform: uppercase; letter-spacing: .03em; padding: .1rem .4rem; border-radius: .3rem; margin-right: .4rem; vertical-align: middle; }
|
||||||
p.vide { color: #777; }
|
p.vide { color: #777; }
|
||||||
|
p.aide { color:#777; font-size:.85rem; margin:.6rem 0 0; }
|
||||||
table.permanences { border-collapse: collapse; width: 100%; }
|
table.permanences { border-collapse: collapse; width: 100%; }
|
||||||
.scroll-cal table.permanences { min-width: 42rem; }
|
.scroll-cal table.permanences { min-width: 42rem; }
|
||||||
table.permanences th, table.permanences td { padding: .5rem .4rem; text-align: left; border-bottom: 1px solid #eceae8; }
|
table.permanences th, table.permanences td { padding: .5rem .4rem; text-align: left; border-bottom: 1px solid #eceae8; }
|
||||||
|
|||||||
+80
-596
@@ -26,123 +26,21 @@
|
|||||||
{{*:delete where="$$.type = :type AND id > 9" :type="event"*}}
|
{{*:delete where="$$.type = :type AND id > 9" :type="event"*}}
|
||||||
{{*:save key="c489ba90-16d0-42cb-b5b8-8daa2f7e0d06" date="28/10/2026"|parse_date*}}
|
{{*:save key="c489ba90-16d0-42cb-b5b8-8daa2f7e0d06" date="28/10/2026"|parse_date*}}
|
||||||
|
|
||||||
{{* ---------- Ajout ou Modification d'un événement ---------- *}}
|
{{* ---------- Gestion des événements ---------- *}}
|
||||||
{{#form on="save_event" }}
|
{{if $_POST.save_event || $_POST.suppr_event }}
|
||||||
{{if $_POST.save_event && $est_admin}}
|
{{:include file="manage/_event.html"}}
|
||||||
{{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}}
|
{{/if}}
|
||||||
|
{{* ---------- Gestion des permanences ---------- *}}
|
||||||
{{* ---------- Ajout d'une permanence récurrente ---------- *}}
|
{{if $_POST.add_perm || $_POST.rename_perm || $_POST.suppr_perm}}
|
||||||
{{if $_POST.add_perm && $est_admin}}
|
{{:include file="manage/_perm.html"}}
|
||||||
{{: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}}
|
{{/if}}
|
||||||
|
{{* ---------- Gestion des occurrences ---------- *}}
|
||||||
{{* ---------- Modification d'une permanence ---------- *}}
|
{{if $_POST.suppr_occurrence }}
|
||||||
{{if $_POST.rename_perm && $est_admin}}
|
{{:include file="manage/_occurence.html"}}
|
||||||
{{: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}}
|
{{/if}}
|
||||||
|
{{* ---------- Gestion des calendriers ---------- *}}
|
||||||
{{* ---------- Suppression d'une permanence ---------- *}}
|
{{if $_POST.add_calendrier || $_POST.suppr_calendrier || $_POST.mod_calendrier}}
|
||||||
{{if $_POST.suppr_perm && $est_admin}}
|
{{:include file="manage/_calendrier.html"}}
|
||||||
{{: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}}
|
{{/if}}
|
||||||
|
|
||||||
{{* ---------- Mois affiché (par défaut : le mois en cours) ---------- *}}
|
{{* ---------- Mois affiché (par défaut : le mois en cours) ---------- *}}
|
||||||
@@ -180,55 +78,71 @@
|
|||||||
{{if $vue != "semaine" && $vue != "liste"}}{{:assign var="vue" value="mois"}}{{/if}}
|
{{if $vue != "semaine" && $vue != "liste"}}{{:assign var="vue" value="mois"}}{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{* ---------- Gestion des calendriers (ajout / suppression, admin) ---------- *}}
|
{{* ---------- Liste des calendriers disponibles ---------- *}}
|
||||||
{{if $_POST.add_calendrier && $est_admin}}
|
{{#load module="agenda" where="$$.type = 'calendrier'" order="$$.nom ASC"}}
|
||||||
{{: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.id"|args:$id value=$id}}
|
||||||
{{:assign var="calendriers_liste.%s.nom"|args:$id value=$nom}}
|
{{:assign var="calendriers_liste.%s.nom"|args:$id value=$nom}}
|
||||||
{{:assign var="calendriers_liste.%s.par_defaut"|args:$id value=false}}
|
{{:assign var="calendriers_liste.%s.par_defaut"|args:$id value=$par_defaut}}
|
||||||
|
{{:assign var="calendriers_liste.%s.couleur"|args:$id value=$couleur}}
|
||||||
|
{{:assign var="calendriers_liste.%s.textecouleur"|args:$id value=$textecouleur}}
|
||||||
|
{{:assign var="calendriers_liste.%s.categorie"|args:$id value=$categorie}}
|
||||||
|
{{else}}
|
||||||
|
{{* Pas encore de calendrier créé : vérifier que nous ne sommes pas sur le site web *}}
|
||||||
|
{{if $module.name == "agenda"}}
|
||||||
|
{{:save type="calendrier" nom="Agenda" par_defaut=true couleur=180 textecouleur="225" categorie="p"}}
|
||||||
|
{{/if}}
|
||||||
{{/load}}
|
{{/load}}
|
||||||
|
|
||||||
{{* ---------- Filtre calendrier (choisi via ?cal=..., "agenda" par défaut) ---------- *}}
|
{{* ---------- Liste des calendriers publics (Web) ---------- *}}
|
||||||
{{:assign var="cal_filtre" value=$_GET.cal|strval|trim}}
|
{{if $module.name == "web"}}
|
||||||
{{:assign var="cal_filtre_valide" value=false}}
|
{{:assign filtre_cal_sql="1"}}
|
||||||
{{if $cal_filtre == "tous"}}{{:assign var="cal_filtre_valide" value=true}}{{/if}}
|
{{#foreach from=$calendriers_liste item="value"}}
|
||||||
{{#foreach from=$calendriers_liste item="cd_check"}}
|
{{if $value.categorie == "p"}}
|
||||||
{{if $cd_check.id == $cal_filtre}}{{:assign var="cal_filtre_valide" value=true}}{{/if}}
|
{{:assign var="calendriers_publics." id=$id value=$nom}}
|
||||||
{{/foreach}}
|
{{:assign filtre_cal_sql=" AND $$.calendrier = '%d' AND %s"|args:$id:$filtre_cal_sql}}
|
||||||
{{if !$cal_filtre_valide}}{{:assign var="cal_filtre" value="agenda"}}{{/if}}
|
{{/if}}
|
||||||
|
{{/foreach}}
|
||||||
{{:assign var="filtre_cal_sql" value=""}}
|
{{:assign selected_calendar=-1 selected_calendar_name="Public" selected_calendar_couleur=180}}
|
||||||
{{if $cal_filtre == "agenda"}}
|
{{*:debug filtre_cal_sql=$filtre_cal_sql*}}
|
||||||
{{: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}}
|
{{/if}}
|
||||||
|
|
||||||
|
{{* ---------- Filtre calendrier (Utilisateurs logués) ---------- *}}
|
||||||
|
{{if $is_logged==true}}
|
||||||
|
{{:assign saved_filters=$module.config.filters}}
|
||||||
|
{{:assign var="user_filters" from="saved_filters.%s"|args:$logged_user.id}}
|
||||||
|
{{if $_GET.cal == null}}
|
||||||
|
{{:assign selected_calendar=$user_filters.cal_key }}
|
||||||
|
{{:assign var="selected_calendar_name" from="calendriers_liste.%s.nom"|args:$selected_calendar}}
|
||||||
|
{{:assign var="selected_calendar_couleur" from="calendriers_liste.%s.couleur"|args:$selected_calendar}}
|
||||||
|
{{if $selected_calendar == -1}}
|
||||||
|
{{:assign filtre_cal_sql=""}}
|
||||||
|
{{else}}
|
||||||
|
{{:assign filtre_cal_sql=" AND $$.calendrier = '%s'"|args:$selected_calendar}}
|
||||||
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
{{*
|
||||||
|
-1 = Tous
|
||||||
|
n = Id du calendrier dans la base
|
||||||
|
*}}
|
||||||
|
{{if $_GET.cal == -1}}
|
||||||
|
{{:assign selected_calendar=-1 selected_calendar_name="Tous" selected_calendar_couleur=180}}
|
||||||
|
{{:assign filtre_cal_sql=""}}
|
||||||
|
{{else}}
|
||||||
|
{{:assign selected_calendar=$_GET.cal}}
|
||||||
|
{{:assign var="selected_calendar_name" from="calendriers_liste.%s.nom"|args:$selected_calendar}}
|
||||||
|
{{:assign var="selected_calendar_couleur" from="calendriers_liste.%s.couleur"|args:$selected_calendar}}
|
||||||
|
{{:assign filtre_cal_sql=" AND $$.calendrier = '%s'"|args:$selected_calendar}}
|
||||||
|
{{/if}}
|
||||||
|
{{:assign var="user_filters.cal_key" value=$selected_calendar}}
|
||||||
|
{{:assign var="saved_filters.%s"|args:$logged_user.id value=$user_filters}}
|
||||||
|
{{:save key="config" filters=$saved_filters}}
|
||||||
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
{{:assign selected_calendar=$_GET.cal}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{*:debug _GET=$_GET scal=$selected_calendar fsql=$filtre_cal_sql user_cal=$user_filters.cal_key*}}
|
||||||
|
|
||||||
{{* ---------- Nombre de rangées du mois affiché, et du mois précédent (pour la navigation par semaine) ---------- *}}
|
{{* ---------- 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="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="premier_du_mois_prec" value="%04d-%02d-01"|args:$an_prec:$mois_prec}}
|
||||||
@@ -253,13 +167,13 @@
|
|||||||
{{* FB : Ne Fonctionne pas : erreur "Database is locked" / perso ca m'arrrange de conserver les anciens RDV pour avoir une trace ;-)SS *}}
|
{{* 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="purge_faite" value=false}}
|
||||||
{{:assign var="where_purge_evt" value="$$.type = 'event' AND $$.date < '%s'"|args:$aujourdhui}}
|
{{:assign var="where_purge_evt" value="$$.type = 'event' AND $$.date < '%s'"|args:$aujourdhui}}
|
||||||
{{#load where=$where_purge_evt}}
|
{{#load module="agenda" where=$where_purge_evt}}
|
||||||
{{*:delete id=$id*}}
|
{{*:delete id=$id*}}
|
||||||
{{*:debug id=$id*}}
|
{{*:debug id=$id*}}
|
||||||
{{:assign var="purge_faite" value=true}}
|
{{:assign var="purge_faite" value=true}}
|
||||||
{{/load}}
|
{{/load}}
|
||||||
{{:assign var="where_purge_perm" value="$$.type = 'permanence' AND $$.date_fin != '' AND $$.date_fin < '%s'"|args:$aujourdhui}}
|
{{:assign var="where_purge_perm" value="$$.type = 'permanence' AND $$.date_fin != '' AND $$.date_fin < '%s'"|args:$aujourdhui}}
|
||||||
{{#load where=$where_purge_perm}}
|
{{#load module="agenda" where=$where_purge_perm}}
|
||||||
{{*:delete id=$id*}}
|
{{*:delete id=$id*}}
|
||||||
{{*:debug id=$id*}}
|
{{*:debug id=$id*}}
|
||||||
{{:assign var="purge_faite" value=true}}
|
{{:assign var="purge_faite" value=true}}
|
||||||
@@ -272,7 +186,7 @@
|
|||||||
{{* ---------- Chargement des événements du mois affiché (pour la grille) ---------- *}}
|
{{* ---------- 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="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}}
|
{{: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"}}
|
{{#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.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.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.debut"|args:$date:$id value=$debut}}
|
||||||
@@ -504,443 +418,12 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
{{* FB : Retour vers l'admin du site si admin
|
{{if $vue == "mois" || $vue == "semaine"}}
|
||||||
{{if $est_admin}}
|
{{:include file="_calendar.html" vue=$vue}}
|
||||||
<p><a class="retour" href="/admin">← Retour au site</a></p>
|
{{elseif $vue == "liste"}}
|
||||||
{{else}}
|
{{:include file="_appointments_list.html" vue=$vue}}
|
||||||
<p><a class="retour" href="/">← Retour au site</a></p>
|
{{:include file="_events_list.html" vue=$vue}}
|
||||||
{{/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}}
|
|
||||||
{{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>
|
||||||
|
|
||||||
<div class="modal-overlay" id="modalDetailEvt" onclick="if(event.target===this){fermerDetailEvt();}">
|
<div class="modal-overlay" id="modalDetailEvt" onclick="if(event.target===this){fermerDetailEvt();}">
|
||||||
@@ -1016,6 +499,7 @@ document.addEventListener('keydown', function(e) { if (e.key === 'Escape') { fer
|
|||||||
{{*</body>
|
{{*</body>
|
||||||
</html>
|
</html>
|
||||||
*}}
|
*}}
|
||||||
|
{{*:debug*}}
|
||||||
{{if $est_admin==true}}
|
{{if $est_admin==true}}
|
||||||
{{:admin_footer}}
|
{{:admin_footer}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
{{* ---------- Gestion des calendriers (ajout / suppression, admin) ---------- *}}
|
||||||
|
{{#form on="add_calendrier"}}
|
||||||
|
{{if $_POST.add_calendrier && $est_admin}}
|
||||||
|
{{* Nom déjà existant ? *}}
|
||||||
|
{{if $_POST.nom_calendrier}}
|
||||||
|
{{#load where="$$.type = 'calendrier' AND $$.nom = '%s'"|args:$_POST.nom_calendrier}}
|
||||||
|
{{:error message="Le nom du calendrier existe déjà."}}
|
||||||
|
{{/load}}
|
||||||
|
{{else}}
|
||||||
|
{{:error message="Le nom du calendrier doit être renseigné."}}
|
||||||
|
{{/if}}
|
||||||
|
{{if $_POST.pardefaut == true}}
|
||||||
|
{{* enlève le flag à un des autres calendriers *}}
|
||||||
|
{{#load where="$$.type = 'calendrier' AND $$.par_defaut = true"|args:$_POST.nom_calendrier}}
|
||||||
|
{{:assign var="_id_cal" value=$id}}
|
||||||
|
{{/load}}
|
||||||
|
{{if $_id_cal}}
|
||||||
|
{{:save type="calendrier" id=$_id_cal par_defaut=false}}
|
||||||
|
{{/if}}
|
||||||
|
{{:assign _pardef=true}}
|
||||||
|
{{else}}
|
||||||
|
{{:assign _pardef=false}}
|
||||||
|
{{/if}}
|
||||||
|
{{:save type="calendrier" nom=$_POST.nom_calendrier par_defaut=$_pardef couleur=$_POST.couleur}}
|
||||||
|
{{:redirect url="index.html?nav=conf&conf=manage_cal&msg=ajout"}}
|
||||||
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
{{:form_errors}}
|
||||||
|
{{/form}}
|
||||||
|
|
||||||
|
{{* Modifier un calendrier *}}
|
||||||
|
{{#form on="mod_calendrier"}}
|
||||||
|
{{:debug p=$_POST}}
|
||||||
|
{{* vérifications *}}
|
||||||
|
{{if !$_POST.mod_calendrier && !$est_admin}}
|
||||||
|
{{:error message="Le calendrier n'existe pas."}}
|
||||||
|
{{/if}}
|
||||||
|
{{* Nom déjà existant ? *}}
|
||||||
|
{{if $_POST.nom_calendrier}}
|
||||||
|
{{#load where="$$.type = 'calendrier' AND $$.nom = '%s' AND id <> %d"|args:$_POST.nom_calendrier:$_POST.mod_calendrier}}
|
||||||
|
{{:error message="Le nom du calendrier existe déjà."}}
|
||||||
|
{{/load}}
|
||||||
|
{{else}}
|
||||||
|
{{:error message="Le nom du calendrier doit être renseigné."}}
|
||||||
|
{{/if}}
|
||||||
|
{{* Par défaut déjà existant ? *}}
|
||||||
|
{{if $_POST.pardefaut == true}}
|
||||||
|
{{* enlève le flag à un des autres calendriers *}}
|
||||||
|
{{#load where="$$.type = 'calendrier' AND $$.par_defaut = true"|args:$_POST.nom_calendrier}}
|
||||||
|
{{:assign var="_id_cal" value=$id}}
|
||||||
|
{{/load}}
|
||||||
|
{{if $_id_cal}}
|
||||||
|
{{:save type="calendrier" id=$_id_cal par_defaut=false}}
|
||||||
|
{{/if}}
|
||||||
|
{{:assign _pardef=true}}
|
||||||
|
{{else}}
|
||||||
|
{{:assign _pardef=false}}
|
||||||
|
{{/if}}
|
||||||
|
{{:save type="calendrier" id=$_POST.mod_calendrier nom=$_POST.nom_calendrier par_defaut=$_pardef couleur=$_POST.couleur textecouleur=$_POST.couleur_texte categorie=$_POST.categorie}}
|
||||||
|
{{else}}
|
||||||
|
{{:form_errors}}
|
||||||
|
{{/form}}
|
||||||
|
|
||||||
|
{{* Supprimer un calendrier *}}
|
||||||
|
{{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}}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
{{* ---------- Ajout ou Modification d'un événement (admin) ---------- *}}
|
||||||
|
{{#form on="save_event" }}
|
||||||
|
{{if $_POST.save_event && $est_admin}}
|
||||||
|
{{if !$_POST.event_id}}
|
||||||
|
{{:assign var="_eventKey" value="%s"|uuid}}
|
||||||
|
{{#load where="id = %d"|args:$_POST.calendrier}}
|
||||||
|
{{:assign var="_eventColor" value=$couleur}}
|
||||||
|
{{/load}}
|
||||||
|
{{else}}
|
||||||
|
{{:assign var="_eventKey" value=$_POST.save_event}}
|
||||||
|
{{:assign var="_eventColor" value=$_POST.couleur}}
|
||||||
|
{{/if}}
|
||||||
|
{{:debug post=$_POST _eventKey=$_eventKey _eventColor=$_eventColor}}
|
||||||
|
{{: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=$_eventColor|intval
|
||||||
|
calendrier=$_POST.calendrier|strval|trim}}
|
||||||
|
{{:redirect url="?an=%s&mois=%s"|args:$_POST.retour_an:$_POST.retour_mois}}
|
||||||
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
{{:form_errors}}
|
||||||
|
{{/form}}
|
||||||
|
|
||||||
|
{{* ---------- Suppression d'un événement (admin) ---------- *}}
|
||||||
|
{{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}}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{{* ---------- 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}}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{{* ---------- 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}}
|
||||||
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
name = "Agenda"
|
name = "Agenda"
|
||||||
description = "Calendrier mensuel/semaine/liste, rendez-vous réguliers récurrents (avec exceptions et couleurs), événements ponctuels, purge et tri automatiques."
|
description = "Gestion des calendriers associatif avec vues mensuel/semaine/liste, rendez-vous réguliers récurrents (avec exceptions et couleurs), événements ponctuels, purge et tri automatiques. \nversion 1.1"
|
||||||
author = "Vive le Vélo/Recycl'arz"
|
author = "Vive le Vélo (original) / Recycl'arz"
|
||||||
author_url = "https://recyclarz.bountyarz.ovh"
|
author_url = "https://git.kaz.bzh/bountz/agenda"
|
||||||
restrict_section = "web"
|
restrict_section = "web"
|
||||||
restrict_level = "write"
|
restrict_level = "write"
|
||||||
home_button = false
|
home_button = false
|
||||||
|
|||||||
+6
-39
@@ -1,48 +1,15 @@
|
|||||||
{{*
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="fr">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<style>
|
|
||||||
:root { --terra: #8c3a1e; }
|
|
||||||
* { box-sizing: border-box; }
|
|
||||||
body { margin: 0; padding: 0; font-family: "Trebuchet MS", Helvetica, sans-serif; background: transparent; color: #222; }
|
|
||||||
h4 { margin: 0 0 .4em; color: var(--terra); font-size: 1em; }
|
|
||||||
ul.agenda-upcoming-list { margin: 0 0 .5em; padding: 0; list-style: none; }
|
|
||||||
ul.agenda-upcoming-list li { font-size: .9em; margin-bottom: .3em; }
|
|
||||||
ul.agenda-upcoming-list li b { color: var(--terra); margin-right: .3em; }
|
|
||||||
p.vide { font-size: .9em; color: #777; margin: 0 0 .5em; }
|
|
||||||
p.agenda-lien { margin: 0; font-size: .85em; text-align: right; }
|
|
||||||
p.agenda-lien a { color: var(--terra); }
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
*}}
|
|
||||||
{{*
|
|
||||||
<style>
|
|
||||||
* { box-sizing: border-box; }
|
|
||||||
h4.agenda-upcoming-list { margin: 0 0 .4em; color: #8c3a1e; font-size: .8em; }
|
|
||||||
ul.agenda-upcoming-list { margin: 0 0 .5em; padding: 0; list-style: none; }
|
|
||||||
ul.agenda-upcoming-list li { font-size: .5em; margin-bottom: .3em; }
|
|
||||||
ul.agenda-upcoming-list li b { color: #8c3a1e; margin-right: .3em; }
|
|
||||||
p.vide { font-size: .7em; color: #777; margin: 0 0 .5em; }
|
|
||||||
p.agenda-lien { margin: 0; font-size: .7em; text-align: right; }
|
|
||||||
p.agenda-lien a { color: #8c3a1e; }
|
|
||||||
</style>
|
|
||||||
*}}
|
|
||||||
{{:assign var="aujourdhui" value=$now|date:"Y-m-d"}}
|
{{:assign var="aujourdhui" value=$now|date:"Y-m-d"}}
|
||||||
{{:assign var="where_venir" value="$$.type = 'event' AND $$.date >= '%s' AND ($$.calendrier = 'agenda' OR $$.calendrier IS NULL OR $$.calendrier = '')"|args:$aujourdhui}}
|
|
||||||
|
{{:assign var="where_public" value="$$.type = 'calendrier' AND $$.categorie = 'p' "}}
|
||||||
{{:assign var="event_trouve" value=false}}
|
{{:assign var="event_trouve" value=false}}
|
||||||
<h4>Prochains événements</h4>
|
<h4>Prochains événements</h4>
|
||||||
<ul>
|
<ul>
|
||||||
|
{{#load module="agenda" where=$where_public limit=1}}
|
||||||
|
{{:assign var="where_venir" value="$$.type = 'event' AND $$.date >= '%s' AND $$.calendrier = '%s' "|args:$aujourdhui:$id}}
|
||||||
|
{{/load}}
|
||||||
{{#load module="agenda" where=$where_venir order="$$.date ASC" limit=4}}
|
{{#load module="agenda" where=$where_venir order="$$.date ASC" limit=4}}
|
||||||
{{:assign var="event_trouve" value=true}}
|
{{:assign var="event_trouve" value=true}}
|
||||||
<li><b>{{$date|date_short}}</b> {{$titre}}</li>
|
<li><b>{{$date|date_short}}</b> {{$titre}}</li>
|
||||||
{{/load}}
|
{{/load}}
|
||||||
</ul>
|
</ul>
|
||||||
{{if !$event_trouve}}<p>Aucun événement à venir pour l'instant.</p>{{/if}}
|
{{if !$event_trouve}}<p>Aucun événement à venir pour l'instant.</p>{{/if}}
|
||||||
{{*<p class="agenda-lien"><a href="index.html" target="_top">Voir l'agenda complet →</a></p>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
*}}
|
|
||||||
Reference in new issue
Block a user