Allow users to discard their own topics

This commit is contained in:
rubenwardy
2018-12-25 17:51:29 +00:00
parent c726f56b3e
commit 09150a4dbb
6 changed files with 63 additions and 36 deletions

View File

@@ -1,4 +1,4 @@
{% macro render_topics_table(topics, show_author=True, show_discard=False) -%}
{% macro render_topics_table(topics, show_author=True, show_discard=False, current_user=current_user) -%}
<table class="table">
<tr>
<th></th>
@@ -27,7 +27,7 @@
href="{{ url_for('create_edit_package_page', author=topic.author.username, repo=topic.getRepoURL(), forums=topic.topic_id, title=topic.title, bname=topic.name) }}">
Create
</a>
{% if show_discard %}
{% if show_discard and current_user.is_authenticated and topic.checkPerm(current_user, "TOPIC_DISCARD") %}
<a class="btn btn-{% if topic.discarded %}success{% else %}danger{% endif %} topic-discard" data-tid={{ topic.topic_id }}>
{% if topic.discarded %}
Show

View File

@@ -59,7 +59,7 @@ Topics to be Added
</form>
{% from "macros/topics.html" import render_topics_table %}
{{ render_topics_table(topics, show_discard=True) }}
{{ render_topics_table(topics, show_discard=True, current_user=current_user) }}
<ul class="pagination mt-4">
<li class="page-item {% if not prev_url %}disabled{% endif %}">
@@ -83,35 +83,5 @@ Topics to be Added
<script>
var csrf_token = "{{ csrf_token() }}";
</script>
<script>
$(".topic-discard").click(function() {
var ele = $(this);
var tid = ele.attr("data-tid");
var discard = !ele.parent().parent().hasClass("discardtopic");
fetch(new Request("{{ url_for('topic_set_discard') }}?tid=" + tid +
"&discard=" + (discard ? "true" : "false"), {
method: "post",
credentials: "same-origin",
headers: {
"Accept": "application/json",
"X-CSRFToken": csrf_token,
},
})).then(function(response) {
response.text().then(function(txt) {
console.log(JSON.parse(txt));
if (JSON.parse(txt).discarded) {
ele.parent().parent().addClass("discardtopic");
ele.removeClass("btn-danger");
ele.addClass("btn-success");
ele.text("Show");
} else {
ele.parent().parent().removeClass("discardtopic");
ele.removeClass("btn-success");
ele.addClass("btn-danger");
ele.text("Discard");
}
}).catch(console.log)
}).catch(console.log)
});
</script>
<script src="/static/topic_discard.js"></script>
{% endblock %}

View File

@@ -134,11 +134,20 @@
<p class="card-body">
List of your forum topics which do not have a matching package.
Topics with a strikethrough have beened marked as discarded.
</p>
{% from "macros/topics.html" import render_topics_table %}
{{ render_topics_table(topics_to_add, show_author=False) }}
{{ render_topics_table(topics_to_add, show_author=False, show_discard=True, current_user=current_user) }}
</div>
{% endif %}
{% endblock %}
{% block scriptextra %}
<script>
var csrf_token = "{{ csrf_token() }}";
</script>
<script src="/static/topic_discard.js"></script>
{% endblock %}