From bfec74a85f54daf2e0c3440d2f1fc543f435b06e Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Wed, 12 Feb 2020 12:25:46 +0100 Subject: fix dollar signs --- public/assets/js/lib/views/details/comments.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'public/assets/js/lib') diff --git a/public/assets/js/lib/views/details/comments.js b/public/assets/js/lib/views/details/comments.js index b1c86bb..1e8d127 100644 --- a/public/assets/js/lib/views/details/comments.js +++ b/public/assets/js/lib/views/details/comments.js @@ -14,8 +14,8 @@ var CommentsView = FormView.extend({ this.$formRow = this.$("#comment_form") }, - load: function(comments, thread){ -console.log(comments) + load: function(comments, thread) { + // console.log(comments) thread = this.thread = thread || this.thread if (thread.settings.hootbox) { comments @@ -35,13 +35,13 @@ console.log(comments) } }, - parse: function(comment){ + parse: function(comment) { if (! comment.comment.length) return $('') var datetime = verbose_date(comment.date, true) var t = this.template.replace(/{{image}}/g, profile_image(comment.username)) .replace(/{{username}}/g, comment.username) .replace(/{{id}}/g, comment.id) - .replace(/{{comment}}/g, tidy_urls(comment.comment)) + .replace(/{{comment}}/g, function(){ return tidy_urls(comment.comment) }) .replace(/{{date}}/g, datetime[0]) .replace(/{{time}}/g, datetime[1]) var $t = $(t) -- cgit v1.2.3-70-g09d2 From 932fe6e61b0f7d1a94a9dd9b965637d0b3a699e4 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sat, 4 Apr 2020 20:57:43 +0200 Subject: stub sdk. add keywords fix. stub users --- bucky/app/api.js | 8 +++ bucky/app/bucky.js | 15 +++++ bucky/app/pages.js | 7 +++ bucky/db/index.js | 29 ++++++++-- public/assets/js/lib/router.js | 8 ++- public/assets/js/lib/views/keywords/keywords.js | 13 +++-- public/assets/js/lib/views/users/users.js | 76 +++++++++++++++++++++++++ sdk/auth.js | 1 + sdk/index.js | 28 +++++++++ views/pages/users.ejs | 30 ++++++++++ views/partials/scripts.ejs | 2 + 11 files changed, 208 insertions(+), 9 deletions(-) create mode 100644 public/assets/js/lib/views/users/users.js create mode 100644 sdk/auth.js create mode 100644 sdk/index.js create mode 100644 views/pages/users.ejs (limited to 'public/assets/js/lib') diff --git a/bucky/app/api.js b/bucky/app/api.js index b4231e7..a6aa83f 100644 --- a/bucky/app/api.js +++ b/bucky/app/api.js @@ -34,6 +34,12 @@ function route (app){ function(req, res){ res.json(util.sanitizeUser(res.user)) }) + app.get("/api/users", + middleware.ensureAuthenticated, + bucky.ensureUserlist, + function(req, res) { + res.json(res.users) + }) app.get("/api/profile/:username", middleware.ensureAuthenticated, bucky.ensureUser, @@ -259,9 +265,11 @@ function route (app){ middleware.ensureAuthenticated, bucky.ensureKeywords, bucky.ensureThreadGroups, + bucky.ensureLatestKeywordThreads, function(req, res){ res.json({ keywords: res.keywords, + threads: res.threads, threadGroups: res.threadGroups, }) }) diff --git a/bucky/app/bucky.js b/bucky/app/bucky.js index 3824c5e..8ff0b15 100644 --- a/bucky/app/bucky.js +++ b/bucky/app/bucky.js @@ -296,6 +296,12 @@ var bucky = module.exports = { next() }) }, + ensureLatestKeywordThreads: function (req, res, next){ + db.getLatestKeywordThreads().then(function(threads){ + res.threads = threads + next() + }) + }, ensureThreadGroups: function (req, res, next){ db.getThreadGroups().then(function(threadGroups){ res.threadGroups = threadGroups @@ -564,6 +570,15 @@ var bucky = module.exports = { } }) }, + ensureUserlist: function (req, res, next){ + db.getUsers().then(function(users){ + if (! users) { + return res.sendStatus(404) + } + res.users = users + next() + }) + }, sanitizeUser: function(req, res, next) { res.user = util.sanitizeUser(res.user) next() diff --git a/bucky/app/pages.js b/bucky/app/pages.js index 7f666be..b007742 100644 --- a/bucky/app/pages.js +++ b/bucky/app/pages.js @@ -73,6 +73,13 @@ function route (app){ res.render("pages/profile_form", {title: "edit your profile"}) }) + app.get("/users", + middleware.ensureAuthenticated, + function(req, res){ + res.render("pages/users", { + }) + }) + app.get("/search/", middleware.ensureAuthenticated, function(req, res){ diff --git a/bucky/db/index.js b/bucky/db/index.js index f454c92..53e36dd 100644 --- a/bucky/db/index.js +++ b/bucky/db/index.js @@ -55,8 +55,13 @@ db.createUser = function(data){ } db.getUsers = function () { return User.query(function(qb){ - qb.orderBy("id", "desc") - }).fetchAll() + qb.orderBy("username", "desc") + }).fetchAll({ + columns: [ + "id", "username", "realname", "firstseen", "lastseen", + "location", "website", "avatar", + ] + }) } db.getUser = function(id) { var model = new User({'id': id}) @@ -281,8 +286,24 @@ db.getKeyword = function (keyword) { return Keyword.query("where", "keyword", "=", keyword).fetch() } db.getThreadGroups = function (keyword) { - return knex.column('keyword').sum('viewed').as('viewed').count('*').as('count').column('id').column('title').column('lastmodified').column('privacy').select().from('threads').groupBy('keyword') -} + return ( + knex.column('keyword') + .sum('viewed').as('viewed') + .count('*').as('count') + .select().from('threads').groupBy('keyword') + ) +} +db.getLatestKeywordThreads = function (keyword) { + var ids = knex('threads').max('id').groupBy('keyword') + return ( + knex.select('id', 'keyword', 'title', 'lastmodified', 'privacy').from('threads').where('id', 'in', ids) + ) +} + // .column('id') + // .column('title') + // .column('lastmodified') + // .column('privacy') + db.createKeyword = function(data){ return new db.Keyword(data).save() } diff --git a/public/assets/js/lib/router.js b/public/assets/js/lib/router.js index b6eff73..f856283 100644 --- a/public/assets/js/lib/router.js +++ b/public/assets/js/lib/router.js @@ -22,7 +22,8 @@ var SiteRouter = Router.extend({ "/mail/compose/:username": 'compose', "/mail/read/:id": 'message', "/mail/reply/:id": 'compose', - "/profile": 'profile', + "/users": 'users', + "/profile": 'profile', "/profile/:username": 'profile', "/profile/:username/edit": 'editProfile', "/adminz": 'adminz', @@ -85,6 +86,11 @@ var SiteRouter = Router.extend({ app.view.load(keyword || "") }, + users: function(username){ + app.view = new UsersView () + app.view.load() + }, + profile: function(username){ app.view = new ProfileView () app.view.load(username || auth.user.username) diff --git a/public/assets/js/lib/views/keywords/keywords.js b/public/assets/js/lib/views/keywords/keywords.js index 12bd5a8..c5a9491 100644 --- a/public/assets/js/lib/views/keywords/keywords.js +++ b/public/assets/js/lib/views/keywords/keywords.js @@ -19,16 +19,21 @@ var KeywordsView = View.extend({ populate: function(data){ // console.log(data) var keywordThreads = {} - data.threadGroups.forEach(kw => { + var keywordStats = {} + data.threads.forEach(kw => { keywordThreads[kw.keyword] = kw }) + data.threadGroups.forEach(kw => { + keywordStats[kw.keyword] = kw + }) data.keywords .map(a => [parseInt((keywordThreads[a.keyword] || {})['sum(`viewed`)']) || 0, a]) .sort((b,a) => cmp(a[0], b[0])) .map(a => a[1]) .forEach(keyword => { var thread = keywordThreads[keyword.keyword.toLowerCase()] || { - title: '', + } + var stats = keywordStats[keyword.keyword.toLowerCase()] || { } // { // keyword: "warez", @@ -38,9 +43,9 @@ var KeywordsView = View.extend({ // lastmodified: 1192401724 // }, // console.log(keyword, thread) - var viewed = thread['sum(`viewed`)'] + var viewed = stats['sum(`viewed`)'] var views = viewed ? hush_views(viewed) : ['',''] - var threadCountNum = thread['count(*)'] + var threadCountNum = stats['count(*)'] var threadCount = threadCountNum ? hush_threads(threadCountNum) : ['',''] var dot = privacy_dot(thread.privacy) var datetime = verbose_date(keyword.createdate) diff --git a/public/assets/js/lib/views/users/users.js b/public/assets/js/lib/views/users/users.js new file mode 100644 index 0000000..f3c0ef5 --- /dev/null +++ b/public/assets/js/lib/views/users/users.js @@ -0,0 +1,76 @@ +var UsersView = View.extend({ + + el: "#users_list", + + events: { + }, + + action: "/api/users", + + initialize: function(opt){ + this.template = this.$(".template").html() + this.form = new NewKeywordForm ({ parent: this }) + }, + + load: function(){ + $.get(this.action, this.populate.bind(this)) + }, + + populate: function(data){ + // console.log(data) + var keywordThreads = {} + data.threadGroups.forEach(kw => { + keywordThreads[kw.keyword] = kw + }) + data.keywords + .map(a => [parseInt((keywordThreads[a.keyword] || {})['sum(`viewed`)']) || 0, a]) + .sort((b,a) => cmp(a[0], b[0])) + .map(a => a[1]) + .forEach(keyword => { + var thread = keywordThreads[keyword.keyword.toLowerCase()] || { + title: '', + } + // { + // keyword: "warez", + // sum(`viewed`): "498", + // id: 701, + // title: "EMS SYNTHI PLUG FOR MAC", + // lastmodified: 1192401724 + // }, + // console.log(keyword, thread) + var viewed = thread['sum(`viewed`)'] + var views = viewed ? hush_views(viewed) : ['',''] + var threadCountNum = thread['count(*)'] + var threadCount = threadCountNum ? hush_threads(threadCountNum) : ['',''] + var dot = privacy_dot(thread.privacy) + var datetime = verbose_date(keyword.createdate) + var age = get_age(thread.lastmodified) + var id = thread.id + get_revision(thread) + var t = this.template + .replace(/{{keyword}}/g, sanitizeHTML(keyword.keyword)) + .replace(/{{id}}/g, id) + .replace(/{{username}}/g, keyword.username) + .replace(/{{privacy_dot}}/g, dot) + .replace(/{{title}}/g, thread.title) + .replace(/{{date}}/g, datetime[0]) + .replace(/{{time}}/g, datetime[1]) + .replace(/{{date_class}}/g, carbon_date(thread.lastmodified) ) + .replace(/{{views}}/g, views[1]) + .replace(/{{threadcount}}/, threadCount[1]) + .replace(/{{threadcount_class}}/, threadCount[0]) +// .replace(/{{comments}}/g, comments[1]) +// .replace(/{{files}}/g, files[1]) +// .replace(/{{size}}/g, size[1] ) + .replace(/{{views_class}}/g, views[0]) +// .replace(/{{comments_class}}/g, comments[0]) +// .replace(/{{files_class}}/g, files[0]) +// .replace(/{{show_files}}/g, thread.file_count == 0 ? "hidden" : "") +// .replace(/{{size_class}}/g, size[0] ) + .replace(/{{color}}/g, thread.color || "blue" ) + + this.$el.append(t) + }) + $("body").removeClass('loading') + }, + +}) diff --git a/sdk/auth.js b/sdk/auth.js new file mode 100644 index 0000000..72d38f1 --- /dev/null +++ b/sdk/auth.js @@ -0,0 +1 @@ +auth.js \ No newline at end of file diff --git a/sdk/index.js b/sdk/index.js new file mode 100644 index 0000000..0c92f0c --- /dev/null +++ b/sdk/index.js @@ -0,0 +1,28 @@ +// bucky 3.0.0 sdk + +let env = 'development' +let endpoint = 'http://localhost:5000/' + +export function init(opt){ + env = opt.env || env + endpoint = opt.endpoint || endpoint + + switch (env) { + case 'test': + break + default: + case 'development': + break + case 'production': + break + } +} + +export function path(api){ + return endpoint + api +} + +export function image(file, size){ + return "https://" + sdk.opt.s3.bucket + sdk.opt.s3.path + "/data/" + file.thread + "/" + file.id +} + diff --git a/views/pages/users.ejs b/views/pages/users.ejs new file mode 100644 index 0000000..f18b254 --- /dev/null +++ b/views/pages/users.ejs @@ -0,0 +1,30 @@ +<% include ../partials/header %> + +
+ +
+
+ +
+
+ +<% include ../partials/footer %> diff --git a/views/partials/scripts.ejs b/views/partials/scripts.ejs index 765594b..765bf61 100644 --- a/views/partials/scripts.ejs +++ b/views/partials/scripts.ejs @@ -38,6 +38,8 @@ + + -- cgit v1.2.3-70-g09d2 From da5de0257fc9c9d8c4c7f589d84ced2ef19b9f04 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sat, 4 Apr 2020 21:01:18 +0200 Subject: stub sdk. add keywords fix. stub users --- bucky/app/api.js | 4 ++- public/assets/js/lib/views/users/users.js | 50 +++++++++++++------------------ 2 files changed, 23 insertions(+), 31 deletions(-) (limited to 'public/assets/js/lib') diff --git a/bucky/app/api.js b/bucky/app/api.js index a6aa83f..45dde3f 100644 --- a/bucky/app/api.js +++ b/bucky/app/api.js @@ -38,7 +38,9 @@ function route (app){ middleware.ensureAuthenticated, bucky.ensureUserlist, function(req, res) { - res.json(res.users) + res.json({ + users: res.users + }) }) app.get("/api/profile/:username", middleware.ensureAuthenticated, diff --git a/public/assets/js/lib/views/users/users.js b/public/assets/js/lib/views/users/users.js index f3c0ef5..cbb0fde 100644 --- a/public/assets/js/lib/views/users/users.js +++ b/public/assets/js/lib/views/users/users.js @@ -17,43 +17,33 @@ var UsersView = View.extend({ }, populate: function(data){ - // console.log(data) - var keywordThreads = {} - data.threadGroups.forEach(kw => { - keywordThreads[kw.keyword] = kw - }) - data.keywords - .map(a => [parseInt((keywordThreads[a.keyword] || {})['sum(`viewed`)']) || 0, a]) - .sort((b,a) => cmp(a[0], b[0])) - .map(a => a[1]) - .forEach(keyword => { - var thread = keywordThreads[keyword.keyword.toLowerCase()] || { - title: '', - } - // { - // keyword: "warez", - // sum(`viewed`): "498", - // id: 701, - // title: "EMS SYNTHI PLUG FOR MAC", - // lastmodified: 1192401724 - // }, - // console.log(keyword, thread) - var viewed = thread['sum(`viewed`)'] - var views = viewed ? hush_views(viewed) : ['',''] - var threadCountNum = thread['count(*)'] - var threadCount = threadCountNum ? hush_threads(threadCountNum) : ['',''] - var dot = privacy_dot(thread.privacy) - var datetime = verbose_date(keyword.createdate) + console.log(data) + // var keywordThreads = {} + // data.threadGroups.forEach(kw => { + // keywordThreads[kw.keyword] = kw + // }) + data.users + // .map(a => [parseInt((keywordThreads[a.keyword] || {})['sum(`viewed`)']) || 0, a]) + // .sort((b,a) => cmp(a[0], b[0])) + // .map(a => a[1]) + .map(user => { + // var user = users[user.username.toLowerCase()] || return + // var viewed = thread['sum(`viewed`)'] + // var views = viewed ? hush_views(viewed) : ['',''] + // var threadCountNum = thread['count(*)'] + // var threadCount = threadCountNum ? hush_threads(threadCountNum) : ['',''] + // "id", "username", "realname", "firstseen", "lastseen", + // "location", "website", "avatar", + var create_datetime = verbose_date(keyword.createdate) var age = get_age(thread.lastmodified) var id = thread.id + get_revision(thread) var t = this.template .replace(/{{keyword}}/g, sanitizeHTML(keyword.keyword)) .replace(/{{id}}/g, id) .replace(/{{username}}/g, keyword.username) - .replace(/{{privacy_dot}}/g, dot) .replace(/{{title}}/g, thread.title) - .replace(/{{date}}/g, datetime[0]) - .replace(/{{time}}/g, datetime[1]) + .replace(/{{create_date}}/g, create_datetime[0]) + .replace(/{{create_time}}/g, create_datetime[1]) .replace(/{{date_class}}/g, carbon_date(thread.lastmodified) ) .replace(/{{views}}/g, views[1]) .replace(/{{threadcount}}/, threadCount[1]) -- cgit v1.2.3-70-g09d2 From d3a31c89081f7d2d268c53fef64c502407ef42bb Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sat, 4 Apr 2020 21:44:26 +0200 Subject: user list --- bucky/app/api.js | 7 +++- bucky/app/bucky.js | 45 +++++++++++++++++++++ bucky/app/pages.js | 8 +++- bucky/db/index.js | 11 ++++- public/assets/js/lib/router.js | 6 +++ public/assets/js/lib/views/users/users.js | 55 +++++++++++++++++-------- views/pages/users.ejs | 67 ++++++++++++++++++++++++++++--- 7 files changed, 173 insertions(+), 26 deletions(-) (limited to 'public/assets/js/lib') diff --git a/bucky/app/api.js b/bucky/app/api.js index 45dde3f..11ced51 100644 --- a/bucky/app/api.js +++ b/bucky/app/api.js @@ -37,9 +37,14 @@ function route (app){ app.get("/api/users", middleware.ensureAuthenticated, bucky.ensureUserlist, + bucky.ensureUserThreadCounts, + bucky.ensureUserFileCounts, + bucky.ensureUserCommentCounts, + bucky.ensureUserStatistics, function(req, res) { res.json({ - users: res.users + users: res.users, + userStats: res.userStats, }) }) app.get("/api/profile/:username", diff --git a/bucky/app/bucky.js b/bucky/app/bucky.js index 8ff0b15..74caa66 100644 --- a/bucky/app/bucky.js +++ b/bucky/app/bucky.js @@ -579,6 +579,51 @@ var bucky = module.exports = { next() }) }, + ensureUserThreadCounts: function (req, res, next) { + db.getUserThreadCounts().then(function(counts){ + if (!counts) { + return res.sendStatus(404) + } + res.threadCounts = counts + next() + }) + }, + ensureUserCommentCounts: function (req, res, next) { + db.getUserCommentCounts().then(function(counts){ + if (!counts) { + return res.sendStatus(404) + } + res.commentCounts = counts + next() + }) + }, + ensureUserFileCounts: function (req, res, next) { + db.getUserFileCounts().then(function(counts){ + if (!counts) { + return res.sendStatus(404) + } + res.fileCounts = counts + next() + }) + }, + ensureUserStatistics: function (req, res, next) { + var stats = {} + res.threadCounts.forEach(function(user){ + stats[user.username] = stats[user.username] || {} + stats[user.username].threads = user.count + }) + res.commentCounts.forEach(function(user){ + stats[user.username] = stats[user.username] || {} + stats[user.username].comments = user.count + }) + res.fileCounts.forEach(function(user){ + stats[user.username] = stats[user.username] || {} + stats[user.username].files = user.count + stats[user.username].fileSize = user.size + }) + res.userStats = stats + next() + }, sanitizeUser: function(req, res, next) { res.user = util.sanitizeUser(res.user) next() diff --git a/bucky/app/pages.js b/bucky/app/pages.js index b007742..5d8551e 100644 --- a/bucky/app/pages.js +++ b/bucky/app/pages.js @@ -76,8 +76,12 @@ function route (app){ app.get("/users", middleware.ensureAuthenticated, function(req, res){ - res.render("pages/users", { - }) + res.render("pages/users", {}) + }) + app.get("/users/all", + middleware.ensureAuthenticated, + function(req, res){ + res.render("pages/users", {}) }) app.get("/search/", diff --git a/bucky/db/index.js b/bucky/db/index.js index 53e36dd..312ca13 100644 --- a/bucky/db/index.js +++ b/bucky/db/index.js @@ -55,7 +55,7 @@ db.createUser = function(data){ } db.getUsers = function () { return User.query(function(qb){ - qb.orderBy("username", "desc") + qb.orderBy("username", "asc") }).fetchAll({ columns: [ "id", "username", "realname", "firstseen", "lastseen", @@ -148,6 +148,15 @@ db.getThreadUsers = function(thread_id){ db.getUserThreadIds = function(user_id){ return ThreadUser.query("where", "user_id", "=", user_id).fetch() } +db.getUserThreadCounts = function(ids){ + return knex.column('username').count('* as count').select().from('threads').groupBy('username') +} +db.getUserCommentCounts = function(ids){ + return knex.column('username').count('* as count').select().from('comments').groupBy('username') +} +db.getUserFileCounts = function(ids){ + return knex.column('username').sum('size as size').count('* as count').select().from('files').groupBy('username') +} /* FILES */ diff --git a/public/assets/js/lib/router.js b/public/assets/js/lib/router.js index f856283..ebdfa78 100644 --- a/public/assets/js/lib/router.js +++ b/public/assets/js/lib/router.js @@ -23,6 +23,7 @@ var SiteRouter = Router.extend({ "/mail/read/:id": 'message', "/mail/reply/:id": 'compose', "/users": 'users', + "/users/all": 'usersAll', "/profile": 'profile', "/profile/:username": 'profile', "/profile/:username/edit": 'editProfile', @@ -90,6 +91,11 @@ var SiteRouter = Router.extend({ app.view = new UsersView () app.view.load() }, + + usersAll: function(username){ + app.view = new UsersView ({ all: true }) + app.view.load() + }, profile: function(username){ app.view = new ProfileView () diff --git a/public/assets/js/lib/views/users/users.js b/public/assets/js/lib/views/users/users.js index cbb0fde..a45123d 100644 --- a/public/assets/js/lib/views/users/users.js +++ b/public/assets/js/lib/views/users/users.js @@ -1,6 +1,6 @@ var UsersView = View.extend({ - el: "#users_list", + el: "#user_list", events: { }, @@ -8,8 +8,15 @@ var UsersView = View.extend({ action: "/api/users", initialize: function(opt){ + opt = opt || {} + this.showAll = !!opt.all this.template = this.$(".template").html() this.form = new NewKeywordForm ({ parent: this }) + if (!this.showAll) { + $('.all_link').attr('href', '/users/all').html('Show all users') + } else { + $('.all_link').attr('href', '/users').html('Show active users') + } }, load: function(){ @@ -22,6 +29,8 @@ var UsersView = View.extend({ // data.threadGroups.forEach(kw => { // keywordThreads[kw.keyword] = kw // }) + var showAll = this.showAll + var userStats = data.userStats data.users // .map(a => [parseInt((keywordThreads[a.keyword] || {})['sum(`viewed`)']) || 0, a]) // .sort((b,a) => cmp(a[0], b[0])) @@ -34,31 +43,45 @@ var UsersView = View.extend({ // var threadCount = threadCountNum ? hush_threads(threadCountNum) : ['',''] // "id", "username", "realname", "firstseen", "lastseen", // "location", "website", "avatar", - var create_datetime = verbose_date(keyword.createdate) - var age = get_age(thread.lastmodified) - var id = thread.id + get_revision(thread) + console.log(user) + var stats = userStats[user.username] || {} + console.log(stats) + if (!showAll && !stats.threads && !stats.files && !stats.comments) { + return + } + var threadCount = stats.threads ? hush_threads(stats.threads) : ['',''] + var fileCount = stats.files ? hush_null(stats.files, 'f') : ['',''] + var commentCount = stats.comments ? hush_null(stats.comments, 'c') : ['',''] + var firstseen_datetime = verbose_date(user.firstseen) + var lastseen = get_age(user.lastseen) var t = this.template - .replace(/{{keyword}}/g, sanitizeHTML(keyword.keyword)) - .replace(/{{id}}/g, id) - .replace(/{{username}}/g, keyword.username) - .replace(/{{title}}/g, thread.title) - .replace(/{{create_date}}/g, create_datetime[0]) - .replace(/{{create_time}}/g, create_datetime[1]) - .replace(/{{date_class}}/g, carbon_date(thread.lastmodified) ) - .replace(/{{views}}/g, views[1]) + .replace(/{{username}}/g, sanitizeHTML(user.username)) + .replace(/{{id}}/g, user.id) + .replace(/{{realname}}/g, sanitizeHTML(user.realname)) + .replace(/{{firstseen_date}}/g, firstseen_datetime[0]) + .replace(/{{firstseen_time}}/g, firstseen_datetime[1]) + .replace(/{{firstseen_date_class}}/g, carbon_date(user.firstseen) ) + .replace(/{{lastseen}}/g, lastseen ) + .replace(/{{lastseen_date_class}}/g, carbon_date(lastseen) ) .replace(/{{threadcount}}/, threadCount[1]) .replace(/{{threadcount_class}}/, threadCount[0]) + .replace(/{{filecount}}/, fileCount[1]) + .replace(/{{filecount_class}}/, fileCount[0]) + .replace(/{{commentcount}}/, commentCount[1]) + .replace(/{{commentcount_class}}/, commentCount[0]) // .replace(/{{comments}}/g, comments[1]) // .replace(/{{files}}/g, files[1]) // .replace(/{{size}}/g, size[1] ) - .replace(/{{views_class}}/g, views[0]) // .replace(/{{comments_class}}/g, comments[0]) // .replace(/{{files_class}}/g, files[0]) // .replace(/{{show_files}}/g, thread.file_count == 0 ? "hidden" : "") // .replace(/{{size_class}}/g, size[0] ) - .replace(/{{color}}/g, thread.color || "blue" ) - - this.$el.append(t) + // .replace(/{{color}}/g, thread.color || "blue" ) + var $t = $(t) + if (!user.firstseen) { + $t.find('.date').html('') + } + this.$el.append($t) }) $("body").removeClass('loading') }, diff --git a/views/pages/users.ejs b/views/pages/users.ejs index f18b254..3a3fdda 100644 --- a/views/pages/users.ejs +++ b/views/pages/users.ejs @@ -1,6 +1,8 @@ <% include ../partials/header %> -
+
+ +
@@ -10,16 +12,22 @@
·
-
- member since {{date}} {{time}} +
+ {{realname}} +
+
+ joined {{firstseen_date}} {{firstseen_time}}
-
+
+ seen {{lastseen}} ago +
+
{{threadcount}}
-
+
{{filecount}}
-
+
{{commentcount}}
@@ -28,3 +36,50 @@
<% include ../partials/footer %> + + -- cgit v1.2.3-70-g09d2 From 3d8bf4ef32eb24fc2e9732ab806cbf7914c0a709 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sat, 4 Apr 2020 21:56:52 +0200 Subject: userlist. adding avatars --- public/assets/js/lib/views/users/users.js | 4 ++++ views/pages/keywords.ejs | 6 ++---- views/pages/users.ejs | 10 +++++++++- views/partials/threads.ejs | 1 + 4 files changed, 16 insertions(+), 5 deletions(-) (limited to 'public/assets/js/lib') diff --git a/public/assets/js/lib/views/users/users.js b/public/assets/js/lib/views/users/users.js index a45123d..d512e9a 100644 --- a/public/assets/js/lib/views/users/users.js +++ b/public/assets/js/lib/views/users/users.js @@ -54,6 +54,7 @@ var UsersView = View.extend({ var commentCount = stats.comments ? hush_null(stats.comments, 'c') : ['',''] var firstseen_datetime = verbose_date(user.firstseen) var lastseen = get_age(user.lastseen) + var avatar = user.avatar var t = this.template .replace(/{{username}}/g, sanitizeHTML(user.username)) .replace(/{{id}}/g, user.id) @@ -81,6 +82,9 @@ var UsersView = View.extend({ if (!user.firstseen) { $t.find('.date').html('') } + if (!user.avatar) { + $t.find('.avatar').addClass('hidden') + } this.$el.append($t) }) $("body").removeClass('loading') diff --git a/views/pages/keywords.ejs b/views/pages/keywords.ejs index 8f4ebf2..eca35fb 100644 --- a/views/pages/keywords.ejs +++ b/views/pages/keywords.ejs @@ -1,15 +1,13 @@ <% include ../partials/header %>
- Bucky + Index · - users + Users · Inbox · Profile - · -
diff --git a/views/pages/users.ejs b/views/pages/users.ejs index 97a3731..778a9b8 100644 --- a/views/pages/users.ejs +++ b/views/pages/users.ejs @@ -1,7 +1,7 @@ <% include ../partials/header %>
- Bucky + Index · Keywords · @@ -16,6 +16,7 @@
-- cgit v1.2.3-70-g09d2 From c77da863f6bb192e4685d3d2c3d8ef6a54033f85 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sun, 5 Apr 2020 15:02:56 +0200 Subject: profi fixes --- public/assets/js/lib/views/users/users.js | 3 ++- views/pages/users.ejs | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'public/assets/js/lib') diff --git a/public/assets/js/lib/views/users/users.js b/public/assets/js/lib/views/users/users.js index cabf77c..cebc6f9 100644 --- a/public/assets/js/lib/views/users/users.js +++ b/public/assets/js/lib/views/users/users.js @@ -53,11 +53,12 @@ var UsersView = View.extend({ var commentCount = stats.comments ? hush_null(stats.comments, 'c') : ['',''] var firstseen_datetime = verbose_date(user.firstseen) var lastseen = get_age(user.lastseen) - var avatar = "https://s3.amazonaws.com/i.asdf.us/bucky/profile/" + user.username + ".jpg" + var avatar = profile_image(user.username) var t = this.template .replace(/{{username}}/g, sanitizeHTML(user.username)) .replace(/{{id}}/g, user.id) .replace(/{{avatar}}/g, user.avatar) + .replace(/{{location}}/g, user.location) .replace(/{{realname}}/g, sanitizeHTML(user.realname)) .replace(/{{firstseen_date}}/g, firstseen_datetime[0]) .replace(/{{firstseen_time}}/g, firstseen_datetime[1]) diff --git a/views/pages/users.ejs b/views/pages/users.ejs index bc8684f..2c45321 100644 --- a/views/pages/users.ejs +++ b/views/pages/users.ejs @@ -23,6 +23,9 @@
{{realname}}
+
+ {{location}} +
joined {{firstseen_date}} {{firstseen_time}}
@@ -48,7 +51,7 @@ -- cgit v1.2.3-70-g09d2