forked from rDrama/rDrama
Merge branch 'frost' into patch-8
commit
9544020aa0
|
@ -55,7 +55,7 @@ class Badge(Base):
|
||||||
@property
|
@property
|
||||||
@lazy
|
@lazy
|
||||||
def path(self):
|
def path(self):
|
||||||
return f"/static/assets/images/badges/{self.name.replace(' ','%20')}.webp?a=4"
|
return f"/static/assets/images/badges/{self.name.replace(' ','%20')}.webp?a=5"
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@lazy
|
@lazy
|
||||||
|
|
|
@ -68,7 +68,7 @@ class Submission(Base):
|
||||||
@property
|
@property
|
||||||
@lazy
|
@lazy
|
||||||
def comments(self):
|
def comments(self):
|
||||||
return g.db.query(Comment.author_id, Comment.created_utc, Comment.id).filter_by(parent_submission=self.id)
|
return g.db.query(Comment.author_id, Comment.created_utc, Comment.id).filter(Submission.parent_submission == self.id, Submission.author_id.notin_((AUTOPOLLER_ID,AUTOBETTER_ID)))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@lazy
|
@lazy
|
||||||
|
|
|
@ -433,10 +433,10 @@ class User(Base):
|
||||||
@property
|
@property
|
||||||
@lazy
|
@lazy
|
||||||
def profile_url(self):
|
def profile_url(self):
|
||||||
if self.agendaposter: return f"https://{site}/static/assets/images/defaultpictures/agendaposter/{random.randint(1, 50)}.webp?a=202"
|
if self.agendaposter: return f"https://{site}/static/assets/images/defaultpictures/agendaposter/{random.randint(1, 50)}.webp?a=203"
|
||||||
if self.profileurl: return self.profileurl
|
if self.profileurl: return self.profileurl
|
||||||
if "rama" in site: return f"https://{site}/static/assets/images/defaultpictures/{random.randint(1, 150)}.webp?a=202"
|
if "rama" in site: return f"https://{site}/static/assets/images/defaultpictures/{random.randint(1, 150)}.webp?a=202"
|
||||||
return f"https://{site}/static/assets/images/default-profile-pic.webp?a=202"
|
return f"https://{site}/static/assets/images/default-profile-pic.webp?a=203"
|
||||||
|
|
||||||
@lazy
|
@lazy
|
||||||
def json_popover(self, v):
|
def json_popover(self, v):
|
||||||
|
|
|
@ -141,7 +141,8 @@ if SITE == 'rdrama.net':
|
||||||
AUTOPOLLER_ID = 6176
|
AUTOPOLLER_ID = 6176
|
||||||
AUTOBETTER_ID = 7668
|
AUTOBETTER_ID = 7668
|
||||||
TAX_RECEIVER_ID = 995
|
TAX_RECEIVER_ID = 995
|
||||||
AUTO_UPVOTE_IDS = (2424,4245)
|
PIZZASHILL_ID = 2424
|
||||||
|
HIL_ID = 4245
|
||||||
CRAT_ID = 747
|
CRAT_ID = 747
|
||||||
IDIO_ID = 30
|
IDIO_ID = 30
|
||||||
CARP_ID = 995
|
CARP_ID = 995
|
||||||
|
@ -167,7 +168,8 @@ elif SITE == "pcmemes.net":
|
||||||
AUTOPOLLER_ID = 3369
|
AUTOPOLLER_ID = 3369
|
||||||
AUTOBETTER_ID = 1867
|
AUTOBETTER_ID = 1867
|
||||||
TAX_RECEIVER_ID = 1592
|
TAX_RECEIVER_ID = 1592
|
||||||
AUTO_UPVOTE_IDS = ()
|
PIZZASHILL_ID = 0
|
||||||
|
HIL_ID = 0
|
||||||
CRAT_ID = 0
|
CRAT_ID = 0
|
||||||
IDIO_ID = 0
|
IDIO_ID = 0
|
||||||
CARP_ID = 0
|
CARP_ID = 0
|
||||||
|
@ -193,7 +195,8 @@ else:
|
||||||
AUTOPOLLER_ID = 6
|
AUTOPOLLER_ID = 6
|
||||||
AUTOBETTER_ID = 7
|
AUTOBETTER_ID = 7
|
||||||
TAX_RECEIVER_ID = 8
|
TAX_RECEIVER_ID = 8
|
||||||
AUTO_UPVOTE_IDS = ()
|
PIZZASHILL_ID = 0
|
||||||
|
HIL_ID = 0
|
||||||
CRAT_ID = 0
|
CRAT_ID = 0
|
||||||
IDIO_ID = 0
|
IDIO_ID = 0
|
||||||
CARP_ID = 0
|
CARP_ID = 0
|
||||||
|
|
|
@ -109,7 +109,7 @@ def sanitize(sanitized, noimages=False, alert=False, comment=False):
|
||||||
for i in re.finditer("<p>@((\w|-){1,25})", sanitized):
|
for i in re.finditer("<p>@((\w|-){1,25})", sanitized):
|
||||||
u = get_user(i.group(1), graceful=True)
|
u = get_user(i.group(1), graceful=True)
|
||||||
if u:
|
if u:
|
||||||
sanitized = sanitized.replace(i.group(0), f'''<p><a href="/id/{u.id}"><img alt="@{u.username}'s profile picture" loading="lazy" src="/uid/{u.id}/pic" class="pp20">@{u.username}</a>''')
|
sanitized = sanitized.replace(i.group(0), f'''<p><a href="/id/{u.id}"><img alt="@{u.username}'s profile picture" loading="lazy" src="/uid/{u.id}/pic" class="pp20">@{u.username}</a>''', 1)
|
||||||
else:
|
else:
|
||||||
sanitized = re.sub('(^|\s|\n|<p>)\/?((r|u)\/\w{3,25})', r'\1<a href="https://old.reddit.com/\2" rel="nofollow noopener noreferrer">\2</a>', sanitized)
|
sanitized = re.sub('(^|\s|\n|<p>)\/?((r|u)\/\w{3,25})', r'\1<a href="https://old.reddit.com/\2" rel="nofollow noopener noreferrer">\2</a>', sanitized)
|
||||||
|
|
||||||
|
@ -118,9 +118,9 @@ def sanitize(sanitized, noimages=False, alert=False, comment=False):
|
||||||
|
|
||||||
if u and (not g.v.any_block_exists(u) or g.v.admin_level > 1):
|
if u and (not g.v.any_block_exists(u) or g.v.admin_level > 1):
|
||||||
if noimages:
|
if noimages:
|
||||||
sanitized = sanitized.replace(i.group(0), f'{i.group(1)}<a href="/id/{u.id}">@{u.username}</a>')
|
sanitized = sanitized.replace(i.group(0), f'{i.group(1)}<a href="/id/{u.id}">@{u.username}</a>', 1)
|
||||||
else:
|
else:
|
||||||
sanitized = sanitized.replace(i.group(0), f'''{i.group(1)}<a href="/id/{u.id}"><img alt="@{u.username}'s profile picture" loading="lazy" src="/uid/{u.id}/pic" class="pp20">@{u.username}</a>''')
|
sanitized = sanitized.replace(i.group(0), f'''{i.group(1)}<a href="/id/{u.id}"><img alt="@{u.username}'s profile picture" loading="lazy" src="/uid/{u.id}/pic" class="pp20">@{u.username}</a>''', 1)
|
||||||
|
|
||||||
|
|
||||||
for i in re.finditer('https://i\.imgur\.com/(([^_]*?)\.(jpg|png|jpeg))', sanitized):
|
for i in re.finditer('https://i\.imgur\.com/(([^_]*?)\.(jpg|png|jpeg))', sanitized):
|
||||||
|
|
|
@ -58,6 +58,9 @@ def remove_admin(v, username):
|
||||||
@limiter.limit("1/second;30/minute;200/hour;1000/day")
|
@limiter.limit("1/second;30/minute;200/hour;1000/day")
|
||||||
@admin_level_required(3)
|
@admin_level_required(3)
|
||||||
def distribute(v, comment):
|
def distribute(v, comment):
|
||||||
|
autobetter = g.db.query(User).filter_by(id=AUTOBETTER_ID).one_or_none()
|
||||||
|
if autobetter.coins == 0: return {"error": "@AutoBetter has 0 coins"}
|
||||||
|
|
||||||
try: comment = int(comment)
|
try: comment = int(comment)
|
||||||
except: abort(400)
|
except: abort(400)
|
||||||
post = g.db.query(Comment.parent_submission).filter_by(id=comment).one_or_none()[0]
|
post = g.db.query(Comment.parent_submission).filter_by(id=comment).one_or_none()[0]
|
||||||
|
@ -67,6 +70,10 @@ def distribute(v, comment):
|
||||||
for option in post.bet_options: pool += option.upvotes
|
for option in post.bet_options: pool += option.upvotes
|
||||||
pool *= 200
|
pool *= 200
|
||||||
|
|
||||||
|
autobetter.coins -= pool
|
||||||
|
if autobetter.coins < 0: autobetter.coins = 0
|
||||||
|
g.db.add(autobetter)
|
||||||
|
|
||||||
votes = g.db.query(CommentVote).filter_by(comment_id=comment)
|
votes = g.db.query(CommentVote).filter_by(comment_id=comment)
|
||||||
coinsperperson = int(pool / votes.count())
|
coinsperperson = int(pool / votes.count())
|
||||||
|
|
||||||
|
@ -76,11 +83,6 @@ def distribute(v, comment):
|
||||||
u.coins += coinsperperson
|
u.coins += coinsperperson
|
||||||
add_notif(cid, u.id)
|
add_notif(cid, u.id)
|
||||||
|
|
||||||
autobetter = g.db.query(User).filter_by(id=AUTOBETTER_ID).one_or_none()
|
|
||||||
autobetter.coins -= pool
|
|
||||||
if autobetter.coins < 0: return {"error": "Not enough coins in bool"}, 400
|
|
||||||
g.db.add(autobetter)
|
|
||||||
|
|
||||||
cid = notif_comment(f"You lost the 200 coins you bet on [{post.permalink}]({post.permalink}) :marseylaugh:")
|
cid = notif_comment(f"You lost the 200 coins you bet on [{post.permalink}]({post.permalink}) :marseylaugh:")
|
||||||
cids = [x.id for x in post.bet_options]
|
cids = [x.id for x in post.bet_options]
|
||||||
cids.remove(comment)
|
cids.remove(comment)
|
||||||
|
@ -500,14 +502,11 @@ def users_list(v):
|
||||||
@admin_level_required(2)
|
@admin_level_required(2)
|
||||||
def alt_votes_get(v):
|
def alt_votes_get(v):
|
||||||
|
|
||||||
if not request.values.get("u1") or not request.values.get("u2"):
|
|
||||||
return render_template("admin/alt_votes.html", v=v)
|
|
||||||
|
|
||||||
u1 = request.values.get("u1")
|
u1 = request.values.get("u1")
|
||||||
u2 = request.values.get("u2")
|
u2 = request.values.get("u2")
|
||||||
|
|
||||||
if not u1 or not u2:
|
if not u1 or not u2:
|
||||||
return redirect("/admin/alt_votes")
|
return render_template("admin/alt_votes.html", v=v)
|
||||||
|
|
||||||
u1 = get_user(u1)
|
u1 = get_user(u1)
|
||||||
u2 = get_user(u2)
|
u2 = get_user(u2)
|
||||||
|
|
|
@ -356,7 +356,8 @@ def award_post(pid, v):
|
||||||
g.db.add(post.author)
|
g.db.add(post.author)
|
||||||
|
|
||||||
g.db.commit()
|
g.db.commit()
|
||||||
if request.referrer and len(request.referrer) > 1: return redirect(request.referrer)
|
if request.referrer and len(request.referrer) > 1 and (request.referrer.startswith('/') or request.referrer.startswith(request.host_url)):
|
||||||
|
return redirect(request.referrer)
|
||||||
else: return redirect("/")
|
else: return redirect("/")
|
||||||
|
|
||||||
|
|
||||||
|
@ -540,7 +541,8 @@ def award_comment(cid, v):
|
||||||
g.db.add(c.author)
|
g.db.add(c.author)
|
||||||
|
|
||||||
g.db.commit()
|
g.db.commit()
|
||||||
if request.referrer and len(request.referrer) > 1: return redirect(request.referrer)
|
if request.referrer and len(request.referrer) > 1 and (request.referrer.startswith('/') or request.referrer.startswith(request.host_url)):
|
||||||
|
return redirect(request.referrer)
|
||||||
else: return redirect("/")
|
else: return redirect("/")
|
||||||
|
|
||||||
@app.get("/admin/awards")
|
@app.get("/admin/awards")
|
||||||
|
|
|
@ -469,29 +469,32 @@ def api_comment(v):
|
||||||
if len(c.body) > 500: notifbody = c.body[:500] + '...'
|
if len(c.body) > 500: notifbody = c.body[:500] + '...'
|
||||||
else: notifbody = c.body
|
else: notifbody = c.body
|
||||||
|
|
||||||
beams_client.publish_to_interests(
|
try:
|
||||||
interests=[f'{request.host}{parent.author.id}'],
|
beams_client.publish_to_interests(
|
||||||
publish_body={
|
interests=[f'{request.host}{parent.author.id}'],
|
||||||
'web': {
|
publish_body={
|
||||||
'notification': {
|
'web': {
|
||||||
'title': f'New reply by @{v.username}',
|
'notification': {
|
||||||
'body': notifbody,
|
'title': f'New reply by @{v.username}',
|
||||||
'deep_link': f'https://{site}/comment/{c.id}?context=9&read=true#context',
|
'body': notifbody,
|
||||||
'icon': f'https://{request.host}/assets/images/{SITE_NAME}/icon.webp',
|
'deep_link': f'https://{site}/comment/{c.id}?context=9&read=true#context',
|
||||||
}
|
'icon': f'https://{request.host}/assets/images/{SITE_NAME}/icon.webp',
|
||||||
},
|
}
|
||||||
'fcm': {
|
|
||||||
'notification': {
|
|
||||||
'title': f'New reply by @{v.username}',
|
|
||||||
'body': notifbody,
|
|
||||||
},
|
},
|
||||||
'data': {
|
'fcm': {
|
||||||
'url': f'comment/{c.id}?context=9&read=true#context',
|
'notification': {
|
||||||
|
'title': f'New reply by @{v.username}',
|
||||||
|
'body': notifbody,
|
||||||
|
},
|
||||||
|
'data': {
|
||||||
|
'url': f'comment/{c.id}?context=9&read=true#context',
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
)
|
||||||
)
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
print(c.id)
|
||||||
|
|
||||||
|
|
||||||
vote = CommentVote(user_id=v.id,
|
vote = CommentVote(user_id=v.id,
|
||||||
|
@ -512,7 +515,7 @@ def api_comment(v):
|
||||||
|
|
||||||
c.voted = 1
|
c.voted = 1
|
||||||
|
|
||||||
if v.id in AUTO_UPVOTE_IDS:
|
if v.id == PIZZASHILL_ID:
|
||||||
autovote = CommentVote(user_id=CARP_ID, comment_id=c.id, vote_type=1)
|
autovote = CommentVote(user_id=CARP_ID, comment_id=c.id, vote_type=1)
|
||||||
g.db.add(autovote)
|
g.db.add(autovote)
|
||||||
autovote = CommentVote(user_id=AEVANN_ID, comment_id=c.id, vote_type=1)
|
autovote = CommentVote(user_id=AEVANN_ID, comment_id=c.id, vote_type=1)
|
||||||
|
@ -524,6 +527,14 @@ def api_comment(v):
|
||||||
g.db.add(v)
|
g.db.add(v)
|
||||||
c.upvotes += 3
|
c.upvotes += 3
|
||||||
g.db.add(c)
|
g.db.add(c)
|
||||||
|
elif v.id == HIL_ID:
|
||||||
|
autovote = CommentVote(user_id=CARP_ID, comment_id=c.id, vote_type=1)
|
||||||
|
g.db.add(autovote)
|
||||||
|
v.coins += 1
|
||||||
|
v.truecoins += 1
|
||||||
|
g.db.add(v)
|
||||||
|
c.upvotes += 1
|
||||||
|
g.db.add(c)
|
||||||
|
|
||||||
g.db.commit()
|
g.db.commit()
|
||||||
|
|
||||||
|
|
|
@ -13,13 +13,12 @@ def error_400(e):
|
||||||
@app.errorhandler(401)
|
@app.errorhandler(401)
|
||||||
def error_401(e):
|
def error_401(e):
|
||||||
|
|
||||||
path = request.path
|
|
||||||
qs = urlencode(dict(request.values))
|
|
||||||
argval = quote(f"{path}?{qs}", safe='')
|
|
||||||
output = f"/login?redirect={argval}"
|
|
||||||
|
|
||||||
if request.headers.get("Authorization") or request.headers.get("xhr"): return {"error": "401 Not Authorized"}, 401
|
if request.headers.get("Authorization") or request.headers.get("xhr"): return {"error": "401 Not Authorized"}, 401
|
||||||
else: return redirect(output)
|
else:
|
||||||
|
path = request.path
|
||||||
|
qs = urlencode(dict(request.values))
|
||||||
|
argval = quote(f"{path}?{qs}", safe='')
|
||||||
|
return redirect(f"/login?redirect={argval}")
|
||||||
|
|
||||||
|
|
||||||
@app.errorhandler(403)
|
@app.errorhandler(403)
|
||||||
|
@ -61,4 +60,6 @@ def error_500(e):
|
||||||
@app.post("/allow_nsfw")
|
@app.post("/allow_nsfw")
|
||||||
def allow_nsfw():
|
def allow_nsfw():
|
||||||
session["over_18"] = int(time.time()) + 3600
|
session["over_18"] = int(time.time()) + 3600
|
||||||
return redirect(request.values.get("redir", "/"))
|
redir = request.values.get("redir")
|
||||||
|
if redir and redir.startswith(request.host_url) or redir.startswith('/'): return redirect(redir)
|
||||||
|
return redirect('/')
|
|
@ -6,11 +6,6 @@ from files.classes.submission import Submission
|
||||||
defaulttimefilter = environ.get("DEFAULT_TIME_FILTER", "all").strip()
|
defaulttimefilter = environ.get("DEFAULT_TIME_FILTER", "all").strip()
|
||||||
SITE_NAME = environ.get("SITE_NAME", "").strip()
|
SITE_NAME = environ.get("SITE_NAME", "").strip()
|
||||||
|
|
||||||
@app.get("/post/")
|
|
||||||
@auth_required
|
|
||||||
def slash_post(v):
|
|
||||||
return redirect("/")
|
|
||||||
|
|
||||||
@app.post("/clear")
|
@app.post("/clear")
|
||||||
@auth_required
|
@auth_required
|
||||||
def clear(v):
|
def clear(v):
|
||||||
|
@ -123,7 +118,8 @@ def notifications(v):
|
||||||
@auth_desired
|
@auth_desired
|
||||||
def front_all(v):
|
def front_all(v):
|
||||||
|
|
||||||
if not v and request.path == "/" and not request.headers.get("Authorization"): return redirect(f"/logged_out{request.full_path}")
|
if not v and request.path == "/" and not request.headers.get("Authorization"):
|
||||||
|
return redirect(f"/logged_out{request.full_path}")
|
||||||
|
|
||||||
if v and request.path.startswith('/logged_out'): v = None
|
if v and request.path.startswith('/logged_out'): v = None
|
||||||
|
|
||||||
|
@ -436,7 +432,7 @@ def comment_idlist(page=1, v=None, nsfw=False, sort="new", t="all"):
|
||||||
elif sort == "controversial":
|
elif sort == "controversial":
|
||||||
comments = comments.order_by(-1 * Comment.upvotes * Comment.downvotes * Comment.downvotes)
|
comments = comments.order_by(-1 * Comment.upvotes * Comment.downvotes * Comment.downvotes)
|
||||||
elif sort == "top":
|
elif sort == "top":
|
||||||
comments = comments.order_by(Comment.realupvotes.desc())
|
comments = comments.order_by(Comment.downvotes - Comment.upvotes)
|
||||||
elif sort == "bottom":
|
elif sort == "bottom":
|
||||||
comments = comments.order_by(Comment.upvotes - Comment.downvotes)
|
comments = comments.order_by(Comment.upvotes - Comment.downvotes)
|
||||||
|
|
||||||
|
@ -467,3 +463,17 @@ def all_comments(v):
|
||||||
|
|
||||||
if request.headers.get("Authorization"): return {"data": [x.json for x in comments]}
|
if request.headers.get("Authorization"): return {"data": [x.json for x in comments]}
|
||||||
return render_template("home_comments.html", v=v, sort=sort, t=t, page=page, comments=comments, standalone=True, next_exists=next_exists)
|
return render_template("home_comments.html", v=v, sort=sort, t=t, page=page, comments=comments, standalone=True, next_exists=next_exists)
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/transfers")
|
||||||
|
@auth_required
|
||||||
|
def transfers(v):
|
||||||
|
|
||||||
|
page = int(request.values.get("page", 1))
|
||||||
|
|
||||||
|
comments = g.db.query(Comment).filter(Comment.author_id == NOTIFICATIONS_ID, Comment.parent_submission == None, Comment.distinguish_level == 6, Comment.body_html.like("%</a> has transferred %"), Comment.created_utc == 0).offset(25 * (page - 1)).limit(26).all()
|
||||||
|
|
||||||
|
next_exists = len(comments) > 25
|
||||||
|
comments = comments[:25]
|
||||||
|
|
||||||
|
return render_template("transfers.html", v=v, page=page, comments=comments, standalone=True, next_exists=next_exists)
|
|
@ -12,13 +12,14 @@ valid_password_regex = re.compile("^.{8,100}$")
|
||||||
@auth_desired
|
@auth_desired
|
||||||
def login_get(v):
|
def login_get(v):
|
||||||
|
|
||||||
redir = request.values.get("redirect", "/").replace("/logged_out", "").strip()
|
redir = request.values.get("redirect")
|
||||||
if v:
|
if redir:
|
||||||
return redirect(redir)
|
redir = redir.replace("/logged_out", "").strip()
|
||||||
|
if not redir.startswith(request.host_url) and not redir.startswith('/'): redir = None
|
||||||
|
|
||||||
return render_template("login.html",
|
if v and redir: return redirect(redir)
|
||||||
failed=False,
|
|
||||||
redirect=redir)
|
return render_template("login.html", failed=False, redirect=redir)
|
||||||
|
|
||||||
|
|
||||||
def check_for_alts(current_id):
|
def check_for_alts(current_id):
|
||||||
|
@ -137,10 +138,13 @@ def login_post():
|
||||||
|
|
||||||
if account.id != PW_ID: check_for_alts(account.id)
|
if account.id != PW_ID: check_for_alts(account.id)
|
||||||
|
|
||||||
redir = request.values.get("redirect", "/").replace("/logged_out", "").strip()
|
|
||||||
|
|
||||||
g.db.commit()
|
g.db.commit()
|
||||||
|
|
||||||
|
redir = request.values.get("redirect")
|
||||||
|
if redir:
|
||||||
|
redir = redir.replace("/logged_out", "").strip()
|
||||||
|
if not redir.startswith(request.host_url) and not redir.startswith('/'): redir = '/'
|
||||||
|
|
||||||
return redirect(redir)
|
return redirect(redir)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -96,7 +96,8 @@ def submit_get(v):
|
||||||
@app.get("/logged_out/post/<pid>/<anything>")
|
@app.get("/logged_out/post/<pid>/<anything>")
|
||||||
@auth_desired
|
@auth_desired
|
||||||
def post_id(pid, anything=None, v=None):
|
def post_id(pid, anything=None, v=None):
|
||||||
if not v and not request.path.startswith('/logged_out') and not request.headers.get("Authorization"): return redirect(f"/logged_out{request.full_path}")
|
if not v and not request.path.startswith('/logged_out') and not request.headers.get("Authorization"):
|
||||||
|
return redirect(f"/logged_out{request.full_path}")
|
||||||
|
|
||||||
if v and request.path.startswith('/logged_out'): v = None
|
if v and request.path.startswith('/logged_out'): v = None
|
||||||
|
|
||||||
|
@ -169,7 +170,7 @@ def post_id(pid, anything=None, v=None):
|
||||||
elif sort == "controversial":
|
elif sort == "controversial":
|
||||||
comments = comments.order_by(-1 * Comment.upvotes * Comment.downvotes * Comment.downvotes)
|
comments = comments.order_by(-1 * Comment.upvotes * Comment.downvotes * Comment.downvotes)
|
||||||
elif sort == "top":
|
elif sort == "top":
|
||||||
comments = comments.order_by(-Comment.upvotes - Comment.downvotes)
|
comments = comments.order_by(Comment.realupvotes.desc())
|
||||||
elif sort == "bottom":
|
elif sort == "bottom":
|
||||||
comments = comments.order_by(Comment.upvotes - Comment.downvotes)
|
comments = comments.order_by(Comment.upvotes - Comment.downvotes)
|
||||||
|
|
||||||
|
@ -186,7 +187,7 @@ def post_id(pid, anything=None, v=None):
|
||||||
elif sort == "controversial":
|
elif sort == "controversial":
|
||||||
comments = comments.order_by(-1 * Comment.upvotes * Comment.downvotes * Comment.downvotes)
|
comments = comments.order_by(-1 * Comment.upvotes * Comment.downvotes * Comment.downvotes)
|
||||||
elif sort == "top":
|
elif sort == "top":
|
||||||
comments = comments.order_by(-Comment.upvotes - Comment.downvotes)
|
comments = comments.order_by(Comment.realupvotes.desc())
|
||||||
elif sort == "bottom":
|
elif sort == "bottom":
|
||||||
comments = comments.order_by(Comment.upvotes - Comment.downvotes)
|
comments = comments.order_by(Comment.upvotes - Comment.downvotes)
|
||||||
|
|
||||||
|
@ -288,7 +289,7 @@ def viewmore(v, pid, sort, offset):
|
||||||
elif sort == "controversial":
|
elif sort == "controversial":
|
||||||
comments = comments.order_by(-1 * Comment.upvotes * Comment.downvotes * Comment.downvotes)
|
comments = comments.order_by(-1 * Comment.upvotes * Comment.downvotes * Comment.downvotes)
|
||||||
elif sort == "top":
|
elif sort == "top":
|
||||||
comments = comments.order_by(-Comment.upvotes - Comment.downvotes)
|
comments = comments.order_by(Comment.realupvotes.desc())
|
||||||
elif sort == "bottom":
|
elif sort == "bottom":
|
||||||
comments = comments.order_by(Comment.upvotes - Comment.downvotes)
|
comments = comments.order_by(Comment.upvotes - Comment.downvotes)
|
||||||
|
|
||||||
|
@ -305,7 +306,7 @@ def viewmore(v, pid, sort, offset):
|
||||||
elif sort == "controversial":
|
elif sort == "controversial":
|
||||||
comments = comments.order_by(-1 * Comment.upvotes * Comment.downvotes * Comment.downvotes)
|
comments = comments.order_by(-1 * Comment.upvotes * Comment.downvotes * Comment.downvotes)
|
||||||
elif sort == "top":
|
elif sort == "top":
|
||||||
comments = comments.order_by(-Comment.upvotes - Comment.downvotes)
|
comments = comments.order_by(Comment.realupvotes.desc())
|
||||||
elif sort == "bottom":
|
elif sort == "bottom":
|
||||||
comments = comments.order_by(Comment.upvotes - Comment.downvotes)
|
comments = comments.order_by(Comment.upvotes - Comment.downvotes)
|
||||||
|
|
||||||
|
@ -1064,6 +1065,7 @@ def submit_post(v):
|
||||||
title = url_match.group(5)
|
title = url_match.group(5)
|
||||||
if "Snapshots:\n\n" not in body: body += "Snapshots:\n\n"
|
if "Snapshots:\n\n" not in body: body += "Snapshots:\n\n"
|
||||||
|
|
||||||
|
if f'**[{title}]({href})**:\n\n' in body: continue
|
||||||
body += f'**[{title}]({href})**:\n\n'
|
body += f'**[{title}]({href})**:\n\n'
|
||||||
if href.startswith('https://old.reddit.com/'):
|
if href.startswith('https://old.reddit.com/'):
|
||||||
body += f'* [unddit.com](https://unddit.com/{href.replace("https://old.reddit.com/", "")})\n'
|
body += f'* [unddit.com](https://unddit.com/{href.replace("https://old.reddit.com/", "")})\n'
|
||||||
|
@ -1106,7 +1108,7 @@ def submit_post(v):
|
||||||
send_discord_message(f"https://{site}{new_post.permalink}")
|
send_discord_message(f"https://{site}{new_post.permalink}")
|
||||||
cache.delete_memoized(changeloglist)
|
cache.delete_memoized(changeloglist)
|
||||||
|
|
||||||
if v.id in AUTO_UPVOTE_IDS:
|
if v.id in (PIZZASHILL_ID, HIL_ID):
|
||||||
autovote = Vote(user_id=CARP_ID, submission_id=new_post.id, vote_type=1)
|
autovote = Vote(user_id=CARP_ID, submission_id=new_post.id, vote_type=1)
|
||||||
g.db.add(autovote)
|
g.db.add(autovote)
|
||||||
autovote = Vote(user_id=AEVANN_ID, submission_id=new_post.id, vote_type=1)
|
autovote = Vote(user_id=AEVANN_ID, submission_id=new_post.id, vote_type=1)
|
||||||
|
|
|
@ -255,7 +255,7 @@ def searchcomments(v):
|
||||||
elif sort == "controversial":
|
elif sort == "controversial":
|
||||||
comments = comments.order_by(-1 * Comment.upvotes * Comment.downvotes * Comment.downvotes)
|
comments = comments.order_by(-1 * Comment.upvotes * Comment.downvotes * Comment.downvotes)
|
||||||
elif sort == "top":
|
elif sort == "top":
|
||||||
comments = comments.order_by(Comment.realupvotes.desc())
|
comments = comments.order_by(Comment.downvotes - Comment.upvotes)
|
||||||
elif sort == "bottom":
|
elif sort == "bottom":
|
||||||
comments = comments.order_by(Comment.upvotes - Comment.downvotes)
|
comments = comments.order_by(Comment.upvotes - Comment.downvotes)
|
||||||
|
|
||||||
|
|
|
@ -473,7 +473,7 @@ def gumroad(v):
|
||||||
send_repeatable_notification(v.id, f"You have received {procoins} Marseybux! You can use them to buy awards in the [shop](/shop).")
|
send_repeatable_notification(v.id, f"You have received {procoins} Marseybux! You can use them to buy awards in the [shop](/shop).")
|
||||||
|
|
||||||
if v.truecoins > 150 and v.patron: v.cluballowed = True
|
if v.truecoins > 150 and v.patron: v.cluballowed = True
|
||||||
if v.patron > 3 and v.verified == None: v.verified = "Verified"
|
if v.patron > 1 and v.verified == None: v.verified = "Verified"
|
||||||
|
|
||||||
g.db.add(v)
|
g.db.add(v)
|
||||||
|
|
||||||
|
|
|
@ -244,11 +244,13 @@ def transfer_coins(v, username):
|
||||||
tax = math.ceil(amount*0.03)
|
tax = math.ceil(amount*0.03)
|
||||||
tax_receiver = g.db.query(User).filter_by(id=TAX_RECEIVER_ID).one_or_none()
|
tax_receiver = g.db.query(User).filter_by(id=TAX_RECEIVER_ID).one_or_none()
|
||||||
tax_receiver.coins += tax
|
tax_receiver.coins += tax
|
||||||
log_message = f"[@{v.username}](/id/{v.id}) has transferred {amount} {app.config['COINS_NAME']} to [@{receiver.username}]({receiver.id})"
|
|
||||||
send_repeatable_notification(TAX_RECEIVER_ID, log_message)
|
|
||||||
g.db.add(tax_receiver)
|
g.db.add(tax_receiver)
|
||||||
else: tax = 0
|
else: tax = 0
|
||||||
|
|
||||||
|
if TAX_RECEIVER_ID:
|
||||||
|
log_message = f"[@{v.username}](/id/{v.id}) has transferred {amount} {app.config['COINS_NAME']} to [@{receiver.username}]({receiver.id})"
|
||||||
|
send_repeatable_notification(TAX_RECEIVER_ID, log_message)
|
||||||
|
|
||||||
receiver.coins += amount-tax
|
receiver.coins += amount-tax
|
||||||
v.coins -= amount
|
v.coins -= amount
|
||||||
send_repeatable_notification(receiver.id, f"🤑 [@{v.username}](/id/{v.id}) has gifted you {amount-tax} {app.config['COINS_NAME']}!")
|
send_repeatable_notification(receiver.id, f"🤑 [@{v.username}](/id/{v.id}) has gifted you {amount-tax} {app.config['COINS_NAME']}!")
|
||||||
|
@ -628,7 +630,7 @@ def u_username(username, v=None):
|
||||||
|
|
||||||
|
|
||||||
if username != u.username:
|
if username != u.username:
|
||||||
return redirect(request.path.replace(username, u.username))
|
return redirect(request.full_path.replace(username, u.username))
|
||||||
|
|
||||||
if u.reserved:
|
if u.reserved:
|
||||||
if request.headers.get("Authorization") or request.headers.get("xhr"): return {"error": f"That username is reserved for: {u.reserved}"}
|
if request.headers.get("Authorization") or request.headers.get("xhr"): return {"error": f"That username is reserved for: {u.reserved}"}
|
||||||
|
@ -796,7 +798,7 @@ def u_username_comments(username, v=None):
|
||||||
elif sort == "controversial":
|
elif sort == "controversial":
|
||||||
comments = comments.order_by(-1 * Comment.upvotes * Comment.downvotes * Comment.downvotes)
|
comments = comments.order_by(-1 * Comment.upvotes * Comment.downvotes * Comment.downvotes)
|
||||||
elif sort == "top":
|
elif sort == "top":
|
||||||
comments = comments.order_by(Comment.realupvotes.desc())
|
comments = comments.order_by(Comment.downvotes - Comment.upvotes)
|
||||||
elif sort == "bottom":
|
elif sort == "bottom":
|
||||||
comments = comments.order_by(Comment.upvotes - Comment.downvotes)
|
comments = comments.order_by(Comment.upvotes - Comment.downvotes)
|
||||||
|
|
||||||
|
|
|
@ -102,7 +102,7 @@ def api_vote_post(post_id, new, v):
|
||||||
post.author.coins += 1
|
post.author.coins += 1
|
||||||
post.author.truecoins += 1
|
post.author.truecoins += 1
|
||||||
g.db.add(post.author)
|
g.db.add(post.author)
|
||||||
real = (bool(v.profileurl) or bool(v.customtitle) or v.namecolor != defaultcolor) and not v.agendaposter and not v.shadowbanned
|
real = new == -1 or (not v.agendaposter and not v.shadowbanned and (bool(v.profileurl) or bool(v.customtitle) or v.namecolor != defaultcolor))
|
||||||
vote = Vote(user_id=v.id,
|
vote = Vote(user_id=v.id,
|
||||||
vote_type=new,
|
vote_type=new,
|
||||||
submission_id=post_id,
|
submission_id=post_id,
|
||||||
|
@ -115,7 +115,7 @@ def api_vote_post(post_id, new, v):
|
||||||
g.db.flush()
|
g.db.flush()
|
||||||
post.upvotes = g.db.query(Vote.id).filter_by(submission_id=post.id, vote_type=1).count()
|
post.upvotes = g.db.query(Vote.id).filter_by(submission_id=post.id, vote_type=1).count()
|
||||||
post.downvotes = g.db.query(Vote.id).filter_by(submission_id=post.id, vote_type=-1).count()
|
post.downvotes = g.db.query(Vote.id).filter_by(submission_id=post.id, vote_type=-1).count()
|
||||||
post.realupvotes = g.db.query(Vote.id).filter_by(submission_id=post.id, vote_type=1, real=True).count() - g.db.query(Vote.id).filter_by(submission_id=post.id, vote_type=1, real=False).count() + g.db.query(Vote.id).filter_by(submission_id=post.id, vote_type=-1).count()
|
post.realupvotes = g.db.query(Vote.id).filter_by(submission_id=post.id, real=True).count()
|
||||||
if post.author.progressivestack: post.realupvotes *= 2
|
if post.author.progressivestack: post.realupvotes *= 2
|
||||||
g.db.add(post)
|
g.db.add(post)
|
||||||
g.db.commit()
|
g.db.commit()
|
||||||
|
@ -167,7 +167,7 @@ def api_vote_comment(comment_id, new, v):
|
||||||
comment.author.coins += 1
|
comment.author.coins += 1
|
||||||
comment.author.truecoins += 1
|
comment.author.truecoins += 1
|
||||||
g.db.add(comment.author)
|
g.db.add(comment.author)
|
||||||
real = (bool(v.profileurl) or bool(v.customtitle) or v.namecolor != defaultcolor) and not v.agendaposter and not v.shadowbanned
|
real = new == -1 or (not v.agendaposter and not v.shadowbanned and (bool(v.profileurl) or bool(v.customtitle) or v.namecolor != defaultcolor))
|
||||||
vote = CommentVote(user_id=v.id,
|
vote = CommentVote(user_id=v.id,
|
||||||
vote_type=new,
|
vote_type=new,
|
||||||
comment_id=comment_id,
|
comment_id=comment_id,
|
||||||
|
@ -181,7 +181,7 @@ def api_vote_comment(comment_id, new, v):
|
||||||
g.db.flush()
|
g.db.flush()
|
||||||
comment.upvotes = g.db.query(CommentVote.id).filter_by(comment_id=comment.id, vote_type=1).count()
|
comment.upvotes = g.db.query(CommentVote.id).filter_by(comment_id=comment.id, vote_type=1).count()
|
||||||
comment.downvotes = g.db.query(CommentVote.id).filter_by(comment_id=comment.id, vote_type=-1).count()
|
comment.downvotes = g.db.query(CommentVote.id).filter_by(comment_id=comment.id, vote_type=-1).count()
|
||||||
comment.realupvotes = g.db.query(CommentVote.id).filter_by(comment_id=comment.id, vote_type=1, real=True).count() - g.db.query(CommentVote.id).filter_by(comment_id=comment.id, vote_type=1, real=False).count() + g.db.query(CommentVote.id).filter_by(comment_id=comment.id, vote_type=-1).count()
|
comment.realupvotes = g.db.query(CommentVote.id).filter_by(comment_id=comment.id, real=True).count()
|
||||||
if comment.author.progressivestack: comment.realupvotes *= 2
|
if comment.author.progressivestack: comment.realupvotes *= 2
|
||||||
g.db.add(comment)
|
g.db.add(comment)
|
||||||
g.db.commit()
|
g.db.commit()
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
<label class="custom-control-label" for="{{k}}"></label>
|
<label class="custom-control-label" for="{{k}}"></label>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td><label for="badge-{{k}}"><img alt="{{v['name']}}" loading="lazy" src="/static/assets/images/badges/{{v['name']}}.webp?a=4" width="70px" height="70px"></label></td>
|
<td><label for="badge-{{k}}"><img alt="{{v['name']}}" loading="lazy" src="/static/assets/images/badges/{{v['name']}}.webp?a=5" width="70px" height="70px"></label></td>
|
||||||
<td>{{v['name']}}</td>
|
<td>{{v['name']}}</td>
|
||||||
<td>{{v['description']}}</td>
|
<td>{{v['description']}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
<label class="custom-control-label" for="{{k}}"></label>
|
<label class="custom-control-label" for="{{k}}"></label>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td><label for="badge-{{k}}"><img alt="{{v['name']}}" loading="lazy" src="/static/assets/images/badges/{{v['name']}}.webp?a=4" width="70px" height="70px"></label></td>
|
<td><label for="badge-{{k}}"><img alt="{{v['name']}}" loading="lazy" src="/static/assets/images/badges/{{v['name']}}.webp?a=5" width="70px" height="70px"></label></td>
|
||||||
<td>{{v['name']}}</td>
|
<td>{{v['name']}}</td>
|
||||||
<td>{{v['description']}}</td>
|
<td>{{v['description']}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
{% if v %}
|
{% if v %}
|
||||||
<style>:root{--primary:#{{v.themecolor}}}</style>
|
<style>:root{--primary:#{{v.themecolor}}}</style>
|
||||||
<link rel="stylesheet" href="/static/assets/css/main.css?a=78"><link rel="stylesheet" href="/static/assets/css/{{v.theme}}.css?a=11">
|
<link rel="stylesheet" href="/static/assets/css/main.css?a=83"><link rel="stylesheet" href="/static/assets/css/{{v.theme}}.css?a=11">
|
||||||
{% if v.agendaposter %}
|
{% if v.agendaposter %}
|
||||||
<style>
|
<style>
|
||||||
html {
|
html {
|
||||||
|
@ -39,7 +39,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
||||||
<link rel="stylesheet" href="/static/assets/css/main.css?a=78"><link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
<link rel="stylesheet" href="/static/assets/css/main.css?a=83"><link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
@ -111,7 +111,7 @@
|
||||||
|
|
||||||
<div class="splash-overlay"></div>
|
<div class="splash-overlay"></div>
|
||||||
|
|
||||||
<img alt="cover" loading="lazy" class="splash-img" src="/static/assets/images/{{SITE_NAME}}/cover.webp?a=3"></img>
|
<img alt="cover" loading="lazy" class="splash-img" src="/static/assets/images/{{SITE_NAME}}/cover.webp?a=1004"></img>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
{% for k,v in badges.items() %}
|
{% for k,v in badges.items() %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{v['name']}}</td>
|
<td>{{v['name']}}</td>
|
||||||
<td><img alt="{{v['name']}}" loading="lazy" src="/static/assets/images/badges/{{v['name']}}.webp?a=4" width=50 height=50>
|
<td><img alt="{{v['name']}}" loading="lazy" src="/static/assets/images/badges/{{v['name']}}.webp?a=5" width=50 height=50>
|
||||||
<td>{{v['description']}}</td>
|
<td>{{v['description']}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -149,8 +149,8 @@
|
||||||
{% if c.post and c.post.over_18 %}<span class="badge badge-danger text-small-extra mr-1">+18</span>{% endif %}
|
{% if c.post and c.post.over_18 %}<span class="badge badge-danger text-small-extra mr-1">+18</span>{% endif %}
|
||||||
<span class="align-top">
|
<span class="align-top">
|
||||||
{% if c.post %}
|
{% if c.post %}
|
||||||
{% if c.author_id==v.id and c.child_comments and is_notification_page%}
|
{% if c.author_id==v.id and replies and is_notification_page%}
|
||||||
<span class="font-weight-bold">Comment {{'Replies' if (c.child_comments | length)>1 else 'Reply'}}: <a href="{{c.post.permalink}}">{{c.post.realtitle(v) | safe}}</a></span>
|
<span class="font-weight-bold">Comment {{'Replies' if (replies | length)>1 else 'Reply'}}: <a href="{{c.post.permalink}}">{{c.post.realtitle(v) | safe}}</a></span>
|
||||||
{% elif c.post.author_id==v.id and c.level == 1 and is_notification_page%}
|
{% elif c.post.author_id==v.id and c.level == 1 and is_notification_page%}
|
||||||
<span class="font-weight-bold">Post Reply: <a href="{{c.post.permalink}}">{{c.post.realtitle(v) | safe}}</a></span>
|
<span class="font-weight-bold">Post Reply: <a href="{{c.post.permalink}}">{{c.post.realtitle(v) | safe}}</a></span>
|
||||||
{% elif is_notification_page and c.parent_submission in v.subscribed_idlist() %}
|
{% elif is_notification_page and c.parent_submission in v.subscribed_idlist() %}
|
||||||
|
@ -217,7 +217,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<a class="user-name text-decoration-none" onclick='popclick({{c.author.json_popover(v) | tojson}})' data-bs-placement="bottom" data-bs-toggle="popover" data-bs-trigger="focus" data-content-id="popover" role="button" tabindex="0" style="color:#{{c.author.namecolor}}; font-size:12px; font-weight:bold;"><img alt="@{{c.author.username}}'s profile picture" loading="lazy" src="{{c.author.profile_url}}" class="profile-pic-25 mr-2"><span {% if c.author.patron and not c.distinguish_level %}class="patron" style="background-color:#{{c.author.namecolor}};"{% elif c.distinguish_level and request.host == 'rdrama.net' %}class="mod"{% endif %}>{{c.author.username}}</span></a>
|
<a class="user-name text-decoration-none" onclick='popclick({{c.author.json_popover(v) | tojson}})' data-bs-placement="bottom" data-bs-toggle="popover" data-bs-trigger="focus" data-content-id="popover" role="button" tabindex="0" style="color:#{{c.author.namecolor}}; font-size:12px; font-weight:bold;"><img alt="@{{c.author.username}}'s profile picture" loading="lazy" src="{{c.author.profile_url}}" class="profile-pic-25 mr-2"><span {% if c.author.patron and not c.distinguish_level %}class="patron" style="background-color:#{{c.author.namecolor}};"{% elif c.distinguish_level and request.host == 'rdrama.net' %}class="mod"{% endif %}>{{c.author.username}}</span></a>
|
||||||
{% if c.author.customtitle %} <bdi style="color: #{{c.author.titlecolor}}"> {% if c.author.quadrant %}<img alt="{{c.author.quadrant}} quadrant" loading="lazy" height="20" src="/static/assets/images/quadrants/{{c.author.quadrant}}.webp?a=3">{% endif %}{{c.author.customtitle | safe}}</bdi>{% endif %}
|
{% if c.author.customtitle %} <bdi style="color: #{{c.author.titlecolor}}"> {% if c.author.quadrant %}<img alt="{{c.author.quadrant}} quadrant" loading="lazy" height="20" src="/static/assets/images/quadrants/{{c.author.quadrant}}.webp?a=1004">{% endif %}{{c.author.customtitle | safe}}</bdi>{% endif %}
|
||||||
|
|
||||||
{% if c.parent_comment_id and not standalone and level != 1 %}<a href="#comment-{{c.parent_comment_id}}-only" class="text-muted ml-2"><i class="fas fa-reply fa-sm fa-fw fa-flip-horizontal mr-1"></i>{{c.parent_comment.author.username}}</a>{% endif %}
|
{% if c.parent_comment_id and not standalone and level != 1 %}<a href="#comment-{{c.parent_comment_id}}-only" class="text-muted ml-2"><i class="fas fa-reply fa-sm fa-fw fa-flip-horizontal mr-1"></i>{{c.parent_comment.author.username}}</a>{% endif %}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<script src="/static/assets/js/bootstrap.js?a=202"></script>
|
<script src="/static/assets/js/bootstrap.js?a=202"></script>
|
||||||
{% if v %}
|
{% if v %}
|
||||||
<style>:root{--primary:#{{v.themecolor}}}</style>
|
<style>:root{--primary:#{{v.themecolor}}}</style>
|
||||||
<link rel="stylesheet" href="/static/assets/css/main.css?a=78">
|
<link rel="stylesheet" href="/static/assets/css/main.css?a=83">
|
||||||
<link rel="stylesheet" href="/static/assets/css/{{v.theme}}.css?a=11">
|
<link rel="stylesheet" href="/static/assets/css/{{v.theme}}.css?a=11">
|
||||||
{% if v.agendaposter %}
|
{% if v.agendaposter %}
|
||||||
<style>
|
<style>
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
||||||
<link rel="stylesheet" href="/static/assets/css/main.css?a=78"><link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
<link rel="stylesheet" href="/static/assets/css/main.css?a=83"><link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
|
|
|
@ -29,6 +29,9 @@
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link emojitab" data-bs-toggle="tab" href="#emoji-tab-flags">Flags</a>
|
<a class="nav-link emojitab" data-bs-toggle="tab" href="#emoji-tab-flags">Flags</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link emojitab" data-bs-toggle="tab" href="#emoji-tab-wolf">Zombie Wolf</a>
|
||||||
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link emojitab" data-bs-toggle="tab" href="#emoji-tab-misc">Misc</a>
|
<a class="nav-link emojitab" data-bs-toggle="tab" href="#emoji-tab-misc">Misc</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -70,6 +73,9 @@
|
||||||
<div class="tab-pane fade" id="emoji-tab-flags">
|
<div class="tab-pane fade" id="emoji-tab-flags">
|
||||||
<div class="d-flex flex-wrap py-3 pl-2" id="EMOJIS_flags"></div>
|
<div class="d-flex flex-wrap py-3 pl-2" id="EMOJIS_flags"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tab-pane fade" id="emoji-tab-wolf">
|
||||||
|
<div class="d-flex flex-wrap py-3 pl-2" id="EMOJIS_wolf"></div>
|
||||||
|
</div>
|
||||||
<div class="tab-pane fade" id="emoji-tab-misc">
|
<div class="tab-pane fade" id="emoji-tab-misc">
|
||||||
<div class="d-flex flex-wrap py-3 pl-2" id="EMOJIS_misc"></div>
|
<div class="d-flex flex-wrap py-3 pl-2" id="EMOJIS_misc"></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -80,7 +86,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="/static/assets/js/emoji_modal.js?a=202"></script>
|
<script src="/static/assets/js/emoji_modal.js?a=205"></script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
a.emojitab {
|
a.emojitab {
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-10 col-md-5">
|
<div class="col-10 col-md-5">
|
||||||
<div class="text-center px-3 my-8">
|
<div class="text-center px-3 my-8">
|
||||||
<img alt=":#marseybrainlet:" loading="lazy" src="/static/assets/images/emojis/marseybrainlet.webp?a=3">
|
<img alt=":#marseybrainlet:" loading="lazy" src="/static/assets/images/emojis/marseybrainlet.webp?a=1004">
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
<h1 class="h5">400 Bad Request</h1>
|
<h1 class="h5">400 Bad Request</h1>
|
||||||
<p class="text-muted mb-5">That request was bad and you should feel bad.</p>
|
<p class="text-muted mb-5">That request was bad and you should feel bad.</p>
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<div class="col-10 col-md-5">
|
<div class="col-10 col-md-5">
|
||||||
<div class="text-center px-3 my-8">
|
<div class="text-center px-3 my-8">
|
||||||
|
|
||||||
<img alt=":#marseydead:" loading="lazy" src="/static/assets/images/emojis/marseydead.webp?a=3">
|
<img alt=":#marseydead:" loading="lazy" src="/static/assets/images/emojis/marseydead.webp?a=1004">
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
|
|
||||||
<h1 class="h5">401 Not Authorized</h1>
|
<h1 class="h5">401 Not Authorized</h1>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-10 col-md-5">
|
<div class="col-10 col-md-5">
|
||||||
<div class="text-center px-3 my-8">
|
<div class="text-center px-3 my-8">
|
||||||
<img alt=":#marseytroll:" loading="lazy" src="/static/assets/images/emojis/marseytroll.webp?a=3">
|
<img alt=":#marseytroll:" loading="lazy" src="/static/assets/images/emojis/marseytroll.webp?a=1004">
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
<h1 class="h5">403 Forbidden</h1>
|
<h1 class="h5">403 Forbidden</h1>
|
||||||
<p class="text-muted mb-5">YOU AREN'T WELCOME HERE GO AWAY</p>
|
<p class="text-muted mb-5">YOU AREN'T WELCOME HERE GO AWAY</p>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-10 col-md-5">
|
<div class="col-10 col-md-5">
|
||||||
<div class="text-center px-3 my-8">
|
<div class="text-center px-3 my-8">
|
||||||
<img alt=":#marseyconfused" loading="lazy" src="/static/assets/images/emojis/marseyconfused.webp?a=3">
|
<img alt=":#marseyconfused" loading="lazy" src="/static/assets/images/emojis/marseyconfused.webp?a=1004">
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
<h1 class="h5">404 Page Not Found</h1>
|
<h1 class="h5">404 Page Not Found</h1>
|
||||||
<p class="text-muted mb-5">Someone typed something wrong and it was probably you, please do better.</p>
|
<p class="text-muted mb-5">Someone typed something wrong and it was probably you, please do better.</p>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-10 col-md-5">
|
<div class="col-10 col-md-5">
|
||||||
<div class="text-center px-3 my-8">
|
<div class="text-center px-3 my-8">
|
||||||
<img alt=":#marseyretard:" loading="lazy" src="/static/assets/images/emojis/marseyretard.webp?a=3">
|
<img alt=":#marseyretard:" loading="lazy" src="/static/assets/images/emojis/marseyretard.webp?a=1004">
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
<h1 class="h5">405 Method Not Allowed</h1>
|
<h1 class="h5">405 Method Not Allowed</h1>
|
||||||
<p class="text-muted mb-5">idk how anyone gets this error but if you see this, remember to follow @carpathianflorist<BR>the original error text here talked about internet gremlins and wtf</p>
|
<p class="text-muted mb-5">idk how anyone gets this error but if you see this, remember to follow @carpathianflorist<BR>the original error text here talked about internet gremlins and wtf</p>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-10 col-md-5">
|
<div class="col-10 col-md-5">
|
||||||
<div class="text-center px-3 my-8">
|
<div class="text-center px-3 my-8">
|
||||||
<img alt=":#marseyrentfree:" loading="lazy" src="/static/assets/images/emojis/marseyrentfree.webp?a=3">
|
<img alt=":#marseyrentfree:" loading="lazy" src="/static/assets/images/emojis/marseyrentfree.webp?a=1004">
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
<h1 class="h5">429 Too Many Requests</h1>
|
<h1 class="h5">429 Too Many Requests</h1>
|
||||||
<p class="text-muted mb-5">go spam somewhere else nerd</p>
|
<p class="text-muted mb-5">go spam somewhere else nerd</p>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-10 col-md-5">
|
<div class="col-10 col-md-5">
|
||||||
<div class="text-center px-3 my-8">
|
<div class="text-center px-3 my-8">
|
||||||
<img alt=":#marseydead:" loading="lazy" src="/static/assets/images/emojis/marseydead.webp?a=3">
|
<img alt=":#marseydead:" loading="lazy" src="/static/assets/images/emojis/marseydead.webp?a=1004">
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
<h1 class="h5">500 Internal Server Error</h1>
|
<h1 class="h5">500 Internal Server Error</h1>
|
||||||
<p class="text-muted mb-5">Hiiiii it's carp! I think this error means that there's a timeout error. And I think that means something took too long to load so it decided not to work at all. If you keep seeing this on the same page <I>but not other pages</I>, then something is probably wrong with that specific function. It may not be called a function, but that sounds right to me. Anyway, ping me and I'll whine to someone smarter to fix it. Don't bother them. Thanks ily <3</p>
|
<p class="text-muted mb-5">Hiiiii it's carp! I think this error means that there's a timeout error. And I think that means something took too long to load so it decided not to work at all. If you keep seeing this on the same page <I>but not other pages</I>, then something is probably wrong with that specific function. It may not be called a function, but that sounds right to me. Anyway, ping me and I'll whine to someone smarter to fix it. Don't bother them. Thanks ily <3</p>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col col-md-5">
|
<div class="col col-md-5">
|
||||||
<div class="text-center px-3 mt-5">
|
<div class="text-center px-3 mt-5">
|
||||||
<img alt=":#marseytwerking:" loading="lazy" src="/static/assets/images/emojis/marseytwerking.webp?a=3">
|
<img alt=":#marseytwerking:" loading="lazy" src="/static/assets/images/emojis/marseytwerking.webp?a=1004">
|
||||||
<h1 class="h5">Are you over 18?</h1>
|
<h1 class="h5">Are you over 18?</h1>
|
||||||
<p class="mb-5">This post is rated +18 (Adult-Only). You must be 18 or older to continue. Are you sure you want to proceed?</p>
|
<p class="mb-5">This post is rated +18 (Adult-Only). You must be 18 or older to continue. Are you sure you want to proceed?</p>
|
||||||
<div class="btn-toolbar justify-content-center mb-4">
|
<div class="btn-toolbar justify-content-center mb-4">
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-10 col-md-5">
|
<div class="col-10 col-md-5">
|
||||||
<div class="text-center px-3 my-8">
|
<div class="text-center px-3 my-8">
|
||||||
<img alt=":#marseymerchant:" loading="lazy" class="mb-2" src="/static/assets/images/emojis/marseymerchant.webp?a=3">
|
<img alt=":#marseymerchant:" loading="lazy" class="mb-2" src="/static/assets/images/emojis/marseymerchant.webp?a=1004">
|
||||||
<h1 class="h5">401 Not Authorized</h1>
|
<h1 class="h5">401 Not Authorized</h1>
|
||||||
<p class="text-muted">This page is only available to {% if request.host == "rdrama.net" %}paypigs{% else %}patrons{% endif %}:</p>
|
<p class="text-muted">This page is only available to {% if request.host == "rdrama.net" %}paypigs{% else %}patrons{% endif %}:</p>
|
||||||
<a rel="nofollow noopener noreferrer" href="{{'GUMROAD_LINK' | app_config}}">{{'GUMROAD_LINK' | app_config}}</a>
|
<a rel="nofollow noopener noreferrer" href="{{'GUMROAD_LINK' | app_config}}">{{'GUMROAD_LINK' | app_config}}</a>
|
||||||
|
|
|
@ -69,22 +69,22 @@ You can use Markdown formatting:
|
||||||
<tr>
|
<tr>
|
||||||
<td>Emojis</td>
|
<td>Emojis</td>
|
||||||
<td>:marseylove:</td>
|
<td>:marseylove:</td>
|
||||||
<td><img loading="lazy" data-bs-toggle="tooltip" class="emj" alt=":marseylove:" data-bs-original-title=":marseylove:" delay="0" height="30" src="/static/assets/images/emojis/marseylove.webp?a=3"></td>
|
<td><img loading="lazy" data-bs-toggle="tooltip" class="emj" alt=":marseylove:" data-bs-original-title=":marseylove:" delay="0" height="30" src="/static/assets/images/emojis/marseylove.webp?a=1004"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Mirrored Emojis</td>
|
<td>Mirrored Emojis</td>
|
||||||
<td>:!marseylove:</td>
|
<td>:!marseylove:</td>
|
||||||
<td><img loading="lazy" data-bs-toggle="tooltip" class="emj mirrored" alt=":!marseylove:" data-bs-original-title=":!marseylove:" delay="0" height="30" src="/static/assets/images/emojis/marseylove.webp?a=3"></td>
|
<td><img loading="lazy" data-bs-toggle="tooltip" class="emj mirrored" alt=":!marseylove:" data-bs-original-title=":!marseylove:" delay="0" height="30" src="/static/assets/images/emojis/marseylove.webp?a=1004"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Large Emojis</td>
|
<td>Large Emojis</td>
|
||||||
<td>:#marseylove:</td>
|
<td>:#marseylove:</td>
|
||||||
<td><img loading="lazy" data-bs-toggle="tooltip" class="emj" alt=":!marseylove:" data-bs-original-title=":!marseylove:" delay="0" src="/static/assets/images/emojis/marseylove.webp?a=3"></td>
|
<td><img loading="lazy" data-bs-toggle="tooltip" class="emj" alt=":!marseylove:" data-bs-original-title=":!marseylove:" delay="0" src="/static/assets/images/emojis/marseylove.webp?a=1004"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Large Mirroed Emojis</td>
|
<td>Large Mirroed Emojis</td>
|
||||||
<td>:#!marseylove:</td>
|
<td>:#!marseylove:</td>
|
||||||
<td><img loading="lazy" data-bs-toggle="tooltip" class="emj mirrored" alt=":!marseylove:" data-bs-original-title=":!marseylove:" delay="0" src="/static/assets/images/emojis/marseylove.webp?a=3"></td>
|
<td><img loading="lazy" data-bs-toggle="tooltip" class="emj mirrored" alt=":!marseylove:" data-bs-original-title=":!marseylove:" delay="0" src="/static/assets/images/emojis/marseylove.webp?a=1004"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Poll Options</td>
|
<td>Poll Options</td>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<a href="/" class="navbar-brand mr-auto">
|
<a href="/" class="navbar-brand mr-auto">
|
||||||
<img alt="header icon" width=32.32 height=25 src="/static/assets/images/{{SITE_NAME}}/headericon.webp?a=8" style="object-fit: contain;">
|
<img alt="header icon" width=32.32 height=25 src="/static/assets/images/{{SITE_NAME}}/headericon.webp?a=8" style="object-fit: contain;">
|
||||||
{% if request.host != 'pcmemes.net' %}
|
{% if request.host != 'pcmemes.net' %}
|
||||||
<img alt="logo" src="/static/assets/images/{{SITE_NAME}}/logo.webp?a=3" height=20 width=77>
|
<img alt="logo" src="/static/assets/images/{{SITE_NAME}}/logo.webp?a=1004" height=20 width=77>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -170,7 +170,7 @@
|
||||||
<div class="d-none" id="pusherid">{{PUSHER_ID}}</div>
|
<div class="d-none" id="pusherid">{{PUSHER_ID}}</div>
|
||||||
<script src="/static/assets/js/pusher.js?a=202"></script>
|
<script src="/static/assets/js/pusher.js?a=202"></script>
|
||||||
<script>
|
<script>
|
||||||
if (Android){
|
if (typeof Android !== 'undefined') {
|
||||||
Android.Subscribe('{{request.host}}{{v.id}}');
|
Android.Subscribe('{{request.host}}{{v.id}}');
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
{% block sortnav %}{% endblock %}
|
{% block sortnav %}{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
<div class="d-flex justify-content-between align-items-center">
|
<div class="d-flex justify-content-between align-items-center">
|
||||||
|
|
||||||
|
@ -52,7 +51,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="row no-gutters {% if listing %}mt-md-3{% elif not listing %}my-md-3{% endif %}">
|
<div class="row no-gutters {% if listing %}mt-md-3{% elif not listing %}my-md-3{% endif %}">
|
||||||
|
|
||||||
<div class="col-12 px-3">
|
<div class="col-12 px-3">
|
||||||
|
@ -73,14 +71,14 @@
|
||||||
<ul class="pagination pagination-sm mb-0">
|
<ul class="pagination pagination-sm mb-0">
|
||||||
{% if page>1 %}
|
{% if page>1 %}
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<small><a class="page-link" href="?page={{page-1}}&sort={{sort}}&t={{t}}{% if shadowbanned %}&shadowbanned=true{% endif %}" tabindex="-1">Prev</a></small>
|
<small><a class="page-link" href="?page={{page-1}}&sort={{sort}}&t={{t}}" tabindex="-1">Prev</a></small>
|
||||||
</li>
|
</li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li class="page-item disabled"><span class="page-link">Prev</span></li>
|
<li class="page-item disabled"><span class="page-link">Prev</span></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if next_exists %}
|
{% if next_exists %}
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<small><a class="page-link" href="?page={{page+1}}&sort={{sort}}&t={{t}}{% if shadowbanned %}&shadowbanned=true{% endif %}">Next</a></small>
|
<small><a class="page-link" href="?page={{page+1}}&sort={{sort}}&t={{t}}">Next</a></small>
|
||||||
</li>
|
</li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li class="page-item disabled"><span class="page-link">Next</span></li>
|
<li class="page-item disabled"><span class="page-link">Next</span></li>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% if v %}
|
{% if v %}
|
||||||
<style>:root{--primary:#{{v.themecolor}}}</style>
|
<style>:root{--primary:#{{v.themecolor}}}</style>
|
||||||
<link rel="stylesheet" href="/static/assets/css/main.css?a=78"><link rel="stylesheet" href="/static/assets/css/{{v.theme}}.css?a=11">
|
<link rel="stylesheet" href="/static/assets/css/main.css?a=83"><link rel="stylesheet" href="/static/assets/css/{{v.theme}}.css?a=11">
|
||||||
{% if v.agendaposter %}
|
{% if v.agendaposter %}
|
||||||
<style>
|
<style>
|
||||||
html {
|
html {
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
||||||
<link rel="stylesheet" href="/static/assets/css/main.css?a=78"><link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
<link rel="stylesheet" href="/static/assets/css/main.css?a=83"><link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="row justify-content-around">
|
<div class="row justify-content-around">
|
||||||
|
@ -56,10 +56,10 @@
|
||||||
<div class="dropdown dropdown-actions">
|
<div class="dropdown dropdown-actions">
|
||||||
|
|
||||||
<button class="btn btn-secondary dropdown-toggle" role="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
<button class="btn btn-secondary dropdown-toggle" role="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
{% if admin %}<img src="/@{{admin}}/pic" alt="avatar" width=20 height=20 class="rounded-circle mr-2">{{admin}}{% else %}<img src="/static/assets/images/emojis/marseyjanny.webp" alt="avatar" width=20 height=20 class="rounded-circle mr-2">All{% endif %}
|
{% if admin %}<img src="/@{{admin}}/pic" alt="avatar" width=20 height=20 class="rounded-circle mr-2">{{admin}}{% else %}<img src="/static/assets/images/emojis/marseyjanny.webp?a=1004" alt="avatar" width=20 height=20 class="rounded-circle mr-2">All{% endif %}
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton" x-placement="bottom-start" style="position: absolute; will-change: transform; top: 0px; left: 0px; transform: translate3d(0px, 31px, 0px);">
|
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton" x-placement="bottom-start" style="position: absolute; will-change: transform; top: 0px; left: 0px; transform: translate3d(0px, 31px, 0px);">
|
||||||
<a class="dropdown-item" href="/log{% if type %}?kind={{type}}{% endif %}"><img src="/static/assets/images/emojis/marseyjanny.webp" alt="avatar" width=20 height=20 class="rounded-circle mr-2">All</a>
|
<a class="dropdown-item" href="/log{% if type %}?kind={{type}}{% endif %}"><img src="/static/assets/images/emojis/marseyjanny.webp?a=1004" alt="avatar" width=20 height=20 class="rounded-circle mr-2">All</a>
|
||||||
{% for a in admins %}
|
{% for a in admins %}
|
||||||
<a class="dropdown-item" href="?admin={{a}}{% if type %}&kind={{type}}{% endif %}"><img loading="lazy" src="/@{{a}}/pic" alt="avatar" width=20 height=20 class="rounded-circle mr-2">{{a}}</a>
|
<a class="dropdown-item" href="?admin={{a}}{% if type %}&kind={{type}}{% endif %}"><img loading="lazy" src="/@{{a}}/pic" alt="avatar" width=20 height=20 class="rounded-circle mr-2">{{a}}</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
||||||
<link rel="stylesheet" href="/static/assets/css/main.css?a=78">
|
<link rel="stylesheet" href="/static/assets/css/main.css?a=83">
|
||||||
<link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
<link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
@ -117,7 +117,7 @@
|
||||||
|
|
||||||
<div class="splash-overlay"></div>
|
<div class="splash-overlay"></div>
|
||||||
|
|
||||||
<img alt="cover" loading="lazy" class="splash-img" src="/static/assets/images/{{SITE_NAME}}/cover.webp?a=3"></img>
|
<img alt="cover" loading="lazy" class="splash-img" src="/static/assets/images/{{SITE_NAME}}/cover.webp?a=1004"></img>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<title>2-Step Login - {{SITE_NAME}}</title>
|
<title>2-Step Login - {{SITE_NAME}}</title>
|
||||||
|
|
||||||
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
||||||
<link rel="stylesheet" href="/static/assets/css/main.css?a=78"><link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
<link rel="stylesheet" href="/static/assets/css/main.css?a=83"><link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@
|
||||||
|
|
||||||
<div class="splash-overlay"></div>
|
<div class="splash-overlay"></div>
|
||||||
|
|
||||||
<img alt="cover" loading="lazy" class="splash-img" src="/static/assets/images/{{SITE_NAME}}/cover.webp?a=3"></img>
|
<img alt="cover" loading="lazy" class="splash-img" src="/static/assets/images/{{SITE_NAME}}/cover.webp?a=1004"></img>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td style="font-weight: bold">{{loop.index}}</td>
|
<td style="font-weight: bold">{{loop.index}}</td>
|
||||||
<td style="font-weight: bold">{{k[0]}}</td>
|
<td style="font-weight: bold">{{k[0]}}</td>
|
||||||
<td><img class="marsey" loading="lazy" data-bs-toggle="tooltip" alt=":{{k[0]}}:" title=":{{k[0]}}:" delay="0" src="/static/assets/images/emojis/{{k[0]}}.webp?a=1003" ></td>
|
<td><img class="marsey" loading="lazy" data-bs-toggle="tooltip" alt=":{{k[0]}}:" title=":{{k[0]}}:" delay="0" src="/static/assets/images/emojis/{{k[0]}}.webp?a=1004" ></td>
|
||||||
<td style="font-weight: bold">{{k[2]}}</td>
|
<td style="font-weight: bold">{{k[2]}}</td>
|
||||||
<td>{% if k[1] in ('anton-d','unknown') %}{{k[1]}}{% else %}<a style="font-weight:bold;" href="/@{{k[1]}}"><img alt="@{{k[1]}}'s profile picture" loading="lazy" src="/@{{k[1]}}/pic" class="pp20">{{k[1]}}</a>{% endif %}</td>
|
<td>{% if k[1] in ('anton-d','unknown') %}{{k[1]}}{% else %}<a style="font-weight:bold;" href="/@{{k[1]}}"><img alt="@{{k[1]}}'s profile picture" loading="lazy" src="/@{{k[1]}}/pic" class="pp20">{{k[1]}}</a>{% endif %}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<td style="font-weight:bold;">{{loop.index}}</td>
|
<td style="font-weight:bold;">{{loop.index}}</td>
|
||||||
<td><a style="color:#{{u.namecolor}}; font-weight:bold;" href="/@{{u.username}}"><img alt="@{{u.username}}'s profile picture" loading="lazy" src="{{u.profile_url}}" class="pp20"><span {% if u.patron %}class="patron" style="background-color:#{{u.namecolor}}"{% endif %}>{{u.username}}</span></a></td>
|
<td><a style="color:#{{u.namecolor}}; font-weight:bold;" href="/@{{u.username}}"><img alt="@{{u.username}}'s profile picture" loading="lazy" src="{{u.profile_url}}" class="pp20"><span {% if u.patron %}class="patron" style="background-color:#{{u.namecolor}}"{% endif %}>{{u.username}}</span></a></td>
|
||||||
|
|
||||||
<td><img alt="Patron-{{u.patron}}" loading="lazy" width=32 height=32 src="/static/assets/images/badges/Patron-{{u.patron}}.webp?a=4"></td>
|
<td><img alt="Patron-{{u.patron}}" loading="lazy" width=32 height=32 src="/static/assets/images/badges/Patron-{{u.patron}}.webp?a=5"></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
|
|
||||||
<style>:root{--primary:#{{v.themecolor}}}</style>
|
<style>:root{--primary:#{{v.themecolor}}}</style>
|
||||||
<link rel="stylesheet" href="/static/assets/css/main.css?a=78"><link rel="stylesheet" href="/static/assets/css/{{v.theme}}.css?a=11">
|
<link rel="stylesheet" href="/static/assets/css/main.css?a=83"><link rel="stylesheet" href="/static/assets/css/{{v.theme}}.css?a=11">
|
||||||
{% if v.agendaposter %}
|
{% if v.agendaposter %}
|
||||||
<style>
|
<style>
|
||||||
html {
|
html {
|
||||||
|
|
|
@ -39,10 +39,10 @@
|
||||||
|
|
||||||
{% if v %}
|
{% if v %}
|
||||||
<style>:root{--primary:#{{v.themecolor}}}</style>
|
<style>:root{--primary:#{{v.themecolor}}}</style>
|
||||||
<link rel="stylesheet" href="/static/assets/css/main.css?a=78"><link rel="stylesheet" href="/static/assets/css/{{v.theme}}.css?a=11">
|
<link rel="stylesheet" href="/static/assets/css/main.css?a=83"><link rel="stylesheet" href="/static/assets/css/{{v.theme}}.css?a=11">
|
||||||
{% else %}
|
{% else %}
|
||||||
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
||||||
<link rel="stylesheet" href="/static/assets/css/main.css?a=78"><link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
<link rel="stylesheet" href="/static/assets/css/main.css?a=83"><link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div class="col sidebar text-left d-none d-lg-block pt-3 bg-white" style="max-width:300px">
|
<div class="col sidebar text-left d-none d-lg-block pt-3 bg-white" style="max-width:300px">
|
||||||
|
|
||||||
{% set image = "/static/assets/images/" + SITE_NAME + "/banners/" + range(1,num_banners)|random()|string + ".webp?a=9" %}
|
{% set image = "/static/assets/images/" + SITE_NAME + "/banners/" + range(1,num_banners)|random()|string + ".webp?a=10" %}
|
||||||
|
|
||||||
<a role="button" data-bs-toggle="modal" data-bs-target="#expandImageModal" data-bs-url="{{image}}" onclick="expandDesktopImage('{{image}}')">
|
<a role="button" data-bs-toggle="modal" data-bs-target="#expandImageModal" data-bs-url="{{image}}" onclick="expandDesktopImage('{{image}}')">
|
||||||
<img loading="lazy" src="{{image}}" width=100%>
|
<img loading="lazy" src="{{image}}" width=100%>
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
<title>{% if ref_user %}{{ref_user.username}} invites you to {{SITE_NAME}}{% else %}Sign up - {{SITE_NAME}}{% endif %}</title>
|
<title>{% if ref_user %}{{ref_user.username}} invites you to {{SITE_NAME}}{% else %}Sign up - {{SITE_NAME}}{% endif %}</title>
|
||||||
|
|
||||||
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
||||||
<link rel="stylesheet" href="/static/assets/css/main.css?a=78"><link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
<link rel="stylesheet" href="/static/assets/css/main.css?a=83"><link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@
|
||||||
|
|
||||||
<div class="splash-overlay"></div>
|
<div class="splash-overlay"></div>
|
||||||
|
|
||||||
<img alt="cover" loading="lazy" class="splash-img" src="/static/assets/images/{{SITE_NAME}}/cover.webp?a=3"></img>
|
<img alt="cover" loading="lazy" class="splash-img" src="/static/assets/images/{{SITE_NAME}}/cover.webp?a=1004"></img>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
<title>{% if ref_user %}{{ref_user.username}} invites you to {{SITE_NAME}}{% else %}{{SITE_NAME}}{% endif %}</title>
|
<title>{% if ref_user %}{{ref_user.username}} invites you to {{SITE_NAME}}{% else %}{{SITE_NAME}}{% endif %}</title>
|
||||||
|
|
||||||
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
||||||
<link rel="stylesheet" href="/static/assets/css/main.css?a=78"><link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
<link rel="stylesheet" href="/static/assets/css/main.css?a=83"><link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@
|
||||||
|
|
||||||
<div class="splash-overlay"></div>
|
<div class="splash-overlay"></div>
|
||||||
|
|
||||||
<img alt="cover" loading="lazy" class="splash-img" src="/static/assets/images/{{SITE_NAME}}/cover.webp?a=3"></img>
|
<img alt="cover" loading="lazy" class="splash-img" src="/static/assets/images/{{SITE_NAME}}/cover.webp?a=1004"></img>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -65,7 +65,7 @@
|
||||||
{% if p.award_count("wholesome") > 1 %}
|
{% if p.award_count("wholesome") > 1 %}
|
||||||
<marquee class="seal" scrollamount=10 behavior="alternate" direction="down" height="100%">
|
<marquee class="seal" scrollamount=10 behavior="alternate" direction="down" height="100%">
|
||||||
<marquee direction="right" scrollamount=10 behavior="alternate" width="100%">
|
<marquee direction="right" scrollamount=10 behavior="alternate" width="100%">
|
||||||
<img alt=":#marseywholesome:" class="sealimg" src="/static/assets/images/emojis/marseywholesome.webp?a=3">
|
<img alt=":#marseywholesome:" class="sealimg" src="/static/assets/images/emojis/marseywholesome.webp?a=1004">
|
||||||
</marquee>
|
</marquee>
|
||||||
</marquee>
|
</marquee>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -73,7 +73,7 @@
|
||||||
{% if p.award_count("wholesome") > 2 %}
|
{% if p.award_count("wholesome") > 2 %}
|
||||||
<marquee class="seal" scrollamount=10 behavior="alternate" direction="up" height="100%">
|
<marquee class="seal" scrollamount=10 behavior="alternate" direction="up" height="100%">
|
||||||
<marquee direction="left" scrollamount=10 behavior="alternate" width="100%">
|
<marquee direction="left" scrollamount=10 behavior="alternate" width="100%">
|
||||||
<img alt=":#marseywholesome:" class="sealimg" src="/static/assets/images/emojis/marseywholesome.webp?a=3">
|
<img alt=":#marseywholesome:" class="sealimg" src="/static/assets/images/emojis/marseywholesome.webp?a=1004">
|
||||||
</marquee>
|
</marquee>
|
||||||
</marquee>
|
</marquee>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -81,7 +81,7 @@
|
||||||
{% if p.award_count("wholesome") > 3 %}
|
{% if p.award_count("wholesome") > 3 %}
|
||||||
<marquee class="seal" scrollamount=10 behavior="alternate" direction="down" height="100%">
|
<marquee class="seal" scrollamount=10 behavior="alternate" direction="down" height="100%">
|
||||||
<marquee direction="left" scrollamount=10 behavior="alternate" width="100%">
|
<marquee direction="left" scrollamount=10 behavior="alternate" width="100%">
|
||||||
<img alt=":#marseywholesome:" class="sealimg" src="/static/assets/images/emojis/marseywholesome.webp?a=3">
|
<img alt=":#marseywholesome:" class="sealimg" src="/static/assets/images/emojis/marseywholesome.webp?a=1004">
|
||||||
</marquee>
|
</marquee>
|
||||||
</marquee>
|
</marquee>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -118,25 +118,25 @@
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<marquee class="train train1" direction="left" scrollamount=10 width="100%">
|
<marquee class="train train1" direction="left" scrollamount=10 width="100%">
|
||||||
<img alt=":#marseytrain:" class="trainimg mirrored" src="/static/assets/images/emojis/marseytrain.webp?a=3">
|
<img alt=":#marseytrain:" class="trainimg mirrored" src="/static/assets/images/emojis/marseytrain.webp?a=1004">
|
||||||
</marquee>
|
</marquee>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if p.award_count("train") > 1 %}
|
{% if p.award_count("train") > 1 %}
|
||||||
<marquee class="train train2" direction="right" scrollamount=10 width="100%">
|
<marquee class="train train2" direction="right" scrollamount=10 width="100%">
|
||||||
<img alt=":#marseytrain:" class="trainimg" src="/static/assets/images/emojis/marseytrain.webp?a=3">
|
<img alt=":#marseytrain:" class="trainimg" src="/static/assets/images/emojis/marseytrain.webp?a=1004">
|
||||||
</marquee>
|
</marquee>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if p.award_count("train") > 2 %}
|
{% if p.award_count("train") > 2 %}
|
||||||
<marquee class="train train3" direction="left" scrollamount=10 width="100%">
|
<marquee class="train train3" direction="left" scrollamount=10 width="100%">
|
||||||
<img alt=":#marseytrain:" class="trainimg mirrored" src="/static/assets/images/emojis/marseytrain.webp?a=3">
|
<img alt=":#marseytrain:" class="trainimg mirrored" src="/static/assets/images/emojis/marseytrain.webp?a=1004">
|
||||||
</marquee>
|
</marquee>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if p.award_count("train") > 3 %}
|
{% if p.award_count("train") > 3 %}
|
||||||
<marquee class="train train4" direction="right" scrollamount=10 width="100%">
|
<marquee class="train train4" direction="right" scrollamount=10 width="100%">
|
||||||
<img alt=":#marseytrain:" class="trainimg" src="/static/assets/images/emojis/marseytrain.webp?a=3">
|
<img alt=":#marseytrain:" class="trainimg" src="/static/assets/images/emojis/marseytrain.webp?a=1004">
|
||||||
</marquee>
|
</marquee>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
@ -367,7 +367,7 @@
|
||||||
{% if p.active_flags %}<a class="btn btn-primary" role="button" style="padding:1px 5px; font-size:10px;" onclick="document.getElementById('flaggers').classList.toggle('d-none')">{{p.active_flags}} Reports</a>{% endif %}
|
{% if p.active_flags %}<a class="btn btn-primary" role="button" style="padding:1px 5px; font-size:10px;" onclick="document.getElementById('flaggers').classList.toggle('d-none')">{{p.active_flags}} Reports</a>{% endif %}
|
||||||
{% if p.author.verified %}<i class="fas fa-badge-check align-middle ml-1" style="color:{% if p.author.verifiedcolor %}#{{p.author.verifiedcolor}}{% else %}#1DA1F2{% endif %}" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="{{p.author.verified}}"></i>
|
{% if p.author.verified %}<i class="fas fa-badge-check align-middle ml-1" style="color:{% if p.author.verifiedcolor %}#{{p.author.verifiedcolor}}{% else %}#1DA1F2{% endif %}" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="{{p.author.verified}}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a class="user-name text-decoration-none" onclick='popclick({{p.author.json_popover(v) | tojson}})' data-bs-placement="bottom" data-bs-toggle="popover" data-bs-trigger="focus" data-content-id="popover" role="button" tabindex="0" style="color: #{{p.author.namecolor}}; font-weight: bold;" class="user-name"><img alt="@{{p.author.username}}'s profile picture" loading="lazy" src="{{p.author.profile_url}}" class="profile-pic-25 mr-2"><span {% if p.author.patron and not p.distinguish_level %}class="patron" style="background-color:#{{p.author.namecolor}};"{% elif p.distinguish_level and request.host == 'rdrama.net' %}class="mod"{% endif %}>{{p.author.username}}</span></a>{% if p.author.customtitle %} <bdi style="color: #{{p.author.titlecolor}}"> {% if p.author.quadrant %}<img alt="{{p.author.quadrant}} quadrant" loading="lazy" height="20" src="/static/assets/images/quadrants/{{p.author.quadrant}}.webp?a=3">{% endif %}{{p.author.customtitle | safe}}</bdi>{% endif %}
|
<a class="user-name text-decoration-none" onclick='popclick({{p.author.json_popover(v) | tojson}})' data-bs-placement="bottom" data-bs-toggle="popover" data-bs-trigger="focus" data-content-id="popover" role="button" tabindex="0" style="color: #{{p.author.namecolor}}; font-weight: bold;" class="user-name"><img alt="@{{p.author.username}}'s profile picture" loading="lazy" src="{{p.author.profile_url}}" class="profile-pic-25 mr-2"><span {% if p.author.patron and not p.distinguish_level %}class="patron" style="background-color:#{{p.author.namecolor}};"{% elif p.distinguish_level and request.host == 'rdrama.net' %}class="mod"{% endif %}>{{p.author.username}}</span></a>{% if p.author.customtitle %} <bdi style="color: #{{p.author.titlecolor}}"> {% if p.author.quadrant %}<img alt="{{p.author.quadrant}} quadrant" loading="lazy" height="20" src="/static/assets/images/quadrants/{{p.author.quadrant}}.webp?a=1004">{% endif %}{{p.author.customtitle | safe}}</bdi>{% endif %}
|
||||||
<span data-bs-toggle="tooltip" data-bs-placement="bottom" id="timestamp" onmouseover="timestamp('timestamp','{{p.created_utc}}')"> {{p.age_string}}</span>
|
<span data-bs-toggle="tooltip" data-bs-placement="bottom" id="timestamp" onmouseover="timestamp('timestamp','{{p.created_utc}}')"> {{p.age_string}}</span>
|
||||||
({% if p.is_image %}image post{% elif p.is_video %}video post{% elif p.realurl(v) %}<a href="/search/posts/?q=domain%3A{{p.domain}}&sort=new&t=all" {% if not v or v.newtabexternal %}target="_blank"{% endif %}>{{p.domain}}</a>{% else %}text post{% endif %})
|
({% if p.is_image %}image post{% elif p.is_video %}video post{% elif p.realurl(v) %}<a href="/search/posts/?q=domain%3A{{p.domain}}&sort=new&t=all" {% if not v or v.newtabexternal %}target="_blank"{% endif %}>{{p.domain}}</a>{% else %}text post{% endif %})
|
||||||
|
|
||||||
|
|
|
@ -63,11 +63,9 @@
|
||||||
{% for p in listing %}
|
{% for p in listing %}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
(() => {
|
{% if not v or v.highlightcomments %}
|
||||||
{% if not v or v.highlightcomments %}
|
showNewCommentCounts('{{p.id}}', {{p.comment_count}})
|
||||||
showNewCommentCounts('{{p.id}}', {{p.comment_count}})
|
{% endif %}
|
||||||
{% endif %}
|
|
||||||
})()
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{% set ups=p.upvotes %}
|
{% set ups=p.upvotes %}
|
||||||
|
@ -135,7 +133,7 @@
|
||||||
|
|
||||||
<div style="z-index: 3;">
|
<div style="z-index: 3;">
|
||||||
{% if p.club and not (v and (v.paid_dues or v.id == p.author_id)) %}
|
{% if p.club and not (v and (v.paid_dues or v.id == p.author_id)) %}
|
||||||
<img alt="post thumnail" loading="lazy" src="/static/assets/images/emojis/marseyglow.webp" class="post-img">
|
<img alt="post thumnail" loading="lazy" src="/static/assets/images/emojis/marseyglow.webp?a=1004" class="post-img">
|
||||||
{% elif not p.url %}
|
{% elif not p.url %}
|
||||||
<a {% if v and v.newtab and not g.webview %}target="_blank"{% endif %} href="{{p.permalink}}">
|
<a {% if v and v.newtab and not g.webview %}target="_blank"{% endif %} href="{{p.permalink}}">
|
||||||
<img alt="post thumnail" loading="lazy" src="{{p.thumb_url}}" class="post-img">
|
<img alt="post thumnail" loading="lazy" src="{{p.thumb_url}}" class="post-img">
|
||||||
|
@ -191,7 +189,7 @@
|
||||||
{% if p.active_flags %}<a class="btn btn-primary" role="button" style="padding:1px 5px; font-size:10px;" onclick="document.getElementById('flaggers-{{p.id}}').classList.toggle('d-none')">{{p.active_flags}} Reports</a>{% endif %}
|
{% if p.active_flags %}<a class="btn btn-primary" role="button" style="padding:1px 5px; font-size:10px;" onclick="document.getElementById('flaggers-{{p.id}}').classList.toggle('d-none')">{{p.active_flags}} Reports</a>{% endif %}
|
||||||
{% if p.author.verified %}<i class="fas fa-badge-check align-middle ml-1" style="color:{% if p.author.verifiedcolor %}#{{p.author.verifiedcolor}}{% else %}#1DA1F2{% endif %}" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="{{p.author.verified}}"></i>
|
{% if p.author.verified %}<i class="fas fa-badge-check align-middle ml-1" style="color:{% if p.author.verifiedcolor %}#{{p.author.verifiedcolor}}{% else %}#1DA1F2{% endif %}" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="{{p.author.verified}}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a class="user-name text-decoration-none" onclick='popclick({{p.author.json_popover(v) | tojson}})' data-bs-placement="bottom" data-bs-toggle="popover" data-bs-trigger="focus" data-content-id="popover" role="button" tabindex="0" style="color: #{{p.author.namecolor}}; font-weight: bold;"><img alt="@{{p.author.profile_url}}'s profile picture" loading="lazy" src="{{p.author.profile_url}}" class="profile-pic-25 mr-2"><span {% if p.author.patron and not p.distinguish_level %}class="patron" style="background-color:#{{p.author.namecolor}};"{% elif p.distinguish_level and request.host == 'rdrama.net' %}class="mod"{% endif %}>{{p.author.username}}</span></a>{% if p.author.customtitle %}<bdi style="color: #{{p.author.titlecolor}}"> {% if p.author.quadrant %}<img alt="{{p.author.quadrant}} quadrant" loading="lazy" height="20" src="/static/assets/images/quadrants/{{p.author.quadrant}}.webp?a=3">{% endif %}{{p.author.customtitle | safe}}</bdi>{% endif %}
|
<a class="user-name text-decoration-none" onclick='popclick({{p.author.json_popover(v) | tojson}})' data-bs-placement="bottom" data-bs-toggle="popover" data-bs-trigger="focus" data-content-id="popover" role="button" tabindex="0" style="color: #{{p.author.namecolor}}; font-weight: bold;"><img alt="@{{p.author.profile_url}}'s profile picture" loading="lazy" src="{{p.author.profile_url}}" class="profile-pic-25 mr-2"><span {% if p.author.patron and not p.distinguish_level %}class="patron" style="background-color:#{{p.author.namecolor}};"{% elif p.distinguish_level and request.host == 'rdrama.net' %}class="mod"{% endif %}>{{p.author.username}}</span></a>{% if p.author.customtitle %}<bdi style="color: #{{p.author.titlecolor}}"> {% if p.author.quadrant %}<img alt="{{p.author.quadrant}} quadrant" loading="lazy" height="20" src="/static/assets/images/quadrants/{{p.author.quadrant}}.webp?a=1004">{% endif %}{{p.author.customtitle | safe}}</bdi>{% endif %}
|
||||||
<span data-bs-toggle="tooltip" data-bs-placement="bottom" onmouseover="timestamp('timestamp-{{p.id}}','{{p.created_utc}}')" id="timestamp-{{p.id}}"> {{p.age_string}}</span>
|
<span data-bs-toggle="tooltip" data-bs-placement="bottom" onmouseover="timestamp('timestamp-{{p.id}}','{{p.created_utc}}')" id="timestamp-{{p.id}}"> {{p.age_string}}</span>
|
||||||
|
|
||||||
({% if p.is_image %}image post{% elif p.is_video %}video post{% elif p.realurl(v) %}<a href="/search/posts/?q=domain%3A{{p.domain}}&sort=new&t=all" {% if v and v.newtab and not g.webview %}target="_blank"{% endif %}>{{p.domain}}</a>{% else %}text post{% endif %})
|
({% if p.is_image %}image post{% elif p.is_video %}video post{% elif p.realurl(v) %}<a href="/search/posts/?q=domain%3A{{p.domain}}&sort=new&t=all" {% if v and v.newtab and not g.webview %}target="_blank"{% endif %}>{{p.domain}}</a>{% else %}text post{% endif %})
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
{% block stylesheets %}
|
{% block stylesheets %}
|
||||||
{% if v %}
|
{% if v %}
|
||||||
<style>:root{--primary:#{{v.themecolor}}}</style>
|
<style>:root{--primary:#{{v.themecolor}}}</style>
|
||||||
<link rel="stylesheet" href="/static/assets/css/main.css?a=78"><link rel="stylesheet" href="/static/assets/css/{{v.theme}}.css?a=11">
|
<link rel="stylesheet" href="/static/assets/css/main.css?a=83"><link rel="stylesheet" href="/static/assets/css/{{v.theme}}.css?a=11">
|
||||||
{% if v.agendaposter %}
|
{% if v.agendaposter %}
|
||||||
<style>
|
<style>
|
||||||
html {
|
html {
|
||||||
|
@ -50,7 +50,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
<style>:root{--primary:#{{'DEFAULT_COLOR' | app_config}}</style>
|
||||||
<link rel="stylesheet" href="/static/assets/css/main.css?a=78">
|
<link rel="stylesheet" href="/static/assets/css/main.css?a=83">
|
||||||
<link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
<link rel="stylesheet" href="/static/assets/css/{{'DEFAULT_THEME' | app_config}}.css?a=3">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
{% extends "default.html" %}
|
||||||
|
|
||||||
|
{% block PseudoSubmitForm %}{% endblock %}
|
||||||
|
{% block sortnav %}{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<pre></pre>
|
||||||
|
<div class="row no-gutters {% if listing %}mt-md-3{% elif not listing %}my-md-3{% endif %}">
|
||||||
|
|
||||||
|
<div class="col-12 px-3">
|
||||||
|
|
||||||
|
<div class="posts" id="posts">
|
||||||
|
|
||||||
|
{% include "comments.html" %}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block pagenav %}
|
||||||
|
<nav aria-label="Page navigation">
|
||||||
|
<ul class="pagination pagination-sm mb-0">
|
||||||
|
{% if page>1 %}
|
||||||
|
<li class="page-item">
|
||||||
|
<small><a class="page-link" href="?page={{page-1}}" tabindex="-1">Prev</a></small>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="page-item disabled"><span class="page-link">Prev</span></li>
|
||||||
|
{% endif %}
|
||||||
|
{% if next_exists %}
|
||||||
|
<li class="page-item">
|
||||||
|
<small><a class="page-link" href="?page={{page+1}}">Next</a></small>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="page-item disabled"><span class="page-link">Next</span></li>
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
{% endblock %}
|
|
@ -95,7 +95,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if u.customtitle %}<p class="font-weight-bolder" style="color: #{{u.titlecolor}}">{% if u.quadrant %}<img alt="{{u.quadrant}} quadrant" loading="lazy" height="20" src="/static/assets/images/quadrants/{{u.quadrant}}.webp?a=3">{% endif %}{{u.customtitle | safe}}</p>
|
{% if u.customtitle %}<p class="font-weight-bolder" style="color: #{{u.titlecolor}}">{% if u.quadrant %}<img alt="{{u.quadrant}} quadrant" loading="lazy" height="20" src="/static/assets/images/quadrants/{{u.quadrant}}.webp?a=1004">{% endif %}{{u.customtitle | safe}}</p>
|
||||||
{% else %}<pre></pre>
|
{% else %}<pre></pre>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
@ -184,7 +184,7 @@
|
||||||
|
|
||||||
<pre class="btn btn-secondary format d-inline-block m-0 fas fa-smile-beam" onclick="loadEmojis('input-message')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Add Emoji"></pre>
|
<pre class="btn btn-secondary format d-inline-block m-0 fas fa-smile-beam" onclick="loadEmojis('input-message')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Add Emoji"></pre>
|
||||||
|
|
||||||
<input autocomplete="off" type="submit" value="Submit" class="btn btn-primary mt-3">
|
<input autocomplete="off" type="submit" value="Submit" class="btn btn-primary">
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div id="message-preview" class="preview-edit mt-2"></div>
|
<div id="message-preview" class="preview-edit mt-2"></div>
|
||||||
|
@ -368,7 +368,7 @@
|
||||||
{% if v and v.has_follower(u) and not v.is_nofollow %}
|
{% if v and v.has_follower(u) and not v.is_nofollow %}
|
||||||
<span class="followsyou badge badge-secondary text-small align-middle mx-1">Follows you</span>
|
<span class="followsyou badge badge-secondary text-small align-middle mx-1">Follows you</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if u.customtitle %}<p style="color: #{{u.titlecolor}}">{% if u.quadrant %}<img alt="@{{u.quadrant}} quadrant" loading="lazy" height="20" src="/static/assets/images/quadrants/{{u.quadrant}}.webp?a=3">{% endif %}{{u.customtitle | safe}}</p>
|
{% if u.customtitle %}<p style="color: #{{u.titlecolor}}">{% if u.quadrant %}<img alt="@{{u.quadrant}} quadrant" loading="lazy" height="20" src="/static/assets/images/quadrants/{{u.quadrant}}.webp?a=1004">{% endif %}{{u.customtitle | safe}}</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -473,7 +473,7 @@
|
||||||
|
|
||||||
<pre class="btn btn-secondary format d-inline-block m-0 fas fa-smile-beam" onclick="loadEmojis('input-message-mobile')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Add Emoji"></pre>
|
<pre class="btn btn-secondary format d-inline-block m-0 fas fa-smile-beam" onclick="loadEmojis('input-message-mobile')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Add Emoji"></pre>
|
||||||
|
|
||||||
<input autocomplete="off" type="submit" value="Submit" class="btn btn-primary mt-3">
|
<input autocomplete="off" type="submit" value="Submit" class="btn btn-primary">
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div id="message-preview-mobile" class="preview-edit my-3"></div>
|
<div id="message-preview-mobile" class="preview-edit my-3"></div>
|
||||||
|
@ -730,7 +730,7 @@
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
{% if v %}
|
{% if v and v.id != u.id and '/comments' not in request.path %}
|
||||||
{% include "emoji_modal.html" %}
|
{% include "emoji_modal.html" %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue