appCarList.jsp 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
  3. <%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
  4. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  5. <%@taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
  6. <html>
  7. <head>
  8. <title><spring:message code="label.addCar"/></title>
  9. <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-aFq/bzH65dt+w6FI2ooMVUpc+21e0SRygnTpmBvdBgSdnuTN7QbdgL+OapgHtvPp" crossorigin="anonymous">
  10. <style>
  11. body{
  12. background-image: url("resources/images/showroom-blur.jpg");
  13. }
  14. .container {
  15. margin-top: 60px;
  16. }
  17. .car-card {
  18. display: flex;
  19. margin-bottom: 20px;
  20. padding: 10px;
  21. border: 1px solid #ced4da;
  22. border-radius: 5px;
  23. background-color: #fff;
  24. }
  25. .car-card .car-image {
  26. width: 200px;
  27. height: 200px;
  28. object-fit: cover;
  29. margin-right: 20px;
  30. }
  31. .car-card .car-details {
  32. flex-grow: 1;
  33. }
  34. .car-card .car-details h5 {
  35. font-weight: bold;
  36. margin-bottom: 10px;
  37. }
  38. .car-card .car-details p {
  39. margin-bottom: 5px;
  40. }
  41. .car-card .car-details p span {
  42. font-weight: bold;
  43. }
  44. .car-list-container {
  45. background-color: #f8f9fa;
  46. padding: 20px;
  47. border: 1px solid #ced4da;
  48. border-radius: 5px;
  49. }
  50. .car-details-line {
  51. display: flex;
  52. align-items: center;
  53. margin-bottom: 5px;
  54. }
  55. .car-details-line span {
  56. margin-right: 10px;
  57. font-weight: bold;
  58. }
  59. .car-details-spacing {
  60. margin-left: 20px;
  61. }
  62. .buy-car-button {
  63. padding: 5px 15px;
  64. font-size: 14px;
  65. }
  66. .car-price {
  67. font-size: 20px;
  68. font-weight: bold;
  69. color: #f00;
  70. margin-top: 10px;
  71. }
  72. </style>
  73. </head>
  74. <body>
  75. <header data-bs-theme="dark">
  76. <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
  77. <div class="container-fluid">
  78. <a class="navbar-brand" href="/">Car Dealer Shop</a>
  79. <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
  80. <span class="navbar-toggler-icon"></span>
  81. </button>
  82. <div class="collapse navbar-collapse" id="navbarCollapse">
  83. <ul class="navbar-nav me-auto mb-2 mb-md-0">
  84. <sec:authorize access="isAnonymous()">
  85. <li class="nav-item">
  86. <a class="nav-link" href="/login"><spring:message code="label.login"/></a>
  87. </li>
  88. <li class="nav-item">
  89. <a class="nav-link" href="/register"><spring:message code="label.register"/></a>
  90. </li>
  91. </sec:authorize>
  92. <sec:authorize access="hasAnyRole('ROLE_USER', 'ROLE_ADMIN')">
  93. <li class="nav-item">
  94. <a class="nav-link" href="/appCars"><spring:message code="label.addCar"/></a>
  95. </li>
  96. </sec:authorize>
  97. <li class="nav-item">
  98. <a class="nav-link" href="/appCarList"><spring:message code="label.carheader"/></a>
  99. </li>
  100. <sec:authorize access="hasRole('ROLE_ADMIN')">
  101. <li class="nav-item">
  102. <a class="nav-link" href="/appUsers"><spring:message code="label.addAppUser"/></a>
  103. </li>
  104. <li class="nav-item">
  105. <a class="nav-link" href="appUserRole"><spring:message code="label.role"/></a>
  106. </li>
  107. </sec:authorize>
  108. <sec:authorize access="hasRole('ROLE_USER')">
  109. <li class="nav-item">
  110. <a class="nav-link" href="/exampleOne"><spring:message code="label.example"/> 1</a>
  111. </li>
  112. </sec:authorize>
  113. <sec:authorize access="hasRole('ROLE_STUDENT')">
  114. <li class="nav-item">
  115. <a class="nav-link" href="exampleThree"><spring:message code="label.example"/> 3</a>
  116. </li>
  117. </sec:authorize>
  118. </ul>
  119. <form class="d-flex" role="search">
  120. <!-- Search bar removed -->
  121. </form>
  122. <ul class="navbar-nav ms-auto">
  123. <li class="nav-item">
  124. <a class="nav-link" href="?lang=pl">pl</a>
  125. </li>
  126. <li class="nav-item">
  127. <a class="nav-link" href="?lang=en">en</a>
  128. </li>
  129. <li class="nav-item">
  130. <a class="nav-link" href="?lang=de">de</a>
  131. </li>
  132. <sec:authorize access="isAuthenticated()">
  133. <li class="nav-item">
  134. <a class="nav-link" href="javascript:formSubmit()">Logout</a>
  135. </li>
  136. </sec:authorize>
  137. </ul>
  138. </div>
  139. </div>
  140. </nav>
  141. </header>
  142. <div class="container">
  143. <h3><spring:message code="label.carList"/></h3>
  144. <div class="car-list-container">
  145. <c:if test="${!empty appCarList}">
  146. <c:forEach items="${appCarList}" var="appCar">
  147. <div class="car-card">
  148. <img src="${appCar.picture}" alt="Car Image" class="car-image">
  149. <div class="car-details">
  150. <h5>${appCar.brandName} ${appCar.modelName}</h5>
  151. <div class="car-details-line">
  152. <span><spring:message code="label.bodyType"/>: </span>${appCar.bodyType}
  153. <span class="car-details-spacing"><spring:message code="label.productionYear"/>: </span>${appCar.productionYear}
  154. <span class="car-details-spacing"><spring:message code="label.carColor"/>: </span>${appCar.carColor}
  155. </div>
  156. <div class="car-details-line">
  157. <span><spring:message code="label.engineSize"/>: </span>${appCar.engineSize}
  158. <span class="car-details-spacing"><spring:message code="label.mileage"/>: </span>${appCar.mileage}
  159. <span class="car-details-spacing"><spring:message code="label.power"/>: </span>${appCar.power}
  160. <span class="car-details-spacing"><spring:message code="label.Vin"/>: </span>${appCar.vin}
  161. </div>
  162. <div class="car-price">
  163. <spring:message code="label.price"/>: ${appCar.price}
  164. </div>
  165. <div>
  166. <sec:authorize access="isAuthenticated()">
  167. <button class="btn btn-primary btn-sm buy-car-button">Buy Car</button>
  168. </sec:authorize>
  169. </div>
  170. </div>
  171. </div>
  172. </c:forEach>
  173. </c:if>
  174. </div>
  175. </div>
  176. <script>
  177. function formSubmit() {
  178. document.getElementById("logoutForm").submit();
  179. }
  180. </script>
  181. <!-- csrf for log out-->
  182. <form action="/logout" method="post" id="logoutForm">
  183. <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
  184. </form>
  185. <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha2/dist/js/bootstrap.bundle.min.js" integrity="sha384-qKXV1j0HvMUeCBQ+QVp7JcfGl760yU08IQ+GpUo5hlbpg51QRiuqHAJz8+BrxE/N" crossorigin="anonymous"></script>
  186. </body>
  187. </html>