Files
Leantime/app/Domain/Widgets/Templates/partials/calendar.blade.php

125 lines
5.4 KiB
PHP

@props([
'includeTitle' => true,
'calendar' => [],
])
@dispatchEvent('beforeCalendar')
<div class="clear minCalendar" style="position:absolute; top:10px; right:35px;">
<button class="btn btn-link btn-round-icon dropdown-toggle f-right" type="button" data-tippy-content="{{ __('text.calendar_view') }}"
data-toggle="dropdown"> <i class="fa-solid fa-calendar-week"></i></button>
<ul class="dropdown-menu pull-right">
<li>
<a class="fc-agendaDay-button fc-button fc-state-default fc-corner-right calendarViewSelect" href="javascript:void(0);"
data-value="multiMonthOneMonth"
@if($tpl->getToggleState("dashboardCalendarView") == 'multiMonthOneMonth') selected='selected' @endif>Month</a>
</li>
<li>
<a class="fc-timeGridWeek-button fc-button fc-state-default fc-corner-right calendarViewSelect" href="javascript:void(0);"
data-value="timeGridWeek" @if($tpl->getToggleState("dashboardCalendarView") == 'timeGridWeek') selected='selected' @endif>Week</a>
</li>
<li>
<a class="fc-agendaWeek-button fc-button fc-state-default calendarViewSelect" href="javascript:void(0);"
data-value="timeGridDay" @if($tpl->getToggleState("dashboardCalendarView") == 'timeGridDay' || empty($tpl->getToggleState("dashboardCalendarView")) ) selected='selected' @endif>Day</a>
</li>
<li><a class="fc-agendaWeek-button fc-button fc-state-default calendarViewSelect" href="javascript:void(0);"
data-value="listWeek" @if($tpl->getToggleState("dashboardCalendarView") == 'listWeek') selected='selected' @endif>List</a></li>
</ul>
</div>
<div class="tw-h-full minCalendar">
<div class="clear"></div>
<div class="fc-toolbar tw-z-10">
<div class="fc-left tw-flex">
<div class="day-selector tw-w-full tw-flex tw-gap-2 tw-mb-4 tw-justify-between"
@php
$currentView = $tpl->getToggleState("dashboardCalendarView") ?: 'timeGridDay';
@endphp
@if ($currentView !== 'timeGridDay') style="display:none" @endif>
@php
$today = dtHelper()->userNow();
$startOfWeek = dtHelper()->userNow()->startOf("week");
$week = [];
for($i = 0; $i < 7; $i++) {
$date = $startOfWeek->modify("+$i days");
$week[] = $date;
}
@endphp
@foreach($week as $day)
<button class="day-button tw-rounded-md tw-w-12 tw-h-12 tw-flex tw-flex-col tw-items-center tw-justify-center tw-text-sm {{ $day->format('Y-m-d') === $today->format('Y-m-d') ? 'today active' : '' }}" data-date="{{ $day->format('Y-m-d') }}">
<span class="tw-text-xs">{{ $day->format('D') }}</span>
<span class="tw-font-medium">{{ $day->format('d') }}</span>
</button>
@endforeach
</div>
</div>
<div class="clear"></div>
</div>
<div class="clear"></div>
<div class="minCalendarWrapper">
</div>
</div>
<script>
var eventSources = [];
var events = {events: [
@foreach ($calendar as $event)
{
title: {!! json_encode($event['title']) !!},
start: new Date({{ format($event['dateFrom'])->jsTimestamp() }}),
@if (isset($event['dateTo']))
end: new Date({{ format($event['dateTo'])->jsTimestamp() }}),
@endif
@if ((isset($event['allDay']) && $event['allDay'] === true))
allDay: true,
@else
allDay: false,
@endif
enitityId: {{ $event['id'] }},
@if (isset($event['eventType']) && $event['eventType'] == 'calendar')
url: '#/calendar/editEvent/{{ $event['id'] }}',
backgroundColor: '{{ $event['backgroundColor'] ?? "var(--accent2)" }}',
borderColor: '{{ $event['borderColor'] ?? "var(--accent2)" }}',
enitityType: "event",
@else
url: '#/tickets/showTicket/{{ $event['id'] }}?projectId={{ $event['projectId'] }}',
backgroundColor: '{{ $event['backgroundColor'] ?? "var(--accent2)" }}',
borderColor: '{{ $event['borderColor'] ?? "var(--accent2)" }}',
enitityType: "ticket",
@endif
},
@endforeach
]};
eventSources.push(events);
<?php
$externalCalendars = $externalCalendars ?? [];
foreach ($externalCalendars as $externalCalendar) { ?>
eventSources.push(
{
url: '<?= BASE_URL ?>/calendar/externalCal/<?= $externalCalendar['id'] ?>',
format: 'ics',
color: '<?= $externalCalendar['colorClass'] ?>',
editable: false,
}
);
<?php } ?>
var initialView = '{{ $tpl->getToggleState("dashboardCalendarView") ? $tpl->getToggleState("dashboardCalendarView") : "timeGridDay" }}';
leantime.calendarController.initWidgetCalendar(".minCalendarWrapper", initialView)
@dispatchEvent('scripts.beforeClose')
</script>