diff --git a/docker-compose.yml b/docker-compose.yml
index 12416fbff..53ee97c31 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -42,6 +42,7 @@ services:
- DUES=0
- MAIL_USERNAME=blahblahblah@gmail.com
- MAIL_PASSWORD=3435tdfsdudebussylmaoxxt43
+ - CHRISTMAS=1
links:
- "redis"
- "postgres"
diff --git a/env b/env
index 7054dabfd..a3f4b83fb 100644
--- a/env
+++ b/env
@@ -30,4 +30,5 @@ export DUES="0"
export DEFAULT_THEME="midnight"
export DEFAULT_COLOR="ff66ac" # YOU HAVE TO PICK ONE OF THOSE COLORS OR SHIT WILL BREAK: ff66ac, 805ad5, 62ca56, 38a169, 80ffff, 2a96f3, eb4963, ff0000, f39731, 30409f, 3e98a7, e4432d, 7b9ae4, ec72de, 7f8fa6, f8db58
export MAIL_USERNAME="blahblahblah@gmail.com"
-export MAIL_PASSWORD="3435tdfsdudebussylmaoxxt43"
\ No newline at end of file
+export MAIL_PASSWORD="3435tdfsdudebussylmaoxxt43"
+export CHRISTMAS="0"
\ No newline at end of file
diff --git a/files/__main__.py b/files/__main__.py
index 913d3f38b..724a7996d 100644
--- a/files/__main__.py
+++ b/files/__main__.py
@@ -16,9 +16,7 @@ import gevent
from werkzeug.middleware.proxy_fix import ProxyFix
import redis
-if environ.get("CHRISTMAS"): templates = 'templates/CHRISTMAS'
-else: templates = 'templates'
-app = Flask(__name__, template_folder=templates)
+app = Flask(__name__, template_folder='templates/CHRISTMAS')
app.wsgi_app = ProxyFix(app.wsgi_app, x_for=3)
app.url_map.strict_slashes = False
diff --git a/files/templates/Bets.html b/files/templates/CHRISTMAS/Bets.html
similarity index 100%
rename from files/templates/Bets.html
rename to files/templates/CHRISTMAS/Bets.html
diff --git a/files/templates/Poll.html b/files/templates/CHRISTMAS/Poll.html
similarity index 100%
rename from files/templates/Poll.html
rename to files/templates/CHRISTMAS/Poll.html
diff --git a/files/templates/ProfilePopover.html b/files/templates/CHRISTMAS/ProfilePopover.html
similarity index 100%
rename from files/templates/ProfilePopover.html
rename to files/templates/CHRISTMAS/ProfilePopover.html
diff --git a/files/templates/CHRISTMAS/admin/admin_home.html b/files/templates/CHRISTMAS/admin/admin_home.html
new file mode 100644
index 000000000..dfb3e5f92
--- /dev/null
+++ b/files/templates/CHRISTMAS/admin/admin_home.html
@@ -0,0 +1,60 @@
+{% extends "default.html" %}
+
+{% block title %}
+
{{'SITE_NAME' | app_config}}
+
+{% endblock %}
+
+{% block content %}
+
+
Admin Tools
+
+
Content
+
+
+
Users
+
+
+
Safety
+
+
+
Grant
+
+
+
API Access Control
+
+
+
Statistics
+
+
+
Configuration
+
+
+
+
+ Disable signups
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/admin/alt_votes.html b/files/templates/CHRISTMAS/admin/alt_votes.html
new file mode 100644
index 000000000..b448bce5b
--- /dev/null
+++ b/files/templates/CHRISTMAS/admin/alt_votes.html
@@ -0,0 +1,89 @@
+{% extends "default.html" %}
+
+{% block title %}
+{{'SITE_NAME' | app_config}}
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
Vote Info
+
+
+
+{% if u1 and u2 %}
+
+
+
Analysis
+
+
+
+
+
+
+
+ @{{u1.username}} only(% unique)
+ Both
+ @{{u2.username}} only (% unique)
+
+
+
+
+ Post Upvotes
+ {{data['u1_only_post_ups']}} ({{data['u1_post_ups_unique']}}%)
+ {{data['both_post_ups']}}
+ {{data['u2_only_post_ups']}} ({{data['u2_post_ups_unique']}}%)
+
+
+ Post Downvotes
+ {{data['u1_only_post_downs']}} ({{data['u1_post_downs_unique']}}%)
+ {{data['both_post_downs']}}
+ {{data['u2_only_post_downs']}} ({{data['u2_post_downs_unique']}}%)
+
+
+ Comment Upvotes
+ {{data['u1_only_comment_ups']}} ({{data['u1_comment_ups_unique']}}%)
+ {{data['both_comment_ups']}}
+ {{data['u2_only_comment_ups']}} ({{data['u2_comment_ups_unique']}}%)
+
+
+ Comment Downvotes
+ {{data['u1_only_comment_downs']}} ({{data['u1_comment_downs_unique']}}%)
+ {{data['both_comment_downs']}}
+ {{data['u2_only_comment_downs']}} ({{data['u2_comment_downs_unique']}}%)
+
+
+
+
Link Accounts
+
+{% if u2 in u1.alts %}
+
Accounts are known alts of eachother.
+{% else %}
+
+
Two accounts controlled by different people should have most uniqueness percentages at or above 70-80%
+
A sockpuppet account will have its uniqueness percentages significantly lower.
+
+
Link Accounts
+
+
+{% endif %}
+
+{% endif %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/admin/app.html b/files/templates/CHRISTMAS/admin/app.html
new file mode 100644
index 000000000..f53e048f3
--- /dev/null
+++ b/files/templates/CHRISTMAS/admin/app.html
@@ -0,0 +1,66 @@
+{% extends "default.html" %}
+
+{% block title %}
+API App Administration
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+{% if listing %}
+ {% include "submission_listing.html" %}
+{% elif comments %}
+ {% include "comments.html" %}
+{% endif %}
+
+
+
+
+
+
+ Error, please try again later.
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/admin/apps.html b/files/templates/CHRISTMAS/admin/apps.html
new file mode 100644
index 000000000..9b1202f32
--- /dev/null
+++ b/files/templates/CHRISTMAS/admin/apps.html
@@ -0,0 +1,68 @@
+{% extends "default.html" %}
+
+{% block title %}
+API App Administration
+
+{% endblock %}
+
+{% block content %}
+
+ {% for app in apps %}
+
+ {% endfor %}
+
+
+
+
+
+ Error, please try again later.
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/admin/awards.html b/files/templates/CHRISTMAS/admin/awards.html
new file mode 100644
index 000000000..e4606f753
--- /dev/null
+++ b/files/templates/CHRISTMAS/admin/awards.html
@@ -0,0 +1,73 @@
+{% extends "default.html" %}
+
+{% block title %}
+Grant User Award
+{% endblock %}
+
+{% block pagetype %}message{% endblock %}
+
+{% block content %}
+
+
+
+ {% if error %}
+
+
+
+ {{error}}
+
+
+
+
+
+ {% endif %}
+ {% if msg %}
+
+
+
+ {{msg}}
+
+
+
+
+
+ {% endif %}
+
+
+
+
User Award Grant
+
+
+
+
+ {% if 'rdrama.net' not in request.host or v.admin_level > 2 %}
+
+ {% endif %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/admin/badge_grant.html b/files/templates/CHRISTMAS/admin/badge_grant.html
new file mode 100644
index 000000000..5bdc1596d
--- /dev/null
+++ b/files/templates/CHRISTMAS/admin/badge_grant.html
@@ -0,0 +1,87 @@
+{% extends "default.html" %}
+
+{% block title %}
+Badge Grant
+{% endblock %}
+
+{% block pagetype %}message{% endblock %}
+
+{% block content %}
+
+
+ {% if error %}
+
+
+
+ {{error}}
+
+
+
+
+
+ {% endif %}
+ {% if msg %}
+
+
+
+ {{msg}}
+
+
+
+
+
+ {% endif %}
+
+
+
+
Badge Grant
+
+
+
+
+
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/admin/banned_domains.html b/files/templates/CHRISTMAS/admin/banned_domains.html
new file mode 100644
index 000000000..dc931c16b
--- /dev/null
+++ b/files/templates/CHRISTMAS/admin/banned_domains.html
@@ -0,0 +1,37 @@
+{% extends "default.html" %}
+
+{% block title %}
+ Banned Domains
+{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
+
+ Domain
+ Ban reason
+
+
+
+ {% for domain in banned_domains %}
+
+ {{domain.domain}}
+ {{domain.reason}}
+
+ {% endfor %}
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/admin/content_stats.html b/files/templates/CHRISTMAS/admin/content_stats.html
new file mode 100644
index 000000000..4485750c2
--- /dev/null
+++ b/files/templates/CHRISTMAS/admin/content_stats.html
@@ -0,0 +1,25 @@
+{% extends "default.html" %}
+
+{% block title %}
+{{'SITE_NAME' | app_config}}
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+ Statistic
+ Value
+
+
+{% for entry in data %}
+
+ {{entry}}
+ {{data[entry]}}
+
+{% endfor %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/admin/image_posts.html b/files/templates/CHRISTMAS/admin/image_posts.html
new file mode 100644
index 000000000..7a3feb461
--- /dev/null
+++ b/files/templates/CHRISTMAS/admin/image_posts.html
@@ -0,0 +1,56 @@
+{% extends "userpage.html" %}
+
+{% block adminpanel %}{% endblock %}
+{% block pagetype %}userpage{% endblock %}
+{% block banner %}{% endblock %}
+{% block mobileBanner %}{% endblock %}
+{% block desktopBanner %}{% endblock %}
+{% block desktopUserBanner %}{% endblock %}
+{% block mobileUserBanner %}{% endblock %}
+
+{% block postNav %}{% endblock %}
+
+{% block fixedMobileBarJS %}
+{% endblock %}
+
+{% block title %}
+Image feed
+
+{% endblock %}
+
+
+{% block content %}
+
+
+
+
+
+ {% block listing %}
+
+ {% include "submission_listing.html" %}
+
+ {% endblock %}
+
+
+{% endblock %}
+
+{% block pagenav %}
+
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/admin/new_users.html b/files/templates/CHRISTMAS/admin/new_users.html
new file mode 100644
index 000000000..f20a160cd
--- /dev/null
+++ b/files/templates/CHRISTMAS/admin/new_users.html
@@ -0,0 +1,9 @@
+{% extends "mine.html" %}
+
+{% block maincontent %}
+
+
+{% include "user_listing.html" %}
+{% endblock %}
+
+{% block navbar %}{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/admin/removed_posts.html b/files/templates/CHRISTMAS/admin/removed_posts.html
new file mode 100644
index 000000000..4dbfabcbb
--- /dev/null
+++ b/files/templates/CHRISTMAS/admin/removed_posts.html
@@ -0,0 +1,59 @@
+{% extends "admin/image_posts.html" %}
+
+
+{% block title %}
+Removed Content
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
+ {% block listing %}
+
+ {% include "submission_listing.html" %}
+
+ {% endblock %}
+
+
+{% endblock %}
+
+{% block pagenav %}
+
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/admin/reported_comments.html b/files/templates/CHRISTMAS/admin/reported_comments.html
new file mode 100644
index 000000000..c264aa8cf
--- /dev/null
+++ b/files/templates/CHRISTMAS/admin/reported_comments.html
@@ -0,0 +1,24 @@
+{% extends "admin/reported_posts.html" %}
+
+
+
+{% block listing %}
+
+
+
+ {% with comments=listing %}
+ {% include "comments.html" %}
+ {% endwith %}
+ {% if not listing %}
+
+
+
+
There are no comments here (yet).
+
+
+
+ {% endif %}
+
+
+{% endblock %}
+
diff --git a/files/templates/CHRISTMAS/admin/reported_posts.html b/files/templates/CHRISTMAS/admin/reported_posts.html
new file mode 100644
index 000000000..b860f07ed
--- /dev/null
+++ b/files/templates/CHRISTMAS/admin/reported_posts.html
@@ -0,0 +1,83 @@
+{% extends "userpage.html" %}
+
+{% block adminpanel %}{% endblock %}
+{% block pagetype %}userpage{% endblock %}
+{% block banner %}{% endblock %}
+{% block mobileBanner %}{% endblock %}
+{% block desktopBanner %}{% endblock %}
+{% block desktopUserBanner %}{% endblock %}
+{% block mobileUserBanner %}{% endblock %}
+
+ {% block postNav %}
+
+ {% endblock %}
+
+
+{% block fixedMobileBarJS %}
+{% endblock %}
+
+{% block title %}
+Reported Posts
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+
+ {% block listing %}
+
+ {% include "submission_listing.html" %}
+
+ {% endblock %}
+
+
+{% endblock %}
+
+{% block pagenav %}
+
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/admins.html b/files/templates/CHRISTMAS/admins.html
new file mode 100644
index 000000000..a57b82259
--- /dev/null
+++ b/files/templates/CHRISTMAS/admins.html
@@ -0,0 +1,31 @@
+{% extends "settings2.html" %}
+
+{% block pagetitle %}Admins{% endblock %}
+
+{% block content %}
+
+Admins
+
+
+
+
+ Name
+ Score
+
+
+ {% for user in admins %}
+
+
+
+
+ {{user.username}}
+
+ {% if user.admin_level == 1 and v and v.admin_level > 1 %}
+
+ {% endif %}
+
+ {{user.truecoins}}
+
+ {% endfor %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/agendaposters.html b/files/templates/CHRISTMAS/agendaposters.html
new file mode 100644
index 000000000..5a2168b70
--- /dev/null
+++ b/files/templates/CHRISTMAS/agendaposters.html
@@ -0,0 +1,19 @@
+{% extends "settings2.html" %}
+
+{% block content %}
+
+
+
+ #
+ Name
+
+
+{% for user in users %}
+
+ {{loop.index}}
+ {{user.username}}
+
+{% endfor %}
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/api.html b/files/templates/CHRISTMAS/api.html
new file mode 100644
index 000000000..94dee7924
--- /dev/null
+++ b/files/templates/CHRISTMAS/api.html
@@ -0,0 +1,82 @@
+{% extends "default.html" %}
+
+{% block title %}
+{{'SITE_NAME' | app_config}} - API
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+API Guide for Bots
+
+This page explains how to obtain and use an access token.
+Step 1: Create your Application
+In the apps tab of Drama settings , fill in and submit the form to request an access token. You will need:
+
+an application name
+a Redirect URI. May not use HTTP unless using localhost (use HTTPS instead).
+a brief description of what your bot is intended to do
+
+Don't worry too much about accuracy; you will be able to change all of these later.
+Drama 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.
+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!
+Step 2: Using the Access Token
+To use the access token, include the following header in subsequent API requests to Drama: Authorization: access_token_goes_here
+Python example:
+ import requests
+
+ headers={"Authorization": "access_token_goes_here"}
+
+ url="https://rdrama.net/@carpathianflorist"
+
+ r=requests.get(url, headers=headers)
+
+ print(r.json())
+
+The expected result of this would be a large JSON representation of the posts posted by @carpathianflorist
+
+
+
+
+
+
+
+
+
+API Guide for Applications
+
+The OAuth2 authorization flow is used to enable users to authorize third-party applications to access their Drama account without having to provide their login information to the application.
+This page explains how to obtain API application keys, how to prompt a user for authorization, and how to obtain and use access tokens.
+Step 1: Create your Application
+In the apps tab of Drama settings , fill in and submit the form to request new API keys. You will need:
+
+an application name
+a Redirect URI. May not use HTTP unless using localhost (use HTTPS instead).
+a brief description of what your application is intended to do
+
+Don't worry too much about accuracy; you will be able to change all of these later.
+Drama 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.
+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!
+Step 2: Prompt Your User for Authorization
+Send your user to https://rdrama.net/authorize/?client_id=YOUR_CLIENT_ID
+If done correctly, the user will see that your application wants to access their Drama account, and be prompted to approve or deny the request.
+Step 3: Catch the redirect
+The user clicks "Authorize". Drama 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.
+Step 4: Using the Access Token
+To use the access token, include the following header in subsequent API requests to Drama: Authorization: access_token_goes_here
+Python example:
+ import requests
+
+ headers={"Authorization": "access_token_goes_here"}
+
+ url="https://rdrama.net/@carpathianflorist"
+
+ r=requests.get(url, headers=headers)
+
+ print(r.json())
+
+The expected result of this would be a large JSON representation of the submissions submitted by @carpathianflorist
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/authforms.html b/files/templates/CHRISTMAS/authforms.html
new file mode 100644
index 000000000..aea28f07b
--- /dev/null
+++ b/files/templates/CHRISTMAS/authforms.html
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+ {% block pagetitle %}{{'SITE_NAME' | app_config}}{% endblock %}
+
+
+ {% if v %}
+
+
+ {% if v.agendaposter %} {% elif v.css %} {% endif %}
+ {% else %}
+
+
+ {% endif %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{% block authtitle %}{% endblock %}
+
+
{% block authtext %}{% endblock %}
+
+ {% if error %}
+
+
+
+ {{error}}
+
+
+
+
+
+ {% endif %}
+ {% if msg %}
+
+
+
+ {{msg}}
+
+
+
+
+
+ {% endif %}
+
+ {% block content %}
+ {% endblock %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/award_modal.html b/files/templates/CHRISTMAS/award_modal.html
new file mode 100644
index 000000000..988eea6cb
--- /dev/null
+++ b/files/templates/CHRISTMAS/award_modal.html
@@ -0,0 +1,91 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/files/templates/awards/Christmas/Fireplace.html b/files/templates/CHRISTMAS/awards/Christmas/Fireplace.html
similarity index 100%
rename from files/templates/awards/Christmas/Fireplace.html
rename to files/templates/CHRISTMAS/awards/Christmas/Fireplace.html
diff --git a/files/templates/awards/Christmas/Gingerbread.html b/files/templates/CHRISTMAS/awards/Christmas/Gingerbread.html
similarity index 81%
rename from files/templates/awards/Christmas/Gingerbread.html
rename to files/templates/CHRISTMAS/awards/Christmas/Gingerbread.html
index 04e045fb1..fd1ec85f8 100644
--- a/files/templates/awards/Christmas/Gingerbread.html
+++ b/files/templates/CHRISTMAS/awards/Christmas/Gingerbread.html
@@ -3,7 +3,7 @@
{% for i in range(count) %}
-
+
{% endfor %}
\ No newline at end of file
diff --git a/files/templates/awards/Christmas/Sleighs.html b/files/templates/CHRISTMAS/awards/Christmas/Sleighs.html
similarity index 85%
rename from files/templates/awards/Christmas/Sleighs.html
rename to files/templates/CHRISTMAS/awards/Christmas/Sleighs.html
index 9777b8afa..dcefe3234 100644
--- a/files/templates/awards/Christmas/Sleighs.html
+++ b/files/templates/CHRISTMAS/awards/Christmas/Sleighs.html
@@ -2,18 +2,18 @@
-
+
{% if p.award_count("train") > 1 %}
-
+
{% endif %}
{% if p.award_count("train") > 2 %}
-
+
{% endif %}
{% if p.award_count("train") > 3 %}
-
+
{% endif %}
diff --git a/files/templates/comments/CommentActions.html b/files/templates/CHRISTMAS/comments/CommentActions.html
similarity index 100%
rename from files/templates/comments/CommentActions.html
rename to files/templates/CHRISTMAS/comments/CommentActions.html
diff --git a/files/templates/comments/CommentEditForm.html b/files/templates/CHRISTMAS/comments/CommentEditForm.html
similarity index 100%
rename from files/templates/comments/CommentEditForm.html
rename to files/templates/CHRISTMAS/comments/CommentEditForm.html
diff --git a/files/templates/comments/CommentForm.html b/files/templates/CHRISTMAS/comments/CommentForm.html
similarity index 100%
rename from files/templates/comments/CommentForm.html
rename to files/templates/CHRISTMAS/comments/CommentForm.html
diff --git a/files/templates/comments/CommentMessageReplyForm.html b/files/templates/CHRISTMAS/comments/CommentMessageReplyForm.html
similarity index 100%
rename from files/templates/comments/CommentMessageReplyForm.html
rename to files/templates/CHRISTMAS/comments/CommentMessageReplyForm.html
diff --git a/files/templates/comments/CommentReplyForm.html b/files/templates/CHRISTMAS/comments/CommentReplyForm.html
similarity index 100%
rename from files/templates/comments/CommentReplyForm.html
rename to files/templates/CHRISTMAS/comments/CommentReplyForm.html
diff --git a/files/templates/CHRISTMAS/contact.html b/files/templates/CHRISTMAS/contact.html
new file mode 100644
index 000000000..277f49fa7
--- /dev/null
+++ b/files/templates/CHRISTMAS/contact.html
@@ -0,0 +1,67 @@
+{% extends "default.html" %}
+
+{% block title %}
+{{'SITE_NAME' | app_config}} - Contact
+
+{% endblock %}
+
+{% block content %}
+
+
+
+ {% if request.values.get('error') or error %}
+
+
+
+ {{error if error else request.values.get('error')}}
+
+
+
+
+
+ {% endif %}
+ {% if request.values.get('msg') or msg %}
+
+
+
+ {{msg if msg else request.values.get('msg')}}
+
+
+
+
+
+ {% endif %}
+
+
Contact {{'SITE_NAME' | app_config}} Admins
+ {% if v and v.is_activated and not v.is_suspended %}
+
+
Use this form to contact {{'SITE_NAME' | app_config}} Admins.
+
+
Your Email
+
+
+
+
+ Your message
+
+
+
+
+
+
+
+ {% elif v %}
+
+
Please verify your email address in order to ensure we can respond to your message if needed. Then, refresh this page.
+
+ {% else %}
+
+
In order to ensure that we can respond to your message, please first sign up or log in and make sure you have verified your email address . Then, refresh this page.
+
+ {% endif %}
+
+
If you can see this line, we haven't been contacted by any law enforcement or governmental organizations in 2021 yet.
+
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/default.html b/files/templates/CHRISTMAS/default.html
new file mode 100644
index 000000000..4165d2d93
--- /dev/null
+++ b/files/templates/CHRISTMAS/default.html
@@ -0,0 +1,353 @@
+
+
+
+ {% if v and v.agendaposter %}
+
+
+
+
+ {% endif %}
+
+
+
+
+
+
+ {% block title %}
+ {{'SITE_NAME' | app_config}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% endblock %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% block stylesheets %}
+
+
+
+
+
+
+
+ {% if v %}
+
+
+
+ {% if v.agendaposter %}
+
+ {% elif v.css %}
+
+ {% endif %}
+ {% else %}
+
+
+
+ {% endif %}
+
+ {% endblock %}
+
+
+
+
+
+
+
+
+
+{% block Banner %}
+{% endblock %}
+
+{% include "header-tw.html" %}
+
+{% block mobileUserBanner %}
+{% endblock %}
+
+{% block mobileBanner %}
+{% endblock %}
+
+{% block postNav %}
+{% endblock %}
+
+
+
+
+ {% block desktopUserBanner %}
+ {% endblock %}
+
+ {% block desktopBanner %}
+ {% endblock %}
+
+
+
+ {% block subHeader2 %}
+ {% endblock %}
+
+
+
+
+ {% block searchText %}
+ {% endblock %}
+
+ {% block content %}
+ {% endblock %}
+
+ {% block pagenav %}
+ {% endblock %}
+
+ {% block sidebar %}
+ {% endblock %}
+
+
+
+ {% include "footer.html" %}
+
+
+
+{% if v %}
+ {{ v.formkey }}
+{% endif %}
+
+{% include "ProfilePopover.html" %}
+
+{% block mobilenavbar %}
+ {% include "mobile_navigation_bar.html" %}
+{% endblock %}
+
+{% block actionsModal %}
+{% endblock %}
+
+{% block reportCommentModal %}
+{% endblock %}
+
+{% block GIFtoast %}
+{% endblock %}
+
+{% block GIFpicker %}
+{% endblock %}
+
+
+
+{% include "/toasts/toasts.html" %}
+
+{% block modals %}
+{% endblock %}
+
+{% block popovers %}
+{% endblock %}
+
+{% block fixedMobileBarJS %}
+{% endblock %}
+
+{% block scripts %}
+{% endblock %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% if v %}
+
+
+{% endif %}
+
+
+
diff --git a/files/templates/CHRISTMAS/delete_post_modal.html b/files/templates/CHRISTMAS/delete_post_modal.html
new file mode 100644
index 000000000..5df4ac9dd
--- /dev/null
+++ b/files/templates/CHRISTMAS/delete_post_modal.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
Delete post?
+
+
Your post will be removed everywhere on {{'SITE_NAME' | app_config}}. This action can be undone.
+
+
Your post will be removed everywhere on {{'SITE_NAME' | app_config}}. This action can be undone.
+
+
+
+ Delete post
+
+ Cancel
+
+
+
+
+
+
+
+
diff --git a/files/templates/dropdowns/NavbarExtraLinks.html b/files/templates/CHRISTMAS/dropdowns/NavbarExtraLinks.html
similarity index 97%
rename from files/templates/dropdowns/NavbarExtraLinks.html
rename to files/templates/CHRISTMAS/dropdowns/NavbarExtraLinks.html
index e2dc296ed..c98f66a6a 100644
--- a/files/templates/dropdowns/NavbarExtraLinks.html
+++ b/files/templates/CHRISTMAS/dropdowns/NavbarExtraLinks.html
@@ -41,7 +41,7 @@
-
+
Android App
diff --git a/files/templates/dropdowns/NavbarProfile.html b/files/templates/CHRISTMAS/dropdowns/NavbarProfile.html
similarity index 92%
rename from files/templates/dropdowns/NavbarProfile.html
rename to files/templates/CHRISTMAS/dropdowns/NavbarProfile.html
index ae605d20d..059b8e44b 100644
--- a/files/templates/dropdowns/NavbarProfile.html
+++ b/files/templates/CHRISTMAS/dropdowns/NavbarProfile.html
@@ -17,12 +17,12 @@
-
+
{{v.coins}}
{% if v.procoins %}
-
+
{{v.procoins}}
{% endif %}
diff --git a/files/templates/dropdowns/ProfileAdminDropdown.html b/files/templates/CHRISTMAS/dropdowns/ProfileAdminDropdown.html
similarity index 100%
rename from files/templates/dropdowns/ProfileAdminDropdown.html
rename to files/templates/CHRISTMAS/dropdowns/ProfileAdminDropdown.html
diff --git a/files/templates/dropdowns/ProfileDropdown.html b/files/templates/CHRISTMAS/dropdowns/ProfileDropdown.html
similarity index 100%
rename from files/templates/dropdowns/ProfileDropdown.html
rename to files/templates/CHRISTMAS/dropdowns/ProfileDropdown.html
diff --git a/files/templates/dropdowns/SearchSorts.html b/files/templates/CHRISTMAS/dropdowns/SearchSorts.html
similarity index 100%
rename from files/templates/dropdowns/SearchSorts.html
rename to files/templates/CHRISTMAS/dropdowns/SearchSorts.html
diff --git a/files/templates/dropdowns/SubmissionSorts.html b/files/templates/CHRISTMAS/dropdowns/SubmissionSorts.html
similarity index 100%
rename from files/templates/dropdowns/SubmissionSorts.html
rename to files/templates/CHRISTMAS/dropdowns/SubmissionSorts.html
diff --git a/files/templates/CHRISTMAS/email/2fa_remove.html b/files/templates/CHRISTMAS/email/2fa_remove.html
new file mode 100644
index 000000000..619e53aaf
--- /dev/null
+++ b/files/templates/CHRISTMAS/email/2fa_remove.html
@@ -0,0 +1,34 @@
+{% extends "email/default.html" %}
+
+{% block title %}Remove Two-Factor Authentication{% endblock %}
+
+{% block preheader %}Remove Two-Factor Authentication.{% endblock %}
+
+{% block content %}
+
We received a request to remove two-factor authentication from your account. In 72 hours, click the link below.
+
If you didn't make this request, change your password and use the Log Out Everywhere feature in your Security Settings to permanently invalidate the link.
+
+
Please note that {{'SITE_NAME' | app_config}} will never ask you for your email, password, or two-factor token via email, text, or phone.
+
+
+
+ If you’re having trouble with the button above, copy and paste the URL below into your web browser.
+ {{action_url}}
+
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/email/default.html b/files/templates/CHRISTMAS/email/default.html
new file mode 100644
index 000000000..f375d1bbb
--- /dev/null
+++ b/files/templates/CHRISTMAS/email/default.html
@@ -0,0 +1,409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'SITE_NAME' | app_config}}
+
+
+
+
+
+
+
+
+
+
{% block title %}Title Goes Here{% endblock %}
+
+{% block content %}
+ {% for entry in data %}
+
{{entry[0]}}
+
{{entry[1]}}
+ {% endfor %}
+{% endblock %}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/files/templates/CHRISTMAS/email/email_change.html b/files/templates/CHRISTMAS/email/email_change.html
new file mode 100644
index 000000000..01101d177
--- /dev/null
+++ b/files/templates/CHRISTMAS/email/email_change.html
@@ -0,0 +1,56 @@
+{% extends "email/default.html" %}
+
+{% block title %}Verify Your Email{% endblock %}
+
+{% block preheader %}Verify your new {{'SITE_NAME' | app_config}} email.{% endblock %}
+
+{% block content %}
+
You told us you wanted to change your {{'SITE_NAME' | app_config}} account email. To finish this process, please verify your new email address:
+
+
For reference, here's your current information:
+
+
+
+
+
+
+
+ Email: {{v.email}}
+
+
+
+
+
+
+ Username: {{v.username}}
+
+
+
+
+
+
+
+
Please note that {{'SITE_NAME' | app_config}} will never ask you for your email, password, or two-factor token via email, text, or phone.
+
+
+
+ If you’re having trouble with the button above, copy and paste the URL below into your web browser.
+ {{action_url}}
+
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/email/email_verify.html b/files/templates/CHRISTMAS/email/email_verify.html
new file mode 100644
index 000000000..e039ed539
--- /dev/null
+++ b/files/templates/CHRISTMAS/email/email_verify.html
@@ -0,0 +1,54 @@
+{% extends "email/default.html" %}
+
+{% block title %}Welcome to {{'SITE_NAME' | app_config}}!{% endblock %}
+
+{% block content %}
+
Thanks for joining {{'SITE_NAME' | app_config}}. We’re happy to have you on board. To get the most out of {{'SITE_NAME' | app_config}}, please verify your account email:
+
+
For reference, here's your username.
+
+
+
+
+
+
+
+ Email: {{v.email}}
+
+
+
+
+
+
+ Username: {{v.username}}
+
+
+
+
+
+
+
+
Please note that {{'SITE_NAME' | app_config}} will never ask you for your email, password, or two-factor token via email, text, or phone.
+
+
+
+ If you’re having trouble with the button above, copy and paste the URL below into your web browser.
+ {{action_url}}
+
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/email/password_reset.html b/files/templates/CHRISTMAS/email/password_reset.html
new file mode 100644
index 000000000..c5df8e03e
--- /dev/null
+++ b/files/templates/CHRISTMAS/email/password_reset.html
@@ -0,0 +1,54 @@
+{% extends "email/default.html" %}
+
+{% block title %}Reset Your Password{% endblock %}
+{% block preheader %}Reset your {{'SITE_NAME' | app_config}} password.{% endblock %}
+
+{% block content %}
+
To reset your password, click the button below:
+
+
For reference, here's your login information:
+
+
+
+
+
+
+
+ Email: {{v.email}}
+
+
+
+
+
+
+ Username: {{v.username}}
+
+
+
+
+
+
+
+
+
+
+ If you’re having trouble with the button above, copy and paste the URL below into your web browser.
+ {{action_url}}
+
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/emoji_modal.html b/files/templates/CHRISTMAS/emoji_modal.html
new file mode 100644
index 000000000..f764dc796
--- /dev/null
+++ b/files/templates/CHRISTMAS/emoji_modal.html
@@ -0,0 +1,105 @@
+
+
+
+
diff --git a/files/templates/CHRISTMAS/emojis.html b/files/templates/CHRISTMAS/emojis.html
new file mode 100644
index 000000000..f0d577a24
--- /dev/null
+++ b/files/templates/CHRISTMAS/emojis.html
@@ -0,0 +1,26 @@
+{% extends "default.html" %}
+{% block content %}
+
+
+
+
+
+
+
+ #
+ Name
+ Emoji
+
+
+
+{% for emoji in emojis %}
+
+ {{loop.index}}
+ {{emoji}}
+
+
+{% endfor %}
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/errors/400.html b/files/templates/CHRISTMAS/errors/400.html
new file mode 100644
index 000000000..ff08a4d0a
--- /dev/null
+++ b/files/templates/CHRISTMAS/errors/400.html
@@ -0,0 +1,19 @@
+{% extends "default.html" %}
+
+{% block title %}
+
400 Bad Request
+{% endblock %}
+
+{% block pagetype %}error-400{% endblock %}
+
+{% block content %}
+
+
+
+
400 Bad Request
+
+ That request was bad and you should feel bad.
+
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/errors/401.html b/files/templates/CHRISTMAS/errors/401.html
new file mode 100644
index 000000000..2a2895e6f
--- /dev/null
+++ b/files/templates/CHRISTMAS/errors/401.html
@@ -0,0 +1,21 @@
+{% extends "default.html" %}
+
+{% block title %}
+
401 Not Authorized
+{% endblock %}
+
+{% block pagetype %}error-401{% endblock %}
+
+{% block content %}
+
+
+
+
401 Not Authorized
+
+ What you're trying to do requires an account. I think. The original error message said something about a castle and I hated that.
+
+
Create an account
+
Login
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/errors/403.html b/files/templates/CHRISTMAS/errors/403.html
new file mode 100644
index 000000000..55596acef
--- /dev/null
+++ b/files/templates/CHRISTMAS/errors/403.html
@@ -0,0 +1,20 @@
+{% extends "default.html" %}
+
+{% block title %}
+
403 Forbidden
+{% endblock %}
+
+{% block pagetype %}error-403{% endblock %}
+
+{% block content %}
+
+
+
+
403 Forbidden
+
+ YOU AREN'T WELCOME HERE GO AWAY
+
+
Go to frontpage
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/errors/404.html b/files/templates/CHRISTMAS/errors/404.html
new file mode 100644
index 000000000..1f797432c
--- /dev/null
+++ b/files/templates/CHRISTMAS/errors/404.html
@@ -0,0 +1,19 @@
+{% extends "default.html" %}
+
+{% block title %}
+
404 Page Not Found
+{% endblock %}
+
+{% block pagetype %}error-404{% endblock %}
+
+{% block content %}
+
+
+
+
404 Page Not Found
+
+ Someone typed something wrong and it was probably you, please do better.
+
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/errors/405.html b/files/templates/CHRISTMAS/errors/405.html
new file mode 100644
index 000000000..cf98e006a
--- /dev/null
+++ b/files/templates/CHRISTMAS/errors/405.html
@@ -0,0 +1,23 @@
+{% extends "default.html" %}
+
+{% block title %}
+
405 Method Not Allowed
+{% endblock %}
+
+{% block pagetype %}error-405{% endblock %}
+
+{% block content %}
+
+
+
+
405 Method Not Allowed
+
+ idk how anyone gets this error but if you see this, remember to follow @carpathianflorist
+
+
+ the original error text here talked about internet gremlins and wtf
+
+
Go to frontpage
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/errors/429.html b/files/templates/CHRISTMAS/errors/429.html
new file mode 100644
index 000000000..a77719384
--- /dev/null
+++ b/files/templates/CHRISTMAS/errors/429.html
@@ -0,0 +1,20 @@
+{% extends "default.html" %}
+
+{% block title %}
+
429 Too Many Requests
+{% endblock %}
+
+{% block pagetype %}error-429{% endblock %}
+
+{% block content %}
+
+
+
+
429 Too Many Requests
+
+ go spam somewhere else nerd
+
+
Go to frontpage
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/errors/500.html b/files/templates/CHRISTMAS/errors/500.html
new file mode 100644
index 000000000..eda67c782
--- /dev/null
+++ b/files/templates/CHRISTMAS/errors/500.html
@@ -0,0 +1,20 @@
+{% extends "default.html" %}
+
+{% block title %}
+
500 Internal Server Error
+{% endblock %}
+
+{% block pagetype %}error-500{% endblock %}
+
+{% block content %}
+
+
+
+
500 Interal Server Error
+
+ Hiiiii it's carp! I think this error means that there's a timeout error. And I think that means something took too long to load so it decided not to work at all. If you keep seeing this on the same page but not other pages , then something is probably wrong with that specific function. It may not be called a function, but that sounds right to me. Anyway, ping me and I'll whine to someone smarter to fix it. Don't bother them. Thanks ily <3
+
+
Go to frontpage
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/errors/nsfw.html b/files/templates/CHRISTMAS/errors/nsfw.html
new file mode 100644
index 000000000..5708a682d
--- /dev/null
+++ b/files/templates/CHRISTMAS/errors/nsfw.html
@@ -0,0 +1,27 @@
+{% extends "default.html" %}
+
+{% block title %}
+
+18
+{% endblock %}
+
+{% block pagetype %}error-451{% endblock %}
+
+{% block content %}
+
+
+
+
Are you over 18?
+
+ This post is rated +18 (Adult-Only). You must be 18 or older to continue. Are you sure you want to proceed?
+
+
+
+
+{% endblock %}
+
diff --git a/files/templates/CHRISTMAS/errors/patron.html b/files/templates/CHRISTMAS/errors/patron.html
new file mode 100644
index 000000000..c1f6497f5
--- /dev/null
+++ b/files/templates/CHRISTMAS/errors/patron.html
@@ -0,0 +1,20 @@
+{% extends "default.html" %}
+
+{% block title %}
+
401 Not Authorized
+{% endblock %}
+
+{% block pagetype %}error-401{% endblock %}
+
+{% block content %}
+
+
+
+
401 Not Authorized
+
+ This page is only available to {% if "rama" in request.host %}paypigs{% else %}patrons{% endif %}:
+
+
{{'GUMROAD_LINK' | app_config}}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/expanded_image_modal.html b/files/templates/CHRISTMAS/expanded_image_modal.html
new file mode 100644
index 000000000..ac95d65f3
--- /dev/null
+++ b/files/templates/CHRISTMAS/expanded_image_modal.html
@@ -0,0 +1,28 @@
+
+
+
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/followers.html b/files/templates/CHRISTMAS/followers.html
new file mode 100644
index 000000000..2c6b93629
--- /dev/null
+++ b/files/templates/CHRISTMAS/followers.html
@@ -0,0 +1,37 @@
+{% extends "default.html" %}
+{% block content %}
+
+
+
+
+
+
@{{u.username}}'s followers
+
+
+
+
+ #
+ Name
+ {% if v.id == u.id %}
+
+ {% endif %}
+
+
+
+{% for user in users %}
+
+ {{loop.index}}
+ {{user.username}}
+ {% if v.id == u.id %}
+ Remove follow
+ {% endif %}
+
+{% endfor %}
+
+
+
+{% endblock %}
+
+{% block scripts %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/following.html b/files/templates/CHRISTMAS/following.html
new file mode 100644
index 000000000..5b374a141
--- /dev/null
+++ b/files/templates/CHRISTMAS/following.html
@@ -0,0 +1,33 @@
+{% extends "default.html" %}
+{% block content %}
+
+
Users followed by @{{u.username}}
+
+
+
+
+ #
+ Name
+ {% if v.id == u.id %}
+
+ {% endif %}
+
+
+
+{% for user in users %}
+
+ {{loop.index}}
+ {{user.username}}
+ {% if v.id == u.id %}
+ Unfollow
+ {% endif %}
+
+{% endfor %}
+
+
+
+{% endblock %}
+
+{% block scripts %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/footer.html b/files/templates/CHRISTMAS/footer.html
similarity index 100%
rename from files/templates/footer.html
rename to files/templates/CHRISTMAS/footer.html
diff --git a/files/templates/CHRISTMAS/forgot_password.html b/files/templates/CHRISTMAS/forgot_password.html
new file mode 100644
index 000000000..cdfee69bd
--- /dev/null
+++ b/files/templates/CHRISTMAS/forgot_password.html
@@ -0,0 +1,31 @@
+{% extends "authforms.html" %}
+
+{% block pagetitle %}{{'SITE_NAME' | app_config}} Password Reset{% endblock %}
+
+{% block authtitle %}Reset your password.{% endblock %}
+
+{% block authtext %}If there's an email address associated with your account, you can use it to recover your {{'SITE_NAME' | app_config}} account and change your password.{% endblock %}
+
+{% block content %}
+
+
+
+
+
+ Username
+
+
+
+ Email
+
+
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/formatting.html b/files/templates/CHRISTMAS/formatting.html
new file mode 100644
index 000000000..6fe045293
--- /dev/null
+++ b/files/templates/CHRISTMAS/formatting.html
@@ -0,0 +1,524 @@
+{% extends "settings2.html" %}
+{% block title %}
+
{{'SITE_NAME' | app_config}} - Formatting
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+
Markdown Formatting
+
+You can use Markdown formatting:
+
+
+
+
+
+
+
+
HTML Formatting
+
+And we allow custom HTML in most places:
+
+
+
+
+
+
Allowed Tags
+
+
+
+
+ Name
+ What you type
+ What gets displayed
+
+
+
+
+ Span
+
+ My mother has <span style="color:blue">blue</span> eyes.
+
+
+ My mother has blue eyes.
+
+
+
+ Bold
+ This will be <b>bold</b>
+
+ This will be bold
+
+
+
+ Blockquote
+
+ <blockquote>This is a blockquote</blockquote>
+
+
+
+ This is a blockquote
+
+
+
+
+ Line Break
+
+
+Line 1
+<br>
+Line 2
+
+
+
+ Line 1
+
+ Line 2
+
+
+
+ Code
+
+ <code>This is code</code>
+
+
+ This is code
+
+
+
+ Strikethrough
+
+ The last word will have a <del>strikethrough</del>
+
+
+ The last word will have a strikethrough
+
+
+
+ Emphasis
+
+ We <em>cannot</em> live like this.
+
+
+ We cannot live like this.
+
+
+
+ Headings
+
+
+<h1>This is heading 1</h1>
+<h2>This is heading 2</h2>
+<h3>This is heading 3</h3>
+<h4>This is heading 4</h4>
+<h5>This is heading 5</h5>
+<h6>This is heading 6</h6>
+
+
+
+ This is heading 1
+ This is heading 2
+ This is heading 3
+ This is heading 4
+ This is heading 5
+ This is heading 6
+
+
+
+ Horizontal Rule
+
+
+Text 1
+<hr>
+Text 2
+
+
+
+ Text 1
+
+ Text 2
+
+
+
+ Italics
+
+ <i>This</i> is how you get italics.
+
+
+ This is how you get italics.
+
+
+
+ Lists
+
+
+<ul>
+ <li>Bullet 1</li>
+ <li>Bullet 2</li>
+</ul>
+<ol>
+ <li>Number 1</li>
+ <li>Number 2</li>
+</ol>
+
+
+
+
+
+ Number 1
+ Number 2
+
+
+
+
+ Paragraphs
+
+
+<p>Paragraph 1</p>
+<p>Paragraph 2</p>
+
+
+
+ Paragraph 1
+ Paragraph 2
+
+
+
+ Preformatted Text
+
+<pre>
+ Text in a pre element
+ is displayed in a fixed-width
+ font, and it preserves
+ both spaces and
+ line breaks
+</pre>
+
+
+
+Text in a pre element
+is displayed in a fixed-width
+font, and it preserves
+both spaces and
+line breaks
+
+
+
+
+ Strong
+
+ <strong>This text is important!</strong>
+
+
+ This text is important!
+
+
+
+ Subscript
+
+ This text contains <sub>subscript</sub> text.
+
+
+ This text contains subscript text.
+
+
+
+ Superscript
+
+ E = mc<sup>2</sup>
+
+
+ E = mc2
+
+
+
+ Tables
+
+<table>
+ <thead>
+ <tr>
+ <td>Col 1</td>
+ <td>Col 2</td>
+ <td>Col 3</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>1</td>
+ <td>2</td>
+ <td>3</td>
+ </tr>
+ <tr>
+ <td>4</td>
+ <td>5</td>
+ <td>6</td>
+ </tr>
+ </tbody>
+</table>
+
+
+
+
+
+ Col 1
+ Col 2
+ Col 3
+
+
+
+
+ 1
+ 2
+ 3
+
+
+ 4
+ 5
+ 6
+
+
+
+
+
+
+ Marquee
+
+ <marquee direction="up" behavior="scroll" scrollamount="10" height="100">
+ This is a sample scrolling text that has scrolls in the upper direction.
+ </marquee>
+
+
+
+ This is a sample scrolling text that has scrolls in the upper direction.
+
+
+
+
+ Links
+
+ This is a <a href='https://www.w3schools.com/tags/tag_a.asp'>link</a>
+
+
+ This is a link
+
+
+
+ Images
+
+ <img src="https://i.imgur.com/SwVuagI_d.webp" width="200">
+
+
+
+
+
+
+
+
+
Allowed Attributes
+
+
+
+
+ Name
+
+
+
+
+ href
+
+
+ style
+
+
+ src
+
+
+ class
+
+
+ title
+
+
+ direction
+
+
+ behavior
+
+
+ scrollamount
+
+
+
+
+
Allowed Styles
+
+
+
+
+ Name
+
+
+
+
+ color
+
+
+ background-color
+
+
+ font-weight
+
+
+ transform
+
+
+ -webkit-transform
+
+
+
+
+{% include "expanded_image_modal.html" %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/gif_modal.html b/files/templates/CHRISTMAS/gif_modal.html
new file mode 100644
index 000000000..98a160890
--- /dev/null
+++ b/files/templates/CHRISTMAS/gif_modal.html
@@ -0,0 +1,23 @@
+
diff --git a/files/templates/header-tw.html b/files/templates/CHRISTMAS/header-tw.html
similarity index 94%
rename from files/templates/header-tw.html
rename to files/templates/CHRISTMAS/header-tw.html
index 5219b14bc..20af72dae 100644
--- a/files/templates/header-tw.html
+++ b/files/templates/CHRISTMAS/header-tw.html
@@ -33,8 +33,8 @@
@@ -125,8 +125,8 @@
-
+
{{v.coins}} {{'COINS_NAME' | app_config}}
{% if v.procoins %}
-
+
{{v.procoins}} MarseyBux
{% endif %}
diff --git a/files/templates/CHRISTMAS/header.html b/files/templates/CHRISTMAS/header.html
new file mode 100644
index 000000000..357ba31bc
--- /dev/null
+++ b/files/templates/CHRISTMAS/header.html
@@ -0,0 +1,229 @@
+
+ {% if "rama" in request.host %}
+
+ {% endif %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% if v and v.admin_level > 0 %}
+
+ {% endif %}
+ {% if v %}
+
+ {% else %}
+
+ {% endif %}
+
+
+ {% if v and v.notifications_count %}
+ {{v.notifications_count}}
+ {% endif %}
+
+
+
+
+
+
+
+
+
+ {% if v and v.admin_level > 1 %}
+
+
+
+ {% endif %}
+
+ {% if v %}
+
+ {% if v.notifications_count %}
+
+
+ {{v.notifications_count}}
+
+
+ {% else %}
+
+
+
+
+
+ {% endif %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Invite friends
+
+
+
+
+
+
+ {% else %}
+
+ Contact us
+
+
+ Sign in
+
+
+ Sign up
+
+ {% endif %}
+
+
+
+
+
+
+
+
+
+
+
+
+{% if v %}
+
{{v.formkey}}
+{% endif %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/home.html b/files/templates/CHRISTMAS/home.html
new file mode 100644
index 000000000..a722ca358
--- /dev/null
+++ b/files/templates/CHRISTMAS/home.html
@@ -0,0 +1,109 @@
+{% extends "default.html" %}
+
+{% block subHeader %}
+
+
+
+
+
+ Home
+
+
+ {{ sort }}
+ posts {{ 'from all time' if t=='all' else 'in the last' }}
+ {% if t != 'all' %}{{ t }}{% endif %}
+
+
+
+ {% include "/dropdowns/SubmissionSorts.html" %}
+
+
+
+{% endblock %}
+
+{% block desktopBanner %}
+{% endblock %}
+
+{% block content %}
+
+
+
+ {% include "submission_listing.html" %}
+
+
+ {% if listing %}
+
+
+
+ {% endif %}
+
+
+{% endblock %}
+
+
+{% block sidebar %}
+ {% include "/sidebars/HomeSidebar.html" %}
+{% endblock %}
+
+{% block modals %}
+ {% if v %}
+ {% include "award_modal.html" %}
+ {% endif %}
+
+ {% if v.agendaposter %}
+
VIDEO
+ {% endif %}
+{% endblock %}
+
+{% block scripts %}
+
+{% if v %}
+
+
+{% endif %}
+
+
+
+{% if not v.fp %}
+
+{% endif %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/home_comments.html b/files/templates/CHRISTMAS/home_comments.html
new file mode 100644
index 000000000..1e11740f5
--- /dev/null
+++ b/files/templates/CHRISTMAS/home_comments.html
@@ -0,0 +1,50 @@
+{% extends "default.html" %}
+
+{% block subHeader %}
+
+
+
+
+
+ Comments
+
+
+ {{ sort }}
+ comments {{ 'from all time' if t=='all' else 'in the last' }}
+ {% if t != 'all' %}{{ t }} {% endif %}
+
+
+
+ {% include "/dropdowns/SubmissionSorts.html" %}
+
+
+
+{% endblock %}
+
+{% block content %}
+
+
+ {% include "comments.html" %}
+
+
+
+
+ {% if page>1 %}
+
+
+ Prev
+
+
+ {% else %}
+ Prev
+ {% endif %}
+ {% if next_exists %}
+
+ Next
+
+ {% else %}
+ Next
+ {% endif %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/leaderboard.html b/files/templates/CHRISTMAS/leaderboard.html
new file mode 100644
index 000000000..8e7f053c1
--- /dev/null
+++ b/files/templates/CHRISTMAS/leaderboard.html
@@ -0,0 +1,297 @@
+{% extends "default.html" %}
+
+{% block pagetitle %}Leaderboard{% endblock %}
+
+{% block subHeader %}
+
+
+
+
+
+ Leaderboards
+
+
+ In-depth analysis of our most terminally online members' careers.
+
+
+
+
+
+{% endblock %}
+
+{% block content %}
+
+
+
+ rDrama's 25 Greediest Members
+
+
+
+ {% for user in users1 %}
+
+
+
+ {{users1.index(user)+1}}
+
+
+
+ {% if users1.index(user)+1 == 1 %}
+
+ {% endif %}
+
+
+
+
+
+ {{user.coins}}
+
+
+
+ {% endfor %}
+
+
+
+
+
+ rDrama's 20 Top Spenders
+
+
+
+ {% for user in users7 %}
+
+
+
+ {{users7.index(user)+1}}
+
+
+
+ {% if users7.index(user)+1 == 1 %}
+
+ {% endif %}
+
+
+
+
+
+ {{user.coins_spent}}
+
+
+
+ {% endfor %}
+
+
+
+
+
+ rDrama's 15 Most Popular
+
+
+
+ {% for user in users2 %}
+
+
+
+ {{users2.index(user)+1}}
+
+
+
+ {% if users2.index(user)+1 == 1 %}
+
+ {% endif %}
+
+
+
+
+
+ {{user.stored_subscriber_count}}
+
+
+
+ {% endfor %}
+
+
+
+
+
+ rDrama's 10 Most Terminally Online (Posts)
+
+
+
+ {% for user in users3 %}
+
+
+
+ {{users3.index(user)+1}}
+
+
+
+ {% if users3.index(user)+1 == 1 %}
+
+ {% endif %}
+
+
+
+
+
+ {{user.post_count}}
+
+
+
+ {% endfor %}
+
+
+
+
+
+ rDrama's 10 Most Terminally Online (Comments)
+
+
+
+ {% for user in users4 %}
+
+
+
+ {{users4.index(user)+1}}
+
+
+
+ {% if users4.index(user)+1 == 1 %}
+
+ {% endif %}
+
+
+
+
+
+ {{user.comment_count}}
+
+
+
+ {% endfor %}
+
+
+
+
+
+ rDrama's 10 Biggest Winners
+
+
+
+ {% for user in users5 %}
+
+
+
+ {{users5.index(user)+1}}
+
+
+
+ {% if users5.index(user)+1 == 1 %}
+
+ {% endif %}
+
+
+
+
+
+ {{user.received_award_count}}
+
+
+
+ {% endfor %}
+
+
+{% endblock %}
+
+{% block modals %}
+
+{% include '/awards/Christmas/Snow.html' %}
+{% endblock %}
+
+{% block scripts %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/log.html b/files/templates/CHRISTMAS/log.html
new file mode 100644
index 000000000..9f92df412
--- /dev/null
+++ b/files/templates/CHRISTMAS/log.html
@@ -0,0 +1,127 @@
+{% extends "settings2.html" %}
+
+{% block pagetitle %}Moderation Log{% endblock %}
+
+
+{% block content %}
+{% if v %}
+
+
+ {% if v.agendaposter %}
{% elif v.css %}
{% endif %}
+{% else %}
+
+
+{% endif %}
+
+
+
+
+
+
+
+
+
+
+
+ {% block navbar %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% endblock %}
+
+
+
+
+
+
+ {% for ma in actions %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% else %}
+
There's nothing here right now.
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/login.html b/files/templates/CHRISTMAS/login.html
new file mode 100644
index 000000000..98e051e50
--- /dev/null
+++ b/files/templates/CHRISTMAS/login.html
@@ -0,0 +1,105 @@
+{% set random = range(1, 13)|random() %}
+
+
+
+
+
+
+
+
+
+
+ {% block title %}
+
Login - {{'SITE_NAME' | app_config}}
+ {% endblock %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Username or Email Address
+
+
+
+
+
+
Log in
+
+
+
+
+
+
+
+
+
+ About
+
+
+
+
+ Community Etiquette
+
+
+
+
+ ©2021 Copyright rdrama.net
+
+
+
+
+
+
+
+
+ {% include '/awards/Christmas/Snow.html' %}
+
+
+
+
+
+
+
+
diff --git a/files/templates/CHRISTMAS/login_2fa.html b/files/templates/CHRISTMAS/login_2fa.html
new file mode 100644
index 000000000..047d37925
--- /dev/null
+++ b/files/templates/CHRISTMAS/login_2fa.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
2-Step Login - {{'SITE_NAME' | app_config}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/files/templates/CHRISTMAS/lost_2fa.html b/files/templates/CHRISTMAS/lost_2fa.html
new file mode 100644
index 000000000..a607b969d
--- /dev/null
+++ b/files/templates/CHRISTMAS/lost_2fa.html
@@ -0,0 +1,36 @@
+{% extends "authforms.html" %}
+
+{% block pagetitle %}{{'SITE_NAME' | app_config}} Two-Factor Removal{% endblock %}
+
+{% block authtitle %}Remove the two-factor authentication from your account.{% endblock %}
+
+{% block authtext %}If all information is correct, you will be able to remove 2-factor authentication from your account in 24 hours.{% endblock %}
+
+{% block content %}
+
+
+
+
+
+ Username
+
+
+
+ Password
+
+
+
+ Email
+
+
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/message.html b/files/templates/CHRISTMAS/message.html
new file mode 100644
index 000000000..c306e6e1d
--- /dev/null
+++ b/files/templates/CHRISTMAS/message.html
@@ -0,0 +1,27 @@
+{% extends "default.html" %}
+
+{% block title %}
+
{{title}}
+{% endblock %}
+
+{% block pagetype %}message{% endblock %}
+
+{% block customPadding %}{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
+
+
+
{{title}}
+
{{message if message else error}}
+
Go to homepage
+
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/message_success.html b/files/templates/CHRISTMAS/message_success.html
new file mode 100644
index 000000000..2d9f017b8
--- /dev/null
+++ b/files/templates/CHRISTMAS/message_success.html
@@ -0,0 +1,17 @@
+{% extends "default.html" %}
+
+{% block title %}
+
{{title}}
+{% endblock %}
+
+{% block pagetype %}message-success{% endblock %}
+
+{% block content %}
+
+
+
+
{{title}}
+
{{text}}
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/mine.html b/files/templates/CHRISTMAS/mine.html
new file mode 100644
index 000000000..7c896c14b
--- /dev/null
+++ b/files/templates/CHRISTMAS/mine.html
@@ -0,0 +1,39 @@
+{% extends "home.html" %}
+
+{% block PseudoSubmitForm %}{% endblock %}
+
+
+{% block customPadding %}{% endblock %}
+
+{% block content %}
+
+
+
+
+ {% block maincontent %}
+ {% endblock %}
+
+
+
+{% endblock %}
+
+{% block pagenav %}
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/mobile_navigation_bar.html b/files/templates/CHRISTMAS/mobile_navigation_bar.html
new file mode 100644
index 000000000..884e25742
--- /dev/null
+++ b/files/templates/CHRISTMAS/mobile_navigation_bar.html
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {% if v and v.defaultsorting == 'new' %}
+
+
+
+
+
+
+
+ {% else %}
+
+
+
+
+
+
+
+ {% endif %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% if v %}
+
+
+
+
+
+
+
+ {% else %}
+
+
+
+
+
+
+
+ {% endif %}
+
+
+
diff --git a/files/templates/modals/Modal2FA.html b/files/templates/CHRISTMAS/modals/Modal2FA.html
similarity index 100%
rename from files/templates/modals/Modal2FA.html
rename to files/templates/CHRISTMAS/modals/Modal2FA.html
diff --git a/files/templates/modals/ModalAdminManageUser.html b/files/templates/CHRISTMAS/modals/ModalAdminManageUser.html
similarity index 100%
rename from files/templates/modals/ModalAdminManageUser.html
rename to files/templates/CHRISTMAS/modals/ModalAdminManageUser.html
diff --git a/files/templates/modals/ModalCommentActions.html b/files/templates/CHRISTMAS/modals/ModalCommentActions.html
similarity index 100%
rename from files/templates/modals/ModalCommentActions.html
rename to files/templates/CHRISTMAS/modals/ModalCommentActions.html
diff --git a/files/templates/modals/ModalDeleteAccount.html b/files/templates/CHRISTMAS/modals/ModalDeleteAccount.html
similarity index 100%
rename from files/templates/modals/ModalDeleteAccount.html
rename to files/templates/CHRISTMAS/modals/ModalDeleteAccount.html
diff --git a/files/templates/modals/ModalDirectMessage.html b/files/templates/CHRISTMAS/modals/ModalDirectMessage.html
similarity index 100%
rename from files/templates/modals/ModalDirectMessage.html
rename to files/templates/CHRISTMAS/modals/ModalDirectMessage.html
diff --git a/files/templates/modals/ModalGiftCoins.html b/files/templates/CHRISTMAS/modals/ModalGiftCoins.html
similarity index 100%
rename from files/templates/modals/ModalGiftCoins.html
rename to files/templates/CHRISTMAS/modals/ModalGiftCoins.html
diff --git a/files/templates/modals/ModalReportComment.html b/files/templates/CHRISTMAS/modals/ModalReportComment.html
similarity index 100%
rename from files/templates/modals/ModalReportComment.html
rename to files/templates/CHRISTMAS/modals/ModalReportComment.html
diff --git a/files/templates/modals/ModalSubmissionActions.html b/files/templates/CHRISTMAS/modals/ModalSubmissionActions.html
similarity index 100%
rename from files/templates/modals/ModalSubmissionActions.html
rename to files/templates/CHRISTMAS/modals/ModalSubmissionActions.html
diff --git a/files/templates/modals/ModalSubmissionListingActions.html b/files/templates/CHRISTMAS/modals/ModalSubmissionListingActions.html
similarity index 100%
rename from files/templates/modals/ModalSubmissionListingActions.html
rename to files/templates/CHRISTMAS/modals/ModalSubmissionListingActions.html
diff --git a/files/templates/CHRISTMAS/most_downvoted.html b/files/templates/CHRISTMAS/most_downvoted.html
new file mode 100644
index 000000000..96d023631
--- /dev/null
+++ b/files/templates/CHRISTMAS/most_downvoted.html
@@ -0,0 +1,10 @@
+{% extends "default.html" %}
+{% block content %}
+
+
+
+
+
Most downvoted users
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/notifications.html b/files/templates/CHRISTMAS/notifications.html
new file mode 100644
index 000000000..267eb23aa
--- /dev/null
+++ b/files/templates/CHRISTMAS/notifications.html
@@ -0,0 +1,125 @@
+{% extends "default.html" %}
+
+{% block fixedMobileBarJS %}{% endblock %}
+
+{% block pagetype %}{% endblock %}
+
+{% block subHeader %}
+
+
+
+
+
+
+
+ Mark all as read
+
+
+
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+ {% with comments=notifications %}
+ {% include "comments.html" %}
+ {% endwith %}
+
+
+ {% if not notifications %}
+
+
+
No unread messages
+
+ When someone comments or replies, it will show up here.
+
+
+ View entire inbox
+
+
+ {% endif %}
+
+
+
+{% if notifications %}
+
+
+ {% if page>1 %}
+
+ {% if "?page=" in request.full_path %}
+ {% set path = request.full_path.split("?page=")[0] %}
+ {% elif "&page=" in request.full_path %}
+ {% set path = request.full_path.split("&page=")[0] %}
+ {% else %}
+ {% set path = request.full_path %}
+ {% endif %}
+ {% if request.full_path == "/notifications" %}
+ Previous
+ {% else %}
+ Previous
+ {% endif %}
+
+ {% else %}
+ Prev
+ {% endif %}
+
+ {% if next_exists %}
+
+ {% if "?page=" in request.full_path %}
+ {% set path = request.full_path.split("?page=")[0] %}
+ {% elif "&page=" in request.full_path %}
+ {% set path = request.full_path.split("&page=")[0] %}
+ {% else %}
+ {% set path = request.full_path %}
+ {% endif %}
+ {% if request.full_path == "/notifications" %}
+ Next
+ {% else %}
+ Next
+ {% endif %}
+
+ {% else %}
+ Next
+ {% endif %}
+
+
+{% endif %}
+
+{% endblock %}
+
+{% block GIFpicker %}
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/oauth.html b/files/templates/CHRISTMAS/oauth.html
new file mode 100644
index 000000000..ac93dee3a
--- /dev/null
+++ b/files/templates/CHRISTMAS/oauth.html
@@ -0,0 +1,43 @@
+{% extends "login.html" %}
+
+{% block title %}
+
Application Request for Access
+{% endblock %}
+
+{% block content %}
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/patrons.html b/files/templates/CHRISTMAS/patrons.html
new file mode 100644
index 000000000..0fd9799b2
--- /dev/null
+++ b/files/templates/CHRISTMAS/patrons.html
@@ -0,0 +1,22 @@
+{% extends "settings2.html" %}
+
+{% block content %}
+
+
+
+ #
+ Name
+ Tier
+
+
+{% for u in users %}
+
+ {{loop.index}}
+ {{u.username}}
+
+
+
+{% endfor %}
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/rentoids.html b/files/templates/CHRISTMAS/rentoids.html
new file mode 100644
index 000000000..74897b454
--- /dev/null
+++ b/files/templates/CHRISTMAS/rentoids.html
@@ -0,0 +1,21 @@
+{% extends "default.html" %}
+{% block content %}
+
+
Rentoids
+
+
+
+
+ #
+ Name
+
+
+{% for user in users %}
+
+ {{loop.index}}
+ {{user.username}}
+
+{% endfor %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/report_post_modal.html b/files/templates/CHRISTMAS/report_post_modal.html
new file mode 100644
index 000000000..4d34a7d65
--- /dev/null
+++ b/files/templates/CHRISTMAS/report_post_modal.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
We're sorry something here is wrong.
+
Please enter a reason for reporting below.
+
+
+
+
+ Cancel
+
+
+ Report post
+
+
+
+
+
+
Thank you for reporting this post!
+
By the power of the mop, our internet janitors will take it from here.
+
+
+
+ Close
+
+
+
+
+
+
diff --git a/files/templates/CHRISTMAS/reset_password.html b/files/templates/CHRISTMAS/reset_password.html
new file mode 100644
index 000000000..43d3073b5
--- /dev/null
+++ b/files/templates/CHRISTMAS/reset_password.html
@@ -0,0 +1,33 @@
+{% extends "authforms.html" %}
+
+{% block pagetitle %}{{'SITE_NAME' | app_config}} Password Reset{% endblock %}
+
+{% block authtitle %}Change your password.{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
+
+
+ New Password
+
+
+
+ Confirm New Password
+
+
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/search.html b/files/templates/CHRISTMAS/search.html
new file mode 100644
index 000000000..510f07332
--- /dev/null
+++ b/files/templates/CHRISTMAS/search.html
@@ -0,0 +1,88 @@
+{% extends "default.html" %}
+
+{% block pagetype %}search{% endblock %}
+
+{% block title %}
+
Search for "{{query}}" - {{'SITE_NAME' | app_config}}"
+{% endblock %}
+
+{% block subHeader %}
+
+
+
+
+
+ Search Results: "{{query}}"
+
+
+
+
+ {{ total }}
+ {% if '/users/' in request.path %}
+ user{{ '' if total == 1 else 's' }} found
+ {% else %}
+ {{ sort }} result{{ '' if total == 1 else 's' }} matching
+ "{{query}}" {{ 'from all time' if t=='all' else 'in the last' }}
+ {% if t != 'all' %}{{ t }} {% endif %}
+ {% endif %}
+
+
+
+ {% if not '/users/' in request.path %}
+
+ {% include "/dropdowns/SearchSorts.html" %}
+
+ {% endif %}
+
+
+{% endblock %}
+
+{% block content %}
+
+
+
+ Advanced search parameters (with examples): "author:quadnarca", "domain:reddit.com", "over18:true"
+
+
+
+
+
+
+ {% block listing_template %}
+ {% include "submission_listing.html" %}
+ {% endblock %}
+
+
+{% endblock %}
+
+{% block pagenav %}
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/search_comments.html b/files/templates/CHRISTMAS/search_comments.html
new file mode 100644
index 000000000..0867b69d1
--- /dev/null
+++ b/files/templates/CHRISTMAS/search_comments.html
@@ -0,0 +1,13 @@
+{% extends "search.html" %}
+
+{% block listing_template %}
+
+ {% with comments=comments %}
+ {% include "comments.html" %}
+ {% endwith %}
+
+{% endblock %}
+
+{% block listinglength %}
+{{comments | length}}
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/search_users.html b/files/templates/CHRISTMAS/search_users.html
new file mode 100644
index 000000000..fb4fe4fde
--- /dev/null
+++ b/files/templates/CHRISTMAS/search_users.html
@@ -0,0 +1,9 @@
+{% extends "search.html" %}
+
+{% block listing_template %}
+
+{% include "user_listing.html" %}
+
+{% endblock %}
+
+{% block listinglength %}{{users | length}}{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/settings.html b/files/templates/CHRISTMAS/settings.html
new file mode 100644
index 000000000..46d1cd802
--- /dev/null
+++ b/files/templates/CHRISTMAS/settings.html
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+
+
+
{% block pagetitle %}Settings - {{'SITE_NAME' | app_config}}{% endblock %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% block stylesheets %}
+
+
+
+
+
+
+
+ {% if v %}
+
+
+ {% if v.agendaposter %}
+
+ {% elif v.css %}
+
+ {% endif %}
+ {% else %}
+
+
+ {% endif %}
+
+ {% endblock %}
+
+
+
+
+
+
+
+
+
+ {% include "header-tw.html" %}
+
+
+
+
+
+
+
+
+
+
+ {% if error %}
+
+
+
+ {{error}}
+
+
+
+
+
+ {% endif %}
+ {% if msg %}
+
+
+
+ {{msg}}
+
+
+
+
+
+ {% endif %}
+
+ {% block content %}
+ {% endblock %}
+
+
+ {% include "/sidebars/SettingsSidebar.html" %}
+
+
+
+
+ {% include "footer.html" %}
+
+
+
+ {% block clipboard %}
+
+
+ Link copied to clipboard
+
+
+ {% endblock %}
+
+
+
+
+ Error, please try again later.
+
+
+
+ {% if v %}
+
{{ v.formkey }}
+ {% endif %}
+
+ {% if v %}
+ {% include "/modals/Modal2FA.html" %}
+ {% endif %}
+
+ {% block modals %}{% endblock %}
+
+ {% block onload %}{% endblock %}
+
+ {% block scripts %}{% endblock %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% if v %}
+
+
+ {% endif %}
+
+
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/settings2.html b/files/templates/CHRISTMAS/settings2.html
new file mode 100644
index 000000000..0bbdb2f79
--- /dev/null
+++ b/files/templates/CHRISTMAS/settings2.html
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{% block pagetitle %}{{'SITE_NAME' | app_config}}{% endblock %}
+
+
+ {% if v %}
+
+
+ {% else %}
+
+
+ {% endif %}
+
+
+
+
+
+
+{% include "header.html" %}
+
+{% block subNav %}
+
+{% set mod = (v and v.admin_level > 1) %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
+
+
+
+{% block content %}
+{% endblock %}
+
+
+
+
+
+
+ Link copied to clipboard
+
+
+
+
+
+ Unable to copy link
+
+
+
+
+
+
+ Error, please try again later.
+
+
+
+{% block mobilenavbar %}
+ {% include "mobile_navigation_bar.html" %}
+{% endblock %}
+
+{% block invitationModal %}
+{% endblock %}
+
+{% block exileModal %}
+{% endblock %}
+
+{% block approveModal %}
+{% endblock %}
+
+{% block errorToasts %}
+{% endblock %}
+
+
+
+{% block scripts %}
+{% endblock %}
+
+
+
+
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/settings_apps.html b/files/templates/CHRISTMAS/settings_apps.html
new file mode 100644
index 000000000..ebea4a0e7
--- /dev/null
+++ b/files/templates/CHRISTMAS/settings_apps.html
@@ -0,0 +1,156 @@
+{% extends "settings.html" %}
+
+{% block title %}
+
{{'SITE_NAME' | app_config}} - FAQ
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
+
+
+
Your API Applications
+
+{% for app in v.applications if app.client_id %}
+
+
+
+
+
+{% else %}
+
None
+{% endfor %}
+
+
API Applications Awaiting Approval
+
+{% for app in v.applications if not app.client_id %}
+
+
+
+
+
+{% else %}
+
None
+{% endfor %}
+
+
Your Authorized Applications
+
+{% for auth in v.authorizations %}
+
+
+
+
+ {{auth.application.app_name}}
+
+
+
+ Description
+ {{auth.application.description}}
+
+
+
+
+{% else %}
+
None
+{% endfor %}
+
+
Request API Keys
+
+
+
+
+
+
+
+{% endblock %}
+
+
+{% block clipboard %}
+
+
+ Token copied to clipboard
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/settings_blocks.html b/files/templates/CHRISTMAS/settings_blocks.html
new file mode 100644
index 000000000..488e037a4
--- /dev/null
+++ b/files/templates/CHRISTMAS/settings_blocks.html
@@ -0,0 +1,124 @@
+{% extends "settings.html" %}
+
+{% block pagetitle %}Block Settings - {{'SITE_NAME' | app_config}}{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
+ {% if error %}
+
+
+
+ {{error}}
+
+
+
+
+
+ {% endif %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Users you block
+
You have blocked the following users. They cannot reply to your content or notify you with a username mention.
+
+
+ Block user
+
+
+
+
+
+ {% if v.blocking.first() %}
+
+
+
+
+ User
+ Blocked since
+
+
+
+
+ {% for block in v.blocking %}
+
+
+
+ @{{block.target.username}}
+
+
+ {{block.created_date}}
+
+
+
+
+
+ {% else %}
+ There are no blocked users
+ {% endfor %}
+
+
+
+ {% else %}
+
+ {% endif %}
+
+
+
+
+
+
+
+
+
+ Error. Please try again.
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/settings_css.html b/files/templates/CHRISTMAS/settings_css.html
new file mode 100644
index 000000000..8daddd41c
--- /dev/null
+++ b/files/templates/CHRISTMAS/settings_css.html
@@ -0,0 +1,58 @@
+{% extends "settings.html" %}
+
+{% block pagetitle %}Custom CSS - {{'SITE_NAME' | app_config}}{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
Custom site CSS
+
+
+
+ {% if v.css %}{{v.csslazy}}{% endif %}
+
+ Limit of 4000 characters
+
+
+
+
+
+
+
+
+
+
+
Custom profile CSS
+
+
+
+ {% if v.profilecss %}{{v.profilecss}}{% endif %}
+
+ Limit of 4000 characters
+
+
+
+
+
+
+
+
+
+{% endblock %}
+
+{% block scripts %}
+{% if v.agendaposter %}
+
+{% endif %}
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/settings_filters.html b/files/templates/CHRISTMAS/settings_filters.html
new file mode 100644
index 000000000..6062fee2c
--- /dev/null
+++ b/files/templates/CHRISTMAS/settings_filters.html
@@ -0,0 +1,394 @@
+{% extends "settings.html" %}
+
+{% block pagetitle %}Profile Settings - {{'SITE_NAME' | app_config}}{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
+ {% if v.grinch %}
+
+
Grinch Mode
+
+
+
+
+
+
+ Disable holigay music.
+
+
+
+
+
+ {% endif %}
+
+
Highlight New Comments
+
+
+
+
+
+
+ Highlight new comments with a red dot since your last visit to a thread.
+
+
+
+
+
+
Card view
+
+
+
+ View posts in a larger, card format.
+
+
+
Frontpage Size
+
+
+
+
+ Frontpage Size
+
+
+
+
Change how many posts appear on every page.
+
+
+ {% for entry in [25, 50, 100] %}
+ {{entry}}
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
Default Sorting and Time Filter
+
+
+
+
+
+ Default Sorting for Comments
+
+
+
+
Change the default sorting for comments.
+
+
+
+
+
+
+
+
+
+
+ Default Sorting for Posts
+
+
+
+
Change the default sorting for posts.
+
+
+ {% for entry in ["hot", "new", "old", "top", "bottom", "controversial", "comments"] %}
+ {{entry}}
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+ Default Time Filter for Posts
+
+
+
+
Change the default time filter for posts.
+
+
+ {% for entry in ["hour", "day", "week", "month", "year", "all"] %}
+ {{entry}}
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
Tab Behaviour
+
+
+
+
+
+
+ Open Threads In New Tabs
+
+
+
+
+
+
+
+
+
+
+ Open External Links In New Tabs
+
+
+
+
+
+
+
+
+
+
+
+
Twitter Links
+
+
+
+
+
+
+ Use Nitter
+
+
+
+
+
+
+
+
+
+
Reddit Links
+
+
+
+
+
+
+ Use Teddit.net
+
+
+
+
+
+
+
+
+
+ Use Old Reddit
+
+
+
+
+
+
+
+
+
+ Sort by Controversial
+
+
+
+
+
+
+
+
Content Filters
+
+
+
+
+
+
+
+ Disable signatures
+
+
+
+
+
+
+
+
+
+
+
+ Disable +18 Warnings
+
+
+
+
+
+
+
+
+
+
+
+ Slur Replacer
+
+
+
+
+
+
+
+
+
+
+ Hide Posts Voted On
+
+
+
+
+
+
+
+
+
+ Custom Filters
+
+
+
+
+
+ Hides matching posts from the frontpage and collapses matching comments.
+
+ {% if v.custom_filter_list %}{{v.custom_filter_list}}{% endif %}
+
+
+ Use a new line for each filter entry. Limit of 1000 characters.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/settings_profile.html b/files/templates/CHRISTMAS/settings_profile.html
new file mode 100644
index 000000000..80365b563
--- /dev/null
+++ b/files/templates/CHRISTMAS/settings_profile.html
@@ -0,0 +1,429 @@
+{% extends "settings.html" %}
+
+{% block pagetitle %}Profile Settings - {{'SITE_NAME' | app_config}}{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
Avatar
+
+
+
+
+
+
+
+
+
+
+ Change avatar
+
+
+
+ {% if v.profileurl %}
+
+
+
+
+
+ Delete
+
+
+
+ {% endif %}
+
+
+
+ JPG, PNG, GIF files are supported. Max file size is {% if v and v.patron %}8{% else %}4{% endif %} MB.
+
+
+
+
+
+
+
Banner
+
+
+
+
+
+
+
+
+
+
+ Change banner
+
+
+
+ {% if v.bannerurl %}
+
+
+
+
+
+ Delete
+
+
+
+ {% endif %}
+
+
+
+ JPG, PNG, GIF files are supported. Max file size is {% if v and v.patron %}8{% else %}4{% endif %} MB.
+
+
+
+
+
+
+
+
+
+
Linked accounts
+
+
+ {% if v.discord_id %}
+
+
+
+
+
+ Disconnecting your Discord account will remove you from the {{'SITE_NAME' | app_config}} Discord server.
+
+ {% else %}
+
+
+ Link your Discord account to join the {{'SITE_NAME' | app_config}} Discord server.
+
+ {% endif %}
+
+
+
+
+
+
+
+
Referral code
+
+
+ You have referred {{v.referral_count}} members.
+ Learn more .
+
+
+
+
RSS Feed
+
+
+ You can change the feed by replacing hot with whatever sorting you want and all with whatever time filter you want.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% if not v.flairchanged %}
+
+
+ {% endif %}
+
+
+
+
+ {% if v.verified %}
+
+
+ {% endif %}
+
+
+
+
Bio
+
+
+
+ {% if v.bio %}{{v.bio}}{% endif %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GIF
+
+
+
+
+
+
+
+
+ Limit of 1500 characters
+
+
+
+
+
+
+
+
+
+
+
Privacy
+
+
+ Hide my posts and comments from others and search engines.
+
+
+
+ Prevent other users from following you.
+
+
+
+
+
+
+
+
Friends
+
+
+ {% if v.friends %}{{v.friends}}{% endif %}
+ Limit of 500 characters
+
+
+
+
+
+
+
Enemies
+
+
+ {% if v.enemies %}{{v.enemies}}{% endif %}
+ Limit of 500 characters
+
+
+
+
+
+
+
+
+
+ {% if v.patron or v.id == 1904 %}
+
+
Signature
+
+
+
+
+
+ {% if v.sig %}{{v.sig}}{% endif %}
+
+
+
+
+ Limit of 200 characters
+
+
+
+
+
+
+ {% endif %}
+
+
+
+{% endblock %}
+
+{% block modals %}
+{% include "emoji_modal.html" %}
+{% include "gif_modal.html" %}
+{% endblock %}
+
+
+{% block scripts %}
+
+
+
+
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/settings_profilecss.html b/files/templates/CHRISTMAS/settings_profilecss.html
new file mode 100644
index 000000000..241b10d39
--- /dev/null
+++ b/files/templates/CHRISTMAS/settings_profilecss.html
@@ -0,0 +1,41 @@
+{% extends "settings.html" %}
+
+{% block pagetitle %}Custom profilecss - {{'SITE_NAME' | app_config}}{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
+
+
+
Edit your profile css.
+
+
+
+
+
+
+
+ {% if v.profilecss %}{{v.profilecss}}{% endif %}
+ Limit of 4000 characters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/settings_security.html b/files/templates/CHRISTMAS/settings_security.html
new file mode 100644
index 000000000..4848b646d
--- /dev/null
+++ b/files/templates/CHRISTMAS/settings_security.html
@@ -0,0 +1,272 @@
+{% extends "settings.html" %}
+
+{% block pagetitle %}Security Settings - {{'SITE_NAME' | app_config}}{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
Email
+
+
Change the email address used to sign in to your account.
+
+
+
+
+
+
Email
+
+
+ {% if v.email and not v.is_activated %}
+
Email not verified. You will not be able to recover your account with this email until you verify it.
Verify now.
+ {% elif not v.email %}
+
Add an email to secure your account in case you forget your password.
+ {% endif %}
+
+
+
+
Password
+
+
+ Password required to update your email.
+
+
+
Password required to update your email.
+
+
+
+
+
+
+
+
Password
+
+
Change your account password.
+
+
+
+
+
Two-Factor Authentication
+
+
Change the two-factor settings for your account.
+
+
+
+
+
+
+ Use 2-step login
+
+
+
+
+
+
+
+
+
+
+ This requires entering a randomly-generated, 6-digit code and your password to login. See Google Authenticator or Authy for more details.
+
+
+
+
+
+
+
+
+
Log Out Everywhere
+
+
Log all other devices out of your {{'SITE_NAME' | app_config}} account.
+
+
+
+
+
+
+
+
+
+
+
Password
+
+
+
+
+
+
+
+
+
+
This will also invalidate any existing recovery links associated with this account.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
+
+{% block scripts %}
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/shadowbanned.html b/files/templates/CHRISTMAS/shadowbanned.html
new file mode 100644
index 000000000..66b08b87f
--- /dev/null
+++ b/files/templates/CHRISTMAS/shadowbanned.html
@@ -0,0 +1,21 @@
+{% extends "settings2.html" %}
+
+{% block content %}
+
+
+
+ #
+ Name
+ Shadowbanned by
+
+
+{% for user in users %}
+
+ {{loop.index}}
+ {{user.username}}
+ {{user.shadowbanned}}
+
+{% endfor %}
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/shop.html b/files/templates/CHRISTMAS/shop.html
new file mode 100644
index 000000000..2a4da0e69
--- /dev/null
+++ b/files/templates/CHRISTMAS/shop.html
@@ -0,0 +1,174 @@
+{% extends "default.html" %}
+
+{% block title %}
+
Shop
+{% endblock %}
+
+{% block subHeader %}
+
+
+
+
+
+ rDrama's Holigay Emporium
+
+
+ Stir drama. Earn coins.
+
+
+
+
+
+ {{v.coins}}
+
+ your balance
+
+
+
+ {{v.coins_spent}}
+
+ spent by you
+
+
+
+ {{sales}}
+
+ total sales
+
+
+
+
+{% endblock %}
+
+{% block content %}
+
+ {% if error %}
+
+
+
+ {{error}}
+
+
+
+
+
+ {% endif %}
+ {% if msg %}
+
+
+
+ {{msg}}
+
+
+
+
+
+ {% endif %}
+
+
+
+
+
+
+
+
+
+
+
+
+ Item
+
+
+ Description
+
+
+ Price
+
+
+ Owned
+
+
+ Buy
+
+
+
+
+ {% for a in awards %}
+
+
+
+
+
+
+
+
+ {{a['title']}}
+
+
{{a['kind']}}
+
+
+
+
+ {{a['description']}}
+
+
+
+
+ {{a['price']}}
+
+
+
+ {{a['owned']}}
+
+ {% set kind = a['kind'] %}
+
+
+ Buy
+
+ {% if v.procoins and a['price'] < 3600 %}
+
+ Buy with MarseyBux
+
+ {% endif %}
+
+
+ {% endfor %}
+
+
+
+
+
+
+
+
+{% endblock %}
+
+{% block modals %}
+
+{% include '/awards/Christmas/Snow.html' %}
+{% endblock %}
+
+{% block scripts %}
+
+
+{% endblock %}
diff --git a/files/templates/sidebars/HomeSidebar.html b/files/templates/CHRISTMAS/sidebars/HomeSidebar.html
similarity index 87%
rename from files/templates/sidebars/HomeSidebar.html
rename to files/templates/CHRISTMAS/sidebars/HomeSidebar.html
index e9fdce648..c637f4794 100644
--- a/files/templates/sidebars/HomeSidebar.html
+++ b/files/templates/CHRISTMAS/sidebars/HomeSidebar.html
@@ -8,7 +8,7 @@
-
+
@@ -21,7 +21,7 @@
-
+
@@ -34,7 +34,7 @@
-
+
diff --git a/files/templates/sidebars/SubmitSidebar.html b/files/templates/CHRISTMAS/sidebars/SubmitSidebar.html
similarity index 100%
rename from files/templates/sidebars/SubmitSidebar.html
rename to files/templates/CHRISTMAS/sidebars/SubmitSidebar.html
diff --git a/files/templates/CHRISTMAS/sign_up.html b/files/templates/CHRISTMAS/sign_up.html
new file mode 100644
index 000000000..3ae86022c
--- /dev/null
+++ b/files/templates/CHRISTMAS/sign_up.html
@@ -0,0 +1,167 @@
+{% set random = range(1, 13)|random() %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% if ref_user %}{{ref_user.username}} invites you to {{'SITE_NAME' | app_config}}{% else %}Sign up - {{'SITE_NAME' | app_config}}{% endif %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% if ref_user %}
+
@{{ref_user.username}} has invited you!
+
Looks like someone wants you to join {{'SITE_NAME' | app_config}}.
+ {% endif %}
+
+
+
+
+
+
+
+ {% if error %}{{error}}
{% endif %}
+
+
+
+
+ {% if redirect %}
+ {% endif %}
+ {% if ref_user %}
+ {% endif %}
+
+
+
+
+
+
+
+ Username
+
+
+
+
+
+
+ Email Address (optional)
+
+
+
+
+
+ Password
+
+
+ Minimum of 8 characters required.
+
+
+ Your password meets the requirements.
+
+
+
+
+
+ {% if hcaptcha %}
+
+ {% endif %}
+
+
+ Create account
+
+
+
+
+
+
+
+
+
+
+ About
+
+
+
+
+ Community Etiquette
+
+
+
+
+ ©2021 Copyright rdrama.net
+
+
+
+
+
+
+
+
+ {% include '/awards/Christmas/Snow.html' %}
+
+
+
+
+
+ {% if hcaptcha %}
+
+ {% endif %}
+
+
+
+
+
+
diff --git a/files/templates/CHRISTMAS/sign_up_failed_ref.html b/files/templates/CHRISTMAS/sign_up_failed_ref.html
new file mode 100644
index 000000000..a22875866
--- /dev/null
+++ b/files/templates/CHRISTMAS/sign_up_failed_ref.html
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% if ref_user %}{{ref_user.username}} invites you to {{'SITE_NAME' | app_config}}{% else %}{{'SITE_NAME' | app_config}}{% endif %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Link copied to clipboard
+
+
+
+
+
+
diff --git a/files/templates/CHRISTMAS/submission.html b/files/templates/CHRISTMAS/submission.html
new file mode 100644
index 000000000..6c2c3a2b5
--- /dev/null
+++ b/files/templates/CHRISTMAS/submission.html
@@ -0,0 +1,657 @@
+{% extends "default.html" %}
+
+{% set ups=p.upvotes %}
+{% set downs=p.downvotes %}
+{% set score=ups-downs %}
+
+{% if v %}
+{% set voted=p.voted if p.voted else 0 %}
+{% else %}
+{% set voted=-2 %}
+{% endif %}
+
+{% block title %}
+
+{% if 'rama' not in request.host %}
+
+
+{% if v %}
+
+{% endif %}
+
+{% endif %}
+
+
+
+
+{% if comment_info and not comment_info.is_banned and not linked_comment.deleted_utc > 0 %}
+{{'@'+comment_info.author.username}} comments on "{{p.plaintitle(v)}} - {{'SITE_NAME' | app_config}}"
+
+
+
+
+{% if comment_info.edited_utc %} {% endif %}
+
+
+
+
+{% if p.url and p.url.lower().endswith('.mp4') %}
+
+{% endif %}
+
+
+
+
+
+
+
+
+
+
+
+{% if linked_comment.author.is_private %}
+
+{% endif %}
+
+{% else %}
+{{p.plaintitle(v)}} - {{'SITE_NAME' | app_config}}
+
+
+{% if p.author %} {% endif %}
+
+{% if p.edited_utc %} {% endif %}
+
+{% if p.author %} {% endif %}
+
+
+{% if p.url and p.url.lower().endswith('.mp4') %}
+
+{% endif %}
+
+
+
+
+
+
+{% if p.author %} {% endif %}
+
+
+
+
+{% if p.author.is_private %}
+
+{% endif %}
+
+{% endif %}
+{% endblock %}
+
+{% block pagetype %}thread{% endblock %}
+
+{% block subHeader %}
+
+{% endblock %}
+
+{% block content %}
+
+
+
+{% if (p.is_banned and p.ban_reason) or (p.bannedfor and p.author.banned_by) %}
+
+
+
+ {% if p.is_banned and p.ban_reason %}
+
+
+
+ Removed by @{{p.ban_reason}}
+
+
+ {% endif %}
+
+ {% if p.bannedfor and p.author.banned_by %}
+
+
+
+ Author was banned for this post by
+ @{{p.author.banned_by.username}}
+
+
+ {% endif %}
+
+{% endif %}
+
+{% if p.awards or p.over_18 or p.stickied or p.is_pinned or p.private or p.flair or p.club %}
+
+
+
+
+ {% if p.flair %}
+
+
+ {{p.flair | safe}}
+
+
+ {% endif %}
+
+ {% if p.over_18 %}
+
+ +18
+
+ {% endif %}
+
+ {% if p.club %}
+
+ Country Club
+
+ {% endif %}
+
+ {% if p.stickied %}
+
+
+
+ Pinned {% if p.stickied.startswith('t:') %}until {{p.stickied[2:]}}{% else %}by @{{p.stickied}}{%endif%}
+
+
+ {% endif %}
+
+ {% if p.is_pinned %}
+
+
+
+ Pinned to profile
+
+
+ {% endif %}
+
+ {% if p.private %}
+
+
+
+ Draft
+
+
+ {% endif %}
+
+ {% if p.awards %}
+ {% for a in p.awards %}
+
+
+
+ {% endfor %}
+ {% endif %}
+
+
+{% endif %}
+
+
+
+
+
+
+
+ {% if not p.is_image and p.thumb_url and not p.embed_url %}
+
+ {% endif %}
+
+
+
+
+
+ {% if p.active_flags %}
+
+
Reported by:
+
+
+ {% for f in p.ordered_flags %}
+ {{f.user.username}} {% if f.reason %}: {{f.reason | safe}}{% endif %} {% if v.admin_level==6 %}[remove] {% endif %}
+ {% endfor %}
+
+
+ {% endif %}
+
+
+
+
+
+
+ {% if p.realurl(v) %}
+
+ {{p.realtitle(v) | safe}}
+
+ {% else %}
+ {{p.realtitle(v) | safe}}
+ {% endif %}
+
+
+
+
+ {% if p.realurl(v) %}
+ {% if "streamable.com/" in p.realurl(v) %}
+
+
+ {% elif "spotify.com/" in p.realurl(v) %}
+ {% if "spotify.com/embed/" in p.realurl(v) %}
+ {% set streamurl=p.realurl(v) %}
+ {% else %}
+ {% set streamurl=p.realurl(v).replace("spotify.com", "spotify.com/embed") %}
+ {% endif %}
+
+
+
+ {% elif not p.embed_url and not p.is_image and not (p.url and p.url.lower().endswith('.mp4')) %}
+
+
+ {{p.domain|truncate(30, True)}}
+
+
+
+ {% endif %}
+ {% endif %}
+
+ {% if p.is_image %}
+
+
+
+ {% elif p.url and p.url.lower().endswith('.mp4') %}
+
+
+
+ {% endif %}
+
+ {{p.realbody(v) | safe}}
+
+
+ {% if p.options.count() %}
+ {% include "Poll.html" %}
+ {% endif %}
+
+
+ {% if p.bet_options.count() %}
+ {% include "Bets.html" %}
+ {% endif %}
+
+
+
+ {% if p.embed_url %}
+ {% if p.domain == "twitter.com" %}
+ {{p.embed_url | safe}}
+ {% if v and v.theme.split("_")[0] in ["light", "coffee", "4chan"] %}
+
+ {% else %}
+
+ {% endif %}
+
+ {% elif "youtu" in p.domain %}
+ {% if 'lite' in p.embed_url %}
+ {{p.embed_url | safe}}
+ {% else %}
+
+
+
+ {% endif %}
+ {% endif %}
+ {% endif %}
+
+ {% if p.author.sig_html and (p.author_id == 1904 or not (v and v.sigs_disabled)) %}
+
+ {{p.author.sig_html | safe}}
+ {% endif %}
+
+
+ {% if v and (v.id==p.author_id or v.admin_level > 1 and v.admin_level > 2) %}
+
+ {% include "/submission/SubmissionEditForm.html" %}
+
+ {% endif %}
+
+ {% if p.embed_url and "http" not in p.embed_url and "<" not in p.embed_url %}
+
+
+
+
+ {{ p.embed_url | post_embed(v) | safe }}
+
+
+
+
+ {% endif %}
+
+
+
+
+
+ {% include "/submission/SubmissionActions.html" %}
+
+
+
+
+
+
+
+
+
+
+
+
+ {% if v and request.path.startswith('/@') and not v.admin_level %}
+ {% if voted==1 %}
+
+ {% endif %}
+
+
{{score}}
+
+ {% if voted==-1 %}
+
+ {% endif %}
+
+ {% elif v %}
+
+
+
+
{{score}}
+
+
+
+ {% else %}
+
+
+
+
{{score}}
+
+
+ {% endif %}
+
+
+
+
+
+
+
+ {% include "/submission/SubmissionActionsMobile.html" %}
+
+
+
+
+ {% if not p.is_image and not (p.url and p.url.lower().endswith('.mp4')) %}
+
+ {% endif %}
+
+
+
+
+
+
+
+ {{ p.comment_count }} {{ 'Response' if p.comment_count == 1 else 'Responses' }}
+
+
+ {% if linked_comment and p.comment_count >= 2%}
+
+ View entire thread
+
+ {% endif %}
+
+
+
+
+ {% if v %}
+
+ {% endif %}
+
+ {% if not v and not p.is_banned %}
+
+ {% endif %}
+
+ {% if p.replies %}
+
+ {% elif not p.replies and p.deleted_utc == 0 %}
+
+ {% endif %}
+
+ {% if offset %}
+
+ {% endif %}
+
+
+
+
+
+ {% endblock %}
+
+
+{% block sidebar %}
+ {% include "/sidebars/SubmissionSidebar.html" %}
+{% endblock %}
+
+{% block modals %}
+ {% if v %}
+ {% if v.id == p.author_id %}
+ {% include "delete_post_modal.html" %}
+ {% endif %}
+
+ {% include "report_post_modal.html" %}
+ {% include "award_modal.html" %}
+ {% include "emoji_modal.html" %}
+ {% include "gif_modal.html" %}
+
+ {% if v.admin_level == 6 %}
+ {% include "ban_modal.html" %}
+ {% endif %}
+ {% endif %}
+
+ {% include "/modals/ModalSubmissionActions.html" %}
+ {% include "expanded_image_modal.html" %}
+{% endblock %}
+
+{% block scripts %}
+
+ {% include "/submission/SubmissionAwards.html" %}
+
+ {% if v %}
+
+ {% if not p.comment_count %}
+
+ {% endif %}
+ {% endif %}
+
+ {% if v and (v.id == p.author_id or v.admin_level > 1 and v.admin_level > 2) %}
+
+ {% endif %}
+
+ {% if not v or v.highlightcomments %}
+
+ {% endif %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/submission/SubmissionActions.html b/files/templates/CHRISTMAS/submission/SubmissionActions.html
similarity index 100%
rename from files/templates/submission/SubmissionActions.html
rename to files/templates/CHRISTMAS/submission/SubmissionActions.html
diff --git a/files/templates/submission/SubmissionActionsMobile.html b/files/templates/CHRISTMAS/submission/SubmissionActionsMobile.html
similarity index 100%
rename from files/templates/submission/SubmissionActionsMobile.html
rename to files/templates/CHRISTMAS/submission/SubmissionActionsMobile.html
diff --git a/files/templates/submission/SubmissionAwards.html b/files/templates/CHRISTMAS/submission/SubmissionAwards.html
similarity index 80%
rename from files/templates/submission/SubmissionAwards.html
rename to files/templates/CHRISTMAS/submission/SubmissionAwards.html
index 8bb693638..fcdc4bb61 100644
--- a/files/templates/submission/SubmissionAwards.html
+++ b/files/templates/CHRISTMAS/submission/SubmissionAwards.html
@@ -5,12 +5,12 @@
{% if p.award_count("shit") %}
-
+
{% set minbugs = 10*p.award_count("shit") if p.award_count("shit") < 3 else 20 %}
{% set maxbugs = 20*p.award_count("shit") if p.award_count("shit") < 3 else 40 %}
+
{% set minbugs = 10*p.award_count("fireflies") if p.award_count("fireflies") < 3 else 20 %}
{% set maxbugs = 20*p.award_count("fireflies") if p.award_count("fireflies") < 3 else 40 %}
+
{% elif p.award_count("fireplace")%}
-
+
{% else %}
-
+
{% endif %}
{% endif %}
{% if not v %}
{% if p.award_count("snow") and p.award_count("fireplace") %}
-
+
{% elif p.award_count("fireplace")%}
-
+
{% else %}
-
+
{% endif %}
{% endif %}
diff --git a/files/templates/submission/SubmissionEditForm.html b/files/templates/CHRISTMAS/submission/SubmissionEditForm.html
similarity index 100%
rename from files/templates/submission/SubmissionEditForm.html
rename to files/templates/CHRISTMAS/submission/SubmissionEditForm.html
diff --git a/files/templates/submission/SubmissionListingActions.html b/files/templates/CHRISTMAS/submission/SubmissionListingActions.html
similarity index 100%
rename from files/templates/submission/SubmissionListingActions.html
rename to files/templates/CHRISTMAS/submission/SubmissionListingActions.html
diff --git a/files/templates/CHRISTMAS/submission_banned.html b/files/templates/CHRISTMAS/submission_banned.html
new file mode 100644
index 000000000..420c5cf01
--- /dev/null
+++ b/files/templates/CHRISTMAS/submission_banned.html
@@ -0,0 +1,138 @@
+{% extends "submission.html" %}
+
+{% set score=p.score %}
+{% if v %}
+{% set voted=p.voted %}
+{% set adjust=voted %}
+{% else %}
+{% set voted=-2 %}
+{% set adjust=0 %}
+{% endif %}
+
+{% block title %}
+{{p.plaintitle(v)}}
+{% if p.is_banned %}
+
+{% else %}
+
+{% endif %}
+{% endblock %}
+
+{% block adminpanel %}
+{% if v.admin_level > 1 %}
+
+
+
+
+{% endif %}
+{% if v.admin_level > 0 and v.id==p.author_id %}
+
+
+
+
+{% endif %}
+{% if v.admin_level > 1 and v.admin_level > p.author.admin_level %}
+{% if p.is_banned %}
+
+
+
+
+{% else %}
+
+
+
+
+{% endif %}
+{% endif %}
+Score: +{{p.upvotes}}/-{{p.downvotes}}
+{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
{% if p.over_18 %}+18 {% endif %}{% if p.is_banned %}removed by @{{p.ban_reason}}{% else %}[Deleted by user]{% endif %}
+
{{p.plaintitle(v)}}
+
{% if p.over_18 %}+18 {% endif %}{% if p.is_banned %}removed by @{{p.ban_reason}}{% else %}[Deleted by user]{% endif %}
+
+
+
+
+
+
+
+ {% if v and v.admin_level > 1 and p.body_html %}
+
+ {{p.body_html | safe}}
+
+ {% endif %}
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
+
+{% block mobileactions %}
+
+
+
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/submission_listing.html b/files/templates/CHRISTMAS/submission_listing.html
new file mode 100644
index 000000000..19c4c137f
--- /dev/null
+++ b/files/templates/CHRISTMAS/submission_listing.html
@@ -0,0 +1,399 @@
+{% if v %}
+ {% include "award_modal.html" %}
+{% endif %}
+
+{% for p in listing %}
+
+{% set ups=p.upvotes %}
+{% set downs=p.downvotes %}
+{% set score=ups-downs %}
+
+{% if v %}
+ {% set voted= p.voted %}
+{% else %}
+ {% set voted=-2 %}
+{% endif %}
+
+{% if request.host == 'pcmemes.net' %}
+ {% set cc='SPLASH MOUNTAIN' %}
+{% else %}
+ {% set cc='COUNTRY CLUB' %}
+{% endif %}
+
+{% if p.active_flags %}
+
+
+ Reported by:
+
+
+ {% for f in p.ordered_flags %}
+
+ {{f.user.username}}
+ {% if f.reason %}: {{f.reason | safe}}{% endif %} {% if v.admin_level==6 %}
+
+ remove
+
+ {% endif %}
+
+ {% endfor %}
+
+
+{% endif %}
+
+
+
+
+
+
+
+
+
+
+ {% if not postembed %}
+
+ {% if v and request.path.startswith('/@') and not v.admin_level %}
+
+ {% if voted==1 %}
+
+ {% endif %}
+
+
{{score}}
+
+ {% if voted==-1 %}
+
+ {% endif %}
+
+ {% elif v %}
+
+
+
+
{{score}}
+
+
+
+ {% else %}
+
+
+
+
{{score}}
+
+
+
+ {% endif %}
+
+ {% endif %}
+
+
+
+
+
+
+
+
+ {% if p.flair %}
+
+
+ {{p.flair | safe}}
+
+
+ {% endif %}
+
+ {% if p.over_18 %}
+
+ +18
+
+ {% endif %}
+
+ {% if p.club %}
+
+ Country Club
+
+ {% endif %}
+
+ {% if p.stickied %}
+
+
+
+ Pinned {% if p.stickied.startswith('t:') %}until {{p.stickied[2:]}}{% else %}by @{{p.stickied}}{%endif%}
+
+
+ {% endif %}
+
+ {% if p.is_pinned and request.path.startswith('/@') %}
+
+
+
+ Pinned to profile
+
+
+ {% endif %}
+
+ {% if p.private %}
+
+
+
+ Draft
+
+
+ {% endif %}
+
+ {% if p.awards %}
+ {% for a in p.awards %}
+
+
+
+ {% endfor %}
+ {% endif %}
+
+
+
+
+ {% if p.realbody(v) and not p.over_18 %}
+
+ {{p.realbody(v) | safe}}
+
+ {% endif %}
+
+
+ {% include "/submission/SubmissionActions.html" %}
+
+
+
+
+
+ {% if p.club and not (v and v.paid_dues) %}
+
+ {% elif not p.url %}
+
+
+
+ {% elif p.is_image %}
+
+
+
+ {% elif (p.url and p.url.lower().endswith('.mp4')) or (p.embed_url and "youtu" in p.domain) or (p.url and "streamable.com/e/" in p.url) %}
+
+
+
+ {% else %}
+
+
+
+ {% endif %}
+
+
+
+
+
+
+ {% include "/submission/SubmissionActionsMobile.html" %}
+
+
+{% include "/modals/ModalSubmissionActions.html" %}
+
+{% if p.is_image and not p.over_18 and ((v and v.cardview) or (not v and environ.get('CARD_VIEW') == '1')) %}
+
+{% endif %}
+
+{% if not p.club or v and (v.paid_dues or v.id == p.author_id) %}
+ {% if p.url and p.url.lower().endswith('.mp4') %}
+
+
+
+
+
+ {% elif p.embed_url and "youtu" in p.domain %}
+
+ {% if 'lite' in p.embed_url %}
+ {{p.embed_url | safe}}
+ {% else %}
+
+ {% endif %}
+
+ {% elif p.url and "streamable.com/e/" in p.url %}
+
+
+
+ {% endif %}
+{% endif %}
+
+
+
+{% else %}
+
+{% if request.path.endswith('/admin/queue') %}
+
+
+
+
+
This queue is empty. (That's a good thing.)
+
+
+
+
+
+{% elif u %}
+{% if v and v.id == u.id %}
+
+
+
+
+
+
+
+
You haven't {% if "saved" in request.full_path %}saved{% else %}made{% endif %} a post yet
+
Your {% if "saved" in request.full_path %}saved posts{% else %}posting history{% endif %} will show here.
+ {% if "saved" not in request.full_path %}
Create a post {% endif %}
+
+
+
+
+
+{% else %}
+
+
+
+
+
+
+
+
@{{u.username}} hasn't made a post yet
+
Their posting history will show here.
+
+
+
+
+
+{% endif %}
+
+{% else %}
+
+
+
No posts here -_-
+
+ Looks like there is no content atm.
+
+
+{% endif %}
+
+{% endfor %}
+
+{% if v %}
+ {% include "delete_post_modal.html" %}
+ {% include "report_post_modal.html" %}
+ {% if v.admin_level == 6 %}
+ {% include "ban_modal.html" %}
+ {% endif %}
+{% endif %}
+
+{% include "expanded_image_modal.html" %}
+
+
+
+
+
diff --git a/files/templates/CHRISTMAS/submit.html b/files/templates/CHRISTMAS/submit.html
new file mode 100644
index 000000000..5c94c0614
--- /dev/null
+++ b/files/templates/CHRISTMAS/submit.html
@@ -0,0 +1,172 @@
+{% block title %}
+Create a post - {{'SITE_NAME' | app_config}}
+{% endblock %}
+
+{% extends "default.html" %}
+
+{% block subHeader %}
+
+
+
+
+
+ Create post
+
+
+ Share drama with the community.
+
+
+
+ {% if error %}{{error}} {% endif %}
+ Post
+
+
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+
{{ v.username }}
+
+
+
+
+
+
+
Title
+
+
+
+
+
+ Add emoji
+
+
+
+
+
+
+
+ Link
+ (optional if you have text)
+
+
+
+
+
+ To post an image, use a direct image link such as i.imgur.com
+
+
+
+
+
+
+
+ Image or Video
+ (optional)
+
+
+
+
+
+ Select file
+
+
+
+ You may upload videos.
+
+
+
+
+
+
+
+
+
+
+
+
+ Post
+ (optional if you have a link)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GIF
+
+
+
+
+
+
+
+
+
+
Formatting help
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
+
+{% block sidebar %}
+ {% include '/sidebars/SubmitSidebar.html' %}
+{% endblock %}
+
+{% block modals %}
+ {% include "emoji_modal.html" %}
+ {% include "gif_modal.html" %}
+ {% include '/awards/Christmas/Snow.html' %}
+{% endblock %}
+
+{% block scripts %}
+
+
+
+{% endblock %}
diff --git a/files/templates/tailwind-class-list.html b/files/templates/CHRISTMAS/tailwind-class-list.html
similarity index 100%
rename from files/templates/tailwind-class-list.html
rename to files/templates/CHRISTMAS/tailwind-class-list.html
diff --git a/files/templates/tailwind.html b/files/templates/CHRISTMAS/tailwind.html
similarity index 100%
rename from files/templates/tailwind.html
rename to files/templates/CHRISTMAS/tailwind.html
diff --git a/files/templates/CHRISTMAS/thiefs.html b/files/templates/CHRISTMAS/thiefs.html
new file mode 100644
index 000000000..198ae40a1
--- /dev/null
+++ b/files/templates/CHRISTMAS/thiefs.html
@@ -0,0 +1,57 @@
+{% extends "default.html" %}
+{% block content %}
+
+Successful thiefs
+
+
+
+
+ #
+ Name
+
+
+{% for user in successful %}
+
+ {{loop.index}}
+ {{user.username}}
+
+{% endfor %}
+
+
+
+
Evicted thiefs
+
+
+
+
+ #
+ Name
+
+
+{% for user in failed2 %}
+
+ {{loop.index}}
+ {{user.username}}
+
+{% endfor %}
+
+
+
+
Jailed thiefs
+
+
+
+
+ #
+ Name
+
+
+{% for user in failed %}
+
+ {{loop.index}}
+ {{user.username}}
+
+{% endfor %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/toasts/toasts.html b/files/templates/CHRISTMAS/toasts/toasts.html
similarity index 100%
rename from files/templates/toasts/toasts.html
rename to files/templates/CHRISTMAS/toasts/toasts.html
diff --git a/files/templates/CHRISTMAS/truescore.html b/files/templates/CHRISTMAS/truescore.html
new file mode 100644
index 000000000..89cec2269
--- /dev/null
+++ b/files/templates/CHRISTMAS/truescore.html
@@ -0,0 +1,25 @@
+{% extends "settings2.html" %}
+
+{% block pagetitle %}Truescore Leaderboard{% endblock %}
+
+{% block content %}
+
+
Top 25 by truescore
+
+
+
+
+ #
+ Name
+ Score
+
+
+{% for user in users %}
+
+ {{loop.index}}
+ {{user.username}}
+ {{user.truecoins}}
+
+{% endfor %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/user_listing.html b/files/templates/CHRISTMAS/user_listing.html
new file mode 100644
index 000000000..589e3a6fe
--- /dev/null
+++ b/files/templates/CHRISTMAS/user_listing.html
@@ -0,0 +1,44 @@
+{% for u in users %}
+
+
+
+
+
+
+
+
+
+
+
+
+
@{{u.username}}
+
+ {% if v %}
+ {% if v.id!=u.id and not u.is_private and not u.is_nofollow %}
+
+ Follow
+
+
+ {% if u.id != 995 %}
+
+ Unfollow
+
+
+ {% endif %}
+ {% endif %}
+ {% else %}
+
+ {% endif %}
+
+
+ {% if not hide_bios and u.bio_html %}
+
+ {{u.bio_html | safe}}
+
+ {% endif %}
+
+
+
+{% endfor %}
diff --git a/files/templates/CHRISTMAS/userpage.html b/files/templates/CHRISTMAS/userpage.html
new file mode 100644
index 000000000..55e573c53
--- /dev/null
+++ b/files/templates/CHRISTMAS/userpage.html
@@ -0,0 +1,427 @@
+{% extends "default.html" %}
+
+{% block pagetype %}userpage{% endblock %}
+
+{% block title %}
+
+
+
{{u.username}}'s profile - {{'SITE_NAME' | app_config}}
+{% if u.is_private %}
+
+{% endif %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
+
+{% block subHeader %}
+
+
+ {% if v %}
+
+
+ {% if v.admin_level > 1 %}
+
+ {% include '/dropdowns/ProfileAdminDropdown.html' %}
+
+ {% endif %}
+ {% if not u.is_suspended %}
+
+ {% include '/dropdowns/ProfileDropdown.html' %}
+
+ {% if v.id == u.id %}
+
+
+
+ Edit profile
+
+
+ {% endif %}
+ {% if u.song and v and v.mute and not u.unmutable %}
+
+
+
+ Pause anthem
+
+
+
+
+
+ Play anthem
+
+
+ {% endif %}
+ {% if v.id != u.id %}
+
+
+
+ Message
+
+
+ {% if u.id != 995 %}
+
+
+
+ Unfollow
+
+
+ {% endif %}
+
+
+
+ Follow
+
+
+ {% endif %}
+ {% endif %}
+
+
+ {% endif %}
+
+
+
+
+
+
+
+
+ {{ u.username }}
+
+ {% if u.verified %}
+
+ {% endif %}
+ {% if u.admin_level > 1 or (u.admin_level == 1 and not(v and v.admin_level > 1)) %}
+
+ {% elif u.admin_level == 1 and v and v.admin_level > 1 %}
+
+ {% endif %}
+ {% if v and v.has_follower(u) and not v.is_nofollow %}
+
Follows you
+ {% endif %}
+ {% if u.customtitle %}
+
{% if u.quadrant %}
+ {% endif %}{{u.customtitle | safe}}
+
+ {% endif %}
+
+
+
+ rDramanaut since
+
+ {{u.created_date}}
+
+
+ {% if u.username != u.original_username %}
+
·
+
+ a.k.a.
+ @{{u.original_username}}
+
+
+ {% endif %}
+
+
+
+
+ {% if u.id == v.id or not u.is_private %}
+
+ {% endif %}
+
+
+
+
+ {% if u.bio_html %}
+
{{u.bio_html | safe}}
+ {% else %}
+
No bio...
+ {% endif %}
+
+ {% if u.id == v.id or not u.is_private %}
+
+ {% endif %}
+ {% if u.badges %}
+
+ {% for b in u.badges %}
+
+ {% if b.url %}
+
+
+
+ {% else %}
+
+ {% endif %}
+
+ {% endfor %}
+
+ {% endif %}
+ {% if u.friends_html or u.enemies_html %}
+
+ {% if u.friends_html %}
+
Friends
+ {{u.friends_html | safe}}
+ {% endif %}
+
+ {% if u.enemies_html %}
+
Enemies
+ {{u.enemies_html | safe}}
+ {% endif %}
+
+ {% endif %}
+
+
+{% endblock %}
+
+{% block subHeader2 %}
+
+
+
+
+
+
+
+
+
+
+ {% if u.id == v.id %}
+
+
+ Saved Posts
+
+
+
+
+
+ {% endif %}
+
+
+
+
+{% endblock %}
+
+{% block content %}
+
+
+ {% if v and v.admin_level > 1 and u.agendaposter %}
+
+
+
+
+
+
+ {{ u.username }} has Agendaposter theme activated
+
+
+
+ {% endif %}
+
+ {% if u.is_suspended %}
+
+
+
+
+
+
+ {% if u.unban_utc %}
+
{{u.unban_string}}
+ {% endif %}
+
+
+ {% endif %}
+
+ {% if v and v.admin_level > 1 and u.shadowbanned %}
+
+
+
+
+
+
+ {{ u.username }} is shadowbanned
+
+
+
+ {% endif %}
+
+
+ {% if not "saved" in request.full_path %}
+
+ {% include "/dropdowns/SubmissionSorts.html" %}
+
+
+ {% endif %}
+
+ {% include "submission_listing.html" %}
+
+
+ {% if listing %}
+
+ {% if page>1 %}
+
+ Prev
+
+ {% else %}
+
Prev
+ {% endif %}
+ {% if next_exists %}
+
Next
+ {% else %}
+
Next
+ {% endif %}
+
+ {% endif %}
+
+
+
+{% if u.song and v and v.mute and not u.unmutable %}
+
Pause anthem
+
Play anthem
+{% endif %}
+
+{% endblock %}
+
+{% block sidebar %}
+{% include "/sidebars/ProfileSidebar.html" %}
+{% endblock %}
+
+{% block modals %}
+{% if v %}
+ {% include "emoji_modal.html" %}
+ {% include "gif_modal.html" %}
+ {% include "/modals/ModalDirectMessage.html" %}
+ {% include "/modals/ModalGiftCoins.html" %}
+ {% if v.admin_level > 1 %}
+ {% include "/modals/ModalAdminManageUser.html" %}
+ {% endif %}
+{% endif %}
+{% endblock %}
+
+{% block scripts %}
+{% if v %}
+
+{% endif %}
+
+{% if u.song %}
+
+{% endif %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/userpage_blocked.html b/files/templates/CHRISTMAS/userpage_blocked.html
new file mode 100644
index 000000000..cff2bff09
--- /dev/null
+++ b/files/templates/CHRISTMAS/userpage_blocked.html
@@ -0,0 +1,24 @@
+{% extends "default.html" %}
+
+{% block pagetype %}userpage{% endblock %}
+
+{% block fixedMobileBarJS %}
+{% endblock %}
+
+{% block title %}
+
{{u.username}}
+
+{% endblock %}
+
+
+
+
+
+
+
+
+
@{{u.username}} has blocked you.
+
You can't see their profile.
+
+
+
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/userpage_blocking.html b/files/templates/CHRISTMAS/userpage_blocking.html
new file mode 100644
index 000000000..d96072d77
--- /dev/null
+++ b/files/templates/CHRISTMAS/userpage_blocking.html
@@ -0,0 +1,30 @@
+{% extends "default.html" %}
+
+{% block pagetype %}userpage{% endblock %}
+
+{% block fixedMobileBarJS %}
+{% endblock %}
+
+{% block title %}
+
{{u.username}}
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
+
+
You are blocking @{{u.username}}.
+
So we aren't going to show you their profile.
+
+
+
+{% endblock %}
+
+{% block pagenav %}
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/userpage_comments.html b/files/templates/CHRISTMAS/userpage_comments.html
new file mode 100644
index 000000000..383e12760
--- /dev/null
+++ b/files/templates/CHRISTMAS/userpage_comments.html
@@ -0,0 +1,83 @@
+{% extends "userpage.html" %}
+
+
+
+
+{% block content %}
+
+
+ {% if not "saved" in request.full_path %}
+
+ {% include "/dropdowns/SubmissionSorts.html" %}
+
+
+ {% endif %}
+ {% if listing %}
+
+ {% else %}
+
+
+ {% if '/saved/' in request.path %}
+
You have no saved comments
+
+ Go save some comments!
+
+ {% elif v and v.id == u.id %}
+
You have no comments
+
+ Go write some comments!
+
+ {% else %}
+
You have no comments
+
+ Their comments will show up here.
+
+ {% endif %}
+
+ {% endif %}
+
+ {% if listing %}
+
+ {% if page>1 %}
+
+ Prev
+
+ {% else %}
+
Prev
+ {% endif %}
+ {% if next_exists %}
+
Next
+ {% else %}
+
Next
+ {% endif %}
+
+ {% endif %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/userpage_private.html b/files/templates/CHRISTMAS/userpage_private.html
new file mode 100644
index 000000000..5cab5ccac
--- /dev/null
+++ b/files/templates/CHRISTMAS/userpage_private.html
@@ -0,0 +1,34 @@
+{% extends "userpage.html" %}
+
+{% block content %}
+
+
+
+
This account is private
+
+ YOU AREN'T WELCOME HERE GO AWAY
+
+ {% if u.id == 253 and 'rama' in request.host %}
+
+ {% if v and v.coins > 500 and not v.is_suspended %}
+
+ You may pay rent to view this profile.
+
+
Pay 500 coins
+ {% endif %}
+ {% if v and v.coins > 5000 and time - v.created_utc > 604800 and not v.is_suspended %}
+
+ Attempt to steal coins
+
+
+ Landlords, like all other men, love to reap where they never sowed.
+
+ {% endif %}
+
+ {% endif %}
+
+
+{% endblock %}
+
+{% block pagenav %}
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/userpage_reserved.html b/files/templates/CHRISTMAS/userpage_reserved.html
new file mode 100644
index 000000000..c41a655f7
--- /dev/null
+++ b/files/templates/CHRISTMAS/userpage_reserved.html
@@ -0,0 +1,36 @@
+{% extends "default.html" %}
+
+{% block pagetype %}userpage{% endblock %}
+
+{% block fixedMobileBarJS %}
+{% endblock %}
+
+{% block title %}
+
@{{u.username}}
+
+{% endblock %}
+
+{% block adminpanel %}{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+
+
+
+
+
Account Reserved
+
The username @{{u.username}} has been pre-emptively reserved for: {{u.reserved}}
+
If that's you, or if you are their authorized representative, please contact {{'SITE_NAME' | app_config}} staff in order to obtain access to this account.
+
+
+
+
+{% endblock %}
+
+{% block pagenav %}
+{% endblock %}
diff --git a/files/templates/CHRISTMAS/viewers.html b/files/templates/CHRISTMAS/viewers.html
new file mode 100644
index 000000000..6f9818fec
--- /dev/null
+++ b/files/templates/CHRISTMAS/viewers.html
@@ -0,0 +1,21 @@
+{% extends "default.html" %}
+{% block content %}
+
+
Users who viewed your profile
+
+
+
+
+ Name
+ Last visit
+
+
+{% for view in viewers %}
+
+ {{view.viewer.username}}
+ {{view.last_view_string}}
+
+{% endfor %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/voters.html b/files/templates/CHRISTMAS/voters.html
new file mode 100644
index 000000000..5a9f0ac8f
--- /dev/null
+++ b/files/templates/CHRISTMAS/voters.html
@@ -0,0 +1,25 @@
+{% extends "default.html" %}
+{% block content %}
+
+
{{name2}}
+
+
+
+
+ #
+ Name
+ {{name}}votes
+
+
+
+ {% for user in users %}
+
+ {{loop.index}}
+ {{user[0].username}}
+ {{user[1]}}
+
+ {% endfor %}
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/CHRISTMAS/votes.html b/files/templates/CHRISTMAS/votes.html
new file mode 100644
index 000000000..c97939f03
--- /dev/null
+++ b/files/templates/CHRISTMAS/votes.html
@@ -0,0 +1,162 @@
+{% extends "default.html" %}
+
+{% block title %}
+
{{'SITE_NAME' | app_config}}
+
+{% endblock %}
+
+{% block subHeader %}
+
+
+
+
+
+ Votes
+
+ {% if thing %}
+
+
+ Back to post
+
+ {% else %}
+
+ See which losers downvoted your quality content.
+
+ {% endif %}
+
+
+
+{% endblock %}
+
+{% block content %}
+
+{% if thing %}
+
+
+
+
+ Upvotes {{ups | length}}
+
+
+
+
+
+
+
+
+
+ Members
+
+
+
+
+ {% if ups %}
+ {% for vote in ups %}
+
+
+
+
+
+
+
+
+
+ {% endfor %}
+ {% else %}
+
+
+
+ No upvotes yet...
+
+
+
+ {% endif %}
+
+
+
+
+
+
+
+
+ Downvotes {{downs | length}}
+
+
+
+
+
+
+
+
+
+ Members
+
+
+
+
+ {% if downs %}
+ {% for vote in downs %}
+
+
+
+
+
+
+
+
+
+ {% endfor %}
+ {% else %}
+
+
+
+ No downvotes yet...
+
+
+
+ {% endif %}
+
+
+
+
+
+
+
+
+{% endif %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/files/templates/admin/admin_home.html b/files/templates/admin/admin_home.html
index ad4c46824..60bd9fb2d 100644
--- a/files/templates/admin/admin_home.html
+++ b/files/templates/admin/admin_home.html
@@ -6,55 +6,56 @@
{% endblock %}
{% block content %}
-
-
Admin Tools
+
+
+
Admin Tools
-
Content
-
+
Content
+
-
Users
-
+
Users
+
-
Safety
-
+
Safety
+
-
Grant
-
+
Grant
+
-
API Access Control
-
+
API Access Control
+
-
Statistics
-
+
Statistics
+
-
Configuration
-
+
Configuration
+
-
-
- Disable signups
-
+
+
+ Disable signups
+
{% endblock %}
\ No newline at end of file
diff --git a/files/templates/admin/alt_votes.html b/files/templates/admin/alt_votes.html
index 418ad532e..9e9ad185d 100644
--- a/files/templates/admin/alt_votes.html
+++ b/files/templates/admin/alt_votes.html
@@ -6,7 +6,6 @@
{% endblock %}
{% block content %}
-
@@ -28,7 +27,7 @@
-
+
@@ -85,5 +84,5 @@
{% endif %}
-
+
{% endblock %}
\ No newline at end of file
diff --git a/files/templates/admin/app.html b/files/templates/admin/app.html
index 17a8a6924..59da65439 100644
--- a/files/templates/admin/app.html
+++ b/files/templates/admin/app.html
@@ -6,7 +6,10 @@
{% endblock %}
{% block content %}
-
+
+
+
+
+
{% if listing %}
{% include "submission_listing.html" %}
{% elif comments %}
{% include "comments.html" %}
{% endif %}
+
diff --git a/files/templates/admin/apps.html b/files/templates/admin/apps.html
index 9b28f1c62..bf9cd895f 100644
--- a/files/templates/admin/apps.html
+++ b/files/templates/admin/apps.html
@@ -6,50 +6,54 @@
{% endblock %}
{% block content %}
-
- {% for app in apps %}
-
-
-
-
-
User
-
-
App Name
-
+
+
+
+{% for app in apps %}
+
+
-
-
+
Redirect URI
+
+
Description
+
{{app.description}}
- {% endfor %}
+
+
+{% endfor %}
+
+
+
diff --git a/files/templates/admin/awards.html b/files/templates/admin/awards.html
index 092af3ea8..a0c14c697 100644
--- a/files/templates/admin/awards.html
+++ b/files/templates/admin/awards.html
@@ -8,8 +8,6 @@
{% block content %}
-
-
{% if error %}
@@ -40,9 +38,9 @@
Username
-
+
-
+
-
+
{% if 'rdrama.net' not in request.host or v.admin_level > 2 %}
-
+
{% endif %}
-
-
{% endblock %}
\ No newline at end of file
diff --git a/files/templates/admin/badge_grant.html b/files/templates/admin/badge_grant.html
index e1eab7f6b..91e58e8b3 100644
--- a/files/templates/admin/badge_grant.html
+++ b/files/templates/admin/badge_grant.html
@@ -7,7 +7,6 @@
{% block pagetype %}message{% endblock %}
{% block content %}
-
{% if error %}
-
-
- {% if v.agendaposter %}
{% elif v.css %}
{% endif %}
+
+ {% if v.agendaposter %}
{% elif v.css %}
{% endif %}
{% else %}
-
+
{% endif %}
@@ -90,7 +90,7 @@
-
+
diff --git a/files/templates/award_modal.html b/files/templates/award_modal.html
index d418c4684..254eefb42 100644
--- a/files/templates/award_modal.html
+++ b/files/templates/award_modal.html
@@ -1,32 +1,27 @@
-
-
+
+
{% block Banner %}
+ {% if '@' not in request.path %}
+
+
+
+
+
+ {% endif %}
{% endblock %}
-{% include "header-tw.html" %}
+{% include "header.html" %}
+
{% block mobileUserBanner %}
{% endblock %}
@@ -233,8 +224,10 @@
{% block postNav %}
{% endblock %}
-
\ No newline at end of file
diff --git a/files/templates/contact.html b/files/templates/contact.html
index 9032b4270..81884571f 100644
--- a/files/templates/contact.html
+++ b/files/templates/contact.html
@@ -7,61 +7,62 @@
{% block content %}
-
+ {% if request.values.get('error') or error %}
+
+
+
+ {{error if error else request.values.get('error')}}
+
+
+
+
+
+ {% endif %}
+ {% if request.values.get('msg') or msg %}
+
+
+
+ {{msg if msg else request.values.get('msg')}}
+
+
+
+
+
+ {% endif %}
- {% if request.values.get('error') or error %}
-
-
-
- {{error if error else request.values.get('error')}}
-
-
-
-
-
- {% endif %}
- {% if request.values.get('msg') or msg %}
-
-
-
- {{msg if msg else request.values.get('msg')}}
-
-
-
-
-
- {% endif %}
+
Contact {{'SITE_NAME' | app_config}} Admins
+{% if v and v.is_activated and not v.is_suspended %}
-
Contact {{'SITE_NAME' | app_config}} Admins
- {% if v and v.is_activated and not v.is_suspended %}
+
Use this form to contact {{'SITE_NAME' | app_config}} Admins.
-
Use this form to contact {{'SITE_NAME' | app_config}} Admins.
+
Your Email
+
-
Your Email
-
+
-
+Your message
+
- Your message
-
+
-
-
-
+
- {% elif v %}
+{% elif v %}
-
Please verify your email address in order to ensure we can respond to your message if needed. Then, refresh this page.
+
Please verify your email address in order to ensure we can respond to your message if needed. Then, refresh this page.
- {% else %}
+{% else %}
-
In order to ensure that we can respond to your message, please first sign up or log in and make sure you have verified your email address . Then, refresh this page.
+
In order to ensure that we can respond to your message, please first sign up or log in and make sure you have verified your email address . Then, refresh this page.
- {% endif %}
+{% endif %}
-
If you can see this line, we haven't been contacted by any law enforcement or governmental organizations in 2021 yet.
+
- If you can see this line, we haven't been contacted by any law enforcement or governmental organizations in 2021 yet.
{% endblock %}
diff --git a/files/templates/default.html b/files/templates/default.html
index 57dfe898f..5a3176c29 100644
--- a/files/templates/default.html
+++ b/files/templates/default.html
@@ -1,32 +1,34 @@
-