From 8fe083ded06239f5bff68370a560cd5b8739ffae Mon Sep 17 00:00:00 2001 From: Akif9748 Date: Fri, 26 May 2023 12:02:46 +0300 Subject: [PATCH] Online users support and new messages on mainpage --- README.md | 2 +- src/routes/.js | 23 ++++++--- src/themes/bootstrap_black/views/index.ejs | 50 ++++++++------------ src/themes/bootstrap_black/views/threads.ejs | 1 - 4 files changed, 38 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 0391f07..397491e 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Akf-forum has got an API for AJAX (fetch), other clients etc. And, you can learn - send public to common/public - user.ejs for per theme - categori search title like thread search - +- edit template ### front-end - working reset button - better pagination diff --git a/src/routes/.js b/src/routes/.js index 6ad6c8f..d3d62b4 100644 --- a/src/routes/.js +++ b/src/routes/.js @@ -4,13 +4,24 @@ const app = Router(); app.get("/", async (req, res) => { - const categories = await CategoryModel.count(), - users = await UserModel.count({ deleted: false }), - threads = await ThreadModel.count({ state: "OPEN" }), - messages = await MessageModel.count({ deleted: false }), - newestMember = await UserModel.findOne({ deleted: false }, "name").sort({ time: -1 }); + const [ + categories, users, threads, messages, newestMember, newestMessages, onlineUserCount, onlineUsers + ] = await Promise.all([ + CategoryModel.count(), + UserModel.count({ deleted: false }), + ThreadModel.count({ state: "OPEN" }), + MessageModel.count({ deleted: false }), + UserModel.findOne({ deleted: false }, "name id").sort({ time: -1 }), + MessageModel.find({ deleted: false }).sort({ time: -1 }).limit(10), + UserModel.count({ deleted: false, lastSeen: { $gt: Date.now() - 1000 * 60 * 5 } }), + UserModel.find({ deleted: false, hideLastSeen: false, lastSeen: { $gt: Date.now() - 1000 * 60 * 5 } }, "name id") + ]) - res.reply("index", { categories, users, threads, messages, newestMember: newestMember.name }); + + res.reply("index", { + categories, users, threads, messages, + newestMember, newestMessages, onlineUserCount, onlineUsers + }); }); diff --git a/src/themes/bootstrap_black/views/index.ejs b/src/themes/bootstrap_black/views/index.ejs index e40446d..8ffbfba 100644 --- a/src/themes/bootstrap_black/views/index.ejs +++ b/src/themes/bootstrap_black/views/index.ejs @@ -22,34 +22,31 @@
-

Forum category

+

New messages

- - - - + + + - + <% newestMessages.forEach(message => { %> + - + <% }) %>
ForumTopicsPostsLast postMessageDateAuthor
-

Forum name

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In laoreet pellentesque lorem sed elementum.

+

+ <%= message.content.slice(0, 100) %> +

-
5
+
<%= new Date(message.time).toLocaleString() %>
-
18
-
-

Post name

- -
05 Apr 2017, 20:07
+
@@ -62,22 +59,17 @@

Members online

@@ -85,11 +77,9 @@
-

Forum statistics

-
-
Total forums:
+
Total categories:
<%= categories %>
@@ -107,7 +97,7 @@
diff --git a/src/themes/bootstrap_black/views/threads.ejs b/src/themes/bootstrap_black/views/threads.ejs index b2b0f5e..b391cab 100644 --- a/src/themes/bootstrap_black/views/threads.ejs +++ b/src/themes/bootstrap_black/views/threads.ejs @@ -34,7 +34,6 @@ -
by <%= thread.author.name %>
<%= new Date(thread.time).toLocaleString() %>