finalized for productive deployment
This commit is contained in:
parent
45943b415b
commit
437b9cbd43
@ -1,13 +1,2 @@
|
||||
arguments=
|
||||
auto.sync=false
|
||||
build.scans.enabled=false
|
||||
connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
|
||||
connection.project.dir=
|
||||
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
|
||||
|
@ -1,14 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
|
||||
|
||||
<wb-module deploy-name="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/java"/>
|
||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/java"/>
|
||||
|
||||
</wb-module>
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project-modules id="moduleCoreId" project-version="1.5.0">
|
||||
<wb-module deploy-name="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/java"/>
|
||||
</wb-module>
|
||||
</project-modules>
|
||||
|
@ -18,7 +18,7 @@ apply plugin: 'war'
|
||||
apply plugin: 'application'
|
||||
|
||||
group = 'de.jottyfan.camporganizer'
|
||||
version = '0.3.7'
|
||||
version = '0.3.8'
|
||||
sourceCompatibility = 17
|
||||
mainClassName = "de.jottyfan.camporganizer.Main"
|
||||
|
||||
|
@ -38,7 +38,6 @@ public class AdminController extends CommonController {
|
||||
|
||||
@GetMapping("/admin/mail")
|
||||
public String getMail(Model model, HttpServletRequest request) {
|
||||
super.setupSession(model, request);
|
||||
MailBean mailBean = new MailBean();
|
||||
mailBean.setFrom(from);
|
||||
mailBean.getTo().add(getCurrentEmail(request));
|
||||
@ -49,7 +48,6 @@ public class AdminController extends CommonController {
|
||||
@PostMapping("/admin/mail/send")
|
||||
public String sendMail(@Valid @ModelAttribute("bean") MailBean 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());
|
||||
@ -61,29 +59,25 @@ public class AdminController extends CommonController {
|
||||
|
||||
@GetMapping("/admin/document")
|
||||
public String getDocuments(Model model, HttpServletRequest request) {
|
||||
super.setupSession(model, request);
|
||||
model.addAttribute("documents", service.getAllDocuments());
|
||||
return "/admin/document";
|
||||
}
|
||||
|
||||
@GetMapping("/admin/document/add")
|
||||
public String prepareAddDocument(Model model, HttpServletRequest request) {
|
||||
super.setupSession(model, request);
|
||||
model.addAttribute("bean", new DocumentBean());
|
||||
return "/admin/document_edit";
|
||||
}
|
||||
|
||||
@GetMapping("/admin/document/edit/{id}")
|
||||
public String prepareAddDocument(@PathVariable Integer id, Model model, HttpServletRequest request) {
|
||||
super.setupSession(model, request);
|
||||
model.addAttribute("bean", service.getDocument(id));
|
||||
return "/admin/document_edit";
|
||||
}
|
||||
|
||||
@PostMapping("/admin/document/update")
|
||||
public String updateDocument(@Valid @ModelAttribute("bean") DocumentBean bean,
|
||||
final BindingResult bindingResult, Model model, HttpServletRequest request) {
|
||||
super.setupSession(model, request);
|
||||
public String updateDocument(@Valid @ModelAttribute("bean") DocumentBean bean, final BindingResult bindingResult,
|
||||
Model model, HttpServletRequest request) {
|
||||
if (bindingResult.hasErrors()) {
|
||||
for (ObjectError error : bindingResult.getAllErrors())
|
||||
LOGGER.error("error {}: {}", error.getCode(), error.getDefaultMessage());
|
||||
@ -95,21 +89,18 @@ public class AdminController extends CommonController {
|
||||
|
||||
@GetMapping("/admin/document/delete/{id}")
|
||||
public String deleteDocument(@PathVariable Integer id, Model model, HttpServletRequest request) {
|
||||
super.setupSession(model, request);
|
||||
service.deleteDocument(id);
|
||||
return "redirect:/admin/document";
|
||||
}
|
||||
|
||||
@GetMapping("/admin/location")
|
||||
public String getLocations(Model model, HttpServletRequest request) {
|
||||
super.setupSession(model, request);
|
||||
model.addAttribute("locations", service.getLocations());
|
||||
return "/admin/location";
|
||||
}
|
||||
|
||||
@GetMapping("/admin/location/add")
|
||||
public String prepareAddLocation(Model model, HttpServletRequest request) {
|
||||
super.setupSession(model, request);
|
||||
model.addAttribute("bean", new LocationBean());
|
||||
model.addAttribute("documents", service.getLocationDocuments());
|
||||
return "/admin/location_edit";
|
||||
@ -117,16 +108,14 @@ public class AdminController extends CommonController {
|
||||
|
||||
@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));
|
||||
model.addAttribute("documents", service.getLocationDocuments());
|
||||
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);
|
||||
public String updateDocument(@Valid @ModelAttribute("bean") LocationBean bean, final BindingResult bindingResult,
|
||||
Model model, HttpServletRequest request) {
|
||||
if (bindingResult.hasErrors()) {
|
||||
for (ObjectError error : bindingResult.getAllErrors()) {
|
||||
LOGGER.error("error {}: {}", error.getCode(), error.getDefaultMessage());
|
||||
@ -140,14 +129,12 @@ public class AdminController extends CommonController {
|
||||
|
||||
@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";
|
||||
}
|
||||
|
||||
@GetMapping("/admin/camp")
|
||||
public String getCamplist(Model model, HttpServletRequest request) {
|
||||
super.setupSession(model, request);
|
||||
model.addAttribute("camps", service.getAllCamps());
|
||||
model.addAttribute("locations", service.getLocations());
|
||||
return "/admin/camp";
|
||||
@ -155,7 +142,6 @@ public class AdminController extends CommonController {
|
||||
|
||||
@GetMapping("/admin/camp/add")
|
||||
public String prepareAddCamp(Model model, HttpServletRequest request) {
|
||||
super.setupSession(model, request);
|
||||
model.addAttribute("bean", new CampBean());
|
||||
model.addAttribute("documents", service.getCampDocuments());
|
||||
model.addAttribute("locations", service.getLocations());
|
||||
@ -165,7 +151,6 @@ public class AdminController extends CommonController {
|
||||
|
||||
@GetMapping("/admin/camp/edit/{id}")
|
||||
public String prepareEditCamp(@PathVariable Integer id, Model model, HttpServletRequest request) {
|
||||
super.setupSession(model, request);
|
||||
model.addAttribute("bean", service.getCamp(id));
|
||||
model.addAttribute("documents", service.getCampDocuments());
|
||||
model.addAttribute("locations", service.getLocations());
|
||||
@ -178,9 +163,8 @@ public class AdminController extends CommonController {
|
||||
}
|
||||
|
||||
@PostMapping("/admin/camp/update")
|
||||
public String updateDocument(@Valid @ModelAttribute("bean") CampBean bean,
|
||||
final BindingResult bindingResult, Model model, HttpServletRequest request, RedirectAttributes redirect) {
|
||||
super.setupSession(model, request);
|
||||
public String updateDocument(@Valid @ModelAttribute("bean") CampBean bean, final BindingResult bindingResult,
|
||||
Model model, HttpServletRequest request, RedirectAttributes redirect) {
|
||||
if (bindingResult.hasErrors()) {
|
||||
for (ObjectError error : bindingResult.getAllErrors()) {
|
||||
LOGGER.error("error {}: {}", error.getCode(), error.getDefaultMessage());
|
||||
@ -198,8 +182,8 @@ public class AdminController extends CommonController {
|
||||
}
|
||||
|
||||
@GetMapping("/admin/camp/delete/{id}")
|
||||
public String deleteCamp(@PathVariable Integer id, Model model, HttpServletRequest request, RedirectAttributes redirect) {
|
||||
super.setupSession(model, request);
|
||||
public String deleteCamp(@PathVariable Integer id, Model model, HttpServletRequest request,
|
||||
RedirectAttributes redirect) {
|
||||
String error = service.deleteCamp(id);
|
||||
redirect.addAttribute("error", error);
|
||||
return error != null ? "redirect:/admin/camp/edit/" + id : "redirect:/admin/camp";
|
||||
|
@ -1,7 +1,6 @@
|
||||
package de.jottyfan.camporganizer.module.business.bookings;
|
||||
|
||||
import javax.annotation.security.RolesAllowed;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@ -16,7 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import de.jottyfan.camporganizer.module.business.bookings.impl.AddPaymentBean;
|
||||
import de.jottyfan.camporganizer.module.business.bookings.impl.BookerBean;
|
||||
import de.jottyfan.camporganizer.module.business.business.IBusinessService;
|
||||
import de.jottyfan.camporganizer.module.camplist.CommonController;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -24,24 +23,16 @@ import de.jottyfan.camporganizer.module.business.business.IBusinessService;
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class BookingsController {
|
||||
public class BookingsController extends CommonController {
|
||||
private static final Logger LOGGER = LogManager.getLogger(BookingsController.class);
|
||||
|
||||
@Autowired
|
||||
private HttpServletRequest request;
|
||||
|
||||
@Autowired
|
||||
private IBusinessService indexService;
|
||||
|
||||
@Autowired
|
||||
private IBookingsService bookingsService;
|
||||
|
||||
@GetMapping("/business/bookings")
|
||||
@RolesAllowed({"business_booking"})
|
||||
public String getBookings(Model model) {
|
||||
String username = indexService.getCurrentUser(request);
|
||||
model.addAttribute("currentUser", username);
|
||||
model.addAttribute("bookers", bookingsService.getBookers(username));
|
||||
model.addAttribute("bookers", bookingsService.getBookers(getCurrentUser()));
|
||||
model.addAttribute("addBean", new AddPaymentBean());
|
||||
return "business/bookings";
|
||||
}
|
||||
@ -49,9 +40,7 @@ public class BookingsController {
|
||||
@GetMapping("/business/bookings/{id}")
|
||||
@RolesAllowed({"business_booking"})
|
||||
public String getBooking(Model model, @PathVariable Integer id) {
|
||||
String username = indexService.getCurrentUser(request);
|
||||
model.addAttribute("currentUser", username);
|
||||
BookerBean bean = bookingsService.getBooker(id, username);
|
||||
BookerBean bean = bookingsService.getBooker(id, getCurrentUser());
|
||||
model.addAttribute("booker", bean);
|
||||
model.addAttribute("addBean", new AddPaymentBean());
|
||||
return bean == null ? getBookings(model) : "business/booker";
|
||||
|
@ -7,13 +7,15 @@ import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
import de.jottyfan.camporganizer.module.camplist.CommonController;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class BusinessController {
|
||||
public class BusinessController extends CommonController {
|
||||
|
||||
@Autowired
|
||||
private HttpServletRequest request;
|
||||
|
@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
|
||||
import de.jottyfan.camporganizer.module.business.business.IBusinessService;
|
||||
import de.jottyfan.camporganizer.module.camplist.CommonController;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -17,7 +18,7 @@ import de.jottyfan.camporganizer.module.business.business.IBusinessService;
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class CampController {
|
||||
public class CampController extends CommonController {
|
||||
|
||||
@Autowired
|
||||
private HttpServletRequest request;
|
||||
|
@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.PostMapping;
|
||||
|
||||
import de.jottyfan.camporganizer.module.business.business.IBusinessService;
|
||||
import de.jottyfan.camporganizer.module.business.privileges.impl.PrivilegesBean;
|
||||
import de.jottyfan.camporganizer.module.camplist.CommonController;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -20,7 +21,7 @@ import de.jottyfan.camporganizer.module.business.privileges.impl.PrivilegesBean;
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class PrivilegesController {
|
||||
public class PrivilegesController extends CommonController {
|
||||
|
||||
@Autowired
|
||||
private HttpServletRequest request;
|
||||
|
@ -34,14 +34,12 @@ public class CamplistController extends CommonController {
|
||||
|
||||
@GetMapping("/camplist")
|
||||
public String index(Model model) {
|
||||
super.setupSession(model, request);
|
||||
model.addAttribute("camps", service.getAllCamps(true));
|
||||
return super.isLoggedIn(request) ? dashboard(model) : "/camplist";
|
||||
}
|
||||
|
||||
@GetMapping("/dashboard")
|
||||
public String dashboard(Model model) {
|
||||
super.setupSession(model, request);
|
||||
model.addAttribute("mybookings", service.getBookingsOf(super.getCurrentUser(request)));
|
||||
model.addAttribute("bookingBean", new BookingBean());
|
||||
model.addAttribute("keycloakProfileUrl", keycloak.getUserClientUrl());
|
||||
|
@ -93,7 +93,7 @@ public class CamplistGateway {
|
||||
.leftJoin(V_CAMP).on(V_CAMP.PK.eq(T_PERSON.FK_CAMP))
|
||||
.where(T_PROFILE.USERNAME.eq(username))
|
||||
.and(T_PERSON.PK.isNotNull())
|
||||
.orderBy(V_CAMP.ARRIVE, T_PERSON.CREATED);
|
||||
.orderBy(V_CAMP.ARRIVE.desc(), T_PERSON.CREATED);
|
||||
// @formatter:on
|
||||
LOGGER.debug(sql.toString());
|
||||
List<BookingBean> list = new ArrayList<>();
|
||||
|
@ -3,7 +3,8 @@ package de.jottyfan.camporganizer.module.camplist;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.keycloak.KeycloakSecurityContext;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -12,6 +13,9 @@ import org.springframework.ui.Model;
|
||||
*/
|
||||
public abstract class CommonController {
|
||||
|
||||
@Autowired
|
||||
private HttpServletRequest request;
|
||||
|
||||
/**
|
||||
* try to get current keycloak user
|
||||
*
|
||||
@ -36,15 +40,9 @@ public abstract class CommonController {
|
||||
return ksc == null ? null : ksc.getIdToken().getEmail();
|
||||
}
|
||||
|
||||
/**
|
||||
* setup the session for the template
|
||||
*
|
||||
* @param model the model
|
||||
* @param request the request
|
||||
*/
|
||||
public void setupSession(Model model, HttpServletRequest request) {
|
||||
String username = getCurrentUser(request);
|
||||
model.addAttribute("currentUser", username);
|
||||
@ModelAttribute("currentUser")
|
||||
public String getCurrentUser() {
|
||||
return getCurrentUser(request);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -10,6 +10,7 @@ import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
import de.jottyfan.camporganizer.module.camplist.CommonController;
|
||||
import de.jottyfan.camporganizer.module.confirmation.confirmation.impl.CampOverviewBean;
|
||||
|
||||
/**
|
||||
@ -18,7 +19,7 @@ import de.jottyfan.camporganizer.module.confirmation.confirmation.impl.CampOverv
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class ConfirmationController {
|
||||
public class ConfirmationController extends CommonController {
|
||||
|
||||
@Autowired
|
||||
private HttpServletRequest request;
|
||||
@ -28,7 +29,6 @@ public class ConfirmationController {
|
||||
|
||||
@GetMapping("/confirmation")
|
||||
public String getIndex(Model model) {
|
||||
String username = indexService.getCurrentUser(request);
|
||||
List<CampOverviewBean> campoverview = indexService.getCampOverview(request);
|
||||
CampOverviewBean campoverviewsummary = new CampOverviewBean(LocalDate.now(), "summary");
|
||||
for (CampOverviewBean bean : campoverview) {
|
||||
@ -36,7 +36,6 @@ public class ConfirmationController {
|
||||
campoverviewsummary.setRejected(bean.getRejected() + campoverviewsummary.getRejected());
|
||||
campoverviewsummary.setUntouched(bean.getUntouched() + campoverviewsummary.getUntouched());
|
||||
}
|
||||
model.addAttribute("currentUser", username);
|
||||
model.addAttribute("campoverview", campoverview);
|
||||
model.addAttribute("campoverviewsummary", campoverviewsummary);
|
||||
model.addAttribute("untouched", indexService.getUntouched(request));
|
||||
|
@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
|
||||
import de.jottyfan.camporganizer.module.camplist.CommonController;
|
||||
import de.jottyfan.camporganizer.module.confirmation.confirmation.IConfirmationService;
|
||||
import de.jottyfan.camporganizer.module.confirmation.person.impl.PersonBean;
|
||||
|
||||
@ -19,7 +20,7 @@ import de.jottyfan.camporganizer.module.confirmation.person.impl.PersonBean;
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class PersonController {
|
||||
public class PersonController extends CommonController {
|
||||
|
||||
@Autowired
|
||||
private HttpServletRequest request;
|
||||
|
@ -15,13 +15,15 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import de.jottyfan.camporganizer.module.camplist.CommonController;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
@RestController
|
||||
public class DocumentController {
|
||||
public class DocumentController extends CommonController {
|
||||
|
||||
@Autowired
|
||||
private DocumentService service;
|
||||
|
@ -8,13 +8,15 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
import de.jottyfan.camporganizer.module.camplist.CommonController;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class ICalController {
|
||||
public class ICalController extends CommonController {
|
||||
|
||||
@Autowired
|
||||
private IICalService service;
|
||||
|
@ -11,13 +11,15 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
|
||||
import de.jottyfan.camporganizer.module.camplist.CommonController;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class MigrationController {
|
||||
public class MigrationController extends CommonController {
|
||||
|
||||
@Autowired
|
||||
private MigrationService service;
|
||||
|
@ -1,6 +1,5 @@
|
||||
package de.jottyfan.camporganizer.module.registration;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.validation.Valid;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -22,15 +21,11 @@ import de.jottyfan.camporganizer.module.camplist.CommonController;
|
||||
@Controller
|
||||
public class RegistrationController extends CommonController {
|
||||
|
||||
@Autowired
|
||||
private HttpServletRequest request;
|
||||
|
||||
@Autowired
|
||||
private RegistrationService service;
|
||||
|
||||
@GetMapping("/registration/{fkCamp}")
|
||||
public String index(@PathVariable(name = "fkCamp", required = true) Integer fkCamp, Model model) {
|
||||
super.setupSession(model, request);
|
||||
if (service.campIsNotYetOver(fkCamp)) {
|
||||
CampBean campBean = service.getCamp(fkCamp);
|
||||
model.addAttribute("camp", campBean);
|
||||
@ -45,8 +40,8 @@ public class RegistrationController extends CommonController {
|
||||
}
|
||||
|
||||
@PostMapping("/registration/register")
|
||||
public String register(@Valid @ModelAttribute("bean") RegistrationBean bean, final BindingResult bindingResult, Model model) {
|
||||
super.setupSession(model, request);
|
||||
public String register(@Valid @ModelAttribute("bean") RegistrationBean bean, final BindingResult bindingResult,
|
||||
Model model) {
|
||||
if (bindingResult.hasErrors()) {
|
||||
CampBean campBean = service.getCamp(bean.getFkCamp());
|
||||
model.addAttribute("camp", campBean);
|
||||
@ -58,21 +53,18 @@ public class RegistrationController extends CommonController {
|
||||
|
||||
@GetMapping("/registration/cancel/{id}")
|
||||
public String cancellation(@PathVariable Integer id, final Model model) {
|
||||
super.setupSession(model, request);
|
||||
model.addAttribute("bean", service.getBooking(id));
|
||||
return "/registration/cancellation";
|
||||
}
|
||||
|
||||
@GetMapping("/registration/remove/{id}")
|
||||
public String remove(@PathVariable Integer id, final Model model) {
|
||||
super.setupSession(model, request);
|
||||
service.removeBooking(id);
|
||||
return "redirect:/dashboard";
|
||||
}
|
||||
|
||||
@GetMapping("/registration/toggleconsent/{id}")
|
||||
public String toggleConsent(@PathVariable Integer id, final Model model) {
|
||||
super.setupSession(model, request);
|
||||
service.toggleConsent(id);
|
||||
return "redirect:/dashboard";
|
||||
}
|
||||
|
@ -7,13 +7,15 @@ import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
|
||||
import de.jottyfan.camporganizer.module.camplist.CommonController;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class RssController {
|
||||
public class RssController extends CommonController {
|
||||
|
||||
@Autowired
|
||||
private RssService service;
|
||||
|
@ -1,23 +0,0 @@
|
||||
package de.jottyfan.camporganizer.module.staticpages;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class AllgemeinesController {
|
||||
|
||||
/**
|
||||
* load the allgemeines page
|
||||
*
|
||||
* @return the allgemeines page
|
||||
*/
|
||||
@GetMapping("/allgemeines")
|
||||
public String getAllgemeines() {
|
||||
return "/allgemeines";
|
||||
}
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
package de.jottyfan.camporganizer.module.staticpages;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class DatenschutzController {
|
||||
|
||||
/**
|
||||
* load the datenschutz page
|
||||
*
|
||||
* @return the datenschutz page
|
||||
*/
|
||||
@GetMapping("/datenschutz")
|
||||
public String getDatenschutz() {
|
||||
return "/datenschutz";
|
||||
}
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
package de.jottyfan.camporganizer.module.staticpages;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class ImpressumController {
|
||||
|
||||
/**
|
||||
* load the impressum page
|
||||
*
|
||||
* @return the impresum page
|
||||
*/
|
||||
@GetMapping("/impressum")
|
||||
public String getImpressum() {
|
||||
return "/impressum";
|
||||
}
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package de.jottyfan.camporganizer.module.staticpages;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class IndexController {
|
||||
|
||||
@GetMapping("/")
|
||||
public String getIndex() {
|
||||
return "/index";
|
||||
}
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
package de.jottyfan.camporganizer.module.staticpages;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class KontaktController {
|
||||
|
||||
/**
|
||||
* load the kontakt page
|
||||
*
|
||||
* @return the kontakt page
|
||||
*/
|
||||
@GetMapping("/kontakt")
|
||||
public String getKontakt() {
|
||||
return "/kontakt";
|
||||
}
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
package de.jottyfan.camporganizer.module.staticpages;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class ReportsController {
|
||||
|
||||
/**
|
||||
* load the sub page
|
||||
*
|
||||
* @return the sub page
|
||||
*/
|
||||
@GetMapping("/reports/{subpage}")
|
||||
public String getSubpage(@PathVariable("subpage") String subpage) {
|
||||
return "/reports/" + subpage;
|
||||
}
|
||||
}
|
@ -0,0 +1,87 @@
|
||||
package de.jottyfan.camporganizer.module.staticpages;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
|
||||
import de.jottyfan.camporganizer.module.camplist.CommonController;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class StaticPagesController extends CommonController {
|
||||
|
||||
/**
|
||||
* load the index page
|
||||
*
|
||||
* @return the index page
|
||||
*/
|
||||
@GetMapping("/")
|
||||
public String getIndex() {
|
||||
return "/index";
|
||||
}
|
||||
|
||||
/**
|
||||
* load the sub page
|
||||
*
|
||||
* @return the sub page
|
||||
*/
|
||||
@GetMapping("/reports/{subpage}")
|
||||
public String getSubpage(@PathVariable("subpage") String subpage) {
|
||||
return "/reports/" + subpage;
|
||||
}
|
||||
|
||||
/**
|
||||
* load the verein page
|
||||
*
|
||||
* @return the verein page
|
||||
*/
|
||||
@GetMapping("/verein")
|
||||
public String getVerein() {
|
||||
return "/verein";
|
||||
}
|
||||
|
||||
/**
|
||||
* load the kontakt page
|
||||
*
|
||||
* @return the kontakt page
|
||||
*/
|
||||
@GetMapping("/kontakt")
|
||||
public String getKontakt() {
|
||||
return "/kontakt";
|
||||
}
|
||||
|
||||
/**
|
||||
* load the allgemeines page
|
||||
*
|
||||
* @return the allgemeines page
|
||||
*/
|
||||
@GetMapping("/allgemeines")
|
||||
public String getAllgemeines() {
|
||||
return "/allgemeines";
|
||||
}
|
||||
|
||||
/**
|
||||
* load the datenschutz page
|
||||
*
|
||||
* @return the datenschutz page
|
||||
*/
|
||||
@GetMapping("/datenschutz")
|
||||
public String getDatenschutz() {
|
||||
return "/datenschutz";
|
||||
}
|
||||
|
||||
/**
|
||||
* load the impressum page
|
||||
*
|
||||
* @return the impresum page
|
||||
*/
|
||||
@GetMapping("/impressum")
|
||||
public String getImpressum() {
|
||||
return "/impressum";
|
||||
}
|
||||
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
package de.jottyfan.camporganizer.module.staticpages;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
public class VereinController {
|
||||
|
||||
/**
|
||||
* load the verein page
|
||||
*
|
||||
* @return the verein page
|
||||
*/
|
||||
@GetMapping("/verein")
|
||||
public String getVerein() {
|
||||
return "/verein";
|
||||
}
|
||||
}
|
@ -11,49 +11,7 @@
|
||||
<span>alte Zugangsdaten ins neue System </span><a th:href="@{/migration/login}">umziehen</a>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Schließen"></button>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var mytoggle = new MyToggle();
|
||||
</script>
|
||||
<div class="card bottomdist16 block660" style="background: transparent" th:each="c : ${camps}">
|
||||
<div class="card-header mytoggle_btn" style="background: transparent" th:onclick="mytoggle.toggle('campdiv_[[${c.pk}]]')">
|
||||
<div style="margin-left: auto; margin-right: auto;">
|
||||
<span th:text="${c.name}" class="headlinefont"></span><span class="headlinefont"> </span><span th:text="${#numbers.formatInteger(c.year, 0)}" class="headlinefont"
|
||||
th:if="${c.year != null}"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div th:id="'campdiv_' + ${c.pk}" class="card-body mytoggle_collapsed">
|
||||
<table style="width: 100%">
|
||||
<tr>
|
||||
<td rowspan="4"><img th:src="@{/images/Icon_Stern.svg}" width="36px" height="36px" style="margin-left: 24px" /></td>
|
||||
<td rowspan="4">
|
||||
<div>
|
||||
Biblische Geschichten<br /> Nachtwanderung<br /> Gruppenspiele<br /> Ausflüge<br /> Überraschungen
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="cabin">Ort</span></td>
|
||||
<td><a th:href="${c.url}" th:text="${c.locationName}" target="_blank"></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img th:src="@{/images/Icon_Alter.svg}" width="36px" height="36px" style="margin-top: 24px" /></td>
|
||||
<td><div th:text="${c.minAge} + ' - ' + ${c.maxAge} + ' Jahre'" style="margin-top: 24px"></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img th:src="@{/images/Icon_Datum.svg}" width="36px" height="36px" style="margin-top: 24px" /></td>
|
||||
<td><div th:text="${#temporals.format(c.arrive, 'dd.MM.')} + ' - ' + ${#temporals.format(c.depart, 'dd.MM.yyyy')}" th:if="${c.arrive != null&& c.depart != null}"
|
||||
style="margin-top: 24px"></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img th:src="@{/images/Icon_Preis.svg}" width="36px" height="36px" style="margin-top: 24px" /></td>
|
||||
<td><div style="margin-top: 24px">
|
||||
<p th:text="${c.price}"></p>
|
||||
</div></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div style="text-align: center; margin-top: 64px">
|
||||
<a class="btn btn-linda buttonfont" th:href="@{/registration/{id}(id=${c.pk})}">jetzt anmelden</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:replace="/fragments/camplist.html::camplist(camps=${camps})"></div>
|
||||
</div>
|
||||
</th:block>
|
||||
</body>
|
||||
|
@ -16,33 +16,7 @@
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-6 col-lg-3" th:each="c : ${camps}">
|
||||
<div class="card" style="background-color: rgba(255, 255, 255, 0.5)">
|
||||
<div class="card-body">
|
||||
<div class="menufont" th:text="${c.locationName}" style="padding: 8px"></div>
|
||||
<div>
|
||||
<h1 th:text="${c.name}" class="menufont"></h1>
|
||||
</div>
|
||||
<br />
|
||||
<div>
|
||||
<span style="margin: 24px"><img th:src="@{/images/Icon_Alter.svg}" width="24px" height="24px" /></span> <span class="menufont" th:text="${c.minAge} + ' - ' + ${c.maxAge} + ' Jahre'"></span>
|
||||
</div>
|
||||
<br />
|
||||
<div>
|
||||
<span style="margin: 24px"><img th:src="@{/images/Icon_Datum.svg}" width="24px" height="24px" /></span> <span class="menufont"
|
||||
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>
|
||||
<br />
|
||||
<div>
|
||||
<span style="margin: 24px"><img th:src="@{/images/Icon_Preis.svg}" width="24px" height="24px" /></span> <span class="menufont" th:text="${c.price}"></span>
|
||||
</div>
|
||||
<br />
|
||||
<div>
|
||||
<a class="btn btn-outline-primary form-control menufont" th:href="@{/registration/{id}(id=${c.pk})}">Jetzt anmelden</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:replace="/fragments/camplist.html::camplist(camps=${camps})"></div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
@ -61,9 +35,8 @@
|
||||
<button th:class="'accordion-button collapsed acc_' + ${b.isOver ? 'over' : b.accept}" type="button" data-bs-toggle="collapse" th:data-bs-target="'#acc-body-' + ${b.pk}"
|
||||
aria-expanded="true" 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
|
||||
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> in <span
|
||||
th:text="${b.locationName}"></span>
|
||||
class="fas fa-question framed framed-orange" th:if="${b.accept} == null"></i>
|
||||
<span th:text="${b.forename + ' ' + b.surname + ' für ' + b.campName + ' ' + #numbers.formatInteger(b.year, 4)}" class="headlinefont"></span>
|
||||
</button>
|
||||
</h2>
|
||||
<div th:id="'acc-body-' + ${b.pk}" class="accordion-collapse collapse" th:aria-labelledby="'acc-head-' + ${b.pk}">
|
||||
|
50
src/main/resources/templates/fragments/camplist.html
Normal file
50
src/main/resources/templates/fragments/camplist.html
Normal file
@ -0,0 +1,50 @@
|
||||
<!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>
|
||||
<div th:fragment="camplist(camps)">
|
||||
<script type="text/javascript">
|
||||
var mytoggle = new MyToggle();
|
||||
</script>
|
||||
<div class="card bottomdist16 block660" style="background: transparent" th:each="c : ${camps}">
|
||||
<div class="card-header mytoggle_btn" style="background: transparent" th:onclick="mytoggle.toggle('campdiv_[[${c.pk}]]')">
|
||||
<div style="margin-left: auto; margin-right: auto;">
|
||||
<span th:text="${c.name}" class="headlinefont"></span><span class="headlinefont"> </span><span th:text="${#numbers.formatInteger(c.year, 0)}" class="headlinefont"
|
||||
th:if="${c.year != null}"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div th:id="'campdiv_' + ${c.pk}" class="card-body mytoggle_collapsed">
|
||||
<table style="width: 100%">
|
||||
<tr>
|
||||
<td rowspan="4"><img th:src="@{/images/Icon_Stern.svg}" width="36px" height="36px" style="margin-left: 24px" /></td>
|
||||
<td rowspan="4">
|
||||
<div>
|
||||
Biblische Geschichten<br /> Nachtwanderung<br /> Gruppenspiele<br /> Ausflüge<br /> Überraschungen
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="cabin">Ort</span></td>
|
||||
<td><a th:href="${c.url}" th:text="${c.locationName}" target="_blank"></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img th:src="@{/images/Icon_Alter.svg}" width="36px" height="36px" style="margin-top: 24px" /></td>
|
||||
<td><div th:text="${c.minAge} + ' - ' + ${c.maxAge} + ' Jahre'" style="margin-top: 24px"></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img th:src="@{/images/Icon_Datum.svg}" width="36px" height="36px" style="margin-top: 24px" /></td>
|
||||
<td><div th:text="${#temporals.format(c.arrive, 'dd.MM.')} + ' - ' + ${#temporals.format(c.depart, 'dd.MM.yyyy')}" th:if="${c.arrive != null&& c.depart != null}"
|
||||
style="margin-top: 24px"></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img th:src="@{/images/Icon_Preis.svg}" width="36px" height="36px" style="margin-top: 24px" /></td>
|
||||
<td><div style="margin-top: 24px">
|
||||
<p th:text="${c.price}"></p>
|
||||
</div></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div style="text-align: center; margin-top: 64px">
|
||||
<a class="btn btn-linda buttonfont" th:href="@{/registration/{id}(id=${c.pk})}">jetzt anmelden</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -8,47 +8,48 @@
|
||||
<th:block layout:fragment="content">
|
||||
<div class="mainpage">
|
||||
<div class="alert alert-success alert-dismissible fade show block660" role="alert">
|
||||
Mit dem Umzug in das neue Anmeldeportal ist es leider notwendig, dass du dir ein neues Login anlegst.
|
||||
Damit das für dich leichter geht, haben wir ein Migrationswerkzeug entwickelt, mit dem du deinen alten Zugang übertragen kannst.<br />
|
||||
<br />
|
||||
Wichtig dabei ist, dass du beim Anlegen des neuen Zugangs eine gültige E-Mail-Adresse verwendest. Die wird im neuen System benötigt,
|
||||
falls du dein Passwort vergessen hast. Damit eine sinnvolle Zuordnung möglich ist, gib bitte ebenfalls Vor- und Nachname an.<br />
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Schließen"></button>
|
||||
Mit dem Umzug in das neue Anmeldeportal ist es leider notwendig, dass du dir ein neues Login anlegst. Damit das für dich leichter geht, haben wir ein Migrationswerkzeug entwickelt, mit dem
|
||||
du deinen alten Zugang übertragen kannst.<br /> <br /> Wichtig dabei ist, dass du beim Anlegen des neuen Zugangs eine gültige E-Mail-Adresse verwendest. Die wird im neuen System
|
||||
benötigt, falls du dein Passwort vergessen hast. Damit eine sinnvolle Zuordnung möglich ist, gib bitte ebenfalls Vor- und Nachname an.<br /> <br /> Nach dem Umzug werden bisherige
|
||||
Anmeldungen nur dann automatisch zugewiesen, wenn der Nutzername bisher nur in Kleinbuchstaben geschrieben war. Alle anderen Nutzer sollten für den Zugriff auf ihre Anmeldungen eine E-Mail
|
||||
an <a href="mailto:webmaster@jungscharfreizeiten.de">webmaster@jungscharfreizeiten.de</a> schicken.<br />
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Schließen"></button>
|
||||
</div>
|
||||
<div class="block660">
|
||||
<div class="card centered-card" style="max-width: 48rem">
|
||||
<div class="card-body">
|
||||
<form th:action="@{/migration/loginold}" th:object="${bean}" method="post">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-6 rowdist">
|
||||
<span class="error" th:each="error : ${#fields.errors('username')}">[[${error}]]<br /></span>
|
||||
<input type="text" placeholder="username" th:field="*{username}" th:class="${'form-control ' + (#fields.hasErrors('username') ? 'inputerror' : '')}" />
|
||||
<div class="card-body">
|
||||
<form th:action="@{/migration/loginold}" th:object="${bean}" method="post">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-6 rowdist">
|
||||
<span class="error" th:each="error : ${#fields.errors('username')}">[[${error}]]<br /></span> <input type="text" placeholder="username" th:field="*{username}"
|
||||
th:class="${'form-control ' + (#fields.hasErrors('username') ? 'inputerror' : '')}" />
|
||||
</div>
|
||||
<div class="col-sm-6 rowdist">
|
||||
<span class="error" th:each="error : ${#fields.errors('password')}">[[${error}]]<br /></span> <input type="password" placeholder="Passwort" th:field="*{password}"
|
||||
th:class="${'form-control ' + (#fields.hasErrors('password') ? 'inputerror' : '')}" />
|
||||
</div>
|
||||
<div class="col-sm-6 rowdist">
|
||||
<span class="error" th:each="error : ${#fields.errors('forename')}">[[${error}]]<br /></span> <input type="text" placeholder="Vorname" th:field="*{forename}"
|
||||
th:class="${'form-control ' + (#fields.hasErrors('forename') ? 'inputerror' : '')}" />
|
||||
</div>
|
||||
<div class="col-sm-6 rowdist">
|
||||
<span class="error" th:each="error : ${#fields.errors('surname')}">[[${error}]]<br /></span> <input type="text" placeholder="Nachname" th:field="*{surname}"
|
||||
th:class="${'form-control ' + (#fields.hasErrors('surname') ? 'inputerror' : '')}" />
|
||||
</div>
|
||||
<div class="col-sm-12 rowdist">
|
||||
<span class="error" th:each="error : ${#fields.errors('email')}">[[${error}]]<br /></span> <input type="text" placeholder="E-Mail" th:field="*{email}"
|
||||
th:class="${'form-control ' + (#fields.hasErrors('email') ? 'inputerror' : '')}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 rowdist">
|
||||
<span class="error" th:each="error : ${#fields.errors('password')}">[[${error}]]<br /></span>
|
||||
<input type="password" placeholder="Passwort" th:field="*{password}" th:class="${'form-control ' + (#fields.hasErrors('password') ? 'inputerror' : '')}" />
|
||||
</div>
|
||||
<div class="col-sm-6 rowdist">
|
||||
<span class="error" th:each="error : ${#fields.errors('forename')}">[[${error}]]<br /></span>
|
||||
<input type="text" placeholder="Vorname" th:field="*{forename}" th:class="${'form-control ' + (#fields.hasErrors('forename') ? 'inputerror' : '')}" />
|
||||
</div>
|
||||
<div class="col-sm-6 rowdist">
|
||||
<span class="error" th:each="error : ${#fields.errors('surname')}">[[${error}]]<br /></span>
|
||||
<input type="text" placeholder="Nachname" th:field="*{surname}" th:class="${'form-control ' + (#fields.hasErrors('surname') ? 'inputerror' : '')}" />
|
||||
</div>
|
||||
<div class="col-sm-12 rowdist">
|
||||
<span class="error" th:each="error : ${#fields.errors('email')}">[[${error}]]<br /></span>
|
||||
<input type="text" placeholder="E-Mail" th:field="*{email}" th:class="${'form-control ' + (#fields.hasErrors('email') ? 'inputerror' : '')}" />
|
||||
<div class="row">
|
||||
<div class="col-sm-12 rowdist centered">
|
||||
<input type="submit" class="btn btn-linda buttonfont" value="jetzt umziehen" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 rowdist centered">
|
||||
<input type="submit" class="btn btn-linda buttonfont" value="jetzt umziehen" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -70,21 +70,6 @@
|
||||
</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" th:if="${not #strings.isEmpty(currentUser)}">
|
||||
<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">
|
||||
<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>
|
||||
<ul class="navbar-nav mb-2 mb-lg-0" sec:authorize="hasRole('business')">
|
||||
<li class="nav-item">
|
||||
<div class="dropdown">
|
||||
@ -134,13 +119,28 @@
|
||||
<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">
|
||||
<ul class="nav navbar-nav ms-auto right-dist" th:if="${#strings.isEmpty(currentUser)}">
|
||||
<li>
|
||||
<span th:if="${#strings.isEmpty(currentUser)}">
|
||||
<span>
|
||||
<a th:href="@{/dashboard}" class="btn btn-outline-secondary menufont">einloggen</a>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="nav navbar-nav ms-auto right-dist" th:unless="${#strings.isEmpty(currentUser)}">
|
||||
<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">
|
||||
<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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user