add barebones theme switcher
This commit is contained in:
@ -2,7 +2,7 @@ from flask import Flask, session
|
||||
from dotenv import load_dotenv
|
||||
from .models import Avatars, Users, PostHistory, Posts
|
||||
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 .constants import (
|
||||
PermissionLevel, permission_level_string,
|
||||
@ -140,6 +140,7 @@ def create_app():
|
||||
def inject_funcs():
|
||||
return {
|
||||
'get_post_url': get_post_url,
|
||||
'get_prefers_theme': get_prefers_theme,
|
||||
}
|
||||
|
||||
@app.template_filter("ts_datetime")
|
||||
|
@ -165,6 +165,12 @@ def admin_only(*args, **kwargs):
|
||||
return decorator
|
||||
|
||||
|
||||
def get_prefers_theme():
|
||||
if not 'theme' in session:
|
||||
return 'style'
|
||||
|
||||
return session['theme']
|
||||
|
||||
@bp.get("/log_in")
|
||||
@redirect_if_logged_in(".page", username = lambda: get_active_user().username)
|
||||
def log_in():
|
||||
@ -288,6 +294,12 @@ def settings_form(username):
|
||||
# we silently ignore the passed username
|
||||
# and grab the correct user from the session
|
||||
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')
|
||||
if topic_sort_by == 'activity' or topic_sort_by == 'thread':
|
||||
sort_by = session['sort_by'] = topic_sort_by
|
||||
|
@ -8,7 +8,7 @@
|
||||
{% else %}
|
||||
<title>{{config.SITE_NAME}}</title>
|
||||
{% 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">
|
||||
</head>
|
||||
<body>
|
||||
|
@ -15,6 +15,11 @@
|
||||
</div>
|
||||
</form>
|
||||
<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>
|
||||
<select id='topic_sort_by' name='topic_sort_by'>
|
||||
<option value='activity' {{ 'selected' if session['sort_by'] == 'activity' else '' }}>Latest activity</option>
|
||||
|
Reference in New Issue
Block a user