prepared file upload

This commit is contained in:
Jottyfan
2023-01-28 18:40:23 +01:00
parent e6e625306d
commit 9e7850a4a1
37 changed files with 625 additions and 76 deletions

View File

@ -0,0 +1,58 @@
<!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="header">
<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('admin')">
<li class="nav-item"><a th:href="@{/rss/admin}" class="btn btn-seconary btn-icon-silent"><i class="fas fa-rss"></i></a></li>
</ul>
<ul class="navbar-nav mb-2 mb-lg-0">
<li class="nav-item"><a th:href="@{/dashboard}" class="btn btn-secondary btn-icon-silent">Hauptseite</a></li>
</ul>
<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('admin')">
<li class="nav-item"><a th:href="@{/admin}" class="btn btn-secondary btn-icon-silent">Administration</a></li>
</ul>
</th:block>
<th:block layout:fragment="content">
<div class="tablebox" sec:authorize="hasRole('admin')">
<table id="docs" class="table table-striped" style="width: 100% !important">
<thead>
<tr>
<td>Name</td>
<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><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}">
<span th:if="${r.literal == 'student'}" class="roleflag">Teilnehmer</span>
<span th:if="${r.literal == 'teacher'}" class="roleflag">Mitarbeiter</span>
<span th:if="${r.literal == 'director'}" class="roleflag">Leiter</span>
<span th:if="${r.literal == 'feeder'}" class="roleflag">Küche</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>
</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>
</tr>
</tfoot>
</table>
<script>
$(document).ready(function() {
$("#docs").DataTable({
language : locale_de
});
});
</script>
</div>
</th:block>
</body>
</html>

View File

@ -0,0 +1,92 @@
<!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="header">
<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('admin')">
<li class="nav-item"><a th:href="@{/rss/admin}" class="btn btn-seconary btn-icon-silent"><i class="fas fa-rss"></i></a></li>
</ul>
<ul class="navbar-nav mb-2 mb-lg-0">
<li class="nav-item"><a th:href="@{/dashboard}" class="btn btn-secondary btn-icon-silent">Hauptseite</a></li>
</ul>
<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('admin')">
<li class="nav-item"><a th:href="@{/admin}" class="btn btn-secondary btn-icon-silent">Administration</a></li>
</ul>
<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('admin')">
<li class="nav-item"><a th:href="@{/admin/document}" class="btn btn-secondary btn-icon-silent">Dokumente</a></li>
</ul>
</th:block>
<th:block layout:fragment="content">
<div sec:authorize="hasRole('admin')">
<form th:action="@{/admin/document/update}" th:object="${bean}" method="post" enctype="multipart/form-data">
<div class="tablebox">
<div class="container">
<input type="hidden" th:field="*{pk}" />
<div class="row mb-2">
<label for="inputName" class="col-sm-2 col-form-label">Name</label>
<div class="col-sm-10">
<span class="error" th:each="error : ${#fields.errors('name')}">[[${error}]]<br /></span> <input id="inputName" type="text" th:field="*{name}"
th:class="${'form-control ' + (#fields.hasErrors('name') ? 'inputerror' : '')}">
</div>
</div>
<div class="row mb-2">
<label for="inputDoctype" class="col-sm-2 col-form-label">Dokumententyp</label>
<div class="col-sm-10">
<span class="error" th:each="error : ${#fields.errors('doctype')}">[[${error}]]<br /></span> <select id="inputDoctype" th:field="*{doctype}"
th:class="${'form-select ' + (#fields.hasErrors('doctype') ? 'inputerror' : '')}">
<option value="">--- bitte wählen ---</option>
<option value="location">Wegbeschreibung</option>
<option value="camp">Bestätigung</option>
<option value="camppass">Freizeitpass</option>
</select>
</div>
</div>
<div class="row mb-2">
<label for="inputRole" class="col-sm-2 col-form-label">Zielgruppe</label>
<div class="col-sm-10">
<span class="error" th:each="error : ${#fields.errors('roles')}">[[${error}]]<br /></span> <select id="inputRole" th:field="*{roles}"
th:class="${'form-control ' + (#fields.hasErrors('roles') ? 'inputerror' : '')}" multiple>
<option value="student">Teilnehmer</option>
<option value="teacher">Mitarbeiter</option>
<option value="director">Leiter</option>
<option value="feeder">Küche</option>
</select>
</div>
</div>
<div class="row mb-2">
<label for="inputFile" class="col-sm-2 col-form-label">Dokument</label>
<div class="col-sm-10">
<span class="error" th:each="error : ${#fields.errors('uploadfile')}">[[${error}]]<br /></span>
<input type="file" id="inputFile" th:field="*{uploadfile}" th:class="${'form-control ' + (#fields.hasErrors('uploadfile') ? 'inputerror' : '')}" />
</div>
</div>
<div class="row mb-2">
<label for="inputFiletype" class="col-sm-2 col-form-label">Dateityp</label>
<div class="col-sm-10">
<span class="error" th:each="error : ${#fields.errors('filetype')}">[[${error}]]<br /></span> <select id="inputFiletype" th:field="*{filetype}"
th:class="${'form-select ' + (#fields.hasErrors('filetype') ? 'inputerror' : '')}">
<option value="">--- bitte wählen ---</option>
<option value="pdf">PDF</option>
<option value="png">PNG</option>
<option value="jpg">JPG</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/document}" class="btn btn-outline-secondary">Abbrechen</a>
</div>
</div>
<!-- TODO:
delete from db th:if="${bean.pk}"
-->
</div>
</div>
</form>
</div>
</th:block>
</body>
</html>

View File

@ -7,7 +7,7 @@
<body>
<th:block layout:fragment="header">
<ul class="navbar-nav mb-2 mb-lg-0">
<li class="nav-item"><a th:href="@{/}" class="btn btn-secondary btn-icon-silent">Hauptseite</a></li>
<li class="nav-item"><a th:href="@{/dashboard}" class="btn btn-secondary btn-icon-silent">Hauptseite</a></li>
</ul>
<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('admin')">
<li class="nav-item"><a th:href="@{/admin}" class="btn btn-seconary btn-icon-silent">Admin</a></li>

View File

@ -10,15 +10,18 @@
<li class="nav-item"><a th:href="@{/rss/admin}" class="btn btn-seconary btn-icon-silent"><i class="fas fa-rss"></i></a></li>
</ul>
<ul class="navbar-nav mb-2 mb-lg-0">
<li class="nav-item"><a th:href="@{/}" class="btn btn-secondary btn-icon-silent">Hauptseite</a></li>
<li class="nav-item"><a th:href="@{/dashboard}" class="btn btn-secondary btn-icon-silent">Hauptseite</a></li>
</ul>
<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('admin')">
<li class="nav-item"><a th:href="@{/admin/mail}" class="btn btn-secondary btn-icon-silent">Testmail</a></li>
</ul>
<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('admin')">
<li class="nav-item"><a th:href="@{/admin/document}" class="btn btn-secondary btn-icon-silent">Dokumente</a></li>
</ul>
</th:block>
<th:block layout:fragment="content">
<div sec:authorize="hasRole('admin')">
TODO: implement
TODO: implement; list number of camps, registrations and documents or such
</div>
</th:block>
</body>