From a34b37f52fac694a44d1955e43e2da6a8b7dc9d5 Mon Sep 17 00:00:00 2001 From: deing Date: Tue, 6 Aug 2019 18:12:22 +0200 Subject: [PATCH] Add warning when replying to old topics/comments Currently the threshold is set at 7 days. So far, only about 1% of comment replies and 2% of topic replies are replying to posts older than that. --- .../static/js/behaviors/comment-reply-button.js | 17 +++++++++++++++++ tildes/tildes/templates/topic.jinja2 | 6 ++++++ tildes/tildes/views/topic.py | 4 ++++ 3 files changed, 27 insertions(+) diff --git a/tildes/static/js/behaviors/comment-reply-button.js b/tildes/static/js/behaviors/comment-reply-button.js index 0f94ad4..e0af3fb 100644 --- a/tildes/static/js/behaviors/comment-reply-button.js +++ b/tildes/static/js/behaviors/comment-reply-button.js @@ -79,6 +79,23 @@ $.onmount("[data-js-comment-reply-button]", function() { } } + var parentCommentTimestamp = new Date( + $parentComment + .find(".comment-posted-time") + .first() + .attr("datetime") + ); + + // add a warning if the comment being replied to is over a week old + if (Date.now() - parentCommentTimestamp > 1000 * 3600 * 24 * 7) { + var warningDiv = document.createElement("div"); + warningDiv.classList.add("toast", "toast-minor", "toast-warning"); + warningDiv.innerHTML = + "

The comment you're replying to is over a week old.

" + + "

(Replying to old comments is fine, just making sure it's intentional)

"; + clone.querySelector("form").prepend(warningDiv); + } + // update Intercooler so it knows about this new form Intercooler.processNodes(clone); diff --git a/tildes/tildes/templates/topic.jinja2 b/tildes/tildes/templates/topic.jinja2 index 73c4697..985a8c6 100644 --- a/tildes/tildes/templates/topic.jinja2 +++ b/tildes/tildes/templates/topic.jinja2 @@ -213,6 +213,12 @@ data-js-prevent-double-submit data-js-confirm-leave-page-unsaved > + {% if old_topic_warning %} +
+

This topic is over a week old.

+

(Replying to old topics is fine, just making sure it's intentional)

+
+ {% endif %} {{ markdown_textarea() }} diff --git a/tildes/tildes/views/topic.py b/tildes/tildes/views/topic.py index 7afe9f2..d41c6fe 100644 --- a/tildes/tildes/views/topic.py +++ b/tildes/tildes/views/topic.py @@ -6,6 +6,7 @@ from collections import namedtuple from typing import Any, Optional, Union +from datetime import timedelta from marshmallow import missing, ValidationError from marshmallow.fields import Boolean, String from pyramid.httpexceptions import HTTPFound @@ -374,6 +375,8 @@ def get_topic(request: Request, comment_order: CommentTreeSortOption) -> dict: tree.uncollapse_new_comments(topic.last_visit_time) tree.finalize_collapsing_maximized() + old_topic_warning = topic.age > timedelta(days=7) + return { "topic": topic, "log": log, @@ -381,6 +384,7 @@ def get_topic(request: Request, comment_order: CommentTreeSortOption) -> dict: "comment_order": comment_order, "comment_order_options": CommentTreeSortOption, "comment_label_options": CommentLabelOption, + "old_topic_warning": old_topic_warning, }