add barebones theme switcher
This commit is contained in:
@ -2,7 +2,7 @@ from flask import Flask, session
|
|||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
from .models import Avatars, Users, PostHistory, Posts
|
from .models import Avatars, Users, PostHistory, Posts
|
||||||
from .auth import digest
|
from .auth import digest
|
||||||
from .routes.users import is_logged_in, get_active_user
|
from .routes.users import is_logged_in, get_active_user, get_prefers_theme
|
||||||
from .routes.threads import get_post_url
|
from .routes.threads import get_post_url
|
||||||
from .constants import (
|
from .constants import (
|
||||||
PermissionLevel, permission_level_string,
|
PermissionLevel, permission_level_string,
|
||||||
@ -140,6 +140,7 @@ def create_app():
|
|||||||
def inject_funcs():
|
def inject_funcs():
|
||||||
return {
|
return {
|
||||||
'get_post_url': get_post_url,
|
'get_post_url': get_post_url,
|
||||||
|
'get_prefers_theme': get_prefers_theme,
|
||||||
}
|
}
|
||||||
|
|
||||||
@app.template_filter("ts_datetime")
|
@app.template_filter("ts_datetime")
|
||||||
|
@ -165,6 +165,12 @@ def admin_only(*args, **kwargs):
|
|||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
|
|
||||||
|
def get_prefers_theme():
|
||||||
|
if not 'theme' in session:
|
||||||
|
return 'style'
|
||||||
|
|
||||||
|
return session['theme']
|
||||||
|
|
||||||
@bp.get("/log_in")
|
@bp.get("/log_in")
|
||||||
@redirect_if_logged_in(".page", username = lambda: get_active_user().username)
|
@redirect_if_logged_in(".page", username = lambda: get_active_user().username)
|
||||||
def log_in():
|
def log_in():
|
||||||
@ -288,6 +294,12 @@ def settings_form(username):
|
|||||||
# we silently ignore the passed username
|
# we silently ignore the passed username
|
||||||
# and grab the correct user from the session
|
# and grab the correct user from the session
|
||||||
user = get_active_user()
|
user = get_active_user()
|
||||||
|
theme = request.form.get('theme', default='default')
|
||||||
|
if theme == 'default':
|
||||||
|
if 'theme' in session:
|
||||||
|
session.pop('theme')
|
||||||
|
else:
|
||||||
|
session['theme'] = theme
|
||||||
topic_sort_by = request.form.get('topic_sort_by', default='activity')
|
topic_sort_by = request.form.get('topic_sort_by', default='activity')
|
||||||
if topic_sort_by == 'activity' or topic_sort_by == 'thread':
|
if topic_sort_by == 'activity' or topic_sort_by == 'thread':
|
||||||
sort_by = session['sort_by'] = topic_sort_by
|
sort_by = session['sort_by'] = topic_sort_by
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
{% else %}
|
{% else %}
|
||||||
<title>{{config.SITE_NAME}}</title>
|
<title>{{config.SITE_NAME}}</title>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<link rel="stylesheet" href="{{ "/static/css/style.css" | cachebust }}">
|
<link rel="stylesheet" href="{{ ("/static/css/%s.css" % get_prefers_theme()) | cachebust }}">
|
||||||
<link rel="icon" type="image/png" href="/static/favicon.png">
|
<link rel="icon" type="image/png" href="/static/favicon.png">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
@ -15,6 +15,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<form method='post'>
|
<form method='post'>
|
||||||
|
<label for='theme'>Theme (beta)</label>
|
||||||
|
<select autocomplete='off' id='theme' name='theme'>
|
||||||
|
<option value='default' {{ 'selected' if get_prefers_theme() == 'style' }}>Default</option>
|
||||||
|
<option value='theme-otomotone' {{ 'selected' if get_prefers_theme() == 'theme-otomotone' }}>Otomotone (beta)</option>
|
||||||
|
</select>
|
||||||
<label for='topic_sort_by'>Sort threads by:</label>
|
<label for='topic_sort_by'>Sort threads by:</label>
|
||||||
<select id='topic_sort_by' name='topic_sort_by'>
|
<select id='topic_sort_by' name='topic_sort_by'>
|
||||||
<option value='activity' {{ 'selected' if session['sort_by'] == 'activity' else '' }}>Latest activity</option>
|
<option value='activity' {{ 'selected' if session['sort_by'] == 'activity' else '' }}>Latest activity</option>
|
||||||
|
Reference in New Issue
Block a user