prepared editing locations
This commit is contained in:
@ -116,4 +116,38 @@ public class AdminController extends CommonController {
|
|||||||
model.addAttribute("locations", service.getLocations());
|
model.addAttribute("locations", service.getLocations());
|
||||||
return "/admin/location";
|
return "/admin/location";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/admin/location/add")
|
||||||
|
public String prepareAddLocation(Model model, HttpServletRequest request) {
|
||||||
|
super.setupSession(model, request);
|
||||||
|
model.addAttribute("bean", new LocationBean());
|
||||||
|
return "/admin/location_edit";
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/admin/location/edit/{id}")
|
||||||
|
public String prepareAddLocation(@PathVariable Integer id, Model model, HttpServletRequest request) {
|
||||||
|
super.setupSession(model, request);
|
||||||
|
model.addAttribute("bean", service.getLocation(id));
|
||||||
|
return "/admin/location_edit";
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/admin/location/update")
|
||||||
|
public String updateDocument(@Valid @ModelAttribute("bean") LocationBean bean,
|
||||||
|
final BindingResult bindingResult, Model model, HttpServletRequest request) {
|
||||||
|
super.setupSession(model, request);
|
||||||
|
if (bindingResult.hasErrors()) {
|
||||||
|
for (ObjectError error : bindingResult.getAllErrors())
|
||||||
|
LOGGER.error("error {}: {}", error.getCode(), error.getDefaultMessage());
|
||||||
|
return "/admin/location_edit";
|
||||||
|
}
|
||||||
|
service.updateLocation(bean);
|
||||||
|
return "redirect:/admin/location";
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/admin/location/delete/{id}")
|
||||||
|
public String deleteLocation(@PathVariable Integer id, Model model, HttpServletRequest request) {
|
||||||
|
super.setupSession(model, request);
|
||||||
|
service.deleteLocation(id);
|
||||||
|
return "redirect:/admin/location";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ import org.jooq.Field;
|
|||||||
import org.jooq.InsertResultStep;
|
import org.jooq.InsertResultStep;
|
||||||
import org.jooq.InsertReturningStep;
|
import org.jooq.InsertReturningStep;
|
||||||
import org.jooq.Record5;
|
import org.jooq.Record5;
|
||||||
|
import org.jooq.SelectConditionStep;
|
||||||
import org.jooq.SelectSeekStep1;
|
import org.jooq.SelectSeekStep1;
|
||||||
import org.jooq.SelectWhereStep;
|
import org.jooq.SelectWhereStep;
|
||||||
import org.jooq.UpdateConditionStep;
|
import org.jooq.UpdateConditionStep;
|
||||||
@ -255,7 +256,19 @@ public class AdminRepository {
|
|||||||
for (TLocationRecord r : sql.fetch()) {
|
for (TLocationRecord r : sql.fetch()) {
|
||||||
list.add(LocationBean.of(r));
|
list.add(LocationBean.of(r));
|
||||||
}
|
}
|
||||||
return null;
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get the location from the database
|
||||||
|
*
|
||||||
|
* @param id the ID
|
||||||
|
* @return the location bean or null
|
||||||
|
*/
|
||||||
|
public LocationBean getLocation(Integer id) {
|
||||||
|
SelectConditionStep<TLocationRecord> sql = jooq.selectFrom(T_LOCATION).where(T_LOCATION.PK.eq(id));
|
||||||
|
LOGGER.debug(sql.toString());
|
||||||
|
return LocationBean.of(sql.fetchOne());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import javax.validation.Valid;
|
|||||||
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
import org.jooq.exception.DataAccessException;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@ -84,4 +85,22 @@ public class AdminService {
|
|||||||
public List<LocationBean> getLocations() {
|
public List<LocationBean> getLocations() {
|
||||||
return adminRepository.getLocations();
|
return adminRepository.getLocations();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get the location of id
|
||||||
|
*
|
||||||
|
* @param id the id
|
||||||
|
* @return the location or null
|
||||||
|
*/
|
||||||
|
public LocationBean getLocation(Integer id) {
|
||||||
|
return adminRepository.getLocation(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateLocation(@Valid LocationBean bean) {
|
||||||
|
throw new DataAccessException("not yet implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteLocation(Integer id) {
|
||||||
|
throw new DataAccessException("not yet implemented");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,9 @@ public class LocationBean implements Serializable {
|
|||||||
private String url;
|
private String url;
|
||||||
|
|
||||||
public static LocationBean of(TLocationRecord r) {
|
public static LocationBean of(TLocationRecord r) {
|
||||||
|
if (r == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
LocationBean bean = new LocationBean();
|
LocationBean bean = new LocationBean();
|
||||||
bean.setPk(r.getPk());
|
bean.setPk(r.getPk());
|
||||||
bean.setName(r.getName());
|
bean.setName(r.getName());
|
||||||
|
53
src/main/resources/templates/admin/location_edit.html
Normal file
53
src/main/resources/templates/admin/location_edit.html
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
<!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">Freizeitheime</a></li>
|
||||||
|
</ul>
|
||||||
|
</th:block>
|
||||||
|
<th:block layout:fragment="content">
|
||||||
|
<div sec:authorize="hasRole('admin')">
|
||||||
|
<form th:action="@{/admin/location/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>
|
||||||
|
<!-- TODO: url and dropdown of documents -->
|
||||||
|
<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/location}" class="btn btn-outline-secondary">Abbrechen</a>
|
||||||
|
<div class="dropdown" style="display: inline">
|
||||||
|
<button class="btn btn-outline-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/location/delete/{id}(id=${bean.pk})}">Freizeitheim endgültig löschen</a>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</th:block>
|
||||||
|
</body>
|
||||||
|
</html>
|
Reference in New Issue
Block a user