html head refactor (#412)

* start html head refactor
this is a bit of a doozy tbh and will probably take a while. the templates are very highly duplicated but not duplicated enough to be an easy little thing

oh well, so it goes.

* some easier html head ones

* add chat, html_head, sign_up_failed_ref, sign_up, submit

* CSP: put it in const.py instead of this weird thing we did before

* fix syntax error

* better call the actual macros

* fix prev commit

* import into settings2

* fix prev commit

* set CSP properly if localhost

* some title fixes i think

* login page

* fix prev commit

* hacky thing to get titles to work i think

* {{stylesheets()}}

* fix prev commit

* title stuff

* cries uncontrollably

* submission fixes i think

* fix prev commit i think

* submission fixes ekfjdhfkdjf

* submission fixes 4

* this may fix submissions idk tbh

* default template: make it a little better on post pages

* default template: some efficiency
remotes/1693176582716663532/tmp_refs/heads/watchparty
justcool393 2022-10-21 11:39:45 -07:00 committed by GitHub
parent 360aa99fe1
commit c4b2c6f3f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 322 additions and 558 deletions

View File

@ -0,0 +1,7 @@
.mod:before {
content: '(((';
}
.mod:after {
content: ')))';
}

View File

@ -48,6 +48,11 @@ FP = environ.get("FP", "").strip()
KOFI_TOKEN = environ.get("KOFI_TOKEN", "").strip()
KOFI_LINK = environ.get("KOFI_LINK", "").strip()
PUSHER_ID_CSP = ""
if PUSHER_ID != "blahblahblah":
PUSHER_ID_CSP = f" {PUSHER_ID}.pushnotifications.pusher.com"
CONTENT_SECURITY_POLICY_DEFAULT = "script-src 'self' 'unsafe-inline' ajax.cloudflare.com; connect-src 'self'; object-src 'none';"
CONTENT_SECURITY_POLICY_HOME = f"script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self' tls-user1.fpapi.io api.fpjs.io{PUSHER_ID_CSP}; object-src 'none';"
if SITE == "localhost": SITE_FULL = 'http://' + SITE
else: SITE_FULL = 'https://' + SITE

View File

@ -50,4 +50,6 @@ def inject_constants():
"site_settings":app.config['SETTINGS'],
"EMAIL":EMAIL, "calc_users":calc_users, "TELEGRAM_LINK":TELEGRAM_LINK,
"EMAIL_REGEX_PATTERN":EMAIL_REGEX_PATTERN,
"CONTENT_SECURITY_POLICY_DEFAULT":CONTENT_SECURITY_POLICY_DEFAULT,
"CONTENT_SECURITY_POLICY_HOME":CONTENT_SECURITY_POLICY_HOME,
}

View File

@ -1,44 +1,8 @@
{%- import 'util/helpers.html' as help -%}
{%- import 'html_head.html' as html_head with context -%}
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="description" content="{{DESCRIPTION}}">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content="">
<link rel="icon" type="image/webp" href="{{'icon.webp' | asset_siteimg}}">
<title>{% block pagetitle %}{{SITE_NAME}}{% endblock %}</title>
{% if v %}
<style>:root{--primary:#{{v.themecolor}}}</style>
<link rel="stylesheet" href="{{'css/main.css' | asset}}">
<link rel="stylesheet" href="{{('css/'~v.theme~'.css') | asset}}">
{% if v.agendaposter %}
<style>
html {
cursor:url('/i/dildo.webp?v=2000'), auto;
}
</style>
{% elif v.css %}
<style>
{{v.css | safe}}
</style>
{% endif %}
{% else %}
<style>:root{--primary:#{{DEFAULT_COLOR}}</style>
<link rel="stylesheet" href="{{'css/main.css' | asset}}">
<link rel="stylesheet" href="{{('css/'~DEFAULT_THEME~'.css') | asset}}">
{% endif %}
</head>
{{html_head.html_head(false, false, false, none, none, "", "")}}
<body id="login">
<div class="container-fluid position-absolute h-100 p-0">
<div class="row no-gutters h-100">

View File

@ -1,34 +1,19 @@
{%- import 'util/helpers.html' as help -%}
{%- import 'html_head.html' as html_head with context -%}
<!DOCTYPE html>
<html lang="en">
<head>
<script defer src="{{'js/bootstrap.js' | asset}}"></script>
<script defer src="{{'js/core.js' | asset}}"></script>
<meta name="description" content="{{DESCRIPTION}}">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'{% if SITE == 'localhost' %} rdrama.net{% endif %}; connect-src 'self'; object-src 'none';">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content="">
<link id="favicon" rel="icon" type="image/webp" href="{{'icon.webp' | asset_siteimg}}">
<title>Chat</title>
<style>:root{--primary:#{{v.themecolor}}}</style>
<link rel="stylesheet" href="{{'css/main.css' | asset}}">
<link rel="stylesheet" href="{{('css/'~v.theme~'.css') | asset}}">
{% if v.css %}
<style>
{{v.css | safe}}
</style>
{% endif %}
{% if SITE == 'localhost' %}
{% set csp="script-src 'self' 'unsafe-inline' rdrama.net; connect-src 'self'; object-src 'none';" %}
{% else %}
{% set csp=none %}
{% endif %}
{{html_head.html_head(true, true, true, csp, "Chat", none, "", false)}}
<body>
{% if SITE == 'localhost' %}
<link rel="stylesheet" href="https://rdrama.net/assets/css/chat_done.css">
{% else %}
<link rel="stylesheet" href="{{'css/chat_done.css' | asset}}">
{% endif %}
</head>
<body>
{% include "header.html" %}
{% include "expanded_image_modal.html" %}
{% include "emoji_modal.html" %}

View File

@ -1,252 +1,28 @@
{%- import 'util/helpers.html' as help -%}
{%- import 'html_head.html' as html_head with context -%}
<!DOCTYPE html>
<html lang="en">
{% if request.path == '/' %}
{% set csp=CONTENT_SECURITY_POLICY_HOME %}
{% endif %}
{% if not 'post/' in request.path %}
{{html_head.html_head(true, true, true, csp, none, "", "", true, 'post/' in request.path)}}
{% else %}
{# this should really be fixed at some point, prolly after 10/31 #}
<head>
<script defer src="{{'js/bootstrap.js' | asset}}"></script>
<script defer src="{{'js/core.js' | asset}}"></script>
<meta name="description" content="{{DESCRIPTION}}">
{% if request.path == '/' %}
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self' tls-use1.fpapi.io api.fpjs.io {% if PUSHER_ID != 'blahblahblah' %}{{PUSHER_ID}}.pushnotifications.pusher.com{% endif %}; object-src 'none';">
{% else %}
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' ajax.cloudflare.com; connect-src 'self'; object-src 'none';">
{% endif %}
{% if v %}
<style>:root{--primary:#{{v.themecolor}}}</style>
<link rel="stylesheet" href="{{'css/main.css' | asset}}">
<link rel="stylesheet" href="{{('css/'~v.theme~'.css') | asset}}">
<link rel="stylesheet" href="{{'css/awards.css' | asset}}">
{% if v.agendaposter %}
<style>
html {
cursor:url('/i/dildo.webp?v=2000'), auto;
}
</style>
{% elif v.css %}
<style>
{{v.css | safe}}
</style>
{% endif %}
{% else %}
<style>:root{--primary:#{{DEFAULT_COLOR}}</style>
<link rel="stylesheet" href="{{'css/main.css' | asset}}">
<link rel="stylesheet" href="{{('css/'~DEFAULT_THEME~'.css') | asset}}">
<link rel="stylesheet" href="{{'css/awards.css' | asset}}">
{% endif %}
{% if request.path.endswith('/catalog') %}
<link rel="stylesheet" href="{{'css/catalog.css' | asset}}">
{% endif %}
{% if sub and sub.css and not request.path.endswith('settings') and not request.values.get('nocss') %}
<link rel="stylesheet" href="/h/{{sub}}/css" type="text/css">
{% endif %}
{% if v and v.themecolor == '30409f' %}
<style>
p a {
color: #2a96f3;
}
</style>
{% endif %}
{% if SITE_NAME == 'rDrama' %}
<style>
.mod:before {
content: '(((';
}
.mod:after {
content: ')))';
}
</style>
{% endif %}
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="thumbnail" content="{{'site_preview.webp' | asset_siteimg}}">
{{html_head.javascript()}}
{{html_head.stylesheets(true, '')}}
{{html_head.meta_tags_1(csp, none, true)}}
<link rel="icon" type="image/webp" href="{{'icon.webp' | asset_siteimg}}">
{% block title %}
<title>{{SITE_NAME}}</title>
<meta property="og:type" content="article">
<meta property="og:title" content="{{SITE_NAME}}">
<meta property="og:site_name" content="{{SITE}}">
<meta property="og:image" content="{{'site_preview.webp' | asset_siteimg}}">
<meta property="og:url" content="{{request.full_path}}">
<meta property="og:description" name="description" content="{{SITE_NAME}} - {{DESCRIPTION}}">
<meta property="og:author" name="author" content="{{SITE_FULL}}">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="{{SITE_FULL}}">
<meta name="twitter:title" content="{{SITE_NAME}}">
<meta name="twitter:creator" content="{{SITE_FULL}}">
<meta name="twitter:description" content="{{SITE_NAME}} - {{DESCRIPTION}}">
<meta name="twitter:image" content="{{'site_preview.webp' | asset_siteimg}}">
<meta name="twitter:url" content="{{request.full_path}}">
{{html_head.meta_tags_2(SITE_NAME, SITE_FULL)}}
{% endblock %}
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-touch-fullscreen" content="yes">
<meta name="format-detection" content="telephone=no">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="apple-touch-icon" sizes="180x180" href="{{'icon.webp' | asset_siteimg}}">
<link rel="manifest" href="/assets/manifest_{{SITE_NAME}}.json?v=6">
<link rel="mask-icon" href="{{'icon.webp' | asset_siteimg}}">
<link rel="shortcut icon" href="{{'icon.webp' | asset_siteimg}}">
<meta name="apple-mobile-web-app-title" content="{{SITE_NAME}}">
<meta name="application-name" content="{{SITE_NAME}}">
<meta name="msapplication-TileColor" content="#{% if v %}{{v.themecolor}}{% else %}{{DEFAULT_COLOR}}{% endif %}">
<meta name="msapplication-config" content="/assets/browserconfig.xml?v=3009">
<meta name="theme-color" content="#{% if v %}{{v.themecolor}}{% else %}{{DEFAULT_COLOR}}{% endif %}">
<link
rel="apple-touch-startup-image"
sizes="320x480"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="640x960"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-icon"
sizes="640x1136"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-icon"
sizes="750x1334"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="768x1004"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="768x1024"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="828x1792"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1024x748"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1024x768"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1125x2436"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1242x2208"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1242x2688"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1334x750"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1536x2008"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1536x2048"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1668x2224"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1792x828"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="2048x1496"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="2048x1536"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="2048x2732"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="2208x1242"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="2224x1668"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="2436x1125"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="2668x1242"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="2737x2048"
href="{{'icon.webp' | asset_siteimg}}"
>
{% if 'slackernews' in request.path %}
<meta name="cf-2fa-verify" content="ea6d12c0fb87b3b">
{% elif SITE == 'rdrama.net' %}
<meta name="cf-2fa-verify" content="4f40ca1ca249313">
{% elif SITE == 'watchpeopledie.tv' %}
<meta name="cf-2fa-verify" content="372aba5b9338e00">
{% elif SITE == 'pcmemes.net' %}
<meta name="cf-2fa-verify" content="bf22ffe56e4bcda">
{% endif %}
{{html_head.seo()}}
{{html_head.cf_2fa_verify()}}
</head>
{% endif %}
<body id="{% if request.path != '/comments' %}{% block pagetype %}frontpage{% endblock %}{% endif %}" {% 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="{% if path != '/formatting' %}overflow-x: hidden; {% endif %} 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 %}>

View File

@ -0,0 +1,263 @@
{% macro html_head(js, include_seo, include_user_css, csp, title2, author, extra_css, include_2fa_verify, include_seo2) %}
{# submission.py does a lot of stupid stuff with the title and we don't want to override that #}
{# remember, this is very temporary #}
<head>
{% if js %}
{{javascript()}}
{% endif %}
{{meta_tags_1(csp, author)}}
{{stylesheets(include_user_css, extra_css)}}
{% if title2 %}
<title>{{title2 | default(SITE_NAME, true)}} - {{SITE_NAME}}</title>
{{meta_tags_2(title2, author)}}
{% elif not include_seo2 %}
{% block title %}
<title>{% block pagetitle %}{{SITE_NAME}}{% endblock %}</title>
{{meta_tags_2(self.pagetitle(), author)}}
{% endblock %}
{% else %}
{{self.title()}}
{% endif %}
{% if include_seo %}
{{seo()}}
{% endif %}
{% if include_2fa_verify %}
{{cf_2fa_verify()}}
{% endif %}
</head>
{% endmacro %}
{% macro cf_2fa_verify() %}
{% if SITE == 'rdrama.net' %}
<meta name="cf-2fa-verify" content="4f40ca1ca249313">
{% elif SITE == 'watchpeopledie.tv' %}
<meta name="cf-2fa-verify" content="372aba5b9338e00">
{% elif SITE == 'pcmemes.net' %}
<meta name="cf-2fa-verify" content="bf22ffe56e4bcda">
{% endif %}
{% endmacro %}
{% macro javascript() %}
<script defer src="{{'js/bootstrap.js' | asset}}"></script>
<script defer src="{{'js/core.js' | asset}}"></script>
{% endmacro %}
{% macro meta_tags_1(csp, author, exclude_author) %}
<meta charset="utf-8">
<meta name="description" content="{{DESCRIPTION}}">
<meta http-equiv="Content-Security-Policy" content="{{csp | default(CONTENT_SECURITY_POLICY_DEFAULT, true)}}">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="thumbnail" content="{{'site_preview.webp' | asset_siteimg}}">
{% if not exclude_author %}
<meta name="author" content="{{author}}">
{% endif %}
{% endmacro %}
{% macro meta_tags_2(title, author) %}
<meta property="og:type" content="article">
<meta property="og:title" content="{{title}}">
<meta property="og:site_name" content="{{SITE}}">
<meta property="og:image" content="{{'site_preview.webp' | asset_siteimg}}">
<meta property="og:url" content="{{request.full_path}}">
<meta property="og:description" name="description" content="{{SITE_NAME}} - {{DESCRIPTION}}">
<meta property="og:author" name="author" content="{{author | default(SITE_FULL, true)}}">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="{{SITE_FULL}}">
<meta name="twitter:title" content="{{SITE_NAME}}">
<meta name="twitter:creator" content="{{SITE_FULL}}">
<meta name="twitter:description" content="{{SITE_NAME}} - {{DESCRIPTION}}">
<meta name="twitter:image" content="{{'site_preview.webp' | asset_siteimg}}">
<meta name="twitter:url" content="{{request.full_path}}">
{% endmacro %}
{% macro stylesheets(include_user_css, extra_css) %}
<link rel="stylesheet" href="{{'css/main.css' | asset}}">
<link rel="icon" type="image/webp" href="{{'icon.webp' | asset_siteimg}}">
{% if v %}
<style>:root{--primary:#{{v.themecolor}}}</style>
{% if v.agendaposter %}
<style>
html {
cursor:url('/i/dildo.webp?v=2000'), auto;
}
</style>
{% endif %}
{% if include_user_css %}
<link rel="stylesheet" href="{{('css/'~v.theme~'.css') | asset}}">
<link rel="stylesheet" href="{{'css/awards.css' | asset}}">
{% if v.css and not request.path.startswith('/settings/css') %}
<style>
{{v.css | safe}}
</style>
{% endif %}
{% if v.themecolor == '30409f' %}
<style>
p a {
color: #2a96f3;
}
</style>
{% endif %}
{% endif %}
{% else %}
<style>:root{--primary:#{{DEFAULT_COLOR}}</style>
<link rel="stylesheet" href="{{('css/'~DEFAULT_THEME~'.css') | asset}}">
<link rel="stylesheet" href="{{'css/awards.css' | asset}}">
{% endif %}
{% if request.path.endswith('/catalog') %}
<link rel="stylesheet" href="{{'css/catalog.css' | asset}}">
{% endif %}
{% if sub and sub.css and not request.path.endswith('settings') and not request.values.get('nocss') %}
<link rel="stylesheet" href="/h/{{sub}}/css" type="text/css">
{% endif %}
{% if SITE_NAME == 'rDrama' %}
<link rel="stylesheet" href="{{'css/rDrama.css' | asset}}">
{% endif %}
{{extra_css}}
{% endmacro %}
{% macro seo() %}
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-touch-fullscreen" content="yes">
<meta name="format-detection" content="telephone=no">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="apple-touch-icon" sizes="180x180" href="{{'icon.webp' | asset_siteimg}}">
<link rel="manifest" href="/assets/manifest_{{SITE_NAME}}.json?v=6">
<link rel="mask-icon" href="{{'icon.webp' | asset_siteimg}}">
<link rel="shortcut icon" href="{{'icon.webp' | asset_siteimg}}">
<meta name="apple-mobile-web-app-title" content="{{SITE_NAME}}">
<meta name="application-name" content="{{SITE_NAME}}">
<meta name="msapplication-TileColor" content="#{% if v %}{{v.themecolor}}{% else %}{{DEFAULT_COLOR}}{% endif %}">
<meta name="msapplication-config" content="/assets/browserconfig.xml?v=3009">
<meta name="theme-color" content="#{% if v %}{{v.themecolor}}{% else %}{{DEFAULT_COLOR}}{% endif %}">
<link
rel="apple-touch-startup-image"
sizes="320x480"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="640x960"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-icon"
sizes="640x1136"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-icon"
sizes="750x1334"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="768x1004"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="768x1024"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="828x1792"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1024x748"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1024x768"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1125x2436"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1242x2208"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1242x2688"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1334x750"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1536x2008"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1536x2048"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1668x2224"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="1792x828"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="2048x1496"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="2048x1536"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="2048x2732"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="2208x1242"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="2224x1668"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="2436x1125"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="2668x1242"
href="{{'icon.webp' | asset_siteimg}}"
>
<link
rel="apple-touch-startup-image"
sizes="2737x2048"
href="{{'icon.webp' | asset_siteimg}}"
>
{% endmacro %}

View File

@ -1,31 +1,8 @@
{%- import 'util/helpers.html' as help -%}
{%- import 'html_head.html' as html_head with context -%}
<!DOCTYPE html>
<html lang="en">
<head>
<script defer src="{{'js/bootstrap.js' | asset}}"></script>
<script defer src="{{'js/core.js' | asset}}"></script>
<link rel="icon" type="image/webp" href="{{'icon.webp' | asset_siteimg}}">
<meta name="description" content="{{DESCRIPTION}}">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content="">
{% block title %}
<title>Login - {{SITE_NAME}}</title>
{% endblock %}
<style>:root{--primary:#{{DEFAULT_COLOR}}</style>
<link rel="stylesheet" href="{{'css/main.css' | asset}}">
<link rel="stylesheet" href="{{('css/'~DEFAULT_THEME~'.css') | asset}}">
</head>
{{html_head.html_head(true, false, false, none, 'Login', '', '', false)}}
<body id="login">
<div class="container-fluid position-absolute h-100 p-0 overflow-auto">

View File

@ -1,26 +1,9 @@
{%- import 'util/helpers.html' as help -%}
{%- import 'html_head.html' as html_head with context -%}
<!DOCTYPE html>
<html lang="en">
{{html_head.html_head(false, false, false, none, none, '', '', false)}}
<head>
<link rel="icon" type="image/webp" href="{{'icon.webp' | asset_siteimg}}">
<meta name="description" content="{{DESCRIPTION}}">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content="">
<title>2-Step Login - {{SITE_NAME}}</title>
<style>:root{--primary:#{{DEFAULT_COLOR}}</style>
<link rel="stylesheet" href="{{'css/main.css' | asset}}">
<link rel="stylesheet" href="{{('css/'~DEFAULT_THEME~'.css') | asset}}">
</head>
<body id="login">
<div class="container-fluid position-absolute h-100 p-0 overflow-auto">

View File

@ -1,53 +1,11 @@
{%- import 'util/helpers.html' as help -%}
{%- import 'html_head.html' as html_head with context -%}
<!DOCTYPE html>
<html lang="en">
<head>
<script defer src="{{'js/bootstrap.js' | asset}}"></script>
<script defer src="{{'js/core.js' | asset}}"></script>
<meta name="description" content="{{DESCRIPTION}}">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content="">
<link rel="icon" type="image/webp" href="{{'icon.webp' | asset_siteimg}}">
<title>{% block pagetitle %}Settings - {{SITE_NAME}}{% endblock %}</title>
<meta property="og:type" content="article">
<meta property="og:title" content="{{SITE_NAME}}">
<meta property="og:site_name" content="{{SITE}}">
<meta property="og:image" content="{{'site_preview.webp' | asset_siteimg}}">
<meta property="og:url" content="{{SITE_FULL}}">
<meta property="og:description" name="description" content="{{SITE_NAME}} - {{DESCRIPTION}}">
<meta property="og:author" name="author" content="{{SITE_FULL}}">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="{{SITE_FULL}}">
<meta name="twitter:title" content="{{SITE_NAME}}">
<meta name="twitter:creator" content="{{SITE_FULL}}">
<meta name="twitter:description" content="{{SITE_NAME}} - {{DESCRIPTION}}">
<meta name="twitter:image" content="{{'site_preview.webp' | asset_siteimg}}">
<meta name="twitter:url" content="{{SITE_FULL}}">
<style>:root{--primary:#{{v.themecolor}}}</style>
<link rel="stylesheet" href="{{'css/main.css' | asset}}">
<link rel="stylesheet" href="{{('css/'~v.theme~'.css') | asset}}">
{% if v.agendaposter %}
<style>
html {
cursor:url('/i/dildo.webp?v=2000'), auto;
}
</style>
{% elif v.css and not request.path.startswith('/settings/css') %}
<style>
{{v.css | safe}}
</style>
{% endif %}
</head>
{{html_head.html_head(true, false, true, none, "Settings", "", "", false)}}
<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 %}>

View File

@ -1,53 +1,8 @@
{%- import 'util/helpers.html' as help -%}
{%- import 'html_head.html' as html_head with context -%}
<!DOCTYPE html>
<html lang="en">
<head>
<script defer src="{{'js/bootstrap.js' | asset}}"></script>
<script defer src="{{'js/core.js' | asset}}"></script>
<meta name="description" content="{{DESCRIPTION}}">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content="">
<meta name="thumbnail" content="{{'site_preview.webp' | asset_siteimg}}">
<link rel="icon" type="image/webp" href="{{'icon.webp' | asset_siteimg}}">
<meta property="og:type" content="article">
<meta property="og:title" content="{{SITE_NAME}}">
<meta property="og:site_name" content="{{SITE}}">
<meta property="og:image" content="{{'site_preview.webp' | asset_siteimg}}">
<meta property="og:url" content="{{request.full_path}}">
<meta property="og:description" name="description" content="{{SITE_NAME}} - {{DESCRIPTION}}">
<meta property="og:author" name="author" content="{{SITE_FULL}}">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="{{SITE_FULL}}">
<meta name="twitter:title" content="{{SITE_NAME}}">
<meta name="twitter:creator" content="{{SITE_FULL}}">
<meta name="twitter:description" content="{{SITE_NAME}} - {{DESCRIPTION}}">
<meta name="twitter:image" content="{{'site_preview.webp' | asset_siteimg}}">
<meta name="twitter:url" content="{{request.full_path}}">
<title>{% block pagetitle %}{{SITE_NAME}}{% endblock %}</title>
{% if v %}
<style>:root{--primary:#{{v.themecolor}}}</style>
<link rel="stylesheet" href="{{'css/main.css' | asset}}">
<link rel="stylesheet" href="{{('css/'~v.theme~'.css') | asset}}">
{% else %}
<style>:root{--primary:#{{DEFAULT_COLOR}}</style>
<link rel="stylesheet" href="{{'css/main.css' | asset}}">
<link rel="stylesheet" href="{{('css/'~DEFAULT_THEME~'.css') | asset}}">
{% endif %}
</head>
{{html_head.html_head(true, false, true, none, none, "", "")}}
<body id="settings2" {% 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 %}>
{% include "header.html" %}

View File

@ -1,43 +1,13 @@
{%- import 'util/helpers.html' as help -%}
{%- import 'html_head.html' as html_head with context -%}
<!DOCTYPE html>
<html lang="en">
<head>
<script defer src="{{'js/bootstrap.js' | asset}}"></script>
<script defer src="{{'js/core.js' | asset}}"></script>
<link rel="icon" type="image/webp" href="{{'icon.webp' | asset_siteimg}}">
<meta name="description" content="{{DESCRIPTION}}">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content="">
<meta property="og:type" content="article">
<meta property="og:title" content="{{SITE_NAME}}">
<meta property="og:site_name" content="{{SITE}}">
<meta property="og:image" content="{{'site_preview.webp' | asset_siteimg}}">
<meta property="og:url" content="{{SITE_FULL}}">
<meta property="og:description" name="description" content="{{SITE_NAME}} - {{DESCRIPTION}}">
<meta property="og:author" name="author" content="{{SITE_FULL}}">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="{{SITE_FULL}}">
<meta name="twitter:title" content="{{SITE_NAME}}">
<meta name="twitter:creator" content="{{SITE_FULL}}">
<meta name="twitter:description" content="{{SITE_NAME}} - {{DESCRIPTION}}">
<meta name="twitter:image" content="{{'site_preview.webp' | asset_siteimg}}">
<meta name="twitter:url" content="{{SITE_FULL}}">
<title>{% if ref_user %}{{ref_user.username}} invites you to {{SITE_NAME}}{% else %}Sign up - {{SITE_NAME}}{% endif %}</title>
<style>:root{--primary:#{{DEFAULT_COLOR}}</style>
<link rel="stylesheet" href="{{'css/main.css' | asset}}">
<link rel="stylesheet" href="{{('css/'~DEFAULT_THEME~'.css') | asset}}">
</head>
{% if ref_user %}
{% set title= ref_user.username + "invites you to " + SITE_NAME %}
{% else %}
{% set title="Sign up" %}
{% endif %}
{{html_head.html_head(true, false, false, none, title, none, "", false)}}
<body id="login">
<div class="container-fluid position-absolute h-100 p-0 overflow-auto">

View File

@ -1,44 +1,8 @@
{%- import 'util/helpers.html' as help -%}
{%- import 'html_head.html' as html_head with context -%}
<!DOCTYPE html>
<html lang="en">
<head>
<script defer src="{{'js/bootstrap.js' | asset}}"></script>
<script defer src="{{'js/core.js' | asset}}"></script>
<link rel="icon" type="image/webp" href="{{'icon.webp' | asset_siteimg}}">
<meta name="description" content="{{DESCRIPTION}}">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content="">
<meta property="og:type" content="article">
<meta property="og:title" content="{{SITE_NAME}}">
<meta property="og:site_name" content="{{SITE}}">
<meta property="og:image" content="{{'site_preview.webp' | asset_siteimg}}">
<meta property="og:url" content="{{SITE_FULL}}">
<meta property="og:description" name="description" content="{{SITE_NAME}} - {{DESCRIPTION}}">
<meta property="og:author" name="author" content="{{SITE_FULL}}">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="{{SITE_FULL}}">
<meta name="twitter:title" content="{{SITE_NAME}}">
<meta name="twitter:creator" content="{{SITE_FULL}}">
<meta name="twitter:description" content="{{SITE_NAME}} - {{DESCRIPTION}}">
<meta name="twitter:image" content="{{'site_preview.webp' | asset_siteimg}}">
<meta name="twitter:url" content="{{SITE_FULL}}">
<title>{% if ref_user %}{{ref_user.username}} invites you to {{SITE_NAME}}{% else %}{{SITE_NAME}}{% endif %}</title>
<style>:root{--primary:#{{DEFAULT_COLOR}}</style>
<link rel="stylesheet" href="{{'css/main.css' | asset}}">
<link rel="stylesheet" href="{{('css/'~DEFAULT_THEME~'.css') | asset}}">
</head>
{{html_head.html_head(true, false, false, none, none, none, false)}}
<body id="login">
<div class="container-fluid position-absolute h-100 p-0">

View File

@ -1,53 +1,8 @@
{%- import 'util/helpers.html' as help -%}
{%- import 'html_head.html' as html_head with context -%}
<!DOCTYPE html>
<html lang="en">
<head>
<script defer src="{{'js/bootstrap.js' | asset}}"></script>
<script defer src="{{'js/core.js' | asset}}"></script>
<meta name="description" content="{{DESCRIPTION}}">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content="">
<link rel="icon" type="image/webp" href="{{'icon.webp' | asset_siteimg}}">
{% if SITE == 'pcmemes.net' %}
{% set cc='Splash Mountain' %}
{% else %}
{% set cc='Country Club' %}
{% endif %}
{% block title %}
<title>Create a post - {{SITE_NAME}}</title>
{% endblock %}
{% block stylesheets %}
{% if v %}
<style>:root{--primary:#{{v.themecolor}}}</style>
<link rel="stylesheet" href="{{'css/main.css' | asset}}">
<link rel="stylesheet" href="{{('css/'~v.theme~'.css') | asset}}">
{% if v.agendaposter %}
<style>
html {
cursor:url('/i/dildo.webp?v=2000'), auto;
}
</style>
{% elif v.css %}
<style>
{{v.css | safe}}
</style>
{% endif %}
{% else %}
<style>:root{--primary:#{{DEFAULT_COLOR}}</style>
<link rel="stylesheet" href="{{'css/main.css' | asset}}">
<link rel="stylesheet" href="{{('css/'~DEFAULT_THEME~'.css') | asset}}">
{% endif %}
{% endblock %}
</head>
{{html_head.html_head(true, false, true, none, "Create a post", none, "", false)}}
<body id="submit" {% 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)display: block{% if 'anime' not in v.background %};background-size: cover{% endif %}"{% endif %}>
{% include "header.html" %}