improve ban modal and add chud modal
parent
7b60190b0d
commit
87d5a0de46
|
@ -6040,6 +6040,7 @@ g {
|
||||||
.fa-syringe:before{content:"\f48e"}
|
.fa-syringe:before{content:"\f48e"}
|
||||||
.fa-spider-web:before{content:"\f719"}
|
.fa-spider-web:before{content:"\f719"}
|
||||||
.fa-coffin-cross:before{content:"\e051"}
|
.fa-coffin-cross:before{content:"\e051"}
|
||||||
|
.fa-face-sleeping:before{content:"\e38d"}
|
||||||
|
|
||||||
|
|
||||||
.pronouns {
|
.pronouns {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
function banModal(link, id, name) {
|
function banModal(link, id, name, fullname, cls) {
|
||||||
document.getElementById("banModalTitle").innerHTML = `Ban @${name}`;
|
document.getElementById("banModalTitle").innerHTML = `Ban @${name}`;
|
||||||
document.getElementById("ban-modal-link").value = link;
|
document.getElementById("ban-modal-link").value = link;
|
||||||
document.getElementById("banUserButton").innerHTML = `Ban @${name}`;
|
document.getElementById("banUserButton").innerHTML = `Ban @${name}`;
|
||||||
|
@ -12,6 +12,34 @@ function banModal(link, id, name) {
|
||||||
catch(e) {console.log(e)}
|
catch(e) {console.log(e)}
|
||||||
success = xhr[0].status >= 200 && xhr[0].status < 300;
|
success = xhr[0].status >= 200 && xhr[0].status < 300;
|
||||||
showToast(success, getMessageFromJsonData(success, data));
|
showToast(success, getMessageFromJsonData(success, data));
|
||||||
|
document.getElementById(`unban-${fullname}`).classList.toggle(cls);
|
||||||
|
document.getElementById(`ban-${fullname}`).classList.toggle(cls);
|
||||||
|
document.getElementById(`unban2-${fullname}`).classList.toggle(cls);
|
||||||
|
document.getElementById(`ban2-${fullname}`).classList.toggle(cls);
|
||||||
|
};
|
||||||
|
|
||||||
|
xhr[0].send(xhr[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function chudModal(link, id, name, fullname, cls) {
|
||||||
|
document.getElementById("chudModalTitle").innerHTML = `Chud @${name}`;
|
||||||
|
document.getElementById("chud-modal-link").value = link;
|
||||||
|
document.getElementById("chudUserButton").innerHTML = `Chud @${name}`;
|
||||||
|
|
||||||
|
document.getElementById("chudUserButton").onclick = function() {
|
||||||
|
let form = new FormData(document.getElementById("chudModalForm"));
|
||||||
|
const xhr = createXhrWithFormKey(`/agendaposter/${id}?form`, "POST", form);
|
||||||
|
xhr[0].onload = function() {
|
||||||
|
let data
|
||||||
|
try {data = JSON.parse(xhr[0].response)}
|
||||||
|
catch(e) {console.log(e)}
|
||||||
|
success = xhr[0].status >= 200 && xhr[0].status < 300;
|
||||||
|
showToast(success, getMessageFromJsonData(success, data));
|
||||||
|
document.getElementById(`unchud-${fullname}`).classList.toggle(cls);
|
||||||
|
document.getElementById(`chud-${fullname}`).classList.toggle(cls);
|
||||||
|
document.getElementById(`unchud2-${fullname}`).classList.toggle(cls);
|
||||||
|
document.getElementById(`chud2-${fullname}`).classList.toggle(cls);
|
||||||
};
|
};
|
||||||
|
|
||||||
xhr[0].send(xhr[1]);
|
xhr[0].send(xhr[1]);
|
||||||
|
|
|
@ -43,6 +43,7 @@ class Comment(Base):
|
||||||
is_banned = Column(Boolean, default=False)
|
is_banned = Column(Boolean, default=False)
|
||||||
ghost = Column(Boolean, default=False)
|
ghost = Column(Boolean, default=False)
|
||||||
bannedfor = Column(String)
|
bannedfor = Column(String)
|
||||||
|
chuddedfor = Column(String)
|
||||||
distinguish_level = Column(Integer, default=0)
|
distinguish_level = Column(Integer, default=0)
|
||||||
deleted_utc = Column(Integer, default=0)
|
deleted_utc = Column(Integer, default=0)
|
||||||
is_approved = Column(Integer, ForeignKey("users.id"))
|
is_approved = Column(Integer, ForeignKey("users.id"))
|
||||||
|
|
|
@ -29,6 +29,7 @@ class Submission(Base):
|
||||||
thumburl = Column(String)
|
thumburl = Column(String)
|
||||||
is_banned = Column(Boolean, default=False)
|
is_banned = Column(Boolean, default=False)
|
||||||
bannedfor = Column(String)
|
bannedfor = Column(String)
|
||||||
|
chuddedfor = Column(String)
|
||||||
ghost = Column(Boolean, default=False)
|
ghost = Column(Boolean, default=False)
|
||||||
views = Column(Integer, default=0)
|
views = Column(Integer, default=0)
|
||||||
deleted_utc = Column(Integer, default=0)
|
deleted_utc = Column(Integer, default=0)
|
||||||
|
|
|
@ -806,43 +806,6 @@ def admin_removed_comments(v):
|
||||||
next_exists=next_exists
|
next_exists=next_exists
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@app.post("/agendaposter/<user_id>")
|
|
||||||
@admin_level_required(PERMS['USER_AGENDAPOSTER'])
|
|
||||||
def agendaposter(user_id, v):
|
|
||||||
user = get_account(user_id)
|
|
||||||
|
|
||||||
days = request.values.get("days")
|
|
||||||
|
|
||||||
if days:
|
|
||||||
expiry = int(time.time() + float(days)*60*60*24)
|
|
||||||
else: expiry = 1
|
|
||||||
|
|
||||||
user.agendaposter = expiry
|
|
||||||
g.db.add(user)
|
|
||||||
|
|
||||||
if days:
|
|
||||||
days_txt = str(days).split('.0')[0]
|
|
||||||
note = f"for {days_txt} days"
|
|
||||||
else: note = "permanently"
|
|
||||||
|
|
||||||
ma = ModAction(
|
|
||||||
kind="agendaposter",
|
|
||||||
user_id=v.id,
|
|
||||||
target_user_id=user.id,
|
|
||||||
_note=note
|
|
||||||
)
|
|
||||||
g.db.add(ma)
|
|
||||||
|
|
||||||
badge_grant(user=user, badge_id=28)
|
|
||||||
|
|
||||||
send_repeatable_notification(user.id, f"@{v.username} (Admin) has marked you as a chud ({note}).")
|
|
||||||
|
|
||||||
|
|
||||||
return redirect(user.url)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/unagendaposter/<user_id>")
|
@app.post("/unagendaposter/<user_id>")
|
||||||
@admin_level_required(PERMS['USER_AGENDAPOSTER'])
|
@admin_level_required(PERMS['USER_AGENDAPOSTER'])
|
||||||
def unagendaposter(user_id, v):
|
def unagendaposter(user_id, v):
|
||||||
|
@ -1031,6 +994,67 @@ def ban_user(user_id, v):
|
||||||
else: return {"message": f"@{user.username} has been banned!"}
|
else: return {"message": f"@{user.username} has been banned!"}
|
||||||
|
|
||||||
|
|
||||||
|
@app.post("/agendaposter/<user_id>")
|
||||||
|
@admin_level_required(PERMS['USER_AGENDAPOSTER'])
|
||||||
|
def agendaposter(user_id, v):
|
||||||
|
user = get_account(user_id)
|
||||||
|
|
||||||
|
if user.admin_level > v.admin_level:
|
||||||
|
abort(403)
|
||||||
|
|
||||||
|
days = 0.0
|
||||||
|
try:
|
||||||
|
days = float(request.values.get("days"))
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
reason = request.values.get("reason", "").strip()
|
||||||
|
if reason and reason.startswith("/") and '\\' not in reason:
|
||||||
|
reason = f'<a href="{reason.split()[0]}">{reason}</a>'
|
||||||
|
|
||||||
|
user.agendaposter = int(time.time()) + (days * 86400)
|
||||||
|
g.db.add(user)
|
||||||
|
|
||||||
|
duration = "permanently"
|
||||||
|
if days:
|
||||||
|
days_txt = str(days).split('.0')[0]
|
||||||
|
duration = f"for {days_txt} day"
|
||||||
|
if days != 1: duration += "s"
|
||||||
|
if reason: text = f"@{v.username} (Admin) has chudded you for **{days_txt}** days for the following reason:\n\n> {reason}"
|
||||||
|
else: text = f"@{v.username} (Admin) has chudded you for **{days_txt}** days."
|
||||||
|
else:
|
||||||
|
if reason: text = f"@{v.username} (Admin) has chudded you permanently for the following reason:\n\n> {reason}"
|
||||||
|
else: text = f"@{v.username} (Admin) has chudded you permanently."
|
||||||
|
|
||||||
|
send_repeatable_notification(user.id, text)
|
||||||
|
|
||||||
|
note = f'reason: "{reason}", duration: {duration}'
|
||||||
|
ma=ModAction(
|
||||||
|
kind="agendaposter",
|
||||||
|
user_id=v.id,
|
||||||
|
target_user_id=user.id,
|
||||||
|
_note=note
|
||||||
|
)
|
||||||
|
g.db.add(ma)
|
||||||
|
|
||||||
|
if 'reason' in request.values:
|
||||||
|
if request.values["reason"].startswith("/post/"):
|
||||||
|
try: post = int(request.values["reason"].split("/post/")[1].split(None, 1)[0])
|
||||||
|
except: abort(400)
|
||||||
|
post = get_post(post)
|
||||||
|
post.chuddedfor = f'{duration} by @{v.username}'
|
||||||
|
g.db.add(post)
|
||||||
|
elif request.values["reason"].startswith("/comment/"):
|
||||||
|
try: comment = int(request.values["reason"].split("/comment/")[1].split(None, 1)[0])
|
||||||
|
except: abort(400)
|
||||||
|
comment = get_comment(comment)
|
||||||
|
comment.chuddedfor = f'{duration} by @{v.username}'
|
||||||
|
g.db.add(comment)
|
||||||
|
|
||||||
|
if 'redir' in request.values: return redirect(user.url)
|
||||||
|
else: return {"message": f"@{user.username} has been chudded!"}
|
||||||
|
|
||||||
|
|
||||||
@app.post("/unban_user/<user_id>")
|
@app.post("/unban_user/<user_id>")
|
||||||
@limiter.limit("1/second;30/minute;200/hour;1000/day")
|
@limiter.limit("1/second;30/minute;200/hour;1000/day")
|
||||||
@admin_level_required(PERMS['USER_BAN'])
|
@admin_level_required(PERMS['USER_BAN'])
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<div class="modal fade" id="banModal" tabindex="-1" role="dialog" aria-labelledby="banModalTitle" aria-hidden="true">
|
<div class="modal fade" id="banModal" tabindex="-1" role="dialog" aria-labelledby="banModalTitle" aria-hidden="true">
|
||||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
|
@ -17,7 +16,7 @@
|
||||||
<label for="ban-modal-link">Public ban reason (optional)</label>
|
<label for="ban-modal-link">Public ban reason (optional)</label>
|
||||||
<textarea autocomplete="off" maxlength="256" name="reason" form="banModalForm" class="form-control" id="ban-modal-link" aria-label="With textarea" placeholder="Enter reason"></textarea>
|
<textarea autocomplete="off" maxlength="256" name="reason" form="banModalForm" class="form-control" id="ban-modal-link" aria-label="With textarea" placeholder="Enter reason"></textarea>
|
||||||
|
|
||||||
<label for="days" class="mt-3">Duration days</label>
|
<label for="days" class="mt-3">Days</label>
|
||||||
<input autocomplete="off" type="number" step="any" name="days" id="days" class="form-control" placeholder="leave blank for permanent">
|
<input autocomplete="off" type="number" step="any" name="days" id="days" class="form-control" placeholder="leave blank for permanent">
|
||||||
|
|
||||||
<div class="custom-control custom-switch mt-3">
|
<div class="custom-control custom-switch mt-3">
|
||||||
|
@ -35,4 +34,31 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="modal fade" id="chudModal" tabindex="-1" role="dialog" aria-labelledby="chudModalTitle" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header pt-3">
|
||||||
|
<h5 id="chudModalTitle"></h5>
|
||||||
|
<button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true"><i class="far fa-times"></i></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body pt-0" id="chud-modal-body">
|
||||||
|
|
||||||
|
<form id="chudModalForm">
|
||||||
|
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
||||||
|
<input type="hidden" name="reason" id="chud-modal-link">
|
||||||
|
|
||||||
|
<label for="days">Days</label>
|
||||||
|
<input autocomplete="off" type="number" step="any" name="days" id="days" class="form-control" placeholder="leave blank for permanent">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-link text-muted" data-bs-dismiss="modal">Cancel</button>
|
||||||
|
<button type="button" id="chudUserButton" class="btn btn-danger" data-bs-dismiss="modal"></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<script defer src="{{'js/ban_modal.js' | asset}}"></script>
|
<script defer src="{{'js/ban_modal.js' | asset}}"></script>
|
||||||
|
|
|
@ -134,6 +134,11 @@
|
||||||
{% if c.bannedfor %}
|
{% if c.bannedfor %}
|
||||||
<i class="fas fa-hammer-crash text-danger" data-bs-toggle="tooltip" data-bs-placement="bottom" title="User was banned for this comment {{c.bannedfor}}"></i>
|
<i class="fas fa-hammer-crash text-danger" data-bs-toggle="tooltip" data-bs-placement="bottom" title="User was banned for this comment {{c.bannedfor}}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if c.chuddedfor %}
|
||||||
|
<i class="fas fa-face-sleeping text-danger" data-bs-toggle="tooltip" data-bs-placement="bottom" title="User was chudded for this comment {{c.chuddedfor}}"></i>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if c.active_flags(v) %}<button type="button" class="btn btn-primary" style="padding:1px 5px; font-size:10px" onclick="document.getElementById('flaggers-{{c.id}}').classList.toggle('d-none')">{{c.active_flags(v)}} Report{{help.plural(c.active_flags(v))}}</button>{% endif %}
|
{% if c.active_flags(v) %}<button type="button" class="btn btn-primary" style="padding:1px 5px; font-size:10px" onclick="document.getElementById('flaggers-{{c.id}}').classList.toggle('d-none')">{{c.active_flags(v)}} Report{{help.plural(c.active_flags(v))}}</button>{% endif %}
|
||||||
{% if c.over_18 %}<span class="badge badge-danger text-small-extra mr-1">+18</span>{% endif %}
|
{% if c.over_18 %}<span class="badge badge-danger text-small-extra mr-1">+18</span>{% endif %}
|
||||||
{% if v and v.admin_level >= PERMS['USER_SHADOWBAN'] and c.author.shadowbanned %}<i class="fas fa-user-times text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title='Shadowbanned by @{{c.author.shadowbanned}} for "{{c.author.ban_reason}}"'></i>{% endif %}
|
{% if v and v.admin_level >= PERMS['USER_SHADOWBAN'] and c.author.shadowbanned %}<i class="fas fa-user-times text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title='Shadowbanned by @{{c.author.shadowbanned}} for "{{c.author.ban_reason}}"'></i>{% endif %}
|
||||||
|
@ -482,8 +487,13 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if v.admin_level >= PERMS['USER_BAN'] and v.id != c.author_id %}
|
{% if v.admin_level >= PERMS['USER_BAN'] and v.id != c.author_id %}
|
||||||
<button type="button" id="unban-{{c.id}}" class="dropdown-item list-inline-item d-none {% if c.author.is_suspended %}d-md-block{% endif %} text-success" onclick="postToastSwitch(this,'/unban_user/{{c.author_id}}','ban-{{c.id}}','unban-{{c.id}}','d-md-block')"><i class="fas fa-user-slash text-success fa-fw"></i>Unban user</button>
|
<button type="button" id="unban-{{c.fullname}}" class="dropdown-item list-inline-item d-none {% if c.author.is_suspended %}d-md-block{% endif %} text-success" onclick="postToastSwitch(this,'/unban_user/{{c.author_id}}','ban-{{c.fullname}}','unban-{{c.fullname}}','d-md-block')"><i class="fas fa-user-slash text-success fa-fw"></i>Unban user</button>
|
||||||
<button type="button" id="ban-{{c.id}}" class="dropdown-item list-inline-item d-none {% if not c.author.is_suspended %}d-md-block{% endif %} text-danger" data-bs-toggle="modal" data-bs-target="#banModal" onclick="banModal('/comment/{{c.id}}', '{{c.author.id}}', '{{c.author_name}}')"><i class="fas fa-user-slash text-danger fa-fw"></i>Ban user</button>
|
<button type="button" id="ban-{{c.fullname}}" class="dropdown-item list-inline-item d-none {% if not c.author.is_suspended %}d-md-block{% endif %} text-danger" data-bs-toggle="modal" data-bs-target="#banModal" onclick="banModal('/comment/{{c.id}}', '{{c.author.id}}', '{{c.author_name}}', '{{c.fullname}}','d-md-block')"><i class="fas fa-user-slash text-danger fa-fw"></i>Ban user</button>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if v.admin_level >= PERMS['USER_AGENDAPOSTER'] and v.id != c.author_id %}
|
||||||
|
<button type="button" id="unchud-{{c.fullname}}" class="dropdown-item list-inline-item d-none {% if c.author.agendaposter %}d-md-block{% endif %} text-success" onclick="postToastSwitch(this,'/unagendaposter/{{c.author_id}}','chud-{{c.fullname}}','unchud-{{c.fullname}}','d-md-block')"><i class="fas fa-face-sleeping text-success fa-fw"></i>Unchud user</button>
|
||||||
|
<button type="button" id="chud-{{c.fullname}}" class="dropdown-item list-inline-item d-none {% if not c.author.agendaposter %}d-md-block{% endif %} text-danger" data-bs-toggle="modal" data-bs-target="#chudModal" onclick="chudModal('/comment/{{c.id}}', '{{c.author.id}}', '{{c.author_name}}', '{{c.fullname}}','d-md-block')"><i class="fas fa-face-sleeping text-danger fa-fw"></i>Chud user</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if v.admin_level >= PERMS['APPS_MODERATION'] and c.oauth_app %}
|
{% if v.admin_level >= PERMS['APPS_MODERATION'] and c.oauth_app %}
|
||||||
|
@ -699,9 +709,15 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if v.id != c.author_id and v.admin_level >= PERMS['USER_BAN'] %}
|
{% if v.id != c.author_id and v.admin_level >= PERMS['USER_BAN'] %}
|
||||||
<button type="button" id="ban2-{{c.id}}" class="{% if c.author.is_banned %}d-none{% endif %} list-group-item text-danger" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#banModal" onclick="banModal('/comment/{{c.id}}', '{{c.author.id}}', '{{c.author_name}}')" ><i class="fas fa-user-slash text-danger fa-fw mr-2"></i>Ban user</button>
|
<button type="button" id="ban2-{{c.fullname}}" class="{% if c.author.is_banned %}d-none{% endif %} list-group-item text-danger" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#banModal" onclick="banModal('/comment/{{c.id}}', '{{c.author.id}}', '{{c.author_name}}', '{{c.fullname}}','d-none')" ><i class="fas fa-user-slash text-danger fa-fw mr-2"></i>Ban user</button>
|
||||||
<button type="button" id="unban2-{{c.id}}" class="{% if not c.author.is_banned %}d-none{% endif %} list-group-item text-success" onclick="postToastSwitch(this,'/unban_user/{{c.author_id}}','ban2-{{c.id}}','unban2-{{c.id}}','d-none')" data-bs-dismiss="modal"><i class="fas fa-user-minus fa-fw text-success mr-2"></i>Unban user</button>
|
<button type="button" id="unban2-{{c.fullname}}" class="{% if not c.author.is_banned %}d-none{% endif %} list-group-item text-success" onclick="postToastSwitch(this,'/unban_user/{{c.author_id}}','ban2-{{c.fullname}}','unban2-{{c.fullname}}','d-none')" data-bs-dismiss="modal"><i class="fas fa-user-minus fa-fw text-success mr-2"></i>Unban user</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if v.id != c.author_id and v.admin_level >= PERMS['USER_AGENDAPOSTER'] %}
|
||||||
|
<button type="button" id="chud2-{{c.fullname}}" class="{% if c.author.agendaposter %}d-none{% endif %} list-group-item text-danger" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#chudModal" onclick="chudModal('/comment/{{c.id}}', '{{c.author.id}}', '{{c.author_name}}', '{{c.fullname}}','d-none')" ><i class="fas fa-face-sleeping text-danger fa-fw mr-2"></i>Chud user</button>
|
||||||
|
<button type="button" id="unchud2-{{c.fullname}}" class="{% if not c.author.agendaposter %}d-none{% endif %} list-group-item text-success" onclick="postToastSwitch(this,'/unagendaposter/{{c.author_id}}','chud2-{{c.fullname}}','unchud2-{{c.fullname}}','d-none')" data-bs-dismiss="modal"><i class="fas fa-face-sleeping fa-fw text-success mr-2"></i>Unchud user</button>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if v.admin_level >= PERMS['POST_COMMENT_MODERATION'] %}
|
{% if v.admin_level >= PERMS['POST_COMMENT_MODERATION'] %}
|
||||||
{% if v.id != c.author.id %}
|
{% if v.id != c.author.id %}
|
||||||
<button type="button" id="remove2-{{c.id}}" class="{% if c.is_banned %}d-none{% endif %} list-group-item text-danger" onclick="removeComment(this,'{{c.id}}','approve2-{{c.id}}','remove2-{{c.id}}','d-none')" data-bs-dismiss="modal"><i class="fas fa-ban text-danger mr-2"></i>Remove</button>
|
<button type="button" id="remove2-{{c.id}}" class="{% if c.is_banned %}d-none{% endif %} list-group-item text-danger" onclick="removeComment(this,'{{c.id}}','approve2-{{c.id}}','remove2-{{c.id}}','d-none')" data-bs-dismiss="modal"><i class="fas fa-ban text-danger mr-2"></i>Remove</button>
|
||||||
|
|
|
@ -94,8 +94,13 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if v.admin_level >= PERMS['USER_BAN'] and v.id != p.author_id %}
|
{% if v.admin_level >= PERMS['USER_BAN'] and v.id != p.author_id %}
|
||||||
<button type="button" id="ban-{{p.id}}" class="dropdown-item {% if p.author.is_suspended %}d-none{% endif %} list-inline-item text-danger" id="exile-comment-{{p.id}}" data-bs-toggle="modal" data-bs-target="#banModal" onclick="banModal('/post/{{p.id}}', '{{p.author.id}}', '{{p.author_name}}')"><i class="fas fa-user-slash text-danger fa-fw"></i>Ban user</button>
|
<button type="button" id="ban-{{p.fullname}}" class="dropdown-item {% if p.author.is_suspended %}d-none{% endif %} list-inline-item text-danger" data-bs-toggle="modal" data-bs-target="#banModal" onclick="banModal('/post/{{p.id}}', '{{p.author.id}}', '{{p.author_name}}', '{{p.fullname}}','d-none')"><i class="fas fa-user-slash text-danger fa-fw"></i>Ban user</button>
|
||||||
<button type="button" id="unban-{{p.id}}" class="dropdown-item {% if not p.author.is_suspended %}d-none{% endif %} list-inline-item text-danger" id="unexile2-user-{{p.id}}" onclick="postToastSwitch(this,'/unban_user/{{p.author_id}}','ban-{{p.id}}','unban-{{p.id}}','d-none')"><i class="fas fa-user-slash"></i>Unban user</button>
|
<button type="button" id="unban-{{p.fullname}}" class="dropdown-item {% if not p.author.is_suspended %}d-none{% endif %} list-inline-item text-success" id="unexile2-user-{{p.id}}" onclick="postToastSwitch(this,'/unban_user/{{p.author_id}}','ban-{{p.fullname}}','unban-{{p.fullname}}','d-none')"><i class="fas fa-user-slash"></i>Unban user</button>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if v.admin_level >= PERMS['USER_AGENDAPOSTER'] and v.id != p.author_id %}
|
||||||
|
<button type="button" id="chud-{{p.fullname}}" class="dropdown-item {% if p.author.agendaposter %}d-none{% endif %} list-inline-item text-danger" data-bs-toggle="modal" data-bs-target="#chudModal" onclick="chudModal('/post/{{p.id}}', '{{p.author.id}}', '{{p.author_name}}', '{{p.fullname}}','d-none')"><i class="fas fa-face-sleeping text-danger fa-fw"></i>Chud user</button>
|
||||||
|
<button type="button" id="unchud-{{p.fullname}}" class="dropdown-item {% if not p.author.agendaposter %}d-none{% endif %} list-inline-item text-success" id="unexile2-user-{{p.id}}" onclick="postToastSwitch(this,'/unagendaposter/{{p.author_id}}','chud-{{p.fullname}}','unchud-{{p.fullname}}','d-none')"><i class="fas fa-face-sleeping"></i>Unchud user</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -36,10 +36,14 @@
|
||||||
<button type="button" id="unmark2-{{p.id}}" class="{% if not p.over_18 %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left text-danger" onclick="postToastSwitch(this,'/toggle_post_nsfw/{{p.id}}','mark2-{{p.id}}','unmark2-{{p.id}}','d-none')" data-bs-dismiss="modal"><i class="far fa-eye-evil text-center text-danger mr-2"></i>Unmark +18</button>
|
<button type="button" id="unmark2-{{p.id}}" class="{% if not p.over_18 %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left text-danger" onclick="postToastSwitch(this,'/toggle_post_nsfw/{{p.id}}','mark2-{{p.id}}','unmark2-{{p.id}}','d-none')" data-bs-dismiss="modal"><i class="far fa-eye-evil text-center text-danger mr-2"></i>Unmark +18</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if v.id != p.author_id and v.admin_level >= PERMS['USER_BAN'] %}
|
{% if v.id != p.author_id and v.admin_level >= PERMS['USER_BAN'] %}
|
||||||
<button type="button" id="ban2-{{p.id}}" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#banModal" onclick="banModal('/post/{{p.id}}', '{{p.author.id}}', '{{p.author_name}}')" class="{% if p.author.is_suspended %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-danger text-left"><i class="fas fa-user-minus mr-2"></i>Ban user</button>
|
<button type="button" id="ban2-{{p.fullname}}" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#banModal" onclick="banModal('/post/{{p.id}}', '{{p.author.id}}', '{{p.author_name}}', '{{p.fullname}}','d-none')" class="{% if p.author.is_suspended %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-danger text-left"><i class="fas fa-user-minus mr-2"></i>Ban user</button>
|
||||||
<button type="button" id="unban2-{{p.id}}" class="{% if not p.author.is_suspended %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-success text-left" onclick="postToastSwitch(this,'/unban_user/{{p.author_id}}','ban2-{{p.id}}','unban2-{{p.id}}','d-none')" data-bs-dismiss="modal"><i class="fas fa-user-minus mr-2"></i>Unban user</button>
|
<button type="button" id="unban2-{{p.fullname}}" class="{% if not p.author.is_suspended %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-success text-left" onclick="postToastSwitch(this,'/unban_user/{{p.author_id}}','ban2-{{p.fullname}}','unban2-{{p.fullname}}','d-none')" data-bs-dismiss="modal"><i class="fas fa-user-minus mr-2"></i>Unban user</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if v.id != p.author_id and v.admin_level >= PERMS['USER_AGENDAPOSTER'] %}
|
||||||
|
<button type="button" id="chud2-{{p.fullname}}" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#chudModal" onclick="chudModal('/post/{{p.id}}', '{{p.author.id}}', '{{p.author_name}}', '{{p.fullname}}','d-none')" class="{% if p.author.agendaposter %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-danger text-left"><i class="fas fa-face-sleeping mr-2"></i>Chud user</button>
|
||||||
|
<button type="button" id="unchud2-{{p.fullname}}" class="{% if not p.author.agendaposter %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-success text-left" onclick="postToastSwitch(this,'/unagendaposter/{{p.author_id}}','chud2-{{p.fullname}}','unchud2-{{p.fullname}}','d-none')" data-bs-dismiss="modal"><i class="fas fa-face-sleeping mr-2"></i>Unchud user</button>
|
||||||
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -636,6 +636,10 @@
|
||||||
<i class="fas fa-hammer-crash text-danger" data-bs-toggle="tooltip" data-bs-placement="bottom" title="User was banned for this post {{p.bannedfor}}"></i>
|
<i class="fas fa-hammer-crash text-danger" data-bs-toggle="tooltip" data-bs-placement="bottom" title="User was banned for this post {{p.bannedfor}}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if p.chuddedfor %}
|
||||||
|
<i class="fas fa-face-sleeping text-danger" data-bs-toggle="tooltip" data-bs-placement="bottom" title="User was chudded for this post {{p.chuddedfor}}"></i>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% for a in p.awards %}
|
{% for a in p.awards %}
|
||||||
<i class="{{a.class_list}} px-1" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{a.title}} Award given by @{{a.user.username}}"></i>
|
<i class="{{a.class_list}} px-1" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{a.title}} Award given by @{{a.user.username}}"></i>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -129,6 +129,10 @@
|
||||||
<i class="fas fa-hammer-crash text-danger" data-bs-toggle="tooltip" data-bs-placement="bottom" title="User was banned for this post {{p.bannedfor}}"></i>
|
<i class="fas fa-hammer-crash text-danger" data-bs-toggle="tooltip" data-bs-placement="bottom" title="User was banned for this post {{p.bannedfor}}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if p.chuddedfor %}
|
||||||
|
<i class="fas fa-face-sleeping text-danger" data-bs-toggle="tooltip" data-bs-placement="bottom" title="User was chudded for this post {{p.chuddedfor}}"></i>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% for a in p.awards %}
|
{% for a in p.awards %}
|
||||||
<i class="{{a.class_list}} px-1" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{a.title}} Award given by @{{a.user.username}}"></i>
|
<i class="{{a.class_list}} px-1" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{a.title}} Award given by @{{a.user.username}}"></i>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -77,10 +77,11 @@
|
||||||
{% if v.admin_level >= PERMS['USER_AGENDAPOSTER'] %}
|
{% if v.admin_level >= PERMS['USER_AGENDAPOSTER'] %}
|
||||||
<form id="agendaposter-{{deviceType}}" class="{% if u.agendaposter %}d-none{% endif %}" action="/agendaposter/{{u.id}}" method="post">
|
<form id="agendaposter-{{deviceType}}" class="{% if u.agendaposter %}d-none{% endif %}" action="/agendaposter/{{u.id}}" method="post">
|
||||||
<input type="hidden" name="formkey", value="{{v.formkey}}">
|
<input type="hidden" name="formkey", value="{{v.formkey}}">
|
||||||
|
<input type="hidden" name="redir" value="true">
|
||||||
<input autocomplete="off" type="number" step="any" name="days" class="form-control" placeholder="Days (0 or blank = permanent)">
|
<input autocomplete="off" type="number" step="any" name="days" class="form-control" placeholder="Days (0 or blank = permanent)">
|
||||||
<input type="submit" onclick="disable(this)" class="btn btn-danger" value="Lock Chud Theme">
|
<input type="submit" onclick="disable(this)" class="btn btn-danger" value="Chud">
|
||||||
</form>
|
</form>
|
||||||
<button type="button" id="unagendaposter-{{deviceType}}" class="mt-1 {% if not u.agendaposter %}d-none{% endif %} btn btn-success" onclick="postToastSwitch(this,'/unagendaposter/{{u.id}}','agendaposter-{{deviceType}}','unagendaposter-{{deviceType}}','d-none')">Disable Chud Theme</button>
|
<button type="button" id="unagendaposter-{{deviceType}}" class="mt-1 {% if not u.agendaposter %}d-none{% endif %} btn btn-success" onclick="postToastSwitch(this,'/unagendaposter/{{u.id}}','agendaposter-{{deviceType}}','unagendaposter-{{deviceType}}','d-none')">Unchud</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="actionbtns mt-3">
|
<div class="actionbtns mt-3">
|
||||||
|
|
Loading…
Reference in New Issue