layout cleanup

This commit is contained in:
Jottyfan 2022-11-14 15:16:10 +01:00
parent 55ff76c29b
commit abeba4935c
18 changed files with 795 additions and 722 deletions

View File

@ -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">

View File

@ -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

View File

@ -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>

View File

@ -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'

View File

@ -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";
} }

View File

@ -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);

View File

@ -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;

View File

@ -1,17 +1,22 @@
<!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>
</ul>
<ul class="navbar-nav mb-2 mb-lg-0">
<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>
</ul>
</th:block>
<th:block layout:fragment="content">
<div class="mainpage"> <div class="mainpage">
<div class="container" style="max-width: 100%"> <div class="container" style="max-width: 100%">
<div class="row"> <div class="row">
@ -84,6 +89,6 @@
</div> </div>
</div> </div>
</div> </div>
</content> </th:block>
</body> </body>
</html> </html>

View File

@ -1,16 +1,19 @@
<!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">
<li class="nav-item"><a th:href="@{/business/}" class="btn btn-secondary btn-icon-silent">Finanzübersicht</a></li>
</ul>
</th:block>
<th:block layout:fragment="content">
<div class="mainpage"> <div class="mainpage">
<div class="card" sec:authorize="hasRole('business_booking')"> <div class="card" sec:authorize="hasRole('business_booking')">
<div class="card-header">Angemeldete Personen</div> <div class="card-header">Angemeldete Personen</div>
@ -79,6 +82,6 @@
</div> </div>
</div> </div>
</div> </div>
</content> </th:block>
</body> </body>
</html> </html>

View File

@ -1,17 +1,22 @@
<!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>
</ul>
<ul class="navbar-nav mb-2 mb-lg-0">
<li class="nav-item"><a th:href="@{/business/privileges}" class="btn btn-secondary btn-icon-silent" sec:authorize="hasRole('admin')">Nutzerverwaltung</a></li>
</ul>
</th:block>
<th:block layout:fragment="content">
<div class="mainpage"> <div class="mainpage">
<div class="card" style="width: 640px"> <div class="card" style="width: 640px">
<div class="card-header">Finanzübersicht über alle Freizeiten</div> <div class="card-header">Finanzübersicht über alle Freizeiten</div>
@ -44,6 +49,6 @@
</div> </div>
</div> </div>
</div> </div>
</content> </th:block>
</body> </body>
</html> </html>

View File

@ -1,16 +1,19 @@
<!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">
<li class="nav-item"><a th:href="@{/business/}" class="btn btn-secondary btn-icon-silent">Finanzübersicht</a></li>
</ul>
</th:block>
<th:block layout:fragment="content">
<div class="mainpage"> <div class="mainpage">
<div class="container" style="max-width: 100%"> <div class="container" style="max-width: 100%">
<div class="row"> <div class="row">
@ -99,6 +102,6 @@
</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 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>
</content> </th:block>
</body> </body>
</html> </html>

View File

@ -1,17 +1,19 @@
<!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">
<li class="nav-item"><a th:href="@{/business/}" class="btn btn-secondary btn-icon-silent">Finanzübersicht</a></li>
</ul>
</th:block>
<th:block layout:fragment="content">
<div class="mainpage"> <div class="mainpage">
<div class="card"> <div class="card">
<div class="card-header">Nutzerverwaltung für die Abrechnung von Freizeiten</div> <div class="card-header">Nutzerverwaltung für die Abrechnung von Freizeiten</div>
@ -85,6 +87,6 @@
</div> </div>
</div> </div>
</div> </div>
</content> </th:block>
</body> </body>
</html> </html>

View File

@ -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">
@ -167,14 +167,12 @@
</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>

View File

@ -1,16 +1,19 @@
<!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">
<li class="nav-item"><a th:href="@{/confirmation}" class="btn btn-secondary btn-icon-silent">Anmeldungen</a></li>
</ul>
</th:block>
<th:block layout:fragment="content">
<div class="mainpage"> <div class="mainpage">
<div class="container" style="max-width: 100%" sec:authorize="hasRole('registrator')"> <div class="container" style="max-width: 100%" sec:authorize="hasRole('registrator')">
<form action="#" th:action="@{/confirmation/person/update}" th:object="${person}" method="post" th:if="${person != null}"> <form action="#" th:action="@{/confirmation/person/update}" th:object="${person}" method="post" th:if="${person != null}">
@ -112,12 +115,10 @@
<label for="inputAccept" class="col-sm-2 col-form-label">Status</label> <label for="inputAccept" class="col-sm-2 col-form-label">Status</label>
<div class="col-sm-10"> <div class="col-sm-10">
<div class="form-group"> <div class="form-group">
<input type="radio" class="btn-check" id="accept1" name="accept1" value="" th:field="*{accept}" /> <input type="radio" class="btn-check" id="accept1" name="accept1" value="" th:field="*{accept}" /> <label class="btn btn-outline-primary" for="accept1"><i
<label class="btn btn-outline-primary" for="accept1"><i class="fas fa-question"></i>&nbsp;offen</label> class="fas fa-question"></i>&nbsp;offen</label> <input type="radio" class="btn-check" id="accept2" name="accept2" value="true" th:field="*{accept}" /> <label class="btn btn-outline-success"
<input type="radio" class="btn-check" id="accept2" name="accept2" value="true" th:field="*{accept}" /> for="accept2"><i class="fas fa-check"></i>&nbsp;bestätigt</label> <input type="radio" class="btn-check" id="accept3" name="accept3" value="false" th:field="*{accept}" /> <label
<label class="btn btn-outline-success" for="accept2"><i class="fas fa-check"></i>&nbsp;bestätigt</label> class="btn btn-outline-danger" for="accept3"><i class="fas fa-ban"></i>&nbsp;abgelehnt</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>&nbsp;abgelehnt</label>
</div> </div>
</div> </div>
</div> </div>
@ -132,6 +133,6 @@
<div th:if="${person == null}" class="error">In der Datenbank wurde keine Person mit entsprechender ID gefunden.</div> <div th:if="${person == null}" class="error">In der Datenbank wurde keine Person mit entsprechender ID gefunden.</div>
</div> </div>
</div> </div>
</content> </th:block>
</body> </body>
</html> </html>

View File

@ -1,18 +1,25 @@
<!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>
<ul class="navbar-nav mb-2 mb-lg-0">
<li class="nav-item"><a th:href="@{/confirmation}" class="btn btn-secondary btn-icon-silent" sec:authorize="hasRole('registrator')">Bestätigung</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"> <div class="mainpage">
<script type="text/javascript"> <script type="text/javascript">
function mark(e) { function mark(e) {
@ -22,8 +29,8 @@
<div class="accordion" id="acc"> <div class="accordion" id="acc">
<div class="accordion-item" th:each="b : ${mybookings}"> <div class="accordion-item" th:each="b : ${mybookings}">
<h2 class="accordion-header" th:id="'acc-head-' + ${b.pk}"> <h2 class="accordion-header" th:id="'acc-head-' + ${b.pk}">
<button class="accordion-button collapsed" th:style="'background: ' + ${b.accept == null ? '#fdb' : (b.accept ? '#cfc' : '#fcc')}" type="button" data-bs-toggle="collapse" <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"
th:data-bs-target="'#acc-body-' + ${b.pk}" aria-expanded="true" th:aria-controls="'#acc-body-' + ${b.pk}"> 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 <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 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>&nbsp;in&nbsp;<span th:text="${b.forename + ' ' + b.surname + ' in ' + b.campName + ' ' + #numbers.formatInteger(b.year, 4)}" style="font-weight: bolder"></span>&nbsp;in&nbsp;<span
@ -67,10 +74,8 @@
</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 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 th:if="${b.isMale()}">männlich</span> 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.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> </span>
</div> </div>
<div class="row mb-2"> <div class="row mb-2">
@ -135,6 +140,6 @@
</div> </div>
</div> </div>
</div> </div>
</content> </th:block>
</body> </body>
</html> </html>

View File

@ -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">
<ul class="navbar-nav mb-2 mb-lg-0">
<li class="nav-item">
<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> <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>
</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> <a class="btn btn-icon-silent menufont" href="http://anmeldung.onkelwernerfreizeiten.de">Unsere Freizeiten</a>
</header> </li>
<content> </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>

View File

@ -1,15 +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 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>
</th:block>
<th:block layout:fragment="content">
<div class="mainpage"> <div class="mainpage">
<h1 class="centered cabin">Anmeldung</h1> <h1 class="centered cabin">Anmeldung</h1>
<h3 class="centered cabin" th:text="'zur ' + ${camp.name} + ' ' + ${camp.year}"></h3> <h3 class="centered cabin" th:text="'zur ' + ${camp.name} + ' ' + ${camp.year}"></h3>
@ -78,8 +79,8 @@
<div class="row"> <div class="row">
<div class="col-sm-12 rowdist"> <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."> <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();" /> <input id="save" type="checkbox" class="form-check-input" th:field="*{registerInKeycloak}" onchange="$('#createlogin').toggle();" /> <label class="form-check-label" for="save">Anmeldedaten
<label class="form-check-label" for="save">Anmeldedaten speichern</label> speichern</label>
</div> </div>
</div> </div>
</div> </div>
@ -101,6 +102,6 @@
</div> </div>
</div> </div>
</div> </div>
</content> </th:block>
</body> </body>
</html> </html>

View File

@ -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>
</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>
<span th:if="${#strings.isEmpty(currentUser)}">
<a th:href="@{/dashboard}" class="btn btn-outline-secondary menufont">einloggen</a>
</span>
</li>
</ul>
</div> </div>
<span th:replace="${header}">Layout header</span>
</div> </div>
<div th:replace="${content}">Layout content</div> </nav>
<div layout:fragment="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>