added dark theme + theme selector
This commit is contained in:
parent
9e9fca46d1
commit
ef3da61515
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -3,3 +3,4 @@ __pycache__/
|
||||||
*.swo
|
*.swo
|
||||||
config.py
|
config.py
|
||||||
*.txt
|
*.txt
|
||||||
|
secret_key
|
||||||
|
|
29
ss.py
29
ss.py
|
@ -2,13 +2,26 @@
|
||||||
"""
|
"""
|
||||||
The main Flask application for serving up aggregated RSS feed entries.
|
The main Flask application for serving up aggregated RSS feed entries.
|
||||||
"""
|
"""
|
||||||
from flask import Flask, render_template
|
import os
|
||||||
|
|
||||||
|
from flask import Flask, render_template, session, request
|
||||||
|
|
||||||
import config
|
import config
|
||||||
import database
|
import database
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
def read_secret_key():
|
||||||
|
if os.path.exists("secret_key"):
|
||||||
|
with open("secret_key", "rb") as file:
|
||||||
|
secret_key = file.read()
|
||||||
|
else:
|
||||||
|
secret_key = os.urandom(64)
|
||||||
|
with open("secret_key", "wb") as file:
|
||||||
|
file.write(secret_key)
|
||||||
|
app.secret_key = secret_key
|
||||||
|
read_secret_key()
|
||||||
|
|
||||||
@app.route("/")
|
@app.route("/")
|
||||||
def index():
|
def index():
|
||||||
"""
|
"""
|
||||||
|
@ -17,4 +30,18 @@ def index():
|
||||||
feeds = []
|
feeds = []
|
||||||
for feed_url in config.FEEDS:
|
for feed_url in config.FEEDS:
|
||||||
feeds.append(database.get_feed(feed_url))
|
feeds.append(database.get_feed(feed_url))
|
||||||
|
style_sheet = session.get("style_sheet", "ss.css")
|
||||||
return render_template("index.html", **locals())
|
return render_template("index.html", **locals())
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/set_session")
|
||||||
|
def set_session():
|
||||||
|
"""
|
||||||
|
Allows certain values to be set in the client's session.
|
||||||
|
"""
|
||||||
|
style_sheet = request.args.get("style_sheet")
|
||||||
|
if style_sheet == "ss.css":
|
||||||
|
session["style_sheet"] = "ss.css"
|
||||||
|
elif style_sheet == "ss-dark.css":
|
||||||
|
session["style_sheet"] = "ss-dark.css"
|
||||||
|
return "true"
|
||||||
|
|
30
static/ss-dark.css
Normal file
30
static/ss-dark.css
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
body {
|
||||||
|
background-color: #111111;
|
||||||
|
color: #FAFAFA;
|
||||||
|
font-family: Tahoma, Helvetica, sans-serif;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:link {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #004070;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
color: #B44444;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:visited {
|
||||||
|
color: #B44444;
|
||||||
|
}
|
||||||
|
|
||||||
|
#globalContainer {
|
||||||
|
text-align: left;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.date {
|
||||||
|
margin-left: 3em;
|
||||||
|
padding-right: 1em;
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
14
static/ss.js
Normal file
14
static/ss.js
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
function load() {
|
||||||
|
sheet = document.getElementById("styleSheet").href.replace(/^.*\//, '');
|
||||||
|
select = document.getElementById("styleSheetSelector").value = sheet;
|
||||||
|
}
|
||||||
|
|
||||||
|
function swapStyleSheet() {
|
||||||
|
var sheet = document.getElementById("styleSheetSelector").value;
|
||||||
|
document.getElementById("styleSheet").setAttribute("href", "/static/" + sheet);
|
||||||
|
|
||||||
|
httpRequest = new XMLHttpRequest();
|
||||||
|
httpRequest.onreadystatechange = function() {console.log(httpRequest.responseText);};
|
||||||
|
httpRequest.open("GET", set_session_url + "?style_sheet=" + sheet, true);
|
||||||
|
httpRequest.send();
|
||||||
|
}
|
|
@ -2,10 +2,21 @@
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>/ss/</title>
|
<title>/ss/</title>
|
||||||
<link rel="stylesheet" type="text/css" href="/static/ss.css">
|
<link id="styleSheet" rel="stylesheet" type="text/css" href="/static/{{ style_sheet }}">
|
||||||
<script type="text/javascript" src="/static/ss.js"></script>
|
<script type="text/javascript" src="/static/ss.js"></script>
|
||||||
|
<script>
|
||||||
|
const set_session_url = '{{ url_for("set_session") }}';
|
||||||
|
</script>
|
||||||
|
<script>window.onload = load;</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<div>
|
||||||
|
Style sheet:
|
||||||
|
<select id="styleSheetSelector" onChange="swapStyleSheet()">
|
||||||
|
<option name="ss.css" value="ss.css">Light</option>
|
||||||
|
<option name="ss-dark.css" value="ss-dark.css">Dark</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
<div id="globalContainer">
|
<div id="globalContainer">
|
||||||
{% for feed in feeds %}
|
{% for feed in feeds %}
|
||||||
<div>
|
<div>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user