Index: docs/todo.txt
===================================================================
--- docs/todo.txt	(revision 12027d377ca616c7a541d3f339d87153396ea53b)
+++ docs/todo.txt	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
@@ -7,2 +7,11 @@
 	
 Ko ke udris search bez filtri da ti gi davat grupirani. -> Edna grupa topics, druga projects treta tagoj so ti matchnale so kverito.
+
+- Developer requests for join
+- Avatar da chuvame
+- Channels da se impl
+- Likes da se impl
+- Discussion da se grupirani spored nekoja metrika koja gi spojvit.
+- Meshan search vo appot, od sve sho imame vo nego.
+- Referencira thread, koga pishi tekst, kaj bilo.
+- Strana za edit user details
Index: src/main/java/com/db/finki/www/build_board/controller/TopicController.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/controller/TopicController.java	(revision 12027d377ca616c7a541d3f339d87153396ea53b)
+++ src/main/java/com/db/finki/www/build_board/controller/TopicController.java	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
@@ -3,4 +3,5 @@
 import com.db.finki.www.build_board.entity.user_types.BBUser;
 import com.db.finki.www.build_board.entity.threads.Topic;
+import com.db.finki.www.build_board.service.threads.impl.DiscussionService;
 import com.db.finki.www.build_board.service.threads.itfs.TagService;
 import com.db.finki.www.build_board.service.threads.itfs.TopicService;
@@ -16,8 +17,10 @@
     private final TopicService topicService;
     private final TagService tagService;
+    private final DiscussionService discussionService;
 
-    public TopicController(TopicService topicService, TagService tagService) {
+    public TopicController(TopicService topicService, TagService tagService, DiscussionService discussionService) {
         this.topicService = topicService;
         this.tagService = tagService;
+        this.discussionService = discussionService;
     }
 
@@ -31,4 +34,5 @@
         model.addAttribute("topic", t);
         model.addAttribute("tags", tagService.findAllNotUsed(t));
+        model.addAttribute("replies", discussionService.findByTopic((long) t.getId()));
         return "show-topic";
     }
@@ -70,3 +74,4 @@
         return "redirect:/topic/" + t.getTitle();
     }
+
 }
Index: src/main/java/com/db/finki/www/build_board/entity/threads/BBThread.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/threads/BBThread.java	(revision 12027d377ca616c7a541d3f339d87153396ea53b)
+++ src/main/java/com/db/finki/www/build_board/entity/threads/BBThread.java	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
@@ -9,5 +9,7 @@
 
 @Entity
-@Data
+@Getter
+@Setter
+@NoArgsConstructor
 @Table(name = "thread")
 @Inheritance(strategy = InheritanceType.JOINED)
Index: src/main/java/com/db/finki/www/build_board/entity/threads/Tag.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/threads/Tag.java	(revision 12027d377ca616c7a541d3f339d87153396ea53b)
+++ src/main/java/com/db/finki/www/build_board/entity/threads/Tag.java	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
@@ -7,5 +7,7 @@
 import jakarta.persistence.Table;
 import lombok.Data;
+import lombok.Getter;
 import lombok.NoArgsConstructor;
+import lombok.Setter;
 
 import java.io.Serializable;
@@ -14,7 +16,8 @@
 import java.util.Objects;
 
-@Data
+@Getter
+@Setter
+@NoArgsConstructor
 @Entity
-@NoArgsConstructor
 @Table(name = "tag")
 public class Tag implements Serializable {
Index: src/main/java/com/db/finki/www/build_board/entity/threads/Topic.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/threads/Topic.java	(revision 12027d377ca616c7a541d3f339d87153396ea53b)
+++ src/main/java/com/db/finki/www/build_board/entity/threads/Topic.java	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
@@ -3,4 +3,5 @@
 import com.db.finki.www.build_board.entity.threads.interfaces.NamedThread;
 import com.db.finki.www.build_board.entity.threads.multi_valued_attributes.Guideline;
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import jakarta.persistence.*;
 import lombok.*;
@@ -8,8 +9,8 @@
 import java.util.List;
 
-@Data
-@EqualsAndHashCode(callSuper = false)
+@Getter
+@Setter
+@NoArgsConstructor
 @Entity
-@NoArgsConstructor
 @Table(name = "topic_thread")
 public class Topic extends BBThread implements NamedThread {
@@ -17,4 +18,5 @@
     private String title;
 
+    @JsonIgnore
     @OneToMany(mappedBy = "topic")
     private List<Guideline> guidelines;
Index: src/main/java/com/db/finki/www/build_board/entity/threads/discussion_threads/Discussion.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/threads/discussion_threads/Discussion.java	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
+++ src/main/java/com/db/finki/www/build_board/entity/threads/discussion_threads/Discussion.java	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
@@ -0,0 +1,12 @@
+package com.db.finki.www.build_board.entity.threads.discussion_threads;
+
+import com.db.finki.www.build_board.entity.threads.BBThread;
+import jakarta.persistence.*;
+
+@Entity
+@Table(name = "discussion_thread")
+public class Discussion extends BBThread {
+    @ManyToOne
+    @JoinColumn(name = "parent_id")
+    private BBThread parent;
+}
Index: src/main/java/com/db/finki/www/build_board/entity/threads/discussion_threads/VDiscussion.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/threads/discussion_threads/VDiscussion.java	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
+++ src/main/java/com/db/finki/www/build_board/entity/threads/discussion_threads/VDiscussion.java	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
@@ -0,0 +1,38 @@
+package com.db.finki.www.build_board.entity.threads.discussion_threads;
+
+
+import com.db.finki.www.build_board.entity.threads.Topic;
+import com.db.finki.www.build_board.entity.threads.discussion_threads.Discussion;
+import com.db.finki.www.build_board.entity.user_types.BBUser;
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.Immutable;
+
+//todo: uste avatar_url da imat
+@Entity
+@Immutable
+@Table(name="v_discussion_thread")
+@Getter
+@Setter
+@NoArgsConstructor
+public class VDiscussion {
+    @Id
+    private Integer id;
+
+    @MapsId
+    @OneToOne
+    @JoinColumn(name="id")
+    private Discussion discussion;
+
+    private int depth;
+
+    @ManyToOne
+    @JoinColumn(name="user_id")
+    private BBUser user;
+
+    @ManyToOne
+    @JoinColumn(name="parent_id")
+    private Topic parentTopic;
+}
Index: src/main/java/com/db/finki/www/build_board/entity/threads/multi_valued_attributes/Guideline.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/threads/multi_valued_attributes/Guideline.java	(revision 12027d377ca616c7a541d3f339d87153396ea53b)
+++ src/main/java/com/db/finki/www/build_board/entity/threads/multi_valued_attributes/Guideline.java	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
@@ -3,7 +3,11 @@
 import com.db.finki.www.build_board.entity.threads.Topic;
 import jakarta.persistence.*;
-import lombok.Data;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
 
-@Data
+@Getter
+@Setter
+@NoArgsConstructor
 @Entity
 @Table(name = "topic_guidelines")
@@ -18,3 +22,4 @@
 
     private String description;
+
 }
Index: src/main/java/com/db/finki/www/build_board/entity/user_types/BBUser.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/user_types/BBUser.java	(revision 12027d377ca616c7a541d3f339d87153396ea53b)
+++ src/main/java/com/db/finki/www/build_board/entity/user_types/BBUser.java	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
@@ -4,4 +4,7 @@
 import jakarta.persistence.*;
 import lombok.Data;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
@@ -12,5 +15,7 @@
 import java.util.List;
 
-@Data
+@Getter
+@Setter
+@NoArgsConstructor
 @Entity
 @Table(name = "users")
Index: src/main/java/com/db/finki/www/build_board/entity/user_types/Moderator.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/user_types/Moderator.java	(revision 12027d377ca616c7a541d3f339d87153396ea53b)
+++ src/main/java/com/db/finki/www/build_board/entity/user_types/Moderator.java	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
@@ -3,6 +3,12 @@
 import jakarta.persistence.Entity;
 import jakarta.persistence.Table;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
 
 @Entity
+@Getter
+@Setter
+@NoArgsConstructor
 @Table(name = "moderator")
 public class Moderator extends BBUser {
Index: src/main/java/com/db/finki/www/build_board/entity/user_types/ProjectOwner.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/entity/user_types/ProjectOwner.java	(revision 12027d377ca616c7a541d3f339d87153396ea53b)
+++ src/main/java/com/db/finki/www/build_board/entity/user_types/ProjectOwner.java	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
@@ -4,6 +4,11 @@
 import jakarta.persistence.Table;
 import lombok.Data;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
 
-@Data
+@Getter
+@Setter
+@NoArgsConstructor
 @Entity
 @Table(name = "project_manager")
Index: src/main/java/com/db/finki/www/build_board/repository/threads/VDiscussRepo.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/repository/threads/VDiscussRepo.java	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
+++ src/main/java/com/db/finki/www/build_board/repository/threads/VDiscussRepo.java	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
@@ -0,0 +1,12 @@
+package com.db.finki.www.build_board.repository.threads;
+
+import com.db.finki.www.build_board.entity.threads.discussion_threads.VDiscussion;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface VDiscussRepo extends JpaRepository<VDiscussion,Long> {
+    List<VDiscussion> findVDiscussionByParentTopicId(Long topicId);
+}
Index: src/main/java/com/db/finki/www/build_board/service/threads/impl/DiscussionService.java
===================================================================
--- src/main/java/com/db/finki/www/build_board/service/threads/impl/DiscussionService.java	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
+++ src/main/java/com/db/finki/www/build_board/service/threads/impl/DiscussionService.java	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
@@ -0,0 +1,28 @@
+package com.db.finki.www.build_board.service.threads.impl;
+
+import com.db.finki.www.build_board.entity.threads.discussion_threads.Discussion;
+import com.db.finki.www.build_board.entity.threads.discussion_threads.VDiscussion;
+import com.db.finki.www.build_board.entity.user_types.BBUser;
+import com.db.finki.www.build_board.repository.threads.VDiscussRepo;
+import org.springframework.stereotype.Service;
+import java.util.List;
+
+@Service
+public class DiscussionService {
+    private final VDiscussRepo vDiscussRepo;
+
+    public DiscussionService(VDiscussRepo vDiscussRepo) {
+        this.vDiscussRepo = vDiscussRepo;
+    }
+
+    public List<VDiscussion> findByTopic(Long topicId){
+        return vDiscussRepo.findVDiscussionByParentTopicId(topicId);
+    }
+
+    public List<VDiscussion> findAll(){
+        return vDiscussRepo.findAll();
+    }
+    public Discussion create(String content, Long parentId, BBUser user){
+        return null;
+    }
+}
Index: src/main/resources/db/migration/V1__init_ddl.sql
===================================================================
--- src/main/resources/db/migration/V1__init_ddl.sql	(revision 12027d377ca616c7a541d3f339d87153396ea53b)
+++ src/main/resources/db/migration/V1__init_ddl.sql	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
@@ -51,4 +51,5 @@
     description   VARCHAR(200),
     registered_at TIMESTAMP,
+    avatar_url TEXT,
     sex           VARCHAR(1)
 );
@@ -220,10 +221,10 @@
          JOIN thread
               ON project.id = thread.id;
-CREATE OR REPLACE VIEW v_discussion_thread
-AS
-SELECT thread.id, content, user_id, parent_id
-FROM discussion_thread discussion
-         JOIN thread
-              ON discussion.id = thread.id;
+-- CREATE OR REPLACE VIEW v_discussion_thread
+-- AS
+-- SELECT thread.id, content, user_id, parent_id
+-- FROM discussion_thread discussion
+--          JOIN thread
+--               ON discussion.id = thread.id;
 CREATE OR REPLACE VIEW v_topic_thread
 AS
@@ -259,9 +260,28 @@
 FROM developer
          JOIN users ON developer.id = users.id;
-CREATE OR REPLACE VIEW v_project_owner
-AS
-SELECT users.id, username, is_activate, password, description, registered_at, sex
-FROM project_manager
-         JOIN users ON project_manager.id = users.id;
+
+create or replace view v_discussion_thread
+as
+with recursive depth_table as
+(
+    select parent_id, id, 0 as depth
+    from discussion_thread
+    UNION ALL
+    select discuss.parent_id, dpth.id, dpth.depth + 1
+    from depth_table dpth
+    join discussion_thread discuss
+    on dpth.parent_id=discuss.id
+),
+tmp as (
+    select id,max(depth) as depth
+    from depth_table
+    group by id
+)
+select d.id as id ,t.user_id as user_id ,d.depth as depth, d1.parent_id as parent_id
+from tmp d
+         join depth_table d1
+              on d.id=d1.id and d1.depth=d.depth
+         join thread t
+              on t.id=d.id;
 -------------------------- FUNCTIONS ----------------------
 CREATE OR REPLACE FUNCTION fn_validate_topic_title()
Index: src/main/resources/templates/show-topic.html
===================================================================
--- src/main/resources/templates/show-topic.html	(revision 12027d377ca616c7a541d3f339d87153396ea53b)
+++ src/main/resources/templates/show-topic.html	(revision 1229a95c22c906a8cb74275fd39abab83d133d4a)
@@ -8,5 +8,4 @@
 </head>
 <body>
-
 
 
@@ -37,15 +36,39 @@
                     </li>
                 </ul>
-            </div>
-
+                <div class="d-flex justify-content-end">
+                    <button class="btn btn-info btn-sm m-2 reply-button"
+                            th:attr="data-reply-id=${topic.getId()}">Reply
+                    </button>
+                </div>
+                <div th:attr="data-reply-id=${topic.getId()}" class="card-body d-none reply-body">
+                    <form action="/topic/reply" method="post">
+                        <div class="mb-3">
+                            <label for="reply" class="form-label">Your Reply</label>
+                            <textarea id="reply" name="reply" class="form-control" rows="3" placeholder="Write your reply here"
+                                      required></textarea>
+                        </div>
+                        <div class="d-flex justify-content-between">
+                            <button type="submit" class="btn btn-success w-10 ms-2">Post Reply</button>
+                            <div class="d-flex justify-content-end reply-cancel">
+                                <button class="btn btn-danger btn-sm reply-cancel w-10 me-2"
+                                        th:attr="data-reply-id=${topic.getId()}">Cancel
+                                </button>
+                            </div>
+                        </div>
+                    </form>
+                </div>
+            </div>
 
 
         </div>
         <!-- Edit and Delete Buttons for Topic -->
-        <div th:if="${session.user.getId() != null && session.user.getId() == topic.getUser().getId()}" class="card-footer d-flex justify-content-between">
+        <div th:if="${session.user.getId() != null && session.user.getId() == topic.getUser().getId()}"
+             class="card-footer d-flex justify-content-between">
             <div>
-                <button class="btn btn-warning btn-sm" data-bs-toggle="modal" data-bs-target="#editTopicModal">Edit Topic</button>
+                <button class="btn btn-warning btn-sm" data-bs-toggle="modal" data-bs-target="#editTopicModal">Edit
+                    Topic
+                </button>
                 <form th:action="@{/topic/delete/{id} (id=${topic.getId()})}" method="post" style="display:inline;">
-                    <input type="hidden" name="id" th:value="${topic.getId()}" />
+                    <input type="hidden" name="id" th:value="${topic.getId()}"/>
                     <button type="submit" class="btn btn-danger btn-sm">Delete Topic</button>
                 </form>
@@ -54,33 +77,88 @@
     </div>
 
-    <!-- Reply Form -->
-    <div class="card shadow-sm">
-        <div class="card-header bg-success text-white">
-            <h5 class="mb-0">Add a Reply</h5>
-        </div>
+    <!--     Replies Section-->
+    <div th:each="reply : ${replies}" class="card shadow-sm mt-4"
+         th:style="'margin-left: ' + (${reply.depth + 1} * 5) + '%'">
+        <div class="card-header bg-light d-flex justify-content-between align-items-center">
+            <span th:text="${reply.getUser().getUsername()}">Reply Author</span>
+            <div th:if="${session.user.getId() != null && session.user.getId() == reply.getUser().getId()}">
+                <button class="btn btn-warning btn-sm" data-bs-toggle="modal" data-bs-target="#editReplyModal"
+                        th:attr="data-reply-id=${reply}">Edit Reply
+                </button>
+            </div>
+        </div>
+
         <div class="card-body">
+            <p th:text="${reply.getDiscussion().getContent()}">Reply content goes here.</p>
+        </div>
+
+        <div class="modal fade" id="editReplyModal" tabindex="-1" aria-labelledby="editReplyModalLabel"
+             aria-hidden="true">
+            <div class="modal-dialog">
+                <div class="modal-content">
+                    <div class="modal-header">
+                        <h5 class="modal-title" id="editReplyModalLabel">Edit Reply</h5>
+                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
+                    </div>
+                    <div class="modal-body">
+                        <form th:action="@{/topic/discussion/{id}/edit (id=${reply.getId()})}" method="post">
+                            <div class="mb-3">
+                                <label for="replyContent" class="form-label">Reply Content</label>
+                                <textarea id="replyContent" name="content" class="form-control" rows="3"
+                                          th:text="${reply.getDiscussion().getContent()}" required></textarea>
+                            </div>
+                            <button type="submit" class="btn btn-primary w-100">Save Changes</button>
+                        </form>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div class="d-flex justify-content-end">
+            <button class="btn btn-info btn-sm m-2 reply-button"
+                    th:attr="data-reply-id=${reply.getDiscussion().getId()}">Reply
+            </button>
+        </div>
+
+
+        <div th:attr="data-reply-id=${reply.getDiscussion().getId()}" class="card-body d-none reply-body">
             <form action="/topic/reply" method="post">
                 <div class="mb-3">
                     <label for="reply" class="form-label">Your Reply</label>
-                    <textarea id="reply" name="reply" class="form-control" rows="3" placeholder="Write your reply here" required></textarea>
-                </div>
-                <button type="submit" class="btn btn-success w-100">Post Reply</button>
+                    <textarea name="reply" class="form-control" rows="3" placeholder="Write your reply here"
+                              required></textarea>
+                </div>
+                <div class="d-flex justify-content-between">
+                    <button type="submit" class="btn btn-success w-10 ms-2">Post Reply</button>
+                    <div class="d-flex justify-content-end reply-cancel">
+                        <button class="btn btn-danger btn-sm reply-cancel w-10 me-2"
+                                th:attr="data-reply-id=${reply.getDiscussion().getId()}">Cancel
+                        </button>
+                    </div>
+                </div>
             </form>
         </div>
-    </div>
-
-    <!-- Replies Section -->
-<!--    <div th:each="reply : ${replies}" class="card shadow-sm mt-4">-->
-<!--        <div class="card-header bg-light d-flex justify-content-between align-items-center">-->
-<!--            <span th:text="${reply.getUser().getName()}">Reply Author</span>-->
-<!--            &lt;!&ndash; Edit Button for Replies &ndash;&gt;-->
-<!--            <div th:if="${session.user.getId() != null && session.user.getId() == reply.getUser().getId()}">-->
-<!--                <button class="btn btn-warning btn-sm" data-bs-toggle="modal" data-bs-target="#editReplyModal" th:attr="data-reply-id=${reply.getId()}">Edit Reply</button>-->
-<!--            </div>-->
-<!--        </div>-->
-<!--        <div class="card-body">-->
-<!--            <p th:text="${reply.getContent()}">Reply content goes here.</p>-->
-<!--        </div>-->
-<!--    </div>-->
+
+
+        <!-- Reply Form -->
+        <!--        <div class="card shadow-sm mt-5">-->
+        <!--            <div class="card-header bg-success text-white">-->
+        <!--                <h5 class="mb-0">Add a Reply</h5>-->
+        <!--            </div>-->
+        <!--            <div class="card-body">-->
+        <!--                <form action="/topic/reply" method="post">-->
+        <!--                    <div class="mb-3">-->
+        <!--                        <label for="reply" class="form-label">Your Reply</label>-->
+        <!--                        <textarea id="reply" name="reply" class="form-control" rows="3" placeholder="Write your reply here" required></textarea>-->
+        <!--                    </div>-->
+        <!--                    <button type="submit" class="btn btn-success w-100">Post Reply</button>-->
+        <!--                </form>-->
+        <!--            </div>-->
+        <!--        </div>-->
+
+
+    </div>
+
+
 </main>
 
@@ -99,8 +177,11 @@
                         <select id="existingTags" class="form-select mb-3" name="tagName">
                             <option value="" selected disabled>Select an existing tag</option>
-                            <option th:each="tag : ${tags}" th:value="${tag.getName()}" th:text="${tag.getName()}">Example Tag</option>
+                            <option th:each="tag : ${tags}" th:value="${tag.getName()}" th:text="${tag.getName()}">
+                                Example Tag
+                            </option>
                             <option value="custom">Enter a custom tag...</option>
                         </select>
-                        <input type="text" id="customTag" class="form-control d-none" placeholder="Enter custom tag name" />
+                        <input type="text" id="customTag" class="form-control d-none"
+                               placeholder="Enter custom tag name"/>
                     </div>
                     <button type="submit" class="btn btn-primary w-100">Add Tag</button>
@@ -123,9 +204,11 @@
                     <div class="mb-3">
                         <label for="topicTitle" class="form-label">Title</label>
-                        <input type="text" id="topicTitle" name="title" class="form-control" th:value="${topic.getTitle()}" required>
+                        <input type="text" id="topicTitle" name="title" class="form-control"
+                               th:value="${topic.getTitle()}" required>
                     </div>
                     <div class="mb-3">
                         <label for="topicContent" class="form-label">Content</label>
-                        <textarea id="topicContent" name="content" class="form-control" rows="5" th:text="${topic.getContent()}" required></textarea>
+                        <textarea id="topicContent" name="content" class="form-control" rows="5"
+                                  th:text="${topic.getContent()}" required></textarea>
                     </div>
                     <button type="submit" class="btn btn-primary w-100">Save Changes</button>
@@ -137,23 +220,5 @@
 
 <!-- Edit Reply Modal -->
-<!--<div class="modal fade" id="editReplyModal" tabindex="-1" aria-labelledby="editReplyModalLabel" aria-hidden="true">-->
-<!--    <div class="modal-dialog">-->
-<!--        <div class="modal-content">-->
-<!--            <div class="modal-header">-->
-<!--                <h5 class="modal-title" id="editReplyModalLabel">Edit Reply</h5>-->
-<!--                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>-->
-<!--            </div>-->
-<!--            <div class="modal-body">-->
-<!--                <form th:action="@{/reply/edit/{id} (id=${reply.getId()})}" method="post">-->
-<!--                    <div class="mb-3">-->
-<!--                        <label for="replyContent" class="form-label">Reply Content</label>-->
-<!--                        <textarea id="replyContent" name="content" class="form-control" rows="3" th:text="${reply.getContent()}" required></textarea>-->
-<!--                    </div>-->
-<!--                    <button type="submit" class="btn btn-primary w-100">Save Changes</button>-->
-<!--                </form>-->
-<!--            </div>-->
-<!--        </div>-->
-<!--    </div>-->
-<!--</div>-->
+
 
 <script>
@@ -176,4 +241,23 @@
         });
     });
+    document.querySelector("main").addEventListener("click", ev => {
+        const target = ev.target;
+        if (target.classList.contains("reply-button")) {
+            const id = target.dataset.replyId
+            const dialog = document.querySelector(`.reply-body[data-reply-id="${id}"]`)
+            console.log(dialog)
+            dialog.classList.remove("d-none")
+            dialog.classList.add("d-block")
+            target.classList.add('d-none');
+        } else if (target.classList.contains("reply-cancel")) {
+            const id = target.dataset.replyId
+            const dialog = document.querySelector(`.reply-body[data-reply-id="${id}"]`)
+            const replyBtn = document.querySelector(`.reply-button[data-reply-id="${id}"]`)
+            dialog.classList.add("d-none")
+            dialog.classList.remove("d-block")
+            replyBtn.classList.remove('d-none');
+            replyBtn.classList.add('d-block');
+        }
+    })
 </script>
 
