fix up tabs
parent
aa2c90c893
commit
a68dcfd5fe
|
@ -2,23 +2,23 @@
|
|||
{% block pagetitle %}Admin Home{% endblock %}
|
||||
{% block customPadding %}px-3{% endblock %}
|
||||
{% 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>
|
||||
<ul>
|
||||
<li><a href="/admin/insert_transaction">Insert Transaction</a></li>
|
||||
</ul>
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
|
||||
{% if v.admin_level >= PERMS['ORGIES'] %}
|
||||
{% if v.admin_level >= PERMS['ORGIES'] %}
|
||||
<h4>Orgies</h4>
|
||||
<ul>
|
||||
<li><a href="/admin/orgies">Schedule/Stop Orgy</a></li>
|
||||
</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>
|
||||
<ul>
|
||||
{% if v.admin_level >= PERMS['USE_ADMIGGER_THREADS'] %}
|
||||
|
@ -50,10 +50,10 @@
|
|||
<li><a href="/admin/update/hats">Update Hats</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<h4>Content</h4>
|
||||
<ul>
|
||||
<h4>Content</h4>
|
||||
<ul>
|
||||
{% if v.admin_level >= PERMS['ENABLE_DM_MEDIA'] %}
|
||||
<li><a href="/admin/dm_media">DM Media</a></li>
|
||||
{% endif %}
|
||||
|
@ -63,10 +63,10 @@
|
|||
<li><a href="/admin/reported/posts">Reported Posts/Comments</a></li>
|
||||
<li><a href="/admin/removed/posts">Removed Posts/Comments</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
<h4>Users</h4>
|
||||
<ul>
|
||||
<h4>Users</h4>
|
||||
<ul>
|
||||
{% if v.can_see_shadowbanned %}
|
||||
<li><a href="/admin/shadowbanned">Shadowbanned Users</a></li>
|
||||
{% endif %}
|
||||
|
@ -82,10 +82,10 @@
|
|||
<li><a href="/admin/loggedin">Currently Logged-in Users</a></li>
|
||||
<li><a href="/admin/loggedout">Currently Logged-out Users</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
<h4>Safety</h4>
|
||||
<ul>
|
||||
<h4>Safety</h4>
|
||||
<ul>
|
||||
{% if v.admin_level >= PERMS['DELETE_MEDIA'] %}
|
||||
<li><a href="/admin/delete_media">Delete Media</a></li>
|
||||
{% endif %}
|
||||
|
@ -98,32 +98,32 @@
|
|||
{% if v.admin_level >= PERMS['VIEW_ALT_VOTES'] %}
|
||||
<li><a href="/admin/alt_votes">Alt Vote Analysis</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
{% if FEATURES['BADGES'] and v.admin_level >= PERMS['USER_BADGES'] -%}
|
||||
<h4>Badges</h4>
|
||||
<ul>
|
||||
{% if FEATURES['BADGES'] and v.admin_level >= PERMS['USER_BADGES'] -%}
|
||||
<h4>Badges</h4>
|
||||
<ul>
|
||||
<li><a href="/admin/badge_grant">Grant Badges</a></li>
|
||||
<li><a href="/admin/badge_remove">Remove Badges</a></li>
|
||||
</ul>
|
||||
{%- endif %}
|
||||
</ul>
|
||||
{%- endif %}
|
||||
|
||||
{% if FEATURES['GAMBLING'] and v.admin_level >= PERMS['LOTTERY_VIEW_PARTICIPANTS'] -%}
|
||||
<h4>Casino</h4>
|
||||
<ul>
|
||||
{% if FEATURES['GAMBLING'] and v.admin_level >= PERMS['LOTTERY_VIEW_PARTICIPANTS'] -%}
|
||||
<h4>Casino</h4>
|
||||
<ul>
|
||||
<li><a href="/admin/lottery/participants">Participants</a></li>
|
||||
</ul>
|
||||
{%- endif %}
|
||||
</ul>
|
||||
{%- endif %}
|
||||
|
||||
<h4>Statistics</h4>
|
||||
<ul>
|
||||
<h4>Statistics</h4>
|
||||
<ul>
|
||||
<li><a href="/stats">Content Stats</a></li>
|
||||
<li><a href="/weekly_chart">Weekly Stat Chart</a></li>
|
||||
<li><a href="/daily_chart">Daily Stat Chart</a></li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
<h4>Configuration</h4>
|
||||
<ul class="pb-3">
|
||||
<h4>Configuration</h4>
|
||||
<ul class="pb-3">
|
||||
{% if v.admin_level >= PERMS['EDIT_RULES'] %}
|
||||
<li><a href="/admin/edit_rules">Edit the Rules</a></li>
|
||||
{%- endif %}
|
||||
|
@ -133,9 +133,9 @@
|
|||
{% if v.admin_level >= PERMS['APPS_MODERATION'] %}
|
||||
<li><a href="/admin/apps">Apps</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
{% if v.admin_level >= PERMS['SITE_SETTINGS'] %}
|
||||
{% if v.admin_level >= PERMS['SITE_SETTINGS'] %}
|
||||
{% for setting in SITE_SETTINGS.keys() %}
|
||||
{% 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">
|
||||
|
@ -144,14 +144,13 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
{% 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>
|
||||
{% 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>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}Alt Vote Analysis{% endblock %}
|
||||
{% 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>
|
||||
<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 type="submit" value="Submit" class="btn btn-primary">
|
||||
</form>
|
||||
</form>
|
||||
|
||||
{% if u1 and u2 %}
|
||||
<h2>Analysis</h2>
|
||||
<div class="overflow-x-auto"><table class="table table-striped mb-5">
|
||||
{% if u1 and u2 %}
|
||||
<h2>Analysis</h2>
|
||||
<div class="overflow-x-auto"><table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th class="disable-sort-click"></th>
|
||||
|
@ -45,8 +45,8 @@
|
|||
<td>{{data['both_comment_downs']}}</td>
|
||||
<td>{{data['u2_only_comment_downs']}} ({{data['u2_comment_downs_unique']}}%)</td>
|
||||
</tr>
|
||||
</table>
|
||||
{% if v.admin_level >= PERMS['USER_LINK'] %}
|
||||
</table>
|
||||
{% if v.admin_level >= PERMS['USER_LINK'] %}
|
||||
<h2>Link Accounts</h2>
|
||||
|
||||
{% 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>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
{% extends "settings2.html" %}
|
||||
{% block pagetitle %}Alts{% if u %} for @{{u.username}}{% endif %}{% endblock %}
|
||||
{% block content %}
|
||||
{% if u %}
|
||||
{% if u %}
|
||||
<h5 class="mt-3">Alts for <a href="/@{{u.username}}">@{{u.username}}</a></h5>
|
||||
{% else %}
|
||||
{% else %}
|
||||
<h5 class="mt-3">Alts</h5>
|
||||
{% endif %}
|
||||
<section class="username-input-section mb-3">
|
||||
{% endif %}
|
||||
<section class="username-input-section mb-3">
|
||||
<form action="/admin/alts" method="get">
|
||||
<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 type="submit" value="Submit" class="btn btn-primary">
|
||||
</form>
|
||||
</section>
|
||||
{% if u %}
|
||||
{% set count=alts|length %}
|
||||
<section class="userinfo-section">
|
||||
</section>
|
||||
{% if u %}
|
||||
{% set count=alts|length %}
|
||||
<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>
|
||||
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>
|
||||
<div class="overflow-x-auto">
|
||||
</section>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
|
@ -46,15 +46,15 @@
|
|||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
<section id="add-alt" class="rounded rounded-section p-3">
|
||||
</div>
|
||||
<section id="add-alt" class="rounded rounded-section p-3">
|
||||
<h5>Add Alt</h5>
|
||||
<p>This tool allows you to link an alt.</p>
|
||||
<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">
|
||||
<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>
|
||||
{% endif %}
|
||||
</section>
|
||||
{% endif %}
|
||||
|
||||
<script defer src="{{'js/admin/alts.js' | asset}}"></script>
|
||||
<script defer src="{{'js/admin/alts.js' | asset}}"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}API App Administration{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="row">
|
||||
<div class="col col-lg-8">
|
||||
<div class="settings">
|
||||
{% for app in apps %}
|
||||
|
@ -43,8 +43,7 @@
|
|||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script defer src="{{'js/admin/apps.js' | asset}}"></script>
|
||||
</div>
|
||||
|
||||
<script defer src="{{'js/admin/apps.js' | asset}}"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
{% block pagetitle %}{{"Badge Grant" if grant else "Badge Remove"}}{% endblock %}
|
||||
{% block pagetype %}message{% endblock %}
|
||||
{% 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)">
|
||||
<input hidden name="formkey" value="{{v|formkey}}">
|
||||
|
||||
<div class="overflow-x-auto mt-4"><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>
|
||||
<th>Select</th>
|
||||
<th>Image</th>
|
||||
|
@ -20,8 +20,8 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for badge in badge_types %}
|
||||
<tr>
|
||||
{% for badge in badge_types %}
|
||||
<tr>
|
||||
<td>
|
||||
<div class="custom-control">
|
||||
<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>{{badge.name}}</td>
|
||||
<td>{{badge.description}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
<label for="input-usernames">Usernames (separated with a space)</label>
|
||||
{% 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>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{% if grant %}
|
||||
<label class="mt-2" for="input-url">URL</label>
|
||||
<input autocomplete="off" id="input-url" class="form-control" type="text" name="url" type="url" placeholder="Optional">
|
||||
<label for="input-usernames">Usernames (separated with a space)</label>
|
||||
{% 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>
|
||||
|
||||
<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">
|
||||
{% if grant %}
|
||||
<label class="mt-2" for="input-url">URL</label>
|
||||
<input autocomplete="off" id="input-url" class="form-control" type="text" name="url" type="url" placeholder="Optional">
|
||||
|
||||
</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 %}
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
{% block pagetitle %}Banned Domains{% endblock %}
|
||||
|
||||
{% 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">
|
||||
<thead class="bg-primary text-white">
|
||||
<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" id="ban-submit" type="submit" class="btn btn-primary mt-2" value="Ban domain" disabled>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{% block pagetitle %}Delete Media{% endblock %}
|
||||
|
||||
{% 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="row justify-content-center mb-4 pb-6">
|
||||
<div class="col col-md-6 p-3 py-md-0">
|
||||
|
@ -22,5 +22,5 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}DM Media{% endblock %}
|
||||
{% block content %}
|
||||
<h2>DM Media</h2>
|
||||
<div class="overflow-x-auto">
|
||||
<h2>DM Media</h2>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
|
@ -55,9 +55,9 @@
|
|||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{% block pagetitle %}Edit {{SITE_NAME}}'s rules{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row my-5">
|
||||
<div class="row my-5">
|
||||
<div class="col">
|
||||
<div class="settings mx-3">
|
||||
<div id="description">
|
||||
|
@ -24,5 +24,5 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
{% block mobileUserBanner %}{% endblock %}
|
||||
{% block pagetitle %}Image feed{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row no-gutters">
|
||||
<div class="row no-gutters">
|
||||
<div class="col">
|
||||
{% block listing %}
|
||||
<div class="posts">
|
||||
|
@ -13,9 +13,9 @@
|
|||
</div>
|
||||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,21 +1,22 @@
|
|||
{% extends "settings2.html" %}
|
||||
{% block pagetitle %}Logged In Users{% endblock %}
|
||||
{% block content %}
|
||||
<div class="overflow-x-auto"><table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Name</th>
|
||||
<th>Truescore</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for user in users %}
|
||||
</thead>
|
||||
{% for user in users %}
|
||||
<tr>
|
||||
<td>{{loop.index}}</td>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
<td>{{"{:,}".format(user.truescore)}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,19 +1,20 @@
|
|||
{% extends "settings2.html" %}
|
||||
{% block pagetitle %}Logged Out Users{% endblock %}
|
||||
{% block content %}
|
||||
<div class="overflow-x-auto"><table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Details</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for user in users %}
|
||||
</thead>
|
||||
{% for user in users %}
|
||||
<tr>
|
||||
<td>{{loop.index}}</td>
|
||||
<td>{{user}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,21 +1,23 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}Lottery Participants{% endblock %}
|
||||
{% block content %}
|
||||
<h5 class="my-1">Admin — Lottery Participants</h5>
|
||||
<div class="overflow-x-auto"><table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<h5 class="my-1">Admin — Lottery Participants</h5>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Name</th>
|
||||
<th>Tickets Held</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for user in participants %}
|
||||
</thead>
|
||||
{% for user in participants %}
|
||||
<tr>
|
||||
<td>{{loop.index}}</td>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
<td>{{user.currently_held_lottery_tickets}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{% block pagetitle %}Orgy Control Panel{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row my-5">
|
||||
<div class="row my-5">
|
||||
<div class="col">
|
||||
<div class="settings mx-3">
|
||||
<div id="description">
|
||||
|
@ -46,9 +46,9 @@
|
|||
</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">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
|
@ -78,7 +78,7 @@
|
|||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script defer src="{{'js/admin/orgies.js' | asset}}"></script>
|
||||
<script defer src="{{'js/admin/orgies.js' | asset}}"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
{% extends "settings2.html" %}
|
||||
{% block pagetitle %}Patrons{% endblock %}
|
||||
{% block content %}
|
||||
<div class="overflow-x-auto"><table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Name</th>
|
||||
|
@ -10,8 +11,8 @@
|
|||
<th>Lifetime Donated</th>
|
||||
<th>Truescore</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for user in users %}
|
||||
</thead>
|
||||
{% for user in users %}
|
||||
<tr>
|
||||
<td>{{loop.index}}</td>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
|
@ -23,7 +24,7 @@
|
|||
<td data-sort-key="{{user.lifetimedonated}}">${{user.lifetimedonated}}</td>
|
||||
<td>{{user.truescore}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
{% block mobileUserBanner %}{% endblock %}
|
||||
{% block pagetitle %}Removed Posts{% endblock %}
|
||||
{% block content %}
|
||||
<ul class="nav post-nav py-2">
|
||||
<ul class="nav post-nav py-2">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if request.path=="/admin/removed/posts" %} active{% endif %}" href="/admin/removed/posts">
|
||||
<div>Posts</div>
|
||||
|
@ -16,8 +16,8 @@
|
|||
<div>Comments</div>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="row no-gutters">
|
||||
</ul>
|
||||
<div class="row no-gutters">
|
||||
<div class="col">
|
||||
{% block listing %}
|
||||
<div class="posts">
|
||||
|
@ -25,8 +25,8 @@
|
|||
</div>
|
||||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
{% block mobileUserBanner %}{% endblock %}
|
||||
{% block pagetitle %}Reported Posts{% endblock %}
|
||||
{% block content %}
|
||||
<ul class="nav post-nav py-2">
|
||||
<ul class="nav post-nav py-2">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if request.path=="/admin/reported/posts" %} active{% endif %}" href="/admin/reported/posts">
|
||||
<div>Posts</div>
|
||||
|
@ -16,9 +16,9 @@
|
|||
<div>Comments</div>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
<div class="row no-gutters">
|
||||
<div class="row no-gutters">
|
||||
<div class="col">
|
||||
{% block listing %}
|
||||
<div class="posts">
|
||||
|
@ -26,9 +26,9 @@
|
|||
</div>
|
||||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
{% extends "settings2.html" %}
|
||||
{% block pagetitle %}Shadowbanned Users{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
<h5 class="my-4">Shadowbanned Users</h5>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<h5 class="my-4">Shadowbanned Users</h5>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Name</th>
|
||||
|
@ -14,8 +13,8 @@
|
|||
<th>Shadowbanned by</th>
|
||||
<th>Shadowban reason</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for user in users %}
|
||||
</thead>
|
||||
{% for user in users %}
|
||||
<tr>
|
||||
<td>{{loop.index}}</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>{{user.ban_reason | safe}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -3,9 +3,8 @@
|
|||
{% block pagetitle %}Admins{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h5 class="font-weight-bolder text-center pt-2 pb-3"><span>Admins</span></h5>
|
||||
<div class="overflow-x-auto mt-1">
|
||||
<h5 class="font-weight-bolder text-center pt-2 pb-3"><span>Admins</span></h5>
|
||||
<div class="overflow-x-auto mt-1">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
|
@ -27,8 +26,5 @@
|
|||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -2,22 +2,22 @@
|
|||
{% block pagetitle %}API{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1 class="my-3">API Guide for Bots</h1>
|
||||
<p>This page explains how to obtain and use an access token. </p>
|
||||
<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>
|
||||
<ul>
|
||||
<li>an application name</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>
|
||||
</ul>
|
||||
<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>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>
|
||||
<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>
|
||||
<pre> import requests
|
||||
<h1 class="my-3">API Guide for Bots</h1>
|
||||
<p>This page explains how to obtain and use an access token. </p>
|
||||
<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>
|
||||
<ul>
|
||||
<li>an application name</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>
|
||||
</ul>
|
||||
<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>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>
|
||||
<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>
|
||||
<pre> import requests
|
||||
|
||||
headers = {"Authorization": "access_token_goes_here"}
|
||||
|
||||
|
@ -26,13 +26,13 @@
|
|||
r = requests.get(url, headers=headers)
|
||||
|
||||
print(r.json())
|
||||
</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>
|
||||
</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>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<p>Aother python example:</p>
|
||||
<pre> import requests
|
||||
<p>Aother python example:</p>
|
||||
<pre> import requests
|
||||
|
||||
headers = {"Authorization": "access_token_goes_here"}
|
||||
|
||||
|
@ -41,35 +41,35 @@
|
|||
r = requests.get(url, headers=headers)
|
||||
|
||||
print(r.json())
|
||||
</pre>
|
||||
<p>The expected result of this would be a JSON representation of unread notifications for your account</p>
|
||||
</pre>
|
||||
<p>The expected result of this would be a JSON representation of unread notifications for your account</p>
|
||||
|
||||
<br>
|
||||
<hr>
|
||||
<br>
|
||||
<br>
|
||||
<hr>
|
||||
<br>
|
||||
|
||||
<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>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>
|
||||
<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>
|
||||
<li>an application name</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>
|
||||
</ul>
|
||||
<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>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>
|
||||
<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>
|
||||
<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>
|
||||
<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>Python example:</p>
|
||||
<pre> import requests
|
||||
<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>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>
|
||||
<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>
|
||||
<li>an application name</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>
|
||||
</ul>
|
||||
<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>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>
|
||||
<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>
|
||||
<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>
|
||||
<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>Python example:</p>
|
||||
<pre> import requests
|
||||
|
||||
headers = {"Authorization": "access_token_goes_here"}
|
||||
|
||||
|
@ -78,13 +78,13 @@
|
|||
r = requests.get(url, headers=headers)
|
||||
|
||||
print(r.json())
|
||||
</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>
|
||||
</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>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<p>Aother python example:</p>
|
||||
<pre> import requests
|
||||
<p>Aother python example:</p>
|
||||
<pre> import requests
|
||||
|
||||
headers = {"Authorization": "access_token_goes_here"}
|
||||
|
||||
|
@ -93,6 +93,6 @@
|
|||
r = requests.get(url, headers=headers)
|
||||
|
||||
print(r.json())
|
||||
</pre>
|
||||
<p>The expected result of this would be a JSON representation of unread notifications for your account</p>
|
||||
</pre>
|
||||
<p>The expected result of this would be a JSON representation of unread notifications for your account</p>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}App{% endblock %}
|
||||
{% block content %}
|
||||
<div class="ml-3 mt-4">
|
||||
<div class="ml-3 mt-4">
|
||||
<h5>How to install {{SITE_NAME}}'s mobile app</h5>
|
||||
|
||||
{% if not v and g.browser == 'chromium' %}
|
||||
|
@ -24,6 +24,5 @@
|
|||
<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">
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}User Badges{% endblock %}
|
||||
{% block content %}
|
||||
<h1 class="mt-3">User Badges</h1>
|
||||
<div>This page describes the requirements for obtaining all profile badges.</div>
|
||||
<div class="overflow-x-auto mt-3">
|
||||
<h1 class="mt-3">User Badges</h1>
|
||||
<div>This page describes the requirements for obtaining all profile badges.</div>
|
||||
<div class="overflow-x-auto mt-3">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
|
@ -30,8 +30,5 @@
|
|||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
{% extends "settings2.html" %}
|
||||
{% block pagetitle %}Banned Users{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
<h5 class="font-weight-bolder text-center pt-2 pb-3"><span>Banned Users</span></h5>
|
||||
<div class="overflow-x-auto"><table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<h5 class="font-weight-bolder text-center pt-2 pb-3"><span>Banned Users</span></h5>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Name</th>
|
||||
|
@ -16,8 +16,8 @@
|
|||
<th>Banned by</th>
|
||||
<th>Unban in</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for user in users %}
|
||||
</thead>
|
||||
{% for user in users %}
|
||||
<tr>
|
||||
<td>{{loop.index}}</td>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
|
@ -29,9 +29,7 @@
|
|||
<td>{{user.banned_by | safe}}</td>
|
||||
<td {% if user.unban_utc %}data-time="{{user.unban_utc}}"{% endif %}></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
{% extends "settings2.html" %}
|
||||
{% block pagetitle %}Blocks{% endblock %}
|
||||
{% block content %}
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>User</th>
|
||||
<th>Target</th>
|
||||
<th>Blocked on</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for block in blocks %}
|
||||
</thead>
|
||||
{% for block in blocks %}
|
||||
<tr>
|
||||
<td>
|
||||
{% with user = block.user %}
|
||||
|
@ -24,6 +25,7 @@
|
|||
</td>
|
||||
<td data-time="{{block.created_utc}}"></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -30,8 +30,8 @@ Icon (fa-foo-bar), Color (#ff0000), URL (/casino/roulette) #}
|
|||
]-%}
|
||||
|
||||
{% block content %}
|
||||
<h2 style="text-transform: uppercase; text-align: center; letter-spacing: 3px; margin-top: 2rem">Casino</h2>
|
||||
<div id="directory--wrapper">
|
||||
<h2 style="text-transform: uppercase; text-align: center; letter-spacing: 3px; margin-top: 2rem">Casino</h2>
|
||||
<div id="directory--wrapper">
|
||||
{% for game in GAME_INDEX %}
|
||||
<a class="directory--link" href="{{game[4]}}">
|
||||
<div class="directory--link-content">
|
||||
|
@ -41,5 +41,5 @@ Icon (fa-foo-bar), Color (#ff0000), URL (/casino/roulette) #}
|
|||
</div>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -5,15 +5,15 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block screen %}
|
||||
<div id="blackjack-table-deck"></div>
|
||||
<div id="blackjack-table" data-state="{{game_state}}" style="position: relative">
|
||||
</div>
|
||||
<div id="blackjack-table-deck"></div>
|
||||
<div id="blackjack-table" data-state="{{game_state}}" style="position: relative">
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% 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-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()"
|
||||
|
@ -25,21 +25,21 @@
|
|||
<button type="button" id="twentyone-BUY_INSURANCE" class="btn btn-primary twentyone-btn" data-nonce="{{g.nonce}}" data-onclick="buyInsurance()"
|
||||
style="display: none">Buy
|
||||
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>
|
||||
<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()"
|
||||
style="display: none">Stay</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block leaders %}
|
||||
Blackjack
|
||||
Blackjack
|
||||
{% endblock %}
|
||||
|
||||
{% block feed %}
|
||||
Blackjack
|
||||
Blackjack
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}{{game.capitalize()}}{% endblock %}
|
||||
{% block content %}
|
||||
<link rel="stylesheet" href="{{('css/casino/game_screen.css') | asset}}">
|
||||
<script defer src="{{'js/casino/game_screen.js' | asset}}"></script>
|
||||
<link rel="stylesheet" href="{{('css/casino/game_screen.css') | asset}}">
|
||||
<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="col game_screen-title">
|
||||
<h3>{{game}}</h3>
|
||||
|
@ -104,5 +104,5 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{% block pagetitle %}You're in rehab!{% endblock %}
|
||||
{% block pagetype %}casino-in-rehab{% endblock %}
|
||||
{% 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">
|
||||
<h2>No one was there for Britney…</h2>
|
||||
</div>
|
||||
|
@ -10,5 +10,5 @@
|
|||
<h2>…but we're here for you. You've been checked into Rehab.</h2>
|
||||
</div>
|
||||
<img loading="lazy" src="{{SITE_FULL_IMAGES}}/i/rDrama/brit.webp" style="text-align: center">
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -11,11 +11,11 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block actiontext %}
|
||||
Bets
|
||||
Bets
|
||||
{% endblock %}
|
||||
|
||||
{% block actions %}
|
||||
<div id="roulette-bets">
|
||||
<div id="roulette-bets">
|
||||
<div class="roulette-bet-summary">
|
||||
<div class="roulette-bet-summary--heading">
|
||||
<div class="roulette-poker-chip">
|
||||
|
@ -34,13 +34,13 @@ Bets
|
|||
the number will be even.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="game_screen-title">
|
||||
<div class="game_screen-title">
|
||||
<h5>How to Bet</h5>
|
||||
<hr>
|
||||
</div>
|
||||
<table class="table">
|
||||
</div>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Bet</th>
|
||||
|
@ -106,5 +106,5 @@ Bets
|
|||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
{% extends "settings2.html" %}
|
||||
{% block pagetitle %}Chuds{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
<h5 class="my-4">Chudded Users</h5>
|
||||
<div class="overflow-x-auto"><table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<h5 class="my-4">Chudded Users</h5>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Name</th>
|
||||
|
@ -15,8 +15,8 @@
|
|||
<th>Chudded by</th>
|
||||
<th>Unchud in</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for user in users %}
|
||||
</thead>
|
||||
{% for user in users %}
|
||||
<tr>
|
||||
<td>{{loop.index}}</td>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
|
@ -26,10 +26,8 @@
|
|||
<td>{{user.truescore}}</td>
|
||||
<td>{{user.chudder | safe}}</td>
|
||||
<td {% if user.chud != 1 %}data-time="{{user.chud}}"{% endif %}></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}!commenters{% endblock %}
|
||||
{% block content %}
|
||||
<h5 class="my-3">!commenters</h5>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<h5 class="my-3">!commenters</h5>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Name</th>
|
||||
<th>First commented on</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for user, comment_id, comment_created_utc in users %}
|
||||
</thead>
|
||||
{% for user, comment_id, comment_created_utc in users %}
|
||||
<tr>
|
||||
<td>{{loop.index}}</td>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
<td><a href="/comment/{{comment_id}}" data-time="{{comment_created_utc}}"></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -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'] %}
|
||||
|
||||
{% 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) %}
|
||||
|
||||
{% set ups=c.upvotes %}
|
||||
{% set downs=c.downvotes %}
|
||||
{% set score=ups-downs %}
|
||||
|
||||
{% if render_replies %}
|
||||
{% if render_replies %}
|
||||
{% 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 %}">
|
||||
<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">
|
||||
|
@ -50,21 +48,20 @@
|
|||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
{% else %}
|
||||
{% set score=c.score %}
|
||||
|
||||
{% set score=c.score %}
|
||||
|
||||
{% if v %}
|
||||
{% if v %}
|
||||
{% set voted=c.voted %}
|
||||
{% if not voted and v.id == c.author_id %}
|
||||
{% set voted=1 %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% else %}
|
||||
{% set voted=-2 %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% 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 %}">
|
||||
{% 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 %}">
|
||||
{% if c.parent_post and c.post.nsfw %}
|
||||
<span class="badge badge-danger text-small-extra mr-1">NSFW</span>
|
||||
{% endif %}
|
||||
|
@ -96,24 +93,22 @@
|
|||
{% else %}
|
||||
<span class="font-weight-bold">Sent to <a href="/@{{c.senttouser.username}}">@{{c.senttouser.username}}</a></span>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if c.parent_comment and c.parent_comment.sentto %}
|
||||
{% if c.parent_comment and c.parent_comment.sentto %}
|
||||
{% set isreply = True %}
|
||||
{% else %}
|
||||
{% else %}
|
||||
{% 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 %}
|
||||
<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 %}
|
||||
<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 class="user-info">
|
||||
<span class="comment-collapse-icon" data-nonce="{{g.nonce}}" data-onclick="collapse_comment('{{c.id}}')"></span>
|
||||
|
||||
|
@ -560,7 +555,7 @@
|
|||
</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-content">
|
||||
<div class="modal-header">
|
||||
|
@ -641,14 +636,9 @@
|
|||
</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-dialog modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
|
@ -709,12 +699,10 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
{% for comment in comments %}
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
{%- extends 'root.html' -%}
|
||||
{% block body_attributes %}id="{% if request.path != '/comments' %}{% block pagetype %}frontpage{% endblock %}{% endif %}" class="has_header"{% endblock %}
|
||||
{% block body %}
|
||||
{% block pulltorefresh %}
|
||||
<div id="pulltorefresh">
|
||||
{% block pulltorefresh %}
|
||||
<div id="pulltorefresh">
|
||||
<img id="pulltorefresh-img" src="{{SITE_FULL_IMAGES}}/e/marseyunamused.webp">
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block banner %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block banner %}
|
||||
{% include "modals/expanded_image.html" %}
|
||||
{% if err or '@' not in request.path %}
|
||||
{% if IS_FISTMAS() and not (hole and hole.has_banners) %}
|
||||
|
@ -76,19 +76,17 @@
|
|||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% include "header.html" %}
|
||||
|
||||
{% block mobileUserBanner %}
|
||||
{% endblock %}
|
||||
|
||||
{% if IS_HOMOWEEN() %}
|
||||
{% block hauntBg %}
|
||||
{% 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="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 %}
|
||||
|
@ -107,21 +105,21 @@
|
|||
{% endif %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
{% block mobilenavbar %}{% include "mobile_navigation_bar.html" %}{% endblock %}
|
||||
{% block actionsModal %}{% endblock %}
|
||||
{% block reportCommentModal %}{% endblock %}
|
||||
{% block GIFtoast %}{% endblock %}
|
||||
{% block GIFpicker %}{% endblock %}
|
||||
<div class="toast clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000">
|
||||
</div>
|
||||
{% block mobilenavbar %}{% include "mobile_navigation_bar.html" %}{% endblock %}
|
||||
{% block actionsModal %}{% endblock %}
|
||||
{% block reportCommentModal %}{% endblock %}
|
||||
{% block GIFtoast %}{% 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-body text-center">
|
||||
<i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard
|
||||
</div>
|
||||
</div>
|
||||
<script defer src="{{'js/vendor/lozad.js' | asset}}"></script>
|
||||
<script defer src="{{'js/vendor/lite-youtube.js' | asset}}"></script>
|
||||
</div>
|
||||
<script defer src="{{'js/vendor/lozad.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>
|
||||
|
||||
{% if v and v.spider %}
|
||||
|
@ -137,10 +135,9 @@
|
|||
<input hidden id="fireflies_num" value="{{p.award_count('fireflies', v)}}">
|
||||
<script defer src="{{'js/fireflies.js' | asset}}"></script>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if IS_EVENT() %}
|
||||
{% if IS_EVENT() %}
|
||||
{% include "events/shared/music.html" %}
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -95,15 +95,15 @@
|
|||
{%- endif -%}
|
||||
|
||||
{% block content %}
|
||||
<div id="directory--wrapper">
|
||||
{% for thread in DIRECTORY %}
|
||||
<a class="directory--link" href="{{thread[4]}}">
|
||||
<div id="directory--wrapper">
|
||||
{% for thread in DIRECTORY %}
|
||||
<a class="directory--link" href="{{thread[4]}}">
|
||||
<div class="directory--link-content">
|
||||
<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--description">{{thread[1]|safe}}</div>
|
||||
</div>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{% block pagetitle %}{{code}} {{title}}{% endblock %}
|
||||
{% block pagetype %}error-{{code}}{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row justify-content-center">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-10 col-md-5">
|
||||
<div class="text-center px-3 my-5">
|
||||
{% if img -%}
|
||||
|
@ -16,5 +16,5 @@
|
|||
<div><a href="/" class="btn btn-primary mt-3">Go to frontpage</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{% block pagetitle %}NSFW{% endblock %}
|
||||
{% block pagetype %}error-451{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row justify-content-center">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col col-md-5">
|
||||
<div class="text-center px-3 mt-3">
|
||||
<img alt=":#marseytwerking:" loading="lazy" src="{{SITE_FULL_IMAGES}}/e/marseytwerking.webp">
|
||||
|
@ -18,5 +18,5 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}Formatting{% endblock %}
|
||||
{% 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">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
|
@ -39,8 +39,8 @@
|
|||
<td>Horizontal Rule</td>
|
||||
<td>
|
||||
<pre>Text 1
|
||||
---
|
||||
Text 2</pre>
|
||||
---
|
||||
Text 2</pre>
|
||||
</td>
|
||||
<td>
|
||||
Text 1
|
||||
|
@ -425,48 +425,48 @@ Text 2</pre>
|
|||
{%- endif %}
|
||||
</tbody>
|
||||
</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 %}
|
||||
<li>{{tag}}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
<h5 class="mt-4">Allowed Styles</h5>
|
||||
<h5 class="mt-4">Allowed Styles</h5>
|
||||
|
||||
<ul>
|
||||
<ul>
|
||||
{% for style in allowed_styles %}
|
||||
<li>{{style}}</li>
|
||||
{% 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 %}
|
||||
<li>{{host}}</li>
|
||||
{% 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">
|
||||
<i class="fas fa-check-circle text-success mr-2"></i>Text copied to clipboard
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script defer src="{{'js/vendor/clipboard.js' | asset}}"></script>
|
||||
<script defer src="{{'js/formatting.js' | asset}}"></script>
|
||||
<script defer src="{{'js/vendor/clipboard.js' | asset}}"></script>
|
||||
<script defer src="{{'js/formatting.js' | asset}}"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
{% extends "settings2.html" %}
|
||||
{% block pagetitle %}Grassed Users{% endblock %}
|
||||
{% block content %}
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Name</th>
|
||||
<th>Grasser</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for user in users %}
|
||||
</thead>
|
||||
{% for user in users %}
|
||||
<tr>
|
||||
<td>{{loop.index}}</td>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
<td>{{user.ban_reason.split('by ')[1] | safe}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}!{{group}}{% endblock %}
|
||||
{% 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')">
|
||||
{%- if v.id in group.member_ids or group.name == 'verifiedrich' -%}
|
||||
Leave
|
||||
|
@ -12,10 +11,10 @@
|
|||
</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>
|
||||
{% macro process_memberships(memberships, name) %}
|
||||
<br>
|
||||
{% macro process_memberships(memberships, name) %}
|
||||
<h5 class="my-3">!{{group}} {{name}}</h5>
|
||||
|
||||
<div class="overflow-x-auto mt-1">
|
||||
|
@ -82,15 +81,14 @@
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% endmacro %}
|
||||
{% endmacro %}
|
||||
|
||||
{% if v.mods_group(group) %}
|
||||
{% if v.mods_group(group) %}
|
||||
{{process_memberships(applications, 'applications')}}
|
||||
{{process_memberships(members, 'members')}}
|
||||
<script defer src="{{'js/group_members_owner.js' | asset}}"></script>
|
||||
{% else %}
|
||||
{% else %}
|
||||
{{process_memberships(members, 'members')}}
|
||||
{{process_memberships(applications, 'applications')}}
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}Ping Groups{% endblock %}
|
||||
{% block content %}
|
||||
<div class="px-3">
|
||||
<div class="px-3">
|
||||
<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)">
|
||||
<div class="container pb-0" style="background-color: transparent !important">
|
||||
|
@ -61,6 +61,5 @@
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -101,5 +101,5 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,22 +1,23 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}Users {{verb}} /h/{{hole}}{% endblock %}
|
||||
{% block content %}
|
||||
<h5 class="mt-3">Users {{verb}} /h/{{hole}}</h5>
|
||||
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<h5 class="mt-3">Users {{verb}} /h/{{hole}}</h5>
|
||||
<div class="overflow-x-auto mt-1">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Name</th>
|
||||
<th>{{verb.title()}} since</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for user, object in users %}
|
||||
</thead>
|
||||
{% for user, object in users %}
|
||||
<tr>
|
||||
<td>{{loop.index}}</td>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
<td {% if object.created_utc %}data-time="{{object.created_utc}}"{% endif %}></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}Create a hole{% endblock %}
|
||||
{% 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="row justify-content-center mb-4 pb-6">
|
||||
<div class="col col-md-6 p-3 py-md-0">
|
||||
|
@ -25,5 +25,5 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}/h/{{hole}} Exiles{% endblock %}
|
||||
{% block content %}
|
||||
<h5 class="my-4 ml-2">Users exiled from /h/{{hole}}</h5>
|
||||
<div class="overflow-x-auto"><table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<h5 class="my-4 ml-2">Users exiled from /h/{{hole}}</h5>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Name</th>
|
||||
|
@ -11,8 +12,8 @@
|
|||
<th>Exiled since</th>
|
||||
<th class="disable-sort-click"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for user, exile in users %}
|
||||
</thead>
|
||||
{% for user, exile in users %}
|
||||
<tr>
|
||||
<td>{{loop.index}}</td>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
|
@ -31,7 +32,7 @@
|
|||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}Hole List{% endblock %}
|
||||
{% block content %}
|
||||
<h5 class="mt-3 mb-1">Hole List</h5>
|
||||
<div class="overflow-x-auto">
|
||||
<h5 class="mt-3 mb-1">Hole List</h5>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
|
@ -30,8 +30,5 @@
|
|||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,20 +1,19 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}/h/{{hole}} Mods{% endblock %}
|
||||
{% 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">
|
||||
<thead class="bg-primary text-white">
|
||||
<h5 class="mt-2">/h/{{hole}} Mods</h5>
|
||||
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Name</th>
|
||||
<th>Mod since</th>
|
||||
<th class="disable-sort-click"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for user, mod in users %}
|
||||
</thead>
|
||||
{% for user, mod in users %}
|
||||
<tr>
|
||||
<td>{{loop.index}}</td>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
|
@ -29,16 +28,15 @@
|
|||
{% endif %}
|
||||
</td>
|
||||
</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)">
|
||||
<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 autocomplete="off" class="btn btn-primary ml-auto" type="submit" value="Add Mod" style="margin-bottom: 5px">
|
||||
</form>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -2,11 +2,10 @@
|
|||
{% block pagetitle %}/h/{{hole}} Settings{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="title mt-5">
|
||||
<div class="title mt-5">
|
||||
<label class="text-lg" for="stealth">Stealth Mode</label>
|
||||
</div>
|
||||
<div class="d-inline-block w-lg-100 pt-1 pt-lg-3">
|
||||
</div>
|
||||
<div class="d-inline-block w-lg-100 pt-1 pt-lg-3">
|
||||
<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')">
|
||||
<label class="custom-control-label" for="stealth"></label>
|
||||
|
@ -14,10 +13,10 @@
|
|||
<span class="text-small text-muted">
|
||||
Make this hole blocked by default (users can visit it to unblock it).
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h5 class="mt-5">Marsey</h5>
|
||||
<div class="settings-section rounded">
|
||||
<h5 class="mt-5">Marsey</h5>
|
||||
<div class="settings-section rounded">
|
||||
<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">
|
||||
<input hidden name="formkey" value="{{v|formkey}}">
|
||||
|
@ -28,10 +27,10 @@
|
|||
<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.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h5 class=" mt-5">Sidebar Picture</h5>
|
||||
<div class="settings-section rounded">
|
||||
<h5 class=" mt-5">Sidebar Picture</h5>
|
||||
<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%)">
|
||||
<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}}">
|
||||
|
@ -42,10 +41,10 @@
|
|||
<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.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h5 class="mt-5">Banners</h5>
|
||||
<div class="settings-section rounded hole-banner-update-section">
|
||||
<h5 class="mt-5">Banners</h5>
|
||||
<div class="settings-section rounded hole-banner-update-section">
|
||||
{% for banner in hole.banner_urls %}
|
||||
<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%">
|
||||
|
@ -70,9 +69,9 @@
|
|||
</div>
|
||||
</section>
|
||||
{% 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="settings">
|
||||
<div id="description">
|
||||
|
@ -91,9 +90,9 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="row">
|
||||
<div class="col col-md-8">
|
||||
<div class="settings">
|
||||
<div id="description">
|
||||
|
@ -112,5 +111,5 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{% extends "default.html" %}
|
||||
|
||||
{% block title %}
|
||||
{% if hole %}
|
||||
<title>/h/{{hole.name}}</title>
|
||||
|
@ -12,36 +13,40 @@
|
|||
{{super()}}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block pagetitle %}{{SITE_NAME if not hole else '/h/' ~ hole.name}}{% endblock %}
|
||||
|
||||
{% block head_final %}
|
||||
{% 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}}">
|
||||
{% set preview = hole.siderbarurl if hole and hole.sidebarurl else hole.bannerurl %}
|
||||
|
||||
<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 %}
|
||||
{% 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">
|
||||
<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 name="twitter:description" content="{{hole.sidebar}}">
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block desktopBanner %}
|
||||
{%- set search_placeholder = "Search" -%}
|
||||
{%- if hole -%}
|
||||
{%- set search_placeholder = "Search" -%}
|
||||
{%- if hole -%}
|
||||
{%- set search_placeholder = "Search (try 'hole:" ~ hole.name ~ "')" -%}
|
||||
{%- endif -%}
|
||||
<div class="row" style="overflow: visible;padding-top:5px">
|
||||
{%- endif -%}
|
||||
<div class="row" style="overflow: visible;padding-top:5px">
|
||||
<div class="col">
|
||||
<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">
|
||||
|
@ -88,43 +93,39 @@
|
|||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block PseudoSubmitForm %}{% endblock %}
|
||||
|
||||
{% 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="posts">
|
||||
{% include "post_listing.html" %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% if listing %}
|
||||
{% if listing %}
|
||||
{% 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>
|
||||
{% 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" 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>
|
||||
|
||||
<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>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -29,5 +29,5 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -24,9 +24,9 @@
|
|||
{% endmacro %}
|
||||
|
||||
{% 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>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<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">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<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)}}
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</table>
|
||||
</div>
|
||||
{% endmacro %}
|
||||
|
||||
{% for lb in leaderboards %}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{% extends "settings2.html" %}
|
||||
{% block pagetitle %}Moderation Log{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row justify-content-around">
|
||||
<div class="row justify-content-around">
|
||||
<div class="col h-100">
|
||||
<div class="justify-content-between">
|
||||
<div>
|
||||
|
@ -81,12 +81,12 @@
|
|||
</div>
|
||||
{% include "pagination.html" %}
|
||||
</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">
|
||||
<i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard
|
||||
</div>
|
||||
</div>
|
||||
<script defer src="{{'js/vendor/clipboard.js' | asset}}"></script>
|
||||
</div>
|
||||
<script defer src="{{'js/vendor/clipboard.js' | asset}}"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{% 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 content %}
|
||||
<div id="login-form">
|
||||
<div id="login-form">
|
||||
<form action="/forgot" method="post" class="mt-3">
|
||||
<label for="username" class="mt-3">Username</label>
|
||||
<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 autocomplete="off" class="btn btn-primary login w-100 mt-3" type="submit" value="Send recovery link">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
{% block authtitle %}Welcome back.{% endblock %}
|
||||
{% block authtext %}Glad to have you back!{% endblock %}
|
||||
{% block content %}
|
||||
<div id="login-form">
|
||||
<div id="login-form">
|
||||
{%- set error_text -%}
|
||||
Incorrect username, email address, or password.<br>
|
||||
<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>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -6,12 +6,12 @@
|
|||
{% set root_scope.include_cf_2fa_verify = false %}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<div id="login-form">
|
||||
<div id="login-form">
|
||||
<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>
|
||||
{% if failed %}{{macros.alert('Invalid verification code. Please try again.', true)}}{% endif %}
|
||||
</div>
|
||||
<form action="/login" method="post" class="mt-md-3" id="login">
|
||||
</div>
|
||||
<form action="/login" method="post" class="mt-md-3" id="login">
|
||||
<input hidden name="username" value="{{v.username}}">
|
||||
<input hidden name="redirect" value="{{redirect}}">
|
||||
<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">
|
||||
<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>
|
||||
</form>
|
||||
<script defer src="{{'js/login_2fa.js' | asset}}"></script>
|
||||
</form>
|
||||
<script defer src="{{'js/login_2fa.js' | asset}}"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{% 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 content %}
|
||||
<div id="login-form">
|
||||
<div id="login-form">
|
||||
<form action="/lost_2fa" method="post" class="mt-3">
|
||||
<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 %}>
|
||||
|
@ -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="btn btn-primary login w-100 mt-3" type="submit" value="Send recovery link">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{% block pagetitle %}{{SITE_NAME}} Password Reset{% endblock %}
|
||||
{% block authtitle %}Change your password.{% endblock %}
|
||||
{% block content %}
|
||||
<div id="login-form">
|
||||
<div id="login-form">
|
||||
<form action="/reset" method="post" class="mt-3">
|
||||
<input hidden name="time" value="{{time}}">
|
||||
<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="btn btn-primary login w-100 mt-3" type="submit" value="Change password">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
{%- extends 'login/authforms.html' -%}
|
||||
{% 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 %}
|
||||
|
||||
{% block pagetype %}login{% endblock %}
|
||||
|
||||
{% block template_config %}
|
||||
|
@ -27,7 +28,7 @@
|
|||
{% endif %}
|
||||
|
||||
{% block content %}
|
||||
<div id="register-form">
|
||||
<div id="register-form">
|
||||
{% 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>
|
||||
<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.
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
<script defer src="{{'js/signup.js' | asset}}"></script>
|
||||
{% if turnstile != DEFAULT_CONFIG_VALUE %}
|
||||
<script defer src="{{'js/signup.js' | asset}}"></script>
|
||||
{% if turnstile != DEFAULT_CONFIG_VALUE %}
|
||||
<script defer src="https://challenges.cloudflare.com/turnstile/v0/api.js"></script>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -7,17 +7,19 @@
|
|||
{% endblock %}
|
||||
{% block authtitle %}Whoops! You can't refer yourself!{% endblock %}
|
||||
{% block authtext %}Send this link to a friend instead :){% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<label>Referral code</label>
|
||||
{% 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}}">
|
||||
<div class="text-center text-muted text-small mt-3 mb-5 pb-5">
|
||||
<label>Referral code</label>
|
||||
{% 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}}">
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
<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 clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000">
|
||||
<div class="toast-body text-center">
|
||||
<i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
{% block pagetype %}lottery{% endblock %}
|
||||
{% block pagetitle %}Lottershe{% endblock %}
|
||||
{% block content %}
|
||||
<div>
|
||||
<div class="lottery-page--wrapper">
|
||||
<div class="lottery-page--image">
|
||||
<img loading="lazy" src="{{SITE_FULL_IMAGES}}/i/{{SITE_NAME}}/lottery.webp?x=6">
|
||||
|
@ -153,5 +152,4 @@
|
|||
</div>
|
||||
</div>
|
||||
<script defer src="{{'js/lottery.js' | asset}}"></script>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{% block pagetype %}message{% endblock %}
|
||||
{% block customPadding %}{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row justify-content-center">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-10 col-md-5">
|
||||
<div class="text-center py-6 py-md-8">
|
||||
|
||||
|
@ -17,5 +17,5 @@
|
|||
<a href="/" class="btn btn-primary ">Go to homepage</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
{% block pagetitle %}{{title}}{% endblock %}
|
||||
{% block pagetype %}message-success{% endblock %}
|
||||
{% 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">
|
||||
<div class="font-weight-bold text-muted mb-4">{{title}}</div>
|
||||
<p class="text-muted">{{message}}</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}Notification Mutes{% endblock %}
|
||||
{% block content %}
|
||||
<h5 class="font-weight-bolder text-center pt-2 pb-3"><span>Notification Mutes</span></h5>
|
||||
<div class="overflow-x-auto mt-3"><table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<h5 class="font-weight-bolder text-center pt-2 pb-3">
|
||||
<span>Notification Mutes</span>
|
||||
</h5>
|
||||
<div class="overflow-x-auto mt-3">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>User</th>
|
||||
<th>Target</th>
|
||||
<th>Muted on</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for mute in mutes %}
|
||||
</thead>
|
||||
{% for mute in mutes %}
|
||||
<tr>
|
||||
<td>
|
||||
{% with user = mute.user %}
|
||||
|
@ -24,6 +27,7 @@
|
|||
</td>
|
||||
<td data-time="{{mute.created_utc}}"></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -3,11 +3,10 @@
|
|||
{% block pagetype %}notifications{% endblock %}
|
||||
{% block PseudoSubmitForm %}{% endblock %}
|
||||
{% block navbar %}
|
||||
<div class="font-weight-bold py-3"></div>
|
||||
<div class="font-weight-bold py-3"></div>
|
||||
{% endblock %}
|
||||
{% 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">
|
||||
<ul class="nav settings-nav" style="padding:0 0 0 20px" id="notifications--nav-list">
|
||||
<li class="nav-item">
|
||||
|
@ -48,16 +47,15 @@
|
|||
{% endif %}
|
||||
</ul>
|
||||
</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>
|
||||
{% 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>
|
||||
{% endif %}
|
||||
|
||||
<div class="notifs px-3 p-md-0">
|
||||
{% endif %}
|
||||
|
||||
<div class="notifs px-3 p-md-0">
|
||||
{% if request.path == '/notifications/posts' %}
|
||||
{% with listing=notifications %}
|
||||
<div class="mt-4 posts">
|
||||
|
@ -67,7 +65,6 @@
|
|||
{% elif request.path == '/notifications/modactions' %}
|
||||
<div class="rounded border mx-auto mt-4">
|
||||
{% 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 class="d-flex flex-grow-1 align-items-center">
|
||||
|
@ -128,24 +125,21 @@
|
|||
<h5>No notifications</h5>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% if notifications %}
|
||||
{% include "pagination.html" %}
|
||||
{% endif %}
|
||||
{% if notifications %}
|
||||
{% include "pagination.html" %}
|
||||
{% 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/flash.js' | asset}}"></script>
|
||||
<script defer src="{{'js/messages.js' | asset}}"></script>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block GIFpicker %}{% endblock %}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{% extends "login.html" %}
|
||||
{% block pagetitle %}Application Request for Access{% endblock %}
|
||||
{% block content %}
|
||||
<div id="auth-form">
|
||||
<div id="auth-form">
|
||||
<h2>{{application.app_name}}</h2>
|
||||
<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>
|
||||
|
@ -15,5 +15,5 @@
|
|||
<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>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,26 +1,27 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}{{kind}} Owners{% endblock %}
|
||||
{% block content %}
|
||||
<h5 class="my-3">{{kind}} Owners</h5>
|
||||
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<h5 class="my-3">{{kind}} Owners</h5>
|
||||
<div class="overflow-x-auto mt-1">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th class="disable-sort-click">Owned since</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="owners-table">
|
||||
{% for user, created_utc in users %}
|
||||
</thead>
|
||||
<tbody id="owners-table">
|
||||
{% for user, created_utc in users %}
|
||||
<tr>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
<td {% if created_utc %}data-time="{{created_utc}}"{% endif %}></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}Poll Votes{% endblock %}
|
||||
|
||||
{% 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>Author Created At:</b> <span data-time="{{option.parent.author.created_utc}}"></span></p>
|
||||
<p><b>Author Truescore:</b> {{"{:,}".format(option.parent.author.truescore)}}</p>
|
||||
<p><b>Total voter truescore: </b>{{total_ts}}</p>
|
||||
{% if total_patrons != None %}
|
||||
<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>Author Created At:</b> <span data-time="{{option.parent.author.created_utc}}"></span></p>
|
||||
<p><b>Author Truescore:</b> {{"{:,}".format(option.parent.author.truescore)}}</p>
|
||||
<p><b>Total voter truescore: </b>{{total_ts}}</p>
|
||||
{% if total_patrons != None %}
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
|
@ -38,7 +38,6 @@
|
|||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}
|
||||
{%- if comment_info -%}
|
||||
{%- if comment_info -%}
|
||||
@{{comment_info.author_name}} comments on '{{p.plaintitle(v)}}'
|
||||
{%- else -%}
|
||||
{%- else -%}
|
||||
{{p.plaintitle(v)}}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
{% endblock %}
|
||||
{% block pagetype %}thread{% endblock %}
|
||||
|
||||
|
@ -36,9 +36,9 @@
|
|||
{% 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) %}
|
||||
{% block actionsModal %}
|
||||
|
||||
{% if v %}
|
||||
{% block actionsModal %}
|
||||
{% if v %}
|
||||
<div class="modal fade d-md-none" id="actionsModal" tabindex="-1">
|
||||
<div class="modal-dialog modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
|
@ -62,17 +62,15 @@
|
|||
</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" %}
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="row mb-3">
|
||||
|
||||
<div id="post-root" class="col-12">
|
||||
|
||||
|
@ -241,7 +239,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3 d-md-none">
|
||||
<div class="col-12">
|
||||
|
@ -289,13 +287,13 @@
|
|||
</ul>
|
||||
</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>
|
||||
{% 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="comments-count py-3">
|
||||
{%- 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)}}
|
||||
|
||||
{% 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>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if p.replies %}
|
||||
{% if p.replies %}
|
||||
<div class="comment-section" id="replies-of-{{p.fullname}}">
|
||||
{% with comments=p.replies %}
|
||||
{% include "comments.html" %}
|
||||
|
@ -318,7 +316,7 @@
|
|||
{% if offset %}
|
||||
<script defer src="{{'js/view_more.js' | asset}}"></script>
|
||||
{% 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}}">
|
||||
{% if v %}
|
||||
{% set ghost_town = 'This comment section is a ghost town...' %}
|
||||
|
@ -327,11 +325,11 @@
|
|||
{% endif %}
|
||||
{{macros.ghost_box('Be the first to comment!', ghost_town, 1)}}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if v %}
|
||||
{% if v %}
|
||||
{% if v.id == p.author_id %}{% include "modals/delete_post.html" %}{% endif %}
|
||||
{% include "modals/report_post.html" %}
|
||||
{% if v.can_edit(p) %}
|
||||
|
@ -340,22 +338,21 @@
|
|||
{% if v.admin_level >= PERMS['POST_COMMENT_MODERATION'] %}
|
||||
<script defer src="{{'js/admin/pinpost.js' | asset}}"></script>
|
||||
{% 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}}">
|
||||
<script defer src="{{'js/new_comments.js' | asset}}"></script>
|
||||
<script defer src="{{'js/post.js' | asset}}"></script>
|
||||
<input hidden class="twoattrs" value="{{p.id}},{{p.comment_count}}">
|
||||
<script defer src="{{'js/new_comments.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>
|
||||
{% 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>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -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>
|
||||
|
||||
{% 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 %}
|
||||
|
||||
<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>
|
||||
|
|
|
@ -1,25 +1,21 @@
|
|||
{% extends "post.html" %}
|
||||
|
||||
{% set score=p.score %}
|
||||
|
||||
{% if v %}
|
||||
{% set voted=p.voted %}
|
||||
{% set adjust=voted %}
|
||||
{% set voted=p.voted %}
|
||||
{% set adjust=voted %}
|
||||
{% else %}
|
||||
{% set voted=-2 %}
|
||||
{% set adjust=0 %}
|
||||
{% set voted=-2 %}
|
||||
{% set adjust=0 %}
|
||||
{% endif %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{p.plaintitle(v)}}</title>
|
||||
{% if p.is_banned %}
|
||||
|
||||
{% else %}
|
||||
|
||||
{% endif %}
|
||||
<title>{{p.plaintitle(v)}}</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="mb-2 p-3">
|
||||
<div class="mb-2 p-3">
|
||||
<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 class="card-block my-md-auto">
|
||||
|
@ -43,9 +39,9 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-2 p-3">
|
||||
<div class="row mb-2 p-3">
|
||||
<div class="col-12">
|
||||
<div class="post-actions d-mob-none">
|
||||
<ul class="list-inline text-left mb-2">
|
||||
|
@ -55,23 +51,22 @@
|
|||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="comments-count py-3">
|
||||
<div class="comments-count py-3">
|
||||
{%- import 'util/macros.html' as macros with context -%}
|
||||
{{- macros.sorting_buttons(COMMENT_SORTS, True) -}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="comment-section">
|
||||
<div class="comment-section">
|
||||
{% with comments=p.replies %}
|
||||
{% include "comments.html" %}
|
||||
{% endwith %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if offset %}
|
||||
{% if offset %}
|
||||
<script defer src="{{'js/view_more.js' | asset}}"></script>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block mobileactions %}
|
||||
|
|
|
@ -13,25 +13,23 @@
|
|||
{% 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) %}
|
||||
<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 %}
|
||||
{% set downs=p.downvotes %}
|
||||
{% set score=ups-downs %}
|
||||
|
||||
{% if v %}
|
||||
{% if v %}
|
||||
{% set voted= p.voted %}
|
||||
{% else %}
|
||||
{% else %}
|
||||
{% 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')}}
|
||||
|
||||
<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 %}">
|
||||
{{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 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">
|
||||
{% if v %}
|
||||
|
@ -93,9 +91,9 @@
|
|||
{{p.realtitle(v) | safe}}
|
||||
</a></h5>
|
||||
</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>
|
||||
<ul class="list-inline text-right d-flex">
|
||||
{% if p.realbody(v) %}
|
||||
|
@ -107,9 +105,9 @@
|
|||
</a>
|
||||
{% include 'post_actions.html' %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-md-none mt-2">
|
||||
<div class="d-md-none mt-2">
|
||||
<div class="post-actions">
|
||||
<ul class="list-inline text-right d-flex">
|
||||
<li class="list-inline-item mr-auto">
|
||||
|
@ -160,9 +158,9 @@
|
|||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if v %}
|
||||
{% if v %}
|
||||
<div class="modal fade d-md-none" id="actionsModal-{{p.id}}" tabindex="-1">
|
||||
<div class="modal-dialog modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
|
@ -180,14 +178,13 @@
|
|||
</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" %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% if not v_forbid_deleted %}
|
||||
{% if not v_forbid_deleted %}
|
||||
{% 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}}">
|
||||
{{p.realbody(v) | safe}}
|
||||
|
@ -209,8 +206,8 @@
|
|||
{{p.embed | safe}}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="row no-gutters">
|
||||
<div class="col">
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{% block pagetype %}search{% endblock %}
|
||||
{% block pagetitle %}Search for "{{query}}"{% endblock %}
|
||||
{% 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 %}
|
||||
|
||||
{% block PseudoSubmitForm %}
|
||||
|
@ -18,7 +18,7 @@
|
|||
{% endblock %}
|
||||
{% block navbar %}{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row no-gutters my-md-3">
|
||||
<div class="row no-gutters my-md-3">
|
||||
<div class="col">
|
||||
<div class="card search-results">
|
||||
|
||||
|
@ -114,8 +114,8 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row no-gutters">
|
||||
</div>
|
||||
<div class="row no-gutters">
|
||||
<div class="col">
|
||||
<div class="flex-row box-shadow-bottom d-flex justify-content-center justify-content-md-between align-items-center">
|
||||
<ul class="nav settings-nav">
|
||||
|
@ -134,8 +134,8 @@
|
|||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row no-gutters">
|
||||
</div>
|
||||
<div class="row no-gutters">
|
||||
<div class="col-12">
|
||||
<div class="posts">
|
||||
{% block listing_template %}
|
||||
|
@ -143,8 +143,8 @@
|
|||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -17,5 +17,5 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block listinglength %}
|
||||
{{comments | length}}
|
||||
{{comments | length}}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{% extends "search.html" %}
|
||||
{% block listing_template %}
|
||||
<div class="row row-cols-1 row-cols-md-3 mt-3">
|
||||
{% include "user_listing.html" %}
|
||||
</div>
|
||||
<div class="row row-cols-1 row-cols-md-3 mt-3">
|
||||
{% include "user_listing.html" %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block listinglength %}{{users | length}}{% endblock %}
|
|
@ -43,12 +43,11 @@
|
|||
</div>
|
||||
</div>
|
||||
{% 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">
|
||||
<i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block onload %}{% endblock %}
|
||||
<script defer src="{{'js/vendor/clipboard.js' | asset}}"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{% extends "settings.html" %}
|
||||
{% block pagetitle %}Advanced Settings{% endblock %}
|
||||
{% 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="settings">
|
||||
{# toggle_section(title, id, name, flag, below_text) #}
|
||||
|
@ -155,5 +155,5 @@
|
|||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
{% extends "settings.html" %}
|
||||
{% block pagetitle %}Apps/Bots{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="row">
|
||||
<div class="col col-lg-8">
|
||||
<div class="settings">
|
||||
<h5>API Guide</h5>
|
||||
<a style="font-size:18px" href="/api">{{SITE_FULL}}/api</a>
|
||||
<h5>API Guide</h5>
|
||||
<a style="font-size:18px" href="/api">{{SITE_FULL}}/api</a>
|
||||
|
||||
<h5 class="mt-6">Your API Applications</h5>
|
||||
{% 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)">
|
||||
<h5 class="mt-6">Your API Applications</h5>
|
||||
{% 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)">
|
||||
<div class="settings-section rounded">
|
||||
<div class="d-lg-flex">
|
||||
<div class="title w-lg-25">
|
||||
|
@ -38,14 +38,14 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% else %}
|
||||
<p>None</p>
|
||||
{% endfor %}
|
||||
</form>
|
||||
{% else %}
|
||||
<p>None</p>
|
||||
{% endfor %}
|
||||
|
||||
<h5 class="mt-6">API Applications Awaiting Approval</h5>
|
||||
{% 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)">
|
||||
<h5 class="mt-6">API Applications Awaiting Approval</h5>
|
||||
{% 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)">
|
||||
<div class="settings-section rounded">
|
||||
<div class="d-lg-flex">
|
||||
<div class="title w-lg-25">
|
||||
|
@ -73,13 +73,13 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% else %}
|
||||
<p>None</p>
|
||||
{% endfor %}
|
||||
</form>
|
||||
{% else %}
|
||||
<p>None</p>
|
||||
{% endfor %}
|
||||
|
||||
<h5 class="mt-6">Your Authorized Applications</h5>
|
||||
{% for auth in v.authorizations %}
|
||||
<h5 class="mt-6">Your Authorized Applications</h5>
|
||||
{% for auth in v.authorizations %}
|
||||
<div id="auth-{{auth.id}}" class="settings-section rounded">
|
||||
<div class="d-lg-flex">
|
||||
<div class="title w-lg-25">
|
||||
|
@ -97,13 +97,13 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<p>None</p>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<p>None</p>
|
||||
{% 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="d-lg-flex">
|
||||
<div class="body w-lg-100">
|
||||
|
@ -124,15 +124,16 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% 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">
|
||||
<i class="fas fa-check-circle text-success mr-2"></i>Token copied to clipboard
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{%- import 'util/macros.html' as macros with context -%}
|
||||
|
||||
{% 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">
|
||||
<label for="{{id}}">{{title}}</label>
|
||||
</div>
|
||||
|
@ -14,11 +14,11 @@
|
|||
<span class="text-small text-muted">{{below_text|safe}}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endmacro %}
|
||||
|
||||
{% 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">
|
||||
<label for="{{id}}">{{section_title}}</label>
|
||||
</div>
|
||||
|
@ -49,7 +49,7 @@
|
|||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% 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) %}
|
||||
|
@ -72,7 +72,7 @@
|
|||
{% endmacro %}
|
||||
|
||||
{% 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>
|
||||
<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)">
|
||||
|
@ -93,5 +93,5 @@
|
|||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endmacro %}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{% extends "settings.html" %}
|
||||
{% block pagetitle %}Custom CSS{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="row">
|
||||
<div class="settings col col-md-8">
|
||||
<section>
|
||||
<h5>Custom CSS</h5>
|
||||
|
@ -40,6 +40,5 @@
|
|||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{% extends "settings.html" %}
|
||||
{% block pagetitle %}Personal Settings{% endblock %}
|
||||
{% 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="settings">
|
||||
<section id="site-settings-experience-section" class="settings-section-section">
|
||||
|
@ -326,25 +326,25 @@
|
|||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% include "modals/emoji.html" %}
|
||||
{% include "modals/gif.html" %}
|
||||
</div>
|
||||
{% include "modals/emoji.html" %}
|
||||
{% include "modals/gif.html" %}
|
||||
|
||||
{% if v.flairchanged %}
|
||||
{% if v.flairchanged %}
|
||||
<input hidden id="flairchanged" value="{{v.flairchanged}}">
|
||||
<script defer src="{{'js/flairchanged.js' | asset}}"></script>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if v.namechanged %}
|
||||
{% if v.namechanged %}
|
||||
<input hidden id="namechanged" value="{{v.namechanged}}">
|
||||
<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) %}
|
||||
{% if FEATURES['USERS_PERMANENT_WORD_FILTERS'] -%}
|
||||
<div class="modal fade" id="modal-{{id}}" tabindex="-1">
|
||||
{% macro permanent_filter_modal(id, form_action, field, friendly_name, badge_name) %}
|
||||
{% if FEATURES['USERS_PERMANENT_WORD_FILTERS'] -%}
|
||||
<div class="modal fade" id="modal-{{id}}" tabindex="-1">
|
||||
<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)">
|
||||
<div class="modal-content">
|
||||
|
@ -368,9 +368,10 @@
|
|||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{%- endif %}
|
||||
{% 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')}}
|
||||
</div>
|
||||
{%- endif %}
|
||||
{% 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')}}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{% extends "settings.html" %}
|
||||
{% block pagetitle %}Security Settings{% endblock %}
|
||||
{% block content %}
|
||||
<script defer src="{{'js/settings_security.js' | asset}}"></script>
|
||||
<div class="row settings-page" id="settings-page-security">
|
||||
<div class="col col-lg-8">
|
||||
<script defer src="{{'js/settings_security.js' | asset}}"></script>
|
||||
<div class="row settings-page" id="settings-page-security">
|
||||
<div class="col col-lg-8">
|
||||
<div class="settings">
|
||||
<section id="site-settings-email-section" class="settings-section-section">
|
||||
<h5>Email</h5>
|
||||
|
@ -122,10 +122,10 @@
|
|||
</form>
|
||||
</section>
|
||||
</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-content">
|
||||
<div class="modal-header">
|
||||
|
@ -180,11 +180,11 @@
|
|||
</form>
|
||||
</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">
|
||||
<i class="fas fa-exclamation-circle text-danger mr-2"></i><span id="toast-error-message">Error. Please try again.</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
{% block pagetype %}settings2{% endblock %}
|
||||
{% block body_attributes %}class="has_header"{% endblock %}
|
||||
{% block body %}
|
||||
{% include "header.html" %}
|
||||
{% block subNav %}
|
||||
{% include "header.html" %}
|
||||
{% block subNav %}
|
||||
{% 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="row box-shadow-bottom">
|
||||
|
@ -69,26 +69,23 @@
|
|||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
<div class="pt-3 container">
|
||||
|
||||
{% block content %}{% endblock %}
|
||||
{% endblock %}
|
||||
|
||||
<div class="pt-3 container">
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
|
||||
|
||||
<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">
|
||||
<i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard
|
||||
</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">
|
||||
<i class="fas fa-exclamation-circle mr-2"></i>Unable to copy link
|
||||
</div>
|
||||
</div>
|
||||
{% block mobilenavbar %}{% include "mobile_navigation_bar.html" %}{% endblock %}
|
||||
{% block scripts %}{% endblock %}
|
||||
</div>
|
||||
{% block mobilenavbar %}{% include "mobile_navigation_bar.html" %}{% endblock %}
|
||||
{% block scripts %}{% endblock %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}{{SITE_NAME}} Sidebar{% endblock %}
|
||||
{% 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>
|
||||
<div id="sidebar" class="my-3">
|
||||
{% if has_sidebar %}
|
||||
{% include "sidebar_" ~ SITE_NAME ~ ".html" %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{%- extends 'default.html' -%}
|
||||
{% block pagetitle %}Women World Cup 2023 Betting Leaderboard{% endblock %}
|
||||
{% block content %}
|
||||
<h1>Women World Cup 2023 Betting Leaderboard</h1>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<h1>Women World Cup 2023 Betting Leaderboard</h1>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-striped mb-5">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
|
@ -29,7 +29,6 @@
|
|||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}Content Statistics{% endblock %}
|
||||
{% block content %}
|
||||
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5">
|
||||
<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>
|
||||
<th class="disable-sort-click">Statistic</th>
|
||||
<th class="disable-sort-click">Value</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for key, value in data.items() %}
|
||||
</thead>
|
||||
{% for key, value in data.items() %}
|
||||
<tr>
|
||||
<td>{{key}}</td>
|
||||
{% if key == 'time' -%}
|
||||
|
@ -17,6 +18,7 @@
|
|||
<td>{{value}}</td>
|
||||
{%- endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -13,11 +13,11 @@
|
|||
</div>
|
||||
{% endblock %}
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
<div class="toast clipboard" id="toast-success" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000">
|
||||
{% 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-body text-center">
|
||||
<i class="fas fa-check-circle text-success mr-2"></i>Link copied to clipboard
|
||||
</div>
|
||||
</div>
|
||||
<script defer src="{{'js/vendor/clipboard.js' | asset}}"></script>
|
||||
</div>
|
||||
<script defer src="{{'js/vendor/clipboard.js' | asset}}"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
{% block PseudoSubmitForm %}{% endblock %}
|
||||
{% block customPadding %}{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row mt-3 p-md-4">
|
||||
<div class="row mt-3 p-md-4">
|
||||
{% include "user_listing.html" %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
{% block navbar %}{% endblock %}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
{% set pfp_expanded = u.highres if (u.highres and can_see(v, u)) else u.profile_url %}
|
||||
|
||||
{% block desktopUserBanner %}
|
||||
<div class="row d-mob-none">
|
||||
<div class="row d-mob-none">
|
||||
<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 class="jumbotron-overlay"></div>
|
||||
|
@ -168,7 +168,6 @@
|
|||
{% endif %}
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<div>
|
||||
{% if v and v.id != u.id %}
|
||||
<div id="profile--actionbtns">
|
||||
<div class="actionbtns mb-3">
|
||||
|
@ -289,7 +288,6 @@
|
|||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if FEATURES['BADGES'] -%}
|
||||
<div id="profile--badges">
|
||||
|
@ -307,14 +305,14 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% 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="col px-0">
|
||||
<a rel="nofollow noopener" href="{{u.banner_url}}">
|
||||
|
@ -599,5 +597,5 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{% block pagetype %}userpage{% endblock %}
|
||||
{% block pagetitle %}@{{u.username}}{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row no-gutters">
|
||||
<div class="row no-gutters">
|
||||
<div class="col-12">
|
||||
<div class="text-center py-6 py-md-8">
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block pagenav %}{% endblock %}
|
||||
|
|
|
@ -1,28 +1,29 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}@{{u.username}}'s blockers{% endblock %}
|
||||
{% block content %}
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th class="disable-sort-click">Blocking since</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="blockers-table">
|
||||
{% for block, user in users %}
|
||||
</thead>
|
||||
<tbody id="blockers-table">
|
||||
{% for block, user in users %}
|
||||
<tr>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
<td {% if block.created_utc > 1599343262 %}data-time="{{block.created_utc}}"{% endif %}></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
||||
({{total}} user{{macros.plural(total)}})
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}Users blocked by @{{u.username}}{% endblock %}
|
||||
{% block content %}
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th class="disable-sort-click">Blocking since</th>
|
||||
|
@ -11,9 +11,9 @@
|
|||
<th class="disable-sort-click"></th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="blockers-table">
|
||||
{% for block, user in users %}
|
||||
</thead>
|
||||
<tbody id="blockers-table">
|
||||
{% for block, user in users %}
|
||||
<tr>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
<td {% if block.created_utc > 1599343262 %}data-time="{{block.created_utc}}"{% endif %}></td>
|
||||
|
@ -23,16 +23,15 @@
|
|||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% if v.id == u.id %}
|
||||
{% if v.id == u.id %}
|
||||
<script defer src="{{'js/userpage_blocking.js' | asset}}"></script>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}@{{u.username}}'s followers{% endblock %}
|
||||
{% block content %}
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th class="disable-sort-click">Following since</td>
|
||||
|
@ -11,9 +12,9 @@
|
|||
<th class="disable-sort-click"></th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="followers-table">
|
||||
{% for follow, user in users %}
|
||||
</thead>
|
||||
<tbody id="followers-table">
|
||||
{% for follow, user in users %}
|
||||
<tr>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
<td {% if follow.created_utc > 1599343262 %}data-time="{{follow.created_utc}}"{% endif %}></td>
|
||||
|
@ -25,14 +26,14 @@
|
|||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<script defer src="{{'js/followers.js' | asset}}"></script>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<script defer src="{{'js/followers.js' | asset}}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}Users followed by @{{u.username}}{% endblock %}
|
||||
{% block content %}
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th class="disable-sort-click">Following since</td>
|
||||
|
@ -11,9 +12,9 @@
|
|||
<th class="disable-sort-click"></th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="followers-table">
|
||||
{% for follow, user in users %}
|
||||
</thead>
|
||||
<tbody id="followers-table">
|
||||
{% for follow, user in users %}
|
||||
<tr>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
<td {% if follow.created_utc > 1599343262 %}data-time="{{follow.created_utc}}"{% endif %}></td>
|
||||
|
@ -25,14 +26,14 @@
|
|||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<script defer src="{{'js/following.js' | asset}}"></script>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<script defer src="{{'js/following.js' | asset}}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,26 +1,27 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}@{{u.username}}'s notification muters{% endblock %}
|
||||
{% block content %}
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th class="disable-sort-click">Muting notifications since</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="muters-table">
|
||||
{% for mute, user in users %}
|
||||
</thead>
|
||||
<tbody id="muters-table">
|
||||
{% for mute, user in users %}
|
||||
<tr>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
<td data-time="{{mute.created_utc}}"></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}Users whose notifications are muted by @{{u.username}}{% endblock %}
|
||||
{% block content %}
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th class="disable-sort-click">Muting notifications since</th>
|
||||
|
@ -11,9 +12,9 @@
|
|||
<th class="disable-sort-click"></th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="muters-table">
|
||||
{% for mute, user in users %}
|
||||
</thead>
|
||||
<tbody id="muters-table">
|
||||
{% for mute, user in users %}
|
||||
<tr>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
<td data-time="{{mute.created_utc}}"></td>
|
||||
|
@ -23,16 +24,16 @@
|
|||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{% if v.id == u.id %}
|
||||
{% if v.id == u.id %}
|
||||
<script defer src="{{'js/userpage_muting.js' | asset}}"></script>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
{%- extends 'userpage/userpage.html' -%}
|
||||
{% 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="posts">
|
||||
{% include "post_listing.html" %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "userpage/userpage.html" %}
|
||||
{% 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="text-center px-3 my-3">
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetype %}userpage{% endblock %}
|
||||
{% block pagetitle %}@{{u.username}}'s profile{% endblock %}
|
||||
|
||||
{% block head_final %}
|
||||
{% if u and u.profile_background %}
|
||||
<link rel="stylesheet" href="{{('css/transparent.css') | asset}}">
|
||||
|
@ -9,42 +10,47 @@
|
|||
<link rel="stylesheet" href="/@{{u.username}}/profilecss">
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{%- include 'userpage/banner.html' -%}
|
||||
{%- include 'userpage/header.html' -%}
|
||||
{% block userpage_content required %}{% endblock %}
|
||||
{% if FEATURES['USERS_PROFILE_SONG'] and u.song %}
|
||||
{%- include 'userpage/banner.html' -%}
|
||||
{%- include 'userpage/header.html' -%}
|
||||
{% block userpage_content required %}{% endblock %}
|
||||
|
||||
{% if FEATURES['USERS_PROFILE_SONG'] and u.song %}
|
||||
{% if v and v.id == u.id %}
|
||||
<div id="v_username" class="d-none">{{v.username}}</div>
|
||||
{% else %}
|
||||
<div id="u_username" class="d-none">{{u.username}}</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if v %}
|
||||
<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>
|
||||
<div id="username" class="d-none">{{u.username}}</div>
|
||||
{% endif %}
|
||||
<script defer src="{{'js/userpage.js' | asset}}"></script>
|
||||
{% if can_see(v, u) and u.song %}
|
||||
{% if v %}
|
||||
<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>
|
||||
<div id="username" class="d-none">{{u.username}}</div>
|
||||
{% endif %}
|
||||
|
||||
<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>
|
||||
<script defer src="{{'js/profile_song.js' | asset}}"></script>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% if listing %}
|
||||
{% include "pagination.html" %}
|
||||
{% endif %}
|
||||
{% if listing %}
|
||||
{% include "pagination.html" %}
|
||||
{% endif %}
|
||||
|
||||
{% if request.path.endswith('/posts') %}
|
||||
{% if request.path.endswith('/posts') %}
|
||||
<script defer src="{{'js/vendor/marked.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" %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block GIFpicker %}{% endblock %}
|
||||
|
|
|
@ -1,15 +1,17 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}@{{u.username}}'s Profile Views{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th class="disable-sort-click">Last visit</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for view in views %}
|
||||
</thead>
|
||||
{% for view in views %}
|
||||
<tr>
|
||||
<td>
|
||||
{% with user=view.viewer %}
|
||||
|
@ -18,11 +20,11 @@
|
|||
</td>
|
||||
<td>{{view.last_view_string}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
{% block mobileUserBanner %}{% endblock %}
|
||||
{% block pagetitle %}Posts{% endblock %}
|
||||
{% block content %}
|
||||
<ul class="nav post-nav py-2">
|
||||
<ul class="nav post-nav py-2">
|
||||
<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 %}>
|
||||
Posts
|
||||
|
@ -16,8 +16,8 @@
|
|||
Comments
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="row no-gutters">
|
||||
</ul>
|
||||
<div class="row no-gutters">
|
||||
<div class="col">
|
||||
{% block listing %}
|
||||
<div class="posts">
|
||||
|
@ -25,9 +25,9 @@
|
|||
</div>
|
||||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,25 +1,26 @@
|
|||
{% extends "default.html" %}
|
||||
{% block pagetitle %}{{name2}}{% endblock %}
|
||||
{% block content %}
|
||||
<h3 class="my-3" style="text-align: center">{{name2}}</h3>
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<h3 class="my-3" style="text-align: center">{{name2}}</h3>
|
||||
<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">
|
||||
<thead class="bg-primary text-white">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Name</th>
|
||||
<th>{{name}}votes</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="followers-table">
|
||||
{% for user, num in users %}
|
||||
</thead>
|
||||
<tbody id="followers-table">
|
||||
{% for user, num in users %}
|
||||
<tr {% if v.id == user.id %}class="self"{% endif %}>
|
||||
<td>{{loop.index+PAGE_SIZE*(page-1)}}</td>
|
||||
<td>{% include "user_in_table.html" %}</td>
|
||||
<td><a href="{{request.path}}/@{{user.username}}/posts">{{num}}</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% if pos and (pos[0] > 25 or not pos[1]) %}
|
||||
{% endfor %}
|
||||
{% if pos and (pos[0] > 25 or not pos[1]) %}
|
||||
<tr style="border-top:2px solid var(--primary)">
|
||||
<td>{{pos[0]}}</td>
|
||||
<td>
|
||||
|
@ -29,12 +30,12 @@
|
|||
</td>
|
||||
<td><a href="{{request.path}}/@{{v.username}}/posts">{{pos[1]}}</a></td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block pagenav %}
|
||||
{% include "pagination.html" %}
|
||||
{% include "pagination.html" %}
|
||||
{% endblock %}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue