206 lines
10 KiB
HTML
206 lines
10 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns:th="http://www.thymeleaf.org" layout:decorate="~{template}" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
|
|
<head>
|
|
<title>Camp Organizer 2</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|
</head>
|
|
<body>
|
|
<th:block layout:fragment="header">
|
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
|
<li class="nav-item">
|
|
<div class="dropdown">
|
|
<button class="btn btn-hoverborder navbar-collapse" type="button" data-bs-toggle="dropdown" aria-expanded="false">
|
|
<img th:src="@{/images/Icon_Profil.svg}" width="24px" height="24px" />
|
|
</button>
|
|
<ul class="dropdown-menu">
|
|
<li><a class="dropdown-item" th:href="@{${keycloakProfileUrl}}" target="_blank">Benutzername ändern</a></li>
|
|
<li><a class="dropdown-item" th:href="@{${keycloakProfileUrl} + '/password'}" target="_blank">Password ändern</a></li>
|
|
<li><hr /></li>
|
|
<li><a class="dropdown-item" th:href="@{/logout}"><b th:inline="text">[[${currentUser}]]</b> ausloggen</a></li>
|
|
</ul>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('business')">
|
|
<li class="nav-item"><a th:href="@{/business}" class="btn btn-secondary btn-icon-silent">Abrechnung</a></li>
|
|
</ul>
|
|
<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('registrator')">
|
|
<li class="nav-item"><a th:href="@{/confirmation}" class="btn btn-secondary btn-icon-silent">Bestätigung</a></li>
|
|
</ul>
|
|
<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('admin')">
|
|
<li class="nav-item"><a th:href="@{/admin}" class="btn btn-secondary btn-icon-silent">Administration</a></li>
|
|
</ul>
|
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
|
<li class="nav-item"><a href="https://www.onkelwernerfreizeiten.de/cloud" class="btn btn-secondary btn-icon-silent" target="_blank">Nextcloud</a></li>
|
|
</ul>
|
|
</th:block>
|
|
<th:block layout:fragment="content">
|
|
<div class="mainpage">
|
|
<!-- list of camps -->
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col">
|
|
<div style="text-align: center" class="menufont">Hier kannst du dich zu den Freizeiten anmelden:</div>
|
|
</div>
|
|
</div>
|
|
<br />
|
|
<div class="row">
|
|
<div class="col-sm-12 col-md-6 col-lg-3" th:each="c : ${camps}">
|
|
<div class="card" style="background-color: rgba(255, 255, 255, 0.5)">
|
|
<div class="card-body">
|
|
<div class="menufont" th:text="${c.locationName}" style="padding: 8px"></div>
|
|
<div>
|
|
<h1 th:text="${c.name}" class="menufont"></h1>
|
|
</div>
|
|
<br />
|
|
<div>
|
|
<span style="margin: 24px"><img th:src="@{/images/Icon_Alter.svg}" width="24px" height="24px" /></span> <span class="menufont" th:text="${c.minAge} + ' - ' + ${c.maxAge} + ' Jahre'"></span>
|
|
</div>
|
|
<br />
|
|
<div>
|
|
<span style="margin: 24px"><img th:src="@{/images/Icon_Datum.svg}" width="24px" height="24px" /></span> <span class="menufont"
|
|
th:text="${#temporals.format(c.arrive, 'dd.MM.')} + ' - ' + ${#temporals.format(c.depart, 'dd.MM.yyyy')}" th:if="${c.arrive != null && c.depart != null}"></span>
|
|
</div>
|
|
<br />
|
|
<div>
|
|
<span style="margin: 24px"><img th:src="@{/images/Icon_Preis.svg}" width="24px" height="24px" /></span> <span class="menufont" th:text="${c.price}"></span>
|
|
</div>
|
|
<br />
|
|
<div>
|
|
<a class="btn btn-outline-primary form-control menufont" th:href="@{/registration/{id}(id=${c.pk})}">Jetzt anmelden</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<br />
|
|
|
|
<!-- registrations -->
|
|
<script type="text/javascript">
|
|
function mark(e) {
|
|
$(e).css("background", "orange");
|
|
}
|
|
</script>
|
|
<div class="alert alert-primary menufont" th:if="${mybookings.size() < 1}">Es wurden noch keine Anmeldungen für eine Freizeit hinterlegt.</div>
|
|
<div th:if="${mybookings.size() > 0}" class="menufont">Deine bisherigen Anmeldungen:</div>
|
|
<div class="accordion" id="acc" th:if="${mybookings.size() > 0}">
|
|
<div class="accordion-item" th:each="b : ${mybookings}">
|
|
<h2 class="accordion-header" th:id="'acc-head-' + ${b.pk}" th:if="${b.pk}">
|
|
<button th:class="'accordion-button collapsed acc_' + ${b.isOver ? 'over' : b.accept}" type="button" data-bs-toggle="collapse" th:data-bs-target="'#acc-body-' + ${b.pk}"
|
|
aria-expanded="true" th:aria-controls="'#acc-body-' + ${b.pk}">
|
|
<i class="fas fa-check framed framed-green" th:if="${b.accept}"></i> <i class="fas fa-ban framed framed-red" th:if="${b.accept} == false"></i> <i
|
|
class="fas fa-question framed framed-orange" th:if="${b.accept} == null"></i> <span
|
|
th:text="${b.forename + ' ' + b.surname + ' in ' + b.campName + ' ' + #numbers.formatInteger(b.year, 4)}" style="font-weight: bolder"></span> in <span
|
|
th:text="${b.locationName}"></span>
|
|
</button>
|
|
</h2>
|
|
<div th:id="'acc-body-' + ${b.pk}" class="accordion-collapse collapse" th:aria-labelledby="'acc-head-' + ${b.pk}">
|
|
<div class="accordion-body">
|
|
<div class="card">
|
|
<div class="card-header">Freizeitdaten</div>
|
|
<div class="card-body">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-sm-2">Ort:</div>
|
|
<div class="col-sm-10">
|
|
<a th:href="${b.url}" target="_blank" th:text="${b.locationName}"></a>
|
|
</div>
|
|
<div class="col-sm-2">Zeit:</div>
|
|
<div class="col-sm-10">
|
|
<span th:text="${#temporals.format(b.arrive, 'dd.MM.') + ' - ' + #temporals.format(b.depart, 'dd.MM.yyyy')}" th:if="${b.arrive != null and b.depart != null}"></span>
|
|
</div>
|
|
<div class="col-sm-2">Preis:</div>
|
|
<div class="col-sm-10" th:text="${b.price}"></div>
|
|
<div class="col-sm-2">Ferien:</div>
|
|
<div class="col-sm-10" th:text="${b.countries}"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card">
|
|
<div class="card-header">Teilnehmerdaten</div>
|
|
<div class="card-body">
|
|
<form th:action="@{/dashboard/update/}" th:object="${b}" method="post">
|
|
<input type="hidden" th:value="*{pk}" name="pk" />
|
|
<div class="container">
|
|
<div class="row mb-2">
|
|
<div class="col-sm-2">Rolle:</div>
|
|
<span class="col-sm-10"> <span th:if="${b.isTeacher()}">Mitarbeiter</span> <span th:if="${b.isStudent()}">Teilnehmer</span> <span th:if="${b.isDirector()}">Leiter</span> <span
|
|
th:if="${b.isFeeder()}">Küchenteam</span>
|
|
</span>
|
|
</div>
|
|
<div class="row mb-2">
|
|
<div class="col-sm-2">Geschlecht:</div>
|
|
<span class="col-sm-10"> <span th:if="${b.isMale()}">männlich</span> <span th:if="${b.isFemale()}">weiblich</span> <i class="fas fa-info framed framed-white"
|
|
title="Änderungen am Geschlecht wirken sich auch auf den Anmeldestatus aus. Wenn Du Dein Geschlecht ändern möchtest, lösche bitte diese Anmeldung und leg eine neue an. Dann wird neu entschieden, ob noch ein Platz frei ist."></i>
|
|
</span>
|
|
</div>
|
|
<div class="row mb-2">
|
|
<div class="col-sm-2">Vorname:</div>
|
|
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{forename}" name="forename" onchange="mark(this)" /></span>
|
|
</div>
|
|
<div class="row mb-2">
|
|
<div class="col-sm-2">Nachname:</div>
|
|
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{surname}" name="surname" onchange="mark(this)" /></span>
|
|
</div>
|
|
<div class="row mb-2">
|
|
<div class="col-sm-2">Straße:</div>
|
|
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{street}" name="street" onchange="mark(this)" /></span>
|
|
</div>
|
|
<div class="row mb-2">
|
|
<div class="col-sm-2">PLZ:</div>
|
|
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{zip}" name="zip" onchange="mark(this)" /></span>
|
|
</div>
|
|
<div class="row mb-2">
|
|
<div class="col-sm-2">Ort:</div>
|
|
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{city}" name="city" onchange="mark(this)" /></span>
|
|
</div>
|
|
<div class="row mb-2">
|
|
<div class="col-sm-2">Telefon:</div>
|
|
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{phone}" name="phone" onchange="mark(this)" /></span>
|
|
</div>
|
|
<div class="row mb-2">
|
|
<div class="col-sm-2">Geburtstag:</div>
|
|
<span class="col-sm-10" th:text="${#temporals.format(b.birthdate, 'dd.MM.yyyy')}"></span>
|
|
</div>
|
|
<div class="row mb-2">
|
|
<div class="col-sm-2">E-Mail:</div>
|
|
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{email}" name="email" onchange="mark(this)" /></span>
|
|
</div>
|
|
<div class="row mb-2">
|
|
<div class="col-sm-2">Foto-Einverständnis:</div>
|
|
<span class="col-sm-10"><span th:text="${b.consentCatalogPhoto ? 'ja' : 'nein'}" th:if="${b.consentCatalogPhoto}"></span></span>
|
|
</div>
|
|
<div class="row mb-2">
|
|
<div class="col-sm-2">Kommentar:</div>
|
|
<span class="col-sm-10"><textarea class="form-control" th:text="*{comment}" name="comment" onchange="mark(this)"></textarea></span>
|
|
</div>
|
|
<div class="row mb-2">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-8">
|
|
<input type="submit" class="btn btn-primary" value="Änderungen übernehmen" />
|
|
</div>
|
|
<div class="col-sm-2">
|
|
<a th:href="@{/registration/cancel/{id}(id=${b.pk})}" class="btn btn-outline-danger" th:if="${!b.isOver}">stornieren</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<div class="alert alert-primary" th:if="${b.created != null}">
|
|
angemeldet am <span th:text="${#temporals.format(b.created, 'dd.MM.yyyy')}"></span> von <span th:text="${b.subscriber}"></span>
|
|
</div>
|
|
<div th:class="'alert ' + ${b.accept ? 'alert-success' : 'alert-danger'}" th:if="${b.accept != null}">
|
|
<span th:text="${b.accept ? 'bestätigt' : 'abgelehnt'}"></span> von <span th:text="${b.registrator}"></span>
|
|
</div>
|
|
<div class="alert alert-warning" th:if="${b.isOver}">Die Freizeit ist bereits vorbei.</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</th:block>
|
|
</body>
|
|
</html> |