Split SITE_NAME into computer-readable SITE_ID and human-readable SITE_TITLE.

This commit is contained in:
Ben Rog-Wilhelm 2022-07-31 18:53:18 -05:00
parent 850d175563
commit 800ae8d2dc
59 changed files with 202 additions and 180 deletions

3
env
View file

@ -1,6 +1,7 @@
MASTER_KEY=blahblahblah MASTER_KEY=blahblahblah
DOMAIN=localhost DOMAIN=localhost
SITE_NAME=TheMotte SITE_ID=TheMotte
SITE_TITLE=The Motte
GIPHY_KEY=blahblahblah GIPHY_KEY=blahblahblah
DISCORD_SERVER_ID=blahblahblah DISCORD_SERVER_ID=blahblahblah
DISCORD_CLIENT_ID=blahblahblah DISCORD_CLIENT_ID=blahblahblah

View file

@ -25,14 +25,15 @@ app.jinja_env.auto_reload = True
faulthandler.enable() faulthandler.enable()
app.config["SITE_NAME"]=environ.get("SITE_NAME").strip() app.config["SITE_ID"]=environ.get("SITE_ID").strip()
app.config["SITE_TITLE"]=environ.get("SITE_TITLE").strip()
app.config["GUMROAD_LINK"]=environ.get("GUMROAD_LINK", "https://marsey1.gumroad.com/l/tfcvri").strip() app.config["GUMROAD_LINK"]=environ.get("GUMROAD_LINK", "https://marsey1.gumroad.com/l/tfcvri").strip()
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['DATABASE_URL'] = environ.get("DATABASE_URL", "postgresql://postgres@localhost:5432") app.config['DATABASE_URL'] = environ.get("DATABASE_URL", "postgresql://postgres@localhost:5432")
app.config['SECRET_KEY'] = environ.get('MASTER_KEY') app.config['SECRET_KEY'] = environ.get('MASTER_KEY')
app.config["SERVER_NAME"] = environ.get("DOMAIN").strip() app.config["SERVER_NAME"] = environ.get("DOMAIN").strip()
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 3153600 app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 3153600
app.config["SESSION_COOKIE_NAME"] = "session_" + environ.get("SITE_NAME").strip().lower() app.config["SESSION_COOKIE_NAME"] = "session_" + environ.get("SITE_ID").strip().lower()
app.config["VERSION"] = "1.0.0" app.config["VERSION"] = "1.0.0"
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024
app.config["SESSION_COOKIE_SECURE"] = "localhost" not in environ.get("DOMAIN") app.config["SESSION_COOKIE_SECURE"] = "localhost" not in environ.get("DOMAIN")

View file

@ -7,7 +7,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 site_name = document.getElementById('site_name').value const site_id = document.getElementById('site_id').value
const slurreplacer = document.getElementById('slurreplacer').value const slurreplacer = document.getElementById('slurreplacer').value
let notifs = 0; let notifs = 0;
@ -20,17 +20,17 @@ function flash(){
if (notifs >= 1 && !focused){ if (notifs >= 1 && !focused){
title.innerHTML = `[+${notifs}] Chat`; title.innerHTML = `[+${notifs}] Chat`;
if (alert) { if (alert) {
icon.href = escapeHTML(`/assets/images/${site_name}/alert.webp?v=2`) icon.href = escapeHTML(`/assets/images/${site_id}/alert.webp?v=2`)
alert=false; alert=false;
} }
else { else {
icon.href = escapeHTML(`/assets/images/${site_name}/icon.webp?v=1015`) icon.href = escapeHTML(`/assets/images/${site_id}/icon.webp?v=1015`)
alert=true; alert=true;
} }
setTimeout(flash, 500) setTimeout(flash, 500)
} }
else { else {
icon.href = escapeHTML(`/assets/images/${site_name}/icon.webp?v=1015`) icon.href = escapeHTML(`/assets/images/${site_id}/icon.webp?v=1015`)
notifs = 0 notifs = 0
title.innerHTML = 'Chat'; title.innerHTML = 'Chat';
} }

View file

@ -5,7 +5,6 @@ from files.helpers.lazy import lazy
from os import environ from os import environ
from .sub_block import * from .sub_block import *
SITE_NAME = environ.get("SITE_NAME", '').strip()
SITE = environ.get("DOMAIN", '').strip() SITE = environ.get("DOMAIN", '').strip()
if SITE == "localhost": SITE_FULL = 'http://' + SITE if SITE == "localhost": SITE_FULL = 'http://' + SITE
else: SITE_FULL = 'https://' + SITE else: SITE_FULL = 'https://' + SITE

View file

@ -267,7 +267,7 @@ class Submission(Base):
@lazy @lazy
def thumb_url(self): def thumb_url(self):
if self.over_18: return f"{SITE_FULL}/assets/images/nsfw.webp?v=1" if self.over_18: return f"{SITE_FULL}/assets/images/nsfw.webp?v=1"
elif not self.url: return f"{SITE_FULL}/assets/images/{SITE_NAME}/default_text.webp?v=1" elif not self.url: return f"{SITE_FULL}/assets/images/{SITE_ID}/default_text.webp?v=1"
elif self.thumburl: elif self.thumburl:
if self.thumburl.startswith('/'): return SITE_FULL + self.thumburl if self.thumburl.startswith('/'): return SITE_FULL + self.thumburl
return self.thumburl return self.thumburl

View file

@ -529,7 +529,7 @@ class User(Base):
@lazy @lazy
def banner_url(self): def banner_url(self):
if self.bannerurl: return self.bannerurl if self.bannerurl: return self.bannerurl
else: return f"/assets/images/{SITE_NAME}/site_preview.webp?v=1015" else: return f"/assets/images/{SITE_ID}/site_preview.webp?v=1015"
@property @property
@lazy @lazy

View file

@ -8,7 +8,8 @@ from files.classes.marsey import Marsey
from flask import request from flask import request
SITE = environ.get("DOMAIN", '').strip() SITE = environ.get("DOMAIN", '').strip()
SITE_NAME = environ.get("SITE_NAME", '').strip() SITE_ID = environ.get("SITE_ID", '').strip()
SITE_TITLE = environ.get("SITE_TITLE", '').strip()
if "localhost" in SITE: SITE_FULL = 'http://' + SITE if "localhost" in SITE: SITE_FULL = 'http://' + SITE
else: SITE_FULL = 'https://' + SITE else: SITE_FULL = 'https://' + SITE
@ -62,7 +63,7 @@ DAD_ID = 0
MOM_ID = 0 MOM_ID = 0
DONGER_ID = 0 DONGER_ID = 0
BUG_THREAD = 0 BUG_THREAD = 0
WELCOME_MSG = f"Welcome to {SITE_NAME}!" WELCOME_MSG = f"Welcome to {SITE_TITLE}!"
ROLES={} ROLES={}
IMGUR_KEY = environ.get("IMGUR_KEY").strip() IMGUR_KEY = environ.get("IMGUR_KEY").strip()

View file

@ -49,4 +49,23 @@ def timestamp(timestamp):
@app.context_processor @app.context_processor
def inject_constants(): def inject_constants():
return {"environ":environ, "SITE":SITE, "SITE_NAME":SITE_NAME, "SITE_FULL":SITE_FULL, "AUTOJANNY_ID":AUTOJANNY_ID, "NOTIFICATIONS_ID":NOTIFICATIONS_ID, "PUSHER_ID":PUSHER_ID, "CC":CC, "CC_TITLE":CC_TITLE, "listdir":listdir, "MOOSE_ID":MOOSE_ID, "AEVANN_ID":AEVANN_ID, "PIZZASHILL_ID":PIZZASHILL_ID, "config":app.config.get, "DEFAULT_COLOR":DEFAULT_COLOR, "COLORS":COLORS, "ADMIGGERS":ADMINISTRATORS} return {
"environ":environ,
"SITE":SITE,
"SITE_ID":SITE_ID,
"SITE_TITLE":SITE_TITLE,
"SITE_FULL":SITE_FULL,
"AUTOJANNY_ID":AUTOJANNY_ID,
"NOTIFICATIONS_ID":NOTIFICATIONS_ID,
"PUSHER_ID":PUSHER_ID,
"CC":CC,
"CC_TITLE":CC_TITLE,
"listdir":listdir,
"MOOSE_ID":MOOSE_ID,
"AEVANN_ID":AEVANN_ID,
"PIZZASHILL_ID":PIZZASHILL_ID,
"config":app.config.get,
"DEFAULT_COLOR":DEFAULT_COLOR,
"COLORS":COLORS,
"ADMIGGERS":ADMINISTRATORS
}

View file

@ -10,11 +10,12 @@ from files.classes import *
from files.__main__ import app, mail, limiter from files.__main__ import app, mail, limiter
from flask_mail import Message from flask_mail import Message
name = environ.get("SITE_NAME").strip() SITE_ID = environ.get("SITE_ID").strip()
SITE_TITLE = environ.get("SITE_TITLE").strip()
def send_mail(to_address, subject, html): def send_mail(to_address, subject, html):
msg = Message(html=html, subject=subject, sender=f"{name}@{SITE}", recipients=[to_address]) msg = Message(html=html, subject=subject, sender=f"{SITE_ID}@{SITE}", recipients=[to_address])
mail.send(msg) mail.send(msg)
@ -35,7 +36,7 @@ def send_verification_email(user, email=None):
html=render_template("email/email_verify.html", html=render_template("email/email_verify.html",
action_url=link, action_url=link,
v=user), v=user),
subject=f"Validate your {name} account email." subject=f"Validate your {SITE_TITLE} account email."
) )

View file

@ -38,7 +38,7 @@ def pusher_thread(interests, c, username):
'title': f'New reply by @{username}', 'title': f'New reply by @{username}',
'body': notifbody, 'body': notifbody,
'deep_link': f'{SITE_FULL}/comment/{c.id}?context=8&read=true#context', 'deep_link': f'{SITE_FULL}/comment/{c.id}?context=8&read=true#context',
'icon': f'{SITE_FULL}/assets/images/{SITE_NAME}/icon.webp?v=1015', 'icon': f'{SITE_FULL}/assets/images/{SITE_ID}/icon.webp?v=1015',
} }
}, },
'fcm': { 'fcm': {
@ -185,7 +185,7 @@ def api_comment(v):
body = request.values.get("body", "").strip()[:10000] body = request.values.get("body", "").strip()[:10000]
if v.admin_level > 2 and parent_post.id == 37749 and level == 1: if v.admin_level > 2 and parent_post.id == 37749 and level == 1:
with open(f"snappy_{SITE_NAME}.txt", "a", encoding="utf-8") as f: with open(f"snappy_{SITE_ID}.txt", "a", encoding="utf-8") as f:
f.write('\n{[para]}\n' + body) f.write('\n{[para]}\n' + body)
if parent_post.id not in ADMINISTRATORS: if parent_post.id not in ADMINISTRATORS:

View file

@ -22,8 +22,8 @@ from sys import stdout
snappyquotes = [f':#{x}:' for x in marseys_const2] snappyquotes = [f':#{x}:' for x in marseys_const2]
if path.exists(f'snappy_{SITE_NAME}.txt'): if path.exists(f'snappy_{SITE_ID}.txt'):
with open(f'snappy_{SITE_NAME}.txt', "r", encoding="utf-8") as f: with open(f'snappy_{SITE_ID}.txt', "r", encoding="utf-8") as f:
snappyquotes += f.read().split("\n{[para]}\n") snappyquotes += f.read().split("\n{[para]}\n")
discounts = { discounts = {

View file

@ -26,7 +26,7 @@ def pusher_thread2(interests, notifbody, username):
'title': f'New message from @{username}', 'title': f'New message from @{username}',
'body': notifbody, 'body': notifbody,
'deep_link': f'{SITE_FULL}/notifications?messages=true', 'deep_link': f'{SITE_FULL}/notifications?messages=true',
'icon': f'{SITE_FULL}/assets/images/{SITE_NAME}/icon.webp?v=1015', 'icon': f'{SITE_FULL}/assets/images/{SITE_ID}/icon.webp?v=1015',
} }
}, },
'fcm': { 'fcm': {
@ -704,7 +704,7 @@ def messagereply(v):
'title': f'New message from @{v.username}', 'title': f'New message from @{v.username}',
'body': notifbody, 'body': notifbody,
'deep_link': f'{SITE_FULL}/notifications?messages=true', 'deep_link': f'{SITE_FULL}/notifications?messages=true',
'icon': f'{SITE_FULL}/assets/images/{SITE_NAME}/icon.webp"a=1010', 'icon': f'{SITE_FULL}/assets/images/{SITE_ID}/icon.webp"a=1010',
} }
}, },
'fcm': { 'fcm': {
@ -742,7 +742,7 @@ def mfa_qr(secret, v):
qr = qrcode.QRCode( qr = qrcode.QRCode(
error_correction=qrcode.constants.ERROR_CORRECT_L error_correction=qrcode.constants.ERROR_CORRECT_L
) )
qr.add_data(x.provisioning_uri(v.username, issuer_name=app.config["SITE_NAME"])) qr.add_data(x.provisioning_uri(v.username, issuer_name=app.config["SITE_TITLE"]))
img = qr.make_image(fill_color="#000000", back_color="white") img = qr.make_image(fill_color="#000000", back_color="white")
mem = io.BytesIO() mem = io.BytesIO()

View file

@ -1,7 +1,7 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block title %} {% block title %}
<title>{{SITE_NAME}}</title> <title>{{SITE_TITLE}}</title>
{% endblock %} {% endblock %}

View file

@ -1,7 +1,7 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block title %} {% block title %}
<title>{{SITE_NAME}}</title> <title>{{SITE_TITLE}}</title>
{% endblock %} {% endblock %}

View file

@ -1,7 +1,7 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block title %} {% block title %}
<title>{{SITE_NAME}}</title> <title>{{SITE_TITLE}}</title>
{% endblock %} {% endblock %}

View file

@ -1,6 +1,6 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}Edit {{SITE_NAME}} sidebar{% endblock %} {% block pagetitle %}Edit {{SITE_TITLE}} sidebar{% endblock %}
{% block content %} {% block content %}

View file

@ -1,7 +1,7 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block title %} {% block title %}
<title>{{SITE_NAME}} - API</title> <title>{{SITE_TITLE}} - API</title>
{% endblock %} {% endblock %}
@ -14,17 +14,17 @@
<pre></pre> <pre></pre>
<p>This page explains how to obtain and use an access token. </p> <p>This page explains how to obtain and use an access token. </p>
<h2>Step 1: Create your Application</h2> <h2>Step 1: Create your Application</h2>
<p>In the <a href="/settings/apps">apps tab of {{SITE_NAME}} settings</a>, fill in and submit the form to request an access token. You will need:</p> <p>In the <a href="/settings/apps">apps tab of {{SITE_TITLE}} settings</a>, fill in and submit the form to request an access token. You will need:</p>
<ul> <ul>
<li>an application name</li> <li>an application name</li>
<li>a Redirect URI. May not use HTTP unless using localhost (use HTTPS instead).</li> <li>a Redirect URI. May not use HTTP unless using localhost (use HTTPS instead).</li>
<li>a brief description of what your bot is intended to do</li> <li>a brief description of what your bot is intended to do</li>
</ul> </ul>
<p>Don't worry too much about accuracy; you will be able to change all of these later.</p> <p>Don't worry too much about accuracy; you will be able to change all of these later.</p>
<p>{{SITE_NAME}} administrators will review and approve or deny your request for an access token. You'll know when your request has been approved when you get a private message with an access token tied to your account.</p> <p>{{SITE_TITLE}} administrators will review and approve or deny your request for an access token. You'll know when your request has been approved when you get a private message with an access token tied to your account.</p>
<p>DO NOT reveal your Client ID or Access Token. Anyone with these information will be able to pretend to be you. You are responsible for keeping them a secret!</p> <p>DO NOT reveal your Client ID or Access Token. Anyone with these information will be able to pretend to be you. You are responsible for keeping them a secret!</p>
<h2>Step 2: Using the Access Token</h2> <h2>Step 2: Using the Access Token</h2>
<p>To use the access token, include the following header in subsequent API requests to {{SITE_NAME}}: <code>Authorization: access_token_goes_here</code></p> <p>To use the access token, include the following header in subsequent API requests to {{SITE_TITLE}}: <code>Authorization: access_token_goes_here</code></p>
<p>Python example:</p> <p>Python example:</p>
<pre> import requests <pre> import requests
@ -63,25 +63,25 @@
</pre> </pre>
<h1>API Guide for Applications</h1> <h1>API Guide for Applications</h1>
<pre></pre> <pre></pre>
<p>The OAuth2 authorization flow is used to enable users to authorize third-party applications to access their {{SITE_NAME}} account without having to provide their login information to the application.</p> <p>The OAuth2 authorization flow is used to enable users to authorize third-party applications to access their {{SITE_TITLE}} account without having to provide their login information to the application.</p>
<p>This page explains how to obtain API application keys, how to prompt a user for authorization, and how to obtain and use access tokens. </p> <p>This page explains how to obtain API application keys, how to prompt a user for authorization, and how to obtain and use access tokens. </p>
<h2>Step 1: Create your Application</h2> <h2>Step 1: Create your Application</h2>
<p>In the <a href="/settings/apps">apps tab of {{SITE_NAME}} settings</a>, fill in and submit the form to request new API keys. You will need:</p> <p>In the <a href="/settings/apps">apps tab of {{SITE_TITLE}} settings</a>, fill in and submit the form to request new API keys. You will need:</p>
<ul> <ul>
<li>an application name</li> <li>an application name</li>
<li>a Redirect URI. May not use HTTP unless using localhost (use HTTPS instead).</li> <li>a Redirect URI. May not use HTTP unless using localhost (use HTTPS instead).</li>
<li>a brief description of what your application is intended to do</li> <li>a brief description of what your application is intended to do</li>
</ul> </ul>
<p>Don't worry too much about accuracy; you will be able to change all of these later.</p> <p>Don't worry too much about accuracy; you will be able to change all of these later.</p>
<p>{{SITE_NAME}} administrators will review and approve or deny your request for API keys. You'll know when your request has been approved when you get a private message with an access token tied to your account.</p> <p>{{SITE_TITLE}} administrators will review and approve or deny your request for API keys. You'll know when your request has been approved when you get a private message with an access token tied to your account.</p>
<p>DO NOT reveal your Client ID or Access Token. Anyone with these information will be able to pretend to be you. You are responsible for keeping them a secret!</p> <p>DO NOT reveal your Client ID or Access Token. Anyone with these information will be able to pretend to be you. You are responsible for keeping them a secret!</p>
<h2>Step 2: Prompt Your User for Authorization</h2> <h2>Step 2: Prompt Your User for Authorization</h2>
<p>Send your user to <code>{{SITE_FULL}}/authorize/?client_id=YOUR_CLIENT_ID</code></p> <p>Send your user to <code>{{SITE_FULL}}/authorize/?client_id=YOUR_CLIENT_ID</code></p>
<p>If done correctly, the user will see that your application wants to access their {{SITE_NAME}} account, and be prompted to approve or deny the request.</p> <p>If done correctly, the user will see that your application wants to access their {{SITE_TITLE}} account, and be prompted to approve or deny the request.</p>
<h2>Step 3: Catch the redirect</h2> <h2>Step 3: Catch the redirect</h2>
<p>The user clicks "Authorize". {{SITE_NAME}} will redirect the user's browser to GET the designated redirect URI. The access token URL parameter will be included in the redirect, which your server should process.</p> <p>The user clicks "Authorize". {{SITE_TITLE}} will redirect the user's browser to GET the designated redirect URI. The access token URL parameter will be included in the redirect, which your server should process.</p>
<h2>Step 4: Using the Access Token</h2> <h2>Step 4: Using the Access Token</h2>
<p>To use the access token, include the following header in subsequent API requests to {{SITE_NAME}}: <code>Authorization: access_token_goes_here</code></p> <p>To use the access token, include the following header in subsequent API requests to {{SITE_TITLE}}: <code>Authorization: access_token_goes_here</code></p>
<p>Python example:</p> <p>Python example:</p>
<pre> import requests <pre> import requests

View file

@ -10,7 +10,7 @@
<meta name="author" content=""> <meta name="author" content="">
<title>{% block pagetitle %}{{SITE_NAME}}{% endblock %}</title> <title>{% block pagetitle %}{{SITE_TITLE}}{% endblock %}</title>
{% if v %} {% if v %}
@ -94,7 +94,7 @@
<div class="splash-overlay"></div> <div class="splash-overlay"></div>
<img alt="cover" loading="lazy" class="splash-img" src="/assets/images/{{SITE_NAME}}/cover.webp?v=1014"></img> <img alt="cover" loading="lazy" class="splash-img" src="/assets/images/{{SITE_ID}}/cover.webp?v=1014"></img>
</div> </div>
</div> </div>

View file

@ -9,7 +9,7 @@
<meta name="author" content=""> <meta name="author" content="">
<link id="favicon" rel="icon" type="image/png" href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015"> <link id="favicon" rel="icon" type="image/png" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015">
<title>Chat</title> <title>Chat</title>
@ -184,7 +184,7 @@
</div> </div>
<input id="vid" type="hidden" value="{{v.id}}"> <input id="vid" type="hidden" value="{{v.id}}">
<input id="site_name" type="hidden" value="{{SITE_NAME}}"> <input id="site_id" type="hidden" value="{{SITE_ID}}">
<input id="slurreplacer" type="hidden" value="{{v.slurreplacer}}"> <input id="slurreplacer" type="hidden" value="{{v.slurreplacer}}">
<script src="/chat.js?v=16"></script> <script src="/chat.js?v=16"></script>

View file

@ -187,7 +187,7 @@
{% if c.is_pinned %} {% if c.is_pinned %}
<i id='pinned-{{c.id}}'class="fas fa-thumbtack fa-rotate--45 text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Pinned by @{{c.is_pinned}}" {% if c.is_pinned_utc %}onmouseover="pinned_timestamp('pinned-{{c.id}}')" data-timestamp={{c.is_pinned_utc}} {% endif %}></i> <i id='pinned-{{c.id}}'class="fas fa-thumbtack fa-rotate--45 text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Pinned by @{{c.is_pinned}}" {% if c.is_pinned_utc %}onmouseover="pinned_timestamp('pinned-{{c.id}}')" data-timestamp={{c.is_pinned_utc}} {% endif %}></i>
{% endif %} {% endif %}
{% if c.distinguish_level and not c.ghost %}<i class="fas fa-broom text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{SITE_NAME}} Admin, speaking officially"></i>{% endif %} {% if c.distinguish_level and not c.ghost %}<i class="fas fa-broom text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{SITE_TITLE}} Admin, speaking officially"></i>{% endif %}
{% if c.is_op %}<i class="fas fa-microphone-stand text-info" data-bs-toggle="tooltip" data-bs-placement="bottom" title="OP"></i>{% endif %} {% if c.is_op %}<i class="fas fa-microphone-stand text-info" data-bs-toggle="tooltip" data-bs-placement="bottom" title="OP"></i>{% endif %}
{% if c.is_bot %}<i class="fas fa-robot text-info" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Bot"></i>{% endif %} {% if c.is_bot %}<i class="fas fa-robot text-info" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Bot"></i>{% endif %}
{% if c.is_blocking %}<i class="fas fa-user-minus text-warning" data-bs-toggle="tooltip" data-bs-placement="bottom" title="You're blocking this user, but you can see this comment because you're an admin"></i>{% endif %} {% if c.is_blocking %}<i class="fas fa-user-minus text-warning" data-bs-toggle="tooltip" data-bs-placement="bottom" title="You're blocking this user, but you can see this comment because you're an admin"></i>{% endif %}
@ -790,9 +790,9 @@
<div class="h4 d-md-none">Delete comment?</div> <div class="h4 d-md-none">Delete comment?</div>
<p class="d-none d-md-block">Your comment will be deleted everywhere on {{SITE_NAME}}.</p> <p class="d-none d-md-block">Your comment will be deleted everywhere on {{SITE_TITLE}}.</p>
<p class="text-muted d-md-none">Your comment will be deleted everywhere on {{SITE_NAME}}.</p> <p class="text-muted d-md-none">Your comment will be deleted everywhere on {{SITE_TITLE}}.</p>
<button id="deleteCommentButton" class="btn btn-danger btn-block mt-5" data-bs-dismiss="modal">Delete comment</button> <button id="deleteCommentButton" class="btn btn-danger btn-block mt-5" data-bs-dismiss="modal">Delete comment</button>

View file

@ -1,7 +1,7 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block title %} {% block title %}
<title>{{SITE_NAME}} - Contact</title> <title>{{SITE_TITLE}} - Contact</title>
{% endblock %} {% endblock %}
@ -19,9 +19,9 @@
</div> </div>
{% endif %} {% endif %}
<h1 class="article-title">Contact {{SITE_NAME}} Admins</h1> <h1 class="article-title">Contact {{SITE_TITLE}} Admins</h1>
<p>Use this form to contact {{SITE_NAME}} Admins.</p> <p>Use this form to contact {{SITE_TITLE}} Admins.</p>
<form id="contactform" action="/send_admin" method="post" enctype="multipart/form-data"> <form id="contactform" action="/send_admin" method="post" enctype="multipart/form-data">
<label class="mt-3">Your Email</label> <label class="mt-3">Your Email</label>
{% if v and v.email %} {% if v and v.email %}

View file

@ -38,16 +38,16 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="thumbnail" content="/assets/images/{{SITE_NAME}}/site_preview.webp?v=1015"> <meta name="thumbnail" content="/assets/images/{{SITE_ID}}/site_preview.webp?v=1015">
<link rel="icon" type="image/png" href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015"> <link rel="icon" type="image/png" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015">
{% block title %} {% block title %}
<title>{{SITE_NAME}}</title> <title>{{SITE_TITLE}}</title>
<meta property="og:type" content="article"> <meta property="og:type" content="article">
<meta property="og:title" content="{{SITE_NAME}}"> <meta property="og:title" content="{{SITE_TITLE}}">
<meta property="og:site_name" content="{{request.host}}"> <meta property="og:site_name" content="{{request.host}}">
<meta property="og:image" content="/assets/images/{{SITE_NAME}}/site_preview.webp?v=1015"> <meta property="og:image" content="/assets/images/{{SITE_ID}}/site_preview.webp?v=1015">
<meta property="og:url" content="{{SITE_FULL}}{{request.full_path}}"> <meta property="og:url" content="{{SITE_FULL}}{{request.full_path}}">
<meta property="og:description" name="description" content="{{config('DESCRIPTION')}}"> <meta property="og:description" name="description" content="{{config('DESCRIPTION')}}">
<meta property="og:author" name="author" content="{{SITE_FULL}}"> <meta property="og:author" name="author" content="{{SITE_FULL}}">
@ -55,10 +55,10 @@
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="{{SITE_FULL}}"> <meta name="twitter:site" content="{{SITE_FULL}}">
<meta name="twitter:title" content="{{SITE_NAME}}"> <meta name="twitter:title" content="{{SITE_TITLE}}">
<meta name="twitter:creator" content="{{SITE_FULL}}"> <meta name="twitter:creator" content="{{SITE_FULL}}">
<meta name="twitter:description" content="{{config('DESCRIPTION')}}"> <meta name="twitter:description" content="{{config('DESCRIPTION')}}">
<meta name="twitter:image" content="/assets/images/{{SITE_NAME}}/site_preview.webp?v=1015"> <meta name="twitter:image" content="/assets/images/{{SITE_ID}}/site_preview.webp?v=1015">
<meta name="twitter:url" content="{{SITE_FULL}}{{request.full_path}}"> <meta name="twitter:url" content="{{SITE_FULL}}{{request.full_path}}">
{% endblock %} {% endblock %}
@ -67,12 +67,12 @@
<meta name="format-detection" content="telephone=no"> <meta name="format-detection" content="telephone=no">
<meta name="viewport" content="width=device-width,initial-scale=1"> <meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015"> <link rel="apple-touch-icon" sizes="180x180" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015">
<link rel="manifest" href="/assets/manifest_{{SITE_NAME}}.json?v=1"> <link rel="manifest" href="/assets/manifest_{{SITE_ID}}.json?v=1">
<link rel="mask-icon" href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015"> <link rel="mask-icon" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015">
<link rel="shortcut icon" href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015"> <link rel="shortcut icon" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015">
<meta name="apple-mobile-web-app-title" content="{{SITE_NAME}}"> <meta name="apple-mobile-web-app-title" content="{{SITE_TITLE}}">
<meta name="application-name" content="{{SITE_NAME}}"> <meta name="application-name" content="{{SITE_TITLE}}">
<meta name="msapplication-TileColor" content="#{{config('DEFAULT_COLOR')}}"> <meta name="msapplication-TileColor" content="#{{config('DEFAULT_COLOR')}}">
<meta name="msapplication-config" content="/assets/browserconfig.xml?v=2"> <meta name="msapplication-config" content="/assets/browserconfig.xml?v=2">
<meta name="theme-color" content="#{{config('DEFAULT_COLOR')}}"> <meta name="theme-color" content="#{{config('DEFAULT_COLOR')}}">
@ -82,127 +82,127 @@
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="320x480" sizes="320x480"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="640x960" sizes="640x960"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-icon" rel="apple-touch-icon"
sizes="640x1136" sizes="640x1136"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-icon" rel="apple-touch-icon"
sizes="750x1334" sizes="750x1334"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="768x1004" sizes="768x1004"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="768x1024" sizes="768x1024"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="828x1792" sizes="828x1792"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1024x748" sizes="1024x748"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1024x768" sizes="1024x768"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1125x2436" sizes="1125x2436"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1242x2208" sizes="1242x2208"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1242x2688" sizes="1242x2688"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1334x750" sizes="1334x750"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1536x2008" sizes="1536x2008"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1536x2048" sizes="1536x2048"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1668x2224" sizes="1668x2224"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1792x828" sizes="1792x828"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2048x1496" sizes="2048x1496"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2048x1536" sizes="2048x1536"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2048x2732" sizes="2048x2732"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2208x1242" sizes="2208x1242"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2224x1668" sizes="2224x1668"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2436x1125" sizes="2436x1125"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2668x1242" sizes="2668x1242"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2737x2048" sizes="2737x2048"
href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
> >
{% block fixedMobileBarJS %} {% block fixedMobileBarJS %}
@ -218,7 +218,7 @@
<img alt="/h/{{sub.name}} banner" class="primary_banner" role="button" data-bs-toggle="modal" data-bs-target="#expandImageModal" onclick="expandDesktopImage('{{sub.banner_url}}')" loading="lazy" src="{{sub.banner_url}}" width=100% style="object-fit:cover;max-height:25vw"> <img alt="/h/{{sub.name}} banner" class="primary_banner" role="button" data-bs-toggle="modal" data-bs-target="#expandImageModal" onclick="expandDesktopImage('{{sub.banner_url}}')" loading="lazy" src="{{sub.banner_url}}" width=100% style="object-fit:cover;max-height:25vw">
{% else %} {% else %}
<a href="/"> <a href="/">
<img alt="site banner" class="primary_banner" src="/assets/images/{{SITE_NAME}}/banner.webp?v=1046" width="100%"> <img alt="site banner" class="primary_banner" src="/assets/images/{{SITE_ID}}/banner.webp?v=1046" width="100%">
</a> </a>
{% endif %} {% endif %}
{% endif %} {% endif %}
@ -258,7 +258,7 @@
</div> </div>
{% block sidebar %} {% block sidebar %}
{% if home or sub and p %} {% if home or sub and p %}
{% include "sidebar_" + SITE_NAME + ".html" %} {% include "sidebar_" + SITE_ID + ".html" %}
{% endif %} {% endif %}
{% endblock %} {% endblock %}
</div> </div>

View file

@ -17,9 +17,9 @@
<div class="h4 d-md-none">Delete post?</div> <div class="h4 d-md-none">Delete post?</div>
<p class="d-none d-md-block">Your post will be deleted everywhere on {{SITE_NAME}}.</p> <p class="d-none d-md-block">Your post will be deleted everywhere on {{SITE_TITLE}}.</p>
<p class="text-muted d-md-none">Your post will be deleted everywhere on {{SITE_NAME}}.</p> <p class="text-muted d-md-none">Your post will be deleted everywhere on {{SITE_TITLE}}.</p>
<button id="deletePostButton" class="btn btn-danger btn-block mt-5" data-bs-dismiss="modal">Delete post</button> <button id="deletePostButton" class="btn btn-danger btn-block mt-5" data-bs-dismiss="modal">Delete post</button>

View file

@ -20,7 +20,7 @@
</td> </td>
</tr> </tr>
</table> </table>
<p>Please note that {{SITE_NAME}} will never ask you for your email, password, or two-factor token via email, text, or phone.</p> <p>Please note that {{SITE_TITLE}} will never ask you for your email, password, or two-factor token via email, text, or phone.</p>
<div class="overflow-x-auto"><table class="body-sub" role="presentation"> <div class="overflow-x-auto"><table class="body-sub" role="presentation">
<tr> <tr>
<td> <td>

View file

@ -369,7 +369,7 @@
</style> </style>
</head> </head>
<body> <body>
<span class="preheader">{% block preheader %}Thanks for joining {{SITE_NAME}}! Please take a sec to verify the email you used to sign up.{% endblock %}</span> <span class="preheader">{% block preheader %}Thanks for joining {{SITE_TITLE}}! Please take a sec to verify the email you used to sign up.{% endblock %}</span>
<div class="overflow-x-auto"><table class="email-wrapper" width="100%" cellpadding="0" cellspacing="0" role="presentation"> <div class="overflow-x-auto"><table class="email-wrapper" width="100%" cellpadding="0" cellspacing="0" role="presentation">
<tr> <tr>
<td align="center"> <td align="center">
@ -377,7 +377,7 @@
<tr> <tr>
<td class="email-masthead"> <td class="email-masthead">
<a href="/" class="f-fallback email-masthead_name"> <a href="/" class="f-fallback email-masthead_name">
{{SITE_NAME}} {{SITE_TITLE}}
</a> </a>
</td> </td>
</tr> </tr>

View file

@ -2,10 +2,10 @@
{% block title %}Verify Your Email{% endblock %}</h1> {% block title %}Verify Your Email{% endblock %}</h1>
{% block preheader %}Verify your new {{SITE_NAME}} email.{% endblock %} {% block preheader %}Verify your new {{SITE_TITLE}} email.{% endblock %}
{% block content %} {% block content %}
<p>You told us you wanted to change your {{SITE_NAME}} account email. To finish this process, please verify your new email address:</p> <p>You told us you wanted to change your {{SITE_TITLE}} account email. To finish this process, please verify your new email address:</p>
<div class="overflow-x-auto"><table class="body-action" align="center" width="100%" cellpadding="0" cellspacing="0" role="presentation"> <div class="overflow-x-auto"><table class="body-action" align="center" width="100%" cellpadding="0" cellspacing="0" role="presentation">
<tr> <tr>
<td align="center"> <td align="center">
@ -42,7 +42,7 @@
</td> </td>
</tr> </tr>
</table> </table>
<p>Please note that {{SITE_NAME}} will never ask you for your email, password, or two-factor token via email, text, or phone.</p> <p>Please note that {{SITE_TITLE}} will never ask you for your email, password, or two-factor token via email, text, or phone.</p>
<div class="overflow-x-auto"><table class="body-sub" role="presentation"> <div class="overflow-x-auto"><table class="body-sub" role="presentation">
<tr> <tr>
<td> <td>

View file

@ -1,9 +1,9 @@
{% extends "email/default.html" %} {% extends "email/default.html" %}
{% block title %}Welcome to {{SITE_NAME}}!{% endblock %}</h1> {% block title %}Welcome to {{SITE_TITLE}}!{% endblock %}</h1>
{% block content %} {% block content %}
<p>Thanks for joining {{SITE_NAME}}. Were happy to have you on board. To get the most out of {{SITE_NAME}}, please verify your account email:</p> <p>Thanks for joining {{SITE_TITLE}}. Were happy to have you on board. To get the most out of {{SITE_TITLE}}, please verify your account email:</p>
<div class="overflow-x-auto"><table class="body-action" align="center" width="100%" cellpadding="0" cellspacing="0" role="presentation"> <div class="overflow-x-auto"><table class="body-action" align="center" width="100%" cellpadding="0" cellspacing="0" role="presentation">
<tr> <tr>
<td align="center"> <td align="center">
@ -40,7 +40,7 @@
</td> </td>
</tr> </tr>
</table> </table>
<p>Please note that {{SITE_NAME}} will never ask you for your email, password, or two-factor token via email, text, or phone.</p> <p>Please note that {{SITE_TITLE}} will never ask you for your email, password, or two-factor token via email, text, or phone.</p>
<div class="overflow-x-auto"><table class="body-sub" role="presentation"> <div class="overflow-x-auto"><table class="body-sub" role="presentation">
<tr> <tr>
<td> <td>

View file

@ -1,7 +1,7 @@
{% extends "email/default.html" %} {% extends "email/default.html" %}
{% block title %}Reset Your Password{% endblock %} {% block title %}Reset Your Password{% endblock %}
{% block preheader %}Reset your {{SITE_NAME}} password.{% endblock %} {% block preheader %}Reset your {{SITE_TITLE}} password.{% endblock %}
{% block content %} {% block content %}
<p>To reset your password, click the button below:</p> <p>To reset your password, click the button below:</p>

View file

@ -1,10 +1,10 @@
{% extends "authforms.html" %} {% extends "authforms.html" %}
{% block pagetitle %}{{SITE_NAME}} Password Reset{% endblock %} {% block pagetitle %}{{SITE_TITLE}} Password Reset{% endblock %}
{% block authtitle %}Reset your password.{% endblock %} {% block authtitle %}Reset your password.{% endblock %}
{% block authtext %}If there's an email address associated with your account, you can use it to recover your {{SITE_NAME}} account and change your password.{% endblock %} {% block authtext %}If there's an email address associated with your account, you can use it to recover your {{SITE_TITLE}} account and change your password.{% endblock %}
{% block content %} {% block content %}

View file

@ -1,6 +1,6 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block title %} {% block title %}
<title>{{SITE_NAME}} - Formatting</title> <title>{{SITE_TITLE}} - Formatting</title>
{% endblock %} {% endblock %}
@ -63,8 +63,8 @@ Text 2
</tr> </tr>
<tr> <tr>
<td>Links</td> <td>Links</td>
<td>[{{SITE_NAME}}]({{SITE_FULL}}/)</td> <td>[{{SITE_TITLE}}]({{SITE_FULL}}/)</td>
<td><a href="/">{{SITE_NAME}}</a></td> <td><a href="/">{{SITE_TITLE}}</a></td>
</tr> </tr>
<tr> <tr>
<td>Images</td> <td>Images</td>

View file

@ -12,7 +12,7 @@
<div class="navbar navbar-expand-md navbar-light" id="navbar"> <div class="navbar navbar-expand-md navbar-light" id="navbar">
<div class="container-fluid" style="padding:0;"> <div class="container-fluid" style="padding:0;">
<a href="/" class="navbar-brand mr-auto"> <a href="/" class="navbar-brand mr-auto">
<img alt="header icon" height=33 src="/assets/images/{{SITE_NAME}}/headericon.webp?v=1019"> <img alt="header icon" height=33 src="/assets/images/{{SITE_ID}}/headericon.webp?v=1019">
</a> </a>
{% if sub %} {% if sub %}
@ -31,7 +31,7 @@
{% endif %} {% endif %}
</style> </style>
<a href="/" class="flex-grow-1"> <a href="/" class="flex-grow-1">
<img class="ml-1" id="logo" alt="logo" src="/assets/images/{{SITE_NAME}}/logo.webp?v=1013" width=70> <img class="ml-1" id="logo" alt="logo" src="/assets/images/{{SITE_ID}}/logo.webp?v=1013" width=70>
</a> </a>
{% endif %} {% endif %}
@ -213,7 +213,7 @@
</li> </li>
{% endif %} {% endif %}
<li class="mt-3"> <li class="mt-3">
{% include "sidebar_" + SITE_NAME + ".html" %} {% include "sidebar_" + SITE_ID + ".html" %}
</li> </li>
</ul> </ul>
</div> </div>

View file

@ -164,7 +164,7 @@
{% if request.path == '/' and g.timestamp > session.get('tooltip_last_dismissed',0)+60*60*24*30 and not g.webview %} {% if request.path == '/' and g.timestamp > session.get('tooltip_last_dismissed',0)+60*60*24*30 and not g.webview %}
<div id="mobile-prompt-container" class="fixed-top"> <div id="mobile-prompt-container" class="fixed-top">
<div id="mobile-prompt" href="javascript:void(0)" data-bs-toggle="tooltip" data-bs-container="#mobile-prompt-container" data-bs-placement="top" data-bs-trigger="click" data-bs-original-title="Install the {{SITE_NAME}} webapp by saving this page to your home screen!"></div> <div id="mobile-prompt" href="javascript:void(0)" data-bs-toggle="tooltip" data-bs-container="#mobile-prompt-container" data-bs-placement="top" data-bs-trigger="click" data-bs-original-title="Install the {{SITE_TITLE}} webapp by saving this page to your home screen!"></div>
</div> </div>
<script> <script>

View file

@ -14,7 +14,7 @@
<meta name="author" content=""> <meta name="author" content="">
{% block title %} {% block title %}
<title>Login - {{SITE_NAME}}</title> <title>Login - {{SITE_TITLE}}</title>
{% endblock %} {% endblock %}
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style> <style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
@ -109,7 +109,7 @@
<div class="splash-overlay"></div> <div class="splash-overlay"></div>
<img alt="cover" loading="lazy" class="splash-img" src="/assets/images/{{SITE_NAME}}/cover.webp?v=1014"></img> <img alt="cover" loading="lazy" class="splash-img" src="/assets/images/{{SITE_ID}}/cover.webp?v=1014"></img>
</div> </div>
</div> </div>

View file

@ -11,7 +11,7 @@
<meta name="author" content=""> <meta name="author" content="">
<title>2-Step Login - {{SITE_NAME}}</title> <title>2-Step Login - {{SITE_TITLE}}</title>
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style> <style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
<link rel="stylesheet" href="/assets/css/main.css?v=250"> <link rel="stylesheet" href="/assets/css/main.css?v=250">
@ -93,7 +93,7 @@
<div class="splash-overlay"></div> <div class="splash-overlay"></div>
<img alt="cover" loading="lazy" class="splash-img" src="/assets/images/{{SITE_NAME}}/cover.webp?v=1014"></img> <img alt="cover" loading="lazy" class="splash-img" src="/assets/images/{{SITE_ID}}/cover.webp?v=1014"></img>
</div> </div>
</div> </div>

View file

@ -1,6 +1,6 @@
{% extends "authforms.html" %} {% extends "authforms.html" %}
{% block pagetitle %}{{SITE_NAME}} Two-Factor Removal{% endblock %} {% block pagetitle %}{{SITE_TITLE}} Two-Factor Removal{% endblock %}
{% block authtitle %}Remove the two-factor authentication from your account.{% endblock %} {% block authtitle %}Remove the two-factor authentication from your account.{% endblock %}

View file

@ -25,7 +25,7 @@
<input type="submit" class="btn btn-primary" id="auth_button" value="Authorize {{application.app_name}}"> <input type="submit" class="btn btn-primary" id="auth_button" value="Authorize {{application.app_name}}">
<a href="/" class="btn btn-secondary">No, back to {{SITE_NAME}}</a> <a href="/" class="btn btn-secondary">No, back to {{SITE_TITLE}}</a>
</form> </form>

View file

@ -1,6 +1,6 @@
{% extends "authforms.html" %} {% extends "authforms.html" %}
{% block pagetitle %}{{SITE_NAME}} Password Reset{% endblock %} {% block pagetitle %}{{SITE_TITLE}} Password Reset{% endblock %}
{% block authtitle %}Change your password.{% endblock %} {% block authtitle %}Change your password.{% endblock %}

View file

@ -1,7 +1,7 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block title %} {% block title %}
<title>{{SITE_NAME}} Rules</title> <title>{{SITE_TITLE}} Rules</title>
{% endblock %} {% endblock %}
{% block content %} {% block content %}

View file

@ -3,7 +3,7 @@
{% block pagetype %}search{% endblock %} {% block pagetype %}search{% endblock %}
{% block title %} {% block title %}
<title>Search for "{{query}}" - {{SITE_NAME}}"</title> <meta name="description" content="{{total}} result{{'s' if total != 1 else ''}}"> <title>Search for "{{query}}" - {{SITE_TITLE}}"</title> <meta name="description" content="{{total}} result{{'s' if total != 1 else ''}}">
{% endblock %} {% endblock %}
{% block navbar %} {% block navbar %}

View file

@ -12,13 +12,13 @@
<meta name="author" content=""> <meta name="author" content="">
<link rel="icon" type="image/png" href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015"> <link rel="icon" type="image/png" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015">
<title>{% block pagetitle %}Settings - {{SITE_NAME}}{% endblock %}</title> <title>{% block pagetitle %}Settings - {{SITE_TITLE}}{% endblock %}</title>
<meta property="og:type" content="article"> <meta property="og:type" content="article">
<meta property="og:title" content="{{SITE_NAME}}"> <meta property="og:title" content="{{SITE_TITLE}}">
<meta property="og:site_name" content="{{request.host}}"> <meta property="og:site_name" content="{{request.host}}">
<meta property="og:image" content="/assets/images/{{SITE_NAME}}/site_preview.webp?v=1015"> <meta property="og:image" content="/assets/images/{{SITE_ID}}/site_preview.webp?v=1015">
<meta property="og:url" content="{{request.host}}"> <meta property="og:url" content="{{request.host}}">
<meta property="og:description" name="description" content="{{config('DESCRIPTION')}}"> <meta property="og:description" name="description" content="{{config('DESCRIPTION')}}">
<meta property="og:author" name="author" content="{{SITE_FULL}}"> <meta property="og:author" name="author" content="{{SITE_FULL}}">
@ -26,10 +26,10 @@
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="{{SITE_FULL}}"> <meta name="twitter:site" content="{{SITE_FULL}}">
<meta name="twitter:title" content="{{SITE_NAME}}"> <meta name="twitter:title" content="{{SITE_TITLE}}">
<meta name="twitter:creator" content="{{SITE_FULL}}"> <meta name="twitter:creator" content="{{SITE_FULL}}">
<meta name="twitter:description" content="{{config('DESCRIPTION')}}"> <meta name="twitter:description" content="{{config('DESCRIPTION')}}">
<meta name="twitter:image" content="/assets/images/{{SITE_NAME}}/site_preview.webp?v=1015"> <meta name="twitter:image" content="/assets/images/{{SITE_ID}}/site_preview.webp?v=1015">
<meta name="twitter:url" content="{{request.host}}"> <meta name="twitter:url" content="{{request.host}}">
@ -172,7 +172,7 @@
<div class="text-small text-muted">Or enter this code: {{mfa_secret}}</div> <div class="text-small text-muted">Or enter this code: {{mfa_secret}}</div>
</div> </div>
<p> <p>
<span class="font-weight-bold">Step 2:</span> Enter the six-digit code generated in the authenticator app and your {{SITE_NAME}} account password. <span class="font-weight-bold">Step 2:</span> Enter the six-digit code generated in the authenticator app and your {{SITE_TITLE}} account password.
</p> </p>
<label for="2fa_input">6-digit code</label> <label for="2fa_input">6-digit code</label>
<input autocomplete="off" type="text" class="form-control mb-2" id="2fa_input" name="2fa_token" placeholder="# # # # # #" required> <input autocomplete="off" type="text" class="form-control mb-2" id="2fa_input" name="2fa_token" placeholder="# # # # # #" required>
@ -195,7 +195,7 @@
<div class="alert alert-warning" role="alert"> <div class="alert alert-warning" role="alert">
<i class="fas fa-info-circle"></i> <i class="fas fa-info-circle"></i>
To disable two-step login, please enter your {{SITE_NAME}} account password and the 6-digit code generated in your authentication app. If you no longer have your two-step device, <a href="/lost_2fa">click here</a>. To disable two-step login, please enter your {{SITE_TITLE}} account password and the 6-digit code generated in your authentication app. If you no longer have your two-step device, <a href="/lost_2fa">click here</a>.
</div> </div>
<label for="2fa_input_password">Password</label> <label for="2fa_input_password">Password</label>

View file

@ -12,13 +12,13 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content=""> <meta name="author" content="">
<meta name="thumbnail" content="/assets/images/{{SITE_NAME}}/site_preview.webp?v=1015"> <meta name="thumbnail" content="/assets/images/{{SITE_ID}}/site_preview.webp?v=1015">
<link rel="icon" type="image/png" href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015"> <link rel="icon" type="image/png" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015">
<meta property="og:type" content="article"> <meta property="og:type" content="article">
<meta property="og:title" content="{{SITE_NAME}}"> <meta property="og:title" content="{{SITE_TITLE}}">
<meta property="og:site_name" content="{{request.host}}"> <meta property="og:site_name" content="{{request.host}}">
<meta property="og:image" content="/assets/images/{{SITE_NAME}}/site_preview.webp?v=1015"> <meta property="og:image" content="/assets/images/{{SITE_ID}}/site_preview.webp?v=1015">
<meta property="og:url" content="{{SITE_FULL}}{{request.full_path}}"> <meta property="og:url" content="{{SITE_FULL}}{{request.full_path}}">
<meta property="og:description" name="description" content="{{config('DESCRIPTION')}}"> <meta property="og:description" name="description" content="{{config('DESCRIPTION')}}">
<meta property="og:author" name="author" content="{{SITE_FULL}}"> <meta property="og:author" name="author" content="{{SITE_FULL}}">
@ -26,15 +26,15 @@
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="{{SITE_FULL}}"> <meta name="twitter:site" content="{{SITE_FULL}}">
<meta name="twitter:title" content="{{SITE_NAME}}"> <meta name="twitter:title" content="{{SITE_TITLE}}">
<meta name="twitter:creator" content="{{SITE_FULL}}"> <meta name="twitter:creator" content="{{SITE_FULL}}">
<meta name="twitter:description" content="{{config('DESCRIPTION')}}"> <meta name="twitter:description" content="{{config('DESCRIPTION')}}">
<meta name="twitter:image" content="/assets/images/{{SITE_NAME}}/site_preview.webp?v=1015"> <meta name="twitter:image" content="/assets/images/{{SITE_ID}}/site_preview.webp?v=1015">
<meta name="twitter:url" content="{{SITE_FULL}}{{request.full_path}}"> <meta name="twitter:url" content="{{SITE_FULL}}{{request.full_path}}">
<title>{% block pagetitle %}{{SITE_NAME}}{% endblock %}</title> <title>{% block pagetitle %}{{SITE_TITLE}}{% endblock %}</title>
{% if v %} {% if v %}

View file

@ -1,7 +1,7 @@
{% extends "settings.html" %} {% extends "settings.html" %}
{% block title %} {% block title %}
<title>{{SITE_NAME}} - FAQ</title> <title>{{SITE_TITLE}} - FAQ</title>
{% endblock %} {% endblock %}

View file

@ -1,6 +1,6 @@
{% extends "settings.html" %} {% extends "settings.html" %}
{% block pagetitle %}Block Settings - {{SITE_NAME}}{% endblock %} {% block pagetitle %}Block Settings - {{SITE_TITLE}}{% endblock %}
{% block content %} {% block content %}

View file

@ -1,6 +1,6 @@
{% extends "settings.html" %} {% extends "settings.html" %}
{% block pagetitle %}Custom CSS - {{SITE_NAME}}{% endblock %} {% block pagetitle %}Custom CSS - {{SITE_TITLE}}{% endblock %}
{% block content %} {% block content %}

View file

@ -1,6 +1,6 @@
{% extends "settings.html" %} {% extends "settings.html" %}
{% block pagetitle %}Profile Settings - {{SITE_NAME}}{% endblock %} {% block pagetitle %}Profile Settings - {{SITE_TITLE}}{% endblock %}
{% block content %} {% block content %}

View file

@ -1,6 +1,6 @@
{% extends "settings.html" %} {% extends "settings.html" %}
{% block pagetitle %}Profile Settings - {{SITE_NAME}}{% endblock %} {% block pagetitle %}Profile Settings - {{SITE_TITLE}}{% endblock %}
{% block content %} {% block content %}
@ -220,7 +220,7 @@
<h2 class="h5" name="referral">RSS Feed</h2> <h2 class="h5" name="referral">RSS Feed</h2>
<p class="text-small text-muted">Subscribe to the {{SITE_NAME}} RSS feed.</p> <p class="text-small text-muted">Subscribe to the {{SITE_TITLE}} RSS feed.</p>
<div class="settings-section rounded"> <div class="settings-section rounded">
@ -240,7 +240,7 @@
<h2 class="h5" id="bio" name="bio">Your Profile</h2> <h2 class="h5" id="bio" name="bio">Your Profile</h2>
<p class="text-small text-muted">Edit how others see you on {{SITE_NAME}}.</p> <p class="text-small text-muted">Edit how others see you on {{SITE_TITLE}}.</p>
<div class="settings-section rounded mb-0"> <div class="settings-section rounded mb-0">

View file

@ -1,6 +1,6 @@
{% extends "settings.html" %} {% extends "settings.html" %}
{% block pagetitle %}Custom profilecss - {{SITE_NAME}}{% endblock %} {% block pagetitle %}Custom profilecss - {{SITE_TITLE}}{% endblock %}
{% block content %} {% block content %}

View file

@ -1,6 +1,6 @@
{% extends "settings.html" %} {% extends "settings.html" %}
{% block pagetitle %}Security Settings - {{SITE_NAME}}{% endblock %} {% block pagetitle %}Security Settings - {{SITE_TITLE}}{% endblock %}
{% block content %} {% block content %}
@ -163,7 +163,7 @@
<h2 class="h5">Log Out Everywhere</h2> <h2 class="h5">Log Out Everywhere</h2>
<p class="text-small text-muted">Log all other devices out of your {{SITE_NAME}} account.</p> <p class="text-small text-muted">Log all other devices out of your {{SITE_TITLE}} account.</p>
<div class="settings-section rounded"> <div class="settings-section rounded">
@ -218,7 +218,7 @@
<div class="modal-dialog modal-dialog-centered" role="document"> <div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title">Delete your {{SITE_NAME}} account</h5> <h5 class="modal-title">Delete your {{SITE_TITLE}} account</h5>
<button class="close" data-bs-dismiss="modal" aria-label="Close"> <button class="close" data-bs-dismiss="modal" aria-label="Close">
<span aria-hidden="true"><i class="far fa-times"></i></span> <span aria-hidden="true"><i class="far fa-times"></i></span>
</button> </button>

View file

@ -1,7 +1,7 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block title %} {% block title %}
<title>{{SITE_NAME}} Sidebar</title> <title>{{SITE_TITLE}} Sidebar</title>
{% endblock %} {% endblock %}
{% block content %} {% block content %}
@ -13,7 +13,7 @@
<h1 class="text-muted text-uppercase">Sidebar</h5> <h1 class="text-muted text-uppercase">Sidebar</h5>
<div id="sidebar" class="my-3"> <div id="sidebar" class="my-3">
{% include "sidebar_" + SITE_NAME + ".html" %} {% include "sidebar_" + SITE_ID + ".html" %}
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View file

@ -29,7 +29,7 @@
optimize for light, not heat</a>; this is a group effort, and all commentators are asked to do their part.<br/><br/> optimize for light, not heat</a>; this is a group effort, and all commentators are asked to do their part.<br/><br/>
The weekly <a href="https://en.wikipedia.org/wiki/Culture_war">Culture War</a> threads host the most The weekly <a href="https://en.wikipedia.org/wiki/Culture_war">Culture War</a> threads host the most
controversial topics and are the most visible aspect of TheMotte. However, many other topics are controversial topics and are the most visible aspect of The Motte. However, many other topics are
appropriate here. We encourage people to post anything related to science, politics, or philosophy; appropriate here. We encourage people to post anything related to science, politics, or philosophy;
if in doubt, post!<br/><br/> if in doubt, post!<br/><br/>
@ -49,7 +49,7 @@
the more easily defended motte. In Shackel's words, "The Motte represents the defensible but undesired the more easily defended motte. In Shackel's words, "The Motte represents the defensible but undesired
propositions to which one retreats when hard pressed."<br/><br/> propositions to which one retreats when hard pressed."<br/><br/>
On TheMotte, always attempt to remain inside your defensible territory, even if you are not being pressed. On The Motte, always attempt to remain inside your defensible territory, even if you are not being pressed.
</p> </p>

View file

@ -12,9 +12,9 @@
<meta name="author" content=""> <meta name="author" content="">
<meta property="og:type" content="article"> <meta property="og:type" content="article">
<meta property="og:title" content="{{SITE_NAME}}"> <meta property="og:title" content="{{SITE_TITLE}}">
<meta property="og:site_name" content="{{request.host}}"> <meta property="og:site_name" content="{{request.host}}">
<meta property="og:image" content="/assets/images/{{SITE_NAME}}/site_preview.webp?v=1015"> <meta property="og:image" content="/assets/images/{{SITE_ID}}/site_preview.webp?v=1015">
<meta property="og:url" content="{{request.host}}"> <meta property="og:url" content="{{request.host}}">
<meta property="og:description" name="description" content="{{config('DESCRIPTION')}}"> <meta property="og:description" name="description" content="{{config('DESCRIPTION')}}">
<meta property="og:author" name="author" content="{{SITE_FULL}}"> <meta property="og:author" name="author" content="{{SITE_FULL}}">
@ -22,13 +22,13 @@
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="{{SITE_FULL}}"> <meta name="twitter:site" content="{{SITE_FULL}}">
<meta name="twitter:title" content="{{SITE_NAME}}"> <meta name="twitter:title" content="{{SITE_TITLE}}">
<meta name="twitter:creator" content="{{SITE_FULL}}"> <meta name="twitter:creator" content="{{SITE_FULL}}">
<meta name="twitter:description" content="{{config('DESCRIPTION')}}"> <meta name="twitter:description" content="{{config('DESCRIPTION')}}">
<meta name="twitter:image" content="/assets/images/{{SITE_NAME}}/site_preview.webp?v=1015"> <meta name="twitter:image" content="/assets/images/{{SITE_ID}}/site_preview.webp?v=1015">
<meta name="twitter:url" content="{{request.host}}"> <meta name="twitter:url" content="{{request.host}}">
<title>{% if ref_user %}{{ref_user.username}} invites you to {{SITE_NAME}}{% else %}Sign up - {{SITE_NAME}}{% endif %}</title> <title>{% if ref_user %}{{ref_user.username}} invites you to {{SITE_TITLE}}{% else %}Sign up - {{SITE_TITLE}}{% endif %}</title>
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style> <style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
<link rel="stylesheet" href="/assets/css/main.css?v=250"> <link rel="stylesheet" href="/assets/css/main.css?v=250">
@ -64,7 +64,7 @@
{% if ref_user %} {% if ref_user %}
<h1 class="h2">@{{ref_user.username}} has invited you!</h1> <h1 class="h2">@{{ref_user.username}} has invited you!</h1>
<p class="text-muted mb-md-2">Looks like someone wants you to join {{SITE_NAME}}.</p> <p class="text-muted mb-md-2">Looks like someone wants you to join {{SITE_TITLE}}.</p>
{% else %} {% else %}
<h1 class="h2">Create your account.</h1> <h1 class="h2">Create your account.</h1>
<p class="text-muted mb-md-2">No email address required.</p> <p class="text-muted mb-md-2">No email address required.</p>
@ -140,7 +140,7 @@
<div class="splash-overlay"></div> <div class="splash-overlay"></div>
<img alt="cover" loading="lazy" class="splash-img" src="/assets/images/{{SITE_NAME}}/cover.webp?v=1014"></img> <img alt="cover" loading="lazy" class="splash-img" src="/assets/images/{{SITE_ID}}/cover.webp?v=1014"></img>
</div> </div>
</div> </div>

View file

@ -13,9 +13,9 @@
<meta name="author" content=""> <meta name="author" content="">
<meta property="og:type" content="article"> <meta property="og:type" content="article">
<meta property="og:title" content="{{SITE_NAME}}"> <meta property="og:title" content="{{SITE_TITLE}}">
<meta property="og:site_name" content="{{request.host}}"> <meta property="og:site_name" content="{{request.host}}">
<meta property="og:image" content="/assets/images/{{SITE_NAME}}/site_preview.webp?v=1015"> <meta property="og:image" content="/assets/images/{{SITE_ID}}/site_preview.webp?v=1015">
<meta property="og:url" content="{{request.host}}"> <meta property="og:url" content="{{request.host}}">
<meta property="og:description" name="description" content="{{config('DESCRIPTION')}}"> <meta property="og:description" name="description" content="{{config('DESCRIPTION')}}">
<meta property="og:author" name="author" content="{{SITE_FULL}}"> <meta property="og:author" name="author" content="{{SITE_FULL}}">
@ -23,13 +23,13 @@
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="{{SITE_FULL}}"> <meta name="twitter:site" content="{{SITE_FULL}}">
<meta name="twitter:title" content="{{SITE_NAME}}"> <meta name="twitter:title" content="{{SITE_TITLE}}">
<meta name="twitter:creator" content="{{SITE_FULL}}"> <meta name="twitter:creator" content="{{SITE_FULL}}">
<meta name="twitter:description" content="{{config('DESCRIPTION')}}"> <meta name="twitter:description" content="{{config('DESCRIPTION')}}">
<meta name="twitter:image" content="/assets/images/{{SITE_NAME}}/site_preview.webp?v=1015"> <meta name="twitter:image" content="/assets/images/{{SITE_ID}}/site_preview.webp?v=1015">
<meta name="twitter:url" content="{{request.host}}"> <meta name="twitter:url" content="{{request.host}}">
<title>{% if ref_user %}{{ref_user.username}} invites you to {{SITE_NAME}}{% else %}{{SITE_NAME}}{% endif %}</title> <title>{% if ref_user %}{{ref_user.username}} invites you to {{SITE_TITLE}}{% else %}{{SITE_TITLE}}{% endif %}</title>
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style> <style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
<link rel="stylesheet" href="/assets/css/main.css?v=250"> <link rel="stylesheet" href="/assets/css/main.css?v=250">
@ -84,7 +84,7 @@
<div class="splash-overlay"></div> <div class="splash-overlay"></div>
<img alt="cover" loading="lazy" class="splash-img" src="/assets/images/{{SITE_NAME}}/cover.webp?v=1014"></img> <img alt="cover" loading="lazy" class="splash-img" src="/assets/images/{{SITE_ID}}/cover.webp?v=1014"></img>
</div> </div>
</div> </div>

View file

@ -1,6 +1,6 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}Edit {{SITE_NAME}} sidebar{% endblock %} {% block pagetitle %}Edit {{SITE_TITLE}} sidebar{% endblock %}
{% block content %} {% block content %}

View file

@ -34,7 +34,7 @@
<meta property="og:type" content="article"> <meta property="og:type" content="article">
{% if comment_info and not comment_info.is_banned and not comment_info.deleted_utc %} {% if comment_info and not comment_info.is_banned and not comment_info.deleted_utc %}
<title>{{'@'+comment_info.author_name}} comments on "{{p.plaintitle(v)}} - {{SITE_NAME}}"</title> <title>{{'@'+comment_info.author_name}} comments on "{{p.plaintitle(v)}} - {{SITE_TITLE}}"</title>
<meta property="og:article:author" content="{{'@'+comment_info.author_name}}"> <meta property="og:article:author" content="{{'@'+comment_info.author_name}}">
@ -42,8 +42,8 @@
{% if comment_info.edited_utc %}<meta property="article:modified_time" content="{{comment_info.edited_string}}">{% endif %} {% if comment_info.edited_utc %}<meta property="article:modified_time" content="{{comment_info.edited_string}}">{% endif %}
<meta property="og:description" name="description" content="{{comment_info.plainbody(v)}}"> <meta property="og:description" name="description" content="{{comment_info.plainbody(v)}}">
<meta property="og:author" name="author" content="{{'@'+comment_info.author_name}}"> <meta property="og:author" name="author" content="{{'@'+comment_info.author_name}}">
<meta property="og:title" content="{{'@'+comment_info.author_name}} comments on {{p.plaintitle(v)}} - {{SITE_NAME}}"> <meta property="og:title" content="{{'@'+comment_info.author_name}} comments on {{p.plaintitle(v)}} - {{SITE_TITLE}}">
<meta property="og:image" content="{% if p.is_image %}{{p.realurl(v)}}{% elif p.has_thumb%}{{p.thumb_url}}{% else %}{{SITE_NAME}}/assets/images/{{SITE_NAME}}/site_preview.webp?v=1015{% endif %}"> <meta property="og:image" content="{% if p.is_image %}{{p.realurl(v)}}{% elif p.has_thumb%}{{p.thumb_url}}{% else %}{{SITE_ID}}/assets/images/{{SITE_ID}}/site_preview.webp?v=1015{% endif %}">
{% if p.is_video %} {% if p.is_video %}
<meta property="og:video" content="{{p.realurl(v)}}"> <meta property="og:video" content="{{p.realurl(v)}}">
{% endif %} {% endif %}
@ -52,14 +52,14 @@
<meta name="twitter:card" content="summary"> <meta name="twitter:card" content="summary">
<meta name="twitter:site" content="{{SITE_FULL}}"> <meta name="twitter:site" content="{{SITE_FULL}}">
<meta name="twitter:title" content="{{'@'+comment_info.author_name}} comments on {{p.plaintitle(v)}} - {{SITE_NAME}}"> <meta name="twitter:title" content="{{'@'+comment_info.author_name}} comments on {{p.plaintitle(v)}} - {{SITE_TITLE}}">
<meta name="twitter:creator" content="{{'@'+comment_info.author_name}}"> <meta name="twitter:creator" content="{{'@'+comment_info.author_name}}">
<meta name="twitter:description" content="{{comment_info.plainbody(v)}}"> <meta name="twitter:description" content="{{comment_info.plainbody(v)}}">
<meta name="twitter:image" content="{% if p.is_image %}{{p.realurl(v)}}{% elif p.has_thumb%}{{p.thumb_url}}{% else %}{{SITE_NAME}}/assets/images/{{SITE_NAME}}/site_preview.webp?v=1015{% endif %}"> <meta name="twitter:image" content="{% if p.is_image %}{{p.realurl(v)}}{% elif p.has_thumb%}{{p.thumb_url}}{% else %}{{SITE_ID}}/assets/images/{{SITE_ID}}/site_preview.webp?v=1015{% endif %}">
<meta name="twitter:url" content="{{p.permalink}}"> <meta name="twitter:url" content="{{p.permalink}}">
{% else %} {% else %}
<title>{{p.plaintitle(v)}} - {{SITE_NAME}}</title> <title>{{p.plaintitle(v)}} - {{SITE_TITLE}}</title>
{% if p.author %}<meta property="og:article:author" content="{{'@'+p.author_name}}">{% endif %} {% if p.author %}<meta property="og:article:author" content="{{'@'+p.author_name}}">{% endif %}
@ -67,8 +67,8 @@
{% if p.edited_utc %}<meta property="article:modified_time" content="{{p.edited_string}}">{% endif %} {% if p.edited_utc %}<meta property="article:modified_time" content="{{p.edited_string}}">{% endif %}
<meta property="og:description" name="description" content="{{p.plainbody(v)}}"> <meta property="og:description" name="description" content="{{p.plainbody(v)}}">
{% if p.author %}<meta property="og:author" name="author" content="{{'@'+p.author_name}}">{% endif %} {% if p.author %}<meta property="og:author" name="author" content="{{'@'+p.author_name}}">{% endif %}
<meta property="og:title" content="{{p.plaintitle(v)}} - {{SITE_NAME}}"> <meta property="og:title" content="{{p.plaintitle(v)}} - {{SITE_TITLE}}">
<meta property="og:image" content="{% if p.is_image %}{{p.realurl(v)}}{% elif p.has_thumb%}{{p.thumb_url}}{% else %}{{SITE_NAME}}/assets/images/{{SITE_NAME}}/site_preview.webp?v=1015{% endif %}"> <meta property="og:image" content="{% if p.is_image %}{{p.realurl(v)}}{% elif p.has_thumb%}{{p.thumb_url}}{% else %}{{SITE_ID}}/assets/images/{{SITE_ID}}/site_preview.webp?v=1015{% endif %}">
{% if p.url and p.is_video %} {% if p.url and p.is_video %}
<meta property="og:video" content="{{p.realurl(v)}}"> <meta property="og:video" content="{{p.realurl(v)}}">
{% endif %} {% endif %}
@ -77,10 +77,10 @@
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="{{SITE_FULL}}"> <meta name="twitter:site" content="{{SITE_FULL}}">
<meta name="twitter:title" content="{{p.plaintitle(v)}} - {{SITE_NAME}}"> <meta name="twitter:title" content="{{p.plaintitle(v)}} - {{SITE_TITLE}}">
{% if p.author %}<meta name="twitter:creator" content="{{'@'+p.author_name}}">{% endif %} {% if p.author %}<meta name="twitter:creator" content="{{'@'+p.author_name}}">{% endif %}
<meta name="twitter:description" content="{{p.plainbody(v)}}"> <meta name="twitter:description" content="{{p.plainbody(v)}}">
<meta name="twitter:image" content="{% if p.is_image %}{{p.realurl(v)}}{% elif p.has_thumb %}{{p.thumb_url}}{% else %}{{SITE_NAME}}/assets/images/{{SITE_NAME}}/site_preview.webp?v=1015{% endif %}"> <meta name="twitter:image" content="{% if p.is_image %}{{p.realurl(v)}}{% elif p.has_thumb %}{{p.thumb_url}}{% else %}{{SITE_ID}}/assets/images/{{SITE_ID}}/site_preview.webp?v=1015{% endif %}">
<meta name="twitter:url" content="{{p.permalink}}"> <meta name="twitter:url" content="{{p.permalink}}">
{% endif %} {% endif %}
@ -165,7 +165,7 @@
{% endif %} {% endif %}
{% if p.is_pinned %}<i class="fas fa-thumbtack fa-rotate--45 fa-fw text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Pinned to profile"></i>{% endif %} {% if p.is_pinned %}<i class="fas fa-thumbtack fa-rotate--45 fa-fw text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Pinned to profile"></i>{% endif %}
{% if p.distinguish_level %} <i class="fas fa-broom text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{SITE_NAME}} Admin, speaking officially"></i>{% endif %} {% if p.distinguish_level %} <i class="fas fa-broom text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{SITE_TITLE}} Admin, speaking officially"></i>{% endif %}
{% if p.is_bot %} <i class="fas fa-robot text-info" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Bot"></i>{% endif %} {% if p.is_bot %} <i class="fas fa-robot text-info" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Bot"></i>{% endif %}
{% if p.over_18 %}<span class="badge badge-danger text-small-extra mr-1">+18</span>{% endif %} {% if p.over_18 %}<span class="badge badge-danger text-small-extra mr-1">+18</span>{% endif %}
{% if p.private %}<span class="badge border-warning border-1 text-small-extra">Draft</span>{% endif %} {% if p.private %}<span class="badge border-warning border-1 text-small-extra">Draft</span>{% endif %}

View file

@ -179,7 +179,7 @@
<i id='pinned-{{p.id}}' class="fas fa-thumbtack fa-rotate--45 text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Pinned by @{{p.stickied}}" {% if p.stickied_utc %}onmouseover="pinned_timestamp('pinned-{{p.id}}')" data-timestamp={{p.stickied_utc}} {% endif %}></i> <i id='pinned-{{p.id}}' class="fas fa-thumbtack fa-rotate--45 text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Pinned by @{{p.stickied}}" {% if p.stickied_utc %}onmouseover="pinned_timestamp('pinned-{{p.id}}')" data-timestamp={{p.stickied_utc}} {% endif %}></i>
{% endif %} {% endif %}
{% if p.distinguish_level %}<i class="fas fa-broom text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{SITE_NAME}} Admin, speaking officially"></i>{% endif %} {% if p.distinguish_level %}<i class="fas fa-broom text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{SITE_TITLE}} Admin, speaking officially"></i>{% endif %}
{% if p.is_pinned and request.path.startswith('/@') %}<i class="fas fa-thumbtack fa-rotate--45 text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Pinned to profile"></i>{% endif %} {% if p.is_pinned and request.path.startswith('/@') %}<i class="fas fa-thumbtack fa-rotate--45 text-admin" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Pinned to profile"></i>{% endif %}
{% if p.over_18 %}<span class="badge badge-danger text-small-extra mr-1">+18</span>{% endif %} {% if p.over_18 %}<span class="badge badge-danger text-small-extra mr-1">+18</span>{% endif %}
{% if p.is_bot %} <i class="fas fa-robot text-info" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Bot"></i>{% endif %} {% if p.is_bot %} <i class="fas fa-robot text-info" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Bot"></i>{% endif %}

View file

@ -10,10 +10,10 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content=""> <meta name="author" content="">
<link rel="icon" type="image/png" href="/assets/images/{{SITE_NAME}}/icon.webp?v=1015"> <link rel="icon" type="image/png" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015">
{% block title %} {% block title %}
<title>Create a post - {{SITE_NAME}}</title> <title>Create a post - {{SITE_TITLE}}</title>
{% endblock %} {% endblock %}

View file

@ -9,9 +9,9 @@
<link rel="stylesheet" href="/@{{u.username}}/profilecss"> <link rel="stylesheet" href="/@{{u.username}}/profilecss">
{% endif %} {% endif %}
<title>{{u.username}}'s profile - {{SITE_NAME}}</title> <title>{{u.username}}'s profile - {{SITE_TITLE}}</title>
<meta property="og:article:author" content="@{{u.username}}"> <meta property="og:article:author" content="@{{u.username}}">
<meta property="article:section" content="{{u.username}}'s profile - {{SITE_NAME}}"> <meta property="article:section" content="{{u.username}}'s profile - {{SITE_TITLE}}">
<meta property="article:published_time" content="{{u.created_date}}"> <meta property="article:published_time" content="{{u.created_date}}">
<meta property="og:description" name="description" content="Joined {{u.created_date}} - {% if u.stored_subscriber_count >=1 and not u.is_private and not u.is_nofollow %}{{u.stored_subscriber_count}} Followers - {% endif %}{% if not u.is_private %} {{0 if u.shadowbanned else u.post_count}} Posts - {{0 if u.shadowbanned else u.comment_count}} Comments - {% endif %}{{u.bio}}"> <meta property="og:description" name="description" content="Joined {{u.created_date}} - {% if u.stored_subscriber_count >=1 and not u.is_private and not u.is_nofollow %}{{u.stored_subscriber_count}} Followers - {% endif %}{% if not u.is_private %} {{0 if u.shadowbanned else u.post_count}} Posts - {{0 if u.shadowbanned else u.comment_count}} Comments - {% endif %}{{u.bio}}">
<meta property="og:author" name="author" content="@{{u.username}}"> <meta property="og:author" name="author" content="@{{u.username}}">
@ -22,7 +22,7 @@
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="{{SITE_FULL}}"> <meta name="twitter:site" content="{{SITE_FULL}}">
<meta name="twitter:title" content="{{u.username}}'s profile - {{SITE_NAME}}"> <meta name="twitter:title" content="{{u.username}}'s profile - {{SITE_TITLE}}">
<meta name="twitter:creator" content="@{{u.username}}"> <meta name="twitter:creator" content="@{{u.username}}">
<meta name="twitter:description" content="Joined {{u.created_date}} - {% if u.stored_subscriber_count >=1 and not u.is_private and not u.is_nofollow %}{{u.stored_subscriber_count}} Followers -{% endif %} {% if not u.is_private %} {{0 if u.shadowbanned else u.post_count}} Posts - {{0 if u.shadowbanned else u.comment_count}} Comments - {% endif %}{{u.bio}}"> <meta name="twitter:description" content="Joined {{u.created_date}} - {% if u.stored_subscriber_count >=1 and not u.is_private and not u.is_nofollow %}{{u.stored_subscriber_count}} Followers -{% endif %} {% if not u.is_private %} {{0 if u.shadowbanned else u.post_count}} Posts - {{0 if u.shadowbanned else u.comment_count}} Comments - {% endif %}{{u.bio}}">
<meta name="twitter:image" content="{{u.banner_url}}"> <meta name="twitter:image" content="{{u.banner_url}}">

View file

@ -25,7 +25,7 @@
<div class="font-weight-bold text-muted">Account Reserved</div> <div class="font-weight-bold text-muted">Account Reserved</div>
<div class="text-muted">The username @{{u.username}} has been pre-emptively reserved for: {{u.reserved}}</div> <div class="text-muted">The username @{{u.username}} has been pre-emptively reserved for: {{u.reserved}}</div>
<div class="text-muted">If that's you, or if you are their authorized representative, please contact {{SITE_NAME}} staff in order to obtain access to this account.</div> <div class="text-muted">If that's you, or if you are their authorized representative, please contact {{SITE_TITLE}} staff in order to obtain access to this account.</div>
</div> </div>
</div> </div>

View file

@ -1,7 +1,7 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block title %} {% block title %}
<title>{{SITE_NAME}}</title> <title>{{SITE_TITLE}}</title>
{% endblock %} {% endblock %}