forked from rDrama/rDrama
Merge branch 'frost' of https://github.com/Aevann1/rDrama into frost
commit
4d60e664cf
|
@ -6043,6 +6043,10 @@ g {
|
||||||
.fa-sitemap:before{content:"\f0e8"}
|
.fa-sitemap:before{content:"\f0e8"}
|
||||||
.fa-grid:before{content:"\e195"}
|
.fa-grid:before{content:"\e195"}
|
||||||
.fa-x:before{content:"\58"}
|
.fa-x:before{content:"\58"}
|
||||||
|
.fa-paw-simple:before{content:"\f701"}
|
||||||
|
.fa-bat:before{content:"\f6b5"}
|
||||||
|
.fa-star-of-david:before{content:"\f69a"}
|
||||||
|
.fa-kiss-wink-heart:before{content:"\f598"}
|
||||||
|
|
||||||
.pronouns {
|
.pronouns {
|
||||||
font-size: 9px;
|
font-size: 9px;
|
||||||
|
@ -6240,3 +6244,6 @@ blockquote + blockquote, div > blockquote:first-child, blockquote:last-child {
|
||||||
-o-object-fit: contain;
|
-o-object-fit: contain;
|
||||||
object-fit: contain;
|
object-fit: contain;
|
||||||
}
|
}
|
||||||
|
.text-gray {
|
||||||
|
color: gray !important;
|
||||||
|
}
|
|
@ -10,7 +10,7 @@ const box = document.getElementById('chat-window')
|
||||||
const textbox = document.getElementById('input-text')
|
const textbox = document.getElementById('input-text')
|
||||||
const icon = document.getElementById('favicon')
|
const icon = document.getElementById('favicon')
|
||||||
const vid = document.getElementById('vid').value
|
const vid = document.getElementById('vid').value
|
||||||
const vusername = document.getElementById('header--username').innerHTML
|
const vusername = document.getElementById('vusername').value
|
||||||
const site_name = document.getElementById('site_name').value
|
const site_name = document.getElementById('site_name').value
|
||||||
const slurreplacer = document.getElementById('slurreplacer').value
|
const slurreplacer = document.getElementById('slurreplacer').value
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,8 @@ class AwardRelationship(Base):
|
||||||
@property
|
@property
|
||||||
@lazy
|
@lazy
|
||||||
def type(self):
|
def type(self):
|
||||||
return AWARDS[self.kind]
|
try: return AWARDS[self.kind]
|
||||||
|
except: return HOUSE_AWARDS[self.kind]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@lazy
|
@lazy
|
||||||
|
|
|
@ -263,11 +263,12 @@ class Comment(Base):
|
||||||
@lazy
|
@lazy
|
||||||
def author_name(self):
|
def author_name(self):
|
||||||
if self.ghost: return '👻'
|
if self.ghost: return '👻'
|
||||||
else: return self.author.username
|
if self.author.earlylife: return f'((({self.author.username})))'
|
||||||
|
return self.author.username
|
||||||
|
|
||||||
@lazy
|
@lazy
|
||||||
def award_count(self, kind, v):
|
def award_count(self, kind, v):
|
||||||
if v and v.poor: return 0
|
if v and v.poor and kind.islower(): return 0
|
||||||
return len([x for x in self.awards if x.kind == kind])
|
return len([x for x in self.awards if x.kind == kind])
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
|
@ -207,7 +207,8 @@ class Submission(Base):
|
||||||
@lazy
|
@lazy
|
||||||
def author_name(self):
|
def author_name(self):
|
||||||
if self.ghost: return '👻'
|
if self.ghost: return '👻'
|
||||||
else: return self.author.username
|
if self.author.earlylife: return f'((({self.author.username})))'
|
||||||
|
return self.author.username
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@lazy
|
@lazy
|
||||||
|
|
|
@ -131,6 +131,8 @@ class User(Base):
|
||||||
last_viewed_post_notifs = Column(Integer, default=0)
|
last_viewed_post_notifs = Column(Integer, default=0)
|
||||||
last_viewed_log_notifs = Column(Integer, default=0)
|
last_viewed_log_notifs = Column(Integer, default=0)
|
||||||
pronouns = Column(String, default='they/them')
|
pronouns = Column(String, default='they/them')
|
||||||
|
bite = Column(Integer)
|
||||||
|
earlylife = Column(Integer)
|
||||||
|
|
||||||
badges = relationship("Badge", order_by="Badge.created_utc", back_populates="user")
|
badges = relationship("Badge", order_by="Badge.created_utc", back_populates="user")
|
||||||
subscriptions = relationship("Subscription", back_populates="user")
|
subscriptions = relationship("Subscription", back_populates="user")
|
||||||
|
@ -162,6 +164,12 @@ class User(Base):
|
||||||
return f"<User(id={self.id}, username={self.username})>"
|
return f"<User(id={self.id}, username={self.username})>"
|
||||||
|
|
||||||
|
|
||||||
|
@property
|
||||||
|
@lazy
|
||||||
|
def name_color(self):
|
||||||
|
if self.bite: return "565656"
|
||||||
|
return self.namecolor
|
||||||
|
|
||||||
@lazy
|
@lazy
|
||||||
def mods(self, sub):
|
def mods(self, sub):
|
||||||
return self.admin_level == 3 or bool(g.db.query(Mod.user_id).filter_by(user_id=self.id, sub=sub).one_or_none())
|
return self.admin_level == 3 or bool(g.db.query(Mod.user_id).filter_by(user_id=self.id, sub=sub).one_or_none())
|
||||||
|
@ -264,6 +272,9 @@ class User(Base):
|
||||||
def user_awards(self):
|
def user_awards(self):
|
||||||
return_value = list(AWARDS2.values())
|
return_value = list(AWARDS2.values())
|
||||||
|
|
||||||
|
if self.house:
|
||||||
|
return_value.append(HOUSE_AWARDS[self.house])
|
||||||
|
|
||||||
awards_owned = g.db.query(AwardRelationship.kind, func.count()) \
|
awards_owned = g.db.query(AwardRelationship.kind, func.count()) \
|
||||||
.filter_by(user_id=self.id, submission_id=None, comment_id=None) \
|
.filter_by(user_id=self.id, submission_id=None, comment_id=None) \
|
||||||
.group_by(AwardRelationship.kind).all()
|
.group_by(AwardRelationship.kind).all()
|
||||||
|
@ -611,7 +622,10 @@ class User(Base):
|
||||||
@property
|
@property
|
||||||
@lazy
|
@lazy
|
||||||
def profile_url(self):
|
def profile_url(self):
|
||||||
if self.agendaposter: return f"{SITE_FULL}/assets/images/pfps/agendaposter/{random.randint(1, 57)}.webp?v=1"
|
if self.agendaposter:
|
||||||
|
return f"{SITE_FULL}/assets/images/pfps/agendaposter/{random.randint(1, 57)}.webp?v=1"
|
||||||
|
if self.bite:
|
||||||
|
return f"{SITE_FULL}/e/marseyvampire.webp"
|
||||||
if self.profileurl:
|
if self.profileurl:
|
||||||
if self.profileurl.startswith('/'): return SITE_FULL + self.profileurl
|
if self.profileurl.startswith('/'): return SITE_FULL + self.profileurl
|
||||||
return self.profileurl
|
return self.profileurl
|
||||||
|
|
|
@ -73,6 +73,15 @@ def award_timers(v, bot=False):
|
||||||
v.deflector = None
|
v.deflector = None
|
||||||
notify_if_not_bot("Your deflector has expired!")
|
notify_if_not_bot("Your deflector has expired!")
|
||||||
dirty = True
|
dirty = True
|
||||||
|
if v.bite and v.bite < now:
|
||||||
|
v.bite = None
|
||||||
|
notify_if_not_bot("Your vampire status has ended!")
|
||||||
|
v.house = v.old_house
|
||||||
|
dirty = True
|
||||||
|
if v.earlylife and v.earlylife < now:
|
||||||
|
v.earlylife = None
|
||||||
|
notify_if_not_bot("Your earlylife status has expired!")
|
||||||
|
dirty = True
|
||||||
|
|
||||||
if dirty:
|
if dirty:
|
||||||
g.db.add(v)
|
g.db.add(v)
|
||||||
|
|
|
@ -460,14 +460,6 @@ AWARDS = {
|
||||||
"color": "text-gray",
|
"color": "text-gray",
|
||||||
"price": 200
|
"price": 200
|
||||||
},
|
},
|
||||||
"lootbox": {
|
|
||||||
"kind": "lootbox",
|
|
||||||
"title": "Lootbox",
|
|
||||||
"description": "",
|
|
||||||
"icon": "fas fa-box-open",
|
|
||||||
"color": "text-blue",
|
|
||||||
"price": 1000
|
|
||||||
},
|
|
||||||
"shit": {
|
"shit": {
|
||||||
"kind": "shit",
|
"kind": "shit",
|
||||||
"title": "Shit",
|
"title": "Shit",
|
||||||
|
@ -556,6 +548,14 @@ AWARDS = {
|
||||||
"color": "text-black",
|
"color": "text-black",
|
||||||
"price": 777
|
"price": 777
|
||||||
},
|
},
|
||||||
|
"lootbox": {
|
||||||
|
"kind": "lootbox",
|
||||||
|
"title": "Lootbox",
|
||||||
|
"description": "",
|
||||||
|
"icon": "fas fa-box-open",
|
||||||
|
"color": "text-blue",
|
||||||
|
"price": 1000
|
||||||
|
},
|
||||||
"beano": {
|
"beano": {
|
||||||
"kind": "beano",
|
"kind": "beano",
|
||||||
"title": "Beano",
|
"title": "Beano",
|
||||||
|
@ -770,6 +770,74 @@ AWARDS_DISABLED = [
|
||||||
'grinch', 'haunt', 'upsidedown', 'stab', 'spiders', 'fog', # Homoween
|
'grinch', 'haunt', 'upsidedown', 'stab', 'spiders', 'fog', # Homoween
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
HOUSE_AWARDS = {
|
||||||
|
"Furry": {
|
||||||
|
"kind": "Furry",
|
||||||
|
"title": "OwOify",
|
||||||
|
"description": "OwOifies the comment. Does not work on posts.",
|
||||||
|
"icon": "fas fa-paw-simple",
|
||||||
|
"color": "text-purple",
|
||||||
|
"price": 400
|
||||||
|
},
|
||||||
|
"Femboy": {
|
||||||
|
"kind": "Femboy",
|
||||||
|
"title": "Marsify",
|
||||||
|
"description": "Emojifies the comment. Does not work on threads.",
|
||||||
|
"icon": "fas fa-cat",
|
||||||
|
"color": "text-white",
|
||||||
|
"price": 400
|
||||||
|
},
|
||||||
|
"Vampire": {
|
||||||
|
"kind": "Vampire",
|
||||||
|
"title": "Bite",
|
||||||
|
"description": "Turns the recipient into a vampire minion for 24 hours.",
|
||||||
|
"icon": "fas fa-bat",
|
||||||
|
"color": "text-gray",
|
||||||
|
"price": 400
|
||||||
|
},
|
||||||
|
"Racist": {
|
||||||
|
"kind": "Racist",
|
||||||
|
"title": "Early Life",
|
||||||
|
"description": "Checks the recipient’s Early Life section on Wikipedia. Notices.",
|
||||||
|
"icon": "fas fa-star-of-david",
|
||||||
|
"color": "text-yellow",
|
||||||
|
"price": 400
|
||||||
|
},
|
||||||
|
"Furry Founder": {
|
||||||
|
"kind": "Furry Founder",
|
||||||
|
"title": "OwOify",
|
||||||
|
"description": "OwOifies the comment. Does not work on posts.",
|
||||||
|
"icon": "fas fa-paw-simple",
|
||||||
|
"color": "text-purple",
|
||||||
|
"price": 300
|
||||||
|
},
|
||||||
|
"Femboy Founder": {
|
||||||
|
"kind": "Femboy Founder",
|
||||||
|
"title": "Marsify",
|
||||||
|
"description": "Emojifies the comment. Does not work on threads.",
|
||||||
|
"icon": "fas fa-kiss-wink-heart",
|
||||||
|
"color": "text-white",
|
||||||
|
"price": 300
|
||||||
|
},
|
||||||
|
"Vampire Founder": {
|
||||||
|
"kind": "Vampire Founder",
|
||||||
|
"title": "Bite",
|
||||||
|
"description": "Turns the recipient into a vampire for 24 hours.",
|
||||||
|
"icon": "fas fa-bat",
|
||||||
|
"color": "text-gray",
|
||||||
|
"price": 500
|
||||||
|
},
|
||||||
|
"Racist Founder": {
|
||||||
|
"kind": "Racist Founder",
|
||||||
|
"title": "Early Life",
|
||||||
|
"description": "Checks the recipient’s Early Life section on Wikipedia. Notices.",
|
||||||
|
"icon": "fas fa-star-of-david",
|
||||||
|
"color": "text-yellow",
|
||||||
|
"price": 300
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
if SITE_NAME != 'rDrama':
|
if SITE_NAME != 'rDrama':
|
||||||
AWARDS_DISABLED.append('progressivestack')
|
AWARDS_DISABLED.append('progressivestack')
|
||||||
|
|
||||||
|
@ -877,6 +945,15 @@ christian_emojis = [':#marseyjesus:',':#marseyimmaculate:',':#marseymothermary:'
|
||||||
db = db_session()
|
db = db_session()
|
||||||
marseys_const = [x[0] for x in db.query(Marsey.name).filter(Marsey.name!='chudsey').all()]
|
marseys_const = [x[0] for x in db.query(Marsey.name).filter(Marsey.name!='chudsey').all()]
|
||||||
marseys_const2 = marseys_const + ['chudsey','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','exclamationpoint','period','questionmark']
|
marseys_const2 = marseys_const + ['chudsey','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','exclamationpoint','period','questionmark']
|
||||||
|
|
||||||
|
marseys = db.query(Marsey).all()
|
||||||
|
marsey_mappings = {}
|
||||||
|
for marsey in marseys:
|
||||||
|
for tag in marsey.tags.split():
|
||||||
|
if tag in marsey_mappings:
|
||||||
|
marsey_mappings[tag].append(f':{marsey.name}:')
|
||||||
|
else:
|
||||||
|
marsey_mappings[tag] = [f':{marsey.name}:']
|
||||||
db.close()
|
db.close()
|
||||||
|
|
||||||
SNAPPY_MARSEYS = []
|
SNAPPY_MARSEYS = []
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
import random
|
||||||
|
import io
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
from .const import marsey_mappings
|
||||||
|
|
||||||
|
WORD_DELIMITER = " "
|
||||||
|
MAX_EMOJIS_PER_BLOCK = 2
|
||||||
|
BLOCK_REGEX = re.compile(r"\s*[^\s]*")
|
||||||
|
TRIM_REGEX = re.compile(r"^\W*|\W*$")
|
||||||
|
|
||||||
|
def split_into_blocks(text):
|
||||||
|
if text == "" or BLOCK_REGEX.search(text) is None:
|
||||||
|
return [text]
|
||||||
|
blocks = []
|
||||||
|
start = 0
|
||||||
|
while start < len(text):
|
||||||
|
block_match = BLOCK_REGEX.search(text, start)
|
||||||
|
blocks.append(block_match.group())
|
||||||
|
start = block_match.end()
|
||||||
|
return blocks
|
||||||
|
|
||||||
|
def trim_nonalphabetical_characters(text):
|
||||||
|
return TRIM_REGEX.sub("", text)
|
||||||
|
|
||||||
|
def marsify(text):
|
||||||
|
blocks = split_into_blocks(text)
|
||||||
|
new_blocks = []
|
||||||
|
for i, block in enumerate(blocks):
|
||||||
|
new_blocks.append(block)
|
||||||
|
emojis = generate_emojis_from(block)
|
||||||
|
if emojis:
|
||||||
|
new_blocks.append(" " + emojis)
|
||||||
|
return "".join(new_blocks)
|
||||||
|
|
||||||
|
def generate_emojis_from(block):
|
||||||
|
trimmed_block = trim_nonalphabetical_characters(block)
|
||||||
|
matching_emojis = get_matching_emojis(trimmed_block)
|
||||||
|
emojis = []
|
||||||
|
if matching_emojis:
|
||||||
|
num_emojis = random.randint(0, MAX_EMOJIS_PER_BLOCK)
|
||||||
|
for x in range(num_emojis):
|
||||||
|
emojis.append(random.choice(matching_emojis))
|
||||||
|
return "".join(emojis)
|
||||||
|
|
||||||
|
def get_matching_emojis(trimmed_block):
|
||||||
|
key = get_alphanumeric_prefix(trimmed_block.lower())
|
||||||
|
if key in marsey_mappings:
|
||||||
|
return marsey_mappings[get_alphanumeric_prefix(key)]
|
||||||
|
return []
|
||||||
|
|
||||||
|
def get_alphanumeric_prefix(s):
|
||||||
|
i = 0
|
||||||
|
while i < len(s) and s[i].isalnum():
|
||||||
|
i += 1
|
||||||
|
return s[:i]
|
|
@ -20,7 +20,6 @@ import datetime
|
||||||
import requests
|
import requests
|
||||||
from urllib.parse import quote, urlencode
|
from urllib.parse import quote, urlencode
|
||||||
|
|
||||||
|
|
||||||
@app.post('/kippy')
|
@app.post('/kippy')
|
||||||
@admin_level_required(3)
|
@admin_level_required(3)
|
||||||
def kippy(v):
|
def kippy(v):
|
||||||
|
|
|
@ -10,6 +10,8 @@ from files.classes.award import *
|
||||||
from .front import frontlist
|
from .front import frontlist
|
||||||
from flask import g, request
|
from flask import g, request
|
||||||
from files.helpers.sanitize import filter_emojis_only
|
from files.helpers.sanitize import filter_emojis_only
|
||||||
|
from files.helpers.marsify import marsify
|
||||||
|
import owoify
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
|
|
||||||
@app.get("/shop")
|
@app.get("/shop")
|
||||||
|
@ -21,6 +23,9 @@ def shop(v):
|
||||||
|
|
||||||
AWARDS = deepcopy(AWARDS2)
|
AWARDS = deepcopy(AWARDS2)
|
||||||
|
|
||||||
|
if v.house:
|
||||||
|
AWARDS[v.house] = HOUSE_AWARDS[v.house]
|
||||||
|
|
||||||
for val in AWARDS.values(): val["owned"] = 0
|
for val in AWARDS.values(): val["owned"] = 0
|
||||||
|
|
||||||
for useraward in g.db.query(AwardRelationship).filter(AwardRelationship.user_id == v.id, AwardRelationship.submission_id == None, AwardRelationship.comment_id == None).all():
|
for useraward in g.db.query(AwardRelationship).filter(AwardRelationship.user_id == v.id, AwardRelationship.submission_id == None, AwardRelationship.comment_id == None).all():
|
||||||
|
@ -44,10 +49,13 @@ def buy(v, award):
|
||||||
return {"error": "You can only buy the Benefactor award with marseybux."}, 403
|
return {"error": "You can only buy the Benefactor award with marseybux."}, 403
|
||||||
|
|
||||||
if award == 'ghost' and v.admin_level < 2:
|
if award == 'ghost' and v.admin_level < 2:
|
||||||
return {"error": "Only admins can buy that award."}, 403
|
return {"error": "Only admins can buy this award."}, 403
|
||||||
|
|
||||||
AWARDS = deepcopy(AWARDS2)
|
AWARDS = deepcopy(AWARDS2)
|
||||||
|
|
||||||
|
if v.house:
|
||||||
|
AWARDS[v.house] = HOUSE_AWARDS[v.house]
|
||||||
|
|
||||||
if award not in AWARDS: abort(400)
|
if award not in AWARDS: abort(400)
|
||||||
og_price = AWARDS[award]["price"]
|
og_price = AWARDS[award]["price"]
|
||||||
|
|
||||||
|
@ -118,14 +126,18 @@ def award_thing(v, thing_type, id):
|
||||||
if thing_type == 'post': thing = get_post(id)
|
if thing_type == 'post': thing = get_post(id)
|
||||||
else: thing = get_comment(id)
|
else: thing = get_comment(id)
|
||||||
|
|
||||||
if not thing: return {"error": f"That {thing_type} doesn't exist."}, 404
|
if not thing: return {"error": f"This {thing_type} doesn't exist."}, 404
|
||||||
|
|
||||||
if v.shadowbanned: return render_template('errors/500.html', err=True, v=v), 500
|
if v.shadowbanned: return render_template('errors/500.html', err=True, v=v), 500
|
||||||
|
|
||||||
kind = request.values.get("kind", "").strip()
|
kind = request.values.get("kind", "").strip()
|
||||||
|
|
||||||
|
AWARDS = deepcopy(AWARDS2)
|
||||||
|
if v.house:
|
||||||
|
AWARDS[v.house] = HOUSE_AWARDS[v.house]
|
||||||
|
|
||||||
if kind not in AWARDS:
|
if kind not in AWARDS:
|
||||||
return {"error": "That award doesn't exist."}, 404
|
return {"error": "This award doesn't exist."}, 404
|
||||||
|
|
||||||
award = g.db.query(AwardRelationship).filter(
|
award = g.db.query(AwardRelationship).filter(
|
||||||
AwardRelationship.kind == kind,
|
AwardRelationship.kind == kind,
|
||||||
|
@ -327,6 +339,28 @@ def award_thing(v, thing_type, id):
|
||||||
elif kind == "checkmark":
|
elif kind == "checkmark":
|
||||||
author.verified = "Verified"
|
author.verified = "Verified"
|
||||||
badge_grant(user=author, badge_id=150)
|
badge_grant(user=author, badge_id=150)
|
||||||
|
elif "Vampire" in kind and kind == v.house:
|
||||||
|
if author.bite: author.bite += 21600
|
||||||
|
else: author.bite = int(time.time()) + 21600
|
||||||
|
author.old_house = author.house
|
||||||
|
author.house = 'Vampire'
|
||||||
|
elif "Racist" in kind and kind == v.house:
|
||||||
|
if author.earlylife: author.earlylife += 21600
|
||||||
|
else: author.earlylife = int(time.time()) + 21600
|
||||||
|
elif "Furry" in kind and kind == v.house and thing_type == 'comment':
|
||||||
|
body = thing.body
|
||||||
|
body = owoify.owoify(body)
|
||||||
|
if thing.award_count('Femboy', v) or thing.award_count('Femboy Founder', v):
|
||||||
|
body = marsify(body)
|
||||||
|
thing.body_html = sanitize(body, limit_pings=5)
|
||||||
|
g.db.add(thing)
|
||||||
|
elif "Femboy" in kind and kind == v.house and thing_type == 'comment':
|
||||||
|
body = thing.body
|
||||||
|
if thing.award_count('Furry', v) or thing.award_count('Furry Founder', v):
|
||||||
|
body = owoify.owoify(body)
|
||||||
|
body = marsify(body)
|
||||||
|
thing.body_html = sanitize(body, limit_pings=5)
|
||||||
|
g.db.add(thing)
|
||||||
|
|
||||||
if author.received_award_count: author.received_award_count += 1
|
if author.received_award_count: author.received_award_count += 1
|
||||||
else: author.received_award_count = 1
|
else: author.received_award_count = 1
|
||||||
|
|
|
@ -14,6 +14,8 @@ from files.routes.static import marsey_list
|
||||||
from flask import *
|
from flask import *
|
||||||
from files.__main__ import app, limiter
|
from files.__main__ import app, limiter
|
||||||
from files.helpers.sanitize import filter_emojis_only
|
from files.helpers.sanitize import filter_emojis_only
|
||||||
|
from files.helpers.marsify import marsify
|
||||||
|
import owoify
|
||||||
import requests
|
import requests
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
from json import loads
|
from json import loads
|
||||||
|
@ -719,7 +721,13 @@ def edit_comment(cid, v):
|
||||||
|
|
||||||
body = body.strip()
|
body = body.strip()
|
||||||
|
|
||||||
body_html = sanitize(body, edit=True, limit_pings=5)
|
body_for_sanitize = body
|
||||||
|
if c.award_count('Furry', v) or c.award_count('Furry Founder', v):
|
||||||
|
body_for_sanitize = owoify.owoify(body_for_sanitize)
|
||||||
|
if c.award_count('Femboy', v) or c.award_count('Femboy Founder', v):
|
||||||
|
body_for_sanitize = marsify(body_for_sanitize)
|
||||||
|
|
||||||
|
body_html = sanitize(body_for_sanitize, edit=True, limit_pings=5)
|
||||||
|
|
||||||
if len(body_html) > 20000: abort(400)
|
if len(body_html) > 20000: abort(400)
|
||||||
|
|
||||||
|
|
|
@ -262,6 +262,8 @@ def settings_profile_post(v):
|
||||||
|
|
||||||
house = request.values.get("house")
|
house = request.values.get("house")
|
||||||
if house and house in ("None","Furry","Femboy","Vampire","Racist") and FEATURES['HOUSES']:
|
if house and house in ("None","Furry","Femboy","Vampire","Racist") and FEATURES['HOUSES']:
|
||||||
|
if v.bite: abort(403)
|
||||||
|
|
||||||
if v.house: cost = 2000
|
if v.house: cost = 2000
|
||||||
else: cost = 500
|
else: cost = 500
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
{% for user in participants %}
|
{% for user in participants %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td>{{user.currently_held_lottery_tickets}}</td>
|
<td>{{user.currently_held_lottery_tickets}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
{% for user in admins %}
|
{% for user in admins %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td style="text-align:right;">{{user.truecoins}}</td>
|
<td style="text-align:right;">{{user.truecoins}}</td>
|
||||||
<td style="text-align:right;"><a href="/log?admin={{user.username}}">{{user.modaction_num}}</a></td>
|
<td style="text-align:right;"><a href="/log?admin={{user.username}}">{{user.modaction_num}}</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
{% for user in users %}
|
{% for user in users %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -44,6 +44,17 @@
|
||||||
{{v.css | safe}}
|
{{v.css | safe}}
|
||||||
</style>
|
</style>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if v.earlylife %}
|
||||||
|
<style>
|
||||||
|
.nav-item .text-small.font-weight-bold::before {
|
||||||
|
content: "((("
|
||||||
|
}
|
||||||
|
.nav-item .text-small.font-weight-bold::after {
|
||||||
|
content: ")))"
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<style>:root{--primary:#{{DEFAULT_COLOR}}</style>
|
<style>:root{--primary:#{{DEFAULT_COLOR}}</style>
|
||||||
<link rel="stylesheet" href="{{asset('css/main.css')}}">
|
<link rel="stylesheet" href="{{asset('css/main.css')}}">
|
||||||
|
|
|
@ -13,9 +13,9 @@
|
||||||
{% for user in users %}
|
{% for user in users %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td>{% if user.ban_reason %}{{user.ban_reason}}{% endif %}</td>
|
<td>{% if user.ban_reason %}{{user.ban_reason}}{% endif %}</td>
|
||||||
<td><a href="/@{{user.banned_by.username}}"><img loading="lazy" src="{{user.banned_by.profile_url}}" class="pp20"><span {% if user.banned_by.patron %}class="patron" style="background-color:#{{user.banned_by.namecolor}}"{% endif %}>{{user.banned_by.username}}</span></a></td>
|
<td><a href="/@{{user.banned_by.username}}"><img loading="lazy" src="{{user.banned_by.profile_url}}" class="pp20"><span {% if user.banned_by.patron %}class="patron" style="background-color:#{{user.banned_by.name_color}}"{% endif %}>{{user.banned_by.username}}</span></a></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
{% for user in users %}
|
{% for user in users %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="font-weight:bold;color:#{{user.namecolor}}" href="/@{{user.username}}"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="font-weight:bold;color:#{{user.name_color}}" href="/@{{user.username}}"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td><a style="font-weight:bold;color:#{{targets[loop.index-1].namecolor}}" href="/@{{targets[loop.index-1].username}}"><span {% if targets[loop.index-1].patron %}class="patron" style="background-color:#{{targets[loop.index-1].namecolor}}"{% endif %}>{{targets[loop.index-1].username}}</span></a></td>
|
<td><a style="font-weight:bold;color:#{{targets[loop.index-1].name_color}}" href="/@{{targets[loop.index-1].username}}"><span {% if targets[loop.index-1].patron %}class="patron" style="background-color:#{{targets[loop.index-1].name_color}}"{% endif %}>{{targets[loop.index-1].username}}</span></a></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -189,7 +189,7 @@
|
||||||
<span id="typing-indicator"></span>
|
<span id="typing-indicator"></span>
|
||||||
<span id="loading-indicator" class="d-none"></span>
|
<span id="loading-indicator" class="d-none"></span>
|
||||||
</div>
|
</div>
|
||||||
<i class="btn btn-secondary mr-2 fas fa-smile-beam" style="padding-top:0.65rem" onclick="loadEmojis('input-text')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-placement="bottom" title="Add Emoji"></i>
|
<i class="btn btn-secondary mr-2 fas fa-kiss-wink-heart" style="padding-top:0.65rem" onclick="loadEmojis('input-text')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-placement="bottom" title="Add Emoji"></i>
|
||||||
<textarea onclick="scroll_chat()" id="input-text" minlength="1" maxlength="{% if SITE == 'rdrama.net' %}200{% else %}1000{% endif %}" style="font-size:16px!important" class="form-control" placeholder="Message" autocomplete="off" autofocus rows="1"></textarea>
|
<textarea onclick="scroll_chat()" id="input-text" minlength="1" maxlength="{% if SITE == 'rdrama.net' %}200{% else %}1000{% endif %}" style="font-size:16px!important" class="form-control" placeholder="Message" autocomplete="off" autofocus rows="1"></textarea>
|
||||||
<button id="chatsend" onclick="send()" class="btn btn-primary ml-3" type="submit" onclick="disable(this)">Send</button>
|
<button id="chatsend" onclick="send()" class="btn btn-primary ml-3" type="submit" onclick="disable(this)">Send</button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -205,6 +205,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<input id="vid" type="hidden" value="{{v.id}}">
|
<input id="vid" type="hidden" value="{{v.id}}">
|
||||||
|
<input id="vusername" type="hidden" value="{{v.username}}">
|
||||||
<input id="site_name" type="hidden" value="{{SITE_NAME}}">
|
<input id="site_name" type="hidden" value="{{SITE_NAME}}">
|
||||||
<input id="slurreplacer" type="hidden" value="{{v.slurreplacer}}">
|
<input id="slurreplacer" type="hidden" value="{{v.slurreplacer}}">
|
||||||
|
|
||||||
|
@ -213,6 +214,6 @@
|
||||||
|
|
||||||
<script src="{{asset('js/lozad.js')}}"></script>
|
<script src="{{asset('js/lozad.js')}}"></script>
|
||||||
<script src="/assets/js/lite-youtube.js?v=241"></script>
|
<script src="/assets/js/lite-youtube.js?v=241"></script>
|
||||||
<script src="/chat.js?v=3042"></script>
|
<script src="/chat.js?v=3043"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
|
@ -73,7 +73,7 @@
|
||||||
{% if c.is_blocking and not c.ghost or (c.is_banned or c.deleted_utc) and not (v and v.admin_level > 1) and not (v and v.id==c.author_id) %}
|
{% if c.is_blocking and not c.ghost or (c.is_banned or c.deleted_utc) and not (v and v.admin_level > 1) and not (v and v.id==c.author_id) %}
|
||||||
|
|
||||||
<div id="comment-{{c.id}}" class="comment">
|
<div id="comment-{{c.id}}" class="comment">
|
||||||
<span class="comment-collapse-desktop d-none d-md-block" style="border-left: 2px solid #{{c.author.namecolor}}"onclick="collapse_comment('{{c.id}}', this.parentElement)"></span>
|
<span class="comment-collapse-desktop d-none d-md-block" style="border-left: 2px solid #{{c.author.name_color}}"onclick="collapse_comment('{{c.id}}', this.parentElement)"></span>
|
||||||
|
|
||||||
<div class="comment-body">
|
<div class="comment-body">
|
||||||
|
|
||||||
|
@ -157,9 +157,9 @@
|
||||||
{% set isreply = False %}
|
{% set isreply = False %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div id="comment-{{c.id}}" class="anchor comment {% if standalone and level==1 %} mt-0{% endif %} {% if c.collapse_for_user(v,request.full_path) %}collapsed{% endif %}" style="{% if isreply %}padding-left:0!important;{% else %}border-left: 2px solid {% if c.ghost %}var(--primary){% else %}#{{c.author.namecolor}};{% endif %}{% endif %}">
|
<div id="comment-{{c.id}}" class="anchor comment {% if standalone and level==1 %} mt-0{% endif %} {% if c.collapse_for_user(v,request.full_path) %}collapsed{% endif %}" style="{% if isreply %}padding-left:0!important;{% else %}border-left: 2px solid {% if c.ghost %}var(--primary){% else %}#{{c.author.name_color}};{% endif %}{% endif %}">
|
||||||
{% if not isreply %}
|
{% if not isreply %}
|
||||||
<span class="comment-collapse-desktop d-none d-md-block" style="border-left: 2px solid {% if c.ghost %}var(--primary){% else %}#{{c.author.namecolor}}{% endif %}" onclick="collapse_comment('{{c.id}}', this.parentElement)"></span>
|
<span class="comment-collapse-desktop d-none d-md-block" style="border-left: 2px solid {% if c.ghost %}var(--primary){% else %}#{{c.author.name_color}}{% endif %}" onclick="collapse_comment('{{c.id}}', this.parentElement)"></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="comment-body">
|
<div class="comment-body">
|
||||||
|
|
||||||
|
@ -208,14 +208,14 @@
|
||||||
{% if c.author.verified %}<i class="fas fa-badge-check align-middle ml-1 {% if c.author.verified=='Glowiefied' %}glow{% endif %}" style="color:{% if c.author.verifiedcolor %}#{{c.author.verifiedcolor}}{% else %}#1DA1F2{% endif %}" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{c.author.verified}}"></i>
|
{% if c.author.verified %}<i class="fas fa-badge-check align-middle ml-1 {% if c.author.verified=='Glowiefied' %}glow{% endif %}" style="color:{% if c.author.verifiedcolor %}#{{c.author.verifiedcolor}}{% else %}#1DA1F2{% endif %}" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{c.author.verified}}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<a class="user-name text-decoration-none" href="{{c.author.url}}" data-pop-info='{{c.author.json_popover(v) | tojson}}' onclick='popclick(event)' data-bs-placement="bottom" data-bs-toggle="popover" data-bs-trigger="click" data-content-id="popover" role="button" tabindex="0" style="color:#{{c.author.namecolor}}; font-size:12px; font-weight:bold;">
|
<a class="user-name text-decoration-none" href="{{c.author.url}}" data-pop-info='{{c.author.json_popover(v) | tojson}}' onclick='popclick(event)' data-bs-placement="bottom" data-bs-toggle="popover" data-bs-trigger="click" data-content-id="popover" role="button" tabindex="0" style="color:#{{c.author.name_color}}; font-size:12px; font-weight:bold;">
|
||||||
<div class="profile-pic-30-wrapper">
|
<div class="profile-pic-30-wrapper">
|
||||||
<img loading="lazy" src="{{c.author.profile_url}}" class="profile-pic-30 mr-2">
|
<img loading="lazy" src="{{c.author.profile_url}}" class="profile-pic-30 mr-2">
|
||||||
{% if c.author.hat_active -%}
|
{% if c.author.hat_active -%}
|
||||||
<img class="profile-pic-30-hat" loading="lazy" src="/i/hats/{{c.author.hat_active}}.webp" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{c.author.hat_tooltip}}">
|
<img class="profile-pic-30-hat" loading="lazy" src="/i/hats/{{c.author.hat_active}}.webp" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{c.author.hat_tooltip}}">
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
</div>
|
</div>
|
||||||
<span {% if c.author.patron and not c.distinguish_level %}class="patron" style="background-color:#{{c.author.namecolor}};"{% elif c.distinguish_level %}class="mod"{% endif %}>{{c.author_name}}</span>
|
<span {% if c.author.patron and not c.distinguish_level %}class="patron" style="background-color:#{{c.author.name_color}};"{% elif c.distinguish_level %}class="mod"{% endif %}>{{c.author_name}}</span>
|
||||||
</a>
|
</a>
|
||||||
{% if FEATURES['PRONOUNS'] %}
|
{% if FEATURES['PRONOUNS'] %}
|
||||||
<span class="pronouns" style="color:#{{c.author.titlecolor}};border-color:#{{c.author.titlecolor}}">{{c.author.pronouns}}</span>
|
<span class="pronouns" style="color:#{{c.author.titlecolor}};border-color:#{{c.author.titlecolor}}">{{c.author.pronouns}}</span>
|
||||||
|
@ -327,7 +327,7 @@
|
||||||
|
|
||||||
<small class="btn btn-secondary format m-0" aria-hidden="true" onclick="commentForm('comment-edit-body-{{c.id}}');getGif()" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add GIF"><span class="font-weight-bolder text-uppercase">GIF</span></small>
|
<small class="btn btn-secondary format m-0" aria-hidden="true" onclick="commentForm('comment-edit-body-{{c.id}}');getGif()" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add GIF"><span class="font-weight-bolder text-uppercase">GIF</span></small>
|
||||||
|
|
||||||
<small class="btn btn-secondary format m-0" aria-hidden="true" onclick="loadEmojis('comment-edit-body-{{c.id}}')" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"><i class="fas fa-smile-beam"></i></small>
|
<small class="btn btn-secondary format m-0" aria-hidden="true" onclick="loadEmojis('comment-edit-body-{{c.id}}')" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"><i class="fas fa-kiss-wink-heart"></i></small>
|
||||||
|
|
||||||
|
|
||||||
<label class="btn btn-secondary format m-0" for="file-edit-reply-{{c.id}}">
|
<label class="btn btn-secondary format m-0" for="file-edit-reply-{{c.id}}">
|
||||||
|
@ -581,7 +581,7 @@
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label class="btn btn-secondary format m-0" for="gif-reply-btn-{{c.fullname}}" onclick="loadEmojis('reply-form-body-{{c.fullname}}')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji">
|
<label class="btn btn-secondary format m-0" for="gif-reply-btn-{{c.fullname}}" onclick="loadEmojis('reply-form-body-{{c.fullname}}')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji">
|
||||||
<i id="emoji-reply-btn-{{c.fullname}}" class="fas fa-smile-beam"></i>
|
<i id="emoji-reply-btn-{{c.fullname}}" class="fas fa-kiss-wink-heart"></i>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label class="btn btn-secondary format m-0" for="file-upload-reply-{{c.fullname}}">
|
<label class="btn btn-secondary format m-0" for="file-upload-reply-{{c.fullname}}">
|
||||||
|
@ -624,7 +624,7 @@
|
||||||
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
||||||
<textarea required autocomplete="off" minlength="1" maxlength="10000" name="body" form="reply-to-t3_{{c.id}}" data-id="{{c.id}}" class="comment-box form-control rounded" id="reply-form-body-{{c.id}}" aria-label="With textarea" rows="3" data-preview="message-reply-{{c.id}}" oninput="markdown(this)"></textarea>
|
<textarea required autocomplete="off" minlength="1" maxlength="10000" name="body" form="reply-to-t3_{{c.id}}" data-id="{{c.id}}" class="comment-box form-control rounded" id="reply-form-body-{{c.id}}" aria-label="With textarea" rows="3" data-preview="message-reply-{{c.id}}" oninput="markdown(this)"></textarea>
|
||||||
<div class="comment-format" id="comment-format-bar-{{c.id}}">
|
<div class="comment-format" id="comment-format-bar-{{c.id}}">
|
||||||
<div onclick="loadEmojis('reply-form-body-{{c.id}}')" class="btn btn-secondary m-0 mt-3 mr-1" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"><i class="fas fa-smile-beam"></i></div>
|
<div onclick="loadEmojis('reply-form-body-{{c.id}}')" class="btn btn-secondary m-0 mt-3 mr-1" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"><i class="fas fa-kiss-wink-heart"></i></div>
|
||||||
|
|
||||||
{% if c.sentto == 2 %}
|
{% if c.sentto == 2 %}
|
||||||
<label class="btn btn-secondary m-0 mt-3" for="file-upload">
|
<label class="btn btn-secondary m-0 mt-3" for="file-upload">
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
||||||
<textarea autocomplete="off" maxlength="10000" id="input-message" form="contactform" name="message" class="form-control" required></textarea>
|
<textarea autocomplete="off" maxlength="10000" id="input-message" form="contactform" name="message" class="form-control" required></textarea>
|
||||||
<label class="btn btn-secondary format m-0 mt-3" onclick="loadEmojis('input-message')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji">
|
<label class="btn btn-secondary format m-0 mt-3" onclick="loadEmojis('input-message')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji">
|
||||||
<i class="fas fa-smile-beam"></i>
|
<i class="fas fa-kiss-wink-heart"></i>
|
||||||
</label>
|
</label>
|
||||||
<label class="btn btn-secondary m-0 mt-3" for="file-upload">
|
<label class="btn btn-secondary m-0 mt-3" for="file-upload">
|
||||||
<div id="filename"><i class="fas fa-file"></i></div>
|
<div id="filename"><i class="fas fa-file"></i></div>
|
||||||
|
|
|
@ -41,6 +41,17 @@
|
||||||
{{v.css | safe}}
|
{{v.css | safe}}
|
||||||
</style>
|
</style>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if v.earlylife %}
|
||||||
|
<style>
|
||||||
|
.nav-item .text-small.font-weight-bold::before {
|
||||||
|
content: "((("
|
||||||
|
}
|
||||||
|
.nav-item .text-small.font-weight-bold::after {
|
||||||
|
content: ")))"
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<style>:root{--primary:#{{DEFAULT_COLOR}}</style>
|
<style>:root{--primary:#{{DEFAULT_COLOR}}</style>
|
||||||
<link rel="stylesheet" href="{{asset('css/main.css')}}">
|
<link rel="stylesheet" href="{{asset('css/main.css')}}">
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
{% for user in users %}
|
{% for user in users %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
{% if v.id == u.id %}
|
{% if v.id == u.id %}
|
||||||
<td><div class="btn btn-danger pr-2" onclick="removeFollower(event, '{{user.username}}')">Remove follow</div></td>
|
<td><div class="btn btn-danger pr-2" onclick="removeFollower(event, '{{user.username}}')">Remove follow</div></td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
{% for user in users %}
|
{% for user in users %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
{% if v.id == u.id %}
|
{% if v.id == u.id %}
|
||||||
<td><div class="btn btn-danger" onclick="removeFollowing(event, '{{user.username}}')">Unfollow</div></td>
|
<td><div class="btn btn-danger" onclick="removeFollowing(event, '{{user.username}}')">Unfollow</div></td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
{% for user in users %}
|
{% for user in users %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td>{{user.ban_reason.split('by ')[1]}}</td>
|
<td>{{user.ban_reason.split('by ')[1]}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -207,7 +207,7 @@
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="text-left pl-2">
|
<div class="text-left pl-2">
|
||||||
<div style="color: #{{v.namecolor}}" class="text-small font-weight-bold" id="header--username"><span {% if v.patron %}class="patron" style="background-color:#{{v.namecolor}}"{% endif %}>{{v.username}}</span></div>
|
<div style="color: #{{v.name_color}}" class="text-small font-weight-bold"><span id="header--username" {% if v.patron %}class="patron" style="background-color:#{{v.name_color}}"{% endif %}>{{v.username}}</span></div>
|
||||||
<div class="header--currency"><img alt="coins" class="mr-1 ml-1" data-bs-toggle="tooltip" data-bs-placement="bottom" src="{{asset_siteimg('coins.webp')}}" title="coins" aria-label="coins"><span id="user-coins-amount">{{v.coins}}</span>{% if not FEATURES['PROCOINS'] %} Coin{{ help.plural(v.coins) }}{% endif %}</div>
|
<div class="header--currency"><img alt="coins" class="mr-1 ml-1" data-bs-toggle="tooltip" data-bs-placement="bottom" src="{{asset_siteimg('coins.webp')}}" title="coins" aria-label="coins"><span id="user-coins-amount">{{v.coins}}</span>{% if not FEATURES['PROCOINS'] %} Coin{{ help.plural(v.coins) }}{% endif %}</div>
|
||||||
{% if FEATURES['PROCOINS'] %}
|
{% if FEATURES['PROCOINS'] %}
|
||||||
<div class="header--currency"><img alt="marseybux" class="mr-1 ml-1" data-bs-toggle="tooltip" data-bs-placement="bottom" src="/i/marseybux.webp?v=2000" title="Marseybux" aria-label="Marseybux"><span id="user-bux-amount">{{v.procoins}}</span></div>
|
<div class="header--currency"><img alt="marseybux" class="mr-1 ml-1" data-bs-toggle="tooltip" data-bs-placement="bottom" src="/i/marseybux.webp?v=2000" title="Marseybux" aria-label="Marseybux"><span id="user-bux-amount">{{v.procoins}}</span></div>
|
||||||
|
|
|
@ -35,14 +35,14 @@
|
||||||
{% for user in users1 %}
|
{% for user in users1 %}
|
||||||
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td>{{user.coins}}</td>
|
<td>{{user.coins}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if pos1 > 25 %}
|
{% if pos1 > 25 %}
|
||||||
<tr style="border-top:2px solid var(--primary)">
|
<tr style="border-top:2px solid var(--primary)">
|
||||||
<td>{{pos1}}</td>
|
<td>{{pos1}}</td>
|
||||||
<td><a style="color:#{{v.namecolor}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.namecolor}}"{% endif %}>{{v.username}}</span></a></td>
|
<td><a style="color:#{{v.name_color}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.name_color}}"{% endif %}>{{v.username}}</span></a></td>
|
||||||
<td>{{v.coins}}</td>
|
<td>{{v.coins}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -62,14 +62,14 @@
|
||||||
{% for user in users7 %}
|
{% for user in users7 %}
|
||||||
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td>{{user.coins_spent}}</td>
|
<td>{{user.coins_spent}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if pos7 > 25 %}
|
{% if pos7 > 25 %}
|
||||||
<tr style="border-top:2px solid var(--primary)">
|
<tr style="border-top:2px solid var(--primary)">
|
||||||
<td>{{pos7}}</td>
|
<td>{{pos7}}</td>
|
||||||
<td><a style="color:#{{v.namecolor}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.namecolor}}"{% endif %}>{{v.username}}</span></a></td>
|
<td><a style="color:#{{v.name_color}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.name_color}}"{% endif %}>{{v.username}}</span></a></td>
|
||||||
<td>{{v.coins_spent}}</td>
|
<td>{{v.coins_spent}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -89,14 +89,14 @@
|
||||||
{% for user in users10 %}
|
{% for user in users10 %}
|
||||||
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td>{{user.truecoins}}</td>
|
<td>{{user.truecoins}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if pos10 > 25 %}
|
{% if pos10 > 25 %}
|
||||||
<tr style="border-top:2px solid var(--primary)">
|
<tr style="border-top:2px solid var(--primary)">
|
||||||
<td>{{pos10}}</td>
|
<td>{{pos10}}</td>
|
||||||
<td><a style="color:#{{v.namecolor}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.namecolor}}"{% endif %}>{{v.username}}</span></a></td>
|
<td><a style="color:#{{v.name_color}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.name_color}}"{% endif %}>{{v.username}}</span></a></td>
|
||||||
<td>{{v.truecoins}}</td>
|
<td>{{v.truecoins}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -116,14 +116,14 @@
|
||||||
{% for user in users2 %}
|
{% for user in users2 %}
|
||||||
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td>{{user.stored_subscriber_count}}</td>
|
<td>{{user.stored_subscriber_count}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if pos2 > 25 %}
|
{% if pos2 > 25 %}
|
||||||
<tr style="border-top:2px solid var(--primary)">
|
<tr style="border-top:2px solid var(--primary)">
|
||||||
<td>{{pos2}}</td>
|
<td>{{pos2}}</td>
|
||||||
<td><a style="color:#{{v.namecolor}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.namecolor}}"{% endif %}>{{v.username}}</span></a></td>
|
<td><a style="color:#{{v.name_color}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.name_color}}"{% endif %}>{{v.username}}</span></a></td>
|
||||||
<td>{{v.stored_subscriber_count}}</td>
|
<td>{{v.stored_subscriber_count}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -142,14 +142,14 @@
|
||||||
{% for user in users3 %}
|
{% for user in users3 %}
|
||||||
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td>{{user.post_count}}</td>
|
<td>{{user.post_count}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if pos3 > 25 %}
|
{% if pos3 > 25 %}
|
||||||
<tr style="border-top:2px solid var(--primary)">
|
<tr style="border-top:2px solid var(--primary)">
|
||||||
<td>{{pos3}}</td>
|
<td>{{pos3}}</td>
|
||||||
<td><a style="color:#{{v.namecolor}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.namecolor}}"{% endif %}>{{v.username}}</span></a></td>
|
<td><a style="color:#{{v.name_color}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.name_color}}"{% endif %}>{{v.username}}</span></a></td>
|
||||||
<td>{{v.post_count}}</td>
|
<td>{{v.post_count}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -168,14 +168,14 @@
|
||||||
{% for user in users4 %}
|
{% for user in users4 %}
|
||||||
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td>{{user.comment_count}}</td>
|
<td>{{user.comment_count}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if pos4 > 25 %}
|
{% if pos4 > 25 %}
|
||||||
<tr style="border-top:2px solid var(--primary)">
|
<tr style="border-top:2px solid var(--primary)">
|
||||||
<td>{{pos4}}</td>
|
<td>{{pos4}}</td>
|
||||||
<td><a style="color:#{{v.namecolor}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.namecolor}}"{% endif %}>{{v.username}}</span></a></td>
|
<td><a style="color:#{{v.name_color}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.name_color}}"{% endif %}>{{v.username}}</span></a></td>
|
||||||
<td>{{v.comment_count}}</td>
|
<td>{{v.comment_count}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -194,14 +194,14 @@
|
||||||
{% for user in users5 %}
|
{% for user in users5 %}
|
||||||
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td>{{user.received_award_count}}</td>
|
<td>{{user.received_award_count}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if pos5 > 25 %}
|
{% if pos5 > 25 %}
|
||||||
<tr style="border-top:2px solid var(--primary)">
|
<tr style="border-top:2px solid var(--primary)">
|
||||||
<td>{{pos5}}</td>
|
<td>{{pos5}}</td>
|
||||||
<td><a style="color:#{{v.namecolor}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.namecolor}}"{% endif %}>{{v.username}}</span></a></td>
|
<td><a style="color:#{{v.name_color}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.name_color}}"{% endif %}>{{v.username}}</span></a></td>
|
||||||
<td>{{v.received_award_count}}</td>
|
<td>{{v.received_award_count}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -221,14 +221,14 @@
|
||||||
{% for user in users9 %}
|
{% for user in users9 %}
|
||||||
<tr {% if v.id == user[0].id %}class="self"{% endif %}>
|
<tr {% if v.id == user[0].id %}class="self"{% endif %}>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user[0].namecolor}};font-weight:bold" href="/@{{user[0].username}}"><img loading="lazy" src="{{user[0].profile_url}}" class="pp20"><span {% if user[0].patron %}class="patron" style="background-color:#{{user[0].namecolor}}"{% endif %}>{{user[0].username}}</span></a></td>
|
<td><a style="color:#{{user[0].name_color}};font-weight:bold" href="/@{{user[0].username}}"><img loading="lazy" src="{{user[0].profile_url}}" class="pp20"><span {% if user[0].patron %}class="patron" style="background-color:#{{user[0].name_color}}"{% endif %}>{{user[0].username}}</span></a></td>
|
||||||
<td>{{user[1]}}</td>
|
<td>{{user[1]}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if pos9 and (pos9[0] > 25 or not pos9[1]) %}
|
{% if pos9 and (pos9[0] > 25 or not pos9[1]) %}
|
||||||
<tr style="border-top:2px solid var(--primary)">
|
<tr style="border-top:2px solid var(--primary)">
|
||||||
<td>{{pos9[0]}}</td>
|
<td>{{pos9[0]}}</td>
|
||||||
<td><a style="color:#{{v.namecolor}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.namecolor}}"{% endif %}>{{v.username}}</span></a></td>
|
<td><a style="color:#{{v.name_color}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.name_color}}"{% endif %}>{{v.username}}</span></a></td>
|
||||||
<td>{{pos9[1]}}</td>
|
<td>{{pos9[1]}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -249,14 +249,14 @@
|
||||||
{% for user in users11 %}
|
{% for user in users11 %}
|
||||||
<tr {% if v.id == user[0].id %}class="self"{% endif %}>
|
<tr {% if v.id == user[0].id %}class="self"{% endif %}>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user[0].namecolor}};font-weight:bold" href="/@{{user[0].username}}"><img loading="lazy" src="{{user[0].profile_url}}" class="pp20"><span {% if user[0].patron %}class="patron" style="background-color:#{{user[0].namecolor}}"{% endif %}>{{user[0].username}}</span></a></td>
|
<td><a style="color:#{{user[0].name_color}};font-weight:bold" href="/@{{user[0].username}}"><img loading="lazy" src="{{user[0].profile_url}}" class="pp20"><span {% if user[0].patron %}class="patron" style="background-color:#{{user[0].name_color}}"{% endif %}>{{user[0].username}}</span></a></td>
|
||||||
<td>{{user[1]}}</td>
|
<td>{{user[1]}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if pos11 and (pos11[0] > 25 or not pos11[1]) %}
|
{% if pos11 and (pos11[0] > 25 or not pos11[1]) %}
|
||||||
<tr style="border-top:2px solid var(--primary)">
|
<tr style="border-top:2px solid var(--primary)">
|
||||||
<td>{{pos11[0]}}</td>
|
<td>{{pos11[0]}}</td>
|
||||||
<td><a style="color:#{{v.namecolor}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.namecolor}}"{% endif %}>{{v.username}}</span></a></td>
|
<td><a style="color:#{{v.name_color}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.name_color}}"{% endif %}>{{v.username}}</span></a></td>
|
||||||
<td>{{pos11[1]}}</td>
|
<td>{{pos11[1]}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -280,14 +280,14 @@
|
||||||
{% for user in users6 %}
|
{% for user in users6 %}
|
||||||
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td>{{user.basedcount}}</td>
|
<td>{{user.basedcount}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if pos6 > 25 %}
|
{% if pos6 > 25 %}
|
||||||
<tr style="border-top:2px solid var(--primary)">
|
<tr style="border-top:2px solid var(--primary)">
|
||||||
<td>{{pos6}}</td>
|
<td>{{pos6}}</td>
|
||||||
<td><a style="color:#{{v.namecolor}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.namecolor}}"{% endif %}>{{v.username}}</span></a></td>
|
<td><a style="color:#{{v.name_color}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.name_color}}"{% endif %}>{{v.username}}</span></a></td>
|
||||||
<td>{{v.basedcount}}</td>
|
<td>{{v.basedcount}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -310,14 +310,14 @@
|
||||||
{% for user in users12 %}
|
{% for user in users12 %}
|
||||||
<tr {% if v.id == user[0].id %}class="self"{% endif %}>
|
<tr {% if v.id == user[0].id %}class="self"{% endif %}>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user[0].namecolor}};font-weight:bold" href="/@{{user[0].username}}"><img loading="lazy" src="{{user[0].profile_url}}" class="pp20"><span {% if user[0].patron %}class="patron" style="background-color:#{{user[0].namecolor}}"{% endif %}>{{user[0].username}}</span></a></td>
|
<td><a style="color:#{{user[0].name_color}};font-weight:bold" href="/@{{user[0].username}}"><img loading="lazy" src="{{user[0].profile_url}}" class="pp20"><span {% if user[0].patron %}class="patron" style="background-color:#{{user[0].name_color}}"{% endif %}>{{user[0].username}}</span></a></td>
|
||||||
<td>{{user[1]}}</td>
|
<td>{{user[1]}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if pos12 and (pos12[0] > 25 or not pos12[1]) %}
|
{% if pos12 and (pos12[0] > 25 or not pos12[1]) %}
|
||||||
<tr style="border-top:2px solid var(--primary)">
|
<tr style="border-top:2px solid var(--primary)">
|
||||||
<td>{{pos12[0]}}</td>
|
<td>{{pos12[0]}}</td>
|
||||||
<td><a style="color:#{{v.namecolor}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.namecolor}}"{% endif %}>{{v.username}}</span></a></td>
|
<td><a style="color:#{{v.name_color}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.name_color}}"{% endif %}>{{v.username}}</span></a></td>
|
||||||
<td>{{pos12[1]}}</td>
|
<td>{{pos12[1]}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -341,14 +341,14 @@
|
||||||
{% for user in users13 %}
|
{% for user in users13 %}
|
||||||
<tr {% if v.id == user[0].id %}class="self"{% endif %}>
|
<tr {% if v.id == user[0].id %}class="self"{% endif %}>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user[0].namecolor}};font-weight:bold" href="/@{{user[0].username}}"><img loading="lazy" src="{{user[0].profile_url}}" class="pp20"><span {% if user[0].patron %}class="patron" style="background-color:#{{user[0].namecolor}}"{% endif %}>{{user[0].username}}</span></a></td>
|
<td><a style="color:#{{user[0].name_color}};font-weight:bold" href="/@{{user[0].username}}"><img loading="lazy" src="{{user[0].profile_url}}" class="pp20"><span {% if user[0].patron %}class="patron" style="background-color:#{{user[0].name_color}}"{% endif %}>{{user[0].username}}</span></a></td>
|
||||||
<td>{{user[1]}}</td>
|
<td>{{user[1]}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if pos13 and (pos13[0] > 25 or not pos13[1]) %}
|
{% if pos13 and (pos13[0] > 25 or not pos13[1]) %}
|
||||||
<tr style="border-top:2px solid var(--primary)">
|
<tr style="border-top:2px solid var(--primary)">
|
||||||
<td>{{pos13[0]}}</td>
|
<td>{{pos13[0]}}</td>
|
||||||
<td><a style="color:#{{v.namecolor}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.namecolor}}"{% endif %}>{{v.username}}</span></a></td>
|
<td><a style="color:#{{v.name_color}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.name_color}}"{% endif %}>{{v.username}}</span></a></td>
|
||||||
<td>{{pos13[1]}}</td>
|
<td>{{pos13[1]}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -369,14 +369,14 @@
|
||||||
{% for user in users14 %}
|
{% for user in users14 %}
|
||||||
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td>{{user.winnings}}</td>
|
<td>{{user.winnings}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if pos14 > 25 %}
|
{% if pos14 > 25 %}
|
||||||
<tr style="border-top:2px solid var(--primary)">
|
<tr style="border-top:2px solid var(--primary)">
|
||||||
<td>{{pos14}}</td>
|
<td>{{pos14}}</td>
|
||||||
<td><a style="color:#{{v.namecolor}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.namecolor}}"{% endif %}>{{v.username}}</span></a></td>
|
<td><a style="color:#{{v.name_color}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.name_color}}"{% endif %}>{{v.username}}</span></a></td>
|
||||||
<td>{{v.winnings}}</td>
|
<td>{{v.winnings}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -395,14 +395,14 @@
|
||||||
{% for user in users15 %}
|
{% for user in users15 %}
|
||||||
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}};font-weight:bold" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td>{{user.winnings}}</td>
|
<td>{{user.winnings}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if pos15 > 25 %}
|
{% if pos15 > 25 %}
|
||||||
<tr style="border-top:2px solid var(--primary)">
|
<tr style="border-top:2px solid var(--primary)">
|
||||||
<td>{{pos15}}</td>
|
<td>{{pos15}}</td>
|
||||||
<td><a style="color:#{{v.namecolor}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.namecolor}}"{% endif %}>{{v.username}}</span></a></td>
|
<td><a style="color:#{{v.name_color}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.name_color}}"{% endif %}>{{v.username}}</span></a></td>
|
||||||
<td>{{v.winnings}}</td>
|
<td>{{v.winnings}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -421,7 +421,7 @@
|
||||||
{% for user in usersBlk %}
|
{% for user in usersBlk %}
|
||||||
<tr {% if v.id == user.target_id %}class="self"{% endif %}>
|
<tr {% if v.id == user.target_id %}class="self"{% endif %}>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}};font-weight:bold" href="/@{{user.username}}"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}};font-weight:bold" href="/@{{user.username}}"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td>{{user.n}}</td>
|
<td>{{user.n}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -31,6 +31,17 @@
|
||||||
{{v.css | safe}}
|
{{v.css | safe}}
|
||||||
</style>
|
</style>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if v.earlylife %}
|
||||||
|
<style>
|
||||||
|
.nav-item .text-small.font-weight-bold::before {
|
||||||
|
content: "((("
|
||||||
|
}
|
||||||
|
.nav-item .text-small.font-weight-bold::after {
|
||||||
|
content: ")))"
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<style>:root{--primary:#{{DEFAULT_COLOR}}</style>
|
<style>:root{--primary:#{{DEFAULT_COLOR}}</style>
|
||||||
<link rel="stylesheet" href="{{asset('css/main.css')}}">
|
<link rel="stylesheet" href="{{asset('css/main.css')}}">
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
{% for user in users %}
|
{% for user in users %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td>{{user.truecoins}}</td>
|
<td>{{user.truecoins}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
<td><img class="marsey" loading="lazy" data-bs-toggle="tooltip" alt=":#{{marsey.name}}:" title=":{{marsey.name}}:" src="/e/{{marsey.name}}.webp"></td>
|
<td><img class="marsey" loading="lazy" data-bs-toggle="tooltip" alt=":#{{marsey.name}}:" title=":{{marsey.name}}:" src="/e/{{marsey.name}}.webp"></td>
|
||||||
<td>{{marsey.count}}</td>
|
<td>{{marsey.count}}</td>
|
||||||
{% if SITE in ('rdrama.net','devrama.xyz') %}
|
{% if SITE in ('rdrama.net','devrama.xyz') %}
|
||||||
<td><a style="color:#{{author.namecolor}};font-weight:bold" href="/@{{author.username}}"><img loading="lazy" src="{{author.profile_url}}" class="pp20"><span {% if author.patron %}class="patron" style="background-color:#{{author.namecolor}}"{% endif %}>{{author.username}}</span></a></td>
|
<td><a style="color:#{{author.name_color}};font-weight:bold" href="/@{{author.username}}"><img loading="lazy" src="{{author.profile_url}}" class="pp20"><span {% if author.patron %}class="patron" style="background-color:#{{author.name_color}}"{% endif %}>{{author.username}}</span></a></td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
{% for u in users %}
|
{% for u in users %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{u.namecolor}}" href="/@{{u.username}}"><img 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.name_color}}" href="/@{{u.username}}"><img loading="lazy" src="{{u.profile_url}}" class="pp20"><span {% if u.patron %}class="patron" style="background-color:#{{u.name_color}}"{% endif %}>{{u.username}}</span></a></td>
|
||||||
<td>
|
<td>
|
||||||
<img class="contain" alt="2{{u.patron}}" loading="lazy" width=29.33 height=32 src="/i/{{SITE_NAME}}/patron_badges/2{{u.patron}}.webp?v=1">
|
<img class="contain" alt="2{{u.patron}}" loading="lazy" width=29.33 height=32 src="/i/{{SITE_NAME}}/patron_badges/2{{u.patron}}.webp?v=1">
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -27,9 +27,9 @@
|
||||||
{% for vote in ups %}
|
{% for vote in ups %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<a style="color:#{{vote.user.namecolor}};font-weight:bold" href="/@{{vote.user.username}}">
|
<a style="color:#{{vote.user.name_color}};font-weight:bold" href="/@{{vote.user.username}}">
|
||||||
<img loading="lazy" src="{{vote.user.profile_url}}" class="pp20">
|
<img loading="lazy" src="{{vote.user.profile_url}}" class="pp20">
|
||||||
<span {% if vote.user.patron %}class="patron" style="background-color:#{{vote.user.namecolor}}"{% endif %}>
|
<span {% if vote.user.patron %}class="patron" style="background-color:#{{vote.user.name_color}}"{% endif %}>
|
||||||
{{vote.user.username}}
|
{{vote.user.username}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
{% for user in users %}
|
{% for user in users %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -59,6 +59,17 @@
|
||||||
{{v.css | safe}}
|
{{v.css | safe}}
|
||||||
</style>
|
</style>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if v.earlylife %}
|
||||||
|
<style>
|
||||||
|
.nav-item .text-small.font-weight-bold::before {
|
||||||
|
content: "((("
|
||||||
|
}
|
||||||
|
.nav-item .text-small.font-weight-bold::after {
|
||||||
|
content: ")))"
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{% endif %}
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body id="settings" {% if SITE_NAME == 'rDrama' and v and (v.is_banned or v.agendaposter) %}style="overflow-x: hidden;background:url(/assets/images/backgrounds/anime/1.webp?v=3) center center fixed; background-color: var(--background)"{% elif v and v.background %}style="overflow-x: hidden;background:url(/assets/images/backgrounds/{{v.background}}?v=3) center center fixed; background-color: var(--background){% if 'anime' not in v.background %};background-size: cover{% endif %}"{% endif %}>
|
<body id="settings" {% if SITE_NAME == 'rDrama' and v and (v.is_banned or v.agendaposter) %}style="overflow-x: hidden;background:url(/assets/images/backgrounds/anime/1.webp?v=3) center center fixed; background-color: var(--background)"{% elif v and v.background %}style="overflow-x: hidden;background:url(/assets/images/backgrounds/{{v.background}}?v=3) center center fixed; background-color: var(--background){% if 'anime' not in v.background %};background-size: cover{% endif %}"{% endif %}>
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
<p>Join a house (cost: {{cost}} coins or marseybux).</p>
|
<p>Join a house (cost: {{cost}} coins or marseybux).</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="input-group mb2">
|
<div class="input-group mb2">
|
||||||
<select {% if v.coins < cost and v.procoins < cost %}disabled{% endif %} autocomplete="off" id='house' class="form-control" form="profile-settings" name="house" onchange="post_toast(this,'/settings/profile?house='+document.getElementById('house').value, true)">
|
<select {% if v.coins < cost and v.procoins < cost or v.bite %}disabled{% endif %} autocomplete="off" id='house' class="form-control" form="profile-settings" name="house" onchange="post_toast(this,'/settings/profile?house='+document.getElementById('house').value, true)">
|
||||||
{% for entry in ("None","Furry","Femboy","Vampire","Racist") %}
|
{% for entry in ("None","Furry","Femboy","Vampire","Racist") %}
|
||||||
<option value="{{entry}}" {% if v.house==entry %} selected {% endif %}>
|
<option value="{{entry}}" {% if v.house==entry %} selected {% endif %}>
|
||||||
{{entry}}
|
{{entry}}
|
||||||
|
@ -435,10 +435,10 @@
|
||||||
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
||||||
|
|
||||||
{% for color in COLORS %}
|
{% for color in COLORS %}
|
||||||
<input autocomplete="off" type="radio" name="color" id="color-{{color}}" value="{{color}}" {% if v.namecolor == color %}checked{% endif %} onclick="document.getElementById('color-form').submit()">
|
<input autocomplete="off" type="radio" name="color" id="color-{{color}}" value="{{color}}" {% if v.name_color == color %}checked{% endif %} onclick="document.getElementById('color-form').submit()">
|
||||||
<label class="color-radio" for="color-{{color}}">
|
<label class="color-radio" for="color-{{color}}">
|
||||||
<span style="background-color: #{{color}}">
|
<span style="background-color: #{{color}}">
|
||||||
{% if v.namecolor.lower() == color %}
|
{% if v.name_color.lower() == color %}
|
||||||
<i class="fas fa-check text-white"></i>
|
<i class="fas fa-check text-white"></i>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
||||||
|
@ -455,7 +455,7 @@
|
||||||
<div class="d-flex">
|
<div class="d-flex">
|
||||||
<form action="/settings/namecolor" id="color-code-form" method="post">
|
<form action="/settings/namecolor" id="color-code-form" method="post">
|
||||||
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
||||||
<input autocomplete="off" class="form-control" type="text" name="color" id="color-code" minlength="6" maxlength="6" value="{% if v.namecolor %}{{v.namecolor}}{% endif %}">
|
<input autocomplete="off" class="form-control" type="text" name="color" id="color-code" minlength="6" maxlength="6" value="{% if v.name_color %}{{v.name_color}}{% endif %}">
|
||||||
<label class="btn btn-secondary text-capitalize mr-2 mt-2 mb-0">Update<input autocomplete="off" type="text" for="color-code" onclick="form.submit()" hidden=""></label>
|
<label class="btn btn-secondary text-capitalize mr-2 mt-2 mb-0">Update<input autocomplete="off" type="text" for="color-code" onclick="form.submit()" hidden=""></label>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
@ -490,7 +490,7 @@
|
||||||
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
||||||
<input maxlength=100 {% if v.flairchanged %}disabled{% endif %} autocomplete="off" id="customtitlebody" type="text" name="title" class="form-control" placeholder='Enter a flair here' value="{% if v.customtitleplain %}{{v.customtitleplain}}{% endif %}">
|
<input maxlength=100 {% if v.flairchanged %}disabled{% endif %} autocomplete="off" id="customtitlebody" type="text" name="title" class="form-control" placeholder='Enter a flair here' value="{% if v.customtitleplain %}{{v.customtitleplain}}{% endif %}">
|
||||||
<div class="d-flex mt-2">
|
<div class="d-flex mt-2">
|
||||||
<a class="format" role="button"><i class="btn btn-secondary format d-inline-block m-0 fas fa-smile-beam" onclick="loadEmojis('customtitlebody')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"></i></a>
|
<a class="format" role="button"><i class="btn btn-secondary format d-inline-block m-0 fas fa-kiss-wink-heart" onclick="loadEmojis('customtitlebody')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"></i></a>
|
||||||
|
|
||||||
<small>Limit of 100 characters</small>
|
<small>Limit of 100 characters</small>
|
||||||
<input {% if v.flairchanged %}disabled{% endif %} autocomplete="off" class="btn btn-primary ml-auto" id="titleSave" type="submit" onclick="disable(this)" value="Change Flair">
|
<input {% if v.flairchanged %}disabled{% endif %} autocomplete="off" class="btn btn-primary ml-auto" id="titleSave" type="submit" onclick="disable(this)" value="Change Flair">
|
||||||
|
@ -620,7 +620,7 @@
|
||||||
|
|
||||||
<pre style="padding-top:0.7rem;line-height:1" class="btn btn-secondary format d-inline-block m-0 font-weight-bolder text-uppercase" onclick="commentForm('bio-text');getGif()" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add GIF">GIF</pre>
|
<pre style="padding-top:0.7rem;line-height:1" class="btn btn-secondary format d-inline-block m-0 font-weight-bolder text-uppercase" onclick="commentForm('bio-text');getGif()" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add GIF">GIF</pre>
|
||||||
|
|
||||||
<pre style="padding-top:0.7rem" class="btn btn-secondary format d-inline-block m-0 fas fa-smile-beam" onclick="loadEmojis('bio-text')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"></pre>
|
<pre style="padding-top:0.7rem" class="btn btn-secondary format d-inline-block m-0 fas fa-kiss-wink-heart" onclick="loadEmojis('bio-text')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"></pre>
|
||||||
|
|
||||||
<label class="btn btn-secondary format d-inline-block m-0">
|
<label class="btn btn-secondary format d-inline-block m-0">
|
||||||
<div id="filename-show"><i class="fas fa-file"></i></div>
|
<div id="filename-show"><i class="fas fa-file"></i></div>
|
||||||
|
@ -694,7 +694,7 @@
|
||||||
|
|
||||||
<pre style="padding-top:0.7rem;line-height:1" class="btn btn-secondary format d-inline-block m-0 font-weight-bolder text-uppercase" onclick="commentForm('sig-text');getGif()" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add GIF">GIF</pre>
|
<pre style="padding-top:0.7rem;line-height:1" class="btn btn-secondary format d-inline-block m-0 font-weight-bolder text-uppercase" onclick="commentForm('sig-text');getGif()" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add GIF">GIF</pre>
|
||||||
|
|
||||||
<pre style="padding-top:0.7rem" class="btn btn-secondary format d-inline-block m-0 fas fa-smile-beam" onclick="loadEmojis('sig-text')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"></pre>
|
<pre style="padding-top:0.7rem" class="btn btn-secondary format d-inline-block m-0 fas fa-kiss-wink-heart" onclick="loadEmojis('sig-text')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"></pre>
|
||||||
</div>
|
</div>
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
<div class="d-flex">
|
<div class="d-flex">
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
{% for user in users %}
|
{% for user in users %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td>{{user.shadowbanned}}</td>
|
<td>{{user.shadowbanned}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
{% for user in users %}
|
{% for user in users %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -19,8 +19,8 @@
|
||||||
<tr>
|
<tr>
|
||||||
{% set exiler=exile.exiler %}
|
{% set exiler=exile.exiler %}
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td><a style="color:#{{exiler.namecolor}}" href="/@{{exiler.username}}"><img loading="lazy" src="{{exiler.profile_url}}" class="pp20"><span {% if exiler.patron %}class="patron" style="background-color:#{{exiler.namecolor}}"{% endif %}>{{exiler.username}}</span></a></td>
|
<td><a style="color:#{{exiler.name_color}}" href="/@{{exiler.username}}"><img loading="lazy" src="{{exiler.profile_url}}" class="pp20"><span {% if exiler.patron %}class="patron" style="background-color:#{{exiler.name_color}}"{% endif %}>{{exiler.username}}</span></a></td>
|
||||||
<td>
|
<td>
|
||||||
{% if v.mods(sub.name) %}
|
{% if v.mods(sub.name) %}
|
||||||
<form action="/h/{{sub.name}}/unexile/{{user.id}}" method="post">
|
<form action="/h/{{sub.name}}/unexile/{{user.id}}" method="post">
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
{% for user, mod in users %}
|
{% for user, mod in users %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
<td data-time="{{mod.created_utc}}"></td>
|
<td data-time="{{mod.created_utc}}"></td>
|
||||||
<td>
|
<td>
|
||||||
{% if v.id == user.id or v.mod_date(sub.name) and v.mod_date(sub.name) < mod.created_utc %}
|
{% if v.id == user.id or v.mod_date(sub.name) and v.mod_date(sub.name) < mod.created_utc %}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
{% for user in users %}
|
{% for user in users %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user.namecolor}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.namecolor}}"{% endif %}>{{user.username}}</span></a></td>
|
<td><a style="color:#{{user.name_color}}" href="/@{{user.username}}"><img loading="lazy" src="{{user.profile_url}}" class="pp20"><span {% if user.patron %}class="patron" style="background-color:#{{user.name_color}}"{% endif %}>{{user.username}}</span></a></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -673,14 +673,14 @@
|
||||||
|
|
||||||
{% if p.author.verified %}<i class="fas fa-badge-check align-middle ml-1 {% if p.author.verified=='Glowiefied' %}glow{% endif %}" style="color:{% if p.author.verifiedcolor %}#{{p.author.verifiedcolor}}{% else %}#1DA1F2{% endif %}" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{p.author.verified}}"></i>
|
{% if p.author.verified %}<i class="fas fa-badge-check align-middle ml-1 {% if p.author.verified=='Glowiefied' %}glow{% endif %}" style="color:{% if p.author.verifiedcolor %}#{{p.author.verifiedcolor}}{% else %}#1DA1F2{% endif %}" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{p.author.verified}}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a class="user-name text-decoration-none" href="{{p.author.url}}" data-pop-info='{{p.author.json_popover(v) | tojson}}' onclick='popclick(event)' data-bs-placement="bottom" data-bs-toggle="popover" data-bs-trigger="click" data-content-id="popover" role="button" tabindex="0" style="color: #{{p.author.namecolor}}; font-weight: bold"class="user-name">
|
<a class="user-name text-decoration-none" href="{{p.author.url}}" data-pop-info='{{p.author.json_popover(v) | tojson}}' onclick='popclick(event)' data-bs-placement="bottom" data-bs-toggle="popover" data-bs-trigger="click" data-content-id="popover" role="button" tabindex="0" style="color: #{{p.author.name_color}}; font-weight: bold"class="user-name">
|
||||||
<div class="profile-pic-30-wrapper">
|
<div class="profile-pic-30-wrapper">
|
||||||
<img loading="lazy" src="{{p.author.profile_url}}" class="profile-pic-30 mr-2">
|
<img loading="lazy" src="{{p.author.profile_url}}" class="profile-pic-30 mr-2">
|
||||||
{% if p.author.hat_active -%}
|
{% if p.author.hat_active -%}
|
||||||
<img class="profile-pic-30-hat" loading="lazy" src="/i/hats/{{p.author.hat_active}}.webp" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{p.author.hat_tooltip}}">
|
<img class="profile-pic-30-hat" loading="lazy" src="/i/hats/{{p.author.hat_active}}.webp" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{p.author.hat_tooltip}}">
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
</div>
|
</div>
|
||||||
<span {% if p.author.patron and not p.distinguish_level %}class="patron" style="background-color:#{{p.author.namecolor}};"{% elif p.distinguish_level %}class="mod"{% endif %}>{{p.author_name}}</span>
|
<span {% if p.author.patron and not p.distinguish_level %}class="patron" style="background-color:#{{p.author.name_color}};"{% elif p.distinguish_level %}class="mod"{% endif %}>{{p.author_name}}</span>
|
||||||
</a>
|
</a>
|
||||||
{% if FEATURES['PRONOUNS'] %}
|
{% if FEATURES['PRONOUNS'] %}
|
||||||
<span class="pronouns" style="color:#{{p.author.titlecolor}};border-color:#{{p.author.titlecolor}}">{{p.author.pronouns}}</span>
|
<span class="pronouns" style="color:#{{p.author.titlecolor}};border-color:#{{p.author.titlecolor}}">{{p.author.pronouns}}</span>
|
||||||
|
@ -808,7 +808,7 @@
|
||||||
<a class="format btn btn-secondary" role="button"><i class="fas fa-italic" aria-hidden="true" onclick="makeItalics('post-edit-box-{{p.id}}')" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Italicize"></i></a>
|
<a class="format btn btn-secondary" role="button"><i class="fas fa-italic" aria-hidden="true" onclick="makeItalics('post-edit-box-{{p.id}}')" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Italicize"></i></a>
|
||||||
<a class="format btn btn-secondary" role="button"><i class="fas fa-quote-right" aria-hidden="true" onclick="makeQuote('post-edit-box-{{p.id}}')" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Quote"></i></a>
|
<a class="format btn btn-secondary" role="button"><i class="fas fa-quote-right" aria-hidden="true" onclick="makeQuote('post-edit-box-{{p.id}}')" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Quote"></i></a>
|
||||||
<a class="format btn btn-secondary" role="button"><span class="font-weight-bolder text-uppercase" onclick="commentForm('post-edit-box-{{p.id}}');getGif()" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add GIF">GIF</span></a>
|
<a class="format btn btn-secondary" role="button"><span class="font-weight-bolder text-uppercase" onclick="commentForm('post-edit-box-{{p.id}}');getGif()" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add GIF">GIF</span></a>
|
||||||
<div onclick="loadEmojis('post-edit-box-{{p.id}}')" class="format btn btn-secondary" role="button" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"><i class="fas fa-smile-beam"></i></div>
|
<div onclick="loadEmojis('post-edit-box-{{p.id}}')" class="format btn btn-secondary" role="button" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"><i class="fas fa-kiss-wink-heart"></i></div>
|
||||||
|
|
||||||
<label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-edit-{{p.id}}">
|
<label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-edit-{{p.id}}">
|
||||||
<div id="filename-show-edit-{{p.id}}"><i class="fas fa-file"></i></div>
|
<div id="filename-show-edit-{{p.id}}"><i class="fas fa-file"></i></div>
|
||||||
|
@ -997,7 +997,7 @@
|
||||||
<span id="gif-reply-btn-{{p.fullname}}" class="font-weight-bolder text-uppercase" onclick="commentForm('reply-form-body-{{p.fullname}}');getGif()" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add GIF">GIF</span>
|
<span id="gif-reply-btn-{{p.fullname}}" class="font-weight-bolder text-uppercase" onclick="commentForm('reply-form-body-{{p.fullname}}');getGif()" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add GIF">GIF</span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<div onclick="loadEmojis('reply-form-body-{{p.fullname}}')" class="btn btn-secondary format d-inline-block m-0" id="emoji-reply-btn-{{p.fullname}}" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"><i class="fas fa-smile-beam"></i></div>
|
<div onclick="loadEmojis('reply-form-body-{{p.fullname}}')" class="btn btn-secondary format d-inline-block m-0" id="emoji-reply-btn-{{p.fullname}}" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"><i class="fas fa-kiss-wink-heart"></i></div>
|
||||||
|
|
||||||
<label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-reply-{{p.fullname}}">
|
<label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-reply-{{p.fullname}}">
|
||||||
<div id="filename-show-reply-{{p.fullname}}"><i class="fas fa-file"></i></div>
|
<div id="filename-show-reply-{{p.fullname}}"><i class="fas fa-file"></i></div>
|
||||||
|
|
|
@ -209,14 +209,14 @@
|
||||||
|
|
||||||
{% if p.author.verified %}<i class="fas fa-badge-check align-middle ml-1 {% if p.author.verified=='Glowiefied' %}glow{% endif %}" style="color:{% if p.author.verifiedcolor %}#{{p.author.verifiedcolor}}{% else %}#1DA1F2{% endif %}" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{p.author.verified}}"></i>
|
{% if p.author.verified %}<i class="fas fa-badge-check align-middle ml-1 {% if p.author.verified=='Glowiefied' %}glow{% endif %}" style="color:{% if p.author.verifiedcolor %}#{{p.author.verifiedcolor}}{% else %}#1DA1F2{% endif %}" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{p.author.verified}}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a class="user-name text-decoration-none" href="{{p.author.url}}" data-pop-info='{{p.author.json_popover(v) | tojson}}' onclick='popclick(event)' data-bs-placement="bottom" data-bs-toggle="popover" data-bs-trigger="click" data-content-id="popover" role="button" tabindex="0" style="color: #{{p.author.namecolor}}; font-weight: bold;">
|
<a class="user-name text-decoration-none" href="{{p.author.url}}" data-pop-info='{{p.author.json_popover(v) | tojson}}' onclick='popclick(event)' data-bs-placement="bottom" data-bs-toggle="popover" data-bs-trigger="click" data-content-id="popover" role="button" tabindex="0" style="color: #{{p.author.name_color}}; font-weight: bold;">
|
||||||
<div class="profile-pic-30-wrapper">
|
<div class="profile-pic-30-wrapper">
|
||||||
<img loading="lazy" src="{{p.author.profile_url}}" class="profile-pic-30 mr-2">
|
<img loading="lazy" src="{{p.author.profile_url}}" class="profile-pic-30 mr-2">
|
||||||
{% if p.author.hat_active -%}
|
{% if p.author.hat_active -%}
|
||||||
<img class="profile-pic-30-hat" loading="lazy" src="/i/hats/{{p.author.hat_active}}.webp" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{p.author.hat_tooltip}}">
|
<img class="profile-pic-30-hat" loading="lazy" src="/i/hats/{{p.author.hat_active}}.webp" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{p.author.hat_tooltip}}">
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
</div>
|
</div>
|
||||||
<span {% if p.author.patron and not p.distinguish_level %}class="patron" style="background-color:#{{p.author.namecolor}};"{% elif p.distinguish_level %}class="mod"{% endif %}>{{p.author_name}}</span>
|
<span {% if p.author.patron and not p.distinguish_level %}class="patron" style="background-color:#{{p.author.name_color}};"{% elif p.distinguish_level %}class="mod"{% endif %}>{{p.author_name}}</span>
|
||||||
</a>
|
</a>
|
||||||
{% if FEATURES['PRONOUNS'] %}
|
{% if FEATURES['PRONOUNS'] %}
|
||||||
<span class="pronouns" style="color:#{{p.author.titlecolor}};border-color:#{{p.author.titlecolor}}">{{p.author.pronouns}}</span>
|
<span class="pronouns" style="color:#{{p.author.titlecolor}};border-color:#{{p.author.titlecolor}}">{{p.author.pronouns}}</span>
|
||||||
|
|
|
@ -57,6 +57,17 @@
|
||||||
<link rel="stylesheet" href="{{asset('css/main.css')}}">
|
<link rel="stylesheet" href="{{asset('css/main.css')}}">
|
||||||
<link rel="stylesheet" href="/assets/css/{{DEFAULT_THEME}}.css?v=49">
|
<link rel="stylesheet" href="/assets/css/{{DEFAULT_THEME}}.css?v=49">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if v.earlylife %}
|
||||||
|
<style>
|
||||||
|
.nav-item .text-small.font-weight-bold::before {
|
||||||
|
content: "((("
|
||||||
|
}
|
||||||
|
.nav-item .text-small.font-weight-bold::after {
|
||||||
|
content: ")))"
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
@ -105,7 +116,7 @@
|
||||||
|
|
||||||
<input autocomplete="off" class="form-control allow-emojis" id="post-title" aria-describedby="titleHelpRegister" type="text" name="title" placeholder="Required" value="{{title}}" minlength="1" maxlength="500" required oninput="checkForRequired();savetext()">
|
<input autocomplete="off" class="form-control allow-emojis" id="post-title" aria-describedby="titleHelpRegister" type="text" name="title" placeholder="Required" value="{{title}}" minlength="1" maxlength="500" required oninput="checkForRequired();savetext()">
|
||||||
|
|
||||||
<div onclick="loadEmojis('post-title')" class="btn btn-secondary format d-inline-block m-0" id="emoji-reply-btn-2" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"><i class="fas fa-smile-beam"></i></div>
|
<div onclick="loadEmojis('post-title')" class="btn btn-secondary format d-inline-block m-0" id="emoji-reply-btn-2" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"><i class="fas fa-kiss-wink-heart"></i></div>
|
||||||
|
|
||||||
<div id="urlblock">
|
<div id="urlblock">
|
||||||
<label for="URL" class="mt-3">URL</label>
|
<label for="URL" class="mt-3">URL</label>
|
||||||
|
@ -152,7 +163,7 @@
|
||||||
|
|
||||||
<small class="btn btn-secondary format d-inline-block m-0"><span class="font-weight-bolder text-uppercase" aria-hidden="true" onclick="getGif();commentForm('post-text')" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add GIF">GIF</span></small>
|
<small class="btn btn-secondary format d-inline-block m-0"><span class="font-weight-bolder text-uppercase" aria-hidden="true" onclick="getGif();commentForm('post-text')" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add GIF">GIF</span></small>
|
||||||
|
|
||||||
<div onclick="loadEmojis('post-text')" class="btn btn-secondary format d-inline-block m-0" id="emoji-reply-btn" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"><i class="fas fa-smile-beam"></i></div>
|
<div onclick="loadEmojis('post-text')" class="btn btn-secondary format d-inline-block m-0" id="emoji-reply-btn" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"><i class="fas fa-kiss-wink-heart"></i></div>
|
||||||
|
|
||||||
<label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-submit">
|
<label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-submit">
|
||||||
<div id="filename-show-submit"><i class="fas fa-file"></i></div>
|
<div id="filename-show-submit"><i class="fas fa-file"></i></div>
|
||||||
|
|
|
@ -58,7 +58,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="d-flex align-items-center mt-1 mb-2">
|
<div class="d-flex align-items-center mt-1 mb-2">
|
||||||
<h1 class="font-weight-bolder h3 my-0 mr-2" id="profile--name" style="color: #{{u.namecolor}}"><span {% if u.patron %}class="patron" style="background-color:#{{u.namecolor}}"{% endif %}>{{u.username}}</span></h1>
|
<h1 class="font-weight-bolder h3 my-0 mr-2" id="profile--name" style="color: #{{u.name_color}}"><span {% if u.patron %}class="patron" style="background-color:#{{u.name_color}}"{% endif %}>{{u.username}}</span></h1>
|
||||||
|
|
||||||
{% if u.username != u.original_username %}
|
{% if u.username != u.original_username %}
|
||||||
<span id="profile--origname">
|
<span id="profile--origname">
|
||||||
|
@ -233,7 +233,7 @@
|
||||||
|
|
||||||
<pre class="btn btn-secondary format d-inline-block m-0 fas fa-quote-right" aria-hidden="true" onclick="makeQuote('input-message')" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Quote"></pre>
|
<pre class="btn btn-secondary format d-inline-block m-0 fas fa-quote-right" aria-hidden="true" onclick="makeQuote('input-message')" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Quote"></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" title="Add Emoji"></pre>
|
<pre class="btn btn-secondary format d-inline-block m-0 fas fa-kiss-wink-heart" onclick="loadEmojis('input-message')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"></pre>
|
||||||
|
|
||||||
<input type="submit" onclick="disable(this);remove_dialog()" value="Submit" class="btn btn-primary">
|
<input type="submit" onclick="disable(this);remove_dialog()" value="Submit" class="btn btn-primary">
|
||||||
</form>
|
</form>
|
||||||
|
@ -272,7 +272,7 @@
|
||||||
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
||||||
<input maxlength=100 autocomplete="off" id="customtitlebody" type="text" name="title" class="form-control" placeholder='Enter a flair here' value="{% if u.customtitleplain %}{{u.customtitleplain}}{% endif %}">
|
<input maxlength=100 autocomplete="off" id="customtitlebody" type="text" name="title" class="form-control" placeholder='Enter a flair here' value="{% if u.customtitleplain %}{{u.customtitleplain}}{% endif %}">
|
||||||
<div class="d-flex mt-2">
|
<div class="d-flex mt-2">
|
||||||
<a class="format" role="button"><i class="btn btn-secondary format d-inline-block m-0 fas fa-smile-beam" onclick="loadEmojis('customtitlebody')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"></i></a>
|
<a class="format" role="button"><i class="btn btn-secondary format d-inline-block m-0 fas fa-kiss-wink-heart" onclick="loadEmojis('customtitlebody')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"></i></a>
|
||||||
|
|
||||||
<div class="custom-control custom-checkbox">
|
<div class="custom-control custom-checkbox">
|
||||||
<input autocomplete="off" type="checkbox" class="custom-control-input" id="locked" name="locked" {% if u.flairchanged %}checked{% endif %}>
|
<input autocomplete="off" type="checkbox" class="custom-control-input" id="locked" name="locked" {% if u.flairchanged %}checked{% endif %}>
|
||||||
|
@ -413,7 +413,7 @@
|
||||||
{% if u.unban_utc %}<h5 class="text-primary" id="profile-mobile--unban">{{u.unban_string}}</h5>{% endif %}
|
{% if u.unban_utc %}<h5 class="text-primary" id="profile-mobile--unban">{{u.unban_string}}</h5>{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<h1 class="h5 d-inline-block" id="profile-mobile--name" style="color: #{{u.namecolor}}"><span {% if u.patron %}class="patron" style="background-color:#{{u.namecolor}}"{% endif %}>{{u.username}}</span></h1>
|
<h1 class="h5 d-inline-block" id="profile-mobile--name" style="color: #{{u.name_color}}"><span {% if u.patron %}class="patron" style="background-color:#{{u.name_color}}"{% endif %}>{{u.username}}</span></h1>
|
||||||
|
|
||||||
{% if u.username != u.original_username %}
|
{% if u.username != u.original_username %}
|
||||||
<span id="profile-mobile--origname">
|
<span id="profile-mobile--origname">
|
||||||
|
@ -579,7 +579,7 @@
|
||||||
|
|
||||||
<pre class="btn btn-secondary format d-inline-block m-0 fas fa-quote-right" aria-hidden="true" onclick="makeQuote('input-message-mobile')" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Quote"></pre>
|
<pre class="btn btn-secondary format d-inline-block m-0 fas fa-quote-right" aria-hidden="true" onclick="makeQuote('input-message-mobile')" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Quote"></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" title="Add Emoji"></pre>
|
<pre class="btn btn-secondary format d-inline-block m-0 fas fa-kiss-wink-heart" onclick="loadEmojis('input-message-mobile')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"></pre>
|
||||||
|
|
||||||
<input type="submit" onclick="disable(this);remove_dialog()" value="Submit" class="btn btn-primary">
|
<input type="submit" onclick="disable(this);remove_dialog()" value="Submit" class="btn btn-primary">
|
||||||
</form>
|
</form>
|
||||||
|
@ -616,7 +616,7 @@
|
||||||
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
||||||
<input maxlength=100 autocomplete="off" id="customtitlebody-mobile" type="text" name="title" class="form-control" placeholder='Enter a flair here' value="{% if u.customtitleplain %}{{u.customtitleplain}}{% endif %}">
|
<input maxlength=100 autocomplete="off" id="customtitlebody-mobile" type="text" name="title" class="form-control" placeholder='Enter a flair here' value="{% if u.customtitleplain %}{{u.customtitleplain}}{% endif %}">
|
||||||
<div class="d-flex mt-2">
|
<div class="d-flex mt-2">
|
||||||
<a class="format" role="button"><i class="btn btn-secondary format d-inline-block m-0 fas fa-smile-beam" onclick="loadEmojis('customtitlebody-mobile')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"></i></a>
|
<a class="format" role="button"><i class="btn btn-secondary format d-inline-block m-0 fas fa-kiss-wink-heart" onclick="loadEmojis('customtitlebody-mobile')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add Emoji"></i></a>
|
||||||
|
|
||||||
<div class="custom-control custom-checkbox">
|
<div class="custom-control custom-checkbox">
|
||||||
<input autocomplete="off" type="checkbox" class="custom-control-input" id="locked-mobile" name="locked" {% if u.flairchanged %}checked{% endif %}>
|
<input autocomplete="off" type="checkbox" class="custom-control-input" id="locked-mobile" name="locked" {% if u.flairchanged %}checked{% endif %}>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{%-
|
{%-
|
||||||
set CACHE_VER = {
|
set CACHE_VER = {
|
||||||
'css/main.css': 494,
|
'css/main.css': 497,
|
||||||
'css/catalog.css': 2,
|
'css/catalog.css': 2,
|
||||||
|
|
||||||
'css/4chan.css': 61,
|
'css/4chan.css': 61,
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
</thead>
|
</thead>
|
||||||
{% for view in viewers %}
|
{% for view in viewers %}
|
||||||
<tr>
|
<tr>
|
||||||
<td><a style="color: #{{view.viewer.namecolor}}" href="/@{{view.viewer.username}}"><img loading="lazy" src="{{view.viewer.profile_url}}" class="pp20"><span {% if view.viewer.patron %}class="patron" style="background-color:#{{view.viewer.namecolor}}"{% endif %}>{{view.viewer.username}}</span></a></td>
|
<td><a style="color: #{{view.viewer.name_color}}" href="/@{{view.viewer.username}}"><img loading="lazy" src="{{view.viewer.profile_url}}" class="pp20"><span {% if view.viewer.patron %}class="patron" style="background-color:#{{view.viewer.name_color}}"{% endif %}>{{view.viewer.username}}</span></a></td>
|
||||||
<td>{{view.last_view_string}}</td>
|
<td>{{view.last_view_string}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -19,14 +19,14 @@
|
||||||
{% for user in users %}
|
{% for user in users %}
|
||||||
<tr {% if v.id == user[0].id %}class="self"{% endif %}>
|
<tr {% if v.id == user[0].id %}class="self"{% endif %}>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td><a style="color:#{{user[0].namecolor}}" href="/@{{user[0].username}}"><img loading="lazy" src="{{user[0].profile_url}}" class="pp20"><span {% if user[0].patron %}class="patron" style="background-color:#{{user[0].namecolor}}"{% endif %}>{{user[0].username}}</span></a></td>
|
<td><a style="color:#{{user[0].name_color}}" href="/@{{user[0].username}}"><img loading="lazy" src="{{user[0].profile_url}}" class="pp20"><span {% if user[0].patron %}class="patron" style="background-color:#{{user[0].name_color}}"{% endif %}>{{user[0].username}}</span></a></td>
|
||||||
<td><a href="{{request.path}}/{{user[0].id}}/posts">{{user[1]}}</a></td>
|
<td><a href="{{request.path}}/{{user[0].id}}/posts">{{user[1]}}</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if pos and (pos[0] > 25 or not pos[1]) %}
|
{% if pos and (pos[0] > 25 or not pos[1]) %}
|
||||||
<tr style="border-top:2px solid var(--primary)">
|
<tr style="border-top:2px solid var(--primary)">
|
||||||
<td>{{pos[0]}}</td>
|
<td>{{pos[0]}}</td>
|
||||||
<td><a style="color:#{{v.namecolor}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.namecolor}}"{% endif %}>{{v.username}}</span></a></td>
|
<td><a style="color:#{{v.name_color}};font-weight:bold" href="/@{{v.username}}"><img loading="lazy" src="{{v.profile_url}}" class="pp20"><span {% if v.patron %}class="patron" style="background-color:#{{v.name_color}}"{% endif %}>{{v.username}}</span></a></td>
|
||||||
<td><a href="{{request.path}}/{{v.id}}/posts">{{pos[1]}}</a></td>
|
<td><a href="{{request.path}}/{{v.id}}/posts">{{pos[1]}}</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -39,9 +39,9 @@
|
||||||
{% for vote in ups %}
|
{% for vote in ups %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<a style="color:#{{vote.user.namecolor}};font-weight:bold" href="/@{{vote.user.username}}">
|
<a style="color:#{{vote.user.name_color}};font-weight:bold" href="/@{{vote.user.username}}">
|
||||||
<img loading="lazy" src="{{vote.user.profile_url}}" class="pp20">
|
<img loading="lazy" src="{{vote.user.profile_url}}" class="pp20">
|
||||||
<span {% if vote.user.patron %}class="patron" style="background-color:#{{vote.user.namecolor}}"{% endif %}>
|
<span {% if vote.user.patron %}class="patron" style="background-color:#{{vote.user.name_color}}"{% endif %}>
|
||||||
{{vote.user.username}}
|
{{vote.user.username}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
@ -67,9 +67,9 @@
|
||||||
{% for vote in downs %}
|
{% for vote in downs %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<a style="color:#{{vote.user.namecolor}};font-weight:bold" href="/@{{vote.user.username}}">
|
<a style="color:#{{vote.user.name_color}};font-weight:bold" href="/@{{vote.user.username}}">
|
||||||
<img loading="lazy" src="{{vote.user.profile_url}}" class="pp20">
|
<img loading="lazy" src="{{vote.user.profile_url}}" class="pp20">
|
||||||
<span {% if vote.user.patron %}class="patron" style="background-color:#{{vote.user.namecolor}}"{% endif %}>
|
<span {% if vote.user.patron %}class="patron" style="background-color:#{{vote.user.name_color}}"{% endif %}>
|
||||||
{{vote.user.username}}
|
{{vote.user.username}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
Loading…
Reference in New Issue