layout cleanup
This commit is contained in:
parent
55ff76c29b
commit
abeba4935c
@ -12,6 +12,13 @@
|
|||||||
<attribute name="gradle_used_by_scope" value="main,test"/>
|
<attribute name="gradle_used_by_scope" value="main,test"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" output="bin/test" path="src/test/java">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="gradle_scope" value="test"/>
|
||||||
|
<attribute name="gradle_used_by_scope" value="test"/>
|
||||||
|
<attribute name="test" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17/"/>
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17/"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
|
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer">
|
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer">
|
||||||
|
@ -1,13 +1,2 @@
|
|||||||
arguments=
|
|
||||||
auto.sync=false
|
|
||||||
build.scans.enabled=false
|
|
||||||
connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
|
|
||||||
connection.project.dir=
|
connection.project.dir=
|
||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
gradle.user.home=
|
|
||||||
java.home=
|
|
||||||
jvm.arguments=
|
|
||||||
offline.mode=false
|
|
||||||
override.workspace.settings=false
|
|
||||||
show.console.view=false
|
|
||||||
show.executions.view=false
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project-modules id="moduleCoreId" project-version="1.5.0">
|
<project-modules id="moduleCoreId" project-version="1.5.0">
|
||||||
<wb-module deploy-name="camporganizer2">
|
<wb-module deploy-name="CampOrganizer2">
|
||||||
<property name="context-root" value="camporganizer2"/>
|
<property name="context-root" value="CampOrganizer2"/>
|
||||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
|
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
|
||||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
|
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
|
||||||
</wb-module>
|
</wb-module>
|
||||||
|
@ -64,6 +64,7 @@ dependencies {
|
|||||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||||
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
|
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
|
||||||
implementation 'de.jottyfan:COJooq:2021.02'
|
implementation 'de.jottyfan:COJooq:2021.02'
|
||||||
|
implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:3.0.0'
|
||||||
runtimeOnly 'org.springframework.boot:spring-boot-starter-tomcat'
|
runtimeOnly 'org.springframework.boot:spring-boot-starter-tomcat'
|
||||||
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
||||||
testImplementation 'org.springframework.security:spring-security-test'
|
testImplementation 'org.springframework.security:spring-security-test'
|
||||||
|
@ -12,6 +12,8 @@ import org.springframework.web.bind.annotation.GetMapping;
|
|||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
|
||||||
|
import de.jottyfan.camporganizer.module.registration.KeycloakRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author jotty
|
* @author jotty
|
||||||
@ -24,6 +26,9 @@ public class IndexController extends CommonController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private HttpServletRequest request;
|
private HttpServletRequest request;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private KeycloakRepository keycloak;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IndexService service;
|
private IndexService service;
|
||||||
|
|
||||||
@ -39,6 +44,7 @@ public class IndexController extends CommonController {
|
|||||||
super.setupSession(model, request);
|
super.setupSession(model, request);
|
||||||
model.addAttribute("mybookings", service.getBookingsOf(super.getCurrentUser(request)));
|
model.addAttribute("mybookings", service.getBookingsOf(super.getCurrentUser(request)));
|
||||||
model.addAttribute("bookingBean", new BookingBean());
|
model.addAttribute("bookingBean", new BookingBean());
|
||||||
|
model.addAttribute("keycloakProfileUrl", keycloak.getUserClientUrl());
|
||||||
return "/dashboard";
|
return "/dashboard";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,6 +23,17 @@ public class KeycloakRepository {
|
|||||||
@Value("${keycloak.realm:ow}")
|
@Value("${keycloak.realm:ow}")
|
||||||
private String keycloakRealm;
|
private String keycloakRealm;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get the url of the user client
|
||||||
|
*
|
||||||
|
* @return the url of the user client
|
||||||
|
*/
|
||||||
|
public String getUserClientUrl() {
|
||||||
|
String url = keycloakUrl == null ? null
|
||||||
|
: (keycloakUrl.substring(0, keycloakUrl.length() - (keycloakUrl.endsWith("/") ? 1 : 0)));
|
||||||
|
return String.format("%s/realms/%s/account/", url, keycloakRealm);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* register the login in keycloak
|
* register the login in keycloak
|
||||||
*
|
*
|
||||||
@ -32,7 +43,8 @@ public class KeycloakRepository {
|
|||||||
public void register(String login, String password) {
|
public void register(String login, String password) {
|
||||||
// TODO: check for trailing and leading /
|
// TODO: check for trailing and leading /
|
||||||
String registrationUrl = String.format("%s/admin/realms/%s/users", keycloakUrl, keycloakRealm);
|
String registrationUrl = String.format("%s/admin/realms/%s/users", keycloakUrl, keycloakRealm);
|
||||||
// see https://www.keycloak.org/docs-api/17.0/rest-api/index.html#_users_resource
|
// see
|
||||||
|
// https://www.keycloak.org/docs-api/17.0/rest-api/index.html#_users_resource
|
||||||
// https://canada1.discourse-cdn.com/free1/uploads/keycloak/original/2X/3/379bbfe8857de117771149174a96e4216ebe9c76.png
|
// https://canada1.discourse-cdn.com/free1/uploads/keycloak/original/2X/3/379bbfe8857de117771149174a96e4216ebe9c76.png
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
LOGGER.error("not yet implemented registration of user {} in keycloak", login);
|
LOGGER.error("not yet implemented registration of user {} in keycloak", login);
|
||||||
|
@ -96,6 +96,22 @@ div {
|
|||||||
/* 60 px is the current height of the headline; TODO: calculate it */
|
/* 60 px is the current height of the headline; TODO: calculate it */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.acc_true {
|
||||||
|
background-image: linear-gradient(to bottom right, #cfc, #afa) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.acc_false {
|
||||||
|
background-image: linear-gradient(to bottom right, #fcc, #faa) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.acc_null {
|
||||||
|
background-image: linear-gradient(to bottom right, #fdb, #fca) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right-dist {
|
||||||
|
margin-right: 28px;
|
||||||
|
}
|
||||||
|
|
||||||
.middlecenter {
|
.middlecenter {
|
||||||
margin: auto;
|
margin: auto;
|
||||||
top: 40vh;
|
top: 40vh;
|
||||||
|
@ -1,89 +1,94 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:replace="~{template :: layout(~{::title}, ~{::libs}, ~{::header}, ~{::content})}" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
|
<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>
|
<head>
|
||||||
<title>Camp Organizer Business</title>
|
<title>Camp Organizer Business</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
<libs> </libs>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<th:block layout:fragment="header">
|
||||||
<a th:href="@{/}" class="btn btn-secondary btn-icon-silent">Hauptseite</a>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<a th:href="@{/business/}" class="btn btn-secondary btn-icon-silent">Finanzübersicht</a>
|
<li class="nav-item"><a th:href="@{/}" class="btn btn-secondary btn-icon-silent">Hauptseite</a></li>
|
||||||
<a th:href="@{/business/bookings}" class="btn btn-secondary btn-icon-silent" sec:authorize="hasRole('business_booking')">Buchungsübersicht</a>
|
</ul>
|
||||||
</header>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<content>
|
<li class="nav-item"><a th:href="@{/business/}" class="btn btn-secondary btn-icon-silent">Finanzübersicht</a></li>
|
||||||
<div class="mainpage">
|
</ul>
|
||||||
<div class="container" style="max-width: 100%">
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<div class="row">
|
<li class="nav-item"><a th:href="@{/business/bookings}" class="btn btn-secondary btn-icon-silent" sec:authorize="hasRole('business_booking')">Buchungsübersicht</a></li>
|
||||||
<div class="col">
|
</ul>
|
||||||
<div class="card" style="width: 480px" sec:authorize="hasRole('business_booking')">
|
</th:block>
|
||||||
<div class="card-header">Angemeldete Person</div>
|
<th:block layout:fragment="content">
|
||||||
<div class="card-body">
|
<div class="mainpage">
|
||||||
<table class="table table-striped">
|
<div class="container" style="max-width: 100%">
|
||||||
<tbody>
|
<div class="row">
|
||||||
<tr>
|
<div class="col">
|
||||||
<th>Name</th>
|
<div class="card" style="width: 480px" sec:authorize="hasRole('business_booking')">
|
||||||
<td th:text="${booker.name}"></td>
|
<div class="card-header">Angemeldete Person</div>
|
||||||
</tr>
|
<div class="card-body">
|
||||||
<tr>
|
<table class="table table-striped">
|
||||||
<th>Geschlecht</th>
|
<tbody>
|
||||||
<td th:text="${booker.sex}"></td>
|
<tr>
|
||||||
</tr>
|
<th>Name</th>
|
||||||
<tr>
|
<td th:text="${booker.name}"></td>
|
||||||
<th>Freizeit</th>
|
</tr>
|
||||||
<td><a class="tablelink" th:href="@{/business/camp/{id}(id=${booker.campId})}" th:text="${booker.camp}"></a></td>
|
<tr>
|
||||||
</tr>
|
<th>Geschlecht</th>
|
||||||
<tr>
|
<td th:text="${booker.sex}"></td>
|
||||||
<th>Rolle</th>
|
</tr>
|
||||||
<td th:text="${booker.role}"></td>
|
<tr>
|
||||||
</tr>
|
<th>Freizeit</th>
|
||||||
<tr>
|
<td><a class="tablelink" th:href="@{/business/camp/{id}(id=${booker.campId})}" th:text="${booker.camp}"></a></td>
|
||||||
<th>Angemeldet</th>
|
</tr>
|
||||||
<td th:text="${#temporals.format(booker.bookingDate, 'dd.MM.yyyy')}"></td>
|
<tr>
|
||||||
</tr>
|
<th>Rolle</th>
|
||||||
<tr>
|
<td th:text="${booker.role}"></td>
|
||||||
<th>Bestätigt</th>
|
</tr>
|
||||||
<td th:text="${booker.accept == null ? '' : (booker.accept ? 'Ja' : 'abgelehnt')}"></td>
|
<tr>
|
||||||
</tr>
|
<th>Angemeldet</th>
|
||||||
<tr>
|
<td th:text="${#temporals.format(booker.bookingDate, 'dd.MM.yyyy')}"></td>
|
||||||
<th>Preis</th>
|
</tr>
|
||||||
<td th:text="${booker.price}" />
|
<tr>
|
||||||
</tr>
|
<th>Bestätigt</th>
|
||||||
<tr>
|
<td th:text="${booker.accept == null ? '' : (booker.accept ? 'Ja' : 'abgelehnt')}"></td>
|
||||||
<th>Kontostand</th>
|
</tr>
|
||||||
<td><span th:text="${#numbers.formatDecimal(booker.paid, 1, 2) + ' €'}" th:if="${booker.paid != null}"></span>
|
<tr>
|
||||||
</tr>
|
<th>Preis</th>
|
||||||
</tbody>
|
<td th:text="${booker.price}" />
|
||||||
</table>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Kontostand</th>
|
||||||
|
<td><span th:text="${#numbers.formatDecimal(booker.paid, 1, 2) + ' €'}" th:if="${booker.paid != null}"></span>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="col">
|
||||||
<div class="col">
|
<div class="card" style="width: 480px" sec:authorize="hasRole('business_booking')">
|
||||||
<div class="card" style="width: 480px" sec:authorize="hasRole('business_booking')">
|
<div class="card-header">Einzahlung</div>
|
||||||
<div class="card-header">Einzahlung</div>
|
<div class="card-body">
|
||||||
<div class="card-body">
|
<div class="alert alert-primary alert-dismissible fade show" role="alert">
|
||||||
<div class="alert alert-primary alert-dismissible fade show" role="alert">
|
Ein negativer Betrag kommt einer Auszahlung gleich.
|
||||||
Ein negativer Betrag kommt einer Auszahlung gleich.
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Schließen"></button>
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Schließen"></button>
|
</div>
|
||||||
</div>
|
<form action="#" th:action="@{'/business/bookings/payment/' + ${booker.pk}}" th:object="${addBean}" method="post">
|
||||||
<form action="#" th:action="@{'/business/bookings/payment/' + ${booker.pk}}" th:object="${addBean}" method="post">
|
<div class="container">
|
||||||
<div class="container">
|
<div class="row">
|
||||||
<div class="row">
|
<div class="col-sm-8">
|
||||||
<div class="col-sm-8">
|
<input type="number" class="form-control" step="0.01" th:field="*{payment}" />
|
||||||
<input type="number" class="form-control" step="0.01" th:field="*{payment}" />
|
</div>
|
||||||
</div>
|
<div class="col-sm-4">
|
||||||
<div class="col-sm-4">
|
<input type="submit" class="btn btn-outline-primary" value="einzahlen">
|
||||||
<input type="submit" class="btn btn-outline-primary" value="einzahlen">
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
</form>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</th:block>
|
||||||
</content>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,84 +1,87 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:replace="~{template :: layout(~{::title}, ~{::libs}, ~{::header}, ~{::content})}" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
|
<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>
|
<head>
|
||||||
<title>Camp Organizer Business</title>
|
<title>Camp Organizer Business</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
<libs> </libs>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<th:block layout:fragment="header">
|
||||||
<a th:href="@{/}" class="btn btn-secondary btn-icon-silent">Hauptseite</a>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<a th:href="@{/business/}" class="btn btn-secondary btn-icon-silent">Finanzübersicht</a>
|
<li class="nav-item"><a th:href="@{/}" class="btn btn-secondary btn-icon-silent">Hauptseite</a></li>
|
||||||
</header>
|
</ul>
|
||||||
<content>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<div class="mainpage">
|
<li class="nav-item"><a th:href="@{/business/}" class="btn btn-secondary btn-icon-silent">Finanzübersicht</a></li>
|
||||||
<div class="card" sec:authorize="hasRole('business_booking')">
|
</ul>
|
||||||
<div class="card-header">Angemeldete Personen</div>
|
</th:block>
|
||||||
<div class="card-body">
|
<th:block layout:fragment="content">
|
||||||
<table id="bookers" class="table table-striped">
|
<div class="mainpage">
|
||||||
<thead>
|
<div class="card" sec:authorize="hasRole('business_booking')">
|
||||||
<tr>
|
<div class="card-header">Angemeldete Personen</div>
|
||||||
<th>Name</th>
|
<div class="card-body">
|
||||||
<th>Geschlecht</th>
|
<table id="bookers" class="table table-striped">
|
||||||
<th>Freizeit</th>
|
<thead>
|
||||||
<th>Rolle</th>
|
|
||||||
<th>Kontostand</th>
|
|
||||||
<th>Angemeldet</th>
|
|
||||||
<th>Bestätigt</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<th:block th:each="b : ${bookers}">
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="middled"><a class="tablelink" th:href="@{/business/bookings/{id}(id=${b.pk})}" title="bearbeiten" th:text="${b.name}"></a></td>
|
<th>Name</th>
|
||||||
<td class="middled" th:text="${b.sex}"></td>
|
<th>Geschlecht</th>
|
||||||
<td class="middled" th:text="${b.camp}"></td>
|
<th>Freizeit</th>
|
||||||
<td class="middled" th:text="${b.role}"></td>
|
<th>Rolle</th>
|
||||||
<td class="middled">
|
<th>Kontostand</th>
|
||||||
<form action="#" th:action="@{'/business/bookings/listpayment/' + ${b.pk}}" th:object="${addBean}" method="post">
|
<th>Angemeldet</th>
|
||||||
<input th:id="'searchfield' + ${b.pk}" type="hidden" th:name="search" />
|
<th>Bestätigt</th>
|
||||||
<div class="container">
|
</tr>
|
||||||
<div class="row">
|
</thead>
|
||||||
<div class="col-sm-4" style="text-align: right">
|
<tbody>
|
||||||
<span th:text="${#numbers.formatDecimal(b.paid, 1, 2) + ' €'}" style="font-size: x-large" th:if="${b.paid != null}"></span>
|
<th:block th:each="b : ${bookers}">
|
||||||
</div>
|
<tr>
|
||||||
<div class="col-sm-4">
|
<td class="middled"><a class="tablelink" th:href="@{/business/bookings/{id}(id=${b.pk})}" title="bearbeiten" th:text="${b.name}"></a></td>
|
||||||
<input type="number" step="0.01" class="form-control" th:field="*{payment}" />
|
<td class="middled" th:text="${b.sex}"></td>
|
||||||
</div>
|
<td class="middled" th:text="${b.camp}"></td>
|
||||||
<div class="col-sm-4">
|
<td class="middled" th:text="${b.role}"></td>
|
||||||
<input type="submit" class="btn btn-outline-primary" th:onclick="'setSearchField(' + ${b.pk} + ')'" style="padding: 4px" value="einzahlen" />
|
<td class="middled">
|
||||||
|
<form action="#" th:action="@{'/business/bookings/listpayment/' + ${b.pk}}" th:object="${addBean}" method="post">
|
||||||
|
<input th:id="'searchfield' + ${b.pk}" type="hidden" th:name="search" />
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-4" style="text-align: right">
|
||||||
|
<span th:text="${#numbers.formatDecimal(b.paid, 1, 2) + ' €'}" style="font-size: x-large" th:if="${b.paid != null}"></span>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<input type="number" step="0.01" class="form-control" th:field="*{payment}" />
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<input type="submit" class="btn btn-outline-primary" th:onclick="'setSearchField(' + ${b.pk} + ')'" style="padding: 4px" value="einzahlen" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
</form>
|
</td>
|
||||||
</td>
|
<td class="middled" th:text="${#temporals.format(b.bookingDate, 'dd.MM.yyyy')}"></td>
|
||||||
<td class="middled" th:text="${#temporals.format(b.bookingDate, 'dd.MM.yyyy')}"></td>
|
<td class="middled" th:text="${b.accept == null ? '' : (b.accept ? 'Ja' : 'abgelehnt')}"></td>
|
||||||
<td class="middled" th:text="${b.accept == null ? '' : (b.accept ? 'Ja' : 'abgelehnt')}"></td>
|
</tr>
|
||||||
</tr>
|
</th:block>
|
||||||
</th:block>
|
</tbody>
|
||||||
</tbody>
|
</table>
|
||||||
</table>
|
<script th:inline="javascript">
|
||||||
<script th:inline="javascript">
|
/*<![CDATA[*/
|
||||||
/*<![CDATA[*/
|
var searchValue = /*[[${search}]]*/'';
|
||||||
var searchValue = /*[[${search}]]*/ '';
|
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$("#bookers").DataTable({
|
$("#bookers").DataTable({
|
||||||
language : locale_de,
|
language : locale_de,
|
||||||
search : {
|
search : {
|
||||||
search : searchValue
|
search : searchValue
|
||||||
}
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
function setSearchField(x) {
|
function setSearchField(x) {
|
||||||
$("#searchfield" + x).val($("#bookers").DataTable().search());
|
$("#searchfield" + x).val($("#bookers").DataTable().search());
|
||||||
}
|
}
|
||||||
/*]]>*/
|
/*]]>*/
|
||||||
</script>
|
</script>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</th:block>
|
||||||
</content>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,49 +1,54 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:replace="~{template :: layout(~{::title}, ~{::libs}, ~{::header}, ~{::content})}" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
|
<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>
|
<head>
|
||||||
<title>Camp Organizer Business</title>
|
<title>Camp Organizer Business</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
<libs></libs>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<th:block layout:fragment="header">
|
||||||
<a th:href="@{/}" class="btn btn-secondary btn-icon-silent">Hauptseite</a>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<a th:href="@{/business/bookings}" class="btn btn-secondary btn-icon-silent" sec:authorize="hasRole('business_booking')">Buchungsübersicht</a>
|
<li class="nav-item"><a th:href="@{/}" class="btn btn-secondary btn-icon-silent">Hauptseite</a></li>
|
||||||
<a th:href="@{/business/privileges}" class="btn btn-secondary btn-icon-silent" sec:authorize="hasRole('admin')">Nutzerverwaltung</a>
|
</ul>
|
||||||
</header>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<content>
|
<li class="nav-item"><a th:href="@{/business/bookings}" class="btn btn-secondary btn-icon-silent" sec:authorize="hasRole('business_booking')">Buchungsübersicht</a></li>
|
||||||
<div class="mainpage">
|
</ul>
|
||||||
<div class="card" style="width: 640px">
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<div class="card-header">Finanzübersicht über alle Freizeiten</div>
|
<li class="nav-item"><a th:href="@{/business/privileges}" class="btn btn-secondary btn-icon-silent" sec:authorize="hasRole('admin')">Nutzerverwaltung</a></li>
|
||||||
<div class="card-body">
|
</ul>
|
||||||
<table id="camps" class="table table-striped">
|
</th:block>
|
||||||
<thead>
|
<th:block layout:fragment="content">
|
||||||
<tr>
|
<div class="mainpage">
|
||||||
<th scope="col">Jahr</th>
|
<div class="card" style="width: 640px">
|
||||||
<th scope="col">Freizeit</th>
|
<div class="card-header">Finanzübersicht über alle Freizeiten</div>
|
||||||
<th scope="col">Kontostand</th>
|
<div class="card-body">
|
||||||
</tr>
|
<table id="camps" class="table table-striped">
|
||||||
</thead>
|
<thead>
|
||||||
<tbody>
|
|
||||||
<th:block th:each="b : ${campBudgets}" sec:authorize="hasRole('business')">
|
|
||||||
<tr>
|
<tr>
|
||||||
<td th:text="${#numbers.formatDecimal(b.campYear, 1, 0)}"></td>
|
<th scope="col">Jahr</th>
|
||||||
<td><a th:href="@{/business/camp/{id}(id=${b.campId})}" th:text="${b.campName}" class="tablelink" title="Freizeitübersicht laden"></a></td>
|
<th scope="col">Freizeit</th>
|
||||||
<td th:text="${#numbers.formatDecimal(b.budget, 1, 2) + ' €'}"></td>
|
<th scope="col">Kontostand</th>
|
||||||
</tr>
|
</tr>
|
||||||
</th:block>
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
<th:block th:each="b : ${campBudgets}" sec:authorize="hasRole('business')">
|
||||||
<script>
|
<tr>
|
||||||
$(document).ready(function() {
|
<td th:text="${#numbers.formatDecimal(b.campYear, 1, 0)}"></td>
|
||||||
$("#camps").DataTable({
|
<td><a th:href="@{/business/camp/{id}(id=${b.campId})}" th:text="${b.campName}" class="tablelink" title="Freizeitübersicht laden"></a></td>
|
||||||
language: locale_de
|
<td th:text="${#numbers.formatDecimal(b.budget, 1, 2) + ' €'}"></td>
|
||||||
|
</tr>
|
||||||
|
</th:block>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
$("#camps").DataTable({
|
||||||
|
language : locale_de
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
</script>
|
||||||
</script>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</th:block>
|
||||||
</content>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,104 +1,107 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:replace="~{template :: layout(~{::title}, ~{::libs}, ~{::header}, ~{::content})}" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
|
<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>
|
<head>
|
||||||
<title>Camp Organizer Business</title>
|
<title>Camp Organizer Business</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
<libs> </libs>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<th:block layout:fragment="header">
|
||||||
<a th:href="@{/}" class="btn btn-secondary btn-icon-silent">Hauptseite</a>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<a th:href="@{/business/}" class="btn btn-secondary btn-icon-silent">Finanzübersicht</a>
|
<li class="nav-item"><a th:href="@{/}" class="btn btn-secondary btn-icon-silent">Hauptseite</a></li>
|
||||||
</header>
|
</ul>
|
||||||
<content>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<div class="mainpage">
|
<li class="nav-item"><a th:href="@{/business/}" class="btn btn-secondary btn-icon-silent">Finanzübersicht</a></li>
|
||||||
<div class="container" style="max-width: 100%">
|
</ul>
|
||||||
<div class="row">
|
</th:block>
|
||||||
<div class="col">
|
<th:block layout:fragment="content">
|
||||||
<div class="card" style="width: 480px" th:if="${camp != null}">
|
<div class="mainpage">
|
||||||
<div class="card-header">
|
<div class="container" style="max-width: 100%">
|
||||||
<span th:text="${camp.name}"></span> von <span th:text="${#numbers.formatInteger(camp.year, 0)}"></span>
|
<div class="row">
|
||||||
</div>
|
<div class="col">
|
||||||
<div class="card-body">
|
<div class="card" style="width: 480px" th:if="${camp != null}">
|
||||||
<table class="table table-striped">
|
<div class="card-header">
|
||||||
<tbody>
|
<span th:text="${camp.name}"></span> von <span th:text="${#numbers.formatInteger(camp.year, 0)}"></span>
|
||||||
<tr>
|
</div>
|
||||||
<td>Freizeitname</td>
|
<div class="card-body">
|
||||||
<th th:text="${camp.name}"></th>
|
<table class="table table-striped">
|
||||||
</tr>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Zeit</td>
|
<td>Freizeitname</td>
|
||||||
<th><span th:text="${#temporals.format(camp.arrive, 'dd.MM.')}"></span> - <span th:text="${#temporals.format(camp.depart, 'dd.MM.yyyy')}"></span></th>
|
<th th:text="${camp.name}"></th>
|
||||||
<tr>
|
</tr>
|
||||||
<td>Ort</td>
|
<tr>
|
||||||
<th th:text="${camp.locationName}"></th>
|
<td>Zeit</td>
|
||||||
</tr>
|
<th><span th:text="${#temporals.format(camp.arrive, 'dd.MM.')}"></span> - <span th:text="${#temporals.format(camp.depart, 'dd.MM.yyyy')}"></span></th>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Preis</td>
|
<td>Ort</td>
|
||||||
<th><pre th:utext="${camp.price}"></pre></th>
|
<th th:text="${camp.locationName}"></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>bestätigt</td>
|
<td>Preis</td>
|
||||||
<th th:text="${booking.approved}"></th>
|
<th><pre th:utext="${camp.price}"></pre></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>abgelehnt</td>
|
<td>bestätigt</td>
|
||||||
<th th:text="${booking.rejected}"></th>
|
<th th:text="${booking.approved}"></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>offen</td>
|
<td>abgelehnt</td>
|
||||||
<th th:text="${booking.open}"></th>
|
<th th:text="${booking.rejected}"></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Beiträge</td>
|
<td>offen</td>
|
||||||
<th><span th:text="${#numbers.formatDecimal(booking.paid, 1, 2) + ' €'}" th:if="${booking.paid != null}"></span></th>
|
<th th:text="${booking.open}"></th>
|
||||||
</tbody>
|
</tr>
|
||||||
</table>
|
<tr>
|
||||||
|
<td>Beiträge</td>
|
||||||
|
<th><span th:text="${#numbers.formatDecimal(booking.paid, 1, 2) + ' €'}" th:if="${booking.paid != null}"></span></th>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="col" sec:authorize="hasRole('business_booking')">
|
||||||
<div class="col" sec:authorize="hasRole('business_booking')">
|
<div class="card">
|
||||||
<div class="card">
|
<div class="card-header">Angemeldete Personen</div>
|
||||||
<div class="card-header">Angemeldete Personen</div>
|
<div class="card-body">
|
||||||
<div class="card-body">
|
<table id="bookers" class="table table-striped">
|
||||||
<table id="bookers" class="table table-striped">
|
<thead>
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Name</th>
|
|
||||||
<th>Geschlecht</th>
|
|
||||||
<th>Rolle</th>
|
|
||||||
<th>Kontostand</th>
|
|
||||||
<th>Angemeldet</th>
|
|
||||||
<th>Bestätigt</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<th:block th:each="b : ${bookers}">
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><a class="tablelink" th:href="@{/business/bookings/{id}(id=${b.pk})}" title="bearbeiten" th:text="${b.name}"></a></td>
|
<th>Name</th>
|
||||||
<td th:text="${b.sex}"></td>
|
<th>Geschlecht</th>
|
||||||
<td th:text="${b.role}"></td>
|
<th>Rolle</th>
|
||||||
<td><span th:text="${#numbers.formatDecimal(b.paid, 1, 2) + ' €'}" th:if="${b.paid != null}"></span></td>
|
<th>Kontostand</th>
|
||||||
<td th:text="${#temporals.format(b.bookingDate, 'dd.MM.yyyy')}"></td>
|
<th>Angemeldet</th>
|
||||||
<td th:text="${b.accept == null ? '' : (b.accept ? 'Ja' : 'abgelehnt')}"></td>
|
<th>Bestätigt</th>
|
||||||
</tr>
|
</tr>
|
||||||
</th:block>
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
<th:block th:each="b : ${bookers}">
|
||||||
<script>
|
<tr>
|
||||||
$(document).ready(function() {
|
<td><a class="tablelink" th:href="@{/business/bookings/{id}(id=${b.pk})}" title="bearbeiten" th:text="${b.name}"></a></td>
|
||||||
$("#bookers").DataTable({
|
<td th:text="${b.sex}"></td>
|
||||||
language: locale_de
|
<td th:text="${b.role}"></td>
|
||||||
|
<td><span th:text="${#numbers.formatDecimal(b.paid, 1, 2) + ' €'}" th:if="${b.paid != null}"></span></td>
|
||||||
|
<td th:text="${#temporals.format(b.bookingDate, 'dd.MM.yyyy')}"></td>
|
||||||
|
<td th:text="${b.accept == null ? '' : (b.accept ? 'Ja' : 'abgelehnt')}"></td>
|
||||||
|
</tr>
|
||||||
|
</th:block>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
$("#bookers").DataTable({
|
||||||
|
language : locale_de
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
</script>
|
||||||
</script>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="alert alert-danger" role="alert" th:if="${camp == null}">Es wurde keine Freizeit gefunden, die über diese ID angesprochen werden kann.</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="alert alert-danger" role="alert" th:if="${camp == null}">Es wurde keine Freizeit gefunden, die über diese ID angesprochen werden kann.</div>
|
</th:block>
|
||||||
</div>
|
|
||||||
</content>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,90 +1,92 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:replace="~{template :: layout(~{::title}, ~{::libs}, ~{::header}, ~{::content})}" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
|
<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>
|
<head>
|
||||||
<title>Camp Organizer Business</title>
|
<title>Camp Organizer Business</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
<libs>
|
|
||||||
</libs>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<th:block layout:fragment="header">
|
||||||
<a th:href="@{/}" class="btn btn-secondary btn-icon-silent">Hauptseite</a>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<a th:href="@{/business/}" class="btn btn-secondary btn-icon-silent">Finanzübersicht</a>
|
<li class="nav-item"><a th:href="@{/}" class="btn btn-secondary btn-icon-silent">Hauptseite</a></li>
|
||||||
</header>
|
</ul>
|
||||||
<content>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<div class="mainpage">
|
<li class="nav-item"><a th:href="@{/business/}" class="btn btn-secondary btn-icon-silent">Finanzübersicht</a></li>
|
||||||
<div class="card">
|
</ul>
|
||||||
<div class="card-header">Nutzerverwaltung für die Abrechnung von Freizeiten</div>
|
</th:block>
|
||||||
<div class="card-body">
|
<th:block layout:fragment="content">
|
||||||
<table id="privs" class="table table-striped">
|
<div class="mainpage">
|
||||||
<thead>
|
<div class="card">
|
||||||
<tr>
|
<div class="card-header">Nutzerverwaltung für die Abrechnung von Freizeiten</div>
|
||||||
<th scope="col">Freizeit</th>
|
<div class="card-body">
|
||||||
<th scope="col">Abrechnung darf bearbeiten</th>
|
<table id="privs" class="table table-striped">
|
||||||
<th scope="col"></th>
|
<thead>
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<th:block th:each="e : ${privileges.entrySet()}" sec:authorize="hasRole('admin')">
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="middled"><span th:text="${e.value.name}"></span> <span th:text="${#numbers.formatDecimal(e.value.year, 1, 0)}"></span></td>
|
<th scope="col">Freizeit</th>
|
||||||
<td><th:block th:each="p : ${e.value.profiles}">
|
<th scope="col">Abrechnung darf bearbeiten</th>
|
||||||
<div class="dropdown" style="display: inline" th:if="${p.pk != null}">
|
<th scope="col"></th>
|
||||||
<button class="btn dropdown-toggle" style="border: 1px solid silver" type="button" th:id="'btn_' + ${e.key} + '_' + ${p.pk}" data-bs-toggle="dropdown" aria-expanded="false">
|
</tr>
|
||||||
<span th:text="${p.forename} + ' ' + ${p.surname}"></span>
|
</thead>
|
||||||
</button>
|
<tbody>
|
||||||
<ul class="dropdown-menu silver-to-gray-gradient" th:aria-labelledby="'btn_' + ${e.key} + '_' + ${p.pk}">
|
<th:block th:each="e : ${privileges.entrySet()}" sec:authorize="hasRole('admin')">
|
||||||
<li><div style="padding: 8px">
|
<tr>
|
||||||
Login: <span th:text="${p.username}"></span>
|
<td class="middled"><span th:text="${e.value.name}"></span> <span th:text="${#numbers.formatDecimal(e.value.year, 1, 0)}"></span></td>
|
||||||
</div></li>
|
<td><th:block th:each="p : ${e.value.profiles}">
|
||||||
<li><div style="padding: 8px">
|
<div class="dropdown" style="display: inline" th:if="${p.pk != null}">
|
||||||
Ablaufdatum: <span th:text="${#temporals.format(p.duedate, 'dd.MM.yyyy')}"></span>
|
<button class="btn dropdown-toggle" style="border: 1px solid silver" type="button" th:id="'btn_' + ${e.key} + '_' + ${p.pk}" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
</div></li>
|
<span th:text="${p.forename} + ' ' + ${p.surname}"></span>
|
||||||
<li><hr class="dropdown-divider" th:if="${p.username != currentUser}"></li>
|
</button>
|
||||||
<li><a class="dropdown-item menu-danger" th:if="${p.username != currentUser}" th:href="@{/business/privileges/delete?fkCamp={c}&fkProfile={r}(c=${e.key},r=${p.pk})}">Recht
|
<ul class="dropdown-menu silver-to-gray-gradient" th:aria-labelledby="'btn_' + ${e.key} + '_' + ${p.pk}">
|
||||||
entziehen</a></li>
|
<li><div style="padding: 8px">
|
||||||
</ul>
|
Login: <span th:text="${p.username}"></span>
|
||||||
</div>
|
</div></li>
|
||||||
</th:block></td>
|
<li><div style="padding: 8px">
|
||||||
<td>
|
Ablaufdatum: <span th:text="${#temporals.format(p.duedate, 'dd.MM.yyyy')}"></span>
|
||||||
<form action="#" th:action="@{/business/privileges/add?fkCamp={cid}(cid=${e.key})}" th:object="${bean}" method="post">
|
</div></li>
|
||||||
<div class="container">
|
<li><hr class="dropdown-divider" th:if="${p.username != currentUser}"></li>
|
||||||
<div class="row">
|
<li><a class="dropdown-item menu-danger" th:if="${p.username != currentUser}" th:href="@{/business/privileges/delete?fkCamp={c}&fkProfile={r}(c=${e.key},r=${p.pk})}">Recht
|
||||||
<div class="col-sm-9">
|
entziehen</a></li>
|
||||||
<select th:id="${e.value.pk}" class="form-control select2-single" th:field="*{fkProfile}">
|
</ul>
|
||||||
<option value="">Auswählen</option>
|
</div>
|
||||||
<th:block th:each="u : ${profiles}">
|
</th:block></td>
|
||||||
<option th:if="${u != null}" th:value="${u.pk}" th:text="${u.fullname}" th:title="${u.dropdown()}" />
|
<td>
|
||||||
</th:block>
|
<form action="#" th:action="@{/business/privileges/add?fkCamp={cid}(cid=${e.key})}" th:object="${bean}" method="post">
|
||||||
</select>
|
<div class="container">
|
||||||
</div>
|
<div class="row">
|
||||||
<div class="col-sm-3">
|
<div class="col-sm-9">
|
||||||
<input type="submit" class="btn btn-outline-primary" value="Recht erteilen">
|
<select th:id="${e.value.pk}" class="form-control select2-single" th:field="*{fkProfile}">
|
||||||
|
<option value="">Auswählen</option>
|
||||||
|
<th:block th:each="u : ${profiles}">
|
||||||
|
<option th:if="${u != null}" th:value="${u.pk}" th:text="${u.fullname}" th:title="${u.dropdown()}" />
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-3">
|
||||||
|
<input type="submit" class="btn btn-outline-primary" value="Recht erteilen">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<script>
|
||||||
<script>
|
var id = "[[${e.value.pk}]]";
|
||||||
var id = "[[${e.value.pk}]]";
|
$("#" + id).select2({
|
||||||
$("#" + id).select2({
|
theme : 'bootstrap-5',
|
||||||
theme: 'bootstrap-5',
|
});
|
||||||
});
|
</script>
|
||||||
</script>
|
</form>
|
||||||
</form>
|
</td>
|
||||||
</td>
|
</tr>
|
||||||
</tr>
|
</th:block>
|
||||||
</th:block>
|
</tbody>
|
||||||
</tbody>
|
</table>
|
||||||
</table>
|
<script>
|
||||||
<script>
|
$(document).ready(function() {
|
||||||
$(document).ready(function() {
|
$("#privs").DataTable({
|
||||||
$("#privs").DataTable({
|
language : locale_de
|
||||||
language : locale_de
|
});
|
||||||
});
|
});
|
||||||
});
|
</script>
|
||||||
</script>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</th:block>
|
||||||
</content>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,16 +1,16 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:replace="~{template :: layout(~{::title}, ~{::libs}, ~{::header}, ~{::content})}" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
|
<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>
|
<head>
|
||||||
<title>Camp Organizer Confirmation</title>
|
<title>Camp Organizer Confirmation</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
<libs></libs>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<th:block layout:fragment="header">
|
||||||
<a th:href="@{/}" class="btn btn-secondary btn-icon-silent">Hauptseite</a>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
</header>
|
<li class="nav-item"><a th:href="@{/}" class="btn btn-secondary btn-icon-silent">Hauptseite</a></li>
|
||||||
<content>
|
</ul>
|
||||||
<div class="mainpage">
|
</th:block>
|
||||||
|
<th:block layout:fragment="content">
|
||||||
<div class="accordion" id="mainacc" sec:authorize="hasRole('registrator')">
|
<div class="accordion" id="mainacc" sec:authorize="hasRole('registrator')">
|
||||||
<div class="accordion-item">
|
<div class="accordion-item">
|
||||||
<h2 class="accordion-header" id="untouchedpanel">
|
<h2 class="accordion-header" id="untouchedpanel">
|
||||||
@ -160,21 +160,19 @@
|
|||||||
</h2>
|
</h2>
|
||||||
<div id="searchdiv" class="accordion-collapse collapse dist8" aria-labelled="searchpanel" data-bs-parent="#mainacc">
|
<div id="searchdiv" class="accordion-collapse collapse dist8" aria-labelled="searchpanel" data-bs-parent="#mainacc">
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
/*<![CDATA[*/
|
/*<![CDATA[*/
|
||||||
var searchUrl = /*[[@{/confirmation/search}]]*/ '?';
|
var searchUrl = /*[[@{/confirmation/search}]]*/'?';
|
||||||
var myAjax = new MyAjax(searchUrl);
|
var myAjax = new MyAjax(searchUrl);
|
||||||
/*]]>*/
|
/*]]>*/
|
||||||
</script>
|
</script>
|
||||||
<input type="text" placeholder="bitte Suchtext eingeben" class="form-control" onchange="myAjax.call('searchresult', this.value)" />
|
<input type="text" placeholder="bitte Suchtext eingeben" class="form-control" onchange="myAjax.call('searchresult', this.value)" />
|
||||||
<div id="searchresult">
|
<div id="searchresult">
|
||||||
Die Suche ist eine einfache Textsuche. Bestenfalls sollte nur ein Begriff zum Suchen verwendet werden, also z.B. nur der Vor- ODER der Nachname, nicht beides.<br />
|
Die Suche ist eine einfache Textsuche. Bestenfalls sollte nur ein Begriff zum Suchen verwendet werden, also z.B. nur der Vor- ODER der Nachname, nicht beides.<br /> Es werden nur wenige
|
||||||
Es werden nur wenige Felder in der Datenbank durchsucht: Vorname, Nachname, Freizeitname und Freizeitjahr.<br />
|
Felder in der Datenbank durchsucht: Vorname, Nachname, Freizeitname und Freizeitjahr.<br /> Die Suche wird nach dem Verlassen des Suchtext-Eingabefeldes aktiviert.
|
||||||
Die Suche wird nach dem Verlassen des Suchtext-Eingabefeldes aktiviert.
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</th:block>
|
||||||
</content>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,137 +1,138 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:replace="~{template :: layout(~{::title}, ~{::libs}, ~{::header}, ~{::content})}" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
|
<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>
|
<head>
|
||||||
<title>Camp Organizer Confirmation</title>
|
<title>Camp Organizer Confirmation</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
<libs></libs>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<th:block layout:fragment="header">
|
||||||
<a th:href="@{/}" class="btn btn-secondary btn-icon-silent">Hauptseite</a>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<a th:href="@{/confirmation}" class="btn btn-secondary btn-icon-silent">Anmeldungen</a>
|
<li class="nav-item"><a th:href="@{/}" class="btn btn-secondary btn-icon-silent">Hauptseite</a></li>
|
||||||
</header>
|
</ul>
|
||||||
<content>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<div class="mainpage">
|
<li class="nav-item"><a th:href="@{/confirmation}" class="btn btn-secondary btn-icon-silent">Anmeldungen</a></li>
|
||||||
<div class="container" style="max-width: 100%" sec:authorize="hasRole('registrator')">
|
</ul>
|
||||||
<form action="#" th:action="@{/confirmation/person/update}" th:object="${person}" method="post" th:if="${person != null}">
|
</th:block>
|
||||||
<div class="row mb-2">
|
<th:block layout:fragment="content">
|
||||||
<label for="outputPk" class="col-sm-2 col-form-label">ID</label>
|
<div class="mainpage">
|
||||||
<div class="col-sm-10">
|
<div class="container" style="max-width: 100%" sec:authorize="hasRole('registrator')">
|
||||||
<input type="text" th:field="*{pk}" class="outputPk form-control locked"></span>
|
<form action="#" th:action="@{/confirmation/person/update}" th:object="${person}" method="post" th:if="${person != null}">
|
||||||
</div>
|
<div class="row mb-2">
|
||||||
</div>
|
<label for="outputPk" class="col-sm-2 col-form-label">ID</label>
|
||||||
<div class="row mb-2">
|
<div class="col-sm-10">
|
||||||
<label for="inputForename" class="col-sm-2 col-form-label">Vorname</label>
|
<input type="text" th:field="*{pk}" class="outputPk form-control locked"></span>
|
||||||
<div class="col-sm-10">
|
|
||||||
<input type="text" th:field="*{forename}" class="inputForename form-control" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-2">
|
|
||||||
<label for="inputSurname" class="col-sm-2 col-form-label">Nachname</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<input type="text" th:field="*{surname}" class="inputSurname form-control" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-2">
|
|
||||||
<label for="inputStreet" class="col-sm-2 col-form-label">Straße</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<input type="text" th:field="*{street}" class="inputStreet form-control" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-2">
|
|
||||||
<label for="inputZip" class="col-sm-2 col-form-label">PLZ</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<input type="text" th:field="*{zip}" class="inputZip form-control" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-2">
|
|
||||||
<label for="inputCity" class="col-sm-2 col-form-label">Ort</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<input type="text" th:field="*{city}" class="inputCity form-control" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-2">
|
|
||||||
<label for="inputBirthdate" class="col-sm-2 col-form-label">Geburtstag (TODO)</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<input type="date" th:field="*{birthdate}" class="inputBirthdate form-control" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-2">
|
|
||||||
<label for="inputSex" class="col-sm-2 col-form-label">Geschlecht</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<select class="form-select" th:field="*{sex}">
|
|
||||||
<option value="male">männlich</option>
|
|
||||||
<option value="female">weiblich</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-2">
|
|
||||||
<label for="inputPhone" class="col-sm-2 col-form-label">Telefon</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<input type="text" th:field="*{phone}" class="inputPhone form-control" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-2">
|
|
||||||
<label for="inputEmail" class="col-sm-2 col-form-label">E-Mail</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<input type="email" th:field="*{email}" class="inputEmail form-control" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-2">
|
|
||||||
<label for="outputCamp" class="col-sm-2 col-form-label">Freizeit</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<select class="form-select locked" th:field="*{fkCamp}" disabled="disabled">
|
|
||||||
<option th:each="c : ${camps}" th:value="${c.pk}" th:text="${c.name} + ' ' + ${#temporals.format(c.arrive, 'yyyy')} + ' in ' + ${c.location}"></option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-2">
|
|
||||||
<label for="outputCamprole" class="col-sm-2 col-form-label">Rolle</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<select class="outputCamprole form-select" th:field="*{camprole}">
|
|
||||||
<option value="student">Teilnehmer</option>
|
|
||||||
<option value="teacher">Mitarbeiter</option>
|
|
||||||
<option value="director">Leiter</option>
|
|
||||||
<option value="feeder">Küchenteam</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-2">
|
|
||||||
<label for="inputComment" class="col-sm-2 col-form-label">Kommentar</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<textarea th:field="*{comment}" class="inputComment form-control"></textarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-2">
|
|
||||||
<label for="outputAnno" class="col-sm-2 col-form-label">Anmerkungen</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<pre class="form-control locked" th:text="${annotations}"></pre>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-2">
|
|
||||||
<label for="inputAccept" class="col-sm-2 col-form-label">Status</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<div class="form-group">
|
|
||||||
<input type="radio" class="btn-check" id="accept1" name="accept1" value="" th:field="*{accept}" />
|
|
||||||
<label class="btn btn-outline-primary" for="accept1"><i class="fas fa-question"></i> offen</label>
|
|
||||||
<input type="radio" class="btn-check" id="accept2" name="accept2" value="true" th:field="*{accept}" />
|
|
||||||
<label class="btn btn-outline-success" for="accept2"><i class="fas fa-check"></i> bestätigt</label>
|
|
||||||
<input type="radio" class="btn-check" id="accept3" name="accept3" value="false" th:field="*{accept}" />
|
|
||||||
<label class="btn btn-outline-danger" for="accept3"><i class="fas fa-ban"></i> abgelehnt</label>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="row mb-2">
|
||||||
<div class="row mb-2">
|
<label for="inputForename" class="col-sm-2 col-form-label">Vorname</label>
|
||||||
<label for="inputAccept" class="col-sm-2 col-form-label"></label>
|
<div class="col-sm-10">
|
||||||
<div class="col-sm-10">
|
<input type="text" th:field="*{forename}" class="inputForename form-control" />
|
||||||
<button type="submit" class="btn btn-primary">Ok</button>
|
</div>
|
||||||
<a th:href="@{/confirmation/}" class="btn btn-secondary">Abbrechen</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="row mb-2">
|
||||||
</form>
|
<label for="inputSurname" class="col-sm-2 col-form-label">Nachname</label>
|
||||||
<div th:if="${person == null}" class="error">In der Datenbank wurde keine Person mit entsprechender ID gefunden.</div>
|
<div class="col-sm-10">
|
||||||
|
<input type="text" th:field="*{surname}" class="inputSurname form-control" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-2">
|
||||||
|
<label for="inputStreet" class="col-sm-2 col-form-label">Straße</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" th:field="*{street}" class="inputStreet form-control" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-2">
|
||||||
|
<label for="inputZip" class="col-sm-2 col-form-label">PLZ</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" th:field="*{zip}" class="inputZip form-control" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-2">
|
||||||
|
<label for="inputCity" class="col-sm-2 col-form-label">Ort</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" th:field="*{city}" class="inputCity form-control" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-2">
|
||||||
|
<label for="inputBirthdate" class="col-sm-2 col-form-label">Geburtstag (TODO)</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="date" th:field="*{birthdate}" class="inputBirthdate form-control" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-2">
|
||||||
|
<label for="inputSex" class="col-sm-2 col-form-label">Geschlecht</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<select class="form-select" th:field="*{sex}">
|
||||||
|
<option value="male">männlich</option>
|
||||||
|
<option value="female">weiblich</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-2">
|
||||||
|
<label for="inputPhone" class="col-sm-2 col-form-label">Telefon</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" th:field="*{phone}" class="inputPhone form-control" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-2">
|
||||||
|
<label for="inputEmail" class="col-sm-2 col-form-label">E-Mail</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="email" th:field="*{email}" class="inputEmail form-control" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-2">
|
||||||
|
<label for="outputCamp" class="col-sm-2 col-form-label">Freizeit</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<select class="form-select locked" th:field="*{fkCamp}" disabled="disabled">
|
||||||
|
<option th:each="c : ${camps}" th:value="${c.pk}" th:text="${c.name} + ' ' + ${#temporals.format(c.arrive, 'yyyy')} + ' in ' + ${c.location}"></option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-2">
|
||||||
|
<label for="outputCamprole" class="col-sm-2 col-form-label">Rolle</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<select class="outputCamprole form-select" th:field="*{camprole}">
|
||||||
|
<option value="student">Teilnehmer</option>
|
||||||
|
<option value="teacher">Mitarbeiter</option>
|
||||||
|
<option value="director">Leiter</option>
|
||||||
|
<option value="feeder">Küchenteam</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-2">
|
||||||
|
<label for="inputComment" class="col-sm-2 col-form-label">Kommentar</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<textarea th:field="*{comment}" class="inputComment form-control"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-2">
|
||||||
|
<label for="outputAnno" class="col-sm-2 col-form-label">Anmerkungen</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<pre class="form-control locked" th:text="${annotations}"></pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-2">
|
||||||
|
<label for="inputAccept" class="col-sm-2 col-form-label">Status</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<div class="form-group">
|
||||||
|
<input type="radio" class="btn-check" id="accept1" name="accept1" value="" th:field="*{accept}" /> <label class="btn btn-outline-primary" for="accept1"><i
|
||||||
|
class="fas fa-question"></i> offen</label> <input type="radio" class="btn-check" id="accept2" name="accept2" value="true" th:field="*{accept}" /> <label class="btn btn-outline-success"
|
||||||
|
for="accept2"><i class="fas fa-check"></i> bestätigt</label> <input type="radio" class="btn-check" id="accept3" name="accept3" value="false" th:field="*{accept}" /> <label
|
||||||
|
class="btn btn-outline-danger" for="accept3"><i class="fas fa-ban"></i> abgelehnt</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-2">
|
||||||
|
<label for="inputAccept" class="col-sm-2 col-form-label"></label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<button type="submit" class="btn btn-primary">Ok</button>
|
||||||
|
<a th:href="@{/confirmation/}" class="btn btn-secondary">Abbrechen</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<div th:if="${person == null}" class="error">In der Datenbank wurde keine Person mit entsprechender ID gefunden.</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</th:block>
|
||||||
</content>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,140 +1,145 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:replace="~{template :: layout(~{::title}, ~{::libs}, ~{::header}, ~{::content})}" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
|
<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>
|
<head>
|
||||||
<title>Camp Organizer 2</title>
|
<title>Camp Organizer 2</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
<libs></libs>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<th:block layout:fragment="header">
|
||||||
<a href="https://www.onkelwernerfreizeiten.de:8443/realms/ow/account/" class="btn btn-secondary btn-icon-silent" target="_blank">Profil</a>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<a th:href="@{/business}" class="btn btn-secondary btn-icon-silent" sec:authorize="hasRole('business')">Abrechnung</i></a>
|
<li class="nav-item"><a th:href="@{${keycloakProfileUrl}}" class="btn btn-secondary btn-icon-silent" target="_blank">Profil</a></li>
|
||||||
<a th:href="@{/confirmation}" class="btn btn-secondary btn-icon-silent" sec:authorize="hasRole('registrator')">Bestätigung</i></a>
|
</ul>
|
||||||
<a href="https://www.onkelwernerfreizeiten.de/cloud" class="btn btn-secondary btn-icon-silent" target="_blank">Nextcloud</a>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
</header>
|
<li class="nav-item"><a th:href="@{/business}" class="btn btn-secondary btn-icon-silent" sec:authorize="hasRole('business')">Abrechnung</a></li>
|
||||||
<content>
|
</ul>
|
||||||
<div class="mainpage">
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<script type="text/javascript">
|
<li class="nav-item"><a th:href="@{/confirmation}" class="btn btn-secondary btn-icon-silent" sec:authorize="hasRole('registrator')">Bestätigung</a></li>
|
||||||
function mark(e) {
|
</ul>
|
||||||
$(e).css("background", "orange");
|
<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>
|
||||||
</script>
|
</ul>
|
||||||
<div class="accordion" id="acc">
|
</th:block>
|
||||||
<div class="accordion-item" th:each="b : ${mybookings}">
|
<th:block layout:fragment="content">
|
||||||
<h2 class="accordion-header" th:id="'acc-head-' + ${b.pk}">
|
<div class="mainpage">
|
||||||
<button class="accordion-button collapsed" th:style="'background: ' + ${b.accept == null ? '#fdb' : (b.accept ? '#cfc' : '#fcc')}" type="button" data-bs-toggle="collapse"
|
<script type="text/javascript">
|
||||||
th:data-bs-target="'#acc-body-' + ${b.pk}" aria-expanded="true" th:aria-controls="'#acc-body-' + ${b.pk}">
|
function mark(e) {
|
||||||
<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
|
$(e).css("background", "orange");
|
||||||
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
|
</script>
|
||||||
th:text="${b.locationName}"></span>
|
<div class="accordion" id="acc">
|
||||||
</button>
|
<div class="accordion-item" th:each="b : ${mybookings}">
|
||||||
</h2>
|
<h2 class="accordion-header" th:id="'acc-head-' + ${b.pk}">
|
||||||
<div th:id="'acc-body-' + ${b.pk}" class="accordion-collapse collapse" th:aria-labelledby="'acc-head-' + ${b.pk}">
|
<button th:class="'accordion-button collapsed acc_' + ${b.accept}" type="button" data-bs-toggle="collapse" th:data-bs-target="'#acc-body-' + ${b.pk}" aria-expanded="true"
|
||||||
<div class="accordion-body">
|
th:aria-controls="'#acc-body-' + ${b.pk}">
|
||||||
<div class="card">
|
<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
|
||||||
<div class="card-header">Freizeitdaten</div>
|
class="fas fa-question framed framed-orange" th:if="${b.accept} == null"></i> <span
|
||||||
<div class="card-body">
|
th:text="${b.forename + ' ' + b.surname + ' in ' + b.campName + ' ' + #numbers.formatInteger(b.year, 4)}" style="font-weight: bolder"></span> in <span
|
||||||
<div class="container">
|
th:text="${b.locationName}"></span>
|
||||||
<div class="row">
|
</button>
|
||||||
<div class="col-sm-2">Ort:</div>
|
</h2>
|
||||||
<div class="col-sm-10">
|
<div th:id="'acc-body-' + ${b.pk}" class="accordion-collapse collapse" th:aria-labelledby="'acc-head-' + ${b.pk}">
|
||||||
<a th:href="${b.url}" target="_blank" th:text="${b.locationName}"></a>
|
<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 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>
|
</div>
|
||||||
</div>
|
<div class="card">
|
||||||
<div class="card">
|
<div class="card-header">Teilnehmerdaten</div>
|
||||||
<div class="card-header">Teilnehmerdaten</div>
|
<div class="card-body">
|
||||||
<div class="card-body">
|
<form th:action="@{/dashboard/update/}" th:object="${b}" method="post">
|
||||||
<form th:action="@{/dashboard/update/}" th:object="${b}" method="post">
|
<input type="hidden" th:value="*{pk}" name="pk" />
|
||||||
<input type="hidden" th:value="*{pk}" name="pk" />
|
<div class="container">
|
||||||
<div class="container">
|
<div class="row mb-2">
|
||||||
<div class="row mb-2">
|
<div class="col-sm-2">Rolle:</div>
|
||||||
<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
|
||||||
<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>
|
||||||
th:if="${b.isFeeder()}">Küchenteam</span>
|
</span>
|
||||||
</span>
|
</div>
|
||||||
</div>
|
<div class="row mb-2">
|
||||||
<div class="row mb-2">
|
<div class="col-sm-2">Geschlecht:</div>
|
||||||
<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"
|
||||||
<span class="col-sm-10">
|
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 th:if="${b.isMale()}">männlich</span>
|
</span>
|
||||||
<span th:if="${b.isFemale()}">weiblich</span>
|
</div>
|
||||||
<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>
|
<div class="row mb-2">
|
||||||
</span>
|
<div class="col-sm-2">Vorname:</div>
|
||||||
</div>
|
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{forename}" name="forename" onchange="mark(this)" /></span>
|
||||||
<div class="row mb-2">
|
</div>
|
||||||
<div class="col-sm-2">Vorname:</div>
|
<div class="row mb-2">
|
||||||
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{forename}" name="forename" onchange="mark(this)" /></span>
|
<div class="col-sm-2">Nachname:</div>
|
||||||
</div>
|
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{surname}" name="surname" onchange="mark(this)" /></span>
|
||||||
<div class="row mb-2">
|
</div>
|
||||||
<div class="col-sm-2">Nachname:</div>
|
<div class="row mb-2">
|
||||||
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{surname}" name="surname" onchange="mark(this)" /></span>
|
<div class="col-sm-2">Straße:</div>
|
||||||
</div>
|
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{street}" name="street" onchange="mark(this)" /></span>
|
||||||
<div class="row mb-2">
|
</div>
|
||||||
<div class="col-sm-2">Straße:</div>
|
<div class="row mb-2">
|
||||||
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{street}" name="street" onchange="mark(this)" /></span>
|
<div class="col-sm-2">PLZ:</div>
|
||||||
</div>
|
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{zip}" name="zip" onchange="mark(this)" /></span>
|
||||||
<div class="row mb-2">
|
</div>
|
||||||
<div class="col-sm-2">PLZ:</div>
|
<div class="row mb-2">
|
||||||
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{zip}" name="zip" onchange="mark(this)" /></span>
|
<div class="col-sm-2">Ort:</div>
|
||||||
</div>
|
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{city}" name="city" onchange="mark(this)" /></span>
|
||||||
<div class="row mb-2">
|
</div>
|
||||||
<div class="col-sm-2">Ort:</div>
|
<div class="row mb-2">
|
||||||
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{city}" name="city" onchange="mark(this)" /></span>
|
<div class="col-sm-2">Telefon:</div>
|
||||||
</div>
|
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{phone}" name="phone" onchange="mark(this)" /></span>
|
||||||
<div class="row mb-2">
|
</div>
|
||||||
<div class="col-sm-2">Telefon:</div>
|
<div class="row mb-2">
|
||||||
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{phone}" name="phone" onchange="mark(this)" /></span>
|
<div class="col-sm-2">Geburtstag:</div>
|
||||||
</div>
|
<span class="col-sm-10" th:text="${#temporals.format(b.birthdate, 'dd.MM.yyyy')}"></span>
|
||||||
<div class="row mb-2">
|
</div>
|
||||||
<div class="col-sm-2">Geburtstag:</div>
|
<div class="row mb-2">
|
||||||
<span class="col-sm-10" th:text="${#temporals.format(b.birthdate, 'dd.MM.yyyy')}"></span>
|
<div class="col-sm-2">E-Mail:</div>
|
||||||
</div>
|
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{email}" name="email" onchange="mark(this)" /></span>
|
||||||
<div class="row mb-2">
|
</div>
|
||||||
<div class="col-sm-2">E-Mail:</div>
|
<div class="row mb-2">
|
||||||
<span class="col-sm-10"><input type="text" class="form-control" th:value="*{email}" name="email" onchange="mark(this)" /></span>
|
<div class="col-sm-2">Foto-Einverständnis:</div>
|
||||||
</div>
|
<span class="col-sm-10" th:text="${b.consentCatalogPhoto ? 'ja' : 'nein'}"></span>
|
||||||
<div class="row mb-2">
|
</div>
|
||||||
<div class="col-sm-2">Foto-Einverständnis:</div>
|
<div class="row mb-2">
|
||||||
<span class="col-sm-10" th:text="${b.consentCatalogPhoto ? 'ja' : 'nein'}"></span>
|
<div class="col-sm-2">Kommentar:</div>
|
||||||
</div>
|
<span class="col-sm-10"><textarea class="form-control" th:text="*{comment}" name="comment" onchange="mark(this)"></textarea></span>
|
||||||
<div class="row mb-2">
|
</div>
|
||||||
<div class="col-sm-2">Kommentar:</div>
|
<div class="row mb-2">
|
||||||
<span class="col-sm-10"><textarea class="form-control" th:text="*{comment}" name="comment" onchange="mark(this)"></textarea></span>
|
<div class="col-sm-2"></div>
|
||||||
</div>
|
<div class="col-sm-10">
|
||||||
<div class="row mb-2">
|
<input type="submit" class="btn btn-primary" value="Änderungen übernehmen" />
|
||||||
<div class="col-sm-2"></div>
|
</div>
|
||||||
<div class="col-sm-10">
|
|
||||||
<input type="submit" class="btn btn-primary" value="Änderungen übernehmen" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
</form>
|
</div>
|
||||||
</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 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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</th:block>
|
||||||
</content>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,16 +1,23 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:replace="~{template :: layout(~{::title}, ~{::libs}, ~{::header}, ~{::content})}" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
|
<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>
|
<head>
|
||||||
<title>Camp Organizer 2</title>
|
<title>Camp Organizer 2</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
<libs></libs>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<th:block layout:fragment="header">
|
||||||
<a th:href="@{/ical}" class="btn btn-secondary btn-icon-silent" target="_blank" title="Freizeitdaten als ical herunterladen"><i class="far fa-calendar-alt"></i></a>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
<a class="btn btn-icon-silent menufont" href="http://anmeldung.onkelwernerfreizeiten.de">Unsere Freizeiten</a>
|
<li class="nav-item">
|
||||||
</header>
|
<a th:href="@{/ical}" class="btn btn-secondary btn-icon-silent" target="_blank" title="Freizeitdaten als ical herunterladen"><i class="far fa-calendar-alt"></i></a>
|
||||||
<content>
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="btn btn-icon-silent menufont" href="http://anmeldung.onkelwernerfreizeiten.de">Unsere Freizeiten</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</th:block>
|
||||||
|
<th:block layout:fragment="content">
|
||||||
<div class="mainpage">
|
<div class="mainpage">
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var mytoggle = new MyToggle();
|
var mytoggle = new MyToggle();
|
||||||
@ -56,6 +63,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</content>
|
</th:block>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,106 +1,107 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:replace="~{template :: layout(~{::title}, ~{::libs}, ~{::header}, ~{::content})}" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
|
<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>
|
<head>
|
||||||
<title>Camp Organizer 2</title>
|
<title>Camp Organizer 2</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
<libs></libs>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<th:block layout:fragment="header">
|
||||||
<a th:href="@{/}" class="btn btn-secondary btn-icon-silent" target="_blank">Startseite laden</a>
|
<ul class="navbar-nav mb-2 mb-lg-0">
|
||||||
</header>
|
<li class="nav-item"><a th:href="@{/}" class="btn btn-secondary btn-icon-silent" target="_blank">Startseite laden</a></li>
|
||||||
<content>
|
</ul>
|
||||||
<div class="mainpage">
|
</th:block>
|
||||||
<h1 class="centered cabin">Anmeldung</h1>
|
<th:block layout:fragment="content">
|
||||||
<h3 class="centered cabin" th:text="'zur ' + ${camp.name} + ' ' + ${camp.year}"></h3>
|
<div class="mainpage">
|
||||||
<div class="card centered-card" style="max-width: 48rem">
|
<h1 class="centered cabin">Anmeldung</h1>
|
||||||
<div class="card-body">
|
<h3 class="centered cabin" th:text="'zur ' + ${camp.name} + ' ' + ${camp.year}"></h3>
|
||||||
<form th:action="@{/registration/register}" th:object="${bean}" method="post">
|
<div class="card centered-card" style="max-width: 48rem">
|
||||||
<input type="hidden" th:field="*{fkCamp}" />
|
<div class="card-body">
|
||||||
<div class="container">
|
<form th:action="@{/registration/register}" th:object="${bean}" method="post">
|
||||||
<div class="row">
|
<input type="hidden" th:field="*{fkCamp}" />
|
||||||
<div class="col-sm-6 rowdist">
|
<div class="container">
|
||||||
<input type="text" class="form-control" placeholder="Vorname" th:field="*{forename}" />
|
<div class="row">
|
||||||
|
<div class="col-sm-6 rowdist">
|
||||||
|
<input type="text" class="form-control" placeholder="Vorname" th:field="*{forename}" />
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 rowdist">
|
||||||
|
<input type="text" class="form-control" placeholder="Nachname" th:field="*{surname}" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 rowdist">
|
<div class="row">
|
||||||
<input type="text" class="form-control" placeholder="Nachname" th:field="*{surname}" />
|
<div class="col-sm-6 rowdist">
|
||||||
|
<select class="form-select" th:field="*{sex}">
|
||||||
|
<option value="">Geschlecht</option>
|
||||||
|
<option value="female">weiblich</option>
|
||||||
|
<option value="male">männlich</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 rowdist">
|
||||||
|
<input type="date" class="form-control" placeholder="Geburtsdatum" th:field="*{birthDate}" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="row">
|
||||||
<div class="row">
|
<div class="col-sm-6 rowdist">
|
||||||
<div class="col-sm-6 rowdist">
|
<input type="text" class="form-control" placeholder="Straße und Hausnummer" th:field="*{street}" />
|
||||||
<select class="form-select" th:field="*{sex}">
|
</div>
|
||||||
<option value="">Geschlecht</option>
|
<div class="col-sm-2 rowdist">
|
||||||
<option value="female">weiblich</option>
|
<input type="text" class="form-control" placeholder="PLZ" th:field="*{zip}" />
|
||||||
<option value="male">männlich</option>
|
</div>
|
||||||
</select>
|
<div class="col-sm-4 rowdist">
|
||||||
|
<input type="text" class="form-control" placeholder="Ort" th:field="*{city}" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 rowdist">
|
<div class="row">
|
||||||
<input type="date" class="form-control" placeholder="Geburtsdatum" th:field="*{birthDate}" />
|
<div class="col-sm-6 rowdist">
|
||||||
|
<input type="text" class="form-control" placeholder="E-Mail" th:field="*{email}" />
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 rowdist">
|
||||||
|
<input type="text" class="form-control" placeholder="Telefonnummer" th:field="*{phone}" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="row">
|
||||||
<div class="row">
|
<div class="col-sm-6 rowdist">
|
||||||
<div class="col-sm-6 rowdist">
|
<span>mitkommen als</span>
|
||||||
<input type="text" class="form-control" placeholder="Straße und Hausnummer" th:field="*{street}" />
|
</div>
|
||||||
|
<div class="col-sm-6 rowdist">
|
||||||
|
<select class="form-select" th:field="*{campRole}">
|
||||||
|
<option value="student">Teilnehmer</option>
|
||||||
|
<option value="teacher">Mitarbeiter</option>
|
||||||
|
<option value="feeder">Küchenteam</option>
|
||||||
|
<option value="director">Leiter</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2 rowdist">
|
<div class="row">
|
||||||
<input type="text" class="form-control" placeholder="PLZ" th:field="*{zip}" />
|
<div class="col-sm-12 rowdist">
|
||||||
|
<textarea class="form-control" placeholder="Sonstiges" th:field="*{comment}"></textarea>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-4 rowdist">
|
<div class="row">
|
||||||
<input type="text" class="form-control" placeholder="Ort" th:field="*{city}" />
|
<div class="col-sm-12 rowdist">
|
||||||
|
<div class="form-check" title="Die Anmeldedaten können in den Kontoeinstellungen bearbeitet und für die nächsten Freizeitanmeldungen verwendet werden.">
|
||||||
|
<input id="save" type="checkbox" class="form-check-input" th:field="*{registerInKeycloak}" onchange="$('#createlogin').toggle();" /> <label class="form-check-label" for="save">Anmeldedaten
|
||||||
|
speichern</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div id="createlogin" class="row">
|
||||||
<div class="row">
|
<div class="col-sm-6 rowdist">
|
||||||
<div class="col-sm-6 rowdist">
|
<input type="text" class="form-control" placeholder="Login" th:field="*{login}" />
|
||||||
<input type="text" class="form-control" placeholder="E-Mail" th:field="*{email}" />
|
</div>
|
||||||
|
<div class="col-sm-6 rowdist">
|
||||||
|
<input type="password" class="form-control" placeholder="Passwort" th:field="*{password}" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 rowdist">
|
<div class="row">
|
||||||
<input type="text" class="form-control" placeholder="Telefonnummer" th:field="*{phone}" />
|
<div class="col-sm-12 rowdist centered">
|
||||||
</div>
|
<input type="submit" class="btn btn-outline-secondary" value="jetzt anmelden" />
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-6 rowdist">
|
|
||||||
<span>mitkommen als</span>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-6 rowdist">
|
|
||||||
<select class="form-select" th:field="*{campRole}">
|
|
||||||
<option value="student">Teilnehmer</option>
|
|
||||||
<option value="teacher">Mitarbeiter</option>
|
|
||||||
<option value="feeder">Küchenteam</option>
|
|
||||||
<option value="director">Leiter</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-12 rowdist">
|
|
||||||
<textarea class="form-control" placeholder="Sonstiges" th:field="*{comment}"></textarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-12 rowdist">
|
|
||||||
<div class="form-check" title="Die Anmeldedaten können in den Kontoeinstellungen bearbeitet und für die nächsten Freizeitanmeldungen verwendet werden.">
|
|
||||||
<input id="save" type="checkbox" class="form-check-input" th:field="*{registerInKeycloak}" onchange="$('#createlogin').toggle();" />
|
|
||||||
<label class="form-check-label" for="save">Anmeldedaten speichern</label>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="createlogin" class="row">
|
</form>
|
||||||
<div class="col-sm-6 rowdist">
|
</div>
|
||||||
<input type="text" class="form-control" placeholder="Login" th:field="*{login}" />
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-6 rowdist">
|
|
||||||
<input type="password" class="form-control" placeholder="Passwort" th:field="*{password}" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-12 rowdist centered">
|
|
||||||
<input type="submit" class="btn btn-outline-secondary" value="jetzt anmelden" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</th:block>
|
||||||
</content>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:fragment="layout (title, libs, header, content)" xmlns:th="http://www.thymeleaf.org">
|
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
|
||||||
<head>
|
<head>
|
||||||
<title th:replace="${title}">Camp Organizer Business</title>
|
<title>Camp Organizer 2</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
<link th:rel="stylesheet" type="text/css" media="all" th:href="@{/webjars/bootstrap/5.2.0/css/bootstrap.min.css} " />
|
<link th:rel="stylesheet" type="text/css" media="all" th:href="@{/webjars/bootstrap/5.2.0/css/bootstrap.min.css} " />
|
||||||
<link th:rel="stylesheet" type="text/css" media="all" th:href="@{/webjars/font-awesome/5.15.4/css/all.css} " />
|
<link th:rel="stylesheet" type="text/css" media="all" th:href="@{/webjars/font-awesome/5.15.4/css/all.css} " />
|
||||||
@ -16,18 +16,30 @@
|
|||||||
<script th:src="@{/js/dataTables.de.js}"></script>
|
<script th:src="@{/js/dataTables.de.js}"></script>
|
||||||
<script th:src="@{/js/mytoggle.js}"></script>
|
<script th:src="@{/js/mytoggle.js}"></script>
|
||||||
<script th:src="@{/js/myAjax.js}"></script>
|
<script th:src="@{/js/myAjax.js}"></script>
|
||||||
<meta th:replace="${libs}"></meta>
|
<th:block layout:fragment="libs"></th:block>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="myheadline">
|
<nav class="navbar navbar-expand-lg bg-light">
|
||||||
<div class="topright">
|
<div class="container-fluid">
|
||||||
<span th:if="${not #strings.isEmpty(currentUser)}"><a th:href="@{/logout}" class="btn btn-outline-secondary menufont"><b th:inline="text">[[${currentUser}]]</b> ausloggen</a>
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false">
|
||||||
</span> <span th:if="${#strings.isEmpty(currentUser)}"> <a th:href="@{/dashboard}" class="btn btn-outline-secondary menufont">einloggen</a>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</span>
|
</button>
|
||||||
|
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||||
|
<ul layout:fragment="header"></ul>
|
||||||
|
<ul class="nav navbar-nav ms-auto right-dist">
|
||||||
|
<li>
|
||||||
|
<span th:if="${not #strings.isEmpty(currentUser)}">
|
||||||
|
<a th:href="@{/logout}" class="btn btn-outline-secondary menufont"><b th:inline="text">[[${currentUser}]]</b> ausloggen</a>
|
||||||
|
</span>
|
||||||
|
<span th:if="${#strings.isEmpty(currentUser)}">
|
||||||
|
<a th:href="@{/dashboard}" class="btn btn-outline-secondary menufont">einloggen</a>
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<span th:replace="${header}">Layout header</span>
|
</nav>
|
||||||
</div>
|
<div layout:fragment="content">Layout content</div>
|
||||||
<div th:replace="${content}">Layout content</div>
|
|
||||||
<div class="versionclip">
|
<div class="versionclip">
|
||||||
<a href="https://gitlab.com/jottyfan/camporganizer2/-/issues" class="versionlink" target="_blank" th:text="${'Version ' + @manifestBean.getVersion()}"></a>
|
<a href="https://gitlab.com/jottyfan/camporganizer2/-/issues" class="versionlink" target="_blank" th:text="${'Version ' + @manifestBean.getVersion()}"></a>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user