lean/view/lean/widget/calendar.phtml
2022-10-12 18:29:59 +00:00

67 lines
2.5 KiB
PHTML

{% use
Ulmus\Entity\Field\Date
%}
{% arguments int $month, int $year %}
{% define "week.heading", int $day, int $month, int $year %}
{% define "day.content", \DateTime $date, bool $today %}
{% define "day.empty", int $day, int $month, int $year %}
{% php
$month = ltrim($month, "0");
$datetime = ( new Date( "{$year}-{$month}-1" ) );
$index = $datetime->format('w');
$dayCount = $datetime->format('t');
$currentDay = 0;
%}
<div class="calendar-wrapper">
<div class='week-heading'>
{% foreach range(1, 7) as $day %}
{% slot "week.heading", $day, $month, $year %}
<div class="day-box">
{# Random calendar date that starts on a sunday #}
{{ substr(( new Date("2019-12-$day") )->formatLocale("%A"), 0, 3) }}
</div>
{% endslot %}
{% endforeach %}
</div>
{% foreach range(0, 5) as $week %}
<div class="week">
{% foreach range(0, 6) as $day %}
{% if ( $week * 6 + $day >= $index ) && ( $currentDay < $dayCount ) %}
{% php
$currentDay++;
%}
{% slot "day.content", new \DateTime("$year-$month-$currentDay"), date("$year-$month-$currentDay") === date('Y-n-j') %}
<div class="day-box {{ $today ? 'today' : '' }}">{{ $date->format('d') }}</div>
{% endslot %}
{% else %}
{% slot "day.empty", $day, $month, $year %}
<div class="day-box"></div>
{% endslot %}
{% endif %}
{% endforeach %}
</div>
{% if $currentDay >= $dayCount %}
{% break %}
{% endif %}
{% endforeach %}
</div>
<style>
.legend {margin:6px 0 0 0; padding:5px 8px;background:#f9f2f2}
.calendar-wrapper {border:1px solid #e3e6f0}
.calendar-wrapper .day-box {position:relative;width:14.29%;border:2px solid #fff;height:60px;display:flex;flex-direction:column;justify-content:center;padding:6px 0; text-align:center}
.calendar-wrapper .day-box.today {border:2px dashed #4e73df;}
.calendar-wrapper .bg-conge,
.calendar-wrapper .bg-pedagogique {position:absolute;top:0;bottom:0;left:0;right:0;opacity:0.5;pointer-events:none;}
.calendar-wrapper .week,
.calendar-wrapper .week-heading {display:flex;}
.week-heading {background:#eaecf4;font-weight:bold;}
.week:nth-child(even) {background:#f9f2f2; }
</style>