Files
lean/view/lean/widget/calendar.phtml
T
mcndave ec313ff269 - Added PHP 8.5 supports
- Fixed some minor bugs
2026-07-14 15:24:12 +00:00

67 lines
2.6 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 #}
{{ new Date("2019-12-$day")->formatLocaleIntl(\IntlDateFormatter::SHORT, \IntlDateFormatter::NONE, 'EEE') }}
</div>
{% endslot %}
{% endforeach %}
</div>
{% foreach range(0, 5) as $week %}
<div class="week">
{% foreach range(0, 6) as $day %}
{% php $dayType = in_array($day, [0, 6]) ? 'week-end' : 'week-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' : '' }} {{ $dayType }}">{{ $date->format('d') }}</div>
{% endslot %}
{% else %}
{% slot "day.empty", $day, $month, $year %}
<div class="day-box {{ $dayType }}"></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>