fix up tabs

pull/216/head
Aevann 2023-10-29 15:51:00 +03:00
parent aa2c90c893
commit a68dcfd5fe
103 changed files with 5909 additions and 5943 deletions

View File

@ -2,23 +2,23 @@
{% block pagetitle %}Admin Home{% endblock %} {% block pagetitle %}Admin Home{% endblock %}
{% block customPadding %}px-3{% endblock %} {% block customPadding %}px-3{% endblock %}
{% block content %} {% block content %}
<h3 class="py-2">Admin Tools</h3> <h3 class="py-2">Admin Tools</h3>
{% if v.admin_level >= PERMS['INSERT_TRANSACTION'] %} {% if v.admin_level >= PERMS['INSERT_TRANSACTION'] %}
<h4>Transactions</h4> <h4>Transactions</h4>
<ul> <ul>
<li><a href="/admin/insert_transaction">Insert Transaction</a></li> <li><a href="/admin/insert_transaction">Insert Transaction</a></li>
</ul> </ul>
{%- endif %} {%- endif %}
{% if v.admin_level >= PERMS['ORGIES'] %} {% if v.admin_level >= PERMS['ORGIES'] %}
<h4>Orgies</h4> <h4>Orgies</h4>
<ul> <ul>
<li><a href="/admin/orgies">Schedule/Stop Orgy</a></li> <li><a href="/admin/orgies">Schedule/Stop Orgy</a></li>
</ul> </ul>
{%- endif %} {%- endif %}
{% if v.admin_level >= PERMS['USE_ADMIGGER_THREADS'] and (SITE_NAME == 'rDrama' or SIDEBAR_THREAD or BANNER_THREAD or BADGE_THREAD or SNAPPY_THREAD) %} {% if v.admin_level >= PERMS['USE_ADMIGGER_THREADS'] and (SITE_NAME == 'rDrama' or SIDEBAR_THREAD or BANNER_THREAD or BADGE_THREAD or SNAPPY_THREAD) %}
<h4>Add Stuff</h4> <h4>Add Stuff</h4>
<ul> <ul>
{% if v.admin_level >= PERMS['USE_ADMIGGER_THREADS'] %} {% if v.admin_level >= PERMS['USE_ADMIGGER_THREADS'] %}
@ -50,10 +50,10 @@
<li><a href="/admin/update/hats">Update Hats</a></li> <li><a href="/admin/update/hats">Update Hats</a></li>
{% endif %} {% endif %}
</ul> </ul>
{% endif %} {% endif %}
<h4>Content</h4> <h4>Content</h4>
<ul> <ul>
{% if v.admin_level >= PERMS['ENABLE_DM_MEDIA'] %} {% if v.admin_level >= PERMS['ENABLE_DM_MEDIA'] %}
<li><a href="/admin/dm_media">DM Media</a></li> <li><a href="/admin/dm_media">DM Media</a></li>
{% endif %} {% endif %}
@ -63,10 +63,10 @@
<li><a href="/admin/reported/posts">Reported Posts/Comments</a></li> <li><a href="/admin/reported/posts">Reported Posts/Comments</a></li>
<li><a href="/admin/removed/posts">Removed Posts/Comments</a></li> <li><a href="/admin/removed/posts">Removed Posts/Comments</a></li>
{% endif %} {% endif %}
</ul> </ul>
<h4>Users</h4> <h4>Users</h4>
<ul> <ul>
{% if v.can_see_shadowbanned %} {% if v.can_see_shadowbanned %}
<li><a href="/admin/shadowbanned">Shadowbanned Users</a></li> <li><a href="/admin/shadowbanned">Shadowbanned Users</a></li>
{% endif %} {% endif %}
@ -82,10 +82,10 @@
<li><a href="/admin/loggedin">Currently Logged-in Users</a></li> <li><a href="/admin/loggedin">Currently Logged-in Users</a></li>
<li><a href="/admin/loggedout">Currently Logged-out Users</a></li> <li><a href="/admin/loggedout">Currently Logged-out Users</a></li>
{% endif %} {% endif %}
</ul> </ul>
<h4>Safety</h4> <h4>Safety</h4>
<ul> <ul>
{% if v.admin_level >= PERMS['DELETE_MEDIA'] %} {% if v.admin_level >= PERMS['DELETE_MEDIA'] %}
<li><a href="/admin/delete_media">Delete Media</a></li> <li><a href="/admin/delete_media">Delete Media</a></li>
{% endif %} {% endif %}
@ -98,32 +98,32 @@
{% if v.admin_level >= PERMS['VIEW_ALT_VOTES'] %} {% if v.admin_level >= PERMS['VIEW_ALT_VOTES'] %}
<li><a href="/admin/alt_votes">Alt Vote Analysis</a></li> <li><a href="/admin/alt_votes">Alt Vote Analysis</a></li>
{% endif %} {% endif %}
</ul> </ul>
{% if FEATURES['BADGES'] and v.admin_level >= PERMS['USER_BADGES'] -%} {% if FEATURES['BADGES'] and v.admin_level >= PERMS['USER_BADGES'] -%}
<h4>Badges</h4> <h4>Badges</h4>
<ul> <ul>
<li><a href="/admin/badge_grant">Grant Badges</a></li> <li><a href="/admin/badge_grant">Grant Badges</a></li>
<li><a href="/admin/badge_remove">Remove Badges</a></li> <li><a href="/admin/badge_remove">Remove Badges</a></li>
</ul> </ul>
{%- endif %} {%- endif %}
{% if FEATURES['GAMBLING'] and v.admin_level >= PERMS['LOTTERY_VIEW_PARTICIPANTS'] -%} {% if FEATURES['GAMBLING'] and v.admin_level >= PERMS['LOTTERY_VIEW_PARTICIPANTS'] -%}
<h4>Casino</h4> <h4>Casino</h4>
<ul> <ul>
<li><a href="/admin/lottery/participants">Participants</a></li> <li><a href="/admin/lottery/participants">Participants</a></li>
</ul> </ul>
{%- endif %} {%- endif %}
<h4>Statistics</h4> <h4>Statistics</h4>
<ul> <ul>
<li><a href="/stats">Content Stats</a></li> <li><a href="/stats">Content Stats</a></li>
<li><a href="/weekly_chart">Weekly Stat Chart</a></li> <li><a href="/weekly_chart">Weekly Stat Chart</a></li>
<li><a href="/daily_chart">Daily Stat Chart</a></li> <li><a href="/daily_chart">Daily Stat Chart</a></li>
</ul> </ul>
<h4>Configuration</h4> <h4>Configuration</h4>
<ul class="pb-3"> <ul class="pb-3">
{% if v.admin_level >= PERMS['EDIT_RULES'] %} {% if v.admin_level >= PERMS['EDIT_RULES'] %}
<li><a href="/admin/edit_rules">Edit the Rules</a></li> <li><a href="/admin/edit_rules">Edit the Rules</a></li>
{%- endif %} {%- endif %}
@ -133,9 +133,9 @@
{% if v.admin_level >= PERMS['APPS_MODERATION'] %} {% if v.admin_level >= PERMS['APPS_MODERATION'] %}
<li><a href="/admin/apps">Apps</a></li> <li><a href="/admin/apps">Apps</a></li>
{% endif %} {% endif %}
</ul> </ul>
{% if v.admin_level >= PERMS['SITE_SETTINGS'] %} {% if v.admin_level >= PERMS['SITE_SETTINGS'] %}
{% for setting in SITE_SETTINGS.keys() %} {% for setting in SITE_SETTINGS.keys() %}
{% if not (setting == "offline_mode" and v.admin_level < PERMS["SITE_OFFLINE_MODE"]) %} {% if not (setting == "offline_mode" and v.admin_level < PERMS["SITE_OFFLINE_MODE"]) %}
<div class="custom-control custom-switch{% if loop.index > 1 %} mt-1{% endif %}" id="settings-{{setting}}-container"> <div class="custom-control custom-switch{% if loop.index > 1 %} mt-1{% endif %}" id="settings-{{setting}}-container">
@ -144,14 +144,13 @@
</div> </div>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% if v.admin_level >= PERMS['SITE_CACHE_PURGE_CDN'] %} {% if v.admin_level >= PERMS['SITE_CACHE_PURGE_CDN'] %}
<button type="button" class="btn btn-primary" data-nonce="{{g.nonce}}" data-onclick="postToastSwitch(this,'/admin/clear_cloudflare_cache')" style="margin-bottom: 2em">CLEAR CLOUDFLARE CACHE</button> <button type="button" class="btn btn-primary" data-nonce="{{g.nonce}}" data-onclick="postToastSwitch(this,'/admin/clear_cloudflare_cache')" style="margin-bottom: 2em">CLEAR CLOUDFLARE CACHE</button>
{% endif %} {% endif %}
{% if v.admin_level >= PERMS['CLAIM_REWARDS_ALL_USERS'] %} {% if v.admin_level >= PERMS['CLAIM_REWARDS_ALL_USERS'] %}
<button type="button" class="btn btn-primary d-block" data-nonce="{{g.nonce}}" data-onclick="postToastSwitch(this,'/admin/claim_rewards_all_users')" style="margin-bottom: 2em">CLAIM {{patron.upper()}} REWARDS FOR ALL USERS</button> <button type="button" class="btn btn-primary d-block" data-nonce="{{g.nonce}}" data-onclick="postToastSwitch(this,'/admin/claim_rewards_all_users')" style="margin-bottom: 2em">CLAIM {{patron.upper()}} REWARDS FOR ALL USERS</button>
{% endif %} {% endif %}
{% endblock %} {% endblock %}

View File

@ -1,18 +1,18 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}Alt Vote Analysis{% endblock %} {% block pagetitle %}Alt Vote Analysis{% endblock %}
{% block content %} {% block content %}
<h5 class="mt-3">Vote Info</h5> <h5 class="mt-3">Vote Info</h5>
<form method="get" class="mb-6"> <form method="get" class="mb-6">
<label for="link-input">Usernames</label> <label for="link-input">Usernames</label>
<input autocomplete="off" id="link-input" type="text" class="form-control mb-2" name="u1" value="{{u1.username if u1 else ''}}" placeholder="User 1"> <input autocomplete="off" id="link-input" type="text" class="form-control mb-2" name="u1" value="{{u1.username if u1 else ''}}" placeholder="User 1">
<input autocomplete="off" id="link-input" type="text" class="form-control mb-2" name="u2" value="{{u2.username if u2 else ''}}" placeholder="User 2"> <input autocomplete="off" id="link-input" type="text" class="form-control mb-2" name="u2" value="{{u2.username if u2 else ''}}" placeholder="User 2">
<input type="submit" value="Submit" class="btn btn-primary"> <input type="submit" value="Submit" class="btn btn-primary">
</form> </form>
{% if u1 and u2 %} {% if u1 and u2 %}
<h2>Analysis</h2> <h2>Analysis</h2>
<div class="overflow-x-auto"><table class="table table-striped mb-5"> <div class="overflow-x-auto"><table class="table table-striped mb-5">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
<th class="disable-sort-click"></th> <th class="disable-sort-click"></th>
@ -45,8 +45,8 @@
<td>{{data['both_comment_downs']}}</td> <td>{{data['both_comment_downs']}}</td>
<td>{{data['u2_only_comment_downs']}} ({{data['u2_comment_downs_unique']}}%)</td> <td>{{data['u2_only_comment_downs']}} ({{data['u2_comment_downs_unique']}}%)</td>
</tr> </tr>
</table> </table>
{% if v.admin_level >= PERMS['USER_LINK'] %} {% if v.admin_level >= PERMS['USER_LINK'] %}
<h2>Link Accounts</h2> <h2>Link Accounts</h2>
{% if u2 in get_alt_graph(u1.id) %} {% if u2 in get_alt_graph(u1.id) %}
@ -57,6 +57,6 @@
<button class="btn btn-danger" data-areyousure="postToastReload(this,'/@{{u1.username}}/alts/?other_username={{u2.username}}')" data-nonce="{{g.nonce}}" data-onclick="areyousure(this)">Link {{u1.username}} and {{u2.username}}</button> <button class="btn btn-danger" data-areyousure="postToastReload(this,'/@{{u1.username}}/alts/?other_username={{u2.username}}')" data-nonce="{{g.nonce}}" data-onclick="areyousure(this)">Link {{u1.username}} and {{u2.username}}</button>
{% endif %} {% endif %}
{% endif %} {% endif %}
{% endif %} {% endif %}
{% endblock %} {% endblock %}

View File

@ -1,25 +1,25 @@
{% extends "settings2.html" %} {% extends "settings2.html" %}
{% block pagetitle %}Alts{% if u %} for @{{u.username}}{% endif %}{% endblock %} {% block pagetitle %}Alts{% if u %} for @{{u.username}}{% endif %}{% endblock %}
{% block content %} {% block content %}
{% if u %} {% if u %}
<h5 class="mt-3">Alts for <a href="/@{{u.username}}">@{{u.username}}</a></h5> <h5 class="mt-3">Alts for <a href="/@{{u.username}}">@{{u.username}}</a></h5>
{% else %} {% else %}
<h5 class="mt-3">Alts</h5> <h5 class="mt-3">Alts</h5>
{% endif %} {% endif %}
<section class="username-input-section mb-3"> <section class="username-input-section mb-3">
<form action="/admin/alts" method="get"> <form action="/admin/alts" method="get">
<label for="link-input">Username</label> <label for="link-input">Username</label>
<input autocomplete="off" id="link-input" type="text" class="form-control mb-2" name="username" value="{{u.username if u else ''}}" placeholder="Username"> <input autocomplete="off" id="link-input" type="text" class="form-control mb-2" name="username" value="{{u.username if u else ''}}" placeholder="Username">
<input type="submit" value="Submit" class="btn btn-primary"> <input type="submit" value="Submit" class="btn btn-primary">
</form> </form>
</section> </section>
{% if u %} {% if u %}
{% set count=alts|length %} {% set count=alts|length %}
<section class="userinfo-section"> <section class="userinfo-section">
<p><a href="/@{{u.username}}">@{{u.username}}</a> created their account {{u.created_utc|timestamp}} and has {{count}} known alt{{macros.plural(count)}}.<br> <p><a href="/@{{u.username}}">@{{u.username}}</a> created their account {{u.created_utc|timestamp}} and has {{count}} known alt{{macros.plural(count)}}.<br>
They are {% if not u.is_permabanned %}not {% endif %}permanently banned{% if v.can_see_shadowbanned %} and they are {% if not u.shadowbanned %}not {% endif %}shadowbanned{% endif %}.</p> They are {% if not u.is_permabanned %}not {% endif %}permanently banned{% if v.can_see_shadowbanned %} and they are {% if not u.shadowbanned %}not {% endif %}shadowbanned{% endif %}.</p>
</section> </section>
<div class="overflow-x-auto"> <div class="overflow-x-auto">
<table class="table table-striped mb-5"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
@ -46,15 +46,15 @@
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div> </div>
<section id="add-alt" class="rounded rounded-section p-3"> <section id="add-alt" class="rounded rounded-section p-3">
<h5>Add Alt</h5> <h5>Add Alt</h5>
<p>This tool allows you to link an alt.</p> <p>This tool allows you to link an alt.</p>
<label for="link-input-other">Other Username</label> <label for="link-input-other">Other Username</label>
<input autocomplete="off" id="link-input-other" type="text" class="form-control mb-2" name="other_username" placeholder="Other Username"> <input autocomplete="off" id="link-input-other" type="text" class="form-control mb-2" name="other_username" placeholder="Other Username">
<button id="add-alt-form-link" class="btn btn-danger mr-3" data-areyousure="submitAddAlt(this, '{{u.username}}')" data-nonce="{{g.nonce}}" data-onclick="areyousure(this)">Add Alt</button> <button id="add-alt-form-link" class="btn btn-danger mr-3" data-areyousure="submitAddAlt(this, '{{u.username}}')" data-nonce="{{g.nonce}}" data-onclick="areyousure(this)">Add Alt</button>
</section> </section>
{% endif %} {% endif %}
<script defer src="{{'js/admin/alts.js' | asset}}"></script> <script defer src="{{'js/admin/alts.js' | asset}}"></script>
{% endblock %} {% endblock %}

View File

@ -1,7 +1,7 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}API App Administration{% endblock %} {% block pagetitle %}API App Administration{% endblock %}
{% block content %} {% block content %}
<div class="row"> <div class="row">
<div class="col col-lg-8"> <div class="col col-lg-8">
<div class="settings"> <div class="settings">
{% for app in apps %} {% for app in apps %}
@ -43,8 +43,7 @@
{% endfor %} {% endfor %}
</div> </div>
</div> </div>
</div> </div>
<script defer src="{{'js/admin/apps.js' | asset}}"></script>
<script defer src="{{'js/admin/apps.js' | asset}}"></script>
{% endblock %} {% endblock %}

View File

@ -2,16 +2,16 @@
{% block pagetitle %}{{"Badge Grant" if grant else "Badge Remove"}}{% endblock %} {% block pagetitle %}{{"Badge Grant" if grant else "Badge Remove"}}{% endblock %}
{% block pagetype %}message{% endblock %} {% block pagetype %}message{% endblock %}
{% block content %} {% block content %}
<link rel="stylesheet" href="{{('css/admin/badges.css') | asset}}">
<link rel="stylesheet" href="{{('css/admin/badges.css') | asset}}"> {% set form_action = "/admin/badge_grant" if grant else "/admin/badge_remove" %}
{% set form_action = "/admin/badge_grant" if grant else "/admin/badge_remove" %} <form action="{{form_action}}" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHR(this)">
<input hidden name="formkey" value="{{v|formkey}}">
<form action="{{form_action}}" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHR(this)"> <div class="overflow-x-auto mt-4">
<input hidden name="formkey" value="{{v|formkey}}"> <table class="table table-striped">
<thead class="bg-primary text-white">
<div class="overflow-x-auto mt-4"><table class="table table-striped">
<thead class="bg-primary text-white">
<tr> <tr>
<th>Select</th> <th>Select</th>
<th>Image</th> <th>Image</th>
@ -20,8 +20,8 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% for badge in badge_types %} {% for badge in badge_types %}
<tr> <tr>
<td> <td>
<div class="custom-control"> <div class="custom-control">
<input autocomplete="off" class="custom-control-input" type="radio" id="{{badge.id}}" name="badge_id" value="{{badge.id}}" required> <input autocomplete="off" class="custom-control-input" type="radio" id="{{badge.id}}" name="badge_id" value="{{badge.id}}" required>
@ -35,22 +35,23 @@
</td> </td>
<td>{{badge.name}}</td> <td>{{badge.name}}</td>
<td>{{badge.description}}</td> <td>{{badge.description}}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
<label for="input-usernames">Usernames (separated with a space)</label> </div>
{% set usernames = request.values.get('usernames') %}
<input autocomplete="off" id="input-usernames" class="form-control" type="text" name="usernames" placeholder="Required (separated by space)" {% if usernames %}value="{{usernames}}"{% endif %} required>
{% if grant %} <label for="input-usernames">Usernames (separated with a space)</label>
<label class="mt-2" for="input-url">URL</label> {% set usernames = request.values.get('usernames') %}
<input autocomplete="off" id="input-url" class="form-control" type="text" name="url" type="url" placeholder="Optional"> <input autocomplete="off" id="input-usernames" class="form-control" type="text" name="usernames" placeholder="Required (separated by space)" {% if usernames %}value="{{usernames}}"{% endif %} required>
<label class="mt-2" for="input-description">Custom description</label> {% if grant %}
<input autocomplete="off" id="input-description" class="form-control" type="text" name="description" placeholder="Optional except for specific badges"> <label class="mt-2" for="input-url">URL</label>
{% endif %} <input autocomplete="off" id="input-url" class="form-control" type="text" name="url" type="url" placeholder="Optional">
<input autocomplete="off" class="btn btn-primary mt-3" type="submit">
</form> <label class="mt-2" for="input-description">Custom description</label>
<input autocomplete="off" id="input-description" class="form-control" type="text" name="description" placeholder="Optional except for specific badges">
{% endif %}
<input autocomplete="off" class="btn btn-primary mt-3" type="submit">
</form>
{% endblock %} {% endblock %}

View File

@ -2,10 +2,9 @@
{% block pagetitle %}Banned Domains{% endblock %} {% block pagetitle %}Banned Domains{% endblock %}
{% block content %} {% block content %}
<script defer src="{{'js/admin/banned_domains.js' | asset}}"></script>
<script defer src="{{'js/admin/banned_domains.js' | asset}}"></script> <div class="overflow-x-auto mt-2">
<div class="overflow-x-auto mt-2">
<table class="table table-striped mb-5" id="domains-table"> <table class="table table-striped mb-5" id="domains-table">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
@ -35,6 +34,5 @@
<input autocomplete="off" name="reason" placeholder="Enter ban reason here.." data-nonce="{{g.nonce}}" data-undisable_element="ban-submit" class="form-control mt-2"> <input autocomplete="off" name="reason" placeholder="Enter ban reason here.." data-nonce="{{g.nonce}}" data-undisable_element="ban-submit" class="form-control mt-2">
<input autocomplete="off" id="ban-submit" type="submit" class="btn btn-primary mt-2" value="Ban domain" disabled> <input autocomplete="off" id="ban-submit" type="submit" class="btn btn-primary mt-2" value="Ban domain" disabled>
</form> </form>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -3,7 +3,7 @@
{% block pagetitle %}Delete Media{% endblock %} {% block pagetitle %}Delete Media{% endblock %}
{% block content %} {% block content %}
<form class="mt-3" action="/admin/delete_media" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHR(this)"> <form class="mt-3" action="/admin/delete_media" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHR(this)">
<div class="container"> <div class="container">
<div class="row justify-content-center mb-4 pb-6"> <div class="row justify-content-center mb-4 pb-6">
<div class="col col-md-6 p-3 py-md-0"> <div class="col col-md-6 p-3 py-md-0">
@ -22,5 +22,5 @@
</div> </div>
</div> </div>
</div> </div>
</form> </form>
{% endblock %} {% endblock %}

View File

@ -1,8 +1,8 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}DM Media{% endblock %} {% block pagetitle %}DM Media{% endblock %}
{% block content %} {% block content %}
<h2>DM Media</h2> <h2>DM Media</h2>
<div class="overflow-x-auto"> <div class="overflow-x-auto">
<table class="table table-striped mb-5"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
@ -55,9 +55,9 @@
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div> </div>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}

View File

@ -3,7 +3,7 @@
{% block pagetitle %}Edit {{SITE_NAME}}'s rules{% endblock %} {% block pagetitle %}Edit {{SITE_NAME}}'s rules{% endblock %}
{% block content %} {% block content %}
<div class="row my-5"> <div class="row my-5">
<div class="col"> <div class="col">
<div class="settings mx-3"> <div class="settings mx-3">
<div id="description"> <div id="description">
@ -24,5 +24,5 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -5,7 +5,7 @@
{% block mobileUserBanner %}{% endblock %} {% block mobileUserBanner %}{% endblock %}
{% block pagetitle %}Image feed{% endblock %} {% block pagetitle %}Image feed{% endblock %}
{% block content %} {% block content %}
<div class="row no-gutters"> <div class="row no-gutters">
<div class="col"> <div class="col">
{% block listing %} {% block listing %}
<div class="posts"> <div class="posts">
@ -13,9 +13,9 @@
</div> </div>
{% endblock %} {% endblock %}
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}

View File

@ -1,21 +1,22 @@
{% extends "settings2.html" %} {% extends "settings2.html" %}
{% block pagetitle %}Logged In Users{% endblock %} {% block pagetitle %}Logged In Users{% endblock %}
{% block content %} {% block content %}
<div class="overflow-x-auto"><table class="table table-striped mb-5"> <div class="overflow-x-auto">
<thead class="bg-primary text-white"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>#</th> <th>#</th>
<th>Name</th> <th>Name</th>
<th>Truescore</th> <th>Truescore</th>
</tr> </tr>
</thead> </thead>
{% for user in users %} {% for user in users %}
<tr> <tr>
<td>{{loop.index}}</td> <td>{{loop.index}}</td>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
<td>{{"{:,}".format(user.truescore)}}</td> <td>{{"{:,}".format(user.truescore)}}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div>
{% endblock %} {% endblock %}

View File

@ -1,19 +1,20 @@
{% extends "settings2.html" %} {% extends "settings2.html" %}
{% block pagetitle %}Logged Out Users{% endblock %} {% block pagetitle %}Logged Out Users{% endblock %}
{% block content %} {% block content %}
<div class="overflow-x-auto"><table class="table table-striped mb-5"> <div class="overflow-x-auto">
<thead class="bg-primary text-white"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>#</th> <th>#</th>
<th>Details</th> <th>Details</th>
</tr> </tr>
</thead> </thead>
{% for user in users %} {% for user in users %}
<tr> <tr>
<td>{{loop.index}}</td> <td>{{loop.index}}</td>
<td>{{user}}</td> <td>{{user}}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div>
{% endblock %} {% endblock %}

View File

@ -1,21 +1,23 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}Lottery Participants{% endblock %} {% block pagetitle %}Lottery Participants{% endblock %}
{% block content %} {% block content %}
<h5 class="my-1">Admin — Lottery Participants</h5> <h5 class="my-1">Admin — Lottery Participants</h5>
<div class="overflow-x-auto"><table class="table table-striped mb-5"> <div class="overflow-x-auto">
<thead class="bg-primary text-white"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>#</th> <th>#</th>
<th>Name</th> <th>Name</th>
<th>Tickets Held</th> <th>Tickets Held</th>
</tr> </tr>
</thead> </thead>
{% for user in participants %} {% for user in participants %}
<tr> <tr>
<td>{{loop.index}}</td> <td>{{loop.index}}</td>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
<td>{{user.currently_held_lottery_tickets}}</td> <td>{{user.currently_held_lottery_tickets}}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div>
{% endblock %} {% endblock %}

View File

@ -3,7 +3,7 @@
{% block pagetitle %}Orgy Control Panel{% endblock %} {% block pagetitle %}Orgy Control Panel{% endblock %}
{% block content %} {% block content %}
<div class="row my-5"> <div class="row my-5">
<div class="col"> <div class="col">
<div class="settings mx-3"> <div class="settings mx-3">
<div id="description"> <div id="description">
@ -46,9 +46,9 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="overflow-x-auto mt-3"> <div class="overflow-x-auto mt-3">
<table class="table table-striped mb-5"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
@ -78,7 +78,7 @@
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div> </div>
<script defer src="{{'js/admin/orgies.js' | asset}}"></script> <script defer src="{{'js/admin/orgies.js' | asset}}"></script>
{% endblock %} {% endblock %}

View File

@ -1,8 +1,9 @@
{% extends "settings2.html" %} {% extends "settings2.html" %}
{% block pagetitle %}Patrons{% endblock %} {% block pagetitle %}Patrons{% endblock %}
{% block content %} {% block content %}
<div class="overflow-x-auto"><table class="table table-striped mb-5"> <div class="overflow-x-auto">
<thead class="bg-primary text-white"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>#</th> <th>#</th>
<th>Name</th> <th>Name</th>
@ -10,8 +11,8 @@
<th>Lifetime Donated</th> <th>Lifetime Donated</th>
<th>Truescore</th> <th>Truescore</th>
</tr> </tr>
</thead> </thead>
{% for user in users %} {% for user in users %}
<tr> <tr>
<td>{{loop.index}}</td> <td>{{loop.index}}</td>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
@ -23,7 +24,7 @@
<td data-sort-key="{{user.lifetimedonated}}">${{user.lifetimedonated}}</td> <td data-sort-key="{{user.lifetimedonated}}">${{user.lifetimedonated}}</td>
<td>{{user.truescore}}</td> <td>{{user.truescore}}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div>
{% endblock %} {% endblock %}

View File

@ -5,7 +5,7 @@
{% block mobileUserBanner %}{% endblock %} {% block mobileUserBanner %}{% endblock %}
{% block pagetitle %}Removed Posts{% endblock %} {% block pagetitle %}Removed Posts{% endblock %}
{% block content %} {% block content %}
<ul class="nav post-nav py-2"> <ul class="nav post-nav py-2">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link {% if request.path=="/admin/removed/posts" %} active{% endif %}" href="/admin/removed/posts"> <a class="nav-link {% if request.path=="/admin/removed/posts" %} active{% endif %}" href="/admin/removed/posts">
<div>Posts</div> <div>Posts</div>
@ -16,8 +16,8 @@
<div>Comments</div> <div>Comments</div>
</a> </a>
</li> </li>
</ul> </ul>
<div class="row no-gutters"> <div class="row no-gutters">
<div class="col"> <div class="col">
{% block listing %} {% block listing %}
<div class="posts"> <div class="posts">
@ -25,8 +25,8 @@
</div> </div>
{% endblock %} {% endblock %}
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}

View File

@ -5,7 +5,7 @@
{% block mobileUserBanner %}{% endblock %} {% block mobileUserBanner %}{% endblock %}
{% block pagetitle %}Reported Posts{% endblock %} {% block pagetitle %}Reported Posts{% endblock %}
{% block content %} {% block content %}
<ul class="nav post-nav py-2"> <ul class="nav post-nav py-2">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link {% if request.path=="/admin/reported/posts" %} active{% endif %}" href="/admin/reported/posts"> <a class="nav-link {% if request.path=="/admin/reported/posts" %} active{% endif %}" href="/admin/reported/posts">
<div>Posts</div> <div>Posts</div>
@ -16,9 +16,9 @@
<div>Comments</div> <div>Comments</div>
</a> </a>
</li> </li>
</ul> </ul>
<div class="row no-gutters"> <div class="row no-gutters">
<div class="col"> <div class="col">
{% block listing %} {% block listing %}
<div class="posts"> <div class="posts">
@ -26,9 +26,9 @@
</div> </div>
{% endblock %} {% endblock %}
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}

View File

@ -1,11 +1,10 @@
{% extends "settings2.html" %} {% extends "settings2.html" %}
{% block pagetitle %}Shadowbanned Users{% endblock %} {% block pagetitle %}Shadowbanned Users{% endblock %}
{% block content %} {% block content %}
<h5 class="my-4">Shadowbanned Users</h5>
<h5 class="my-4">Shadowbanned Users</h5> <div class="overflow-x-auto">
<div class="overflow-x-auto"> <table class="table table-striped mb-5">
<table class="table table-striped mb-5"> <thead class="bg-primary text-white">
<thead class="bg-primary text-white">
<tr> <tr>
<th>#</th> <th>#</th>
<th>Name</th> <th>Name</th>
@ -14,8 +13,8 @@
<th>Shadowbanned by</th> <th>Shadowbanned by</th>
<th>Shadowban reason</th> <th>Shadowban reason</th>
</tr> </tr>
</thead> </thead>
{% for user in users %} {% for user in users %}
<tr> <tr>
<td>{{loop.index}}</td> <td>{{loop.index}}</td>
<td data-sort-key="{{user.username.lower() if user else ''}}">{%- include 'user_in_table.html' -%}</td> <td data-sort-key="{{user.username.lower() if user else ''}}">{%- include 'user_in_table.html' -%}</td>
@ -24,9 +23,7 @@
<td><a href="/@{{user.shadowbanner}}">{{user.shadowbanner}}</a></td> <td><a href="/@{{user.shadowbanner}}">{{user.shadowbanner}}</a></td>
<td>{{user.ban_reason | safe}}</td> <td>{{user.ban_reason | safe}}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div>
{% endblock %} {% endblock %}

View File

@ -3,9 +3,8 @@
{% block pagetitle %}Admins{% endblock %} {% block pagetitle %}Admins{% endblock %}
{% block content %} {% block content %}
<h5 class="font-weight-bolder text-center pt-2 pb-3"><span>Admins</span></h5>
<h5 class="font-weight-bolder text-center pt-2 pb-3"><span>Admins</span></h5> <div class="overflow-x-auto mt-1">
<div class="overflow-x-auto mt-1">
<table class="table table-striped mb-5"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
@ -27,8 +26,5 @@
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -2,22 +2,22 @@
{% block pagetitle %}API{% endblock %} {% block pagetitle %}API{% endblock %}
{% block content %} {% block content %}
<h1 class="my-3">API Guide for Bots</h1> <h1 class="my-3">API Guide for Bots</h1>
<p>This page explains how to obtain and use an access token. </p> <p>This page explains how to obtain and use an access token. </p>
<h4>Step 1: Create your Application</h4> <h4>Step 1: Create your Application</h4>
<p>In the <a href="/settings/apps">apps tab of {{SITE_NAME}} settings</a>, fill in and submit the form to request an access token. You will need:</p> <p>In the <a href="/settings/apps">apps tab of {{SITE_NAME}} settings</a>, fill in and submit the form to request an access token. You will need:</p>
<ul> <ul>
<li>an application name</li> <li>an application name</li>
<li>a Redirect URI. May not use HTTP unless using localhost (use HTTPS instead).</li> <li>a Redirect URI. May not use HTTP unless using localhost (use HTTPS instead).</li>
<li>a brief description of what your bot is intended to do</li> <li>a brief description of what your bot is intended to do</li>
</ul> </ul>
<p>Don't worry too much about accuracy; you will be able to change all of these later.</p> <p>Don't worry too much about accuracy; you will be able to change all of these later.</p>
<p>{{SITE_NAME}} administrators will review and approve or deny your request for an access token. You'll know when your request has been approved when you get a private message with an access token tied to your account.</p> <p>{{SITE_NAME}} administrators will review and approve or deny your request for an access token. You'll know when your request has been approved when you get a private message with an access token tied to your account.</p>
<p>DO NOT reveal your Client ID or Access Token. Anyone with these information will be able to pretend to be you. You are responsible for keeping them a secret!</p> <p>DO NOT reveal your Client ID or Access Token. Anyone with these information will be able to pretend to be you. You are responsible for keeping them a secret!</p>
<h4>Step 2: Using the Access Token</h4> <h4>Step 2: Using the Access Token</h4>
<p>To use the access token, include the following header in subsequent API requests to {{SITE_NAME}}: <code>Authorization: access_token_goes_here</code></p> <p>To use the access token, include the following header in subsequent API requests to {{SITE_NAME}}: <code>Authorization: access_token_goes_here</code></p>
<p>Python example:</p> <p>Python example:</p>
<pre> import requests <pre> import requests
headers = {"Authorization": "access_token_goes_here"} headers = {"Authorization": "access_token_goes_here"}
@ -26,13 +26,13 @@
r = requests.get(url, headers=headers) r = requests.get(url, headers=headers)
print(r.json()) print(r.json())
</pre> </pre>
<p>The expected result of this would be a large JSON representation of the posts on the frontpage sorted by the number of comments</p> <p>The expected result of this would be a large JSON representation of the posts on the frontpage sorted by the number of comments</p>
<br> <br>
<p>Aother python example:</p> <p>Aother python example:</p>
<pre> import requests <pre> import requests
headers = {"Authorization": "access_token_goes_here"} headers = {"Authorization": "access_token_goes_here"}
@ -41,35 +41,35 @@
r = requests.get(url, headers=headers) r = requests.get(url, headers=headers)
print(r.json()) print(r.json())
</pre> </pre>
<p>The expected result of this would be a JSON representation of unread notifications for your account</p> <p>The expected result of this would be a JSON representation of unread notifications for your account</p>
<br> <br>
<hr> <hr>
<br> <br>
<h1 class="my-3">API Guide for Applications</h1> <h1 class="my-3">API Guide for Applications</h1>
<p>The OAuth4 authorization flow is used to enable users to authorize third-party applications to access their {{SITE_NAME}} account without having to provide their login information to the application.</p> <p>The OAuth4 authorization flow is used to enable users to authorize third-party applications to access their {{SITE_NAME}} account without having to provide their login information to the application.</p>
<p>This page explains how to obtain API application keys, how to prompt a user for authorization, and how to obtain and use access tokens. </p> <p>This page explains how to obtain API application keys, how to prompt a user for authorization, and how to obtain and use access tokens. </p>
<h4>Step 1: Create your Application</h4> <h4>Step 1: Create your Application</h4>
<p>In the <a href="/settings/apps">apps tab of {{SITE_NAME}} settings</a>, fill in and submit the form to request new API keys. You will need:</p> <p>In the <a href="/settings/apps">apps tab of {{SITE_NAME}} settings</a>, fill in and submit the form to request new API keys. You will need:</p>
<ul> <ul>
<li>an application name</li> <li>an application name</li>
<li>a Redirect URI. May not use HTTP unless using localhost (use HTTPS instead).</li> <li>a Redirect URI. May not use HTTP unless using localhost (use HTTPS instead).</li>
<li>a brief description of what your application is intended to do</li> <li>a brief description of what your application is intended to do</li>
</ul> </ul>
<p>Don't worry too much about accuracy; you will be able to change all of these later.</p> <p>Don't worry too much about accuracy; you will be able to change all of these later.</p>
<p>{{SITE_NAME}} administrators will review and approve or deny your request for API keys. You'll know when your request has been approved when you get a private message with an access token tied to your account.</p> <p>{{SITE_NAME}} administrators will review and approve or deny your request for API keys. You'll know when your request has been approved when you get a private message with an access token tied to your account.</p>
<p>DO NOT reveal your Client ID or Access Token. Anyone with these information will be able to pretend to be you. You are responsible for keeping them a secret!</p> <p>DO NOT reveal your Client ID or Access Token. Anyone with these information will be able to pretend to be you. You are responsible for keeping them a secret!</p>
<h4>Step 2: Prompt Your User for Authorization</h4> <h4>Step 2: Prompt Your User for Authorization</h4>
<p>Send your user to <code>{{SITE_FULL}}/authorize/?client_id=YOUR_CLIENT_ID</code></p> <p>Send your user to <code>{{SITE_FULL}}/authorize/?client_id=YOUR_CLIENT_ID</code></p>
<p>If done correctly, the user will see that your application wants to access their {{SITE_NAME}} account, and be prompted to approve or deny the request.</p> <p>If done correctly, the user will see that your application wants to access their {{SITE_NAME}} account, and be prompted to approve or deny the request.</p>
<h4>Step 3: Catch the redirect</h4> <h4>Step 3: Catch the redirect</h4>
<p>The user clicks "Authorize". {{SITE_NAME}} will redirect the user's browser to GET the designated redirect URI. The access token URL parameter will be included in the redirect, which your server should process.</p> <p>The user clicks "Authorize". {{SITE_NAME}} will redirect the user's browser to GET the designated redirect URI. The access token URL parameter will be included in the redirect, which your server should process.</p>
<h4>Step 4: Using the Access Token</h4> <h4>Step 4: Using the Access Token</h4>
<p>To use the access token, include the following header in subsequent API requests to {{SITE_NAME}}: <code>Authorization: access_token_goes_here</code></p> <p>To use the access token, include the following header in subsequent API requests to {{SITE_NAME}}: <code>Authorization: access_token_goes_here</code></p>
<p>Python example:</p> <p>Python example:</p>
<pre> import requests <pre> import requests
headers = {"Authorization": "access_token_goes_here"} headers = {"Authorization": "access_token_goes_here"}
@ -78,13 +78,13 @@
r = requests.get(url, headers=headers) r = requests.get(url, headers=headers)
print(r.json()) print(r.json())
</pre> </pre>
<p>The expected result of this would be a large JSON representation of the posts on the frontpage sorted by the number of comments</p> <p>The expected result of this would be a large JSON representation of the posts on the frontpage sorted by the number of comments</p>
<br> <br>
<p>Aother python example:</p> <p>Aother python example:</p>
<pre> import requests <pre> import requests
headers = {"Authorization": "access_token_goes_here"} headers = {"Authorization": "access_token_goes_here"}
@ -93,6 +93,6 @@
r = requests.get(url, headers=headers) r = requests.get(url, headers=headers)
print(r.json()) print(r.json())
</pre> </pre>
<p>The expected result of this would be a JSON representation of unread notifications for your account</p> <p>The expected result of this would be a JSON representation of unread notifications for your account</p>
{% endblock %} {% endblock %}

View File

@ -1,7 +1,7 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}App{% endblock %} {% block pagetitle %}App{% endblock %}
{% block content %} {% block content %}
<div class="ml-3 mt-4"> <div class="ml-3 mt-4">
<h5>How to install {{SITE_NAME}}'s mobile app</h5> <h5>How to install {{SITE_NAME}}'s mobile app</h5>
{% if not v and g.browser == 'chromium' %} {% if not v and g.browser == 'chromium' %}
@ -24,6 +24,5 @@
<div class="font-weight-bold mt-4 mb-2">Step 1:</div> <div class="font-weight-bold mt-4 mb-2">Step 1:</div>
<img loading="lazy" data-nonce="{{g.nonce}}" data-onclick="expandImage()" alt="Step 1" style="height:30vh" src="{{SITE_FULL_IMAGES}}/i/{{SITE_NAME}}/enable-push-notifs.webp"> <img loading="lazy" data-nonce="{{g.nonce}}" data-onclick="expandImage()" alt="Step 1" style="height:30vh" src="{{SITE_FULL_IMAGES}}/i/{{SITE_NAME}}/enable-push-notifs.webp">
{% endif %} {% endif %}
</div>
</div>
{% endblock %} {% endblock %}

View File

@ -1,9 +1,9 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}User Badges{% endblock %} {% block pagetitle %}User Badges{% endblock %}
{% block content %} {% block content %}
<h1 class="mt-3">User Badges</h1> <h1 class="mt-3">User Badges</h1>
<div>This page describes the requirements for obtaining all profile badges.</div> <div>This page describes the requirements for obtaining all profile badges.</div>
<div class="overflow-x-auto mt-3"> <div class="overflow-x-auto mt-3">
<table class="table table-striped mb-5"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
@ -30,8 +30,5 @@
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,10 +1,10 @@
{% extends "settings2.html" %} {% extends "settings2.html" %}
{% block pagetitle %}Banned Users{% endblock %} {% block pagetitle %}Banned Users{% endblock %}
{% block content %} {% block content %}
<h5 class="font-weight-bolder text-center pt-2 pb-3"><span>Banned Users</span></h5>
<h5 class="font-weight-bolder text-center pt-2 pb-3"><span>Banned Users</span></h5> <div class="overflow-x-auto">
<div class="overflow-x-auto"><table class="table table-striped mb-5"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
<th>#</th> <th>#</th>
<th>Name</th> <th>Name</th>
@ -16,8 +16,8 @@
<th>Banned by</th> <th>Banned by</th>
<th>Unban in</th> <th>Unban in</th>
</tr> </tr>
</thead> </thead>
{% for user in users %} {% for user in users %}
<tr> <tr>
<td>{{loop.index}}</td> <td>{{loop.index}}</td>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
@ -29,9 +29,7 @@
<td>{{user.banned_by | safe}}</td> <td>{{user.banned_by | safe}}</td>
<td {% if user.unban_utc %}data-time="{{user.unban_utc}}"{% endif %}></td> <td {% if user.unban_utc %}data-time="{{user.unban_utc}}"{% endif %}></td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div>
{% endblock %} {% endblock %}

View File

@ -1,16 +1,17 @@
{% extends "settings2.html" %} {% extends "settings2.html" %}
{% block pagetitle %}Blocks{% endblock %} {% block pagetitle %}Blocks{% endblock %}
{% block content %} {% block content %}
<h5 class="font-weight-bolder text-center pt-2 pb-3"><span>Blocks</span></h5> <h5 class="font-weight-bolder text-center pt-2 pb-3"><span>Blocks</span></h5>
<div class="overflow-x-auto mt-3"><table class="table table-striped mb-5"> <div class="overflow-x-auto mt-3">
<thead class="bg-primary text-white"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>User</th> <th>User</th>
<th>Target</th> <th>Target</th>
<th>Blocked on</th> <th>Blocked on</th>
</tr> </tr>
</thead> </thead>
{% for block in blocks %} {% for block in blocks %}
<tr> <tr>
<td> <td>
{% with user = block.user %} {% with user = block.user %}
@ -24,6 +25,7 @@
</td> </td>
<td data-time="{{block.created_utc}}"></td> <td data-time="{{block.created_utc}}"></td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div>
{% endblock %} {% endblock %}

View File

@ -30,8 +30,8 @@ Icon (fa-foo-bar), Color (#ff0000), URL (/casino/roulette) #}
]-%} ]-%}
{% block content %} {% block content %}
<h2 style="text-transform: uppercase; text-align: center; letter-spacing: 3px; margin-top: 2rem">Casino</h2> <h2 style="text-transform: uppercase; text-align: center; letter-spacing: 3px; margin-top: 2rem">Casino</h2>
<div id="directory--wrapper"> <div id="directory--wrapper">
{% for game in GAME_INDEX %} {% for game in GAME_INDEX %}
<a class="directory--link" href="{{game[4]}}"> <a class="directory--link" href="{{game[4]}}">
<div class="directory--link-content"> <div class="directory--link-content">
@ -41,5 +41,5 @@ Icon (fa-foo-bar), Color (#ff0000), URL (/casino/roulette) #}
</div> </div>
</a> </a>
{% endfor %} {% endfor %}
</div> </div>
{% endblock %} {% endblock %}

View File

@ -5,15 +5,15 @@
{% endblock %} {% endblock %}
{% block screen %} {% block screen %}
<div id="blackjack-table-deck"></div> <div id="blackjack-table-deck"></div>
<div id="blackjack-table" data-state="{{game_state}}" style="position: relative"> <div id="blackjack-table" data-state="{{game_state}}" style="position: relative">
</div> </div>
{% endblock %} {% endblock %}
{% block actions %} {% block actions %}
<link rel="stylesheet" href="{{('css/casino/blackjack_screen.css') | asset}}"> <link rel="stylesheet" href="{{('css/casino/blackjack_screen.css') | asset}}">
<div class="btn-group"> <div class="btn-group">
<button type="button" id="twentyone-DEAL" class="btn btn-primary twentyone-btn" data-nonce="{{g.nonce}}" data-onclick="deal()">Deal</button> <button type="button" id="twentyone-DEAL" class="btn btn-primary twentyone-btn" data-nonce="{{g.nonce}}" data-onclick="deal()">Deal</button>
<button type="button" id="twentyone-HIT" class="btn btn-primary twentyone-btn" data-nonce="{{g.nonce}}" data-onclick="hit()" style="display: none">Hit</button> <button type="button" id="twentyone-HIT" class="btn btn-primary twentyone-btn" data-nonce="{{g.nonce}}" data-onclick="hit()" style="display: none">Hit</button>
<button type="button" id="twentyone-STAY" class="btn btn-primary twentyone-btn" data-nonce="{{g.nonce}}" data-onclick="stay()" <button type="button" id="twentyone-STAY" class="btn btn-primary twentyone-btn" data-nonce="{{g.nonce}}" data-onclick="stay()"
@ -25,21 +25,21 @@
<button type="button" id="twentyone-BUY_INSURANCE" class="btn btn-primary twentyone-btn" data-nonce="{{g.nonce}}" data-onclick="buyInsurance()" <button type="button" id="twentyone-BUY_INSURANCE" class="btn btn-primary twentyone-btn" data-nonce="{{g.nonce}}" data-onclick="buyInsurance()"
style="display: none">Buy style="display: none">Buy
Insurance</button> Insurance</button>
</div> </div>
<div id="twentyone-SPLIT_ACTIONS" class="btn-group" style="display: none"> <div id="twentyone-SPLIT_ACTIONS" class="btn-group" style="display: none">
<h5>Split</h5> <h5>Split</h5>
<button type="button" id="twentyone-HIT_SPLIT" class="btn btn-primary twentyone-btn" data-nonce="{{g.nonce}}" data-onclick="hitSplit()" style="display: none">Hit</button> <button type="button" id="twentyone-HIT_SPLIT" class="btn btn-primary twentyone-btn" data-nonce="{{g.nonce}}" data-onclick="hitSplit()" style="display: none">Hit</button>
<button type="button" id="twentyone-STAY_SPLIT" class="btn btn-primary twentyone-btn" data-nonce="{{g.nonce}}" data-onclick="staySplit()" <button type="button" id="twentyone-STAY_SPLIT" class="btn btn-primary twentyone-btn" data-nonce="{{g.nonce}}" data-onclick="staySplit()"
style="display: none">Stay</button> style="display: none">Stay</button>
</div> </div>
{% endblock %} {% endblock %}
{% block leaders %} {% block leaders %}
Blackjack Blackjack
{% endblock %} {% endblock %}
{% block feed %} {% block feed %}
Blackjack Blackjack
{% endblock %} {% endblock %}

View File

@ -1,12 +1,12 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}{{game.capitalize()}}{% endblock %} {% block pagetitle %}{{game.capitalize()}}{% endblock %}
{% block content %} {% block content %}
<link rel="stylesheet" href="{{('css/casino/game_screen.css') | asset}}"> <link rel="stylesheet" href="{{('css/casino/game_screen.css') | asset}}">
<script defer src="{{'js/casino/game_screen.js' | asset}}"></script> <script defer src="{{'js/casino/game_screen.js' | asset}}"></script>
{% block script %}{% endblock %} {% block script %}{% endblock %}
<div id="casino-game-wrapper" data-game="{{game}}" class="container-fluid" style="max-width: 500px"> <div id="casino-game-wrapper" data-game="{{game}}" class="container-fluid" style="max-width: 500px">
<div class="row row-cols-1"> <div class="row row-cols-1">
<div class="col game_screen-title"> <div class="col game_screen-title">
<h3>{{game}}</h3> <h3>{{game}}</h3>
@ -104,5 +104,5 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -2,7 +2,7 @@
{% block pagetitle %}You're in rehab!{% endblock %} {% block pagetitle %}You're in rehab!{% endblock %}
{% block pagetype %}casino-in-rehab{% endblock %} {% block pagetype %}casino-in-rehab{% endblock %}
{% block content %} {% block content %}
<div style="text-transform: uppercase; letter-spacing: 2px; display: flex; flex-direction: column; align-items: center"> <div style="text-transform: uppercase; letter-spacing: 2px; display: flex; flex-direction: column; align-items: center">
<div style="margin-top: 3rem"> <div style="margin-top: 3rem">
<h2>No one was there for Britney…</h2> <h2>No one was there for Britney…</h2>
</div> </div>
@ -10,5 +10,5 @@
<h2>…but we're here for you. You've been checked into Rehab.</h2> <h2>…but we're here for you. You've been checked into Rehab.</h2>
</div> </div>
<img loading="lazy" src="{{SITE_FULL_IMAGES}}/i/rDrama/brit.webp" style="text-align: center"> <img loading="lazy" src="{{SITE_FULL_IMAGES}}/i/rDrama/brit.webp" style="text-align: center">
</div> </div>
{% endblock %} {% endblock %}

View File

@ -11,11 +11,11 @@
{% endblock %} {% endblock %}
{% block actiontext %} {% block actiontext %}
Bets Bets
{% endblock %} {% endblock %}
{% block actions %} {% block actions %}
<div id="roulette-bets"> <div id="roulette-bets">
<div class="roulette-bet-summary"> <div class="roulette-bet-summary">
<div class="roulette-bet-summary--heading"> <div class="roulette-bet-summary--heading">
<div class="roulette-poker-chip"> <div class="roulette-poker-chip">
@ -34,13 +34,13 @@ Bets
the number will be even.</li> the number will be even.</li>
</ul> </ul>
</div> </div>
</div> </div>
<div class="game_screen-title"> <div class="game_screen-title">
<h5>How to Bet</h5> <h5>How to Bet</h5>
<hr> <hr>
</div> </div>
<table class="table"> <table class="table">
<thead> <thead>
<tr> <tr>
<th>Bet</th> <th>Bet</th>
@ -106,5 +106,5 @@ Bets
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
{% endblock %} {% endblock %}

View File

@ -1,10 +1,10 @@
{% extends "settings2.html" %} {% extends "settings2.html" %}
{% block pagetitle %}Chuds{% endblock %} {% block pagetitle %}Chuds{% endblock %}
{% block content %} {% block content %}
<h5 class="my-4">Chudded Users</h5>
<h5 class="my-4">Chudded Users</h5> <div class="overflow-x-auto">
<div class="overflow-x-auto"><table class="table table-striped mb-5"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
<th>#</th> <th>#</th>
<th>Name</th> <th>Name</th>
@ -15,8 +15,8 @@
<th>Chudded by</th> <th>Chudded by</th>
<th>Unchud in</th> <th>Unchud in</th>
</tr> </tr>
</thead> </thead>
{% for user in users %} {% for user in users %}
<tr> <tr>
<td>{{loop.index}}</td> <td>{{loop.index}}</td>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
@ -26,10 +26,8 @@
<td>{{user.truescore}}</td> <td>{{user.truescore}}</td>
<td>{{user.chudder | safe}}</td> <td>{{user.chudder | safe}}</td>
<td {% if user.chud != 1 %}data-time="{{user.chud}}"{% endif %}></td> <td {% if user.chud != 1 %}data-time="{{user.chud}}"{% endif %}></td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div>
{% endblock %} {% endblock %}

View File

@ -1,23 +1,23 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}!commenters{% endblock %} {% block pagetitle %}!commenters{% endblock %}
{% block content %} {% block content %}
<h5 class="my-3">!commenters</h5> <h5 class="my-3">!commenters</h5>
<div class="overflow-x-auto"> <div class="overflow-x-auto">
<table class="table table-striped mb-5"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
<th>#</th> <th>#</th>
<th>Name</th> <th>Name</th>
<th>First commented on</th> <th>First commented on</th>
</tr> </tr>
</thead> </thead>
{% for user, comment_id, comment_created_utc in users %} {% for user, comment_id, comment_created_utc in users %}
<tr> <tr>
<td>{{loop.index}}</td> <td>{{loop.index}}</td>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
<td><a href="/comment/{{comment_id}}" data-time="{{comment_created_utc}}"></td> <td><a href="/comment/{{comment_id}}" data-time="{{comment_created_utc}}"></td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div>
{% endblock %} {% endblock %}

View File

@ -14,18 +14,16 @@
{% set disable_votes = (request.path.startswith('/@') and not wall) and v and v.admin_level < PERMS['ENABLE_VOTE_BUTTONS_ON_USER_PAGE'] %} {% set disable_votes = (request.path.startswith('/@') and not wall) and v and v.admin_level < PERMS['ENABLE_VOTE_BUTTONS_ON_USER_PAGE'] %}
{% macro single_comment(c, level=1, collapse=False) %} {% macro single_comment(c, level=1, collapse=False) %}
{% if can_see(v, c) %}
{% set ups=c.upvotes %}
{% set downs=c.downvotes %}
{% set score=ups-downs %}
{% if can_see(v, c) %} {% if render_replies %}
{% set ups=c.upvotes %}
{% set downs=c.downvotes %}
{% set score=ups-downs %}
{% if render_replies %}
{% set replies=c.replies(sort=sort) %} {% set replies=c.replies(sort=sort) %}
{% endif %} {% endif %}
{% if (c.is_banned or c.deleted_utc) and not (v and v.admin_level >= PERMS['POST_COMMENT_MODERATION']) and not (v and v.id==c.author_id) %} {% if (c.is_banned or c.deleted_utc) and not (v and v.admin_level >= PERMS['POST_COMMENT_MODERATION']) and not (v and v.id==c.author_id) %}
<div id="comment-{{c.id}}" class="comment {% if not (v and v.id == author_id) and not (v and v.admin_level) and not comment_info %}collapsed{% endif %}"> <div id="comment-{{c.id}}" class="comment {% if not (v and v.id == author_id) and not (v and v.admin_level) and not comment_info %}collapsed{% endif %}">
<span class="comment-collapse-line" style="border-color: #{{c.author.name_color}}" data-nonce="{{g.nonce}}" data-onclick="collapse_comment('{{c.id}}')"></span> <span class="comment-collapse-line" style="border-color: #{{c.author.name_color}}" data-nonce="{{g.nonce}}" data-onclick="collapse_comment('{{c.id}}')"></span>
<div class="comment-body"> <div class="comment-body">
@ -50,21 +48,20 @@
{% endif %} {% endif %}
</div> </div>
</div> </div>
{% else %} {% else %}
{% set score=c.score %}
{% set score=c.score %} {% if v %}
{% if v %}
{% set voted=c.voted %} {% set voted=c.voted %}
{% if not voted and v.id == c.author_id %} {% if not voted and v.id == c.author_id %}
{% set voted=1 %} {% set voted=1 %}
{% endif %} {% endif %}
{% else %} {% else %}
{% set voted=-2 %} {% set voted=-2 %}
{% endif %} {% endif %}
{% if standalone and level==1 %} {% if standalone and level==1 %}
<div id="post-info-{{c.id}}" class="text-break post-info mb-1 mr-2 {% if request.path.startswith('/notifications') %}mt-5{% elif request.path == '/search/messages' %}mt-6{% else %}mt-3{% endif %}"> <div id="post-info-{{c.id}}" class="text-break post-info mb-1 mr-2 {% if request.path.startswith('/notifications') %}mt-5{% elif request.path == '/search/messages' %}mt-6{% else %}mt-3{% endif %}">
{% if c.parent_post and c.post.nsfw %} {% if c.parent_post and c.post.nsfw %}
<span class="badge badge-danger text-small-extra mr-1">NSFW</span> <span class="badge badge-danger text-small-extra mr-1">NSFW</span>
{% endif %} {% endif %}
@ -96,24 +93,22 @@
{% else %} {% else %}
<span class="font-weight-bold">Sent to <a href="/@{{c.senttouser.username}}">@{{c.senttouser.username}}</a></span> <span class="font-weight-bold">Sent to <a href="/@{{c.senttouser.username}}">@{{c.senttouser.username}}</a></span>
{% endif %} {% endif %}
</span> </span>
</div> </div>
{% endif %} {% endif %}
{% if c.parent_comment and c.parent_comment.sentto %} {% if c.parent_comment and c.parent_comment.sentto %}
{% set isreply = True %} {% set isreply = True %}
{% else %} {% else %}
{% set isreply = False %} {% set isreply = False %}
{% endif %} {% endif %}
<div id="comment-{{c.id}}" class="anchor comment {% if wall and level == 1 and not (comment_info and c == comment_info) %}mt-5{% elif wall %}mt-4{% elif standalone and level==1 %}mt-0{% endif %} {% if collapse or c.collapse_for_user(v, comment_info, request.full_path) %}collapsed{% endif %}" style="{% if isreply %}padding-left:0!important{% endif %}"> <div id="comment-{{c.id}}" class="anchor comment {% if wall and level == 1 and not (comment_info and c == comment_info) %}mt-5{% elif wall %}mt-4{% elif standalone and level==1 %}mt-0{% endif %} {% if collapse or c.collapse_for_user(v, comment_info, request.full_path) %}collapsed{% endif %}" style="{% if isreply %}padding-left:0!important{% endif %}">
{% if not isreply %} {% if not isreply %}
<span class="comment-collapse-line" style="border-color: {% if c.ghost %}var(--primary){% else %}#{{c.author.name_color}}{% endif %}" data-nonce="{{g.nonce}}" data-onclick="collapse_comment('{{c.id}}')"></span> <span class="comment-collapse-line" style="border-color: {% if c.ghost %}var(--primary){% else %}#{{c.author.name_color}}{% endif %}" data-nonce="{{g.nonce}}" data-onclick="collapse_comment('{{c.id}}')"></span>
{% endif %} {% endif %}
<div class="comment-body"> <div class="comment-body">
<div id="{% if comment_info and comment_info.id == c.id %}context{% else %}comment-{{c.id}}-only{% endif %}" class="{% if c.unread %}unread{% endif %} comment-{{c.id}}-only comment-anchor {% if comment_info and comment_info.id == c.id %}context{% endif %}{% if c.is_banned %} banned{% endif %}{% if c.deleted_utc %} deleted{% endif %}"> <div id="{% if comment_info and comment_info.id == c.id %}context{% else %}comment-{{c.id}}-only{% endif %}" class="{% if c.unread %}unread{% endif %} comment-{{c.id}}-only comment-anchor {% if comment_info and comment_info.id == c.id %}context{% endif %}{% if c.is_banned %} banned{% endif %}{% if c.deleted_utc %} deleted{% endif %}">
<div class="user-info"> <div class="user-info">
<span class="comment-collapse-icon" data-nonce="{{g.nonce}}" data-onclick="collapse_comment('{{c.id}}')"></span> <span class="comment-collapse-icon" data-nonce="{{g.nonce}}" data-onclick="collapse_comment('{{c.id}}')"></span>
@ -560,7 +555,7 @@
</div> </div>
<div class="modal fade d-md-none" id="actionsModal-{{c.id}}" tabindex="-1"> <div class="modal fade d-md-none" id="actionsModal-{{c.id}}" tabindex="-1">
<div class="modal-dialog modal-dialog-centered"> <div class="modal-dialog modal-dialog-centered">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
@ -641,14 +636,9 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{% if v and v.admin_level >= PERMS['POST_COMMENT_MODERATION'] %}
{% if v and v.admin_level >= PERMS['POST_COMMENT_MODERATION'] %}
<div class="modal fade d-md-none" id="adminModal-{{c.id}}" tabindex="-1"> <div class="modal fade d-md-none" id="adminModal-{{c.id}}" tabindex="-1">
<div class="modal-dialog modal-dialog-centered"> <div class="modal-dialog modal-dialog-centered">
<div class="modal-content"> <div class="modal-content">
@ -709,12 +699,10 @@
</div> </div>
</div> </div>
</div> </div>
{% endif %} {% endif %}
</div> </div>
{% endif %} {% endif %}
{% endif %}
{% endif %}
{% endmacro %} {% endmacro %}
{% for comment in comments %} {% for comment in comments %}

View File

@ -1,12 +1,12 @@
{%- extends 'root.html' -%} {%- extends 'root.html' -%}
{% block body_attributes %}id="{% if request.path != '/comments' %}{% block pagetype %}frontpage{% endblock %}{% endif %}" class="has_header"{% endblock %} {% block body_attributes %}id="{% if request.path != '/comments' %}{% block pagetype %}frontpage{% endblock %}{% endif %}" class="has_header"{% endblock %}
{% block body %} {% block body %}
{% block pulltorefresh %} {% block pulltorefresh %}
<div id="pulltorefresh"> <div id="pulltorefresh">
<img id="pulltorefresh-img" src="{{SITE_FULL_IMAGES}}/e/marseyunamused.webp"> <img id="pulltorefresh-img" src="{{SITE_FULL_IMAGES}}/e/marseyunamused.webp">
</div> </div>
{% endblock %} {% endblock %}
{% block banner %} {% block banner %}
{% include "modals/expanded_image.html" %} {% include "modals/expanded_image.html" %}
{% if err or '@' not in request.path %} {% if err or '@' not in request.path %}
{% if IS_FISTMAS() and not (hole and hole.has_banners) %} {% if IS_FISTMAS() and not (hole and hole.has_banners) %}
@ -76,19 +76,17 @@
</a> </a>
{% endif %} {% endif %}
{% endif %} {% endif %}
{% endblock %}
{% include "header.html" %}
{% block mobileUserBanner %}
{% endblock %}
{% if IS_HOMOWEEN() %}
{% block hauntBg %}
{% endblock %} {% endblock %}
{% endif %}
<div class="container"> {% include "header.html" %}
{% block mobileUserBanner %}{% endblock %}
{% if IS_HOMOWEEN() %}
{% block hauntBg %}{% endblock %}
{% endif %}
<div class="container">
<div class="row justify-content-around" id="main-content-row"> <div class="row justify-content-around" id="main-content-row">
<div class="order-first col h-100 {% block customPadding %}{% if request.path.startswith('/@') %}user-gutters{% else %}custom-gutters{% endif %}{% endblock %}" id="main-content-col"> <div class="order-first col h-100 {% block customPadding %}{% if request.path.startswith('/@') %}user-gutters{% else %}custom-gutters{% endif %}{% endblock %}" id="main-content-col">
{% block desktopUserBanner %}{% endblock %} {% block desktopUserBanner %}{% endblock %}
@ -107,21 +105,21 @@
{% endif %} {% endif %}
{% endblock %} {% endblock %}
</div> </div>
</div> </div>
{% block mobilenavbar %}{% include "mobile_navigation_bar.html" %}{% endblock %} {% block mobilenavbar %}{% include "mobile_navigation_bar.html" %}{% endblock %}
{% block actionsModal %}{% endblock %} {% block actionsModal %}{% endblock %}
{% block reportCommentModal %}{% endblock %} {% block reportCommentModal %}{% endblock %}
{% block GIFtoast %}{% endblock %} {% block GIFtoast %}{% endblock %}
{% block GIFpicker %}{% endblock %} {% block GIFpicker %}{% endblock %}
<div class="toast clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000"> <div class="toast clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000">
<div class="toast-body text-center"> <div class="toast-body text-center">
<i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard <i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard
</div> </div>
</div> </div>
<script defer src="{{'js/vendor/lozad.js' | asset}}"></script> <script defer src="{{'js/vendor/lozad.js' | asset}}"></script>
<script defer src="{{'js/vendor/lite-youtube.js' | asset}}"></script> <script defer src="{{'js/vendor/lite-youtube.js' | asset}}"></script>
{% if (v and v.spider) or (p and p.award_count("shit", v)) or (p and p.award_count("fireflies", v)) %} {% if (v and v.spider) or (p and p.award_count("shit", v)) or (p and p.award_count("fireflies", v)) %}
<script defer src="{{'js/vendor/critters.js' | asset}}"></script> <script defer src="{{'js/vendor/critters.js' | asset}}"></script>
{% if v and v.spider %} {% if v and v.spider %}
@ -137,10 +135,9 @@
<input hidden id="fireflies_num" value="{{p.award_count('fireflies', v)}}"> <input hidden id="fireflies_num" value="{{p.award_count('fireflies', v)}}">
<script defer src="{{'js/fireflies.js' | asset}}"></script> <script defer src="{{'js/fireflies.js' | asset}}"></script>
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if IS_EVENT() %} {% if IS_EVENT() %}
{% include "events/shared/music.html" %} {% include "events/shared/music.html" %}
{% endif %} {% endif %}
{% endblock %} {% endblock %}

View File

@ -95,15 +95,15 @@
{%- endif -%} {%- endif -%}
{% block content %} {% block content %}
<div id="directory--wrapper"> <div id="directory--wrapper">
{% for thread in DIRECTORY %} {% for thread in DIRECTORY %}
<a class="directory--link" href="{{thread[4]}}"> <a class="directory--link" href="{{thread[4]}}">
<div class="directory--link-content"> <div class="directory--link-content">
<i class="directory--link--icon fas {{thread[2]}}" style="color:{{thread[3]}}"></i> <i class="directory--link--icon fas {{thread[2]}}" style="color:{{thread[3]}}"></i>
<div class="directory--link--title">{{thread[0]|safe}}</div> <div class="directory--link--title">{{thread[0]|safe}}</div>
<div class="directory--link--description">{{thread[1]|safe}}</div> <div class="directory--link--description">{{thread[1]|safe}}</div>
</div> </div>
</a> </a>
{% endfor %} {% endfor %}
</div> </div>
{% endblock %} {% endblock %}

View File

@ -2,7 +2,7 @@
{% block pagetitle %}{{code}} {{title}}{% endblock %} {% block pagetitle %}{{code}} {{title}}{% endblock %}
{% block pagetype %}error-{{code}}{% endblock %} {% block pagetype %}error-{{code}}{% endblock %}
{% block content %} {% block content %}
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center px-3 my-5"> <div class="text-center px-3 my-5">
{% if img -%} {% if img -%}
@ -16,5 +16,5 @@
<div><a href="/" class="btn btn-primary mt-3">Go to frontpage</a></div> <div><a href="/" class="btn btn-primary mt-3">Go to frontpage</a></div>
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -2,7 +2,7 @@
{% block pagetitle %}NSFW{% endblock %} {% block pagetitle %}NSFW{% endblock %}
{% block pagetype %}error-451{% endblock %} {% block pagetype %}error-451{% endblock %}
{% block content %} {% block content %}
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col col-md-5"> <div class="col col-md-5">
<div class="text-center px-3 mt-3"> <div class="text-center px-3 mt-3">
<img alt=":#marseytwerking:" loading="lazy" src="{{SITE_FULL_IMAGES}}/e/marseytwerking.webp"> <img alt=":#marseytwerking:" loading="lazy" src="{{SITE_FULL_IMAGES}}/e/marseytwerking.webp">
@ -18,5 +18,5 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,11 +1,11 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}Formatting{% endblock %} {% block pagetitle %}Formatting{% endblock %}
{% block content %} {% block content %}
<h3 class="ml-2 mt-4">Markdown Formatting</h3> <h3 class="ml-2 mt-4">Markdown Formatting</h3>
<div class="ml-2">You can use Markdown formatting:</div> <div class="ml-2">You can use Markdown formatting:</div>
<div class="overflow-x-auto mt-3"> <div class="overflow-x-auto mt-3">
<table id="formatting-table" class="table table-striped generate-copy-buttons"> <table id="formatting-table" class="table table-striped generate-copy-buttons">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
@ -39,8 +39,8 @@
<td>Horizontal Rule</td> <td>Horizontal Rule</td>
<td> <td>
<pre>Text 1 <pre>Text 1
--- ---
Text 2</pre> Text 2</pre>
</td> </td>
<td> <td>
Text 1 Text 1
@ -425,48 +425,48 @@ Text 2</pre>
{%- endif %} {%- endif %}
</tbody> </tbody>
</table> </table>
</div> </div>
<hr class="my-6"> <hr class="my-6">
<h1>HTML Formatting</h1> <h1>HTML Formatting</h1>
And we allow custom HTML in most places: And we allow custom HTML in most places:
<h4 class="mt-3">Allowed Tags</h4> <h4 class="mt-3">Allowed Tags</h4>
<ul> <ul>
{% for tag in allowed_tags %} {% for tag in allowed_tags %}
<li>{{tag}}</li> <li>{{tag}}</li>
{% endfor %} {% endfor %}
</ul> </ul>
<h5 class="mt-4">Allowed Styles</h5> <h5 class="mt-4">Allowed Styles</h5>
<ul> <ul>
{% for style in allowed_styles %} {% for style in allowed_styles %}
<li>{{style}}</li> <li>{{style}}</li>
{% endfor %} {% endfor %}
</ul> </ul>
<hr class="my-6"> <hr class="my-6">
<h1 id="approved">Approved Media Hosts</h1> <h1 id="approved">Approved Media Hosts</h1>
Image files, video files, and audio files from these sources will get embedded automatically: Image files, video files, and audio files from these sources will get embedded automatically:
<ul class="mt-3"> <ul class="mt-3">
{% for host in approved_embed_hosts %} {% for host in approved_embed_hosts %}
<li>{{host}}</li> <li>{{host}}</li>
{% endfor %} {% endfor %}
</ul> </ul>
<div class="toast clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000"> <div class="toast clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000">
<div class="toast-body text-center"> <div class="toast-body text-center">
<i class="fas fa-check-circle text-success mr-2"></i>Text copied to clipboard <i class="fas fa-check-circle text-success mr-2"></i>Text copied to clipboard
</div> </div>
</div> </div>
<script defer src="{{'js/vendor/clipboard.js' | asset}}"></script> <script defer src="{{'js/vendor/clipboard.js' | asset}}"></script>
<script defer src="{{'js/formatting.js' | asset}}"></script> <script defer src="{{'js/formatting.js' | asset}}"></script>
{% endblock %} {% endblock %}

View File

@ -1,22 +1,22 @@
{% extends "settings2.html" %} {% extends "settings2.html" %}
{% block pagetitle %}Grassed Users{% endblock %} {% block pagetitle %}Grassed Users{% endblock %}
{% block content %} {% block content %}
<div class="overflow-x-auto"> <div class="overflow-x-auto">
<table class="table table-striped mb-5"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
<th>#</th> <th>#</th>
<th>Name</th> <th>Name</th>
<th>Grasser</th> <th>Grasser</th>
</tr> </tr>
</thead> </thead>
{% for user in users %} {% for user in users %}
<tr> <tr>
<td>{{loop.index}}</td> <td>{{loop.index}}</td>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
<td>{{user.ban_reason.split('by ')[1] | safe}}</td> <td>{{user.ban_reason.split('by ')[1] | safe}}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div>
{% endblock %} {% endblock %}

View File

@ -1,8 +1,7 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}!{{group}}{% endblock %} {% block pagetitle %}!{{group}}{% endblock %}
{% block content %} {% block content %}
{% if v.id != group.owner.id %}
{% if v.id != group.owner.id %}
<button id="leave-{{group}}" type="button" class="mt-4 btn btn-danger btn-block {% if v.id not in group.membership_user_ids %}d-none{% endif %}" data-nonce="{{g.nonce}}" data-onclick="postToastSwitch(this,'/!{{group}}/leave','leave-{{group}}','apply-{{group}}','d-none')"> <button id="leave-{{group}}" type="button" class="mt-4 btn btn-danger btn-block {% if v.id not in group.membership_user_ids %}d-none{% endif %}" data-nonce="{{g.nonce}}" data-onclick="postToastSwitch(this,'/!{{group}}/leave','leave-{{group}}','apply-{{group}}','d-none')">
{%- if v.id in group.member_ids or group.name == 'verifiedrich' -%} {%- if v.id in group.member_ids or group.name == 'verifiedrich' -%}
Leave Leave
@ -12,10 +11,10 @@
</button> </button>
<button id="apply-{{group}}" type="button" class="mt-4 {% if v.id in group.membership_user_ids %}d-none{% endif %} btn btn-success btn-block" data-nonce="{{g.nonce}}" data-onclick="postToastSwitch(this,'/!{{group}}/apply','leave-{{group}}','apply-{{group}}','d-none')">{% if group.name != 'verifiedrich' %}Apply to {% endif %}Join</button> <button id="apply-{{group}}" type="button" class="mt-4 {% if v.id in group.membership_user_ids %}d-none{% endif %} btn btn-success btn-block" data-nonce="{{g.nonce}}" data-onclick="postToastSwitch(this,'/!{{group}}/apply','leave-{{group}}','apply-{{group}}','d-none')">{% if group.name != 'verifiedrich' %}Apply to {% endif %}Join</button>
{% endif %} {% endif %}
<br> <br>
{% macro process_memberships(memberships, name) %} {% macro process_memberships(memberships, name) %}
<h5 class="my-3">!{{group}} {{name}}</h5> <h5 class="my-3">!{{group}} {{name}}</h5>
<div class="overflow-x-auto mt-1"> <div class="overflow-x-auto mt-1">
@ -82,15 +81,14 @@
</tbody> </tbody>
</table> </table>
</div> </div>
{% endmacro %} {% endmacro %}
{% if v.mods_group(group) %} {% if v.mods_group(group) %}
{{process_memberships(applications, 'applications')}} {{process_memberships(applications, 'applications')}}
{{process_memberships(members, 'members')}} {{process_memberships(members, 'members')}}
<script defer src="{{'js/group_members_owner.js' | asset}}"></script> <script defer src="{{'js/group_members_owner.js' | asset}}"></script>
{% else %} {% else %}
{{process_memberships(members, 'members')}} {{process_memberships(members, 'members')}}
{{process_memberships(applications, 'applications')}} {{process_memberships(applications, 'applications')}}
{% endif %} {% endif %}
{% endblock %} {% endblock %}

View File

@ -1,7 +1,7 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}Ping Groups{% endblock %} {% block pagetitle %}Ping Groups{% endblock %}
{% block content %} {% block content %}
<div class="px-3"> <div class="px-3">
<h3 class="mt-3">Create Ping Group</h3> <h3 class="mt-3">Create Ping Group</h3>
<form class="mt-3" action="/create_group" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHRReload(this)"> <form class="mt-3" action="/create_group" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHRReload(this)">
<div class="container pb-0" style="background-color: transparent !important"> <div class="container pb-0" style="background-color: transparent !important">
@ -61,6 +61,5 @@
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -101,5 +101,5 @@
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}

View File

@ -1,22 +1,23 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}Users {{verb}} /h/{{hole}}{% endblock %} {% block pagetitle %}Users {{verb}} /h/{{hole}}{% endblock %}
{% block content %} {% block content %}
<h5 class="mt-3">Users {{verb}} /h/{{hole}}</h5> <h5 class="mt-3">Users {{verb}} /h/{{hole}}</h5>
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5"> <div class="overflow-x-auto mt-1">
<thead class="bg-primary text-white"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>#</th> <th>#</th>
<th>Name</th> <th>Name</th>
<th>{{verb.title()}} since</th> <th>{{verb.title()}} since</th>
</tr> </tr>
</thead> </thead>
{% for user, object in users %} {% for user, object in users %}
<tr> <tr>
<td>{{loop.index}}</td> <td>{{loop.index}}</td>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
<td {% if object.created_utc %}data-time="{{object.created_utc}}"{% endif %}></td> <td {% if object.created_utc %}data-time="{{object.created_utc}}"{% endif %}></td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div>
{% endblock %} {% endblock %}

View File

@ -1,7 +1,7 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}Create a hole{% endblock %} {% block pagetitle %}Create a hole{% endblock %}
{% block content %} {% block content %}
<form class="mt-3" id="submitform" action="/create_hole" method="post" data-nonce="{{g.nonce}}"> <form class="mt-3" id="submitform" action="/create_hole" method="post" data-nonce="{{g.nonce}}">
<div class="container"> <div class="container">
<div class="row justify-content-center mb-4 pb-6"> <div class="row justify-content-center mb-4 pb-6">
<div class="col col-md-6 p-3 py-md-0"> <div class="col col-md-6 p-3 py-md-0">
@ -25,5 +25,5 @@
</div> </div>
</div> </div>
</div> </div>
</form> </form>
{% endblock %} {% endblock %}

View File

@ -1,9 +1,10 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}/h/{{hole}} Exiles{% endblock %} {% block pagetitle %}/h/{{hole}} Exiles{% endblock %}
{% block content %} {% block content %}
<h5 class="my-4 ml-2">Users exiled from /h/{{hole}}</h5> <h5 class="my-4 ml-2">Users exiled from /h/{{hole}}</h5>
<div class="overflow-x-auto"><table class="table table-striped mb-5"> <div class="overflow-x-auto">
<thead class="bg-primary text-white"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>#</th> <th>#</th>
<th>Name</th> <th>Name</th>
@ -11,8 +12,8 @@
<th>Exiled since</th> <th>Exiled since</th>
<th class="disable-sort-click"></th> <th class="disable-sort-click"></th>
</tr> </tr>
</thead> </thead>
{% for user, exile in users %} {% for user, exile in users %}
<tr> <tr>
<td>{{loop.index}}</td> <td>{{loop.index}}</td>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
@ -31,7 +32,7 @@
{% endif %} {% endif %}
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div>
{% endblock %} {% endblock %}

View File

@ -1,8 +1,8 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}Hole List{% endblock %} {% block pagetitle %}Hole List{% endblock %}
{% block content %} {% block content %}
<h5 class="mt-3 mb-1">Hole List</h5> <h5 class="mt-3 mb-1">Hole List</h5>
<div class="overflow-x-auto"> <div class="overflow-x-auto">
<table class="table table-striped mb-5"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
@ -30,8 +30,5 @@
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,20 +1,19 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}/h/{{hole}} Mods{% endblock %} {% block pagetitle %}/h/{{hole}} Mods{% endblock %}
{% block content %} {% block content %}
<script defer src="{{'js/remove_mod.js' | asset}}"></script>
<script defer src="{{'js/remove_mod.js' | asset}}"></script> <h5 class="mt-2">/h/{{hole}} Mods</h5>
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5">
<h5 class="mt-2">/h/{{hole}} Mods</h5> <thead class="bg-primary text-white">
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>#</th> <th>#</th>
<th>Name</th> <th>Name</th>
<th>Mod since</th> <th>Mod since</th>
<th class="disable-sort-click"></th> <th class="disable-sort-click"></th>
</tr> </tr>
</thead> </thead>
{% for user, mod in users %} {% for user, mod in users %}
<tr> <tr>
<td>{{loop.index}}</td> <td>{{loop.index}}</td>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
@ -29,16 +28,15 @@
{% endif %} {% endif %}
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
{% if v.mods(hole.name) %} {% if v.mods(hole.name) %}
<form action="/h/{{hole}}/add_mod" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHRReload(this)"> <form action="/h/{{hole}}/add_mod" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHRReload(this)">
<input hidden name="formkey" value="{{v|formkey}}"> <input hidden name="formkey" value="{{v|formkey}}">
<input class="form-control" style="display:inline;width:250px" autocomplete="off" type="text" name="user" class="form-control" placeholder="Enter username.."> <input class="form-control" style="display:inline;width:250px" autocomplete="off" type="text" name="user" class="form-control" placeholder="Enter username..">
<input autocomplete="off" class="btn btn-primary ml-auto" type="submit" value="Add Mod" style="margin-bottom: 5px"> <input autocomplete="off" class="btn btn-primary ml-auto" type="submit" value="Add Mod" style="margin-bottom: 5px">
</form> </form>
{% endif %} {% endif %}
{% endblock %} {% endblock %}

View File

@ -2,11 +2,10 @@
{% block pagetitle %}/h/{{hole}} Settings{% endblock %} {% block pagetitle %}/h/{{hole}} Settings{% endblock %}
{% block content %} {% block content %}
<div class="title mt-5">
<div class="title mt-5">
<label class="text-lg" for="stealth">Stealth Mode</label> <label class="text-lg" for="stealth">Stealth Mode</label>
</div> </div>
<div class="d-inline-block w-lg-100 pt-1 pt-lg-3"> <div class="d-inline-block w-lg-100 pt-1 pt-lg-3">
<div class="custom-control custom-switch"> <div class="custom-control custom-switch">
<input autocomplete="off" type="checkbox" class="custom-control-input" id="stealth" name="stealth" {% if hole.stealth %}checked{% endif %} data-nonce="{{g.nonce}}" data-onchange="postToastSwitch(this,'/h/{{hole}}/stealth')"> <input autocomplete="off" type="checkbox" class="custom-control-input" id="stealth" name="stealth" {% if hole.stealth %}checked{% endif %} data-nonce="{{g.nonce}}" data-onchange="postToastSwitch(this,'/h/{{hole}}/stealth')">
<label class="custom-control-label" for="stealth"></label> <label class="custom-control-label" for="stealth"></label>
@ -14,10 +13,10 @@
<span class="text-small text-muted"> <span class="text-small text-muted">
Make this hole blocked by default (users can visit it to unblock it). Make this hole blocked by default (users can visit it to unblock it).
</span> </span>
</div> </div>
<h5 class="mt-5">Marsey</h5> <h5 class="mt-5">Marsey</h5>
<div class="settings-section rounded"> <div class="settings-section rounded">
<img loading="lazy" alt="sub marsey picture" src="{{hole.marsey_url}}" style="max-width:100px"> <img loading="lazy" alt="sub marsey picture" src="{{hole.marsey_url}}" style="max-width:100px">
<form class="d-inline-block" action="/h/{{hole}}/marsey_image" method="post" enctype="multipart/form-data"> <form class="d-inline-block" action="/h/{{hole}}/marsey_image" method="post" enctype="multipart/form-data">
<input hidden name="formkey" value="{{v|formkey}}"> <input hidden name="formkey" value="{{v|formkey}}">
@ -28,10 +27,10 @@
<div class="text-small text-muted mt-3"> <div class="text-small text-muted mt-3">
All image files are supported. Max file size is {% if v and v.patron %}16{% else %}8{% endif %} MB. All image files are supported. Max file size is {% if v and v.patron %}16{% else %}8{% endif %} MB.
</div> </div>
</div> </div>
<h5 class=" mt-5">Sidebar Picture</h5> <h5 class=" mt-5">Sidebar Picture</h5>
<div class="settings-section rounded"> <div class="settings-section rounded">
<img class="mr-3" loading="lazy" alt="sub sidebar picture" src="{{hole.sidebar_url}}" style="max-width:min(300px,100%)"> <img class="mr-3" loading="lazy" alt="sub sidebar picture" src="{{hole.sidebar_url}}" style="max-width:min(300px,100%)">
<form class="d-inline-block mt-2" action="/h/{{hole}}/sidebar_image" method="post" enctype="multipart/form-data"> <form class="d-inline-block mt-2" action="/h/{{hole}}/sidebar_image" method="post" enctype="multipart/form-data">
<input hidden name="formkey" value="{{v|formkey}}"> <input hidden name="formkey" value="{{v|formkey}}">
@ -42,10 +41,10 @@
<div class="text-small text-muted mt-3"> <div class="text-small text-muted mt-3">
All image files are supported. Max file size is {% if v and v.patron %}16{% else %}8{% endif %} MB. All image files are supported. Max file size is {% if v and v.patron %}16{% else %}8{% endif %} MB.
</div> </div>
</div> </div>
<h5 class="mt-5">Banners</h5> <h5 class="mt-5">Banners</h5>
<div class="settings-section rounded hole-banner-update-section"> <div class="settings-section rounded hole-banner-update-section">
{% for banner in hole.banner_urls %} {% for banner in hole.banner_urls %}
<section id="hole-banner-update-{{loop.index - 1}}" class="mt-5 d-block hole-settings-subsection"> <section id="hole-banner-update-{{loop.index - 1}}" class="mt-5 d-block hole-settings-subsection">
<img class="mr-3" loading="lazy" alt="/h/{{hole.name}} banner" src="{{banner}}" style="max-height:300px;max-width:100%"> <img class="mr-3" loading="lazy" alt="/h/{{hole.name}} banner" src="{{banner}}" style="max-height:300px;max-width:100%">
@ -70,9 +69,9 @@
</div> </div>
</section> </section>
{% endif %} {% endif %}
</div> </div>
<div class="row my-5 pt-5"> <div class="row my-5 pt-5">
<div class="col col-md-8"> <div class="col col-md-8">
<div class="settings"> <div class="settings">
<div id="description"> <div id="description">
@ -91,9 +90,9 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col col-md-8"> <div class="col col-md-8">
<div class="settings"> <div class="settings">
<div id="description"> <div id="description">
@ -112,5 +111,5 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,4 +1,5 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block title %} {% block title %}
{% if hole %} {% if hole %}
<title>/h/{{hole.name}}</title> <title>/h/{{hole.name}}</title>
@ -12,36 +13,40 @@
{{super()}} {{super()}}
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block pagetitle %}{{SITE_NAME if not hole else '/h/' ~ hole.name}}{% endblock %} {% block pagetitle %}{{SITE_NAME if not hole else '/h/' ~ hole.name}}{% endblock %}
{% block head_final %} {% block head_final %}
{% set preview = hole.siderbarurl if hole and hole.sidebarurl else hole.bannerurl %} {% set preview = hole.siderbarurl if hole and hole.sidebarurl else hole.bannerurl %}
{% if hole %}
<meta property="og:type" content="article">
<meta property="og:title" content="/h/{{hole}}">
<meta property="og:site_name" content="{{SITE}}">
<meta property="og:image" content="{{preview}}">
<meta property="og:url" content="{{request.full_path}}">
<meta property="og:author" name="author" content="{{SITE_FULL}}">
<meta name="twitter:card" content="summary_large_image"> {% if hole %}
<meta name="twitter:site" content="{{SITE_FULL}}"> <meta property="og:type" content="article">
<meta name="twitter:title" content="/h/{{hole.name}}"> <meta property="og:title" content="/h/{{hole}}">
<meta name="twitter:creator" content="{{SITE_FULL}}"> <meta property="og:site_name" content="{{SITE}}">
<meta name="twitter:image" content="{{preview}}"> <meta property="og:image" content="{{preview}}">
<meta name="twitter:url" content="{{request.full_path}}"> <meta property="og:url" content="{{request.full_path}}">
{% endif %} <meta property="og:author" name="author" content="{{SITE_FULL}}">
{% if hole.sidebar %}
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="{{SITE_FULL}}">
<meta name="twitter:title" content="/h/{{hole.name}}">
<meta name="twitter:creator" content="{{SITE_FULL}}">
<meta name="twitter:image" content="{{preview}}">
<meta name="twitter:url" content="{{request.full_path}}">
{% endif %}
{% if hole.sidebar %}
<meta property="og:description" name="description" content="{{hole.sidebar}}"> <meta property="og:description" name="description" content="{{hole.sidebar}}">
<meta name="twitter:description" content="{{hole.sidebar}}"> <meta name="twitter:description" content="{{hole.sidebar}}">
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block desktopBanner %} {% block desktopBanner %}
{%- set search_placeholder = "Search" -%} {%- set search_placeholder = "Search" -%}
{%- if hole -%} {%- if hole -%}
{%- set search_placeholder = "Search (try 'hole:" ~ hole.name ~ "')" -%} {%- set search_placeholder = "Search (try 'hole:" ~ hole.name ~ "')" -%}
{%- endif -%} {%- endif -%}
<div class="row" style="overflow: visible;padding-top:5px"> <div class="row" style="overflow: visible;padding-top:5px">
<div class="col"> <div class="col">
<form id="searchform" class="form-inline d-md-none search flex-nowrap mt-2" action="/search/posts" method="get"> <form id="searchform" class="form-inline d-md-none search flex-nowrap mt-2" action="/search/posts" method="get">
<input autocomplete="off" class="form-control form-control-sm w-100" type="search" placeholder="{{search_placeholder}}" name="q"> <input autocomplete="off" class="form-control form-control-sm w-100" type="search" placeholder="{{search_placeholder}}" name="q">
@ -88,43 +93,39 @@
{% endblock %} {% endblock %}
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
{% block PseudoSubmitForm %}{% endblock %} {% block PseudoSubmitForm %}{% endblock %}
{% block content %} {% block content %}
<div class="row no-gutters {% if listing %}mt-md-3{% elif not listing %}my-md-3{% endif %}">
<div class="row no-gutters {% if listing %}mt-md-3{% elif not listing %}my-md-3{% endif %}">
<div class="col-12"> <div class="col-12">
<div class="posts"> <div class="posts">
{% include "post_listing.html" %} {% include "post_listing.html" %}
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% if listing %} {% if listing %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endif %} {% endif %}
{% if request.path == '/' and v %} {% if request.path == '/' and v %}
<script defer src="{{'js/register_service_worker.js' | asset}}"></script> <script defer src="{{'js/register_service_worker.js' | asset}}"></script>
{% endif %} {% endif %}
{% if request.path == '/' and g.browser != 'webview' and time.time() > session.get('tooltip_dismissed',0)+86400*30 %} {% if request.path == '/' and g.browser != 'webview' and time.time() > session.get('tooltip_dismissed',0)+86400*30 %}
<div id="mobile-prompt-container" class="fixed-top"> <div id="mobile-prompt-container" class="fixed-top">
<div id="mobile-prompt" data-bs-toggle="tooltip" data-bs-container="#mobile-prompt-container" data-bs-placement="top" data-bs-trigger="click" data-bs-html="true" title="<i class='dismiss-beg fas fa-x'></i>Click me to install the {{SITE_NAME}} mobile app{% if g.browser == 'iphone' %} and be able to enable push notifications{% endif %}"></div> <div id="mobile-prompt" data-bs-toggle="tooltip" data-bs-container="#mobile-prompt-container" data-bs-placement="top" data-bs-trigger="click" data-bs-html="true" title="<i class='dismiss-beg fas fa-x'></i>Click me to install the {{SITE_NAME}} mobile app{% if g.browser == 'iphone' %} and be able to enable push notifications{% endif %}"></div>
</div> </div>
<script defer src="{{'js/mobile_prompt.js' | asset}}"></script> <script defer src="{{'js/mobile_prompt.js' | asset}}"></script>
{% endif %} {% endif %}
{% if FP and request.path == '/' and v and not v.fp %} {% if FP and request.path == '/' and v and not v.fp %}
<script defer src="{{'js/fp.js' | asset}}"></script> <script defer src="{{'js/fp.js' | asset}}"></script>
{% endif %} {% endif %}
{% endblock %} {% endblock %}

View File

@ -29,5 +29,5 @@
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}

View File

@ -24,9 +24,9 @@
{% endmacro %} {% endmacro %}
{% macro leaderboard_table(lb) %} {% macro leaderboard_table(lb) %}
<h5 class="font-weight-bolder text-center pt-2 pb-3"><span id="leaderboard-{{lb.html_id}}">{% if lb.desc %}Top{% else %}Bottom{% endif %} {{lb.limit}} {% if lb.table_header_name != 'most blocked' %}by{% endif %} {{lb.table_header_name}}</span></h5> <h5 class="font-weight-bolder text-center pt-2 pb-3"><span id="leaderboard-{{lb.html_id}}">{% if lb.desc %}Top{% else %}Bottom{% endif %} {{lb.limit}} {% if lb.table_header_name != 'most blocked' %}by{% endif %} {{lb.table_header_name}}</span></h5>
<div class="overflow-x-auto"> <div class="overflow-x-auto">
<table class="table table-striped mb-5"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
<th>#</th> <th>#</th>
@ -46,8 +46,8 @@
{{format_user_in_table(v, "style=\"border-top:2px solid var(--primary)\"", lb.v_position, lb.v_value, lb.user_relative_url)}} {{format_user_in_table(v, "style=\"border-top:2px solid var(--primary)\"", lb.v_position, lb.v_value, lb.user_relative_url)}}
{% endif %} {% endif %}
</tbody> </tbody>
</table> </table>
</div> </div>
{% endmacro %} {% endmacro %}
{% for lb in leaderboards %} {% for lb in leaderboards %}

View File

@ -1,7 +1,7 @@
{% extends "settings2.html" %} {% extends "settings2.html" %}
{% block pagetitle %}Moderation Log{% endblock %} {% block pagetitle %}Moderation Log{% endblock %}
{% block content %} {% block content %}
<div class="row justify-content-around"> <div class="row justify-content-around">
<div class="col h-100"> <div class="col h-100">
<div class="justify-content-between"> <div class="justify-content-between">
<div> <div>
@ -81,12 +81,12 @@
</div> </div>
{% include "pagination.html" %} {% include "pagination.html" %}
</div> </div>
</div> </div>
<div class="toast clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000"> <div class="toast clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000">
<div class="toast-body text-center"> <div class="toast-body text-center">
<i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard <i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard
</div> </div>
</div> </div>
<script defer src="{{'js/vendor/clipboard.js' | asset}}"></script> <script defer src="{{'js/vendor/clipboard.js' | asset}}"></script>
{% endblock %} {% endblock %}

View File

@ -3,7 +3,7 @@
{% block authtitle %}Reset your password.{% endblock %} {% block authtitle %}Reset your password.{% endblock %}
{% block authtext %}If there's an email address associated with your account, you can use it to recover your {{SITE_NAME}} account and change your password.{% endblock %} {% block authtext %}If there's an email address associated with your account, you can use it to recover your {{SITE_NAME}} account and change your password.{% endblock %}
{% block content %} {% block content %}
<div id="login-form"> <div id="login-form">
<form action="/forgot" method="post" class="mt-3"> <form action="/forgot" method="post" class="mt-3">
<label for="username" class="mt-3">Username</label> <label for="username" class="mt-3">Username</label>
<input autocomplete="off" class="form-control" id="username" type="text" name="username" required> <input autocomplete="off" class="form-control" id="username" type="text" name="username" required>
@ -11,5 +11,5 @@
<input type="email" autocomplete="off" class="form-control" id="password" name="email" required> <input type="email" autocomplete="off" class="form-control" id="password" name="email" required>
<input autocomplete="off" class="btn btn-primary login w-100 mt-3" type="submit" value="Send recovery link"> <input autocomplete="off" class="btn btn-primary login w-100 mt-3" type="submit" value="Send recovery link">
</form> </form>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -8,7 +8,7 @@
{% block authtitle %}Welcome back.{% endblock %} {% block authtitle %}Welcome back.{% endblock %}
{% block authtext %}Glad to have you back!{% endblock %} {% block authtext %}Glad to have you back!{% endblock %}
{% block content %} {% block content %}
<div id="login-form"> <div id="login-form">
{%- set error_text -%} {%- set error_text -%}
Incorrect username, email address, or password.<br> Incorrect username, email address, or password.<br>
<a href="/forgot" class="alert-link">Forgot password?</a> <a href="/forgot" class="alert-link">Forgot password?</a>
@ -28,5 +28,5 @@
Don't have an account? <a href="/signup{{'?redirect='+redirect if redirect else ''}}" class="font-weight-bold toggle-login">Sign up</a> Don't have an account? <a href="/signup{{'?redirect='+redirect if redirect else ''}}" class="font-weight-bold toggle-login">Sign up</a>
</div> </div>
</form> </form>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -6,12 +6,12 @@
{% set root_scope.include_cf_2fa_verify = false %} {% set root_scope.include_cf_2fa_verify = false %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<div id="login-form"> <div id="login-form">
<h2>Two-step login</h2> <h2>Two-step login</h2>
<p class="text-muted mb-md-5">To login, please enter the 6-digit verification code generated in your authenticator app.</p> <p class="text-muted mb-md-5">To login, please enter the 6-digit verification code generated in your authenticator app.</p>
{% if failed %}{{macros.alert('Invalid verification code. Please try again.', true)}}{% endif %} {% if failed %}{{macros.alert('Invalid verification code. Please try again.', true)}}{% endif %}
</div> </div>
<form action="/login" method="post" class="mt-md-3" id="login"> <form action="/login" method="post" class="mt-md-3" id="login">
<input hidden name="username" value="{{v.username}}"> <input hidden name="username" value="{{v.username}}">
<input hidden name="redirect" value="{{redirect}}"> <input hidden name="redirect" value="{{redirect}}">
<input hidden name="time" value="{{time}}"> <input hidden name="time" value="{{time}}">
@ -20,6 +20,6 @@
<input autocomplete="off" class="form-control" id="2fa_token" name="2fa_token" type="number" pattern="[0-9]" inputmode="numeric" placeholder="6-digit code"> <input autocomplete="off" class="form-control" id="2fa_token" name="2fa_token" type="number" pattern="[0-9]" inputmode="numeric" placeholder="6-digit code">
<small><a href="/lost_2fa">Lost your two-factor authentication device?</a></small> <small><a href="/lost_2fa">Lost your two-factor authentication device?</a></small>
<button type="submit" class="btn btn-primary login w-100 mt-3" id="login_button">Sign in</button> <button type="submit" class="btn btn-primary login w-100 mt-3" id="login_button">Sign in</button>
</form> </form>
<script defer src="{{'js/login_2fa.js' | asset}}"></script> <script defer src="{{'js/login_2fa.js' | asset}}"></script>
{% endblock %} {% endblock %}

View File

@ -3,7 +3,7 @@
{% block authtitle %}Remove the two-factor authentication from your account.{% endblock %} {% block authtitle %}Remove the two-factor authentication from your account.{% endblock %}
{% block authtext %}If all information is correct, you will be able to remove 2-factor authentication from your account in 24 hours.{% endblock %} {% block authtext %}If all information is correct, you will be able to remove 2-factor authentication from your account in 24 hours.{% endblock %}
{% block content %} {% block content %}
<div id="login-form"> <div id="login-form">
<form action="/lost_2fa" method="post" class="mt-3"> <form action="/lost_2fa" method="post" class="mt-3">
<label for="username" class="mt-3">Username</label> <label for="username" class="mt-3">Username</label>
<input autocomplete="off" class="form-control" id="username" type="text" name="username" required{% if v %} value="{{v.username}}" disabled{% endif %}> <input autocomplete="off" class="form-control" id="username" type="text" name="username" required{% if v %} value="{{v.username}}" disabled{% endif %}>
@ -13,5 +13,5 @@
<input autocomplete="off" class="form-control" id="password" type="email" name="email" required{% if v %} value="{{v.email}}" disabled{% endif %}> <input autocomplete="off" class="form-control" id="password" type="email" name="email" required{% if v %} value="{{v.email}}" disabled{% endif %}>
<input autocomplete="off" class="btn btn-primary login w-100 mt-3" type="submit" value="Send recovery link"> <input autocomplete="off" class="btn btn-primary login w-100 mt-3" type="submit" value="Send recovery link">
</form> </form>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -2,7 +2,7 @@
{% block pagetitle %}{{SITE_NAME}} Password Reset{% endblock %} {% block pagetitle %}{{SITE_NAME}} Password Reset{% endblock %}
{% block authtitle %}Change your password.{% endblock %} {% block authtitle %}Change your password.{% endblock %}
{% block content %} {% block content %}
<div id="login-form"> <div id="login-form">
<form action="/reset" method="post" class="mt-3"> <form action="/reset" method="post" class="mt-3">
<input hidden name="time" value="{{time}}"> <input hidden name="time" value="{{time}}">
<input hidden name="user_id" value="{{v.id}}"> <input hidden name="user_id" value="{{v.id}}">
@ -13,5 +13,5 @@
<input autocomplete="off" class="form-control" id="confentry" type="password" minlength="8" maxlength="100" name="confirm_password" required> <input autocomplete="off" class="form-control" id="confentry" type="password" minlength="8" maxlength="100" name="confirm_password" required>
<input autocomplete="off" class="btn btn-primary login w-100 mt-3" type="submit" value="Change password"> <input autocomplete="off" class="btn btn-primary login w-100 mt-3" type="submit" value="Change password">
</form> </form>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,7 +1,8 @@
{%- extends 'login/authforms.html' -%} {%- extends 'login/authforms.html' -%}
{% block pagetitle -%} {% block pagetitle -%}
{{ref_user.username ~ " invites you to " ~ SITE_NAME if ref_user else "Sign Up"}} {{ref_user.username ~ " invites you to " ~ SITE_NAME if ref_user else "Sign Up"}}
{%- endblock %} {%- endblock %}
{% block pagetype %}login{% endblock %} {% block pagetype %}login{% endblock %}
{% block template_config %} {% block template_config %}
@ -27,7 +28,7 @@
{% endif %} {% endif %}
{% block content %} {% block content %}
<div id="register-form"> <div id="register-form">
{% if not ref_user and SITE_NAME == 'rDrama' and login_required %} {% if not ref_user and SITE_NAME == 'rDrama' and login_required %}
<img loading="lazy" id="logo" alt="logo" src="{{'logo.webp' | asset_siteimg}}" width=70> <img loading="lazy" id="logo" alt="logo" src="{{'logo.webp' | asset_siteimg}}" width=70>
<hr> <hr>
@ -114,11 +115,12 @@
* okay so it's actually whenever I feel like hitting that Login Required button. I'm really sorry, but you have to understand: WE WANT TO BE YOUR FRIEND. And we can't do that unless you join. There's really no reason not to. Like I said, 8 seconds <em>at most</em> to register. What are you worried about? Your email being sold? I don't even know what that means and you don't either. Go ahead, tell me what you'd do if someone said like, "alright bud, go sell your email address to someone." WHAT DOES THAT MEAN? And, again, you really don't even need an email. Just a username and some stupid password. That's <strong>all</strong>. Come on. Peer pressure. * okay so it's actually whenever I feel like hitting that Login Required button. I'm really sorry, but you have to understand: WE WANT TO BE YOUR FRIEND. And we can't do that unless you join. There's really no reason not to. Like I said, 8 seconds <em>at most</em> to register. What are you worried about? Your email being sold? I don't even know what that means and you don't either. Go ahead, tell me what you'd do if someone said like, "alright bud, go sell your email address to someone." WHAT DOES THAT MEAN? And, again, you really don't even need an email. Just a username and some stupid password. That's <strong>all</strong>. Come on. Peer pressure.
</p> </p>
{% endif %} {% endif %}
</div> </div>
{% endblock %} {% endblock %}
{% block scripts %} {% block scripts %}
<script defer src="{{'js/signup.js' | asset}}"></script> <script defer src="{{'js/signup.js' | asset}}"></script>
{% if turnstile != DEFAULT_CONFIG_VALUE %} {% if turnstile != DEFAULT_CONFIG_VALUE %}
<script defer src="https://challenges.cloudflare.com/turnstile/v0/api.js"></script> <script defer src="https://challenges.cloudflare.com/turnstile/v0/api.js"></script>
{% endif %} {% endif %}
{% endblock %} {% endblock %}

View File

@ -7,17 +7,19 @@
{% endblock %} {% endblock %}
{% block authtitle %}Whoops! You can't refer yourself!{% endblock %} {% block authtitle %}Whoops! You can't refer yourself!{% endblock %}
{% block authtext %}Send this link to a friend instead :){% endblock %} {% block authtext %}Send this link to a friend instead :){% endblock %}
{% block content %} {% block content %}
<label>Referral code</label> <label>Referral code</label>
{% set link = SITE_FULL ~ "/signup?ref=" ~ request.values.get('ref') %} {% set link = SITE_FULL ~ "/signup?ref=" ~ request.values.get('ref') %}
<input autocomplete="off" type="text" class="form-control copy-link" readonly value="{{link}}" data-clipboard-text="{{link}}"> <input autocomplete="off" type="text" class="form-control copy-link" readonly value="{{link}}" data-clipboard-text="{{link}}">
<div class="text-center text-muted text-small mt-3 mb-5 pb-5"> <div class="text-center text-muted text-small mt-3 mb-5 pb-5">
Already have an account? <a href="/login{{'?redirect='+redirect if redirect else ''}}" class="font-weight-bold toggle-login">Log in</a> Already have an account? <a href="/login{{'?redirect='+redirect if redirect else ''}}" class="font-weight-bold toggle-login">Log in</a>
</div> </div>
{% endblock %} {% endblock %}
{% block scripts %} {% block scripts %}
<div class="toast clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000"> <div class="toast clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000">
<div class="toast-body text-center"> <div class="toast-body text-center">
<i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard <i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard
</div> </div>
{% endblock %} {% endblock %}

View File

@ -2,7 +2,6 @@
{% block pagetype %}lottery{% endblock %} {% block pagetype %}lottery{% endblock %}
{% block pagetitle %}Lottershe{% endblock %} {% block pagetitle %}Lottershe{% endblock %}
{% block content %} {% block content %}
<div>
<div class="lottery-page--wrapper"> <div class="lottery-page--wrapper">
<div class="lottery-page--image"> <div class="lottery-page--image">
<img loading="lazy" src="{{SITE_FULL_IMAGES}}/i/{{SITE_NAME}}/lottery.webp?x=6"> <img loading="lazy" src="{{SITE_FULL_IMAGES}}/i/{{SITE_NAME}}/lottery.webp?x=6">
@ -153,5 +152,4 @@
</div> </div>
</div> </div>
<script defer src="{{'js/lottery.js' | asset}}"></script> <script defer src="{{'js/lottery.js' | asset}}"></script>
</div>
{% endblock %} {% endblock %}

View File

@ -3,7 +3,7 @@
{% block pagetype %}message{% endblock %} {% block pagetype %}message{% endblock %}
{% block customPadding %}{% endblock %} {% block customPadding %}{% endblock %}
{% block content %} {% block content %}
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center py-6 py-md-8"> <div class="text-center py-6 py-md-8">
@ -17,5 +17,5 @@
<a href="/" class="btn btn-primary ">Go to homepage</a> <a href="/" class="btn btn-primary ">Go to homepage</a>
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -2,9 +2,9 @@
{% block pagetitle %}{{title}}{% endblock %} {% block pagetitle %}{{title}}{% endblock %}
{% block pagetype %}message-success{% endblock %} {% block pagetype %}message-success{% endblock %}
{% block content %} {% block content %}
<div class="text-center py-6 py-md-8"> <div class="text-center py-6 py-md-8">
<img class="mb-3" alt=":#marseyparty:" src="{{SITE_FULL_IMAGES}}/e/marseyparty.webp"> <img class="mb-3" alt=":#marseyparty:" src="{{SITE_FULL_IMAGES}}/e/marseyparty.webp">
<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>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,16 +1,19 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}Notification Mutes{% endblock %} {% block pagetitle %}Notification Mutes{% endblock %}
{% block content %} {% block content %}
<h5 class="font-weight-bolder text-center pt-2 pb-3"><span>Notification Mutes</span></h5> <h5 class="font-weight-bolder text-center pt-2 pb-3">
<div class="overflow-x-auto mt-3"><table class="table table-striped mb-5"> <span>Notification Mutes</span>
<thead class="bg-primary text-white"> </h5>
<div class="overflow-x-auto mt-3">
<table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>User</th> <th>User</th>
<th>Target</th> <th>Target</th>
<th>Muted on</th> <th>Muted on</th>
</tr> </tr>
</thead> </thead>
{% for mute in mutes %} {% for mute in mutes %}
<tr> <tr>
<td> <td>
{% with user = mute.user %} {% with user = mute.user %}
@ -24,6 +27,7 @@
</td> </td>
<td data-time="{{mute.created_utc}}"></td> <td data-time="{{mute.created_utc}}"></td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div>
{% endblock %} {% endblock %}

View File

@ -3,11 +3,10 @@
{% block pagetype %}notifications{% endblock %} {% block pagetype %}notifications{% endblock %}
{% block PseudoSubmitForm %}{% endblock %} {% block PseudoSubmitForm %}{% endblock %}
{% block navbar %} {% block navbar %}
<div class="font-weight-bold py-3"></div> <div class="font-weight-bold py-3"></div>
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<div class="row border-bottom w-200 pr-0" style="overflow: visible">
<div class="row border-bottom w-200 pr-0" style="overflow: visible">
<div class="col p-0 w-100"> <div class="col p-0 w-100">
<ul class="nav settings-nav" style="padding:0 0 0 20px" id="notifications--nav-list"> <ul class="nav settings-nav" style="padding:0 0 0 20px" id="notifications--nav-list">
<li class="nav-item"> <li class="nav-item">
@ -48,16 +47,15 @@
{% endif %} {% endif %}
</ul> </ul>
</div> </div>
</div> </div>
{% if request.path.startswith('/notification/') %} {% if request.path.startswith('/notification/') %}
<div class="mt-4 mb-5 ml-3 text-lg"><a href="/notifications">View all notifications <i class="fas fa-long-arrow-right ml-1"></i></a></div> <div class="mt-4 mb-5 ml-3 text-lg"><a href="/notifications">View all notifications <i class="fas fa-long-arrow-right ml-1"></i></a></div>
{% else %} {% else %}
<button type="button" class="btn btn-primary btn-rainbow ml-3 mt-4" data-nonce="{{g.nonce}}" data-onclick="postToastReload(this,'/clear')">Mark all notifications as read</button> <button type="button" class="btn btn-primary btn-rainbow ml-3 mt-4" data-nonce="{{g.nonce}}" data-onclick="postToastReload(this,'/clear')">Mark all notifications as read</button>
{% endif %} {% endif %}
<div class="notifs px-3 p-md-0">
<div class="notifs px-3 p-md-0">
{% if request.path == '/notifications/posts' %} {% if request.path == '/notifications/posts' %}
{% with listing=notifications %} {% with listing=notifications %}
<div class="mt-4 posts"> <div class="mt-4 posts">
@ -67,7 +65,6 @@
{% elif request.path == '/notifications/modactions' %} {% elif request.path == '/notifications/modactions' %}
<div class="rounded border mx-auto mt-4"> <div class="rounded border mx-auto mt-4">
{% for ma in notifications %} {% for ma in notifications %}
<div id="action-{{ma.id}}" class="{% if ma.unread %}unread{% endif %} position-relative d-flex justify-content-between flex-wrap align-items-center h-min-16 px-3 py-3 {% if loop.index > 1 %} border-top{% endif %}"> <div id="action-{{ma.id}}" class="{% if ma.unread %}unread{% endif %} position-relative d-flex justify-content-between flex-wrap align-items-center h-min-16 px-3 py-3 {% if loop.index > 1 %} border-top{% endif %}">
<div class="d-flex flex-grow-1 align-items-center"> <div class="d-flex flex-grow-1 align-items-center">
@ -128,24 +125,21 @@
<h5>No notifications</h5> <h5>No notifications</h5>
</div> </div>
{% endif %} {% endif %}
</div>
</div>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% if notifications %} {% if notifications %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endif %} {% endif %}
<link rel="stylesheet" href="{{('css/notifications.css') | asset}}"> <link rel="stylesheet" href="{{('css/notifications.css') | asset}}">
{% if request.path == '/notifications/messages' %} {% if request.path == '/notifications/messages' %}
<script defer src="{{'js/vendor/socketio.js' | asset}}"></script> <script defer src="{{'js/vendor/socketio.js' | asset}}"></script>
<script defer src="{{'js/flash.js' | asset}}"></script> <script defer src="{{'js/flash.js' | asset}}"></script>
<script defer src="{{'js/messages.js' | asset}}"></script> <script defer src="{{'js/messages.js' | asset}}"></script>
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block GIFpicker %}{% endblock %} {% block GIFpicker %}{% endblock %}

View File

@ -1,7 +1,7 @@
{% extends "login.html" %} {% extends "login.html" %}
{% block pagetitle %}Application Request for Access{% endblock %} {% block pagetitle %}Application Request for Access{% endblock %}
{% block content %} {% block content %}
<div id="auth-form"> <div id="auth-form">
<h2>{{application.app_name}}</h2> <h2>{{application.app_name}}</h2>
<p class="mb-md-5">wants to access your @{{v.username}} account.</p> <p class="mb-md-5">wants to access your @{{v.username}} account.</p>
<p class="mb-md-5">It will not be able to see your password, or change your account settings.</p> <p class="mb-md-5">It will not be able to see your password, or change your account settings.</p>
@ -15,5 +15,5 @@
<input type="submit" class="btn btn-primary" id="auth_button" value="Authorize {{application.app_name}}"> <input type="submit" class="btn btn-primary" id="auth_button" value="Authorize {{application.app_name}}">
<a href="/" class="btn btn-secondary">No, back to {{SITE_NAME}}</a> <a href="/" class="btn btn-secondary">No, back to {{SITE_NAME}}</a>
</form> </form>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,26 +1,27 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}{{kind}} Owners{% endblock %} {% block pagetitle %}{{kind}} Owners{% endblock %}
{% block content %} {% block content %}
<h5 class="my-3">{{kind}} Owners</h5> <h5 class="my-3">{{kind}} Owners</h5>
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5"> <div class="overflow-x-auto mt-1">
<thead class="bg-primary text-white"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>Name</th> <th>Name</th>
<th class="disable-sort-click">Owned since</td> <th class="disable-sort-click">Owned since</td>
</tr> </tr>
</thead> </thead>
<tbody id="owners-table"> <tbody id="owners-table">
{% for user, created_utc in users %} {% for user, created_utc in users %}
<tr> <tr>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
<td {% if created_utc %}data-time="{{created_utc}}"{% endif %}></td> <td {% if created_utc %}data-time="{{created_utc}}"{% endif %}></td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}

View File

@ -1,20 +1,20 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}Poll Votes{% endblock %} {% block pagetitle %}Poll Votes{% endblock %}
{% block content %} {% block content %}
{% if option %} {% if option %}
<h3 class="mt-5">{{option.body_html | safe}} - {{ups | length}} {% if option.exclusive == 2 %}bets{% else %}votes{% endif %}</h3>
<h3 class="mt-5">{{option.body_html | safe}} - {{ups | length}} {% if option.exclusive == 2 %}bets{% else %}votes{% endif %}</h3> <p><b>Link:</b> <a href="{{option.parent.permalink}}">{{option.parent.permalink}}</a></p>
<p><b>Author:</b> <a href="{{option.parent.author.url}}">@{{option.parent.author_name}}</a></p>
<p><b>Link:</b> <a href="{{option.parent.permalink}}">{{option.parent.permalink}}</a></p> <p><b>Author Created At:</b> <span data-time="{{option.parent.author.created_utc}}"></span></p>
<p><b>Author:</b> <a href="{{option.parent.author.url}}">@{{option.parent.author_name}}</a></p> <p><b>Author Truescore:</b> {{"{:,}".format(option.parent.author.truescore)}}</p>
<p><b>Author Created At:</b> <span data-time="{{option.parent.author.created_utc}}"></span></p> <p><b>Total voter truescore: </b>{{total_ts}}</p>
<p><b>Author Truescore:</b> {{"{:,}".format(option.parent.author.truescore)}}</p> {% if total_patrons != None %}
<p><b>Total voter truescore: </b>{{total_ts}}</p>
{% if total_patrons != None %}
<p><b>Total {{patron}}s: </b>{{total_patrons}} | ${{total_money}}</p> <p><b>Total {{patron}}s: </b>{{total_patrons}} | ${{total_money}}</p>
{% endif %} {% endif %}
<div class="overflow-x-auto mt-5"> <div class="overflow-x-auto mt-5">
<table class="table table-striped mb-5"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
@ -38,7 +38,6 @@
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div> </div>
{% endif %}
{% endif %}
{% endblock %} {% endblock %}

View File

@ -1,10 +1,10 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %} {% block pagetitle %}
{%- if comment_info -%} {%- if comment_info -%}
@{{comment_info.author_name}} comments on '{{p.plaintitle(v)}}' @{{comment_info.author_name}} comments on '{{p.plaintitle(v)}}'
{%- else -%} {%- else -%}
{{p.plaintitle(v)}} {{p.plaintitle(v)}}
{%- endif -%} {%- endif -%}
{% endblock %} {% endblock %}
{% block pagetype %}thread{% endblock %} {% block pagetype %}thread{% endblock %}
@ -36,9 +36,9 @@
{% endif %} {% endif %}
{% set v_forbid_deleted = (p.deleted_utc != 0) and not (v and v.admin_level >= PERMS['POST_COMMENT_MODERATION']) and not (v and v.id == p.author_id) %} {% set v_forbid_deleted = (p.deleted_utc != 0) and not (v and v.admin_level >= PERMS['POST_COMMENT_MODERATION']) and not (v and v.id == p.author_id) %}
{% block actionsModal %}
{% if v %} {% block actionsModal %}
{% if v %}
<div class="modal fade d-md-none" id="actionsModal" tabindex="-1"> <div class="modal fade d-md-none" id="actionsModal" tabindex="-1">
<div class="modal-dialog modal-dialog-centered"> <div class="modal-dialog modal-dialog-centered">
<div class="modal-content"> <div class="modal-content">
@ -62,17 +62,15 @@
</div> </div>
</div> </div>
</div> </div>
{% endif %} {% endif %}
{% if v and v.admin_level >= PERMS['POST_COMMENT_MODERATION'] %} {% if v and v.admin_level >= PERMS['POST_COMMENT_MODERATION'] %}
{% include "post_admin_actions_mobile.html" %} {% include "post_admin_actions_mobile.html" %}
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<div class="row mb-3">
<div class="row mb-3">
<div id="post-root" class="col-12"> <div id="post-root" class="col-12">
@ -241,7 +239,7 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="row mb-3 d-md-none"> <div class="row mb-3 d-md-none">
<div class="col-12"> <div class="col-12">
@ -289,13 +287,13 @@
</ul> </ul>
</div> </div>
</div> </div>
</div> </div>
{% if v and v.id != p.author_id and p.body and not v_forbid_deleted and v.admin_level < PERMS['POST_COMMENT_EDITING'] %} {% if v and v.id != p.author_id and p.body and not v_forbid_deleted and v.admin_level < PERMS['POST_COMMENT_EDITING'] %}
<div autocomplete="off" class="markdown d-none border my-2 p-3 rounded" id="markdown-{{p.fullname}}" readonly>{{p.body.strip()}}</div> <div autocomplete="off" class="markdown d-none border my-2 p-3 rounded" id="markdown-{{p.fullname}}" readonly>{{p.body.strip()}}</div>
{% endif %} {% endif %}
<div class="row border-md-0 comment-section pb-3"> <div class="row border-md-0 comment-section pb-3">
<div class="col border-top"> <div class="col border-top">
<div class="comments-count py-3"> <div class="comments-count py-3">
{%- import 'util/macros.html' as macros with context -%} {%- import 'util/macros.html' as macros with context -%}
@ -304,11 +302,11 @@
{{macros.comment_reply_box(p.fullname, 'comment-reply-' + p.fullname, subwrapper_css_classes='mb-3', enable_cancel_button=false)}} {{macros.comment_reply_box(p.fullname, 'comment-reply-' + p.fullname, subwrapper_css_classes='mb-3', enable_cancel_button=false)}}
{% if comment_info %} {% if comment_info %}
<div class="total mt-1"><a href="{{p.permalink}}">View entire discussion <i class="fas fa-long-arrow-right ml-1"></i></a></div> <div class="total mt-1"><a href="{{p.permalink}}">View entire discussion <i class="fas fa-long-arrow-right ml-1"></i></a></div>
{% endif %} {% endif %}
{% if p.replies %} {% if p.replies %}
<div class="comment-section" id="replies-of-{{p.fullname}}"> <div class="comment-section" id="replies-of-{{p.fullname}}">
{% with comments=p.replies %} {% with comments=p.replies %}
{% include "comments.html" %} {% include "comments.html" %}
@ -318,7 +316,7 @@
{% if offset %} {% if offset %}
<script defer src="{{'js/view_more.js' | asset}}"></script> <script defer src="{{'js/view_more.js' | asset}}"></script>
{% endif %} {% endif %}
{% elif not p.replies and p.deleted_utc == 0 %} {% elif not p.replies and p.deleted_utc == 0 %}
<div class="comment-section no-replies" id="replies-of-{{p.fullname}}"> <div class="comment-section no-replies" id="replies-of-{{p.fullname}}">
{% if v %} {% if v %}
{% set ghost_town = 'This comment section is a ghost town...' %} {% set ghost_town = 'This comment section is a ghost town...' %}
@ -327,11 +325,11 @@
{% endif %} {% endif %}
{{macros.ghost_box('Be the first to comment!', ghost_town, 1)}} {{macros.ghost_box('Be the first to comment!', ghost_town, 1)}}
</div> </div>
{% endif %} {% endif %}
</div> </div>
</div> </div>
{% if v %} {% if v %}
{% if v.id == p.author_id %}{% include "modals/delete_post.html" %}{% endif %} {% if v.id == p.author_id %}{% include "modals/delete_post.html" %}{% endif %}
{% include "modals/report_post.html" %} {% include "modals/report_post.html" %}
{% if v.can_edit(p) %} {% if v.can_edit(p) %}
@ -340,22 +338,21 @@
{% if v.admin_level >= PERMS['POST_COMMENT_MODERATION'] %} {% if v.admin_level >= PERMS['POST_COMMENT_MODERATION'] %}
<script defer src="{{'js/admin/pinpost.js' | asset}}"></script> <script defer src="{{'js/admin/pinpost.js' | asset}}"></script>
{% endif %} {% endif %}
{% endif %} {% endif %}
<script defer src="{{'js/vendor/clipboard.js' | asset}}"></script> <script defer src="{{'js/vendor/clipboard.js' | asset}}"></script>
{% if not p.replies %}{% include "comments.html" %}{% endif %} {% if not p.replies %}{% include "comments.html" %}{% endif %}
<input hidden class="twoattrs" value="{{p.id}},{{p.comment_count}}"> <input hidden class="twoattrs" value="{{p.id}},{{p.comment_count}}">
<script defer src="{{'js/new_comments.js' | asset}}"></script> <script defer src="{{'js/new_comments.js' | asset}}"></script>
<script defer src="{{'js/post.js' | asset}}"></script> <script defer src="{{'js/post.js' | asset}}"></script>
{% if fart and not (v and v.has_badge(128)) %} {% if fart and not (v and v.has_badge(128)) %}
<script defer src="{{'js/fart.js' | asset}}"></script> <script defer src="{{'js/fart.js' | asset}}"></script>
{% endif %} {% endif %}
{% if v and v.admin_level >= PERMS['POST_COMMENT_MODERATION'] %} {% if v and v.admin_level >= PERMS['POST_COMMENT_MODERATION'] %}
<script defer src="{{'js/admin/post.js' | asset}}"></script> <script defer src="{{'js/admin/post.js' | asset}}"></script>
{% endif %} {% endif %}
{% endblock %} {% endblock %}

View File

@ -16,7 +16,7 @@
<button type="button" class="nobackground btn btn-link btn-block btn-lg text-left text-muted" data-bs-toggle="modal" data-bs-dismiss="modal" data-bs-target="#reportPostModal" data-nonce="{{g.nonce}}" data-onclick="report_postModal('{{p.id}}')"><i class="fas fa-flag text-center text-muted mr-2"></i>Report</button> <button type="button" class="nobackground btn btn-link btn-block btn-lg text-left text-muted" data-bs-toggle="modal" data-bs-dismiss="modal" data-bs-target="#reportPostModal" data-nonce="{{g.nonce}}" data-onclick="report_postModal('{{p.id}}')"><i class="fas fa-flag text-center text-muted mr-2"></i>Report</button>
{% if FEATURES['AWARDS'] -%} {% if FEATURES['AWARDS'] -%}
<button type="button" class="nobackground btn btn-link btn-block btn-lg text-left text-muted" data-bs-toggle="modal" data-bs-dismiss="modal" data-bs-target="#awardModal" data-url='/award/post/{{p.id}}' data-immune="{{p.author.immune_to_negative_awards(v)}}" data-ghost="{{p.ghost}}" data-nonce="{{g.nonce}}"><i class="fas fa-gift text-center text-muted mr-2"></i>Give Award</button> <button type="button" class="nobackground btn btn-link btn-block btn-lg text-left text-muted" data-bs-toggle="modal" data-bs-dismiss="modal" data-bs-target="#awardModal" data-url='/award/post/{{p.id}}' data-immune="{{p.author.immune_to_negative_awards(v)}}" data-ghost="{{p.ghost}}" data-nonce="{{g.nonce}}"><i class="fas fa-gift text-center text-muted mr-2"></i>Give Award</button>
{%- endif %} {%- endif %}
<button type="button" id="subscribe2-{{p.id}}" class="{% if p.id in v.subscribed_idlist %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left text-muted" data-areyousure="postToastSwitch(this,'/subscribe/{{p.id}}','subscribe2-{{p.id}}','unsubscribe2-{{p.id}}','d-none')" data-nonce="{{g.nonce}}" data-onclick="areyousure(this)" data-dismiss="modal"><i class="fas fa-bell text-center text-muted mr-2"></i>Subscribe {% if p.num_subscribers %}<span data-bs-toggle="tooltip" data-bs-placement="bottom" title="Number of subscribers">[{{p.num_subscribers}}]</span>{% endif %}</button> <button type="button" id="subscribe2-{{p.id}}" class="{% if p.id in v.subscribed_idlist %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left text-muted" data-areyousure="postToastSwitch(this,'/subscribe/{{p.id}}','subscribe2-{{p.id}}','unsubscribe2-{{p.id}}','d-none')" data-nonce="{{g.nonce}}" data-onclick="areyousure(this)" data-dismiss="modal"><i class="fas fa-bell text-center text-muted mr-2"></i>Subscribe {% if p.num_subscribers %}<span data-bs-toggle="tooltip" data-bs-placement="bottom" title="Number of subscribers">[{{p.num_subscribers}}]</span>{% endif %}</button>

View File

@ -1,25 +1,21 @@
{% extends "post.html" %} {% extends "post.html" %}
{% set score=p.score %} {% set score=p.score %}
{% if v %} {% if v %}
{% set voted=p.voted %} {% set voted=p.voted %}
{% set adjust=voted %} {% set adjust=voted %}
{% else %} {% else %}
{% set voted=-2 %} {% set voted=-2 %}
{% set adjust=0 %} {% set adjust=0 %}
{% endif %} {% endif %}
{% block title %} {% block title %}
<title>{{p.plaintitle(v)}}</title> <title>{{p.plaintitle(v)}}</title>
{% if p.is_banned %}
{% else %}
{% endif %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<div class="mb-2 p-3"> <div class="mb-2 p-3">
<div class="col-12"> <div class="col-12">
<div id="post-{{p.id}}" class="banned {% if p.award_count('glowie', v) %}glow{% endif %} card d-flex flex-row-reverse flex-nowrap justify-content-end border-0 p-0 {% if voted==1 %} upvoted{% elif voted==-1 %} downvoted{% endif %}"> <div id="post-{{p.id}}" class="banned {% if p.award_count('glowie', v) %}glow{% endif %} card d-flex flex-row-reverse flex-nowrap justify-content-end border-0 p-0 {% if voted==1 %} upvoted{% elif voted==-1 %} downvoted{% endif %}">
<div class="card-block my-md-auto"> <div class="card-block my-md-auto">
@ -43,9 +39,9 @@
</div> </div>
{% endif %} {% endif %}
</div> </div>
</div> </div>
<div class="row mb-2 p-3"> <div class="row mb-2 p-3">
<div class="col-12"> <div class="col-12">
<div class="post-actions d-mob-none"> <div class="post-actions d-mob-none">
<ul class="list-inline text-left mb-2"> <ul class="list-inline text-left mb-2">
@ -55,23 +51,22 @@
</ul> </ul>
</div> </div>
</div> </div>
</div> </div>
<div class="comments-count py-3"> <div class="comments-count py-3">
{%- import 'util/macros.html' as macros with context -%} {%- import 'util/macros.html' as macros with context -%}
{{- macros.sorting_buttons(COMMENT_SORTS, True) -}} {{- macros.sorting_buttons(COMMENT_SORTS, True) -}}
</div> </div>
<div class="comment-section"> <div class="comment-section">
{% with comments=p.replies %} {% with comments=p.replies %}
{% include "comments.html" %} {% include "comments.html" %}
{% endwith %} {% endwith %}
</div> </div>
{% if offset %} {% if offset %}
<script defer src="{{'js/view_more.js' | asset}}"></script> <script defer src="{{'js/view_more.js' | asset}}"></script>
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block mobileactions %} {% block mobileactions %}

View File

@ -13,25 +13,23 @@
{% set disable_votes = request.path.startswith('/@') and v and v.admin_level < PERMS['ENABLE_VOTE_BUTTONS_ON_USER_PAGE'] %} {% set disable_votes = request.path.startswith('/@') and v and v.admin_level < PERMS['ENABLE_VOTE_BUTTONS_ON_USER_PAGE'] %}
{% for p in listing if can_see(v, p) %} {% for p in listing if can_see(v, p) %}
<input hidden class="twoattrs" value="{{p.id}},{{p.comment_count}}">
<input hidden class="twoattrs" value="{{p.id}},{{p.comment_count}}"> {% set ups=p.upvotes %}
{% set downs=p.downvotes %}
{% set score=ups-downs %}
{% set ups=p.upvotes %} {% if v %}
{% set downs=p.downvotes %}
{% set score=ups-downs %}
{% if v %}
{% set voted= p.voted %} {% set voted= p.voted %}
{% else %} {% else %}
{% set voted=-2 %} {% set voted=-2 %}
{% endif %} {% endif %}
{% set v_forbid_deleted = (p.deleted_utc != 0 or p.is_banned) and not (v and v.admin_level >= PERMS['POST_COMMENT_MODERATION']) and not (v and v.id == p.author_id) %} {% set v_forbid_deleted = (p.deleted_utc != 0 or p.is_banned) and not (v and v.admin_level >= PERMS['POST_COMMENT_MODERATION']) and not (v and v.id == p.author_id) %}
{{macros.reports(p, 'post')}} {{macros.reports(p, 'post')}}
<div id="post-{{p.id}}" class="actual-post card {% if p.ghost %}ghost-post{% endif %} {% if p.unread %}unread{% endif %} {% if p.is_banned %} banned{% endif %}{% if p.deleted_utc %} deleted{% endif %}{% if p.stickied %} stickied{% endif %}{% if voted==1 %} upvoted{% elif voted==-1 %} downvoted{% endif %}{% if p.nsfw %} nsfw{% endif %}">
<div id="post-{{p.id}}" class="actual-post card {% if p.ghost %}ghost-post{% endif %} {% if p.unread %}unread{% endif %} {% if p.is_banned %} banned{% endif %}{% if p.deleted_utc %} deleted{% endif %}{% if p.stickied %} stickied{% endif %}{% if voted==1 %} upvoted{% elif voted==-1 %} downvoted{% endif %}{% if p.nsfw %} nsfw{% endif %}">
<div class="d-flex flex-row-reverse flex-md-row flex-nowrap" style="align-items:flex-start"> <div class="d-flex flex-row-reverse flex-md-row flex-nowrap" style="align-items:flex-start">
<div class="voting my-2 d-none d-md-flex pr-2"> <div class="voting my-2 d-none d-md-flex pr-2">
{% if v %} {% if v %}
@ -93,9 +91,9 @@
{{p.realtitle(v) | safe}} {{p.realtitle(v) | safe}}
</a></h5> </a></h5>
</div> </div>
</div> </div>
<div class="post-actions d-mob-none"> <div class="post-actions d-mob-none">
<div class="d-flex" style="flex-basis:146px"></div> <div class="d-flex" style="flex-basis:146px"></div>
<ul class="list-inline text-right d-flex"> <ul class="list-inline text-right d-flex">
{% if p.realbody(v) %} {% if p.realbody(v) %}
@ -107,9 +105,9 @@
</a> </a>
{% include 'post_actions.html' %} {% include 'post_actions.html' %}
</ul> </ul>
</div> </div>
<div class="d-md-none mt-2"> <div class="d-md-none mt-2">
<div class="post-actions"> <div class="post-actions">
<ul class="list-inline text-right d-flex"> <ul class="list-inline text-right d-flex">
<li class="list-inline-item mr-auto"> <li class="list-inline-item mr-auto">
@ -160,9 +158,9 @@
{% endif %} {% endif %}
</ul> </ul>
</div> </div>
</div> </div>
{% if v %} {% if v %}
<div class="modal fade d-md-none" id="actionsModal-{{p.id}}" tabindex="-1"> <div class="modal fade d-md-none" id="actionsModal-{{p.id}}" tabindex="-1">
<div class="modal-dialog modal-dialog-centered"> <div class="modal-dialog modal-dialog-centered">
<div class="modal-content"> <div class="modal-content">
@ -180,14 +178,13 @@
</div> </div>
</div> </div>
</div> </div>
{% endif %} {% endif %}
{% if v and v.admin_level >= PERMS['POST_COMMENT_MODERATION'] %} {% if v and v.admin_level >= PERMS['POST_COMMENT_MODERATION'] %}
{% include "post_admin_actions_mobile.html" %} {% include "post_admin_actions_mobile.html" %}
{% endif %} {% endif %}
{% if not v_forbid_deleted %}
{% if not v_forbid_deleted %}
{% if p.realbody(v) %} {% if p.realbody(v) %}
<div class="{% if p.chudded %}text-uppercase chud-img chud-{{p.id_last_num}}{% endif %} d-none card rounded border post-preview" id="post-text-{{p.id}}"> <div class="{% if p.chudded %}text-uppercase chud-img chud-{{p.id_last_num}}{% endif %} d-none card rounded border post-preview" id="post-text-{{p.id}}">
{{p.realbody(v) | safe}} {{p.realbody(v) | safe}}
@ -209,8 +206,8 @@
{{p.embed | safe}} {{p.embed | safe}}
</div> </div>
{% endif %} {% endif %}
{% endif %} {% endif %}
</div> </div>
{% else %} {% else %}
<div class="row no-gutters"> <div class="row no-gutters">
<div class="col"> <div class="col">

View File

@ -2,7 +2,7 @@
{% block pagetype %}search{% endblock %} {% block pagetype %}search{% endblock %}
{% block pagetitle %}Search for "{{query}}"{% endblock %} {% block pagetitle %}Search for "{{query}}"{% endblock %}
{% block head_final %} {% block head_final %}
<meta name="description" content="{{total}} result{{'s' if total != 1 else ''}}"> <meta name="description" content="{{total}} result{{'s' if total != 1 else ''}}">
{% endblock %} {% endblock %}
{% block PseudoSubmitForm %} {% block PseudoSubmitForm %}
@ -18,7 +18,7 @@
{% endblock %} {% endblock %}
{% block navbar %}{% endblock %} {% block navbar %}{% endblock %}
{% block content %} {% block content %}
<div class="row no-gutters my-md-3"> <div class="row no-gutters my-md-3">
<div class="col"> <div class="col">
<div class="card search-results"> <div class="card search-results">
@ -114,8 +114,8 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="row no-gutters"> <div class="row no-gutters">
<div class="col"> <div class="col">
<div class="flex-row box-shadow-bottom d-flex justify-content-center justify-content-md-between align-items-center"> <div class="flex-row box-shadow-bottom d-flex justify-content-center justify-content-md-between align-items-center">
<ul class="nav settings-nav"> <ul class="nav settings-nav">
@ -134,8 +134,8 @@
</ul> </ul>
</div> </div>
</div> </div>
</div> </div>
<div class="row no-gutters"> <div class="row no-gutters">
<div class="col-12"> <div class="col-12">
<div class="posts"> <div class="posts">
{% block listing_template %} {% block listing_template %}
@ -143,8 +143,8 @@
{% endblock %} {% endblock %}
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}

View File

@ -17,5 +17,5 @@
{% endblock %} {% endblock %}
{% block listinglength %} {% block listinglength %}
{{comments | length}} {{comments | length}}
{% endblock %} {% endblock %}

View File

@ -1,7 +1,7 @@
{% extends "search.html" %} {% extends "search.html" %}
{% block listing_template %} {% block listing_template %}
<div class="row row-cols-1 row-cols-md-3 mt-3"> <div class="row row-cols-1 row-cols-md-3 mt-3">
{% include "user_listing.html" %} {% include "user_listing.html" %}
</div> </div>
{% endblock %} {% endblock %}
{% block listinglength %}{{users | length}}{% endblock %} {% block listinglength %}{{users | length}}{% endblock %}

View File

@ -43,12 +43,11 @@
</div> </div>
</div> </div>
{% block clipboard %} {% block clipboard %}
<div class="toast clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000"> <div class="toast clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000">
<div class="toast-body text-center"> <div class="toast-body text-center">
<i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard <i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
{% block onload %}{% endblock %}
<script defer src="{{'js/vendor/clipboard.js' | asset}}"></script> <script defer src="{{'js/vendor/clipboard.js' | asset}}"></script>
{% endblock %} {% endblock %}

View File

@ -1,7 +1,7 @@
{% extends "settings.html" %} {% extends "settings.html" %}
{% block pagetitle %}Advanced Settings{% endblock %} {% block pagetitle %}Advanced Settings{% endblock %}
{% block content %} {% block content %}
<div class="row settings-page" id="settings-page-advanced"> <div class="row settings-page" id="settings-page-advanced">
<div class="col col-lg-8"> <div class="col col-lg-8">
<div class="settings"> <div class="settings">
{# toggle_section(title, id, name, flag, below_text) #} {# toggle_section(title, id, name, flag, below_text) #}
@ -155,5 +155,5 @@
</section> </section>
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,15 +1,15 @@
{% extends "settings.html" %} {% extends "settings.html" %}
{% block pagetitle %}Apps/Bots{% endblock %} {% block pagetitle %}Apps/Bots{% endblock %}
{% block content %} {% block content %}
<div class="row"> <div class="row">
<div class="col col-lg-8"> <div class="col col-lg-8">
<div class="settings"> <div class="settings">
<h5>API Guide</h5> <h5>API Guide</h5>
<a style="font-size:18px" href="/api">{{SITE_FULL}}/api</a> <a style="font-size:18px" href="/api">{{SITE_FULL}}/api</a>
<h5 class="mt-6">Your API Applications</h5> <h5 class="mt-6">Your API Applications</h5>
{% for app in v.applications if app.client_id %} {% for app in v.applications if app.client_id %}
<form id="edit-app-{{app.id}}" action="/edit_app/{{app.id}}" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHR(this)"> <form id="edit-app-{{app.id}}" action="/edit_app/{{app.id}}" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHR(this)">
<div class="settings-section rounded"> <div class="settings-section rounded">
<div class="d-lg-flex"> <div class="d-lg-flex">
<div class="title w-lg-25"> <div class="title w-lg-25">
@ -38,14 +38,14 @@
</div> </div>
</div> </div>
</div> </div>
</form> </form>
{% else %} {% else %}
<p>None</p> <p>None</p>
{% endfor %} {% endfor %}
<h5 class="mt-6">API Applications Awaiting Approval</h5> <h5 class="mt-6">API Applications Awaiting Approval</h5>
{% for app in v.applications if not app.client_id %} {% for app in v.applications if not app.client_id %}
<form id="edit-app-{{app.id}}" action="/edit_app/{{app.id}}" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHR(this)"> <form id="edit-app-{{app.id}}" action="/edit_app/{{app.id}}" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHR(this)">
<div class="settings-section rounded"> <div class="settings-section rounded">
<div class="d-lg-flex"> <div class="d-lg-flex">
<div class="title w-lg-25"> <div class="title w-lg-25">
@ -73,13 +73,13 @@
</div> </div>
</div> </div>
</div> </div>
</form> </form>
{% else %} {% else %}
<p>None</p> <p>None</p>
{% endfor %} {% endfor %}
<h5 class="mt-6">Your Authorized Applications</h5> <h5 class="mt-6">Your Authorized Applications</h5>
{% for auth in v.authorizations %} {% for auth in v.authorizations %}
<div id="auth-{{auth.id}}" class="settings-section rounded"> <div id="auth-{{auth.id}}" class="settings-section rounded">
<div class="d-lg-flex"> <div class="d-lg-flex">
<div class="title w-lg-25"> <div class="title w-lg-25">
@ -97,13 +97,13 @@
</div> </div>
</div> </div>
</div> </div>
{% else %} {% else %}
<p>None</p> <p>None</p>
{% endfor %} {% endfor %}
<h5 class="mt-6">Request API Keys</h2> <h5 class="mt-6">Request API Keys</h2>
<form id="api-key-request-form" action="/api_keys" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHRReload(this)"> <form id="api-key-request-form" action="/api_keys" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHRReload(this)">
<div class="settings-section rounded"> <div class="settings-section rounded">
<div class="d-lg-flex"> <div class="d-lg-flex">
<div class="body w-lg-100"> <div class="body w-lg-100">
@ -124,15 +124,16 @@
</div> </div>
</div> </div>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
{% block clipboard %} {% block clipboard %}
<div class="toast clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000"> <div class="toast clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000">
<div class="toast-body text-center"> <div class="toast-body text-center">
<i class="fas fa-check-circle text-success mr-2"></i>Token copied to clipboard <i class="fas fa-check-circle text-success mr-2"></i>Token copied to clipboard
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,7 +1,7 @@
{%- import 'util/macros.html' as macros with context -%} {%- import 'util/macros.html' as macros with context -%}
{% macro toggle_section(title, id, name, flag, below_text, disabled) %} {% macro toggle_section(title, id, name, flag, below_text, disabled) %}
<div id="{{id}}_toggle" class="d-lg-flex border-bottom"> <div id="{{id}}_toggle" class="d-lg-flex border-bottom">
<div class="title w-lg-25"> <div class="title w-lg-25">
<label for="{{id}}">{{title}}</label> <label for="{{id}}">{{title}}</label>
</div> </div>
@ -14,11 +14,11 @@
<span class="text-small text-muted">{{below_text|safe}}</span> <span class="text-small text-muted">{{below_text|safe}}</span>
{% endif %} {% endif %}
</div> </div>
</div> </div>
{% endmacro %} {% endmacro %}
{% macro color_section(id, form_action, form_name, section_title, current_color) %} {% macro color_section(id, form_action, form_name, section_title, current_color) %}
<div class="d-lg-flex border-bottom"> <div class="d-lg-flex border-bottom">
<div class="title w-lg-25"> <div class="title w-lg-25">
<label for="{{id}}">{{section_title}}</label> <label for="{{id}}">{{section_title}}</label>
</div> </div>
@ -49,7 +49,7 @@
</form> </form>
</div> </div>
</div> </div>
</div> </div>
{% endmacro %} {% endmacro %}
{% macro line_text_section(id, form_action, form_name, section_title, contents, below_text, placeholder_text, button_text, show_emojis, minlength, maxlength, pattern, disabled) %} {% macro line_text_section(id, form_action, form_name, section_title, contents, below_text, placeholder_text, button_text, show_emojis, minlength, maxlength, pattern, disabled) %}
@ -72,7 +72,7 @@
{% endmacro %} {% endmacro %}
{% macro text_area_section(id, form_action, form_name, section_title, contents, below_text, placeholder_text, show_extras, maxlength) %} {% macro text_area_section(id, form_action, form_name, section_title, contents, below_text, placeholder_text, show_extras, maxlength) %}
<div class="body d-lg-flex border-bottom"> <div class="body d-lg-flex border-bottom">
<label class="text-black w-lg-25">{{section_title}}</label> <label class="text-black w-lg-25">{{section_title}}</label>
<div class="w-lg-100"> <div class="w-lg-100">
<form id="{{id}}-form" action="{{form_action}}" method="post" enctype="multipart/form-data" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHR(this)"> <form id="{{id}}-form" action="{{form_action}}" method="post" enctype="multipart/form-data" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHR(this)">
@ -93,5 +93,5 @@
</div> </div>
</form> </form>
</div> </div>
</div> </div>
{% endmacro %} {% endmacro %}

View File

@ -1,7 +1,7 @@
{% extends "settings.html" %} {% extends "settings.html" %}
{% block pagetitle %}Custom CSS{% endblock %} {% block pagetitle %}Custom CSS{% endblock %}
{% block content %} {% block content %}
<div class="row"> <div class="row">
<div class="settings col col-md-8"> <div class="settings col col-md-8">
<section> <section>
<h5>Custom CSS</h5> <h5>Custom CSS</h5>
@ -40,6 +40,5 @@
</div> </div>
</section> </section>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,7 +1,7 @@
{% extends "settings.html" %} {% extends "settings.html" %}
{% block pagetitle %}Personal Settings{% endblock %} {% block pagetitle %}Personal Settings{% endblock %}
{% block content %} {% block content %}
<div class="row settings-page" id="settings-page-personal"> <div class="row settings-page" id="settings-page-personal">
<div class="col col-lg-10"> <div class="col col-lg-10">
<div class="settings"> <div class="settings">
<section id="site-settings-experience-section" class="settings-section-section"> <section id="site-settings-experience-section" class="settings-section-section">
@ -326,25 +326,25 @@
</section> </section>
</div> </div>
</div> </div>
</div> </div>
{% include "modals/emoji.html" %} {% include "modals/emoji.html" %}
{% include "modals/gif.html" %} {% include "modals/gif.html" %}
{% if v.flairchanged %} {% if v.flairchanged %}
<input hidden id="flairchanged" value="{{v.flairchanged}}"> <input hidden id="flairchanged" value="{{v.flairchanged}}">
<script defer src="{{'js/flairchanged.js' | asset}}"></script> <script defer src="{{'js/flairchanged.js' | asset}}"></script>
{% endif %} {% endif %}
{% if v.namechanged %} {% if v.namechanged %}
<input hidden id="namechanged" value="{{v.namechanged}}"> <input hidden id="namechanged" value="{{v.namechanged}}">
<script defer src="{{'js/namechanged.js' | asset}}"></script> <script defer src="{{'js/namechanged.js' | asset}}"></script>
{% endif %} {% endif %}
<script defer src="{{'js/settings_profile.js' | asset}}"></script> <script defer src="{{'js/settings_profile.js' | asset}}"></script>
{% macro permanent_filter_modal(id, form_action, field, friendly_name, badge_name) %} {% macro permanent_filter_modal(id, form_action, field, friendly_name, badge_name) %}
{% if FEATURES['USERS_PERMANENT_WORD_FILTERS'] -%} {% if FEATURES['USERS_PERMANENT_WORD_FILTERS'] -%}
<div class="modal fade" id="modal-{{id}}" tabindex="-1"> <div class="modal fade" id="modal-{{id}}" tabindex="-1">
<div class="modal-dialog modal-dialog-centered"> <div class="modal-dialog modal-dialog-centered">
<form class="m-auto" action="{{form_action}}" id="{{id}}-form" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHRReload(this)"> <form class="m-auto" action="{{form_action}}" id="{{id}}-form" method="post" data-nonce="{{g.nonce}}" data-onsubmit="sendFormXHRReload(this)">
<div class="modal-content"> <div class="modal-content">
@ -368,9 +368,10 @@
</div> </div>
</form> </form>
</div> </div>
</div> </div>
{%- endif %} {%- endif %}
{% endmacro %} {% endmacro %}
{{permanent_filter_modal('slurreplacer', '/settings/personal', 'slurreplacer', 'Slur Replacer', 'Social Justice Berserker')}}
{{permanent_filter_modal('profanityreplacer', '/settings/personal', 'profanityreplacer', 'Profanity Replacer', 'Soapy-Mouthed Angel')}} {{permanent_filter_modal('slurreplacer', '/settings/personal', 'slurreplacer', 'Slur Replacer', 'Social Justice Berserker')}}
{{permanent_filter_modal('profanityreplacer', '/settings/personal', 'profanityreplacer', 'Profanity Replacer', 'Soapy-Mouthed Angel')}}
{% endblock %} {% endblock %}

View File

@ -1,9 +1,9 @@
{% extends "settings.html" %} {% extends "settings.html" %}
{% block pagetitle %}Security Settings{% endblock %} {% block pagetitle %}Security Settings{% endblock %}
{% block content %} {% block content %}
<script defer src="{{'js/settings_security.js' | asset}}"></script> <script defer src="{{'js/settings_security.js' | asset}}"></script>
<div class="row settings-page" id="settings-page-security"> <div class="row settings-page" id="settings-page-security">
<div class="col col-lg-8"> <div class="col col-lg-8">
<div class="settings"> <div class="settings">
<section id="site-settings-email-section" class="settings-section-section"> <section id="site-settings-email-section" class="settings-section-section">
<h5>Email</h5> <h5>Email</h5>
@ -122,10 +122,10 @@
</form> </form>
</section> </section>
</div> </div>
</div> </div>
</div> </div>
<div class="modal fade" id="2faModal" tabindex="-1"> <div class="modal fade" id="2faModal" tabindex="-1">
<div class="modal-dialog modal-dialog-centered"> <div class="modal-dialog modal-dialog-centered">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
@ -180,11 +180,11 @@
</form> </form>
</div> </div>
</div> </div>
</div> </div>
<div class="toast error" id="toast-exile-error" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000"> <div class="toast error" id="toast-exile-error" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000">
<div class="toast-body text-center"> <div class="toast-body text-center">
<i class="fas fa-exclamation-circle text-danger mr-2"></i><span id="toast-error-message">Error. Please try again.</span> <i class="fas fa-exclamation-circle text-danger mr-2"></i><span id="toast-error-message">Error. Please try again.</span>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -3,8 +3,8 @@
{% block pagetype %}settings2{% endblock %} {% block pagetype %}settings2{% endblock %}
{% block body_attributes %}class="has_header"{% endblock %} {% block body_attributes %}class="has_header"{% endblock %}
{% block body %} {% block body %}
{% include "header.html" %} {% include "header.html" %}
{% block subNav %} {% block subNav %}
{% if not request.path.startswith('/h/') %} {% if not request.path.startswith('/h/') %}
<div class="container-fluid bg-white sticky d-mob-none" style="padding-top: 50px; padding-bottom: 0 !important"> <div class="container-fluid bg-white sticky d-mob-none" style="padding-top: 50px; padding-bottom: 0 !important">
<div class="row box-shadow-bottom"> <div class="row box-shadow-bottom">
@ -69,26 +69,23 @@
</div> </div>
</div> </div>
{% endif %} {% endif %}
{% endblock %} {% endblock %}
<div class="pt-3 container">
{% block content %}{% endblock %}
<div class="pt-3 container">
{% block content %}{% endblock %}
</div> </div>
<div class="toast clipboard" id="toast-clipboard-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000"> <div class="toast clipboard" id="toast-clipboard-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000">
<div class="toast-body text-center"> <div class="toast-body text-center">
<i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard <i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard
</div> </div>
</div> </div>
<div class="toast clipboard" id="toast-clipboard-error" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000"> <div class="toast clipboard" id="toast-clipboard-error" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000">
<div class="toast-body text-center"> <div class="toast-body text-center">
<i class="fas fa-exclamation-circle mr-2"></i>Unable to copy link <i class="fas fa-exclamation-circle mr-2"></i>Unable to copy link
</div> </div>
</div> </div>
{% block mobilenavbar %}{% include "mobile_navigation_bar.html" %}{% endblock %} {% block mobilenavbar %}{% include "mobile_navigation_bar.html" %}{% endblock %}
{% block scripts %}{% endblock %} {% block scripts %}{% endblock %}
{% endblock %} {% endblock %}

View File

@ -1,12 +1,12 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}{{SITE_NAME}} Sidebar{% endblock %} {% block pagetitle %}{{SITE_NAME}} Sidebar{% endblock %}
{% block content %} {% block content %}
<div class="mx-4 mt-4 mb-6"> <div class="mx-4 mt-4 mb-6">
<h1 class="text-muted text-uppercase">Sidebar</h5> <h1 class="text-muted text-uppercase">Sidebar</h5>
<div id="sidebar" class="my-3"> <div id="sidebar" class="my-3">
{% if has_sidebar %} {% if has_sidebar %}
{% include "sidebar_" ~ SITE_NAME ~ ".html" %} {% include "sidebar_" ~ SITE_NAME ~ ".html" %}
{% endif %} {% endif %}
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,9 +1,9 @@
{%- extends 'default.html' -%} {%- extends 'default.html' -%}
{% block pagetitle %}Women World Cup 2023 Betting Leaderboard{% endblock %} {% block pagetitle %}Women World Cup 2023 Betting Leaderboard{% endblock %}
{% block content %} {% block content %}
<h1>Women World Cup 2023 Betting Leaderboard</h1> <h1>Women World Cup 2023 Betting Leaderboard</h1>
<div class="overflow-x-auto"> <div class="overflow-x-auto">
<table class="table table-striped mb-5"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
<th>#</th> <th>#</th>
@ -29,7 +29,6 @@
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,14 +1,15 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}Content Statistics{% endblock %} {% block pagetitle %}Content Statistics{% endblock %}
{% block content %} {% block content %}
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5"> <div class="overflow-x-auto mt-1">
<thead class="bg-primary text-white"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th class="disable-sort-click">Statistic</th> <th class="disable-sort-click">Statistic</th>
<th class="disable-sort-click">Value</th> <th class="disable-sort-click">Value</th>
</tr> </tr>
</thead> </thead>
{% for key, value in data.items() %} {% for key, value in data.items() %}
<tr> <tr>
<td>{{key}}</td> <td>{{key}}</td>
{% if key == 'time' -%} {% if key == 'time' -%}
@ -17,6 +18,7 @@
<td>{{value}}</td> <td>{{value}}</td>
{%- endif %} {%- endif %}
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div>
{% endblock %} {% endblock %}

View File

@ -13,11 +13,11 @@
</div> </div>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
<div class="toast clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000"> <div class="toast clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000">
<div class="toast-body text-center"> <div class="toast-body text-center">
<i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard <i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard
</div> </div>
</div> </div>
<script defer src="{{'js/vendor/clipboard.js' | asset}}"></script> <script defer src="{{'js/vendor/clipboard.js' | asset}}"></script>
{% endblock %} {% endblock %}

View File

@ -3,11 +3,11 @@
{% block PseudoSubmitForm %}{% endblock %} {% block PseudoSubmitForm %}{% endblock %}
{% block customPadding %}{% endblock %} {% block customPadding %}{% endblock %}
{% block content %} {% block content %}
<div class="row mt-3 p-md-4"> <div class="row mt-3 p-md-4">
{% include "user_listing.html" %} {% include "user_listing.html" %}
</div> </div>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}
{% block navbar %}{% endblock %} {% block navbar %}{% endblock %}

View File

@ -10,7 +10,7 @@
{% set pfp_expanded = u.highres if (u.highres and can_see(v, u)) else u.profile_url %} {% set pfp_expanded = u.highres if (u.highres and can_see(v, u)) else u.profile_url %}
{% block desktopUserBanner %} {% block desktopUserBanner %}
<div class="row d-mob-none"> <div class="row d-mob-none">
<div class="col px-0"> <div class="col px-0">
<div id="desktopUserBanner" class="jumbotron jumbotron-fluid jumbotron-guild d-mob-none" {% if FEATURES['USERS_PROFILE_BANNER'] %}data-style="background-image: url({{u.banner_url}})"{% endif %}> <div id="desktopUserBanner" class="jumbotron jumbotron-fluid jumbotron-guild d-mob-none" {% if FEATURES['USERS_PROFILE_BANNER'] %}data-style="background-image: url({{u.banner_url}})"{% endif %}>
<div class="jumbotron-overlay"></div> <div class="jumbotron-overlay"></div>
@ -168,7 +168,6 @@
{% endif %} {% endif %}
<div class="d-flex justify-content-between align-items-center"> <div class="d-flex justify-content-between align-items-center">
<div>
{% if v and v.id != u.id %} {% if v and v.id != u.id %}
<div id="profile--actionbtns"> <div id="profile--actionbtns">
<div class="actionbtns mb-3"> <div class="actionbtns mb-3">
@ -289,7 +288,6 @@
{% endif %} {% endif %}
</div> </div>
</div> </div>
</div>
{% if FEATURES['BADGES'] -%} {% if FEATURES['BADGES'] -%}
<div id="profile--badges"> <div id="profile--badges">
@ -307,14 +305,14 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
{% block mobileUserBanner %} {% block mobileUserBanner %}
<div class="container-fluid pb-0 text-center bg-white d-md-none" style="border-radius:0!important"> <div class="container-fluid pb-0 text-center bg-white d-md-none" style="border-radius:0!important">
<div class="row"> <div class="row">
<div class="col px-0"> <div class="col px-0">
<a rel="nofollow noopener" href="{{u.banner_url}}"> <a rel="nofollow noopener" href="{{u.banner_url}}">
@ -599,5 +597,5 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -3,7 +3,7 @@
{% block pagetype %}userpage{% endblock %} {% block pagetype %}userpage{% endblock %}
{% block pagetitle %}@{{u.username}}{% endblock %} {% block pagetitle %}@{{u.username}}{% endblock %}
{% block content %} {% block content %}
<div class="row no-gutters"> <div class="row no-gutters">
<div class="col-12"> <div class="col-12">
<div class="text-center py-6 py-md-8"> <div class="text-center py-6 py-md-8">
<span class="fa-stack fa-2x text-muted mb-2"> <span class="fa-stack fa-2x text-muted mb-2">
@ -15,6 +15,6 @@
<button type="button" class="btn btn-success text-success mt-2" data-nonce="{{g.nonce}}" data-onclick="postToastReload(this,'/unblock_user?username={{u.username}}')"><i class="fas fa-eye text-success mr-2"></i>Unblock @{{u.username}}</a> <button type="button" class="btn btn-success text-success mt-2" data-nonce="{{g.nonce}}" data-onclick="postToastReload(this,'/unblock_user?username={{u.username}}')"><i class="fas fa-eye text-success mr-2"></i>Unblock @{{u.username}}</a>
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
{% block pagenav %}{% endblock %} {% block pagenav %}{% endblock %}

View File

@ -1,28 +1,29 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}@{{u.username}}'s blockers{% endblock %} {% block pagetitle %}@{{u.username}}'s blockers{% endblock %}
{% block content %} {% block content %}
<h5 class="my-3">@{{u.username}}'s blockers ({{total}} user{{macros.plural(total)}})</h5> <h5 class="my-3">@{{u.username}}'s blockers ({{total}} user{{macros.plural(total)}})</h5>
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5"> <div class="overflow-x-auto mt-1">
<thead class="bg-primary text-white"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>Name</th> <th>Name</th>
<th class="disable-sort-click">Blocking since</td> <th class="disable-sort-click">Blocking since</td>
</tr> </tr>
</thead> </thead>
<tbody id="blockers-table"> <tbody id="blockers-table">
{% for block, user in users %} {% for block, user in users %}
<tr> <tr>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
<td {% if block.created_utc > 1599343262 %}data-time="{{block.created_utc}}"{% endif %}></td> <td {% if block.created_utc > 1599343262 %}data-time="{{block.created_utc}}"{% endif %}></td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}
({{total}} user{{macros.plural(total)}}) ({{total}} user{{macros.plural(total)}})

View File

@ -1,9 +1,9 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}Users blocked by @{{u.username}}{% endblock %} {% block pagetitle %}Users blocked by @{{u.username}}{% endblock %}
{% block content %} {% block content %}
<h5 class="my-3">Users blocked by @{{u.username}} ({{total}} user{{macros.plural(total)}})</h5> <h5 class="my-3">Users blocked by @{{u.username}} ({{total}} user{{macros.plural(total)}})</h5>
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5"> <div class="overflow-x-auto mt-1"><table class="table table-striped mb-5">
<thead class="bg-primary text-white"> <thead class="bg-primary text-white">
<tr> <tr>
<th>Name</th> <th>Name</th>
<th class="disable-sort-click">Blocking since</th> <th class="disable-sort-click">Blocking since</th>
@ -11,9 +11,9 @@
<th class="disable-sort-click"></th> <th class="disable-sort-click"></th>
{% endif %} {% endif %}
</tr> </tr>
</thead> </thead>
<tbody id="blockers-table"> <tbody id="blockers-table">
{% for block, user in users %} {% for block, user in users %}
<tr> <tr>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
<td {% if block.created_utc > 1599343262 %}data-time="{{block.created_utc}}"{% endif %}></td> <td {% if block.created_utc > 1599343262 %}data-time="{{block.created_utc}}"{% endif %}></td>
@ -23,16 +23,15 @@
</td> </td>
{% endif %} {% endif %}
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
{% if v.id == u.id %} {% if v.id == u.id %}
<script defer src="{{'js/userpage_blocking.js' | asset}}"></script> <script defer src="{{'js/userpage_blocking.js' | asset}}"></script>
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}

View File

@ -1,9 +1,10 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}@{{u.username}}'s followers{% endblock %} {% block pagetitle %}@{{u.username}}'s followers{% endblock %}
{% block content %} {% block content %}
<h5 class="my-3">@{{u.username}}'s followers ({{total}} user{{macros.plural(total)}})</h5> <h5 class="my-3">@{{u.username}}'s followers ({{total}} user{{macros.plural(total)}})</h5>
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5"> <div class="overflow-x-auto mt-1">
<thead class="bg-primary text-white"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>Name</th> <th>Name</th>
<th class="disable-sort-click">Following since</td> <th class="disable-sort-click">Following since</td>
@ -11,9 +12,9 @@
<th class="disable-sort-click"></th> <th class="disable-sort-click"></th>
{% endif %} {% endif %}
</tr> </tr>
</thead> </thead>
<tbody id="followers-table"> <tbody id="followers-table">
{% for follow, user in users %} {% for follow, user in users %}
<tr> <tr>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
<td {% if follow.created_utc > 1599343262 %}data-time="{{follow.created_utc}}"{% endif %}></td> <td {% if follow.created_utc > 1599343262 %}data-time="{{follow.created_utc}}"{% endif %}></td>
@ -25,14 +26,14 @@
</td> </td>
{% endif %} {% endif %}
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div>
<script defer src="{{'js/followers.js' | asset}}"></script>
<script defer src="{{'js/followers.js' | asset}}"></script>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}

View File

@ -1,9 +1,10 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}Users followed by @{{u.username}}{% endblock %} {% block pagetitle %}Users followed by @{{u.username}}{% endblock %}
{% block content %} {% block content %}
<h5 class="my-3">Users followed by @{{u.username}} ({{total}} user{{macros.plural(total)}})</h5> <h5 class="my-3">Users followed by @{{u.username}} ({{total}} user{{macros.plural(total)}})</h5>
<div class="overflow-x-auto"><table class="table table-striped mb-5"> <div class="overflow-x-auto">
<thead class="bg-primary text-white"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>Name</th> <th>Name</th>
<th class="disable-sort-click">Following since</td> <th class="disable-sort-click">Following since</td>
@ -11,9 +12,9 @@
<th class="disable-sort-click"></th> <th class="disable-sort-click"></th>
{% endif %} {% endif %}
</tr> </tr>
</thead> </thead>
<tbody id="followers-table"> <tbody id="followers-table">
{% for follow, user in users %} {% for follow, user in users %}
<tr> <tr>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
<td {% if follow.created_utc > 1599343262 %}data-time="{{follow.created_utc}}"{% endif %}></td> <td {% if follow.created_utc > 1599343262 %}data-time="{{follow.created_utc}}"{% endif %}></td>
@ -25,14 +26,14 @@
</td> </td>
{% endif %} {% endif %}
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div>
<script defer src="{{'js/following.js' | asset}}"></script>
<script defer src="{{'js/following.js' | asset}}"></script>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}

View File

@ -1,26 +1,27 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}@{{u.username}}'s notification muters{% endblock %} {% block pagetitle %}@{{u.username}}'s notification muters{% endblock %}
{% block content %} {% block content %}
<h5 class="my-3">@{{u.username}}'s notification muters ({{total}} user{{macros.plural(total)}})</h5> <h5 class="my-3">@{{u.username}}'s notification muters ({{total}} user{{macros.plural(total)}})</h5>
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5"> <div class="overflow-x-auto mt-1">
<thead class="bg-primary text-white"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>Name</th> <th>Name</th>
<th class="disable-sort-click">Muting notifications since</td> <th class="disable-sort-click">Muting notifications since</td>
</tr> </tr>
</thead> </thead>
<tbody id="muters-table"> <tbody id="muters-table">
{% for mute, user in users %} {% for mute, user in users %}
<tr> <tr>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
<td data-time="{{mute.created_utc}}"></td> <td data-time="{{mute.created_utc}}"></td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}

View File

@ -1,9 +1,10 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}Users whose notifications are muted by @{{u.username}}{% endblock %} {% block pagetitle %}Users whose notifications are muted by @{{u.username}}{% endblock %}
{% block content %} {% block content %}
<h5 class="my-3">Users whose notifications are muted by @{{u.username}} ({{total}} user{{macros.plural(total)}})</h5> <h5 class="my-3">Users whose notifications are muted by @{{u.username}} ({{total}} user{{macros.plural(total)}})</h5>
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5"> <div class="overflow-x-auto mt-1">
<thead class="bg-primary text-white"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>Name</th> <th>Name</th>
<th class="disable-sort-click">Muting notifications since</th> <th class="disable-sort-click">Muting notifications since</th>
@ -11,9 +12,9 @@
<th class="disable-sort-click"></th> <th class="disable-sort-click"></th>
{% endif %} {% endif %}
</tr> </tr>
</thead> </thead>
<tbody id="muters-table"> <tbody id="muters-table">
{% for mute, user in users %} {% for mute, user in users %}
<tr> <tr>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
<td data-time="{{mute.created_utc}}"></td> <td data-time="{{mute.created_utc}}"></td>
@ -23,16 +24,16 @@
</td> </td>
{% endif %} {% endif %}
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div>
{% if v.id == u.id %} {% if v.id == u.id %}
<script defer src="{{'js/userpage_muting.js' | asset}}"></script> <script defer src="{{'js/userpage_muting.js' | asset}}"></script>
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}

View File

@ -1,10 +1,10 @@
{%- extends 'userpage/userpage.html' -%} {%- extends 'userpage/userpage.html' -%}
{% block userpage_content %} {% block userpage_content %}
<div class="row no-gutters {% if listing %}mt-md-3{% elif not listing %}my-md-3{% endif %} userpage-posts" style="margin-top: 10px"> <div class="row no-gutters {% if listing %}mt-md-3{% elif not listing %}my-md-3{% endif %} userpage-posts" style="margin-top: 10px">
<div class="col"> <div class="col">
<div class="posts"> <div class="posts">
{% include "post_listing.html" %} {% include "post_listing.html" %}
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,6 +1,6 @@
{% extends "userpage/userpage.html" %} {% extends "userpage/userpage.html" %}
{% block userpage_content %} {% block userpage_content %}
<div class="row justify-content-center userpage-private"> <div class="row justify-content-center userpage-private">
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center px-3 my-3"> <div class="text-center px-3 my-3">
<span class="fa-stack fa-2x text-muted mb-4"> <span class="fa-stack fa-2x text-muted mb-4">
@ -11,5 +11,5 @@
<p class="text-muted">This user has enabled private mode to cloak their posting history.</p> <p class="text-muted">This user has enabled private mode to cloak their posting history.</p>
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,6 +1,7 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetype %}userpage{% endblock %} {% block pagetype %}userpage{% endblock %}
{% block pagetitle %}@{{u.username}}'s profile{% endblock %} {% block pagetitle %}@{{u.username}}'s profile{% endblock %}
{% block head_final %} {% block head_final %}
{% if u and u.profile_background %} {% if u and u.profile_background %}
<link rel="stylesheet" href="{{('css/transparent.css') | asset}}"> <link rel="stylesheet" href="{{('css/transparent.css') | asset}}">
@ -9,42 +10,47 @@
<link rel="stylesheet" href="/@{{u.username}}/profilecss"> <link rel="stylesheet" href="/@{{u.username}}/profilecss">
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
{%- include 'userpage/banner.html' -%} {%- include 'userpage/banner.html' -%}
{%- include 'userpage/header.html' -%} {%- include 'userpage/header.html' -%}
{% block userpage_content required %}{% endblock %} {% block userpage_content required %}{% endblock %}
{% if FEATURES['USERS_PROFILE_SONG'] and u.song %}
{% if FEATURES['USERS_PROFILE_SONG'] and u.song %}
{% if v and v.id == u.id %} {% if v and v.id == u.id %}
<div id="v_username" class="d-none">{{v.username}}</div> <div id="v_username" class="d-none">{{v.username}}</div>
{% else %} {% else %}
<div id="u_username" class="d-none">{{u.username}}</div> <div id="u_username" class="d-none">{{u.username}}</div>
{% endif %} {% endif %}
{% endif %} {% endif %}
{% 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 defer src="{{'js/userpage_v.js' | asset}}"></script> <script defer 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 defer src="{{'js/userpage.js' | asset}}"></script>
{% if can_see(v, u) and u.song %} <script defer src="{{'js/userpage.js' | asset}}"></script>
{% if can_see(v, u) and u.song %}
<audio id="profile-song" hidden preload="none" src="/songs/{{u.song}}.mp3" loop></audio> <audio id="profile-song" hidden preload="none" src="/songs/{{u.song}}.mp3" loop></audio>
<script defer src="{{'js/profile_song.js' | asset}}"></script> <script defer src="{{'js/profile_song.js' | asset}}"></script>
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% if listing %} {% if listing %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endif %} {% endif %}
{% if request.path.endswith('/posts') %} {% if request.path.endswith('/posts') %}
<script defer src="{{'js/vendor/marked.js' | asset}}"></script> <script defer src="{{'js/vendor/marked.js' | asset}}"></script>
<script defer src="{{'js/markdown.js' | asset}}"></script> <script defer src="{{'js/markdown.js' | asset}}"></script>
{% endif %} {% endif %}
{% if v and v.id != u.id and request.path.endswith('/posts') %} {% if v and v.id != u.id and request.path.endswith('/posts') %}
{% include "modals/gif.html" %} {% include "modals/gif.html" %}
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block GIFpicker %}{% endblock %} {% block GIFpicker %}{% endblock %}

View File

@ -1,15 +1,17 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}@{{u.username}}'s Profile Views{% endblock %} {% block pagetitle %}@{{u.username}}'s Profile Views{% endblock %}
{% block content %} {% block content %}
<h5 class="pt-4 pl-2 pb-3">Users who viewed @{{u.username}}'s profile</h5> <h5 class="pt-4 pl-2 pb-3">Users who viewed @{{u.username}}'s profile</h5>
<div class="overflow-x-auto"><table class="table table-striped mb-5"> <div class="overflow-x-auto">
<thead class="bg-primary text-white"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>Name</th> <th>Name</th>
<th class="disable-sort-click">Last visit</th> <th class="disable-sort-click">Last visit</th>
</tr> </tr>
</thead> </thead>
{% for view in views %} {% for view in views %}
<tr> <tr>
<td> <td>
{% with user=view.viewer %} {% with user=view.viewer %}
@ -18,11 +20,11 @@
</td> </td>
<td>{{view.last_view_string}}</td> <td>{{view.last_view_string}}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
</div>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}

View File

@ -5,7 +5,7 @@
{% block mobileUserBanner %}{% endblock %} {% block mobileUserBanner %}{% endblock %}
{% block pagetitle %}Posts{% endblock %} {% block pagetitle %}Posts{% endblock %}
{% block content %} {% block content %}
<ul class="nav post-nav py-2"> <ul class="nav post-nav py-2">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link {% if request.path.endswith('/posts') %}active" href="{{request.path}}"{% else %}" href="{{request.path.replace('/comments','/posts')}}"{% endif %}> <a class="nav-link {% if request.path.endswith('/posts') %}active" href="{{request.path}}"{% else %}" href="{{request.path.replace('/comments','/posts')}}"{% endif %}>
Posts Posts
@ -16,8 +16,8 @@
Comments Comments
</a> </a>
</li> </li>
</ul> </ul>
<div class="row no-gutters"> <div class="row no-gutters">
<div class="col"> <div class="col">
{% block listing %} {% block listing %}
<div class="posts"> <div class="posts">
@ -25,9 +25,9 @@
</div> </div>
{% endblock %} {% endblock %}
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}

View File

@ -1,25 +1,26 @@
{% extends "default.html" %} {% extends "default.html" %}
{% block pagetitle %}{{name2}}{% endblock %} {% block pagetitle %}{{name2}}{% endblock %}
{% block content %} {% block content %}
<h3 class="my-3" style="text-align: center">{{name2}}</h3> <h3 class="my-3" style="text-align: center">{{name2}}</h3>
<h5 class="font-weight-bold text-center mt-3">Total: {{total_items}}</h5> <h5 class="font-weight-bold text-center mt-3">Total: {{total_items}}</h5>
<div class="mt-1 overflow-x-auto"><table class="table table-striped mb-5"> <div class="mt-1 overflow-x-auto">
<thead class="bg-primary text-white"> <table class="table table-striped mb-5">
<thead class="bg-primary text-white">
<tr> <tr>
<th>#</th> <th>#</th>
<th>Name</th> <th>Name</th>
<th>{{name}}votes</th> <th>{{name}}votes</th>
</tr> </tr>
</thead> </thead>
<tbody id="followers-table"> <tbody id="followers-table">
{% for user, num in users %} {% for user, num in users %}
<tr {% if v.id == user.id %}class="self"{% endif %}> <tr {% if v.id == user.id %}class="self"{% endif %}>
<td>{{loop.index+PAGE_SIZE*(page-1)}}</td> <td>{{loop.index+PAGE_SIZE*(page-1)}}</td>
<td>{% include "user_in_table.html" %}</td> <td>{% include "user_in_table.html" %}</td>
<td><a href="{{request.path}}/@{{user.username}}/posts">{{num}}</a></td> <td><a href="{{request.path}}/@{{user.username}}/posts">{{num}}</a></td>
</tr> </tr>
{% endfor %} {% endfor %}
{% if pos and (pos[0] > 25 or not pos[1]) %} {% if pos and (pos[0] > 25 or not pos[1]) %}
<tr style="border-top:2px solid var(--primary)"> <tr style="border-top:2px solid var(--primary)">
<td>{{pos[0]}}</td> <td>{{pos[0]}}</td>
<td> <td>
@ -29,12 +30,12 @@
</td> </td>
<td><a href="{{request.path}}/@{{v.username}}/posts">{{pos[1]}}</a></td> <td><a href="{{request.path}}/@{{v.username}}/posts">{{pos[1]}}</a></td>
</tr> </tr>
{% endif %} {% endif %}
</tbody> </tbody>
</table> </table>
</div>
{% endblock %} {% endblock %}
{% block pagenav %} {% block pagenav %}
{% include "pagination.html" %} {% include "pagination.html" %}
{% endblock %} {% endblock %}

Some files were not shown because too many files have changed in this diff Show More