remotes/1693045480750635534/spooky-22
Aevann1 2021-09-20 15:11:10 +02:00
parent 6d4bd78574
commit 7a0951aaa4
13 changed files with 95 additions and 134 deletions

2
.gitignore vendored
View File

@ -3,7 +3,7 @@ cache/
__pycache__/ __pycache__/
*.py[cod] *.py[cod]
*$py.class *$py.class
chart.png chart.webp
# C extensions # C extensions
*.so *.so

View File

@ -24,9 +24,9 @@ if site_name == "Drama":
"color": "text-black-50", "color": "text-black-50",
"price": 1000 "price": 1000
}, },
"stars": { "fireflies": {
"kind": "stars", "kind": "fireflies",
"title": "Stars", "title": "fireflies",
"description": "Puts stars on the post.", "description": "Puts stars on the post.",
"icon": "fas fa-sparkles", "icon": "fas fa-sparkles",
"color": "text-warning", "color": "text-warning",
@ -43,9 +43,9 @@ else:
"color": "text-black-50", "color": "text-black-50",
"price": 1000 "price": 1000
}, },
"stars": { "fireflies": {
"kind": "stars", "kind": "fireflies",
"title": "Stars", "title": "fireflies",
"description": "Puts stars on the post.", "description": "Puts stars on the post.",
"icon": "fas fa-sparkles", "icon": "fas fa-sparkles",
"color": "text-warning", "color": "text-warning",

View File

@ -41,9 +41,9 @@ if site_name == "Drama":
"color": "text-black-50", "color": "text-black-50",
"price": 1000 "price": 1000
}, },
"stars": { "fireflies": {
"kind": "stars", "kind": "fireflies",
"title": "Stars", "title": "fireflies",
"description": "Puts stars on the post.", "description": "Puts stars on the post.",
"icon": "fas fa-sparkles", "icon": "fas fa-sparkles",
"color": "text-warning", "color": "text-warning",
@ -60,9 +60,9 @@ else:
"color": "text-black-50", "color": "text-black-50",
"price": 1000 "price": 1000
}, },
"stars": { "fireflies": {
"kind": "stars", "kind": "fireflies",
"title": "Stars", "title": "fireflies",
"description": "Puts stars on the post.", "description": "Puts stars on the post.",
"icon": "fas fa-sparkles", "icon": "fas fa-sparkles",
"color": "text-warning", "color": "text-warning",
@ -459,16 +459,11 @@ class User(Base):
if self.bannerurl: return self.bannerurl if self.bannerurl: return self.bannerurl
else: return f"https://{site}/assets/images/{site_name}/preview.webp" else: return f"https://{site}/assets/images/{site_name}/preview.webp"
@cache.memoize(timeout=3600)
def defaultpicture(self):
pic = random.randint(1, 150)
return f"https://{site}/assets/images/defaultpictures/{pic}.webp"
@property @property
@lazy @lazy
def profile_url(self): def profile_url(self):
if self.profileurl: return self.profileurl if self.profileurl: return self.profileurl
elif "rdrama" in site: return self.defaultpicture() elif "rdrama" in site: return f"https://{site}/assets/images/defaultpictures/{random.randint(1, 150)}.webp"
else: return f"https://{site}/assets/images/default-profile-pic.webp" else: return f"https://{site}/assets/images/default-profile-pic.webp"
@property @property

View File

@ -164,21 +164,21 @@ def monthly(v):
if u.patron == 1: if u.patron == 1:
grant_awards["shit"] = 1 grant_awards["shit"] = 1
grant_awards["stars"] = 1 grant_awards["fireflies"] = 1
elif u.patron == 2: elif u.patron == 2:
grant_awards["shit"] = 3 grant_awards["shit"] = 3
grant_awards["stars"] = 3 grant_awards["fireflies"] = 3
elif u.patron == 3: elif u.patron == 3:
grant_awards["shit"] = 5 grant_awards["shit"] = 5
grant_awards["stars"] = 5 grant_awards["fireflies"] = 5
grant_awards["ban"] = 1 grant_awards["ban"] = 1
elif u.patron == 4: elif u.patron == 4:
grant_awards["shit"] = 10 grant_awards["shit"] = 10
grant_awards["stars"] = 10 grant_awards["fireflies"] = 10
grant_awards["ban"] = 3 grant_awards["ban"] = 3
elif u.patron == 5 or u.patron == 8: elif u.patron == 5 or u.patron == 8:
grant_awards["shit"] = 20 grant_awards["shit"] = 20
grant_awards["stars"] = 20 grant_awards["fireflies"] = 20
grant_awards["ban"] = 6 grant_awards["ban"] = 6
@ -402,25 +402,25 @@ def badge_grant_post(v):
if badge_id == 21: if badge_id == 21:
if user.discord_id: add_role(user, "1") if user.discord_id: add_role(user, "1")
grant_awards["shit"] = 1 grant_awards["shit"] = 1
grant_awards["stars"] = 1 grant_awards["fireflies"] = 1
elif badge_id == 22: elif badge_id == 22:
if user.discord_id: add_role(user, "2") if user.discord_id: add_role(user, "2")
grant_awards["shit"] = 3 grant_awards["shit"] = 3
grant_awards["stars"] = 3 grant_awards["fireflies"] = 3
elif badge_id == 23: elif badge_id == 23:
if user.discord_id: add_role(user, "3") if user.discord_id: add_role(user, "3")
grant_awards["shit"] = 5 grant_awards["shit"] = 5
grant_awards["stars"] = 5 grant_awards["fireflies"] = 5
grant_awards["ban"] = 1 grant_awards["ban"] = 1
elif badge_id in [24, 28]: elif badge_id in [24, 28]:
if user.discord_id: add_role(user, "4") if user.discord_id: add_role(user, "4")
grant_awards["shit"] = 10 grant_awards["shit"] = 10
grant_awards["stars"] = 10 grant_awards["fireflies"] = 10
grant_awards["ban"] = 3 grant_awards["ban"] = 3
elif badge_id == 25: elif badge_id == 25:
if user.discord_id: add_role(user, "5") if user.discord_id: add_role(user, "5")
grant_awards["shit"] = 20 grant_awards["shit"] = 20
grant_awards["stars"] = 20 grant_awards["fireflies"] = 20
grant_awards["ban"] = 6 grant_awards["ban"] = 6
if len(grant_awards): if len(grant_awards):
@ -631,20 +631,6 @@ def admin_removed(v):
) )
@app.post("/admin/image_purge")
@admin_level_required(5)
def admin_image_purge(v):
name = request.values.get("url")
image = g.db.query(Image).options(lazyload('*')).filter(Image.text == name).first()
if image:
requests.delete(f'https://api.imgur.com/3/image/{image.deletehash}', headers = {"Authorization": f"Client-ID {IMGUR_KEY}"})
headers = {"Authorization": f"Bearer {CF_KEY}", "Content-Type": "application/json"}
data = {'files': [name]}
url = f"https://api.cloudflare.com/client/v4/zones/{CF_ZONE}/purge_cache"
requests.post(url, headers=headers, json=data)
return redirect("/admin/image_purge")
@app.post("/admin/image_ban") @app.post("/admin/image_ban")
@admin_level_required(4) @admin_level_required(4)
@ -1330,6 +1316,6 @@ def chart(v):
posts_chart.legend(loc='upper left', frameon=True) posts_chart.legend(loc='upper left', frameon=True)
comments_chart.legend(loc='upper left', frameon=True) comments_chart.legend(loc='upper left', frameon=True)
plt.savefig("chart.png") plt.savefig("chart.webp")
plt.clf() plt.clf()
return send_file("../chart.png") return send_file("../chart.webp")

View File

@ -28,9 +28,9 @@ def shop(v):
"color": "text-black-50", "color": "text-black-50",
"price": 1000 "price": 1000
}, },
"stars": { "fireflies": {
"kind": "stars", "kind": "fireflies",
"title": "Stars", "title": "fireflies",
"description": "Puts stars on the post.", "description": "Puts stars on the post.",
"icon": "fas fa-sparkles", "icon": "fas fa-sparkles",
"color": "text-warning", "color": "text-warning",
@ -47,9 +47,9 @@ def shop(v):
"color": "text-black-50", "color": "text-black-50",
"price": 1000 "price": 1000
}, },
"stars": { "fireflies": {
"kind": "stars", "kind": "fireflies",
"title": "Stars", "title": "fireflies",
"description": "Puts stars on the post.", "description": "Puts stars on the post.",
"icon": "fas fa-sparkles", "icon": "fas fa-sparkles",
"color": "text-warning", "color": "text-warning",
@ -105,9 +105,9 @@ def buy(v, award):
"color": "text-black-50", "color": "text-black-50",
"price": 1000 "price": 1000
}, },
"stars": { "fireflies": {
"kind": "stars", "kind": "fireflies",
"title": "Stars", "title": "fireflies",
"description": "Puts stars on the post.", "description": "Puts stars on the post.",
"icon": "fas fa-sparkles", "icon": "fas fa-sparkles",
"color": "text-warning", "color": "text-warning",
@ -124,9 +124,9 @@ def buy(v, award):
"color": "text-black-50", "color": "text-black-50",
"price": 1000 "price": 1000
}, },
"stars": { "fireflies": {
"kind": "stars", "kind": "fireflies",
"title": "Stars", "title": "fireflies",
"description": "Puts stars on the post.", "description": "Puts stars on the post.",
"icon": "fas fa-sparkles", "icon": "fas fa-sparkles",
"color": "text-warning", "color": "text-warning",
@ -181,7 +181,7 @@ ACTIONS = {
ALLOW_MULTIPLE = ( ALLOW_MULTIPLE = (
"ban", "ban",
"shit", "shit",
"stars" "fireflies"
) )
@app.post("/post/<pid>/awards") @app.post("/post/<pid>/awards")

View File

@ -63,6 +63,10 @@ def publish(pid, v):
cache.delete_memoized(frontlist) cache.delete_memoized(frontlist)
for follow in v.followers:
user = get_account(follow.user_id)
send_notification(AUTOJANNY_ACCOUNT, user, f"@{v.username} has made a new post: [{post.title}](https://{site}{post.permalink})")
g.db.commit() g.db.commit()
return {"message": "Post published!"} return {"message": "Post published!"}
@ -616,10 +620,6 @@ def submit_post(v):
if url.startswith("https://streamable.com/") and not url.startswith("https://streamable.com/e/"): if url.startswith("https://streamable.com/") and not url.startswith("https://streamable.com/e/"):
url = url.replace("https://streamable.com/", "https://streamable.com/e/") url = url.replace("https://streamable.com/", "https://streamable.com/e/")
if "i.imgur.com" in url and "_d." not in url:
url = url.replace(".png", "_d.png").replace(".jpg", "_d.jpg").replace(".jpeg", "_d.jpeg")
if "_d." in url: url += "?maxwidth=9999"
repost = g.db.query(Submission).join(Submission.submission_aux).options(lazyload('*')).filter( repost = g.db.query(Submission).join(Submission.submission_aux).options(lazyload('*')).filter(
SubmissionAux.url.ilike(url), SubmissionAux.url.ilike(url),
Submission.deleted_utc == 0, Submission.deleted_utc == 0,

View File

@ -318,25 +318,25 @@ def gumroad(v):
if tier == 1: if tier == 1:
if v.discord_id: add_role(v, "1") if v.discord_id: add_role(v, "1")
grant_awards["shit"] = 1 grant_awards["shit"] = 1
grant_awards["stars"] = 1 grant_awards["fireflies"] = 1
elif tier == 2: elif tier == 2:
if v.discord_id: add_role(v, "2") if v.discord_id: add_role(v, "2")
grant_awards["shit"] = 3 grant_awards["shit"] = 3
grant_awards["stars"] = 3 grant_awards["fireflies"] = 3
elif tier == 3: elif tier == 3:
if v.discord_id: add_role(v, "3") if v.discord_id: add_role(v, "3")
grant_awards["shit"] = 5 grant_awards["shit"] = 5
grant_awards["stars"] = 5 grant_awards["fireflies"] = 5
grant_awards["ban"] = 1 grant_awards["ban"] = 1
elif tier == 4: elif tier == 4:
if v.discord_id: add_role(v, "4") if v.discord_id: add_role(v, "4")
grant_awards["shit"] = 10 grant_awards["shit"] = 10
grant_awards["stars"] = 10 grant_awards["fireflies"] = 10
grant_awards["ban"] = 3 grant_awards["ban"] = 3
elif tier == 5 or tier == 8: elif tier == 5 or tier == 8:
if v.discord_id: add_role(v, "5") if v.discord_id: add_role(v, "5")
grant_awards["shit"] = 20 grant_awards["shit"] = 20
grant_awards["stars"] = 20 grant_awards["fireflies"] = 20
grant_awards["ban"] = 6 grant_awards["ban"] = 6
thing = g.db.query(AwardRelationship).order_by(AwardRelationship.id.desc()).first().id thing = g.db.query(AwardRelationship).order_by(AwardRelationship.id.desc()).first().id

View File

@ -23,7 +23,6 @@
#### Safety #### Safety
* [Banned Domains](/admin/banned_domains) * [Banned Domains](/admin/banned_domains)
* [Remove image from imgur and from cloudflare cache](/admin/image_purge)
* [Perceptive Hash Image Ban](/admin/image_ban) * [Perceptive Hash Image Ban](/admin/image_ban)
* [Multi Vote Analysis](/admin/alt_votes) * [Multi Vote Analysis](/admin/alt_votes)

View File

@ -1,19 +0,0 @@
{% extends "default.html" %}
{% block title %}
<title>Purge Image</title>
<meta name="description" content="Purge Image">
{% endblock %}
{% block content %}
<h1>Imgur and Cloudflare Image Purge</h1>
<p>Paste an image link here to remove it from imgur and from cloudflare cache. You need to enter the full url of the image like this "https://i.imgur.com/63OclpM_d.png?maxwidth=9999"</p>
<form action="/admin/image_purge" method="post" class="mb-6">
<label for="link-input">Image Link</label>
<input id="link-input" type="text" class="form-control mb-2" name="url">
<input type="submit" value="Delete Image" class="btn btn-primary">
</form>
{% endblock %}

View File

@ -1,37 +1,37 @@
{% extends "email/default.html" %} {% extends "email/default.html" %}
{% block image %}verify.png{% endblock %} {% block image %}verify.webp{% endblock %}
{% block title %}Remove Two-Factor Authentication{% endblock %}</h1> {% block title %}Remove Two-Factor Authentication{% endblock %}</h1>
{% block preheader %}Remove Two-Factor Authentication.{% endblock %} {% block preheader %}Remove Two-Factor Authentication.{% endblock %}
{% block content %} {% block content %}
<p>We received a request to remove two-factor authentication from your account. In 72 hours, click the link below.</p> <p>We received a request to remove two-factor authentication from your account. In 72 hours, click the link below.</p>
<p>If you didn't make this request, change your password and use the Log Out Everywhere feature in your <a href="/settings/security">Security Settings</a> to permanently invalidate the link.</p> <p>If you didn't make this request, change your password and use the Log Out Everywhere feature in your <a href="/settings/security">Security Settings</a> to permanently invalidate the link.</p>
<!-- Action --> <!-- Action -->
<table class="body-action" align="center" width="100%" cellpadding="0" cellspacing="0" role="presentation"> <table class="body-action" align="center" width="100%" cellpadding="0" cellspacing="0" role="presentation">
<tr> <tr>
<td align="center"> <td align="center">
<!-- Border based button <!-- Border based button
https://litmus.com/blog/a-guide-to-bulletproof-buttons-in-email-design --> https://litmus.com/blog/a-guide-to-bulletproof-buttons-in-email-design -->
<table width="100%" border="0" cellspacing="0" cellpadding="0" role="presentation"> <table width="100%" border="0" cellspacing="0" cellpadding="0" role="presentation">
<tr> <tr>
<td align="center"> <td align="center">
<a href="{{action_url}}" class="f-fallback button" target="_blank">Remove 2FA</a> <a href="{{action_url}}" class="f-fallback button" target="_blank">Remove 2FA</a>
</td> </td>
</tr> </tr>
</table> </table>
</td> </td>
</tr> </tr>
</table> </table>
<p>Please note that {{'SITE_NAME' | app_config}} will never ask you for your email, password, or two-factor token via email, text, or phone.</p> <p>Please note that {{'SITE_NAME' | app_config}} will never ask you for your email, password, or two-factor token via email, text, or phone.</p>
<table class="body-sub" role="presentation"> <table class="body-sub" role="presentation">
<tr> <tr>
<td> <td>
<p class="f-fallback sub">If youre having trouble with the button above, copy and paste the URL below into your web browser.</p> <p class="f-fallback sub">If youre having trouble with the button above, copy and paste the URL below into your web browser.</p>
<p class="f-fallback sub">{{action_url}}</p> <p class="f-fallback sub">{{action_url}}</p>
</td> </td>
</tr> </tr>
</table> </table>
{% endblock %} {% endblock %}

View File

@ -9,7 +9,7 @@
<div class="row fixed-bottom bg-white border-top p-2" id="mobile-bottom-navigation-bar" <div class="row fixed-bottom bg-white border-top p-2" id="mobile-bottom-navigation-bar"
style="z-index: 100; bottom: 0px; transition: bottom cubic-bezier(0, 0, 0.2, 1) 220ms;"> style="z-index: 100; bottom: 0px; transition: bottom cubic-bezier(0, 0, 0.2, 1) 220ms;">
<button type="button" class="col px-0 pl-2 btn btn-dead m-0" style="background: None !important; border: None;"> <button type="button" class="col px-0 ml-3 btn btn-dead m-0" style="background: None !important; border: None;">
<a href="/" class="text-decoration-none" role="button"> <a href="/" class="text-decoration-none" role="button">
<div class="text-center {% if request.path=='/' and request.full_path!='/?sort=hot&t=all' and request.full_path!='/?sort=new&t=all' %}text-purple{% else %}text-muted{% endif %}"> <div class="text-center {% if request.path=='/' and request.full_path!='/?sort=hot&t=all' and request.full_path!='/?sort=new&t=all' %}text-purple{% else %}text-muted{% endif %}">
<i class="fas fa-home-alt text-lg d-block"></i> <i class="fas fa-home-alt text-lg d-block"></i>
@ -53,7 +53,7 @@
</a> </a>
</button> </button>
{% if v %} {% if v %}
<button type="button" class="col px-0 pr-2 btn btn-dead m-0" style="background: None !important; border: None;"> <button type="button" class="col px-0 mr-3 btn btn-dead m-0" style="background: None !important; border: None;">
<a href="{{v.url}}" class="text-decoration-none" role="button"> <a href="{{v.url}}" class="text-decoration-none" role="button">
<div class="text-center {% if request.path==v.url %}text-purple{% else %}text-muted{% endif %}"> <div class="text-center {% if request.path==v.url %}text-purple{% else %}text-muted{% endif %}">
<i class="fas fa-user-circle text-lg d-block"></i> <i class="fas fa-user-circle text-lg d-block"></i>
@ -62,7 +62,7 @@
</a> </a>
</button> </button>
{% else %} {% else %}
<button type="button" class="col px-0 pr-2 btn btn-dead m-0" style="background: None !important; border: None;"> <button type="button" class="col px-0 mr-3 btn btn-dead m-0" style="background: None !important; border: None;">
<a href="/signup" class="text-decoration-none" role="button"> <a href="/signup" class="text-decoration-none" role="button">
<div class="text-center text-muted"> <div class="text-center text-muted">
<i class="fas fa-user-plus text-lg d-block"></i> <i class="fas fa-user-plus text-lg d-block"></i>

View File

@ -104,7 +104,7 @@
<button class="nobackground btn btn-link btn-block btn-lg text-left text-muted" data-toggle="modal" data-dismiss="modal" data-target="#reportPostModal" onclick="report_postModal('{{p.id}}','{{'@'+p.author.username}}')" class="d-block"><i class="far fa-flag text-center text-muted mr-3"></i>Report</button> <button class="nobackground btn btn-link btn-block btn-lg text-left text-muted" data-toggle="modal" data-dismiss="modal" data-target="#reportPostModal" onclick="report_postModal('{{p.id}}','{{'@'+p.author.username}}')" class="d-block"><i class="far fa-flag text-center text-muted mr-3"></i>Report</button>
{% if v and v.id==p.author_id %} {% if v and v.id==p.author_id %}
{% if p.private %} {% if p.private %}
<button class="nobackground btn btn-link btn-block btn-lg text-left text-muted"><a href="javascript:void(0)" onclick="post_toast('/publish/{{p.id}}')" data-dismiss="modal"><i class="fas fa-globe text-center text-muted mr-3"></i>Publish</a></button> <button class="nobackground btn btn-link btn-block btn-lg text-left text-muted" href="javascript:void(0)" onclick="post_toast('/publish/{{p.id}}')" data-dismiss="modal"><i class="fas fa-globe text-center text-muted mr-3"></i>Publish</button>
{% endif %} {% endif %}
<button class="nobackground btn btn-link btn-block btn-lg text-left text-muted" data-dismiss="modal" onclick="togglePostEdit('{{p.id}}')"><i class="far fa-edit text-center text-muted mr-3"></i>Edit</button> <button class="nobackground btn btn-link btn-block btn-lg text-left text-muted" data-dismiss="modal" onclick="togglePostEdit('{{p.id}}')"><i class="far fa-edit text-center text-muted mr-3"></i>Edit</button>
@ -119,21 +119,21 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
<button class="nobackground btn btn-link btn-block btn-lg text-left text-muted"><a href="/votes?link={{p.fullname}}"><i class="fas fa-arrows-v text-center text-muted mr-3"></i>Votes</a></button> <button class="nobackground btn btn-link btn-block btn-lg text-left text-muted" href="/votes?link={{p.fullname}}"><i class="fas fa-arrows-v text-center text-muted mr-3"></i>Votes</button>
{% if v and v.id!=p.author_id %} {% if v and v.id!=p.author_id %}
<button class="nobackground btn btn-link btn-block btn-lg text-left text-muted" data-toggle="modal" data-dismiss="modal" data-target="#awardModal" onclick="awardModal('/post/{{p.id}}/awards')"><i class="fas fa-gift text-center text-muted mr-3"></i>Give Award</button> <button class="nobackground btn btn-link btn-block btn-lg text-left text-muted" data-toggle="modal" data-dismiss="modal" data-target="#awardModal" onclick="awardModal('/post/{{p.id}}/awards')"><i class="fas fa-gift text-center text-muted mr-3"></i>Give Award</button>
{% endif %} {% endif %}
{% if v %} {% if v %}
<button id="subscribe2-{{p.id}}" class="{% if p.id in v.subscribed_idlist() %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left text-muted"><a href="javascript:void(0)" onclick="post_toast2('/subscribe/{{p.id}}','subscribe2-{{p.id}}','unsubscribe2-{{p.id}}')" data-dismiss="modal"><i class="fas fa-eye text-center text-muted mr-3"></i>Subscribe</a></button> <button id="subscribe2-{{p.id}}" class="{% if p.id in v.subscribed_idlist() %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left text-muted" href="javascript:void(0)" onclick="post_toast2('/subscribe/{{p.id}}','subscribe2-{{p.id}}','unsubscribe2-{{p.id}}')" data-dismiss="modal"><i class="fas fa-eye text-center text-muted mr-3"></i>Subscribe</button>
<button id="unsubscribe2-{{p.id}}" class="{% if not p.id in v.subscribed_idlist() %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left text-muted"><a href="javascript:void(0)" onclick="post_toast2('/unsubscribe/{{p.id}}','subscribe2-{{p.id}}','unsubscribe2-{{p.id}}')" data-dismiss="modal"><i class="fas fa-eye-slash text-center text-muted mr-3"></i>Unsubscribe</a></button> <button id="unsubscribe2-{{p.id}}" class="{% if not p.id in v.subscribed_idlist() %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left text-muted" href="javascript:void(0)" onclick="post_toast2('/unsubscribe/{{p.id}}','subscribe2-{{p.id}}','unsubscribe2-{{p.id}}')" data-dismiss="modal"><i class="fas fa-eye-slash text-center text-muted mr-3"></i>Unsubscribe</button>
{% endif %} {% endif %}
{% if v %} {% if v %}
<button id="save2-{{p.id}}" class="{% if p.id in v.saved_idlist() %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left text-muted"><a href="javascript:void(0)" onclick="post_toast2('/save_post/{{p.id}}','save2-{{p.id}}','unsave2-{{p.id}}')" data-dismiss="modal"><i class="fas fa-save text-center text-muted mr-3"></i>Save</a></button> <button id="save2-{{p.id}}" class="{% if p.id in v.saved_idlist() %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left text-muted" href="javascript:void(0)" onclick="post_toast2('/save_post/{{p.id}}','save2-{{p.id}}','unsave2-{{p.id}}')" data-dismiss="modal"><i class="fas fa-save text-center text-muted mr-3"></i>Save</button>
<button id="unsave2-{{p.id}}" class="{% if not p.id in v.saved_idlist() %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left text-muted"><a href="javascript:void(0)" onclick="post_toast2('/unsave_post/{{p.id}}','save2-{{p.id}}','unsave2-{{p.id}}')" data-dismiss="modal"><i class="fas fa-save text-center text-muted mr-3"></i>Unsave</a></button> <button id="unsave2-{{p.id}}" class="{% if not p.id in v.saved_idlist() %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left text-muted" href="javascript:void(0)" onclick="post_toast2('/unsave_post/{{p.id}}','save2-{{p.id}}','unsave2-{{p.id}}')" data-dismiss="modal"><i class="fas fa-save text-center text-muted mr-3"></i>Unsave</button>
{% if v.admin_level >=3 or v.id == p.author.id and v.paid_dues %} {% if v.admin_level >=3 or v.id == p.author.id and v.paid_dues %}
<button id="club2-{{p.id}}" class="{% if p.club %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-info text-left" href="javascript:void(0)" onclick="post_toast2('/toggle_club/{{p.id}}','club2-{{p.id}}','unclub2-{{p.id}}')" data-dismiss="modal"><i class="fas fa-eye-slash mr-3"></i>Mark club</button> <button id="club2-{{p.id}}" class="{% if p.club %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-info text-left" href="javascript:void(0)" onclick="post_toast2('/toggle_club/{{p.id}}','club2-{{p.id}}','unclub2-{{p.id}}')" data-dismiss="modal"><i class="fas fa-eye-slash mr-3"></i>Mark club</button>
@ -158,7 +158,7 @@
{% endif %} {% endif %}
{% if v.admin_level >=4 and p.oauth_app %} {% if v.admin_level >=4 and p.oauth_app %}
<button class="nobackground btn btn-link btn-block btn-lg text-muted text-left" href="{{p.oauth_app.permalink}}"><a href="{{p.oauth_app.permalink}}"><i class="far fa-code text-center text-info mr-3"></i>API App</a></button> <button class="nobackground btn btn-link btn-block btn-lg text-muted text-left" href="{{p.oauth_app.permalink}}" href="{{p.oauth_app.permalink}}"><i class="far fa-code text-center text-info mr-3"></i>API App</button>
{% endif %} {% endif %}
{% endif %} {% endif %}
@ -179,8 +179,8 @@
{% endif %} {% endif %}
{% if v and v.admin_level == 6 and v.id!=p.author_id %} {% if v and v.admin_level == 6 and v.id!=p.author_id %}
<button id="ban2-{{p.id}}" data-dismiss="modal" data-toggle="modal" data-target="#banModal" onclick="banModal('/post/{{p.id}}', '{{ p.author.id }}', '{{p.author.username}}')" class="{% if p.author.is_suspended %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-danger text-left" href="javascript:void(0)"><i class="fas fa-user-minus mr-3"></i>Ban user</a></button> <button id="ban2-{{p.id}}" data-dismiss="modal" data-toggle="modal" data-target="#banModal" onclick="banModal('/post/{{p.id}}', '{{ p.author.id }}', '{{p.author.username}}')" class="{% if p.author.is_suspended %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-danger text-left" href="javascript:void(0)"><i class="fas fa-user-minus mr-3"></i>Ban user</button>
<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" href="javascript:void(0)" onclick="post_toast2('/unban_user/{{p.author_id}}','ban2-{{p.id}}','unban2-{{p.id}}')" data-dismiss="modal"><i class="fas fa-user-minus mr-3"></i>Unban user</a></button> <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" href="javascript:void(0)" onclick="post_toast2('/unban_user/{{p.author_id}}','ban2-{{p.id}}','unban2-{{p.id}}')" data-dismiss="modal"><i class="fas fa-user-minus mr-3"></i>Unban user</button>
{% endif %} {% endif %}
</ul> </ul>
</div> </div>
@ -207,13 +207,13 @@
{% endif %} {% endif %}
{% if p.award_count("stars") %} {% if p.award_count("fireflies") %}
<script src="/assets/js/star.js" type="text/javascript"></script> <script src="/assets/js/fireflies.js" type="text/javascript"></script>
{% set minbugs = 10*p.award_count("stars") if p.award_count("stars") <= 5 else 50 %} {% set minbugs = 10*p.award_count("fireflies") if p.award_count("fireflies") <= 5 else 50 %}
{% set maxbugs = 20*p.award_count("stars") if p.award_count("stars") <= 5 else 100 %} {% set maxbugs = 20*p.award_count("fireflies") if p.award_count("fireflies") <= 5 else 100 %}
<script type="text/javascript"> <script type="text/javascript">
new BugController({ new BugController({
imageSprite: "/assets/images/star.png", imageSprite: "/assets/images/fireflies.webp",
canDie: false, canDie: false,
minBugs: {{minbugs}}, minBugs: {{minbugs}},
maxBugs: {{maxbugs}}, maxBugs: {{maxbugs}},

View File

@ -293,7 +293,7 @@ Yes Minecraft is symbolic in many ways with The book of Revelation in the Bible
{[para]} {[para]}
Yep. This one's going in my cringe compilation. Yep. This one's going in my cringe compilation.
![](https://i.imgur.com/Oz5g9zP.png) ![](https://i.imgur.com/Oz5g9zP.webp)
{[para]} {[para]}
You can take your ban and bang yourself in the ass with it. Go ahead and pretend it's me tearing up your ugly starfish. Banning me is a chicken shit move. Enjoy life living in fear. I don't if I've ever made post in your sub. You people are a joke. I've already spanked a few of you and I didn't bother rubbing it in your faces because I'm a nice guy. My work is done on Reddit. I just got paid. No run along and dry each others tears. I've already won You can take your ban and bang yourself in the ass with it. Go ahead and pretend it's me tearing up your ugly starfish. Banning me is a chicken shit move. Enjoy life living in fear. I don't if I've ever made post in your sub. You people are a joke. I've already spanked a few of you and I didn't bother rubbing it in your faces because I'm a nice guy. My work is done on Reddit. I just got paid. No run along and dry each others tears. I've already won
{[para]} {[para]}
@ -1323,7 +1323,7 @@ They call Dramanauts, *Autists*. Autists... easily duped, will believe anything,
{[para]} {[para]}
THIS WEB SITE HAS BEEN MOSTLY TAKEN OFFLINE BECAUSE OF THE TELEMETRY REPORT. IF YOU CAN SEE THIS, YOU ARE ONE OF THE SCANT FEW WHO CAN SEE THROUGH THE HOLOWEB. THIS WEB SITE HAS BEEN MOSTLY TAKEN OFFLINE BECAUSE OF THE TELEMETRY REPORT. IF YOU CAN SEE THIS, YOU ARE ONE OF THE SCANT FEW WHO CAN SEE THROUGH THE HOLOWEB.
{[para]} {[para]}
https://i.imgur.com/FWELOKb.png ![](https://i.imgur.com/FWELOKb.webp)
{[para]} {[para]}
That entire subreddit is a cesspool. It's like a sewer that empties directly into a stagnant pond. That entire subreddit is a cesspool. It's like a sewer that empties directly into a stagnant pond.
{[para]} {[para]}