- Добавил возможность редактирования сообщений

- Улучшил внешний вид страниц.

https://www.youtube.com/watch?v=-gdDklUu03k&list=PLU2ftbIeotGpAYRP9Iv2KLIwK36-o_qYk&index=20
This commit is contained in:
Leonid
2025-02-20 11:08:31 +03:00
parent fe4932fff5
commit 7b7378e30b
12 changed files with 205 additions and 80 deletions

View File

@@ -0,0 +1,39 @@
<a class="btn btn-primary mb-3" data-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false"
aria-controls="collapseExample">
Message editor
</a>
<div class="collapse <#if message??>show</#if>" id="collapseExample">
<div class="form-group mt-3">
<form method="post" enctype="multipart/form-data">
<div class="form-group">
<input type="text" class="form-control ${(textError??)?string('is-invalid', '')}"
value="<#if message??>${message.text}</#if>" name="text" placeholder="Text"/>
<#if textError??>
<div class="invalid-feedback">
${textError}
</div>
</#if>
</div>
<div class="form-group">
<input type="text" class="form-control ${(tagError??)?string('is-invalid', '')}"
value="<#if message??>${message.tag}</#if>" name="tag" placeholder="Tag">
<#if tagError??>
<div class="invalid-feedback">
${tagError}
</div>
</#if>
</div>
<div class="form-group">
<div class="custom-file">
<input type="file" name="file" id="customFile">
<label class="custom-file-label" for="customFile">Choose file</label>
</div>
</div>
<input type="hidden" name="_csrf" value="${_csrf.token}"/>
<input type="hidden" name="message-id" value=<#if message??>${message.id}</#if>/>
<div class="form-group">
<button type="submit" class="btn btn-primary">Save message</button>
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,25 @@
<#include "security.ftl">
<div class="row row-cols-1 row-cols-md-3 g-4">
<#list messages as message>
<div class="col">
<div class="card h-100"> <!-- h-100 делает карточки одинаковой высоты -->
<#if message.filename??>
<img src="/img/${message.filename}" class="card-img-top">
</#if>
<div class="card-body">
<span>${message.text}</span><br>
<i>#${message.tag}</i>
</div>
<div class="card-footer d-flex justify-content-between">
<a href="/user-messages/${message.author.id}"> ${message.authorName} </a>
<#if message.author.id == currentUserId>
<a class="btn btn-primary btn-sm" href="/user-messages/${message.author.id}?message=${message.id}">Edit</a>
</#if>
</div>
</div>
</div>
<#else>
<p>No messages found</p>
</#list>
</div>

View File

@@ -17,10 +17,15 @@
<li class="nav-item">
<a class="nav-link" aria-current="page" href="/main">Messages</a>
</li>
<#if user??>
<li class="nav-item">
<a class="nav-link" aria-current="page" href="/user-messages/${currentUserId}">My messages</a>
</li>
</#if>
<#if isAdmin>
<li class="nav-item">
<a class="nav-link" aria-current="page" href="/users">Users</a>
</li>
<li class="nav-item">
<a class="nav-link" aria-current="page" href="/users">Users</a>
</li>
</#if>
<#if user??>
<li class="nav-item">
@@ -29,7 +34,7 @@
</#if>
</ul>
</div>
<div class="navbar-text mr-3" >${name}</div>
<div class="navbar-text mr-3">${name}</div>
<div><#if name != "unknown"> <@l.logout /> </#if></div>
</div>
</nav>

View File

@@ -7,10 +7,12 @@ known = SPRING_SECURITY_CONTEXT??
user = SPRING_SECURITY_CONTEXT.authentication.principal
name = user.getUsername()
isAdmin = user.isAdmin()
currentUserId = user.getId()
>
<#else>
<#assign
name = "unknown"
isAdmin = false
currentUserId = -1
>
</#if>