Add in-line ban capabilities

Anyone with the ability to create bans can now do so via the drop down
menu on all posts.

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
2022-06-23 22:27:26 -07:00
parent 1e61522f7a
commit 647aedfc67
4 changed files with 53 additions and 12 deletions

View File

@@ -0,0 +1,25 @@
function openBanWindow(e, postElement) {
e.preventDefault();
let banUrl = $(postElement).attr("data-ban-url");
if (window.top.banWindow) {
window.top.banWindow.close();
}
window.top.banWindow = new WinBox("New ban", {
url: banUrl,
x: "center",
y: "center",
root: document.body,
onclose: function (force) {
window.top.banWindow = null;
}
});
}
if (typeof window.menuItemFactories !== "undefined") {
window.menuItemFactories.push(
(postElement) => $("<a>")
.text("Ban")
.attr("href", "#")
.on("click", (e) => { return openBanWindow(e, postElement); })
)
}

View File

@@ -31,18 +31,17 @@ function closeMenu(e) {
function openMenu(e) {
e.preventDefault();
let sender = e.target;
let reportButton = $("<a>")
.text("Report")
.attr("href", "#")
.on("click", (e) => { return openReportWindow(e, $(sender.parentElement)); });
let menuList = $("<ul></ul>")
.append($("<lh><strong>Actions</strong></lh>").addClass("post_menu_item"))
.append(
$('<li></li>')
.addClass("post_menu_item")
.append(reportButton)
)
.addClass("post_menu_items");
window.menuItemFactories.forEach(factory => {
item = factory(sender.parentElement);
menuList.append(
$("<li></li>")
.addClass("post_menu_item")
.append(item)
);
});
let rect = sender.getBoundingClientRect();
let menu = $("<div></div>")
.addClass("post_menu")
@@ -62,7 +61,7 @@ function openReportWindow(e, postElement) {
window.top.reportWindow.close();
}
//let postId = sender.parentElement.getAttribute("id").substring(1);
let reportUrl = postElement.attr("data-report-url");
let reportUrl = $(postElement).attr("data-report-url");
window.reportWindow = new WinBox("New Report", {
url: reportUrl,
modal: true,
@@ -74,8 +73,16 @@ function openReportWindow(e, postElement) {
function onLoad(e) {
window.reportWindow = null;
window.menuItemFactories.push(
(postElement) =>
$("<a>")
.text("Report")
.attr("href", "#")
.on("click", (e) => { return openReportWindow(e, postElement); })
);
}
$(document).on("click", documentClick);
$(document).on("click", ".post_id", doQuote);
$(window).on("load", onLoad);
$(window).on("load", onLoad);
window.menuItemFactories = [];

View File

@@ -11,6 +11,9 @@
<script src="{% static 'board/jquery.js' %}"></script>
<script src="{% static 'board/winbox.bundle.js' %}"></script>
<script src="{% static 'board/post.js' %}"></script>
{% if perms.board.create_ban %}
<script src="{% static 'board/ban_menu.js' %}"></script>
{% endif %}
{% block extrajs %}{% endblock %}
</head>
<body>

View File

@@ -1,6 +1,12 @@
{% load post_body %}
{% load l10n %}
<div id="p{{post.id}}" data-report-url="{% url 'board:report_form' board.url post.id %}">
<div
id="p{{post.id}}"
data-report-url="{% url 'board:report_form' board.url post.id %}"
{% if perms.board.create_ban %}
data-ban-url="{% url 'board:ban_create' board.url post.id %}"
{% endif %}
>
{# Image #}
{% if post.thumbnail %}
{# Image info #}