From 7755ef6d57ac8b2efa6006a1f13c2a47e5520a78 Mon Sep 17 00:00:00 2001
From: geese_suck
Date: Fri, 16 Dec 2022 15:35:01 -0800
Subject: [PATCH] dark mode toggle
---
files/events/assets/css/blizzard.css | 2 +
files/events/assets/css/themes/light.css | 1 +
files/events/assets/js/darkmode.js | 19 ++
files/events/classes/eventuser.py | 2 +-
files/events/helpers/__init__.py | 1 +
files/events/helpers/jinja.py | 10 +-
files/events/routes/__init__.py | 1 +
files/events/routes/theme.py | 16 ++
files/events/templates/banner.svg | 199 ---------------------
files/events/templates/banner_rDrama.html | 2 +-
files/events/templates/sidebar_rDrama.html | 5 +-
files/templates/util/html_head.html | 4 +
12 files changed, 58 insertions(+), 204 deletions(-)
create mode 100644 files/events/assets/css/themes/light.css
create mode 100644 files/events/assets/js/darkmode.js
create mode 100644 files/events/routes/theme.py
delete mode 100644 files/events/templates/banner.svg
diff --git a/files/events/assets/css/blizzard.css b/files/events/assets/css/blizzard.css
index 9c3cb1aef..56b1eee6f 100644
--- a/files/events/assets/css/blizzard.css
+++ b/files/events/assets/css/blizzard.css
@@ -147,6 +147,8 @@ textarea, input[type=textbox], input[type=search] {
cursor: url(/assets/images/event/pointer.png?v=1), auto !important;
}
+.fa-moon-over-sun:before{content:"\f74a"}
+
/* lights */
.navbar::after, .lights::after {
diff --git a/files/events/assets/css/themes/light.css b/files/events/assets/css/themes/light.css
new file mode 100644
index 000000000..9d6f459ad
--- /dev/null
+++ b/files/events/assets/css/themes/light.css
@@ -0,0 +1 @@
+/**/
diff --git a/files/events/assets/js/darkmode.js b/files/events/assets/js/darkmode.js
new file mode 100644
index 000000000..217c9d08a
--- /dev/null
+++ b/files/events/assets/js/darkmode.js
@@ -0,0 +1,19 @@
+function postToastRoastEventDarkmode(t, url) {
+ const xhr = createXhrWithFormKey(url);
+ xhr[0].onload = function() {
+ postToastLoadEventDarkmode(xhr[0])
+ };
+ xhr[0].send(xhr[1]);
+}
+
+function postToastLoadEventDarkmode(xhr) {
+ let data
+ try {
+ data = JSON.parse(xhr.response)
+ }
+ catch (e) {
+ console.log(e)
+ }
+ success = xhr.status >= 200 && xhr.status < 300;
+ showToast(success, getMessageFromJsonData(success, data));
+}
diff --git a/files/events/classes/eventuser.py b/files/events/classes/eventuser.py
index d8e5d14dd..a275d827c 100644
--- a/files/events/classes/eventuser.py
+++ b/files/events/classes/eventuser.py
@@ -10,7 +10,7 @@ class EventUser(Base):
event_music = Column(Boolean, default=True, nullable=False)
# start event specific columns
-
+ event_darkmode = Column(Boolean, default=False, nullable=False)
# end event specific columns
def __init__(self, *args, **kwargs):
diff --git a/files/events/helpers/__init__.py b/files/events/helpers/__init__.py
index 3651c2473..f278f91f7 100644
--- a/files/events/helpers/__init__.py
+++ b/files/events/helpers/__init__.py
@@ -1,2 +1,3 @@
from .const import *
from .jinja import *
+from .get import *
diff --git a/files/events/helpers/jinja.py b/files/events/helpers/jinja.py
index 90270fc9b..68fca8d48 100644
--- a/files/events/helpers/jinja.py
+++ b/files/events/helpers/jinja.py
@@ -1,12 +1,17 @@
import random
from datetime import date
+from .get import get_or_create_event_user
-def daysTillChristmas():
+def days_till_christmas():
today = date.today()
christmas = date(today.year, 12, 25)
delta = abs(christmas - today)
return delta.days
+def user_event_darkmode(target, db):
+ user = get_or_create_event_user(target, db)
+ return user.event_darkmode
+
EVENT_JINJA_CONST = {
"EVENT_BANNER": "banner_rDrama.html",
"EVENT_ICONS": True,
@@ -25,6 +30,7 @@ EVENT_JINJA_CONST = {
" dramatards having their chimneys stuffed by Santa",
],
"random": random,
- "daysTillChristmas": daysTillChristmas,
+ "days_till_christmas": days_till_christmas,
+ "user_event_darkmode": user_event_darkmode,
}
diff --git a/files/events/routes/__init__.py b/files/events/routes/__init__.py
index d33dc9c13..3e97f7861 100644
--- a/files/events/routes/__init__.py
+++ b/files/events/routes/__init__.py
@@ -1,2 +1,3 @@
from .awards import *
from .jinja import *
+from .theme import *
diff --git a/files/events/routes/theme.py b/files/events/routes/theme.py
new file mode 100644
index 000000000..f93566890
--- /dev/null
+++ b/files/events/routes/theme.py
@@ -0,0 +1,16 @@
+from files.events.helpers import get_or_create_event_user
+from files.__main__ import g, app
+from files.routes.wrappers import auth_required
+
+@app.post("/event-darkmode")
+@auth_required
+def event_darkmode(v):
+ user = get_or_create_event_user(v, g.db)
+ if user.event_darkmode:
+ user.event_darkmode = False
+ else:
+ user.event_darkmode = True
+
+ g.db.add(user)
+
+ return {}
diff --git a/files/events/templates/banner.svg b/files/events/templates/banner.svg
deleted file mode 100644
index b33ec1199..000000000
--- a/files/events/templates/banner.svg
+++ /dev/null
@@ -1,199 +0,0 @@
-
diff --git a/files/events/templates/banner_rDrama.html b/files/events/templates/banner_rDrama.html
index cf846cf12..1c5667988 100644
--- a/files/events/templates/banner_rDrama.html
+++ b/files/events/templates/banner_rDrama.html
@@ -11,7 +11,7 @@
0
- {{daysTillChristmas()}}
+ {{days_till_christmas()}}
diff --git a/files/events/templates/sidebar_rDrama.html b/files/events/templates/sidebar_rDrama.html
index 4e48d7311..923da2b09 100644
--- a/files/events/templates/sidebar_rDrama.html
+++ b/files/events/templates/sidebar_rDrama.html
@@ -22,9 +22,12 @@
-
+
+
+
{% if sub %}
{% if sub.sidebar_html %}
{{sub.sidebar_html|safe}}
diff --git a/files/templates/util/html_head.html b/files/templates/util/html_head.html
index a29dd2df5..b477146b3 100644
--- a/files/templates/util/html_head.html
+++ b/files/templates/util/html_head.html
@@ -160,6 +160,10 @@
{% if EVENT_STYLES %}
{% set EVENT_STYLES = 'css/event/'+EVENT_STYLES %}
+
+ {% if v and user_event_darkmode(v, g.db)%}
+
+ {% endif %}
{% endif %}
{% if request.path == '/chat' %}