Replace nearly all ?v= cachebusts with assetcache.

Using the new assetcache module, we replace (almost) all instances
of `?v=` cachebusting query parameters in Python and in Jinja templates.
The primary exceptions were: user site backgrounds, and some
infrequently changed graphics referenced literally from .js files.
This commit is contained in:
TLSM 2022-08-30 17:02:46 -04:00
parent 6f3b995455
commit a35697e55e
No known key found for this signature in database
GPG key ID: E745A82778055C7E
44 changed files with 203 additions and 191 deletions

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

@ -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': {
@ -704,7 +705,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 %}