see #45
This commit is contained in:
		| @@ -433,3 +433,7 @@ div { | ||||
| 	box-shadow: 0px 0px 7px 4px #ddd; | ||||
| 	border-radius: 40px; | ||||
| } | ||||
|  | ||||
| .beforetext { | ||||
| 	margin-right: 8px; | ||||
| } | ||||
|   | ||||
| @@ -14,17 +14,17 @@ | ||||
| 				</thead> | ||||
| 				<tbody> | ||||
| 					<tr th:each="c : ${camps}"> | ||||
| 						<td><a th:href="@{/admin/camp/edit/{id}(id=${c.pk})}"><span th:text="${c.name}"></span></a></td> | ||||
| 						<td><a th:href="@{/admin/camp/edit/{id}(id=${c.pk})}"><i class="fas fa-pen beforetext"></i><span th:text="${c.name}"></span></a></td> | ||||
| 						<td><th:block th:each="l : ${locations}"> | ||||
| 								<span th:if="${l.pk == c.fkLocation}" th:text="${l.name}"></span> | ||||
| 							</th:block></td> | ||||
| 						<td><span th:text="${#temporals.format(c.arrive, 'dd.MM.')}"></span> - <span th:text="${#temporals.format(c.depart, 'dd.MM.yyyy')}"></span></td> | ||||
| 						<td><a th:href="@{/document/{id}(id=${c.fkDocument})}"><i class="fas fa-download"></i></a></td> | ||||
| 						<td><a th:href="@{/document/{id}(id=${c.fkDocument})}"><i class="fas fa-download beforetext"></i>anzeigen</a></td> | ||||
| 					</tr> | ||||
| 				</tbody> | ||||
| 				<tfoot> | ||||
| 					<tr> | ||||
| 						<td colspan="6" style="text-align: center"><a th:href="@{/admin/camp/add}" class="btn btn-outline-primary">neue Freizeit anlegen</a></td> | ||||
| 						<td colspan="4" style="text-align: center"><a th:href="@{/admin/camp/add}" class="btn btn-outline-primary">neue Freizeit anlegen</a></td> | ||||
| 					</tr> | ||||
| 				</tfoot> | ||||
| 			</table> | ||||
|   | ||||
| @@ -10,12 +10,11 @@ | ||||
| 						<td>Dokumententyp</td> | ||||
| 						<td>Zielgruppe</td> | ||||
| 						<th>Inhalt</th> | ||||
| 						<th>Dateityp</th> | ||||
| 					</tr> | ||||
| 				</thead> | ||||
| 				<tbody> | ||||
| 					<tr th:each="d : ${documents}"> | ||||
| 						<td><a th:href="@{/admin/document/edit/{id}(id=${d.pk})}"><span th:text="${d.name}"></span></a></td> | ||||
| 						<td><a th:href="@{/admin/document/edit/{id}(id=${d.pk})}"><i class="fas fa-pen beforetext"></i><span th:text="${d.name}"></span></a></td> | ||||
| 						<td><span th:if="${d.doctype.literal == 'location'}">Wegbeschreibung</span> <span th:if="${d.doctype.literal == 'camp'}">Bestätigung</span><span | ||||
| 							th:if="${d.doctype.literal == 'camppass'}">Freizeitpass</span></td> | ||||
| 						<td><th:block th:each="r : ${d.roles}"> | ||||
| @@ -25,13 +24,12 @@ | ||||
| 								<span th:if="${r.literal == 'feeder'}" class="roleflag">Küche</span> | ||||
| 								<span th:if="${r.literal == 'observer'}" class="roleflag">Mitarbeiterkind</span> | ||||
| 							</th:block></td> | ||||
| 						<td><a th:href="@{/document/{id}(id=${d.pk})}"><i class="fas fa-download"></i></a></td> | ||||
| 						<td><span th:text="${d.filetype.literal}" th:if="${d.filetype}"></span></td> | ||||
| 						<td><a th:href="@{/document/{id}(id=${d.pk})}"><i class="fas fa-download beforetext"></i><span th:text="${d.filetype.literal}" th:if="${d.filetype}"></span> anzeigen</a></td> | ||||
| 					</tr> | ||||
| 				</tbody> | ||||
| 				<tfoot> | ||||
| 					<tr> | ||||
| 						<td colspan="6" style="text-align: center"><a th:href="@{/admin/document/add}" class="btn btn-outline-primary">neues Dokument anlegen</a></td> | ||||
| 						<td colspan="4" style="text-align: center"><a th:href="@{/admin/document/add}" class="btn btn-outline-primary">neues Dokument anlegen</a></td> | ||||
| 					</tr> | ||||
| 				</tfoot> | ||||
| 			</table> | ||||
|   | ||||
| @@ -13,14 +13,14 @@ | ||||
| 				</thead> | ||||
| 				<tbody> | ||||
| 					<tr th:each="l : ${locations}"> | ||||
| 						<td><a th:href="@{/admin/location/edit/{id}(id=${l.pk})}"><span th:text="${l.name}"></span></a></td> | ||||
| 						<td th:text="${l.url}"></td> | ||||
| 						<td><a th:href="@{/document/{id}(id=${l.fkDocument})}"><i class="fas fa-download"></i></a></td> | ||||
| 						<td><a th:href="@{/admin/location/edit/{id}(id=${l.pk})}"><i class="fas fa-pen beforetext"></i><span th:text="${l.name}"></span></a></td> | ||||
| 						<td><a th:href="${l.url}" target="_blank"><i class="fas fa-external-link-alt beforetext"></i><span th:text="${l.url}"></span></a></td> | ||||
| 						<td><a th:href="@{/document/{id}(id=${l.fkDocument})}"><i class="fas fa-download beforetext"></i>anzeigen</a></td> | ||||
| 					</tr> | ||||
| 				</tbody> | ||||
| 				<tfoot> | ||||
| 					<tr> | ||||
| 						<td colspan="6" style="text-align: center"><a th:href="@{/admin/location/add}" class="btn btn-outline-primary">neues Freizeitheim anlegen</a></td> | ||||
| 						<td colspan="3" style="text-align: center"><a th:href="@{/admin/location/add}" class="btn btn-outline-primary">neues Freizeitheim anlegen</a></td> | ||||
| 					</tr> | ||||
| 				</tfoot> | ||||
| 			</table> | ||||
|   | ||||
							
								
								
									
										66
									
								
								src/main/resources/templates/admin/privileges/add.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								src/main/resources/templates/admin/privileges/add.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | ||||
| <!DOCTYPE html> | ||||
| <html xmlns:th="http://www.thymeleaf.org" layout:decorate="~{template}" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:sec="http://www.thymeleaf.org/extras/spring-security"> | ||||
| <body> | ||||
| 	<th:block layout:fragment="content"> | ||||
| 		<div sec:authorize="hasRole('admin')"> | ||||
| 			<form th:action="@{/admin/privileges/insert/{d}(d=${pagedest})}" th:object="${bean}" method="post" enctype="multipart/form-data"> | ||||
| 				<div class="tablebox"> | ||||
| 					<div class="container"> | ||||
| 						<div class="row mb-2"> | ||||
| 							<div class="col-sm-12"> | ||||
| 								<div class="alert alter-danger" th:if="${error}" th:text="${error}"></div> | ||||
| 							</div> | ||||
| 						</div> | ||||
| 						<div class="row mb-2"> | ||||
| 							<label for="inputPerson" class="col-sm-2 col-form-label">Person</label> | ||||
| 							<div class="col-sm-10"> | ||||
| 								<span class="error" th:each="error : ${#fields.errors('fkProfile')}">[[${error}]]<br /></span> <select id="inputPerson" th:field="*{fkProfile}" | ||||
| 									th:class="${'form-select ' + (#fields.hasErrors('fkProfile') ? 'inputerror' : '')}"> | ||||
| 									<option value="">--- bitte wählen ---</option> | ||||
| 									<option th:each="l : ${profiles}" th:value="${l.pk}" th:text="${l.fullname}"></option> | ||||
| 								</select> | ||||
| 							</div> | ||||
| 							<script type="text/javascript"> | ||||
| 								$(document).ready(function() { | ||||
| 									$("#inputPerson").select2(); | ||||
| 								}); | ||||
| 							</script> | ||||
| 						</div> | ||||
| 						<div class="row mb-2"> | ||||
| 							<label for="inputCamp" class="col-sm-2 col-form-label">Freizeit</label> | ||||
| 							<div class="col-sm-10"> | ||||
| 								<span class="error" th:each="error : ${#fields.errors('fkCamp')}">[[${error}]]<br /></span> <select id="inputCamp" th:field="*{fkCamp}" | ||||
| 									th:class="${'form-select ' + (#fields.hasErrors('fkCamp') ? 'inputerror' : '')}"> | ||||
| 									<option value="">--- bitte wählen ---</option> | ||||
| 									<option th:each="l : ${camps}" th:value="${l.pk}" th:text="${l.name}"></option> | ||||
| 								</select> | ||||
| 							</div> | ||||
| 							<script type="text/javascript"> | ||||
| 								$(document).ready(function() { | ||||
| 									$("#inputCamp").select2(); | ||||
| 								}); | ||||
| 							</script> | ||||
| 						</div> | ||||
| 						<div class="row mb-2"> | ||||
| 							<label for="inputModule" class="col-sm-2 col-form-label">Modul</label> | ||||
| 							<div class="col-sm-10"> | ||||
| 								<span class="error" th:each="error : ${#fields.errors('module')}">[[${error}]]<br /></span> <select id="inputModule" th:field="*{module}" | ||||
| 									th:class="${'form-select ' + (#fields.hasErrors('module') ? 'inputerror' : '')}"> | ||||
| 									<option value="">--- bitte wählen ---</option> | ||||
| 									<option th:each="l : ${modules}" th:value="${l}" th:text="${l}"></option> | ||||
| 								</select> | ||||
| 							</div> | ||||
| 						</div> | ||||
| 						<div class="row mb-2"> | ||||
| 							<div class="col-sm-2"></div> | ||||
| 							<div class="col-sm-10"> | ||||
| 								<input type="submit" class="btn btn-success" value="Ok" /> <a th:href="@{/admin/privileges/abortinsert/{d}(d=${pagedest})}" class="btn btn-outline-secondary">Abbrechen</a> | ||||
| 							</div> | ||||
| 						</div> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 			</form> | ||||
| 		</div> | ||||
| 	</th:block> | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										70
									
								
								src/main/resources/templates/admin/privileges/campbased.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								src/main/resources/templates/admin/privileges/campbased.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| <!DOCTYPE html> | ||||
| <html xmlns:th="http://www.thymeleaf.org" layout:decorate="~{template}" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:sec="http://www.thymeleaf.org/extras/spring-security"> | ||||
| <head> | ||||
| <title>Camp Organizer Privileges</title> | ||||
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | ||||
| </head> | ||||
| <body> | ||||
| 	<th:block layout:fragment="content"> | ||||
| 		<div sec:authorize="hasRole('admin')"> | ||||
| 			<div class="tablebox"> | ||||
| 				<div class="dropdown"> | ||||
| 					<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> | ||||
| 						<span th:text="${selected}" th:if="${selected}"></span> <span th:unless="${selected}">-- bitte wählen --</span> | ||||
| 					</button> | ||||
| 					<ul class="dropdown-menu"> | ||||
| 						<li th:each="e : ${list}"><a class="dropdown-item" th:href="@{/admin/privileges/campbased/{r}(r=${e.pk})}"><span th:text="${e.fullname}"></span></a></li> | ||||
| 					</ul> | ||||
| 				</div> | ||||
| 				<div class="card" th:if="${selected}"> | ||||
| 					<div class="card-header"> | ||||
| 						<h1 th:text="${selected}"></h1> | ||||
| 					</div> | ||||
| 					<div class="card-body"> | ||||
| 						<table id="table" class="table table-striped"> | ||||
| 							<thead> | ||||
| 								<tr> | ||||
| 									<th>Person</th> | ||||
| 									<th>Modul</th> | ||||
| 								</tr> | ||||
| 							</thead> | ||||
| 							<tbody> | ||||
| 								<tr th:each="m : ${container.map}"> | ||||
| 									<td th:text="${m.key}"></td> | ||||
| 									<td> | ||||
| 										<div class="btn-toolbar" role="toolbar"> | ||||
| 											<div class="btn-group beforetext" role="group" th:each="v : ${m.value}" th:if="${m.value}"> | ||||
| 												<div class="dropdown"> | ||||
| 													<button class="btn btn-danger dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> | ||||
| 														<i class="fas fa-trash-alt"></i> | ||||
| 													</button> | ||||
| 													<ul class="dropdown-menu"> | ||||
| 														<li><a class="dropdown-item" th:href="@{/admin/privileges/delete/{id}/{d}(id=${v.key}, d=${pagedest})}">endgültig löschen</a></li> | ||||
| 													</ul> | ||||
| 												</div> | ||||
| 												<button type="button" class="btn btn-outline-secondary" th:text="${v.value}" disabled></button> | ||||
| 											</div> | ||||
| 										</div> | ||||
| 									</td> | ||||
| 								</tr> | ||||
| 							</tbody> | ||||
| 							<tfoot> | ||||
| 								<tr> | ||||
| 									<td colspan="2" style="text-align: center"><a th:href="@{/admin/privileges/add/{d}(d=${pagedest})}" class="btn btn-outline-primary">neue Berechtigung vergeben</a></td> | ||||
| 								</tr> | ||||
| 							</tfoot> | ||||
| 						</table> | ||||
| 						<script> | ||||
| 							$(document).ready(function() { | ||||
| 								$("#table").DataTable({ | ||||
| 									language : locale_de | ||||
| 								}); | ||||
| 							}); | ||||
| 						</script> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</th:block> | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										66
									
								
								src/main/resources/templates/admin/privileges/rolebased.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								src/main/resources/templates/admin/privileges/rolebased.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | ||||
| <!DOCTYPE html> | ||||
| <html xmlns:th="http://www.thymeleaf.org" layout:decorate="~{template}" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:sec="http://www.thymeleaf.org/extras/spring-security"> | ||||
| <head> | ||||
| <title>Camp Organizer Privileges</title> | ||||
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | ||||
| </head> | ||||
| <body> | ||||
| 	<th:block layout:fragment="content"> | ||||
| 		<div sec:authorize="hasRole('admin')"> | ||||
| 			<div class="tablebox"> | ||||
| 				<div class="btn-group" role="group"> | ||||
| 					<a th:class="${e == selected ? 'btn btn-primary' : 'btn btn-outline-secondary'}" th:each="e : ${list}" th:href="@{/admin/privileges/rolebased/{r}(r=${e})}"> <span th:text="${e}"></span> | ||||
| 					</a> | ||||
| 				</div> | ||||
| 				<div class="card" th:if="${selected}"> | ||||
| 					<div class="card-header"> | ||||
| 						<h1 th:text="${selected}"></h1> | ||||
| 					</div> | ||||
| 					<div class="card-body"> | ||||
| 						<table id="table" class="table table-striped"> | ||||
| 							<thead> | ||||
| 								<tr> | ||||
| 									<th>Name</th> | ||||
| 									<th>Freizeit</th> | ||||
| 								</tr> | ||||
| 							</thead> | ||||
| 							<tbody> | ||||
| 								<tr th:each="m : ${container.map}"> | ||||
| 									<td th:text="${m.key}"></td> | ||||
| 									<td> | ||||
| 										<div class="btn-toolbar" role="toolbar"> | ||||
| 											<div class="btn-group beforetext" role="group" th:each="v : ${m.value}" th:if="${m.value}"> | ||||
| 												<div class="dropdown"> | ||||
| 													<button class="btn btn-danger dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> | ||||
| 														<i class="fas fa-trash-alt"></i> | ||||
| 													</button> | ||||
| 													<ul class="dropdown-menu"> | ||||
| 														<li><a class="dropdown-item" th:href="@{/admin/privileges/delete/{id}/{d}(id=${v.key}, d=${pagedest})}">endgültig löschen</a></li> | ||||
| 													</ul> | ||||
| 												</div> | ||||
| 												<button type="button" class="btn btn-outline-secondary" th:text="${v.value}" disabled></button> | ||||
| 											</div> | ||||
| 										</div> | ||||
| 									</td> | ||||
| 								</tr> | ||||
| 							</tbody> | ||||
| 							<tfoot> | ||||
| 								<tr> | ||||
| 									<td colspan="2" style="text-align: center"><a th:href="@{/admin/privileges/add/{d}(d=${pagedest})}" class="btn btn-outline-primary">neue Berechtigung vergeben</a></td> | ||||
| 								</tr> | ||||
| 							</tfoot> | ||||
| 						</table> | ||||
| 						<script> | ||||
| 							$(document).ready(function() { | ||||
| 								$("#table").DataTable({ | ||||
| 									language : locale_de | ||||
| 								}); | ||||
| 							}); | ||||
| 						</script> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</th:block> | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										70
									
								
								src/main/resources/templates/admin/privileges/userbased.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								src/main/resources/templates/admin/privileges/userbased.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| <!DOCTYPE html> | ||||
| <html xmlns:th="http://www.thymeleaf.org" layout:decorate="~{template}" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:sec="http://www.thymeleaf.org/extras/spring-security"> | ||||
| <head> | ||||
| <title>Camp Organizer Privileges</title> | ||||
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | ||||
| </head> | ||||
| <body> | ||||
| 	<th:block layout:fragment="content"> | ||||
| 		<div sec:authorize="hasRole('admin')"> | ||||
| 			<div class="tablebox"> | ||||
| 				<div class="dropdown"> | ||||
| 					<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> | ||||
| 						<span th:text="${selected}" th:if="${selected}"></span> <span th:unless="${selected}">-- bitte wählen --</span> | ||||
| 					</button> | ||||
| 					<ul class="dropdown-menu"> | ||||
| 						<li th:each="e : ${list}"><a class="dropdown-item" th:href="@{/admin/privileges/userbased/{r}(r=${e.pk})}"><span th:text="${e.fullname}"></span></a></li> | ||||
| 					</ul> | ||||
| 				</div> | ||||
| 				<div class="card" th:if="${selected}"> | ||||
| 					<div class="card-header"> | ||||
| 						<h1 th:text="${selected}"></h1> | ||||
| 					</div> | ||||
| 					<div class="card-body"> | ||||
| 						<table id="table" class="table table-striped"> | ||||
| 							<thead> | ||||
| 								<tr> | ||||
| 									<th>Modul</th> | ||||
| 									<th>Freizeit</th> | ||||
| 								</tr> | ||||
| 							</thead> | ||||
| 							<tbody> | ||||
| 								<tr th:each="m : ${container.map}"> | ||||
| 									<td th:text="${m.key}"></td> | ||||
| 									<td> | ||||
| 										<div class="btn-toolbar" role="toolbar"> | ||||
| 											<div class="btn-group beforetext" role="group" th:each="v : ${m.value}" th:if="${m.value}"> | ||||
| 												<div class="dropdown"> | ||||
| 													<button class="btn btn-danger dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> | ||||
| 														<i class="fas fa-trash-alt"></i> | ||||
| 													</button> | ||||
| 													<ul class="dropdown-menu"> | ||||
| 														<li><a class="dropdown-item" th:href="@{/admin/privileges/delete/{id}/{d}(id=${v.key}, d=${pagedest})}">endgültig löschen</a></li> | ||||
| 													</ul> | ||||
| 												</div> | ||||
| 												<button type="button" class="btn btn-outline-secondary" th:text="${v.value}" disabled></button> | ||||
| 											</div> | ||||
| 										</div> | ||||
| 									</td> | ||||
| 								</tr> | ||||
| 							</tbody> | ||||
| 							<tfoot> | ||||
| 								<tr> | ||||
| 									<td colspan="2" style="text-align: center"><a th:href="@{/admin/privileges/add/{d}(d=${pagedest})}" class="btn btn-outline-primary">neue Berechtigung vergeben</a></td> | ||||
| 								</tr> | ||||
| 							</tfoot> | ||||
| 						</table> | ||||
| 						<script> | ||||
| 							$(document).ready(function() { | ||||
| 								$("#table").DataTable({ | ||||
| 									language : locale_de | ||||
| 								}); | ||||
| 							}); | ||||
| 						</script> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</th:block> | ||||
| </body> | ||||
| </html> | ||||
| @@ -25,123 +25,120 @@ | ||||
| 		<!-- remove? --> | ||||
| 		<!-- <div class="container-fluid"> | ||||
| 		<!--  --> | ||||
|     	<button class="navbar-toggler" style="margin-right: 40px" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"> | ||||
|       	<span class="navbar-toggler-icon"></span> | ||||
|     	</button> | ||||
| 			<div class="collapse navbar-collapse" id="navbarSupportedContent" style="margin-right: 20px"> | ||||
| 				<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></li> | ||||
| 					<li class="nav-item"><a class="btn btn-icon-silent menufont" th:href="@{/}">Startseite</a></li> | ||||
| 					<li class="nav-item"><a class="btn btn-icon-silent menufont" th:href="@{/allgemeines}">Allgemeines</a></li> | ||||
| 					<li class="nav-item"><a class="btn btn-icon-silent menufont" th:href="@{/camplist}">Freizeiten</a></li> | ||||
| 					<li class="nav-item"><a class="btn btn-icon-silent menufont" th:href="@{/verein}">Verein</a></li> | ||||
| 					<li class="nav-item dropdown"> | ||||
| 	          <a class="nav-link dropdown-toggle btn-icon-silent menufont" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> | ||||
| 	            Tagebuch | ||||
| 	          </a> | ||||
| 	          <ul class="dropdown-menu" aria-labelledby="navbarDropdown"> | ||||
| 	          	<li><a class="dropdown-item menufont" th:href="@{/reports/olfenostern2023}">Osterfreizeit 2023 in Olfen</a></li> | ||||
| 	            <li><hr class="dropdown-divider"></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/olfen2020}">Herbstfreizeit 2020 in Olfen</a></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/heimfreizeit2020}">Heimfreizeit 2020</a></li> | ||||
| 	            <li><hr class="dropdown-divider"></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/rehe2019}">Rehe 2019</a></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/growup2019}">GrowUp 2019</a></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/schweiz2019}">Schweiz 2019</a></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/hohenhaslach2019}">Hohenhaslach 2019</a></li> | ||||
| 	            <li><hr class="dropdown-divider"></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/olfen2018}">Osterfreizeit 2018 in Olfen</a></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/growup2018}">GrowUp 2018</a></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/schweiz2018}">Schweiz-Freizeit 2018 in Kiental</a></li> | ||||
| 	            <li><hr class="dropdown-divider"></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/growup2017}">GrowUp 2017</a></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/schweiz2017}">Schweiz 2017</a></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/heimfreizeit2017}">Heimfreizeit 2017</a></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/hohenhaslach2017}">Hohenhaslach 2017</a></li> | ||||
| 	            <li><hr class="dropdown-divider"></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/olfen2015}">Olfen 2015</a></li> | ||||
| 	            <li><hr class="dropdown-divider"></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/wrist2014}">Wrist 2014</a></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/vorolfen2014}">Vorbereitungstreffen Olfen 2014</a></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/vorschweiz2014}">Vorbereitungstreffen Schweiz 2014</a></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/olfen2014}">Olfen 2014</a></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/schweiz2014}">Schweiz 2014</a></li> | ||||
| 	            <li><hr class="dropdown-divider"></li> | ||||
| 	            <li><a class="dropdown-item menufont" th:href="@{/reports/history}">Über 30 Jahre Onkel Werner Freizeiten – Ein Rückblick ...</a></li> | ||||
| 	          </ul> | ||||
| 	        </li> | ||||
| 					<li class="nav-item"><a class="btn btn-icon-silent menufont" th:href="@{/kontakt}">Kontakt</a></li> | ||||
| 				</ul> | ||||
| 				<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('business')"> | ||||
| 					<li class="nav-item"> | ||||
| 						<div class="dropdown"> | ||||
| 							<a class="nav-link dropdown-toggle btn-icon-silent menufont" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> | ||||
| 								Abrechnung | ||||
| 							</a> | ||||
| 							<ul class="dropdown-menu"> | ||||
| 								<li><a th:href="@{/business}" class="dropdown-item menufont">Freizeitübersicht</a></li> | ||||
| 								<li><a th:href="@{/business/bookings}" class="dropdown-item menufont" sec:authorize="hasRole('business_booking')">Buchungsübersicht</a></li> | ||||
| 								<li><a th:href="@{/business/privileges}" class="dropdown-item menufont" sec:authorize="hasRole('admin')">Nutzerverwaltung</a></li> | ||||
| 							</ul> | ||||
| 						</div> | ||||
| 					</li> | ||||
| 				</ul> | ||||
| 				<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('registrator')"> | ||||
| 					<li class="nav-item"> | ||||
| 						<div class="dropdown"> | ||||
| 							<a class="nav-link dropdown-toggle btn-icon-silent menufont" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> | ||||
| 								Bestätigung | ||||
| 							</a> | ||||
| 							<ul class="dropdown-menu"> | ||||
| 								<li><a th:href="@{/rss/registrator}" class="dropdown-item menufont"><i class="fas fa-rss"></i> RSS-Link</a></li> | ||||
| 								<li><a th:href="@{/confirmation}" class="dropdown-item menufont">Anmeldungsübersicht</a></li> | ||||
| 							</ul> | ||||
| 						</div> | ||||
| 					</li> | ||||
| 				</ul> | ||||
| 				<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('admin')"> | ||||
| 					<li class="nav-item"> | ||||
| 						<div class="dropdown"> | ||||
| 							<a class="nav-link dropdown-toggle btn-icon-silent menufont" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> | ||||
| 								Admin | ||||
| 							</a> | ||||
| 							<ul class="dropdown-menu"> | ||||
| 								<li><a th:href="@{/rss/admin}" class="dropdown-item menufont"><i class="fas fa-rss"></i> RSS-Link</a></li> | ||||
| 								<li><a th:href="@{/admin/mail}" class="dropdown-item menufont">Testmail</a></li> | ||||
| 								<li><a th:href="@{/admin/document}" class="dropdown-item menufont">Dokumente</a></li> | ||||
| 								<li><a th:href="@{/admin/location}" class="dropdown-item menufont">Freizeitheime</a></li> | ||||
| 								<!-- TODO: implementation not yet finished --> | ||||
| 								<li><a th:href="@{/admin/camp}" class="dropdown-item menufont">Freizeiten</a> | ||||
| 								<!-- --> | ||||
| 							</ul> | ||||
| 						</div> | ||||
| 					</li> | ||||
| 				</ul> | ||||
| 				<ul class="navbar-nav mb-2 mb-lg-0" th:if="${not #strings.isEmpty(currentUser)}"> | ||||
| 					<li class="nav-item"><a href="https://www.onkelwernerfreizeiten.de/cloud" class="btn btn-secondary btn-icon-silent menufont" target="_blank">Nextcloud</a></li> | ||||
| 				</ul> | ||||
| 				<ul layout:fragment="header"></ul> | ||||
| 				<ul class="nav navbar-nav ms-auto right-dist"> | ||||
| 					<li class="nav-item"> | ||||
| 						<div class="dropdown"> | ||||
| 							<button class="btn btn-hoverborder navbar-collapse" type="button" data-bs-toggle="dropdown" aria-expanded="false"> | ||||
| 								<img th:src="@{/images/Icon_Profil.svg}" width="24px" height="24px" /> | ||||
| 							</button> | ||||
| 							<ul class="dropdown-menu dropdown-menu-end" th:if="${#strings.isEmpty(currentUser)}"> | ||||
| 								<li><a class="dropdown-item" th:href="@{/dashboard}">einloggen</a></li> | ||||
| 								<li><hr /></li> | ||||
| 								<li><a class="dropdown-item" th:href="@{/migration/login}">Login umziehen</a></li> | ||||
| 							</ul> | ||||
| 							<ul class="dropdown-menu dropdown-menu-end" th:unless="${#strings.isEmpty(currentUser)}"> | ||||
| 								<li><a class="dropdown-item" th:href="@{${keycloakProfileUrl}}" target="_blank">Benutzername ändern</a></li> | ||||
| 								<li><a class="dropdown-item" th:href="@{${keycloakProfileUrl} + '/password'}" target="_blank">Password ändern</a></li> | ||||
| 								<li><hr /></li> | ||||
| 								<li><a class="dropdown-item" th:href="@{/logout}"><b th:inline="text">[[${currentUser}]]</b> ausloggen</a></li> | ||||
| 							</ul> | ||||
| 						</div> | ||||
| 					</li> | ||||
| 				</ul> | ||||
| 			</div> | ||||
| 		<button class="navbar-toggler" style="margin-right: 40px" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" | ||||
| 			aria-expanded="false"> | ||||
| 			<span class="navbar-toggler-icon"></span> | ||||
| 		</button> | ||||
| 		<div class="collapse navbar-collapse" id="navbarSupportedContent" style="margin-right: 20px"> | ||||
| 			<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></li> | ||||
| 				<li class="nav-item"><a class="btn btn-icon-silent menufont" th:href="@{/}">Startseite</a></li> | ||||
| 				<li class="nav-item"><a class="btn btn-icon-silent menufont" th:href="@{/allgemeines}">Allgemeines</a></li> | ||||
| 				<li class="nav-item"><a class="btn btn-icon-silent menufont" th:href="@{/camplist}">Freizeiten</a></li> | ||||
| 				<li class="nav-item"><a class="btn btn-icon-silent menufont" th:href="@{/verein}">Verein</a></li> | ||||
| 				<li class="nav-item dropdown"><a class="nav-link dropdown-toggle btn-icon-silent menufont" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> | ||||
| 						Tagebuch </a> | ||||
| 					<ul class="dropdown-menu" aria-labelledby="navbarDropdown"> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/olfenostern2023}">Osterfreizeit 2023 in Olfen</a></li> | ||||
| 						<li><hr class="dropdown-divider"></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/olfen2020}">Herbstfreizeit 2020 in Olfen</a></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/heimfreizeit2020}">Heimfreizeit 2020</a></li> | ||||
| 						<li><hr class="dropdown-divider"></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/rehe2019}">Rehe 2019</a></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/growup2019}">GrowUp 2019</a></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/schweiz2019}">Schweiz 2019</a></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/hohenhaslach2019}">Hohenhaslach 2019</a></li> | ||||
| 						<li><hr class="dropdown-divider"></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/olfen2018}">Osterfreizeit 2018 in Olfen</a></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/growup2018}">GrowUp 2018</a></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/schweiz2018}">Schweiz-Freizeit 2018 in Kiental</a></li> | ||||
| 						<li><hr class="dropdown-divider"></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/growup2017}">GrowUp 2017</a></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/schweiz2017}">Schweiz 2017</a></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/heimfreizeit2017}">Heimfreizeit 2017</a></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/hohenhaslach2017}">Hohenhaslach 2017</a></li> | ||||
| 						<li><hr class="dropdown-divider"></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/olfen2015}">Olfen 2015</a></li> | ||||
| 						<li><hr class="dropdown-divider"></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/wrist2014}">Wrist 2014</a></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/vorolfen2014}">Vorbereitungstreffen Olfen 2014</a></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/vorschweiz2014}">Vorbereitungstreffen Schweiz 2014</a></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/olfen2014}">Olfen 2014</a></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/schweiz2014}">Schweiz 2014</a></li> | ||||
| 						<li><hr class="dropdown-divider"></li> | ||||
| 						<li><a class="dropdown-item menufont" th:href="@{/reports/history}">Über 30 Jahre Onkel Werner Freizeiten – Ein Rückblick ...</a></li> | ||||
| 					</ul></li> | ||||
| 				<li class="nav-item"><a class="btn btn-icon-silent menufont" th:href="@{/kontakt}">Kontakt</a></li> | ||||
| 			</ul> | ||||
| 			<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('business')"> | ||||
| 				<li class="nav-item"> | ||||
| 					<div class="dropdown"> | ||||
| 						<a class="nav-link dropdown-toggle btn-icon-silent menufont" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">Abrechnung</a> | ||||
| 						<ul class="dropdown-menu"> | ||||
| 							<li><a th:href="@{/business}" class="dropdown-item menufont">Freizeitübersicht</a></li> | ||||
| 							<li><a th:href="@{/business/bookings}" class="dropdown-item menufont" sec:authorize="hasRole('business_booking')">Buchungsübersicht</a></li> | ||||
| 							<li><a th:href="@{/business/privileges}" class="dropdown-item menufont" sec:authorize="hasRole('admin')">Nutzerverwaltung</a></li> | ||||
| 						</ul> | ||||
| 					</div> | ||||
| 				</li> | ||||
| 			</ul> | ||||
| 			<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('registrator')"> | ||||
| 				<li class="nav-item"> | ||||
| 					<div class="dropdown"> | ||||
| 						<a class="nav-link dropdown-toggle btn-icon-silent menufont" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">Bestätigung</a> | ||||
| 						<ul class="dropdown-menu"> | ||||
| 							<li><a th:href="@{/rss/registrator}" class="dropdown-item menufont"><i class="fas fa-rss"></i> RSS-Link</a></li> | ||||
| 							<li><a th:href="@{/confirmation}" class="dropdown-item menufont">Anmeldungsübersicht</a></li> | ||||
| 						</ul> | ||||
| 					</div> | ||||
| 				</li> | ||||
| 			</ul> | ||||
| 			<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('admin')"> | ||||
| 				<li class="nav-item"> | ||||
| 					<div class="dropdown"> | ||||
| 						<a class="nav-link dropdown-toggle btn-icon-silent menufont" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close='outside' aria-expanded="false">Admin</a> | ||||
| 						<ul class="dropdown-menu"> | ||||
| 							<li><a th:href="@{/rss/admin}" class="dropdown-item menufont"><i class="fas fa-rss"></i> RSS-Link</a></li> | ||||
| 							<li><a th:href="@{/admin/mail}" class="dropdown-item menufont">Testmail</a></li> | ||||
| 							<li><a th:href="@{/admin/document}" class="dropdown-item menufont">Dokumente</a></li> | ||||
| 							<li><a th:href="@{/admin/location}" class="dropdown-item menufont">Freizeitheime</a></li> | ||||
| 							<li><a th:href="@{/admin/camp}" class="dropdown-item menufont">Freizeiten</a> | ||||
| 							<li class="dropdown dropend"> | ||||
| 							  <a class="dropdown-item dropdown-toggle menufont" href="#" role="button" data-bs-auto-close='outside' data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Rechteverwaltung</a> | ||||
| 								<ul class="dropdown-menu"> | ||||
| 									<li><a class="dropdown-item menufont" th:href="@{/admin/privileges/userbased}">nutzerzentriert</a></li> | ||||
| 									<li><a class="dropdown-item menufont" th:href="@{/admin/privileges/rolebased}">rollenzentriert</a></li> | ||||
| 									<li><a class="dropdown-item menufont" th:href="@{/admin/privileges/campbased}">freizeitzentriert</a></li> | ||||
| 								</ul></li> | ||||
| 						</ul> | ||||
| 					</div> | ||||
| 				</li> | ||||
| 			</ul> | ||||
| 			<ul class="navbar-nav mb-2 mb-lg-0" th:if="${not #strings.isEmpty(currentUser)}"> | ||||
| 				<li class="nav-item"><a href="https://www.onkelwernerfreizeiten.de/cloud" class="btn btn-secondary btn-icon-silent menufont" target="_blank">Nextcloud</a></li> | ||||
| 			</ul> | ||||
| 			<ul layout:fragment="header"></ul> | ||||
| 			<ul class="nav navbar-nav ms-auto right-dist"> | ||||
| 				<li class="nav-item"> | ||||
| 					<div class="dropdown"> | ||||
| 						<button class="btn btn-hoverborder navbar-collapse" type="button" data-bs-toggle="dropdown" aria-expanded="false"> | ||||
| 							<img th:src="@{/images/Icon_Profil.svg}" width="24px" height="24px" /> | ||||
| 						</button> | ||||
| 						<ul class="dropdown-menu dropdown-menu-end" th:if="${#strings.isEmpty(currentUser)}"> | ||||
| 							<li><a class="dropdown-item" th:href="@{/dashboard}">einloggen</a></li> | ||||
| 							<li><hr /></li> | ||||
| 							<li><a class="dropdown-item" th:href="@{/migration/login}">Login umziehen</a></li> | ||||
| 						</ul> | ||||
| 						<ul class="dropdown-menu dropdown-menu-end" th:unless="${#strings.isEmpty(currentUser)}"> | ||||
| 							<li><a class="dropdown-item" th:href="@{${keycloakProfileUrl}}" target="_blank">Benutzername ändern</a></li> | ||||
| 							<li><a class="dropdown-item" th:href="@{${keycloakProfileUrl} + '/password'}" target="_blank">Password ändern</a></li> | ||||
| 							<li><hr /></li> | ||||
| 							<li><a class="dropdown-item" th:href="@{/logout}"><b th:inline="text">[[${currentUser}]]</b> ausloggen</a></li> | ||||
| 						</ul> | ||||
| 					</div> | ||||
| 				</li> | ||||
| 			</ul> | ||||
| 		</div> | ||||
| 		<!-- </div> --> | ||||
| 	</nav> | ||||
| 	<div layout:fragment="content">content</div> | ||||
| @@ -149,17 +146,16 @@ | ||||
| 		<a href="https://gitlab.com/jottyfan/camporganizer2/-/issues" class="versionlink" target="_blank" th:text="${'Version ' + @manifestBean.getVersion()}"></a> | ||||
| 	</div> | ||||
| 	<br /> | ||||
|   <div class="container" style="margin-bottom: 24px"> | ||||
|     <div class="row"> | ||||
|       <div class="col-md-10"> | ||||
|         <span> Copyright © 2022 <a class="text-light" href="https://www.onkelwernerfreizeiten.de/">Onkel Werner Freizeiten</a> All rights reserved. | ||||
|         </span> | ||||
|       </div> | ||||
|       <div class="col-md-2"> | ||||
|         <a th:href="@{/impressum}">Impressum</a>   | ||||
|         <a th:href="@{/datenschutz}">Datenschutz</a> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| 	<div class="container" style="margin-bottom: 24px"> | ||||
| 		<div class="row"> | ||||
| 			<div class="col-md-10"> | ||||
| 				<span> Copyright © 2022 <a class="text-light" href="https://www.onkelwernerfreizeiten.de/">Onkel Werner Freizeiten</a> All rights reserved. | ||||
| 				</span> | ||||
| 			</div> | ||||
| 			<div class="col-md-2"> | ||||
| 				<a th:href="@{/impressum}">Impressum</a>   <a th:href="@{/datenschutz}">Datenschutz</a> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</div> | ||||
| </body> | ||||
| </html> | ||||
		Reference in New Issue
	
	Block a user