Merge pull request #227 from TLSM/rework-assets

Rework assets to use automatic cachebusting (#127).
This commit is contained in:
JulianRota 2022-09-01 00:28:39 -04:00 committed by GitHub
commit 9657adbebf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
56 changed files with 237 additions and 191 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -4,6 +4,7 @@ from files.__main__ import Base, app
from os import environ from os import environ
from files.helpers.lazy import lazy from files.helpers.lazy import lazy
from files.helpers.const import * from files.helpers.const import *
from files.helpers.assetcache import assetcache_path
from datetime import datetime from datetime import datetime
from json import loads from json import loads
@ -61,7 +62,7 @@ class Badge(Base):
@property @property
@lazy @lazy
def path(self): def path(self):
return f"/assets/images/badges/{self.badge_id}.webp" return assetcache_path(f'images/badges/{self.badge_id}.webp')
@property @property
@lazy @lazy

View file

@ -9,6 +9,7 @@ from sqlalchemy.orm import relationship, deferred
from files.__main__ import Base from files.__main__ import Base
from files.helpers.const import * from files.helpers.const import *
from files.helpers.lazy import lazy from files.helpers.lazy import lazy
from files.helpers.assetcache import assetcache_path
from .flags import Flag from .flags import Flag
from .comment import Comment from .comment import Comment
from flask import g from flask import g
@ -266,13 +267,18 @@ class Submission(Base):
@property @property
@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:
elif not self.url: return f"{SITE_FULL}/assets/images/{SITE_ID}/default_text.webp?v=1" return SITE_FULL + assetcache_path('images/nsfw.webp')
elif not self.url:
return SITE_FULL + assetcache_path(f'images/{SITE_ID}/default_text.webp')
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
elif self.is_youtube or self.is_video: return f"{SITE_FULL}/assets/images/default_thumb_yt.webp?v=1" elif self.is_youtube or self.is_video:
else: return f"{SITE_FULL}/assets/images/default_thumb_link.webp?v=1" return SITE_FULL + assetcache_path('images/default_thumb_yt.webp')
else:
return SITE_FULL + assetcache_path('images/default_thumb_link.webp')
@property @property
@lazy @lazy

View file

@ -19,6 +19,7 @@ from .exiles import *
from .sub_block import * from .sub_block import *
from files.__main__ import app, Base, cache from files.__main__ import app, Base, cache
from files.helpers.security import * from files.helpers.security import *
from files.helpers.assetcache import assetcache_path
import random import random
from datetime import datetime from datetime import datetime
from os import environ, remove, path from os import environ, remove, path
@ -528,16 +529,18 @@ class User(Base):
@property @property
@lazy @lazy
def banner_url(self): def banner_url(self):
if self.bannerurl: return self.bannerurl if self.bannerurl:
else: return f"/assets/images/{SITE_ID}/site_preview.webp?v=1015" return self.bannerurl
return assetcache_path(f'images/{SITE_ID}/site_preview.webp')
@property @property
@lazy @lazy
def profile_url(self): def profile_url(self):
if self.profileurl: if self.profileurl:
if self.profileurl.startswith('/'): return SITE_FULL + self.profileurl if self.profileurl.startswith('/'):
return SITE_FULL + self.profileurl
return self.profileurl return self.profileurl
return f"{SITE_FULL}/assets/images/default-profile-pic.webp?v=1008" return assetcache_path('images/default-profile-pic.webp')
@lazy @lazy
def json_popover(self, v): def json_popover(self, v):

View file

@ -0,0 +1,30 @@
import os
import zlib
from collections import defaultdict
ASSET_DIR = 'files/assets'
ASSET_URL = '/assets/'
ASSET_CACHE = defaultdict(lambda: None)
def assetcache_build(asset_dir):
for root, dirs, files in os.walk(asset_dir):
for fname in files:
fpath = root + '/' + fname
relpath = fpath[len(asset_dir) + 1:].replace('\\', '/')
with open(fpath, 'rb') as f:
fhash = zlib.crc32(f.read())
ASSET_CACHE[relpath] = '%x' % fhash
def assetcache_hash(asset_path):
return ASSET_CACHE[asset_path]
def assetcache_path(asset_path):
cachehash = assetcache_hash(asset_path)
url = ASSET_URL + asset_path
if cachehash:
url += '?v=' + cachehash
return url
assetcache_build(ASSET_DIR)

View file

@ -3,6 +3,7 @@ from .get import *
from os import listdir, environ from os import listdir, environ
from .const import * from .const import *
import time import time
from files.helpers.assetcache import assetcache_path
@app.template_filter("post_embed") @app.template_filter("post_embed")
def post_embed(id, v): def post_embed(id, v):
@ -46,6 +47,9 @@ def timestamp(timestamp):
years = int(months / 12) years = int(months / 12)
return f"{years}yr ago" return f"{years}yr ago"
@app.template_filter("asset")
def template_asset(asset_path):
return assetcache_path(asset_path)
@app.context_processor @app.context_processor
def inject_constants(): def inject_constants():

View file

@ -11,6 +11,7 @@ from pusher_push_notifications import PushNotifications
from flask import * from flask import *
from files.__main__ import app, limiter from files.__main__ import app, limiter
from files.helpers.sanitize import filter_emojis_only from files.helpers.sanitize import filter_emojis_only
from files.helpers.assetcache import assetcache_path
import requests import requests
from shutil import copyfile from shutil import copyfile
from json import loads from json import loads
@ -38,7 +39,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_ID}/icon.webp?v=1015', 'icon': SITE_FULL + assetcache_path(f'images/{SITE_ID}/icon.webp'),
} }
}, },
'fcm': { 'fcm': {

View file

@ -6,6 +6,7 @@ from files.classes.views import ViewerRelationship
from files.helpers.alerts import * from files.helpers.alerts import *
from files.helpers.sanitize import * from files.helpers.sanitize import *
from files.helpers.const import * from files.helpers.const import *
from files.helpers.assetcache import assetcache_path
from files.mail import * from files.mail import *
from flask import * from flask import *
from files.__main__ import app, limiter, db_session from files.__main__ import app, limiter, db_session
@ -26,7 +27,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_ID}/icon.webp?v=1015', 'icon': SITE_FULL + assetcache_path(f'images/{SITE_ID}/icon.webp'),
} }
}, },
'fcm': { 'fcm': {
@ -707,7 +708,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_ID}/icon.webp"a=1010', 'icon': SITE_FULL + assetcache_path(f'images/{SITE_ID}/icon.webp'),
} }
}, },
'fcm': { 'fcm': {

View file

@ -60,7 +60,7 @@
<label class="custom-control-label" for="{{badge.id}}"></label> <label class="custom-control-label" for="{{badge.id}}"></label>
</div> </div>
</td> </td>
<td><label for="badge-{{badge.id}}"><img alt="{{badge.name}}" loading="lazy" src="/assets/images/badges/{{badge.id}}.webp?v=1016" width=64.16 height=70></label></td> <td><label for="badge-{{badge.id}}"><img alt="{{badge.name}}" loading="lazy" src="{{ ('images/badges/'~badge.id~'.webp') | asset }}" width=64.16 height=70></label></td>
<td>{{badge.name}}</td> <td>{{badge.name}}</td>
<td>{{badge.description}}</td> <td>{{badge.description}}</td>
</tr> </tr>

View file

@ -60,7 +60,7 @@
<label class="custom-control-label" for="{{badge.id}}"></label> <label class="custom-control-label" for="{{badge.id}}"></label>
</div> </div>
</td> </td>
<td><label for="badge-{{badge.id}}"><img alt="{{badge.name}}" loading="lazy" src="/assets/images/badges/{{badge.id}}.webp?v=1016" width=64.16 height=70></label></td> <td><label for="badge-{{badge.id}}"><img alt="{{badge.name}}" loading="lazy" src="{{ ('images/badges/'~badge.id~'.webp') | asset }}" width=64.16 height=70></label></td>
<td>{{badge.name}}</td> <td>{{badge.name}}</td>
<td>{{badge.description}}</td> <td>{{badge.description}}</td>
</tr> </tr>

View file

@ -4,7 +4,7 @@
{% block content %} {% block content %}
<script src="/assets/js/sort_table.js?v=242"></script> <script src="{{ 'js/sort_table.js' | asset }}"></script>
<pre class="d-none d-md-inline-block"></pre> <pre class="d-none d-md-inline-block"></pre>
<h5 style="font-weight:bold;">Admins</h5> <h5 style="font-weight:bold;">Admins</h5>

View file

@ -15,15 +15,15 @@
{% if v %} {% if v %}
<style>:root{--primary:#{{v.themecolor}}}</style> <style>:root{--primary:#{{v.themecolor}}}</style>
<link rel="stylesheet" href="/assets/css/main.css?v=254"> <link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
<link rel="stylesheet" href="/assets/css/{{v.theme}}.css?v=59"> <link rel="stylesheet" href="{{ ('css/'~v.theme~'.css') | asset }}">
{% if v.css %} {% if v.css %}
<link rel="stylesheet" href="/@{{v.username}}/css"> <link rel="stylesheet" href="/@{{v.username}}/css">
{% endif %} {% endif %}
{% else %} {% else %}
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style> <style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
<link rel="stylesheet" href="/assets/css/main.css?v=254"> <link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=58"> <link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
{% endif %} {% endif %}
</head> </head>
@ -94,7 +94,7 @@
<div class="splash-overlay"></div> <div class="splash-overlay"></div>
<img alt="cover" loading="lazy" class="splash-img" src="/assets/images/{{SITE_ID}}/cover.webp?v=1014"></img> <img alt="cover" loading="lazy" class="splash-img" src="{{ ('images/'~SITE_ID~'/cover.webp') | asset }}"></img>
</div> </div>
</div> </div>

View file

@ -44,4 +44,4 @@
</div> </div>
</div> </div>
<script src="/assets/js/award_modal.js?v=248" data-cfasync="false"></script> <script src="{{ 'js/award_modal.js' | asset }}" data-cfasync="false"></script>

View file

@ -1,6 +1,6 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block content %} {% block content %}
<script src="/assets/js/sort_table.js?v=242"></script> <script src="{{ 'js/sort_table.js' | asset }}"></script>
<pre> <pre>
@ -27,7 +27,7 @@
<tr> <tr>
<td>{{loop.index}}</td> <td>{{loop.index}}</td>
<td>{{badge.name}}</td> <td>{{badge.name}}</td>
<td><img alt="{{badge.name}}" loading="lazy" src="/assets/images/badges/{{badge.id}}.webp?v=1016" width=45.83 height=50> <td><img alt="{{badge.name}}" loading="lazy" src="{{ ('images/badges/'~badge.id~'.webp') | asset }}" width=45.83 height=50>
<td>{{badge.description}}</td> <td>{{badge.description}}</td>
{%- set ct = counts[badge.id] if badge.id in counts else (0, 0) %} {%- set ct = counts[badge.id] if badge.id in counts else (0, 0) %}
<td class="badges-rarity-qty">{{ ct[0] }}</td> <td class="badges-rarity-qty">{{ ct[0] }}</td>

View file

@ -1,5 +1,5 @@
<script src="/assets/js/ban_modal.js?v=241"></script> <script src="{{ 'js/ban_modal.js' | asset }}"></script>
<div class="modal fade" id="banModal" tabindex="-1" role="dialog" aria-labelledby="banModalTitle" aria-hidden="true"> <div class="modal fade" id="banModal" tabindex="-1" role="dialog" aria-labelledby="banModalTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document"> <div class="modal-dialog modal-dialog-centered" role="document">

View file

@ -104,6 +104,6 @@
</nav> </nav>
{% endif %} {% endif %}
<script src="/assets/js/post_toast2.js?v=243"></script> <script src="{{ 'js/post_toast2.js' | asset }}"></script>
{% endblock %} {% endblock %}

View file

@ -9,13 +9,13 @@
<meta name="author" content=""> <meta name="author" content="">
<link id="favicon" rel="icon" type="image/png" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"> <link id="favicon" rel="icon" type="image/png" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}">
<title>Chat</title> <title>Chat</title>
<style>:root{--primary:#{{v.themecolor}}}</style> <style>:root{--primary:#{{v.themecolor}}}</style>
<link rel="stylesheet" href="/assets/css/main.css?v=254"> <link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
<link rel="stylesheet" href="/assets/css/{{v.theme}}.css?v=59"> <link rel="stylesheet" href="{{ ('css/'~v.theme~'.css') | asset }}">
{% if v.css %} {% if v.css %}
<link rel="stylesheet" href="/@{{v.username}}/css"> <link rel="stylesheet" href="/@{{v.username}}/css">
{% endif %} {% endif %}
@ -101,7 +101,7 @@
</head> </head>
<body> <body>
<script src="/assets/js/bootstrap.js?v=249"></script> <script src="{{ 'js/bootstrap.js' | asset }}"></script>
{% include "header.html" %} {% include "header.html" %}
@ -189,7 +189,7 @@
<script src="/chat.js?v=16"></script> <script src="/chat.js?v=16"></script>
<script src="/assets/js/lozad.js?v=242"></script> <script src="{{ 'js/lozad.js' | asset }}"></script>
<script src="/assets/js/lite-youtube.js?v=240"></script> <script src="{{ 'js/lite-youtube.js' | asset }}"></script>
</body> </body>

View file

@ -225,7 +225,7 @@
{% endif %} {% endif %}
{% if c.treasure_amount and c.treasure_amount != '0' %} {% if c.treasure_amount and c.treasure_amount != '0' %}
<img class="treasure" alt="treasure" src="/assets/images/chest.webp" width="20" /> <img class="treasure" alt="treasure" src="{{ 'images/chest.webp' | asset }}" width="20" />
{% if '-' in c.treasure_amount %} {% if '-' in c.treasure_amount %}
<em>A Mimic Ate {{c.treasure_amount.replace('-', '')}} Coins!</em> <em>A Mimic Ate {{c.treasure_amount.replace('-', '')}} Coins!</em>
{% else %} {% else %}
@ -839,26 +839,26 @@
{% endif %} {% endif %}
{% if v %} {% if v %}
<script src="/assets/js/vendor/purify.min.js?v=251"></script> <script src="{{ 'js/vendor/purify.min.js' | asset }}"></script>
<script src="/assets/js/vendor/marked.min.js?v=251"></script> <script src="{{ 'js/vendor/marked.min.js' | asset }}"></script>
<script src="/assets/js/marked.custom.js?v=252"></script> <script src="{{ 'js/marked.custom.js' | asset }}"></script>
<script src="/assets/js/comments_v.js?v=268"></script> <script src="{{ 'js/comments_v.js' | asset }}"></script>
<script src="/assets/js/award_modal.js?v=1"></script> <script src="{{ 'js/award_modal.js' | asset }}"></script>
{% endif %} {% endif %}
<script src="/assets/js/clipboard.js?v=250"></script> <script src="{{ 'js/clipboard.js' | asset }}"></script>
{% if v and v.admin_level > 1 %} {% if v and v.admin_level > 1 %}
<script src="/assets/js/comments_admin.js?v=250"></script> <script src="{{ 'js/comments_admin.js' | asset }}"></script>
{% if v.admin_level > 2 %} {% if v.admin_level > 2 %}
<script src="/assets/js/filter_actions.js?v=8"></script> <script src="{{ 'js/filter_actions.js' | asset }}"></script>
{% endif %} {% endif %}
{% endif %} {% endif %}
{% include "expanded_image_modal.html" %} {% include "expanded_image_modal.html" %}
<script src="/assets/js/comments+submission_listing.js?v=259"></script> <script src="{{ 'js/comments+submission_listing.js' | asset }}"></script>
<script src="/assets/js/comments.js?v=256"></script> <script src="{{ 'js/comments.js' | asset }}"></script>
<script> <script>
{% if p and (not v or v.highlightcomments) %} {% if p and (not v or v.highlightcomments) %}

View file

@ -4,23 +4,23 @@
<meta name="description" content="{{config('DESCRIPTION')}}"> <meta name="description" content="{{config('DESCRIPTION')}}">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval' ajax.cloudflare.com; connect-src 'self' tls-use1.fpapi.io api.fpjs.io {% if PUSHER_ID != 'blahblahblah' %}{{PUSHER_ID}}.pushnotifications.pusher.com{% endif %}; object-src 'none';"> <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval' ajax.cloudflare.com; connect-src 'self' tls-use1.fpapi.io api.fpjs.io {% if PUSHER_ID != 'blahblahblah' %}{{PUSHER_ID}}.pushnotifications.pusher.com{% endif %}; object-src 'none';">
<script src="/assets/js/bootstrap.js?v=245"></script> <script src="{{ 'js/bootstrap.js' | asset }}"></script>
<script src="/assets/js/micromodal.js?v=245"></script> <script src="{{ 'js/micromodal.js' | asset }}"></script>
{% if v %} {% if v %}
<style>:root{--primary:#{{v.themecolor}}}</style> <style>:root{--primary:#{{v.themecolor}}}</style>
<link rel="stylesheet" href="/assets/css/main.css?v=254"> <link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
<link rel="stylesheet" href="/assets/css/{{v.theme}}.css?v=59"> <link rel="stylesheet" href="{{ ('css/'~v.theme~'.css') | asset }}">
{% if v.css %} {% if v.css %}
<link rel="stylesheet" href="/@{{v.username}}/css"> <link rel="stylesheet" href="/@{{v.username}}/css">
{% endif %} {% endif %}
{% else %} {% else %}
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style> <style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
<link rel="stylesheet" href="/assets/css/main.css?v=254"> <link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=58"> <link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
{% endif %} {% endif %}
{% if request.path == '/catalog' %} {% if request.path == '/catalog' %}
<link rel="stylesheet" href="/assets/css/catalog.css?v=1"> <link rel="stylesheet" href="{{ 'css/catalog.css' | asset }}">
{% endif %} {% endif %}
{% if sub and sub.css and not request.path.endswith('settings') %} {% if sub and sub.css and not request.path.endswith('settings') %}
@ -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_ID}}/site_preview.webp?v=1015"> <meta name="thumbnail" content="{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}">
<link rel="icon" type="image/png" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"> <link rel="icon" type="image/png" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}">
{% block title %} {% block title %}
<title>{{SITE_TITLE}}</title> <title>{{SITE_TITLE}}</title>
<meta property="og:type" content="article"> <meta property="og:type" content="article">
<meta property="og:title" content="{{SITE_TITLE}}"> <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_ID}}/site_preview.webp?v=1015"> <meta property="og:image" content="{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}">
<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}}">
@ -58,7 +58,7 @@
<meta name="twitter:title" content="{{SITE_TITLE}}"> <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_ID}}/site_preview.webp?v=1015"> <meta name="twitter:image" content="{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}">
<meta name="twitter:url" content="{{SITE_FULL}}{{request.full_path}}"> <meta name="twitter:url" content="{{SITE_FULL}}{{request.full_path}}">
{% endblock %} {% endblock %}
@ -67,14 +67,14 @@
<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_ID}}/icon.webp?v=1015"> <link rel="apple-touch-icon" sizes="180x180" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}">
<link rel="manifest" href="/assets/manifest_{{SITE_ID}}.json?v=1"> <link rel="manifest" href="{{ ('manifest_'~SITE_ID~'.json') | asset }}">
<link rel="mask-icon" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"> <link rel="mask-icon" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}">
<link rel="shortcut icon" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"> <link rel="shortcut icon" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}">
<meta name="apple-mobile-web-app-title" content="{{SITE_TITLE}}"> <meta name="apple-mobile-web-app-title" content="{{SITE_TITLE}}">
<meta name="application-name" content="{{SITE_TITLE}}"> <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="{{ 'browserconfig.xml' | asset }}">
<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_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="640x960" sizes="640x960"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-icon" rel="apple-touch-icon"
sizes="640x1136" sizes="640x1136"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-icon" rel="apple-touch-icon"
sizes="750x1334" sizes="750x1334"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="768x1004" sizes="768x1004"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="768x1024" sizes="768x1024"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="828x1792" sizes="828x1792"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1024x748" sizes="1024x748"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1024x768" sizes="1024x768"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1125x2436" sizes="1125x2436"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1242x2208" sizes="1242x2208"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1242x2688" sizes="1242x2688"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1334x750" sizes="1334x750"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1536x2008" sizes="1536x2008"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1536x2048" sizes="1536x2048"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1668x2224" sizes="1668x2224"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1792x828" sizes="1792x828"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2048x1496" sizes="2048x1496"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2048x1536" sizes="2048x1536"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2048x2732" sizes="2048x2732"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2208x1242" sizes="2208x1242"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2224x1668" sizes="2224x1668"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2436x1125" sizes="2436x1125"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2668x1242" sizes="2668x1242"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2737x2048" sizes="2737x2048"
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
> >
{% 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_ID}}/banner.webp?v=1046" width="100%"> <img alt="site banner" class="primary_banner" src="{{ ('images/'~SITE_ID~'/banner.webp') | asset }}" width="100%">
</a> </a>
{% endif %} {% endif %}
{% endif %} {% endif %}
@ -298,14 +298,14 @@
</div> </div>
</div> </div>
<script src="/assets/js/lozad.js?v=242"></script> <script src="{{ 'js/lozad.js' | asset }}"></script>
{% if v %} {% if v %}
<script src="/assets/js/post_toast2.js?v=243"></script> <script src="{{ 'js/post_toast2.js' | asset }}"></script>
<script src="/assets/js/formatting.js?v=240"></script> <script src="{{ 'js/formatting.js' | asset }}"></script>
{% endif %} {% endif %}
<script src="/assets/js/lite-youtube.js?v=240"></script> <script src="{{ 'js/lite-youtube.js' | asset }}"></script>
<script> <script>
MicroModal.init(); MicroModal.init();

View file

@ -1,4 +1,4 @@
<script src="/assets/js/delete_post_modal.js?v=240"></script> <script src="{{ 'js/delete_post_modal.js' | asset }}"></script>
<div class="modal fade" id="deletePostModal" tabindex="-1" role="dialog" aria-labelledby="deletePostModalTitle" aria-hidden="true"> <div class="modal fade" id="deletePostModal" tabindex="-1" role="dialog" aria-labelledby="deletePostModalTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document"> <div class="modal-dialog modal-dialog-centered" role="document">

View file

@ -1,6 +1,6 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block content %} {% block content %}
<script src="/assets/js/followers.js?v=241"></script> <script src="{{ 'js/followers.js' | asset }}"></script>
<pre> <pre>

View file

@ -1,6 +1,6 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block content %} {% block content %}
<script src="/assets/js/following.js?v=241"></script> <script src="{{ 'js/following.js' | asset }}"></script>
<pre> <pre>

View file

@ -26,4 +26,4 @@
</div> </div>
</div> </div>
<script src="/assets/js/gif_modal.js?v=245"></script> <script src="{{ 'js/gif_modal.js' | asset }}"></script>

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_ID}}/headericon.webp?v=1019"> <img alt="header icon" height=33 src="{{ ('images/'~SITE_ID~'/headericon.webp') | asset }}">
</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_ID}}/logo.webp?v=1013" width=70> <img class="ml-1" id="logo" alt="logo" src="{{ ('images/'~SITE_ID~'/logo.webp') | asset }}" width=70>
</a> </a>
{% endif %} {% endif %}
@ -222,7 +222,7 @@
</div> </div>
</nav> </nav>
<script src="/assets/js/header.js?v=267"></script> <script src="{{ 'js/header.js' | asset }}"></script>
{% if v and not err %} {% if v and not err %}
<div id="formkey" class="d-none">{{v.formkey}}</div> <div id="formkey" class="d-none">{{v.formkey}}</div>

View file

@ -27,7 +27,7 @@
script.onload = resolve; script.onload = resolve;
script.onerror = reject; script.onerror = reject;
script.async = true; script.async = true;
script.src = "/assets/js/fp.js?v=240"; script.src = "{{ 'js/fp.js' | asset }}";
document.head.appendChild(script); document.head.appendChild(script);
}) })
.then(() => FingerprintJS.load({token: '{{environ.get("FP")}}'})); .then(() => FingerprintJS.load({token: '{{environ.get("FP")}}'}));
@ -154,7 +154,7 @@
{% if PUSHER_ID != 'blahblahblah' and v %} {% if PUSHER_ID != 'blahblahblah' and v %}
<div class="d-none" id="strid">{{request.host}}{{v.id}}</div> <div class="d-none" id="strid">{{request.host}}{{v.id}}</div>
<div class="d-none" id="pusherid">{{PUSHER_ID}}</div> <div class="d-none" id="pusherid">{{PUSHER_ID}}</div>
<script src="/assets/js/pusher.js?v=242"></script> <script src="{{ 'js/pusher.js' | asset }}"></script>
<script> <script>
if (typeof Android != 'undefined') { if (typeof Android != 'undefined') {
Android.Subscribe('{{request.host}}{{v.id}}'); Android.Subscribe('{{request.host}}{{v.id}}');

View file

@ -6,15 +6,15 @@
{% block content %} {% block content %}
{% if v %} {% if v %}
<style>:root{--primary:#{{v.themecolor}}}</style> <style>:root{--primary:#{{v.themecolor}}}</style>
<link rel="stylesheet" href="/assets/css/main.css?v=254"> <link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
<link rel="stylesheet" href="/assets/css/{{v.theme}}.css?v=59"> <link rel="stylesheet" href="{{ ('css/'~v.theme~'.css') | asset }}">
{% if v.css %} {% if v.css %}
<link rel="stylesheet" href="/@{{v.username}}/css"> <link rel="stylesheet" href="/@{{v.username}}/css">
{% endif %} {% endif %}
{% else %} {% else %}
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style> <style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
<link rel="stylesheet" href="/assets/css/main.css?v=254"> <link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=58"> <link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
{% endif %} {% endif %}
<div class="row justify-content-around"> <div class="row justify-content-around">
@ -126,6 +126,6 @@
</div> </div>
</div> </div>
<script src="/assets/js/clipboard.js?v=240"></script> <script src="{{ 'js/clipboard.js' | asset }}"></script>
{% endblock %} {% endblock %}

View file

@ -6,7 +6,7 @@
<meta name="description" content="{{config('DESCRIPTION')}}"> <meta name="description" content="{{config('DESCRIPTION')}}">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';"> <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';">
<script src="/assets/js/bootstrap.js?v=245"></script> <script src="{{ 'js/bootstrap.js' | asset }}"></script>
<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">
@ -18,8 +18,8 @@
{% endblock %} {% endblock %}
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style> <style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
<link rel="stylesheet" href="/assets/css/main.css?v=254"> <link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=58"> <link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
</head> </head>
@ -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_ID}}/cover.webp?v=1014"></img> <img alt="cover" loading="lazy" class="splash-img" src="{{ ('images/'~SITE_ID~'/cover.webp') | asset }}"></img>
</div> </div>
</div> </div>

View file

@ -14,8 +14,8 @@
<title>2-Step Login - {{SITE_TITLE}}</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=254"> <link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=58"> <link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
</head> </head>
@ -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_ID}}/cover.webp?v=1014"></img> <img alt="cover" loading="lazy" class="splash-img" src="{{ ('images/'~SITE_ID~'/cover.webp') | asset }}"></img>
</div> </div>
</div> </div>

View file

@ -9,7 +9,7 @@
{% block content %} {% block content %}
<div class="text-center py-7 py-md-8"> <div class="text-center py-7 py-md-8">
<img loading="lazy" src="/assets/images/ruckus.webp" class="empty-state-img mb-3" alt="success state"> <img loading="lazy" src="{{ 'images/ruckus.webp' | asset }}" class="empty-state-img mb-3" alt="success state">
<div class="font-weight-bold text-muted mb-4">{{title}}</div> <div class="font-weight-bold text-muted mb-4">{{title}}</div>
<p class="text-muted">{{message}}</p> <p class="text-muted">{{message}}</p>

View file

@ -50,4 +50,4 @@
</div> </div>
</div> </div>
<script src="/assets/js/mobile_navigation_bar.js?v=240"></script> <script src="{{ 'js/mobile_navigation_bar.js' | asset }}"></script>

View file

@ -14,7 +14,7 @@
<td>{{loop.index}}</td> <td>{{loop.index}}</td>
<td><a style="color:#{{u.namecolor}}" href="/@{{u.username}}"><img loading="lazy" src="{{u.profile_url}}" class="pp20"><span {% if u.patron %}class="patron" style="background-color:#{{u.namecolor}}"{% endif %}>{{u.username}}</span></a></td> <td><a style="color:#{{u.namecolor}}" href="/@{{u.username}}"><img loading="lazy" src="{{u.profile_url}}" class="pp20"><span {% if u.patron %}class="patron" style="background-color:#{{u.namecolor}}"{% endif %}>{{u.username}}</span></a></td>
<td><img alt="2{{u.patron}}" loading="lazy" width=29.33 height=32 src="/assets/images/badges/2{{u.patron}}.webp?v=1016"></td> <td><img alt="2{{u.patron}}" loading="lazy" width=29.33 height=32 src="{{ ('images/badges/2'~u.patron~'.webp') | asset }}"></td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>

View file

@ -32,4 +32,4 @@
</div> </div>
</div> </div>
<script src="/assets/js/report_post_modal.js?v=241"></script> <script src="{{ 'js/report_post_modal.js' | asset }}"></script>

View file

@ -5,20 +5,20 @@
<meta name="description" content="{{config('DESCRIPTION')}}"> <meta name="description" content="{{config('DESCRIPTION')}}">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';"> <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';">
<script src="/assets/js/bootstrap.js?v=245"></script> <script src="{{ 'js/bootstrap.js' | asset }}"></script>
<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="author" content=""> <meta name="author" content="">
<link rel="icon" type="image/png" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"> <link rel="icon" type="image/png" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}">
<title>{% block pagetitle %}Settings - {{SITE_TITLE}}{% 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_TITLE}}"> <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_ID}}/site_preview.webp?v=1015"> <meta property="og:image" content="{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}">
<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}}">
@ -29,13 +29,13 @@
<meta name="twitter:title" content="{{SITE_TITLE}}"> <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_ID}}/site_preview.webp?v=1015"> <meta name="twitter:image" content="{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}">
<meta name="twitter:url" content="{{request.host}}"> <meta name="twitter:url" content="{{request.host}}">
<style>:root{--primary:#{{v.themecolor}}}</style> <style>:root{--primary:#{{v.themecolor}}}</style>
<link rel="stylesheet" href="/assets/css/main.css?v=254"> <link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
<link rel="stylesheet" href="/assets/css/{{v.theme}}.css?v=59"> <link rel="stylesheet" href="{{ ('css/'~v.theme~'.css') | asset }}">
{% if v.css and not request.path.startswith('/settings/css') %} {% if v.css and not request.path.startswith('/settings/css') %}
<link rel="stylesheet" href="/@{{v.username}}/css"> <link rel="stylesheet" href="/@{{v.username}}/css">
{% endif %} {% endif %}
@ -241,7 +241,7 @@
{% block onload %}{% endblock %} {% block onload %}{% endblock %}
<script src="/assets/js/clipboard.js?v=240"></script> <script src="{{ 'js/clipboard.js' | asset }}"></script>
</body> </body>

View file

@ -6,19 +6,19 @@
<meta name="description" content="{{config('DESCRIPTION')}}"> <meta name="description" content="{{config('DESCRIPTION')}}">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';"> <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';">
<script src="/assets/js/bootstrap.js?v=245"></script> <script src="{{ 'js/bootstrap.js' | asset }}"></script>
<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="author" content=""> <meta name="author" content="">
<meta name="thumbnail" content="/assets/images/{{SITE_ID}}/site_preview.webp?v=1015"> <meta name="thumbnail" content="{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}">
<link rel="icon" type="image/png" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"> <link rel="icon" type="image/png" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}">
<meta property="og:type" content="article"> <meta property="og:type" content="article">
<meta property="og:title" content="{{SITE_TITLE}}"> <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_ID}}/site_preview.webp?v=1015"> <meta property="og:image" content="{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}">
<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}}">
@ -29,7 +29,7 @@
<meta name="twitter:title" content="{{SITE_TITLE}}"> <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_ID}}/site_preview.webp?v=1015"> <meta name="twitter:image" content="{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}">
<meta name="twitter:url" content="{{SITE_FULL}}{{request.full_path}}"> <meta name="twitter:url" content="{{SITE_FULL}}{{request.full_path}}">
@ -39,12 +39,12 @@
{% if v %} {% if v %}
<style>:root{--primary:#{{v.themecolor}}}</style> <style>:root{--primary:#{{v.themecolor}}}</style>
<link rel="stylesheet" href="/assets/css/main.css?v=254"> <link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
<link rel="stylesheet" href="/assets/css/{{v.theme}}.css?v=59"> <link rel="stylesheet" href="{{ ('css/'~v.theme~'.css') | asset }}">
{% else %} {% else %}
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style> <style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
<link rel="stylesheet" href="/assets/css/main.css?v=254"> <link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=58"> <link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
{% endif %} {% endif %}
</head> </head>

View file

@ -4,7 +4,7 @@
{% block content %} {% block content %}
<script src="/assets/js/settings_blocks.js?v=241"></script> <script src="{{ 'js/settings_blocks.js' | asset }}"></script>
<div class="row"> <div class="row">

View file

@ -501,7 +501,7 @@
</div> </div>
<script src="/assets/js/settings_profile.js?v=251"></script> <script src="{{ 'js/settings_profile.js' | asset }}"></script>
{% include "gif_modal.html" %} {% include "gif_modal.html" %}

View file

@ -257,6 +257,6 @@
</div> </div>
</div> </div>
<script src="/assets/js/settings_security.js?v=241"></script> <script src="{{ 'js/settings_security.js' | asset }}"></script>
{% endblock %} {% endblock %}

View file

@ -8,7 +8,7 @@
{% block Banner %} {% block Banner %}
<header class="container pb-1 text-center"> <header class="container pb-1 text-center">
<img alt="shop banner" src="/assets/images/shop.webp" width="50%"> <img alt="shop banner" src="{{ 'images/shop.webp' | asset }}" width="50%">
<h3 class="mt-4">Stir drama. Earn coins.</h5> <h3 class="mt-4">Stir drama. Earn coins.</h5>
<h5 class="mt-4">Total sales: {{sales}} coins</h5> <h5 class="mt-4">Total sales: {{sales}} coins</h5>
<h5 class="mt-4">Coins spent by you: {{v.coins_spent}} coins</h5> <h5 class="mt-4">Coins spent by you: {{v.coins_spent}} coins</h5>

View file

@ -5,7 +5,7 @@
<meta name="description" content="{{config('DESCRIPTION')}}"> <meta name="description" content="{{config('DESCRIPTION')}}">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';"> <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';">
<script src="/assets/js/bootstrap.js?v=245"></script> <script src="{{ 'js/bootstrap.js' | asset }}"></script>
<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">
@ -14,7 +14,7 @@
<meta property="og:type" content="article"> <meta property="og:type" content="article">
<meta property="og:title" content="{{SITE_TITLE}}"> <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_ID}}/site_preview.webp?v=1015"> <meta property="og:image" content="{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}">
<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}}">
@ -25,14 +25,14 @@
<meta name="twitter:title" content="{{SITE_TITLE}}"> <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_ID}}/site_preview.webp?v=1015"> <meta name="twitter:image" content="{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}">
<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_TITLE}}{% else %}Sign up - {{SITE_TITLE}}{% 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=254"> <link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=58"> <link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
</head> </head>
@ -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_ID}}/cover.webp?v=1014"></img> <img alt="cover" loading="lazy" class="splash-img" src="{{ ('images/'~SITE_ID~'/cover.webp') | asset }}"></img>
</div> </div>
</div> </div>
@ -148,10 +148,10 @@
</div> </div>
</div> </div>
<script src="/assets/js/signup.js?v=240"></script> <script src="{{ 'js/signup.js' | asset }}"></script>
{% if hcaptcha %} {% if hcaptcha %}
<script src="/assets/js/hcaptcha.js?v=240"></script> <script src="{{ 'js/hcaptcha.js' | asset }}"></script>
{% endif %} {% endif %}
</body> </body>

View file

@ -6,7 +6,7 @@
<meta name="description" content="{{config('DESCRIPTION')}}"> <meta name="description" content="{{config('DESCRIPTION')}}">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';"> <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';">
<script src="/assets/js/bootstrap.js?v=245"></script> <script src="{{ 'js/bootstrap.js' | asset }}"></script>
<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">
@ -15,7 +15,7 @@
<meta property="og:type" content="article"> <meta property="og:type" content="article">
<meta property="og:title" content="{{SITE_TITLE}}"> <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_ID}}/site_preview.webp?v=1015"> <meta property="og:image" content="{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}">
<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,14 +26,14 @@
<meta name="twitter:title" content="{{SITE_TITLE}}"> <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_ID}}/site_preview.webp?v=1015"> <meta name="twitter:image" content="{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}">
<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_TITLE}}{% else %}{{SITE_TITLE}}{% 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=254"> <link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=58"> <link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
</head> </head>
@ -84,7 +84,7 @@
<div class="splash-overlay"></div> <div class="splash-overlay"></div>
<img alt="cover" loading="lazy" class="splash-img" src="/assets/images/{{SITE_ID}}/cover.webp?v=1014"></img> <img alt="cover" loading="lazy" class="splash-img" src="{{ ('images/'~SITE_ID~'/cover.webp') | asset }}"></img>
</div> </div>
</div> </div>

View file

@ -1,6 +1,6 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block content %} {% block content %}
<script src="/assets/js/sort_table.js?v=242"></script> <script src="{{ 'js/sort_table.js' | asset }}"></script>
<pre> <pre>

View file

@ -43,7 +43,7 @@
<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_TITLE}}"> <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_ID}}/assets/images/{{SITE_ID}}/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_FULL}}{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}{% 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 %}
@ -55,7 +55,7 @@
<meta name="twitter:title" content="{{'@'+comment_info.author_name}} comments on {{p.plaintitle(v)}} - {{SITE_TITLE}}"> <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_ID}}/assets/images/{{SITE_ID}}/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_FULL}}{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}{% endif %}">
<meta name="twitter:url" content="{{p.permalink}}"> <meta name="twitter:url" content="{{p.permalink}}">
{% else %} {% else %}
@ -68,7 +68,7 @@
<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_TITLE}}"> <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_ID}}/assets/images/{{SITE_ID}}/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_FULL}}{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}{% 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 %}
@ -80,7 +80,7 @@
<meta name="twitter:title" content="{{p.plaintitle(v)}} - {{SITE_TITLE}}"> <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_ID}}/assets/images/{{SITE_ID}}/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_FULL}}{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}{% endif %}">
<meta name="twitter:url" content="{{p.permalink}}"> <meta name="twitter:url" content="{{p.permalink}}">
{% endif %} {% endif %}
@ -246,9 +246,9 @@
{% if p.domain == "twitter.com" %} {% if p.domain == "twitter.com" %}
{{p.embed_url | safe}} {{p.embed_url | safe}}
{% if v and v.theme.split("_")[0] in ["light", "coffee", "4chan"] %} {% if v and v.theme.split("_")[0] in ["light", "coffee", "4chan"] %}
<script src="/assets/js/twitterlight.js?v=243"></script> <script src="{{ 'js/twitterlight.js' | asset }}"></script>
{% else %} {% else %}
<script src="/assets/js/twitter.js?v=243"></script> <script src="{{ 'js/twitter.js' | asset }}"></script>
{% endif %} {% endif %}
{% elif p.domain in ['youtu.be','youtube.com'] and p.embed_url and p.embed_url.startswith('<lite-youtube') %} {% elif p.domain in ['youtu.be','youtube.com'] and p.embed_url and p.embed_url.startswith('<lite-youtube') %}
{{p.embed_url | safe}} {{p.embed_url | safe}}
@ -595,28 +595,28 @@
{% endif %} {% endif %}
{% if v and (v.id == p.author_id or v.admin_level > 1 and v.admin_level > 2) %} {% if v and (v.id == p.author_id or v.admin_level > 1 and v.admin_level > 2) %}
<script src="/assets/js/togglePostEdit.js?v=240"></script> <script src="{{ 'js/togglePostEdit.js' | asset }}"></script>
{% endif %} {% endif %}
{% if not v or v.highlightcomments %} {% if not v or v.highlightcomments %}
<script src="/assets/js/new_comments_count.js?v=242"></script> <script src="{{ 'js/new_comments_count.js' | asset }}"></script>
{% endif %} {% endif %}
<script src="/assets/js/clipboard.js?v=240"></script> <script src="{{ 'js/clipboard.js' | asset }}"></script>
{% if not p.replies %} {% if not p.replies %}
{% include "comments.html" %} {% include "comments.html" %}
{% endif %} {% endif %}
{% if p.award_count("shit") %} {% if p.award_count("shit") %}
<script src="/assets/js/critters.js?v=240"></script> <script src="{{ 'js/critters.js' | asset }}"></script>
<script src="/assets/js/bugs.js?v=241"></script> <script src="{{ 'js/bugs.js' | asset }}"></script>
{% endif %} {% endif %}
{% if p.award_count("fireflies") %} {% if p.award_count("fireflies") %}
<script src="/assets/js/critters.js?v=240"></script> <script src="{{ 'js/critters.js' | asset }}"></script>
<script src="/assets/js/fireflies.js?v=241"></script> <script src="{{ 'js/fireflies.js' | asset }}"></script>
{% endif %} {% endif %}

View file

@ -1,11 +1,11 @@
{% set cc='COUNTRY CLUB' %} {% set cc='COUNTRY CLUB' %}
{% if not v or v.highlightcomments %} {% if not v or v.highlightcomments %}
<script src="/assets/js/new_comments_count.js?v=242"></script> <script src="{{ 'js/new_comments_count.js' | asset }}"></script>
{% endif %} {% endif %}
{% if v and v.admin_level > 2 %} {% if v and v.admin_level > 2 %}
<script src="/assets/js/filter_actions.js?v=8"></script> <script src="{{ 'js/filter_actions.js' | asset }}"></script>
{% endif %} {% endif %}
<div style="display:none" id="popover"> <div style="display:none" id="popover">
@ -417,6 +417,6 @@
{% endif %} {% endif %}
{% include "expanded_image_modal.html" %} {% include "expanded_image_modal.html" %}
<script src="/assets/js/clipboard.js?v=240"></script> <script src="{{ 'js/clipboard.js' | asset }}"></script>
<script src="/assets/js/comments+submission_listing.js?v=259"></script> <script src="{{ 'js/comments+submission_listing.js' | asset }}"></script>
<script src="/assets/js/submission_listing.js?v=240"></script> <script src="{{ 'js/submission_listing.js' | asset }}"></script>

View file

@ -4,13 +4,13 @@
<meta name="description" content="{{config('DESCRIPTION')}}"> <meta name="description" content="{{config('DESCRIPTION')}}">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';"> <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; object-src 'none';">
<script src="/assets/js/bootstrap.js?v=245"></script> <script src="{{ 'js/bootstrap.js' | asset }}"></script>
<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="author" content=""> <meta name="author" content="">
<link rel="icon" type="image/png" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"> <link rel="icon" type="image/png" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}">
{% block title %} {% block title %}
<title>Create a post - {{SITE_TITLE}}</title> <title>Create a post - {{SITE_TITLE}}</title>
@ -20,15 +20,15 @@
{% block stylesheets %} {% block stylesheets %}
{% if v %} {% if v %}
<style>:root{--primary:#{{v.themecolor}}}</style> <style>:root{--primary:#{{v.themecolor}}}</style>
<link rel="stylesheet" href="/assets/css/main.css?v=254"> <link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
<link rel="stylesheet" href="/assets/css/{{v.theme}}.css?v=49"> <link rel="stylesheet" href="{{ ('css/'~v.theme~'.css') | asset }}">
{% if v.css %} {% if v.css %}
<link rel="stylesheet" href="/@{{v.username}}/css"> <link rel="stylesheet" href="/@{{v.username}}/css">
{% endif %} {% endif %}
{% else %} {% else %}
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style> <style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
<link rel="stylesheet" href="/assets/css/main.css?v=254"> <link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=49"> <link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
{% endif %} {% endif %}
{% endblock %} {% endblock %}
@ -169,11 +169,11 @@
</script> </script>
{% endif %} {% endif %}
<script src="/assets/js/vendor/purify.min.js?v=251"></script> <script src="{{ 'js/vendor/purify.min.js' | asset }}"></script>
<script src="/assets/js/vendor/marked.min.js?v=251"></script> <script src="{{ 'js/vendor/marked.min.js' | asset }}"></script>
<script src="/assets/js/marked.custom.js?v=252"></script> <script src="{{ 'js/marked.custom.js' | asset }}"></script>
<script src="/assets/js/formatting.js?v=240"></script> <script src="{{ 'js/formatting.js' | asset }}"></script>
<script src="/assets/js/submit.js?v=255"></script> <script src="{{ 'js/submit.js' | asset }}"></script>
{% include "gif_modal.html" %} {% include "gif_modal.html" %}

View file

@ -299,9 +299,9 @@
<div> <div>
{% for b in u.badges %} {% for b in u.badges %}
{% if b.url %} {% if b.url %}
<a rel="nofollow noopener noreferrer" href="{{b.url}}"><img alt="{{b.name}}" width=55 height=60 loading="lazy" src="{{b.path}}?v=1016" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{b.text}}"></a> <a rel="nofollow noopener noreferrer" href="{{b.url}}"><img alt="{{b.name}}" width=55 height=60 loading="lazy" src="{{b.path}}" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{b.text}}"></a>
{% else %} {% else %}
<img alt="{{b.name}}" width=55 height=60 loading="lazy" src="{{b.path}}?v=1016" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{b.text}}"> <img alt="{{b.name}}" width=55 height=60 loading="lazy" src="{{b.path}}" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{b.text}}">
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</div> </div>
@ -420,9 +420,9 @@
<div class="mb-3"> <div class="mb-3">
{% for b in u.badges %} {% for b in u.badges %}
{% if b.url %} {% if b.url %}
<a rel="nofollow noopener noreferrer" href="{{b.url}}"><img alt="{{b.name}}" width=29.33 height=32 loading="lazy" src="{{b.path}}?v=1016" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{b.text}}"></a> <a rel="nofollow noopener noreferrer" href="{{b.url}}"><img alt="{{b.name}}" width=29.33 height=32 loading="lazy" src="{{b.path}}" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{b.text}}"></a>
{% else %} {% else %}
<img alt="{{b.name}}" width=29.33 height=32 loading="lazy" src="{{b.path}}?v=1016" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{b.text}}"> <img alt="{{b.name}}" width=29.33 height=32 loading="lazy" src="{{b.path}}" data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{b.text}}">
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</div> </div>
@ -667,11 +667,11 @@
{% if v %} {% if v %}
<div id='tax' class="d-none">{% if v.patron or u.patron or v.alts_patron or u.alts_patron %}0{% else %}0.03{% endif %}</div> <div id='tax' class="d-none">{% if v.patron or u.patron or v.alts_patron or u.alts_patron %}0{% else %}0.03{% endif %}</div>
<script src="/assets/js/userpage_v.js?v=244"></script> <script src="{{ 'js/userpage_v.js' | asset }}"></script>
<div id="username" class="d-none">{{u.username}}</div> <div id="username" class="d-none">{{u.username}}</div>
{% endif %} {% endif %}
<script src="/assets/js/userpage.js?v=241"></script> <script src="{{ 'js/userpage.js' | asset }}"></script>
{% endblock %} {% endblock %}
@ -697,9 +697,9 @@
</nav> </nav>
{% endif %} {% endif %}
<script src="/assets/js/vendor/purify.min.js?v=251"></script> <script src="{{ 'js/vendor/purify.min.js' | asset }}"></script>
<script src="/assets/js/vendor/marked.min.js?v=252"></script> <script src="{{ 'js/vendor/marked.min.js' | asset }}"></script>
<script src="/assets/js/marked.custom.js?v=251"></script> <script src="{{ 'js/marked.custom.js' | asset }}"></script>
{% endblock %} {% endblock %}

View file

@ -114,9 +114,9 @@
{% if v %} {% if v %}
<div id='tax' class="d-none">{% if v.patron or u.patron %}0{% else %}0.03{% endif %}</div> <div id='tax' class="d-none">{% if v.patron or u.patron %}0{% else %}0.03{% endif %}</div>
<script src="/assets/js/userpage_v.js?v=244"></script> <script src="{{ 'js/userpage_v.js' | asset }}"></script>
<div id="username" class="d-none">{{u.username}}</div> <div id="username" class="d-none">{{u.username}}</div>
{% endif %} {% endif %}
<script src="/assets/js/userpage.js?v=241"></script> <script src="{{ 'js/userpage.js' | asset }}"></script>
{% endblock %} {% endblock %}

View file

@ -32,9 +32,9 @@
{% if v %} {% if v %}
<div id='tax' class="d-none">{% if v.patron or u.patron %}0{% else %}0.03{% endif %}</div> <div id='tax' class="d-none">{% if v.patron or u.patron %}0{% else %}0.03{% endif %}</div>
<script src="/assets/js/userpage_v.js?v=244"></script> <script src="{{ 'js/userpage_v.js' | asset }}"></script>
<div id="username" class="d-none">{{u.username}}</div> <div id="username" class="d-none">{{u.username}}</div>
{% endif %} {% endif %}
<script src="/assets/js/userpage.js?v=241"></script> <script src="{{ 'js/userpage.js' | asset }}"></script>
{% endblock %} {% endblock %}