add hideSessionsOnHome button

This commit is contained in:
isUnknown 2024-09-19 16:12:42 +02:00
parent 2ceb483d39
commit a274ce90c4
5 changed files with 74 additions and 64 deletions

View file

@ -5,7 +5,7 @@
width: 100%;
display: flex;
align-items: center;
z-index: 4;
z-index: 6;
}
.calendar-strip__selector {

View file

@ -168,6 +168,9 @@
.no-margin {
margin: 0 !important;
}
.no-border {
border: none !important;
}
.shift-large {
margin-left: var(--shift-large);

View file

@ -129,6 +129,11 @@ tabs:
label: Places disponibles
type: text
width: 1/4
hideSessionsOnHome:
label: Ne pas afficher les séances sur la page d'accueil
type: toggle
default: false
help: Si l'option est active, dans le calendrier de la page d'accueil l'événement sera affiché sans le détail des différentes séances.
- width: 1/1
fields:
line:

View file

@ -32,7 +32,12 @@ return [
$eventInfos = [
"title" => $event->title()->value(),
"place" => $event->place()->value(),
"authors" => $event->authors()->value()
"authors" => $event->authors()->value(),
"hideSessionsOnHome" => (bool) $event->hideSessionsOnHome()->value(),
"eventUrl" => $event->url(),
"public" => $event->public()->value(),
"duration" => $event->duration()->value(),
"color" => $event->color()->value(),
];
if ($event->isMapadoEvent() == 'false') {
@ -42,13 +47,9 @@ return [
$sessionDay = intval($session->date()->toDate('d'));
$calendar[$sessionMonth][$sessionDay]['sessions'][] = array_merge($eventInfos, [
"color" => $event->color()->value(),
"day" => $sessionDay,
"time" => $session->timeComplement()->isEmpty() == 'true' ? $session->time()->value() : $session->time()->value() . ' ' . $session->timeComplement()->value(),
"place" => $event->place()->value(),
"duration" => $event->duration()->value(),
"ticketingUrl" => $event->bookingUrl()->value(),
"eventUrl" => $event->url(),
]);
}
}
@ -73,16 +74,12 @@ return [
$bookableStock = $session->notInStockContingentBookableStock;
$calendar[$sessionMonth][$sessionDay]['sessions'][] = array_merge($eventInfos, [
"color" => $event->color()->value(),
"day" => $sessionDay,
"time" => str_replace(':', 'h', $startTime),
"duration" => $event->duration()->value(),
"place" => $event->place()->value(),
"public" => $event->public()->value(),
"eventUrl" => $event->url(),
"ticketingUrl" => $ticketingUrl,
"bookableStock" => $bookableStock,
"totalStock" => (int) $event->totalStock()->value(),
"hideSessionsOnHome" => (bool) $event->hideSessionsOnHome()->value()
]);
}

View file

@ -1,5 +1,6 @@
<section
class="calendar-strip"
@mouseleave="open = false"
x-data="{
calendar: createEmptyCalendar(),
currentMonthIndex: dayjs().month() + 1,
@ -153,62 +154,66 @@
<div class="calendar-strip__date" :class="open ? 'open' : ''">
<ul class="sessions">
<template x-for="session in targetSessions">
<li
x-data="{
stockThreshold: (session.totalStock / 100) * 25
}"
:style="'--color: ' + session.color"
class="session"
>
<div class="left-column mobile-group">
<a class="session__event-link" :href="session.eventUrl" title="En savoir plus"></a>
<div class="session__info session__info--slot">
<p x-html="`${session.day} ${monthName}`"></p>
<p x-html="session.time"></p>
<template x-for="(session, index) in targetSessions">
<template x-if="!session.hideSessionsOnHome || index === 0">
<li
x-data="{
stockThreshold: (session.totalStock / 100) * 25
}"
:style="'--color: ' + session.color"
class="session no-border"
>
<div class="left-column mobile-group">
<a class="session__event-link" :href="session.eventUrl" title="En savoir plus"></a>
<div class="session__info session__info--slot">
<p x-html="`${session.day} ${monthName}`"></p>
<template x-if="!session.hideSessionsOnHome">
<p x-html="session.time"></p>
</template>
</div>
</div>
</div>
<div class="middle-column mobile-group">
<div class="session__info session__info--title">
<p><strong x-html="`<strong>${session.title}</strong>`"></strong></p>
<p x-html="session.authors"></p>
<div class="middle-column mobile-group">
<div class="session__info session__info--title">
<p><strong x-html="`<strong>${session.title}</strong>`"></strong></p>
<p x-html="session.authors"></p>
</div>
</div>
</div>
<div class="session__info session__info--duration desktop">
<p x-text="session.duration ? 'Durée : ' + session.duration : ''"></p>
<p x-text="session.public ? session.public : ''"></p>
</div>
<div x-text="`${session.place}`" class="session__info session__info--place desktop"></div>
<div class="right-column mobile-group">
<template x-if="!session.ticketingUrl">
<div class="session__info session__info--book session__info--book-free">
<a class="ticket-link" target="_blank" title="Entrée libre" disabled><?php snippet('ticket') ?> <span class="desktop">Entrée libre</span></a>
</div>
</template>
<template x-if="session.ticketingUrl && !session.bookableStock">
<div class="session__info session__info--book">
<a class="ticket-link" :href="session.ticketingUrl" target="_blank" title="Entrée libre"><?php snippet('ticket') ?> <span class="desktop">Réserver</span></a>
</div>
</template>
<template x-if="session.bookableStock === 0">
<div class="session__info session__info--book session__info--book-sold-out">
<a class="ticket-link" title="Plus de places disponibles" disabled><?php snippet('ticket') ?> <span class="desktop">Complet</span></a>
</div>
</template>
<template x-if="session.bookableStock > stockThreshold">
<div class="session__info session__info--book session__info--book-open">
<a class="ticket-link" title="Plateforme de réservation" :href="session.ticketingUrl" target="_blank"><?php snippet('ticket') ?> <span class="desktop">Billetterie</span></a>
</div>
</template>
<template x-if="session.bookableStock !== 0 && session.bookableStock < stockThreshold">
<div class="session__info session__info--book session__info--book-few-places">
<a class="ticket-link" title="Plateforme de réservation" :href="session.ticketingUrl" target="_blank"><?php snippet('ticket') ?> <span class="desktop">Plus que quelques places !</span></a>
</div>
</template>
</div>
</li>
<div class="session__info session__info--duration desktop">
<p x-text="session.duration ? 'Durée : ' + session.duration : ''"></p>
<p x-text="session.public ? session.public : ''"></p>
</div>
<div x-text="`${session.place}`" class="session__info session__info--place desktop"></div>
<div class="right-column mobile-group">
<template x-if="!session.ticketingUrl">
<div class="session__info session__info--book session__info--book-free">
<a class="ticket-link" target="_blank" title="Entrée libre" disabled><?php snippet('ticket') ?> <span class="desktop">Entrée libre</span></a>
</div>
</template>
<template x-if="session.ticketingUrl && !session.hasOwnProperty('bookableStock')">
<div class="session__info session__info--book">
<a class="ticket-link" :href="session.ticketingUrl" target="_blank" title="Entrée libre"><?php snippet('ticket') ?> <span class="desktop">Réserver</span></a>
</div>
</template>
<template x-if="session.bookableStock === 0">
<div class="session__info session__info--book session__info--book-sold-out">
<a class="ticket-link" title="Plus de places disponibles" disabled><?php snippet('ticket') ?> <span class="desktop">Complet</span></a>
</div>
</template>
<template x-if="session.bookableStock > stockThreshold">
<div class="session__info session__info--book session__info--book-open">
<a class="ticket-link" title="Plateforme de réservation" :href="session.ticketingUrl" target="_blank"><?php snippet('ticket') ?> <span class="desktop">Billetterie</span></a>
</div>
</template>
<template x-if="session.bookableStock !== 0 && session.bookableStock < stockThreshold">
<div class="session__info session__info--book session__info--book-few-places">
<a class="ticket-link" title="Plateforme de réservation" :href="session.ticketingUrl" target="_blank"><?php snippet('ticket') ?> <span class="desktop">Plus que quelques places !</span></a>
</div>
</template>
</div>
</li>
</template>
</template>
</ul>
</div>