[5577566] | 1 | <!DOCTYPE html>
|
---|
| 2 | <html lang="en" xmlns:th="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/html">
|
---|
| 3 | <head>
|
---|
| 4 | <meta charset="UTF-8"/>
|
---|
| 5 | <meta name="viewport" content="width=device-width, initial-scale=1"/>
|
---|
| 6 | <title>My profile</title>
|
---|
| 7 |
|
---|
| 8 | <!-- Bootstrap core CSS -->
|
---|
| 9 | <link href="css/bootstrap.min.css" rel="stylesheet"/>
|
---|
| 10 | <link href="css/myProfile.css" rel="stylesheet"/>
|
---|
| 11 | </head>
|
---|
| 12 | <body>
|
---|
| 13 | <header th:replace="common/navbar :: navbar"></header>
|
---|
| 14 | <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
---|
| 15 | <symbol id="table" viewBox="0 0 16 16">
|
---|
| 16 | <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm15 2h-4v3h4V4zm0 4h-4v3h4V8zm0 4h-4v3h3a1 1 0 0 0 1-1v-2zm-5 3v-3H6v3h4zm-5 0v-3H1v2a1 1 0 0 0 1 1h3zm-4-4h4V8H1v3zm0-4h4V4H1v3zm5-3v3h4V4H6zm4 4H6v3h4V8z"/>
|
---|
| 17 | </symbol>
|
---|
| 18 | <symbol id="people-circle" viewBox="0 0 16 16">
|
---|
| 19 | <path d="M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0z"/>
|
---|
| 20 | <path fill-rule="evenodd"
|
---|
| 21 | d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm8-7a7 7 0 0 0-5.468 11.37C3.242 11.226 4.805 10 8 10s4.757 1.225 5.468 2.37A7 7 0 0 0 8 1z"/>
|
---|
| 22 | </symbol>
|
---|
| 23 | <symbol id="grid" viewBox="0 0 16 16">
|
---|
| 24 | <path d="M1 2.5A1.5 1.5 0 0 1 2.5 1h3A1.5 1.5 0 0 1 7 2.5v3A1.5 1.5 0 0 1 5.5 7h-3A1.5 1.5 0 0 1 1 5.5v-3zM2.5 2a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3zm6.5.5A1.5 1.5 0 0 1 10.5 1h3A1.5 1.5 0 0 1 15 2.5v3A1.5 1.5 0 0 1 13.5 7h-3A1.5 1.5 0 0 1 9 5.5v-3zm1.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3zM1 10.5A1.5 1.5 0 0 1 2.5 9h3A1.5 1.5 0 0 1 7 10.5v3A1.5 1.5 0 0 1 5.5 15h-3A1.5 1.5 0 0 1 1 13.5v-3zm1.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3zm6.5.5A1.5 1.5 0 0 1 10.5 9h3a1.5 1.5 0 0 1 1.5 1.5v3a1.5 1.5 0 0 1-1.5 1.5h-3A1.5 1.5 0 0 1 9 13.5v-3zm1.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3z"/>
|
---|
| 25 | </symbol>
|
---|
| 26 | </svg>
|
---|
| 27 |
|
---|
| 28 |
|
---|
| 29 | <!--Sidebar-->
|
---|
| 30 | <div class="container-fluid overflow-hidden">
|
---|
| 31 | <div class="row overflow-auto" id="rowHeight">
|
---|
| 32 | <div class="col-12 col-sm-3 col-xl-2 px-sm-2 px-0 bg-light d-flex sticky-top">
|
---|
| 33 | <div class="d-flex flex-sm-column flex-row flex-grow-1 align-items-center align-items-sm-start px-3 pt-2 text-dark">
|
---|
| 34 | <ul class="nav nav-pills flex-sm-column flex-row flex-nowrap flex-shrink-1 flex-sm-grow-0 flex-grow-1 mb-sm-auto mb-0 justify-content-center align-items-center align-items-sm-start"
|
---|
| 35 | id="menu">
|
---|
| 36 | <li class="nav-item">
|
---|
| 37 | <a th:href="@{/userInformation}" class="nav-link px-sm-0 px-2">
|
---|
| 38 | <svg class="bi fs5" width="24" height="24">
|
---|
| 39 | <use xlink:href="#people-circle"/>
|
---|
| 40 | </svg>
|
---|
| 41 | <span class="ms-1 d-none d-sm-inline">User information</span>
|
---|
| 42 | </a>
|
---|
| 43 | </li>
|
---|
| 44 | <li class="nav-item">
|
---|
| 45 | <a th:href="@{/myDonations}" class="nav-link px-sm-0 px-2">
|
---|
| 46 | <svg class="bi" width="24" height="24">
|
---|
| 47 | <use xlink:href="#table"/>
|
---|
| 48 | </svg>
|
---|
| 49 | <span class="ms-1 d-none d-sm-inline">My donations</span>
|
---|
| 50 | </a>
|
---|
| 51 | </li>
|
---|
| 52 | <li class="nav-item">
|
---|
| 53 | <a th:href="@{/myPosts}" class="nav-link px-sm-0 px-2">
|
---|
| 54 | <svg class="bi" width="24" height="24">
|
---|
| 55 | <use xlink:href="#grid"/>
|
---|
| 56 | </svg>
|
---|
| 57 | <span class="ms-1 d-none d-sm-inline">My posts</span>
|
---|
| 58 | </a>
|
---|
| 59 | </li>
|
---|
| 60 | </ul>
|
---|
| 61 | </div>
|
---|
| 62 | </div>
|
---|
| 63 | <!--SideBar end-->
|
---|
| 64 |
|
---|
| 65 | <!--User information-->
|
---|
| 66 | <div class="col d-flex flex-column h-sm-100" th:if="${userInformation}">
|
---|
| 67 | <main class="row overflow-auto">
|
---|
| 68 | <div class="col pt-4">
|
---|
| 69 | <h3>User Information</h3>
|
---|
| 70 | <div class="card mb-3">
|
---|
| 71 | <div class="card-body">
|
---|
| 72 | <div class="row">
|
---|
| 73 | <div class="col-sm-3">
|
---|
| 74 | <h6 class="mb-0">First Name</h6>
|
---|
| 75 | </div>
|
---|
| 76 | <div class="col-sm-9 text-secondary" th:text="${user.firstName}">
|
---|
| 77 | </div>
|
---|
| 78 | </div>
|
---|
| 79 | <hr>
|
---|
| 80 | <div class="row">
|
---|
| 81 | <div class="col-sm-3">
|
---|
| 82 | <h6 class="mb-0">Last Name</h6>
|
---|
| 83 | </div>
|
---|
| 84 | <div class="col-sm-9 text-secondary" th:text="${user.lastName}">
|
---|
| 85 | </div>
|
---|
| 86 | </div>
|
---|
| 87 | <hr>
|
---|
| 88 | <div class="row">
|
---|
| 89 | <div class="col-sm-3">
|
---|
| 90 | <h6 class="mb-0">Email</h6>
|
---|
| 91 | </div>
|
---|
| 92 | <div class="col-sm-9 text-secondary" th:text="${user.email}">
|
---|
| 93 | </div>
|
---|
| 94 | </div>
|
---|
| 95 | <hr>
|
---|
| 96 | <form th:action="@{/changePassword}" method="post">
|
---|
| 97 | <div class="row">
|
---|
| 98 | <div class="col-sm-3">
|
---|
| 99 | <h6 class="mb-0">Old Password</h6>
|
---|
| 100 | </div>
|
---|
| 101 | <div class="col-sm-9 text-secondary">
|
---|
| 102 | <input class="form-control" type="password" name="oldPassword">
|
---|
| 103 | </div>
|
---|
| 104 | </div>
|
---|
| 105 | <hr>
|
---|
| 106 | <div class="row">
|
---|
| 107 | <div class="col-sm-3">
|
---|
| 108 | <h6 class="mb-0">New Password</h6>
|
---|
| 109 | </div>
|
---|
| 110 | <div class="col-sm-9 text-secondary">
|
---|
| 111 | <input class="form-control" type="password" name="newPassword">
|
---|
| 112 | </div>
|
---|
| 113 | </div>
|
---|
| 114 | <hr>
|
---|
| 115 | <div class="row">
|
---|
| 116 | <div class="col-sm-3">
|
---|
| 117 | <h6 class="mb-0">Confirm Password</h6>
|
---|
| 118 | </div>
|
---|
| 119 | <div class="col-sm-9 text-secondary">
|
---|
| 120 | <input class="form-control" type="password" name="confirmPassword">
|
---|
| 121 | </div>
|
---|
| 122 | </div>
|
---|
| 123 | <hr>
|
---|
| 124 | <div class="row">
|
---|
| 125 | <div class="col-sm-12">
|
---|
| 126 | <input type="submit" class="btn btn-info" value="Change password">
|
---|
| 127 | </div>
|
---|
| 128 | </div>
|
---|
| 129 | </form>
|
---|
| 130 | <div th:if="${changedPassword}" class="text-success">Password changed</div>
|
---|
| 131 | <div th:if="${notChangedPassword}" class="text-danger">One of the passwords doesn't match
|
---|
| 132 | </div>
|
---|
| 133 | </div>
|
---|
| 134 | </div>
|
---|
| 135 | </div>
|
---|
| 136 | </main>
|
---|
| 137 | <main class="row overflow-auto">
|
---|
| 138 | <div class="col pt-4">
|
---|
| 139 | <h3>Payment</h3>
|
---|
| 140 | <div class="card">
|
---|
| 141 | <div class="card-body">
|
---|
| 142 | <div style="float: right">
|
---|
| 143 | <img src="https://img.icons8.com/color/48/000000/visa.png"/>
|
---|
| 144 | <img src="https://img.icons8.com/color/48/000000/mastercard-logo.png"/>
|
---|
| 145 | <img src="https://img.icons8.com/color/48/000000/maestro.png"/>
|
---|
| 146 | </div>
|
---|
| 147 | <br/>
|
---|
| 148 | <br/>
|
---|
| 149 | <form th:action="@{/changeCardInfo}" method="post">
|
---|
| 150 | <div class="row">
|
---|
| 151 | <div class="col-md-6">
|
---|
| 152 | <label for="cardName" class="form-label">Cardholder's name</label>
|
---|
| 153 | <input type="text" class="form-control" id="cardName" name="cardName"
|
---|
| 154 | placeholder="Name on card">
|
---|
| 155 | </div>
|
---|
| 156 | <div class="col-md-6 mb-0">
|
---|
| 157 | <label for="cardNumber" class="form-label">Card Number</label>
|
---|
| 158 | <input type="text" class="form-control" id="cardNumber" name="cardNumber"
|
---|
| 159 | placeholder="0000 0000 0000 0000">
|
---|
| 160 | </div>
|
---|
| 161 | </div>
|
---|
| 162 | <div class="row">
|
---|
| 163 | <div class="col-md-6">
|
---|
| 164 | <label for="expiryDate" class="form-label">Expiry date</label>
|
---|
| 165 | <input type="text" class="form-control" id="expiryDate" name="expiryDate"
|
---|
| 166 | placeholder="MM/YY">
|
---|
| 167 | </div>
|
---|
| 168 | <div class="col-md-6">
|
---|
| 169 | <label for="cvv" class="form-label">CVV</label>
|
---|
| 170 | <input type="text" class="form-control" id="cvv" name="cvv" placeholder="XXX">
|
---|
| 171 | </div>
|
---|
| 172 | </div>
|
---|
| 173 | <hr>
|
---|
| 174 | <div class="row">
|
---|
| 175 | <div class="col-sm-12">
|
---|
| 176 | <input type="submit" class="btn btn-info" value="Change card information">
|
---|
| 177 | <a class="btn btn-danger" th:href="@{/removeCardInfo}">Remove card
|
---|
| 178 | information</a>
|
---|
| 179 | </div>
|
---|
| 180 | </div>
|
---|
| 181 | </form>
|
---|
| 182 | <div th:if="${creditCardError}" class="text-danger">Error</div>
|
---|
| 183 | </div>
|
---|
| 184 | </div>
|
---|
| 185 | </div>
|
---|
| 186 | </main>
|
---|
| 187 | </div>
|
---|
| 188 | <!--UserInformationEnd-->
|
---|
| 189 |
|
---|
| 190 | <!--MyDonations-->
|
---|
| 191 | <div class="col d-flex flex-column h-sm-100" th:if="${myDonations}">
|
---|
| 192 | <main class="row overflow-auto">
|
---|
| 193 | <div class="col pt-4">
|
---|
| 194 | <h3>My donations</h3>
|
---|
| 195 | <div class="card mb-3">
|
---|
| 196 | <div class="card-body">
|
---|
| 197 | <div class="row">
|
---|
| 198 | <div class="col">
|
---|
| 199 | <h6>Post</h6>
|
---|
| 200 | </div>
|
---|
| 201 | <div class="col text-secondary">
|
---|
| 202 | <h6>Amount (MKD)</h6>
|
---|
| 203 | </div>
|
---|
| 204 | </div>
|
---|
| 205 | <div class="row" th:each="donation : ${donations}">
|
---|
| 206 | <div class="col">
|
---|
| 207 | <a th:text="${donation.title}" th:href="@{/post(postid=${donation.postId})}"></a>
|
---|
| 208 | </div>
|
---|
| 209 | <div class="col text-secondary" th:text="${donation.donatedAmount}">
|
---|
| 210 | </div>
|
---|
| 211 | <hr class="dropdown-divider">
|
---|
| 212 | </div>
|
---|
| 213 | <div class="row">
|
---|
| 214 | <div class="col">
|
---|
| 215 | <h6>Total</h6>
|
---|
| 216 | </div>
|
---|
| 217 | <div class="col text-secondary">
|
---|
| 218 | <h6 th:text="${total}"></h6>
|
---|
| 219 | </div>
|
---|
| 220 | </div>
|
---|
| 221 | </div>
|
---|
| 222 | </div>
|
---|
| 223 | </div>
|
---|
| 224 | </main>
|
---|
| 225 | </div>
|
---|
| 226 | <!--MyDonationsEnd-->
|
---|
| 227 |
|
---|
| 228 | <!--MyPosts-->
|
---|
| 229 | <div class="col d-flex flex-column h-sm-100" th:if="${myPosts}">
|
---|
| 230 | <main class="row overflow-auto">
|
---|
| 231 | <div class="col pt-4">
|
---|
| 232 | <h3>My Posts</h3>
|
---|
| 233 | <div class="row">
|
---|
| 234 | <div class="col-md-6" th:each="post : ${postList}">
|
---|
| 235 | <div class="row g-0 border rounded overflow-hidden flex-md-row mb-4 shadow-sm h-md-250 position-relative">
|
---|
| 236 | <div class="col p-4 d-flex flex-column position-static">
|
---|
| 237 | <h3 class="mb-0" th:text="${post.title}"></h3>
|
---|
| 238 | <p class="card-text mb-auto" th:text="${post.description}"></p>
|
---|
| 239 | <div class="row">
|
---|
| 240 | <div class="col">
|
---|
| 241 | <a class="btn btn-sm btn-outline-secondary"
|
---|
| 242 | th:href="@{/post(postid=${post.id})}">Open</a>
|
---|
[194776a] | 243 | <button type="button" class="btn btn-sm btn-success" data-bs-toggle="modal"
|
---|
| 244 | th:data-bs-target="'#m' + ${post.id}">
|
---|
[f8007b3] | 245 | Add collected funds
|
---|
| 246 | </button>
|
---|
[5577566] | 247 | </div>
|
---|
| 248 | </div>
|
---|
| 249 | </div>
|
---|
| 250 | <div class="col-auto d-none d-lg-block">
|
---|
| 251 | <img th:src="${post.imagesPath[0]}" width="200" height="250"
|
---|
| 252 | style="object-fit: contain">
|
---|
| 253 | </div>
|
---|
| 254 | </div>
|
---|
[194776a] | 255 | <div class="modal fade" th:id="'m' + ${post.id}" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1"
|
---|
[f8007b3] | 256 | aria-labelledby="staticBackdropLabel" aria-hidden="true">
|
---|
| 257 | <div class="modal-dialog modal-dialog-centered">
|
---|
| 258 | <div class="modal-content">
|
---|
| 259 | <div class="modal-header">
|
---|
| 260 | <h5 class="modal-title" id="staticBackdropLabel">Add funds</h5>
|
---|
| 261 | <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
---|
| 262 | </div>
|
---|
| 263 | <div class="modal-body">
|
---|
| 264 | <div class="card-body">
|
---|
| 265 | <form th:id="'my-form' + ${post.id}" th:action="@{/addFunds(postid=${post.id})}" method="post">
|
---|
| 266 | <div class="row">
|
---|
[194776a] | 267 | <div class="col-md-6">
|
---|
| 268 | <label for="type" class="form-label">Type</label>
|
---|
| 269 | <select id="type" class="form-select" name="type">
|
---|
[f8007b3] | 270 | <option value="Bank donation">Bank donation</option>
|
---|
| 271 | <option value="Phone donation">Phone donation</option>
|
---|
| 272 | </select>
|
---|
| 273 | </div>
|
---|
[194776a] | 274 | <div class="col-md-6">
|
---|
| 275 | <label for="amount" class="form-label">Amount</label>
|
---|
| 276 | <input id="amount" type="number" class="form-control" name="amount">
|
---|
[f8007b3] | 277 | </div>
|
---|
| 278 | </div>
|
---|
| 279 | </form>
|
---|
| 280 | </div>
|
---|
| 281 | </div>
|
---|
| 282 | <div class="modal-footer">
|
---|
| 283 | <input class="btn btn-primary" type="submit" th:form="'my-form' + ${post.id}">
|
---|
| 284 | </div>
|
---|
| 285 | </div>
|
---|
| 286 | </div>
|
---|
| 287 | </div>
|
---|
[5577566] | 288 | </div>
|
---|
| 289 | </div>
|
---|
| 290 | </div>
|
---|
| 291 | </main>
|
---|
| 292 | </div>
|
---|
| 293 | <!--MyPostsEnd-->
|
---|
| 294 | </div>
|
---|
| 295 | </div>
|
---|
[f8007b3] | 296 |
|
---|
| 297 |
|
---|
[5577566] | 298 | <script src="/js/bootstrap.min.js"></script>
|
---|
| 299 | <script th:inline="javascript">
|
---|
| 300 | /*<![CDATA[*/
|
---|
| 301 |
|
---|
| 302 | var creditCardInfo = /*[[${user.creditCardInfo}]]*/ 'default';
|
---|
| 303 | if (creditCardInfo) {
|
---|
| 304 | var parts = creditCardInfo.split(",");
|
---|
| 305 | document.getElementById("cardName").value = parts[0];
|
---|
| 306 | document.getElementById("cardNumber").value = parts[1];
|
---|
| 307 | document.getElementById("expiryDate").value = parts[2];
|
---|
| 308 | document.getElementById("cvv").value = parts[3];
|
---|
| 309 | }
|
---|
| 310 |
|
---|
| 311 | /*]]>*/
|
---|
| 312 | </script>
|
---|
| 313 | </body>
|
---|
| 314 | </html> |
---|