show current camps on start page

This commit is contained in:
Jottyfan
2022-10-01 22:28:08 +02:00
parent d15a6af941
commit cfe4edcf15
12 changed files with 402 additions and 10 deletions

View File

@ -7,7 +7,7 @@ spring.datasource.password=jooq
# application
server.port = 8081
server.servlet.context-path=/COBusiness
server.servlet.context-path=/CampOrganizer2
# keycloak
keycloak.auth-server-url = http://localhost:8080/
@ -15,7 +15,7 @@ keycloak.realm = ow
keycloak.resource = biblecamp
keycloak.public-client = true
keycloak.security-constraints[0].authRoles[0] = business
keycloak.security-constraints[0].securityCollections[0].patterns[0] = /*
keycloak.security-constraints[0].securityCollections[0].patterns[0] = /business/*
#keycloak.credentia
keycloak.use-resource-role-mappings=true
#keycloak.bearer-only=true

View File

@ -0,0 +1,100 @@
html {
width: 100vw;
height: 100vh;
}
body {
background-image: linear-gradient(to bottom right, rgb(255, 190, 111), rgb(198, 70, 0));
}
.mainpage {
background-color: rgba(255, 255, 255, 0.4);
padding: 8px;
overflow: auto;
width: 100%;
height: calc(100vh - 60px); /* 60 px is the current height of the headline; TODO: calculate it */
}
.middlecenter {
margin: auto;
top: 40vh;
bottom: 40vh;
position: fixed;
left: 40vw;
right: 40vw;
}
.myheadline {
margin: 8px;
}
.bottomdist16 {
margin-bottom: 16px;
}
.topright {
position: fixed;
right: 8px;
top: 8px;
}
.tablelink {
cursor: pointer;
text-decoration: none;
color: black;
}
.tablelink:hover {
text-decoration: underline;
color: darkcyan;
}
.deletelink {
padding: 4px;
border: 1px solid rgba(0, 0, 0, 0.0);
border-radius: 4px;
}
.deletelink:hover {
color: red;
border: 1px solid red;
text-decoration-line: line-through;
}
.linkbtn {
background: transparent;
border: 2px solid transparent;
padding: 8px;
}
.linkbtn:hover {
background-color: white;
border: 2px solid silver;
border-radius: 4px;
}
.btn-icon-silent {
background: transparent;
border: 2px solid transparent;
padding: 8px;
color: silver;
}
.btn-icon-silent:hover {
background-color: white;
border: 2px solid silver;
border-radius: 4px;
color: darkcyan;
}
.mytoggle_collapsed {
display: none;
}
.mytoggle_btn {
cursor: pointer;
}
.mytoggle_btn:hover {
background-color: #abcdef;
}

View File

@ -0,0 +1,8 @@
class MyToggle {
constructor() {
}
toggle(divid) {
$("[id='" + divid + "']").toggle();
}
}

View File

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Fehler</title>
<link th:rel="stylesheet" th:href="@{/css/style.css}" />
<link th:rel="stylesheet" type="text/css" media="all" th:href="@{/webjars/bootstrap/5.1.3/css/bootstrap.min.css} " />
<script th:src="@{/webjars/bootstrap/5.1.3/js/bootstrap.min.js}"></script>
</head>
<body>
<div class="middlecenter">
<div class="alert alert-danger" role="alert">
<p>Es ist ein Fehler aufgetreten.</p>
<a th:href="@{/}" class="linkbtn">Ach, Mist...</a>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,61 @@
<!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">
<head>
<title>Camp Organizer 2</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<libs></libs>
</head>
<body>
<header>
<a th:href="@{/}" class="btn btn-secondary btn-icon-silent" title="aktualisieren"><i class="fas fa-sync"></i></a>
<span>Das Buchungsportal dess Onkel Werner Freizeiten e.V.</span>
</header>
<content>
<div class="mainpage">
<script type="text/javascript">
var mytoggle = new MyToggle();
</script>
<h1>Unsere Freizeiten</h1>
<div class="card bottomdist16" th:each="c : ${camps}">
<div class="card-header mytoggle_btn" th:onclick="mytoggle.toggle('campdiv_[[${c.pk}]]')">
<span th:text="${c.name}"></span>&nbsp;<span th:text="${#numbers.formatInteger(c.year, 0)}" th:if="${c.year != null}"></span>
</div>
<div th:id="'campdiv_' + ${c.pk}" class="card-body mytoggle_collapsed">
<div class="container">
<div class="row">
<div class="col-sm-3">Ort</div>
<div class="col-sm-9">
<a th:href="${c.url}" th:text="${c.locationName}" target="_blank"></a>
</div>
</div>
<div class="row">
<div class="col-sm-3">Jungen und Mädchen</div>
<div class="col-sm-9" th:text="${c.minAge} + ' - ' + ${c.maxAge}"></div>
</div>
<div class="row">
<div class="col-sm-3">Zeit</div>
<div class="col-sm-9">
<span th:text="${#temporals.format(c.arrive, 'dd.MM.')} + ' - ' + ${#temporals.format(c.depart, 'dd.MM.yyyy')}" th:if="${c.arrive != null && c.depart != null}"></span>
</div>
</div>
<div class="row">
<div class="col-sm-3">Preis</div>
<div class="col-sm-9" th:text="${c.price}"></div>
</div>
<div class="row">
<div class="col-sm-3">Ferien</div>
<div class="col-sm-9" th:text="${c.countries}"></div>
</div>
<div class="row">
<div class="col-sm-3"></div>
<div class="col-sm-9">
<button class="btn btn-primary">jetzt anmelden</button>
</div>
</div>
</div>
</div>
</div>
</div>
</content>
</body>
</html>

View File

@ -0,0 +1,33 @@
<!DOCTYPE html>
<html th:fragment="layout (title, libs, header, content)" xmlns:th="http://www.thymeleaf.org">
<head>
<title th:replace="${title}">Camp Organizer Business</title>
<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/font-awesome/5.15.4/css/all.css} " />
<link th:rel="stylesheet" type="text/css" media="all" th:href="@{/webjars/datatables/1.11.4/css/jquery.dataTables.min.css}" />
<link th:rel="stylesheet" type="text/css" media="all" th:href="@{/webjars/select2/4.0.13/css/select2.min.css}" />
<link th:rel="stylesheet" type="text/css" media="all" th:href="@{/css/style.css}" />
<script th:src="@{/webjars/jquery/3.6.0/jquery.min.js}"></script>
<script th:src="@{/webjars/bootstrap/5.2.0/js/bootstrap.bundle.min.js}"></script>
<script th:src="@{/webjars/datatables/1.11.4/js/jquery.dataTables.min.js}"></script>
<script th:src="@{/webjars/select2/4.0.13/js/select2.full.min.js}"></script>
<script th:src="@{/js/dataTables.de.js}"></script>
<script th:src="@{/js/mytoggle.js}"></script>
<meta th:replace="${libs}"></meta>
</head>
<body>
<div class="myheadline">
<div class="topright linkbtn">
<span th:if="${not #strings.isEmpty(currentUser)}">
<b th:inline="text">[[${currentUser}]]</b> aus Version <span th:text="${@manifestBean.getVersion()}"></span> <a th:href="@{/logout}">ausloggen</a>
</span>
<span th:if="${#strings.isEmpty(currentUser)}">
<a th:href="@{/user}">einloggen</a>
</span>
</div>
<span th:replace="${header}">Layout header</span>
</div>
<div th:replace="${content}">Layout content</div>
</body>
</html>

View File

@ -0,0 +1,61 @@
<!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">
<head>
<title>Camp Organizer 2</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<libs></libs>
</head>
<body>
<header>
<a th:href="@{/}" class="btn btn-secondary btn-icon-silent" title="aktualisieren"><i class="fas fa-sync"></i></a>
<span>Das Buchungsportal dess Onkel Werner Freizeiten e.V.</span>
</header>
<content>
<div class="mainpage">
<script type="text/javascript">
var mytoggle = new MyToggle();
</script>
<h1>Unsere Freizeiten</h1>
<div class="card bottomdist16" th:each="c : ${camps}">
<div class="card-header mytoggle_btn" th:onclick="mytoggle.toggle('campdiv_[[${c.pk}]]')">
<span th:text="${c.name}"></span>&nbsp;<span th:text="${#numbers.formatInteger(c.year, 0)}" th:if="${c.year != null}"></span>
</div>
<div th:id="'campdiv_' + ${c.pk}" class="card-body mytoggle_collapsed">
<div class="container">
<div class="row">
<div class="col-sm-3">Ort</div>
<div class="col-sm-9">
<a th:href="${c.url}" th:text="${c.locationName}" target="_blank"></a>
</div>
</div>
<div class="row">
<div class="col-sm-3">Jungen und Mädchen</div>
<div class="col-sm-9" th:text="${c.minAge} + ' - ' + ${c.maxAge}"></div>
</div>
<div class="row">
<div class="col-sm-3">Zeit</div>
<div class="col-sm-9">
<span th:text="${#temporals.format(c.arrive, 'dd.MM.')} + ' - ' + ${#temporals.format(c.depart, 'dd.MM.yyyy')}" th:if="${c.arrive != null && c.depart != null}"></span>
</div>
</div>
<div class="row">
<div class="col-sm-3">Preis</div>
<div class="col-sm-9" th:text="${c.price}"></div>
</div>
<div class="row">
<div class="col-sm-3">Ferien</div>
<div class="col-sm-9" th:text="${c.countries}"></div>
</div>
<div class="row">
<div class="col-sm-3"></div>
<div class="col-sm-9">
<button class="btn btn-primary">jetzt anmelden</button>
</div>
</div>
</div>
</div>
</div>
</div>
</content>
</body>
</html>