From 6a59517efa415feb8ab1a702db661b1b65fd9235 Mon Sep 17 00:00:00 2001 From: Aevann Date: Fri, 30 Jun 2023 01:40:36 +0300 Subject: [PATCH] do this https://rdrama.net/h/changelog/post/165657/changelog-megathread-marseynotes/4430937#context --- files/assets/js/comments+post_listing.js | 26 +++++++++++++++++++----- files/classes/user.py | 2 +- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/files/assets/js/comments+post_listing.js b/files/assets/js/comments+post_listing.js index 20055c302..07a106373 100644 --- a/files/assets/js/comments+post_listing.js +++ b/files/assets/js/comments+post_listing.js @@ -74,16 +74,15 @@ function bet_vote(t, oid, kind) { const popClickBadgeTemplateDOM = document.createElement("IMG"); popClickBadgeTemplateDOM.classList.add("pop-badge"); popClickBadgeTemplateDOM.loading = "lazy"; -popClickBadgeTemplateDOM.alt = "badge"; const popover = document.getElementById("popover"); let pop_instance let is_popover_visible = false -document.addEventListener("click", function() { +document.addEventListener("click", function(e) { - if (is_popover_visible && document.getSelection().type != 'Range') { + if (is_popover_visible && document.getSelection().type != 'Range' && !e.target.classList.contains('pop-badge')) { pop_instance.hide() } @@ -97,8 +96,10 @@ document.addEventListener("click", function() { badgesDOM.innerHTML = ""; for (const badge of author["badges"]) { const badgeDOM = popClickBadgeTemplateDOM.cloneNode(); - badgeDOM.src = badge + "?b=10"; - + badgeDOM.src = badge[0]; + badgeDOM.title = badge[1]; + if (badge[2]) + badgeDOM.alt = badge[2] badgesDOM.append(badgeDOM); } } @@ -132,5 +133,20 @@ document.addEventListener("click", function() { }); pop_instance.show() is_popover_visible = true + + const generated_popovers = document.getElementsByClassName("popover") + generated_popover = generated_popovers[generated_popovers.length-1] + + const badge_els = generated_popover.getElementsByClassName('pop-badge'); + for (badge_el of badge_els) { + badge_el.setAttribute("data-bs-toggle", "tooltip"); + badge_el.setAttribute("data-bs-placement", "bottom"); + if (badge_el.alt) { + const date = formatDate(new Date(badge_el.alt*1000)); + badge_el.title = badge_el.title + ' ' + date.toString(); + } + } + + bs_trigger(generated_popover) } }); diff --git a/files/classes/user.py b/files/classes/user.py index 2e55ae6ca..60cda5713 100644 --- a/files/classes/user.py +++ b/files/classes/user.py @@ -903,7 +903,7 @@ class User(Base): 'marseybux': self.marseybux, 'post_count': self.real_post_count(v), 'comment_count': self.real_comment_count(v), - 'badges': [x.path for x in self.ordered_badges], + 'badges': [[x.path, x.text, x.until] for x in self.ordered_badges], 'created_date': self.created_date, 'original_usernames': self.original_usernames_popover, }