Merge pull request #227 from TLSM/rework-assets
Rework assets to use automatic cachebusting (#127).
This commit is contained in:
commit
9657adbebf
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 |
|
@ -4,6 +4,7 @@ from files.__main__ import Base, app
|
|||
from os import environ
|
||||
from files.helpers.lazy import lazy
|
||||
from files.helpers.const import *
|
||||
from files.helpers.assetcache import assetcache_path
|
||||
from datetime import datetime
|
||||
from json import loads
|
||||
|
||||
|
@ -61,7 +62,7 @@ class Badge(Base):
|
|||
@property
|
||||
@lazy
|
||||
def path(self):
|
||||
return f"/assets/images/badges/{self.badge_id}.webp"
|
||||
return assetcache_path(f'images/badges/{self.badge_id}.webp')
|
||||
|
||||
@property
|
||||
@lazy
|
||||
|
|
|
@ -9,6 +9,7 @@ from sqlalchemy.orm import relationship, deferred
|
|||
from files.__main__ import Base
|
||||
from files.helpers.const import *
|
||||
from files.helpers.lazy import lazy
|
||||
from files.helpers.assetcache import assetcache_path
|
||||
from .flags import Flag
|
||||
from .comment import Comment
|
||||
from flask import g
|
||||
|
@ -266,13 +267,18 @@ class Submission(Base):
|
|||
@property
|
||||
@lazy
|
||||
def thumb_url(self):
|
||||
if self.over_18: return f"{SITE_FULL}/assets/images/nsfw.webp?v=1"
|
||||
elif not self.url: return f"{SITE_FULL}/assets/images/{SITE_ID}/default_text.webp?v=1"
|
||||
if self.over_18:
|
||||
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:
|
||||
if self.thumburl.startswith('/'): return SITE_FULL + self.thumburl
|
||||
if self.thumburl.startswith('/'):
|
||||
return SITE_FULL + 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"
|
||||
else: return f"{SITE_FULL}/assets/images/default_thumb_link.webp?v=1"
|
||||
elif self.is_youtube or self.is_video:
|
||||
return SITE_FULL + assetcache_path('images/default_thumb_yt.webp')
|
||||
else:
|
||||
return SITE_FULL + assetcache_path('images/default_thumb_link.webp')
|
||||
|
||||
@property
|
||||
@lazy
|
||||
|
|
|
@ -19,6 +19,7 @@ from .exiles import *
|
|||
from .sub_block import *
|
||||
from files.__main__ import app, Base, cache
|
||||
from files.helpers.security import *
|
||||
from files.helpers.assetcache import assetcache_path
|
||||
import random
|
||||
from datetime import datetime
|
||||
from os import environ, remove, path
|
||||
|
@ -528,16 +529,18 @@ class User(Base):
|
|||
@property
|
||||
@lazy
|
||||
def banner_url(self):
|
||||
if self.bannerurl: return self.bannerurl
|
||||
else: return f"/assets/images/{SITE_ID}/site_preview.webp?v=1015"
|
||||
if self.bannerurl:
|
||||
return self.bannerurl
|
||||
return assetcache_path(f'images/{SITE_ID}/site_preview.webp')
|
||||
|
||||
@property
|
||||
@lazy
|
||||
def profile_url(self):
|
||||
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 f"{SITE_FULL}/assets/images/default-profile-pic.webp?v=1008"
|
||||
return assetcache_path('images/default-profile-pic.webp')
|
||||
|
||||
@lazy
|
||||
def json_popover(self, v):
|
||||
|
|
30
files/helpers/assetcache.py
Normal file
30
files/helpers/assetcache.py
Normal 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)
|
|
@ -3,6 +3,7 @@ from .get import *
|
|||
from os import listdir, environ
|
||||
from .const import *
|
||||
import time
|
||||
from files.helpers.assetcache import assetcache_path
|
||||
|
||||
@app.template_filter("post_embed")
|
||||
def post_embed(id, v):
|
||||
|
@ -46,6 +47,9 @@ def timestamp(timestamp):
|
|||
years = int(months / 12)
|
||||
return f"{years}yr ago"
|
||||
|
||||
@app.template_filter("asset")
|
||||
def template_asset(asset_path):
|
||||
return assetcache_path(asset_path)
|
||||
|
||||
@app.context_processor
|
||||
def inject_constants():
|
||||
|
|
|
@ -11,6 +11,7 @@ from pusher_push_notifications import PushNotifications
|
|||
from flask import *
|
||||
from files.__main__ import app, limiter
|
||||
from files.helpers.sanitize import filter_emojis_only
|
||||
from files.helpers.assetcache import assetcache_path
|
||||
import requests
|
||||
from shutil import copyfile
|
||||
from json import loads
|
||||
|
@ -38,7 +39,7 @@ def pusher_thread(interests, c, username):
|
|||
'title': f'New reply by @{username}',
|
||||
'body': notifbody,
|
||||
'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': {
|
||||
|
|
|
@ -6,6 +6,7 @@ from files.classes.views import ViewerRelationship
|
|||
from files.helpers.alerts import *
|
||||
from files.helpers.sanitize import *
|
||||
from files.helpers.const import *
|
||||
from files.helpers.assetcache import assetcache_path
|
||||
from files.mail import *
|
||||
from flask import *
|
||||
from files.__main__ import app, limiter, db_session
|
||||
|
@ -26,7 +27,7 @@ def pusher_thread2(interests, notifbody, username):
|
|||
'title': f'New message from @{username}',
|
||||
'body': notifbody,
|
||||
'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': {
|
||||
|
@ -707,7 +708,7 @@ def messagereply(v):
|
|||
'title': f'New message from @{v.username}',
|
||||
'body': notifbody,
|
||||
'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': {
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
<label class="custom-control-label" for="{{badge.id}}"></label>
|
||||
</div>
|
||||
</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.description}}</td>
|
||||
</tr>
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
<label class="custom-control-label" for="{{badge.id}}"></label>
|
||||
</div>
|
||||
</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.description}}</td>
|
||||
</tr>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
{% 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>
|
||||
<h5 style="font-weight:bold;">Admins</h5>
|
||||
|
|
|
@ -15,15 +15,15 @@
|
|||
|
||||
{% if v %}
|
||||
<style>:root{--primary:#{{v.themecolor}}}</style>
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=254">
|
||||
<link rel="stylesheet" href="/assets/css/{{v.theme}}.css?v=59">
|
||||
<link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
|
||||
<link rel="stylesheet" href="{{ ('css/'~v.theme~'.css') | asset }}">
|
||||
{% if v.css %}
|
||||
<link rel="stylesheet" href="/@{{v.username}}/css">
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=254">
|
||||
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=58">
|
||||
<link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
|
||||
<link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
|
||||
{% endif %}
|
||||
|
||||
</head>
|
||||
|
@ -94,7 +94,7 @@
|
|||
|
||||
<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>
|
||||
|
|
|
@ -44,4 +44,4 @@
|
|||
</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>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "default.html" %}
|
||||
{% block content %}
|
||||
<script src="/assets/js/sort_table.js?v=242"></script>
|
||||
<script src="{{ 'js/sort_table.js' | asset }}"></script>
|
||||
<pre>
|
||||
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
|||
<tr>
|
||||
<td>{{loop.index}}</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>
|
||||
{%- set ct = counts[badge.id] if badge.id in counts else (0, 0) %}
|
||||
<td class="badges-rarity-qty">{{ ct[0] }}</td>
|
||||
|
|
|
@ -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-dialog modal-dialog-centered" role="document">
|
||||
|
|
|
@ -104,6 +104,6 @@
|
|||
</nav>
|
||||
{% endif %}
|
||||
|
||||
<script src="/assets/js/post_toast2.js?v=243"></script>
|
||||
<script src="{{ 'js/post_toast2.js' | asset }}"></script>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
|
||||
<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>
|
||||
|
||||
<style>:root{--primary:#{{v.themecolor}}}</style>
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=254">
|
||||
<link rel="stylesheet" href="/assets/css/{{v.theme}}.css?v=59">
|
||||
<link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
|
||||
<link rel="stylesheet" href="{{ ('css/'~v.theme~'.css') | asset }}">
|
||||
{% if v.css %}
|
||||
<link rel="stylesheet" href="/@{{v.username}}/css">
|
||||
{% endif %}
|
||||
|
@ -101,7 +101,7 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<script src="/assets/js/bootstrap.js?v=249"></script>
|
||||
<script src="{{ 'js/bootstrap.js' | asset }}"></script>
|
||||
|
||||
{% include "header.html" %}
|
||||
|
||||
|
@ -189,7 +189,7 @@
|
|||
|
||||
<script src="/chat.js?v=16"></script>
|
||||
|
||||
<script src="/assets/js/lozad.js?v=242"></script>
|
||||
<script src="/assets/js/lite-youtube.js?v=240"></script>
|
||||
<script src="{{ 'js/lozad.js' | asset }}"></script>
|
||||
<script src="{{ 'js/lite-youtube.js' | asset }}"></script>
|
||||
|
||||
</body>
|
||||
|
|
|
@ -225,7 +225,7 @@
|
|||
{% endif %}
|
||||
|
||||
{% 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 %}
|
||||
<em>A Mimic Ate {{c.treasure_amount.replace('-', '')}} Coins!</em>
|
||||
{% else %}
|
||||
|
@ -839,26 +839,26 @@
|
|||
{% endif %}
|
||||
|
||||
{% if v %}
|
||||
<script src="/assets/js/vendor/purify.min.js?v=251"></script>
|
||||
<script src="/assets/js/vendor/marked.min.js?v=251"></script>
|
||||
<script src="/assets/js/marked.custom.js?v=252"></script>
|
||||
<script src="/assets/js/comments_v.js?v=268"></script>
|
||||
<script src="/assets/js/award_modal.js?v=1"></script>
|
||||
<script src="{{ 'js/vendor/purify.min.js' | asset }}"></script>
|
||||
<script src="{{ 'js/vendor/marked.min.js' | asset }}"></script>
|
||||
<script src="{{ 'js/marked.custom.js' | asset }}"></script>
|
||||
<script src="{{ 'js/comments_v.js' | asset }}"></script>
|
||||
<script src="{{ 'js/award_modal.js' | asset }}"></script>
|
||||
{% endif %}
|
||||
|
||||
<script src="/assets/js/clipboard.js?v=250"></script>
|
||||
<script src="{{ 'js/clipboard.js' | asset }}"></script>
|
||||
|
||||
{% 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 %}
|
||||
<script src="/assets/js/filter_actions.js?v=8"></script>
|
||||
<script src="{{ 'js/filter_actions.js' | asset }}"></script>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% include "expanded_image_modal.html" %}
|
||||
|
||||
<script src="/assets/js/comments+submission_listing.js?v=259"></script>
|
||||
<script src="/assets/js/comments.js?v=256"></script>
|
||||
<script src="{{ 'js/comments+submission_listing.js' | asset }}"></script>
|
||||
<script src="{{ 'js/comments.js' | asset }}"></script>
|
||||
|
||||
<script>
|
||||
{% if p and (not v or v.highlightcomments) %}
|
||||
|
|
|
@ -4,23 +4,23 @@
|
|||
<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';">
|
||||
|
||||
<script src="/assets/js/bootstrap.js?v=245"></script>
|
||||
<script src="/assets/js/micromodal.js?v=245"></script>
|
||||
<script src="{{ 'js/bootstrap.js' | asset }}"></script>
|
||||
<script src="{{ 'js/micromodal.js' | asset }}"></script>
|
||||
{% if v %}
|
||||
<style>:root{--primary:#{{v.themecolor}}}</style>
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=254">
|
||||
<link rel="stylesheet" href="/assets/css/{{v.theme}}.css?v=59">
|
||||
<link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
|
||||
<link rel="stylesheet" href="{{ ('css/'~v.theme~'.css') | asset }}">
|
||||
{% if v.css %}
|
||||
<link rel="stylesheet" href="/@{{v.username}}/css">
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=254">
|
||||
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=58">
|
||||
<link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
|
||||
<link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
|
||||
{% endif %}
|
||||
|
||||
{% if request.path == '/catalog' %}
|
||||
<link rel="stylesheet" href="/assets/css/catalog.css?v=1">
|
||||
<link rel="stylesheet" href="{{ 'css/catalog.css' | asset }}">
|
||||
{% endif %}
|
||||
|
||||
{% if sub and sub.css and not request.path.endswith('settings') %}
|
||||
|
@ -38,16 +38,16 @@
|
|||
<meta charset="utf-8">
|
||||
<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 %}
|
||||
<title>{{SITE_TITLE}}</title>
|
||||
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:title" content="{{SITE_TITLE}}">
|
||||
<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:description" name="description" content="{{config('DESCRIPTION')}}">
|
||||
<meta property="og:author" name="author" content="{{SITE_FULL}}">
|
||||
|
@ -58,7 +58,7 @@
|
|||
<meta name="twitter:title" content="{{SITE_TITLE}}">
|
||||
<meta name="twitter:creator" content="{{SITE_FULL}}">
|
||||
<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}}">
|
||||
{% endblock %}
|
||||
|
||||
|
@ -67,14 +67,14 @@
|
|||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015">
|
||||
<link rel="manifest" href="/assets/manifest_{{SITE_ID}}.json?v=1">
|
||||
<link rel="mask-icon" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015">
|
||||
<link rel="shortcut icon" 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="{{ ('manifest_'~SITE_ID~'.json') | asset }}">
|
||||
<link rel="mask-icon" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}">
|
||||
<link rel="shortcut icon" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}">
|
||||
<meta name="apple-mobile-web-app-title" content="{{SITE_TITLE}}">
|
||||
<meta name="application-name" content="{{SITE_TITLE}}">
|
||||
<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')}}">
|
||||
|
||||
|
||||
|
@ -82,127 +82,127 @@
|
|||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="320x480"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="640x960"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-icon"
|
||||
sizes="640x1136"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-icon"
|
||||
sizes="750x1334"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="768x1004"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="768x1024"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="828x1792"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="1024x748"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="1024x768"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="1125x2436"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="1242x2208"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="1242x2688"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="1334x750"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="1536x2008"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="1536x2048"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="1668x2224"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="1792x828"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="2048x1496"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="2048x1536"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="2048x2732"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="2208x1242"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="2224x1668"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="2436x1125"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="2668x1242"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
sizes="2737x2048"
|
||||
href="/assets/images/{{SITE_ID}}/icon.webp?v=1015"
|
||||
href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}"
|
||||
>
|
||||
|
||||
{% 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">
|
||||
{% else %}
|
||||
<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>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
@ -298,14 +298,14 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/lozad.js?v=242"></script>
|
||||
<script src="{{ 'js/lozad.js' | asset }}"></script>
|
||||
|
||||
{% if v %}
|
||||
<script src="/assets/js/post_toast2.js?v=243"></script>
|
||||
<script src="/assets/js/formatting.js?v=240"></script>
|
||||
<script src="{{ 'js/post_toast2.js' | asset }}"></script>
|
||||
<script src="{{ 'js/formatting.js' | asset }}"></script>
|
||||
{% endif %}
|
||||
|
||||
<script src="/assets/js/lite-youtube.js?v=240"></script>
|
||||
<script src="{{ 'js/lite-youtube.js' | asset }}"></script>
|
||||
|
||||
<script>
|
||||
MicroModal.init();
|
||||
|
|
|
@ -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-dialog modal-dialog-centered" role="document">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "default.html" %}
|
||||
{% block content %}
|
||||
<script src="/assets/js/followers.js?v=241"></script>
|
||||
<script src="{{ 'js/followers.js' | asset }}"></script>
|
||||
<pre>
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "default.html" %}
|
||||
{% block content %}
|
||||
<script src="/assets/js/following.js?v=241"></script>
|
||||
<script src="{{ 'js/following.js' | asset }}"></script>
|
||||
<pre>
|
||||
|
||||
|
||||
|
|
|
@ -26,4 +26,4 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/gif_modal.js?v=245"></script>
|
||||
<script src="{{ 'js/gif_modal.js' | asset }}"></script>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<div class="navbar navbar-expand-md navbar-light" id="navbar">
|
||||
<div class="container-fluid" style="padding:0;">
|
||||
<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>
|
||||
|
||||
{% if sub %}
|
||||
|
@ -31,7 +31,7 @@
|
|||
{% endif %}
|
||||
</style>
|
||||
<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>
|
||||
{% endif %}
|
||||
|
||||
|
@ -222,7 +222,7 @@
|
|||
</div>
|
||||
</nav>
|
||||
|
||||
<script src="/assets/js/header.js?v=267"></script>
|
||||
<script src="{{ 'js/header.js' | asset }}"></script>
|
||||
|
||||
{% if v and not err %}
|
||||
<div id="formkey" class="d-none">{{v.formkey}}</div>
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
script.onload = resolve;
|
||||
script.onerror = reject;
|
||||
script.async = true;
|
||||
script.src = "/assets/js/fp.js?v=240";
|
||||
script.src = "{{ 'js/fp.js' | asset }}";
|
||||
document.head.appendChild(script);
|
||||
})
|
||||
.then(() => FingerprintJS.load({token: '{{environ.get("FP")}}'}));
|
||||
|
@ -154,7 +154,7 @@
|
|||
{% if PUSHER_ID != 'blahblahblah' and v %}
|
||||
<div class="d-none" id="strid">{{request.host}}{{v.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>
|
||||
if (typeof Android != 'undefined') {
|
||||
Android.Subscribe('{{request.host}}{{v.id}}');
|
||||
|
|
|
@ -6,15 +6,15 @@
|
|||
{% block content %}
|
||||
{% if v %}
|
||||
<style>:root{--primary:#{{v.themecolor}}}</style>
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=254">
|
||||
<link rel="stylesheet" href="/assets/css/{{v.theme}}.css?v=59">
|
||||
<link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
|
||||
<link rel="stylesheet" href="{{ ('css/'~v.theme~'.css') | asset }}">
|
||||
{% if v.css %}
|
||||
<link rel="stylesheet" href="/@{{v.username}}/css">
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=254">
|
||||
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=58">
|
||||
<link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
|
||||
<link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
|
||||
{% endif %}
|
||||
|
||||
<div class="row justify-content-around">
|
||||
|
@ -126,6 +126,6 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/clipboard.js?v=240"></script>
|
||||
<script src="{{ 'js/clipboard.js' | asset }}"></script>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<meta name="description" content="{{config('DESCRIPTION')}}">
|
||||
<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 name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
@ -18,8 +18,8 @@
|
|||
{% endblock %}
|
||||
|
||||
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=254">
|
||||
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=58">
|
||||
<link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
|
||||
<link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
|
||||
|
||||
</head>
|
||||
|
||||
|
@ -109,7 +109,7 @@
|
|||
|
||||
<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>
|
||||
|
|
|
@ -14,8 +14,8 @@
|
|||
<title>2-Step Login - {{SITE_TITLE}}</title>
|
||||
|
||||
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=254">
|
||||
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=58">
|
||||
<link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
|
||||
<link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
|
||||
|
||||
</head>
|
||||
|
||||
|
@ -93,7 +93,7 @@
|
|||
|
||||
<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>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
{% block content %}
|
||||
<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>
|
||||
<p class="text-muted">{{message}}</p>
|
||||
|
||||
|
|
|
@ -50,4 +50,4 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/mobile_navigation_bar.js?v=240"></script>
|
||||
<script src="{{ 'js/mobile_navigation_bar.js' | asset }}"></script>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<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><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>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
|
|
@ -32,4 +32,4 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/report_post_modal.js?v=241"></script>
|
||||
<script src="{{ 'js/report_post_modal.js' | asset }}"></script>
|
||||
|
|
|
@ -5,20 +5,20 @@
|
|||
<meta name="description" content="{{config('DESCRIPTION')}}">
|
||||
<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 name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<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>
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:title" content="{{SITE_TITLE}}">
|
||||
<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:description" name="description" content="{{config('DESCRIPTION')}}">
|
||||
<meta property="og:author" name="author" content="{{SITE_FULL}}">
|
||||
|
@ -29,13 +29,13 @@
|
|||
<meta name="twitter:title" content="{{SITE_TITLE}}">
|
||||
<meta name="twitter:creator" content="{{SITE_FULL}}">
|
||||
<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}}">
|
||||
|
||||
|
||||
<style>:root{--primary:#{{v.themecolor}}}</style>
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=254">
|
||||
<link rel="stylesheet" href="/assets/css/{{v.theme}}.css?v=59">
|
||||
<link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
|
||||
<link rel="stylesheet" href="{{ ('css/'~v.theme~'.css') | asset }}">
|
||||
{% if v.css and not request.path.startswith('/settings/css') %}
|
||||
<link rel="stylesheet" href="/@{{v.username}}/css">
|
||||
{% endif %}
|
||||
|
@ -241,7 +241,7 @@
|
|||
|
||||
{% block onload %}{% endblock %}
|
||||
|
||||
<script src="/assets/js/clipboard.js?v=240"></script>
|
||||
<script src="{{ 'js/clipboard.js' | asset }}"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
|
|
@ -6,19 +6,19 @@
|
|||
<meta name="description" content="{{config('DESCRIPTION')}}">
|
||||
<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 name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<meta name="author" content="">
|
||||
<meta name="thumbnail" content="/assets/images/{{SITE_ID}}/site_preview.webp?v=1015">
|
||||
<link rel="icon" type="image/png" href="/assets/images/{{SITE_ID}}/icon.webp?v=1015">
|
||||
<meta name="thumbnail" content="{{ ('images/'~SITE_ID~'/site_preview.webp') | asset }}">
|
||||
<link rel="icon" type="image/png" href="{{ ('images/'~SITE_ID~'/icon.webp') | asset }}">
|
||||
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:title" content="{{SITE_TITLE}}">
|
||||
<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:description" name="description" content="{{config('DESCRIPTION')}}">
|
||||
<meta property="og:author" name="author" content="{{SITE_FULL}}">
|
||||
|
@ -29,7 +29,7 @@
|
|||
<meta name="twitter:title" content="{{SITE_TITLE}}">
|
||||
<meta name="twitter:creator" content="{{SITE_FULL}}">
|
||||
<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}}">
|
||||
|
||||
|
||||
|
@ -39,12 +39,12 @@
|
|||
|
||||
{% if v %}
|
||||
<style>:root{--primary:#{{v.themecolor}}}</style>
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=254">
|
||||
<link rel="stylesheet" href="/assets/css/{{v.theme}}.css?v=59">
|
||||
<link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
|
||||
<link rel="stylesheet" href="{{ ('css/'~v.theme~'.css') | asset }}">
|
||||
{% else %}
|
||||
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=254">
|
||||
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=58">
|
||||
<link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
|
||||
<link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
|
||||
{% endif %}
|
||||
</head>
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
{% block content %}
|
||||
|
||||
<script src="/assets/js/settings_blocks.js?v=241"></script>
|
||||
<script src="{{ 'js/settings_blocks.js' | asset }}"></script>
|
||||
|
||||
<div class="row">
|
||||
|
||||
|
|
|
@ -501,7 +501,7 @@
|
|||
</div>
|
||||
|
||||
|
||||
<script src="/assets/js/settings_profile.js?v=251"></script>
|
||||
<script src="{{ 'js/settings_profile.js' | asset }}"></script>
|
||||
|
||||
{% include "gif_modal.html" %}
|
||||
|
||||
|
|
|
@ -257,6 +257,6 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/settings_security.js?v=241"></script>
|
||||
<script src="{{ 'js/settings_security.js' | asset }}"></script>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
{% block Banner %}
|
||||
<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>
|
||||
<h5 class="mt-4">Total sales: {{sales}} coins</h5>
|
||||
<h5 class="mt-4">Coins spent by you: {{v.coins_spent}} coins</h5>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<meta name="description" content="{{config('DESCRIPTION')}}">
|
||||
<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 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:title" content="{{SITE_TITLE}}">
|
||||
<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:description" name="description" content="{{config('DESCRIPTION')}}">
|
||||
<meta property="og:author" name="author" content="{{SITE_FULL}}">
|
||||
|
@ -25,14 +25,14 @@
|
|||
<meta name="twitter:title" content="{{SITE_TITLE}}">
|
||||
<meta name="twitter:creator" content="{{SITE_FULL}}">
|
||||
<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}}">
|
||||
|
||||
<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>
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=254">
|
||||
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=58">
|
||||
<link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
|
||||
<link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
|
||||
|
||||
</head>
|
||||
|
||||
|
@ -140,7 +140,7 @@
|
|||
|
||||
<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>
|
||||
|
@ -148,10 +148,10 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/signup.js?v=240"></script>
|
||||
<script src="{{ 'js/signup.js' | asset }}"></script>
|
||||
|
||||
{% if hcaptcha %}
|
||||
<script src="/assets/js/hcaptcha.js?v=240"></script>
|
||||
<script src="{{ 'js/hcaptcha.js' | asset }}"></script>
|
||||
{% endif %}
|
||||
|
||||
</body>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<meta name="description" content="{{config('DESCRIPTION')}}">
|
||||
<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 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:title" content="{{SITE_TITLE}}">
|
||||
<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:description" name="description" content="{{config('DESCRIPTION')}}">
|
||||
<meta property="og:author" name="author" content="{{SITE_FULL}}">
|
||||
|
@ -26,14 +26,14 @@
|
|||
<meta name="twitter:title" content="{{SITE_TITLE}}">
|
||||
<meta name="twitter:creator" content="{{SITE_FULL}}">
|
||||
<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}}">
|
||||
|
||||
<title>{% if ref_user %}{{ref_user.username}} invites you to {{SITE_TITLE}}{% else %}{{SITE_TITLE}}{% endif %}</title>
|
||||
|
||||
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=254">
|
||||
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=58">
|
||||
<link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
|
||||
<link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
|
||||
|
||||
</head>
|
||||
|
||||
|
@ -84,7 +84,7 @@
|
|||
|
||||
<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>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "default.html" %}
|
||||
{% block content %}
|
||||
<script src="/assets/js/sort_table.js?v=242"></script>
|
||||
<script src="{{ 'js/sort_table.js' | asset }}"></script>
|
||||
|
||||
<pre>
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
<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: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 %}
|
||||
<meta property="og:video" content="{{p.realurl(v)}}">
|
||||
{% endif %}
|
||||
|
@ -55,7 +55,7 @@
|
|||
<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: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}}">
|
||||
|
||||
{% else %}
|
||||
|
@ -68,7 +68,7 @@
|
|||
<meta property="og:description" name="description" content="{{p.plainbody(v)}}">
|
||||
{% 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: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 %}
|
||||
<meta property="og:video" content="{{p.realurl(v)}}">
|
||||
{% endif %}
|
||||
|
@ -80,7 +80,7 @@
|
|||
<meta name="twitter:title" content="{{p.plaintitle(v)}} - {{SITE_TITLE}}">
|
||||
{% if p.author %}<meta name="twitter:creator" content="{{'@'+p.author_name}}">{% endif %}
|
||||
<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}}">
|
||||
|
||||
{% endif %}
|
||||
|
@ -246,9 +246,9 @@
|
|||
{% if p.domain == "twitter.com" %}
|
||||
{{p.embed_url | safe}}
|
||||
{% 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 %}
|
||||
<script src="/assets/js/twitter.js?v=243"></script>
|
||||
<script src="{{ 'js/twitter.js' | asset }}"></script>
|
||||
{% endif %}
|
||||
{% elif p.domain in ['youtu.be','youtube.com'] and p.embed_url and p.embed_url.startswith('<lite-youtube') %}
|
||||
{{p.embed_url | safe}}
|
||||
|
@ -595,28 +595,28 @@
|
|||
{% endif %}
|
||||
|
||||
{% 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 %}
|
||||
|
||||
{% 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 %}
|
||||
|
||||
<script src="/assets/js/clipboard.js?v=240"></script>
|
||||
<script src="{{ 'js/clipboard.js' | asset }}"></script>
|
||||
|
||||
{% if not p.replies %}
|
||||
{% include "comments.html" %}
|
||||
{% endif %}
|
||||
|
||||
{% if p.award_count("shit") %}
|
||||
<script src="/assets/js/critters.js?v=240"></script>
|
||||
<script src="/assets/js/bugs.js?v=241"></script>
|
||||
<script src="{{ 'js/critters.js' | asset }}"></script>
|
||||
<script src="{{ 'js/bugs.js' | asset }}"></script>
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% if p.award_count("fireflies") %}
|
||||
<script src="/assets/js/critters.js?v=240"></script>
|
||||
<script src="/assets/js/fireflies.js?v=241"></script>
|
||||
<script src="{{ 'js/critters.js' | asset }}"></script>
|
||||
<script src="{{ 'js/fireflies.js' | asset }}"></script>
|
||||
{% endif %}
|
||||
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{% set cc='COUNTRY CLUB' %}
|
||||
|
||||
{% 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 %}
|
||||
|
||||
{% 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 %}
|
||||
|
||||
<div style="display:none" id="popover">
|
||||
|
@ -417,6 +417,6 @@
|
|||
{% endif %}
|
||||
{% include "expanded_image_modal.html" %}
|
||||
|
||||
<script src="/assets/js/clipboard.js?v=240"></script>
|
||||
<script src="/assets/js/comments+submission_listing.js?v=259"></script>
|
||||
<script src="/assets/js/submission_listing.js?v=240"></script>
|
||||
<script src="{{ 'js/clipboard.js' | asset }}"></script>
|
||||
<script src="{{ 'js/comments+submission_listing.js' | asset }}"></script>
|
||||
<script src="{{ 'js/submission_listing.js' | asset }}"></script>
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
<meta name="description" content="{{config('DESCRIPTION')}}">
|
||||
<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 name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<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 %}
|
||||
<title>Create a post - {{SITE_TITLE}}</title>
|
||||
|
@ -20,15 +20,15 @@
|
|||
{% block stylesheets %}
|
||||
{% if v %}
|
||||
<style>:root{--primary:#{{v.themecolor}}}</style>
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=254">
|
||||
<link rel="stylesheet" href="/assets/css/{{v.theme}}.css?v=49">
|
||||
<link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
|
||||
<link rel="stylesheet" href="{{ ('css/'~v.theme~'.css') | asset }}">
|
||||
{% if v.css %}
|
||||
<link rel="stylesheet" href="/@{{v.username}}/css">
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<style>:root{--primary:#{{config('DEFAULT_COLOR')}}</style>
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=254">
|
||||
<link rel="stylesheet" href="/assets/css/{{config('DEFAULT_THEME')}}.css?v=49">
|
||||
<link rel="stylesheet" href="{{ 'css/main.css' | asset }}">
|
||||
<link rel="stylesheet" href="{{ ('css/'~config('DEFAULT_THEME')~'.css') | asset }}">
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
@ -169,11 +169,11 @@
|
|||
</script>
|
||||
{% endif %}
|
||||
|
||||
<script src="/assets/js/vendor/purify.min.js?v=251"></script>
|
||||
<script src="/assets/js/vendor/marked.min.js?v=251"></script>
|
||||
<script src="/assets/js/marked.custom.js?v=252"></script>
|
||||
<script src="/assets/js/formatting.js?v=240"></script>
|
||||
<script src="/assets/js/submit.js?v=255"></script>
|
||||
<script src="{{ 'js/vendor/purify.min.js' | asset }}"></script>
|
||||
<script src="{{ 'js/vendor/marked.min.js' | asset }}"></script>
|
||||
<script src="{{ 'js/marked.custom.js' | asset }}"></script>
|
||||
<script src="{{ 'js/formatting.js' | asset }}"></script>
|
||||
<script src="{{ 'js/submit.js' | asset }}"></script>
|
||||
|
||||
{% include "gif_modal.html" %}
|
||||
|
||||
|
|
|
@ -299,9 +299,9 @@
|
|||
<div>
|
||||
{% for b in u.badges %}
|
||||
{% 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 %}
|
||||
<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 %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
@ -420,9 +420,9 @@
|
|||
<div class="mb-3">
|
||||
{% for b in u.badges %}
|
||||
{% 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 %}
|
||||
<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 %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
@ -667,11 +667,11 @@
|
|||
|
||||
{% 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>
|
||||
<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>
|
||||
{% endif %}
|
||||
|
||||
<script src="/assets/js/userpage.js?v=241"></script>
|
||||
<script src="{{ 'js/userpage.js' | asset }}"></script>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
@ -697,9 +697,9 @@
|
|||
</nav>
|
||||
{% endif %}
|
||||
|
||||
<script src="/assets/js/vendor/purify.min.js?v=251"></script>
|
||||
<script src="/assets/js/vendor/marked.min.js?v=252"></script>
|
||||
<script src="/assets/js/marked.custom.js?v=251"></script>
|
||||
<script src="{{ 'js/vendor/purify.min.js' | asset }}"></script>
|
||||
<script src="{{ 'js/vendor/marked.min.js' | asset }}"></script>
|
||||
<script src="{{ 'js/marked.custom.js' | asset }}"></script>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -114,9 +114,9 @@
|
|||
|
||||
{% if v %}
|
||||
<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>
|
||||
{% endif %}
|
||||
|
||||
<script src="/assets/js/userpage.js?v=241"></script>
|
||||
<script src="{{ 'js/userpage.js' | asset }}"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -32,9 +32,9 @@
|
|||
|
||||
{% if v %}
|
||||
<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>
|
||||
{% endif %}
|
||||
|
||||
<script src="/assets/js/userpage.js?v=241"></script>
|
||||
<script src="{{ 'js/userpage.js' | asset }}"></script>
|
||||
{% endblock %}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue