mirror of
https://github.com/hrfee/jellyfin-accounts.git
synced 2024-12-22 09:00:14 +00:00
Cleanup, add theme options
Add theme options to settings to choose between light and dark.
This commit is contained in:
parent
adef32ef89
commit
4fb99d1724
@ -15,6 +15,8 @@ device_id = jf-accounts-0.3.0
|
|||||||
|
|
||||||
[ui]
|
[ui]
|
||||||
; settings related to the ui and program functionality.
|
; settings related to the ui and program functionality.
|
||||||
|
; choose the look of jellyfin-accounts.
|
||||||
|
theme = Jellyfin (Dark)
|
||||||
; set 0.0.0.0 to run on localhost
|
; set 0.0.0.0 to run on localhost
|
||||||
host = 0.0.0.0
|
host = 0.0.0.0
|
||||||
port = 8056
|
port = 8056
|
||||||
|
@ -142,10 +142,7 @@ def load_config(config_path, data_dir):
|
|||||||
or config["jellyfin"]["public_server"] == ""
|
or config["jellyfin"]["public_server"] == ""
|
||||||
):
|
):
|
||||||
config["jellyfin"]["public_server"] = config["jellyfin"]["server"]
|
config["jellyfin"]["public_server"] = config["jellyfin"]["server"]
|
||||||
if (
|
if "bs5" not in config["ui"] or config["ui"]["bs5"] == "":
|
||||||
"bs5" not in config["ui"]
|
|
||||||
or config["ui"]["bs5"] == ""
|
|
||||||
):
|
|
||||||
config["ui"]["bs5"] = "false"
|
config["ui"]["bs5"] = "false"
|
||||||
return config
|
return config
|
||||||
|
|
||||||
@ -192,11 +189,31 @@ data_store = JSONStorage(
|
|||||||
|
|
||||||
if config.getboolean("ui", "bs5"):
|
if config.getboolean("ui", "bs5"):
|
||||||
css_file = "bs5-jf.css"
|
css_file = "bs5-jf.css"
|
||||||
log.debug('Using Bootstrap 5')
|
log.debug("Using Bootstrap 5")
|
||||||
else:
|
else:
|
||||||
css_file = "bs4-jf.css"
|
css_file = "bs4-jf.css"
|
||||||
|
|
||||||
if "custom_css" in config["files"]:
|
|
||||||
|
with open(config_base_path, "r") as f:
|
||||||
|
themes = json.load(f)["ui"]["theme"]
|
||||||
|
|
||||||
|
theme_options = themes["options"]
|
||||||
|
|
||||||
|
if "theme" not in config["ui"] or config["ui"]["theme"] not in theme_options:
|
||||||
|
config["ui"]["theme"] = themes["value"]
|
||||||
|
|
||||||
|
if config.getboolean("ui", "bs5"):
|
||||||
|
num = 5
|
||||||
|
else:
|
||||||
|
num = 4
|
||||||
|
|
||||||
|
current_theme = config["ui"]["theme"]
|
||||||
|
|
||||||
|
if "Bootstrap" in current_theme:
|
||||||
|
css_file = f"bs{num}.css"
|
||||||
|
elif "Jellyfin" in current_theme:
|
||||||
|
css_file = f"bs{num}-jf.css"
|
||||||
|
elif "Custom" in current_theme and "custom_css" in config["files"]:
|
||||||
if config["files"]["custom_css"] != "":
|
if config["files"]["custom_css"] != "":
|
||||||
try:
|
try:
|
||||||
css_path = Path(config["files"]["custom_css"])
|
css_path = Path(config["files"]["custom_css"])
|
||||||
|
@ -70,6 +70,19 @@
|
|||||||
"name": "General",
|
"name": "General",
|
||||||
"description": "Settings related to the UI and program functionality."
|
"description": "Settings related to the UI and program functionality."
|
||||||
},
|
},
|
||||||
|
"theme": {
|
||||||
|
"name": "Look",
|
||||||
|
"required": false,
|
||||||
|
"requires_restart": true,
|
||||||
|
"type": "select",
|
||||||
|
"options": [
|
||||||
|
"Bootstrap (Light)",
|
||||||
|
"Jellyfin (Dark)",
|
||||||
|
"Custom CSS"
|
||||||
|
],
|
||||||
|
"value": "Jellyfin (Dark)",
|
||||||
|
"description": "Choose the look of jellyfin-accounts."
|
||||||
|
},
|
||||||
"host": {
|
"host": {
|
||||||
"name": "Address",
|
"name": "Address",
|
||||||
"required": true,
|
"required": true,
|
||||||
|
@ -3,7 +3,7 @@ var bsVersion = {{ bsVersion }};
|
|||||||
if (bsVersion == 5) {
|
if (bsVersion == 5) {
|
||||||
function createModal(id, find = false) {
|
function createModal(id, find = false) {
|
||||||
if (find) {
|
if (find) {
|
||||||
return bootstrap.Modal.getInstance(document.getElementById(modalId));
|
return bootstrap.Modal.getInstance(document.getElementById(id));
|
||||||
};
|
};
|
||||||
return new bootstrap.Modal(document.getElementById(id));
|
return new bootstrap.Modal(document.getElementById(id));
|
||||||
};
|
};
|
||||||
|
@ -11,7 +11,7 @@ def page_not_found(e):
|
|||||||
return (
|
return (
|
||||||
render_template(
|
render_template(
|
||||||
"404.html",
|
"404.html",
|
||||||
bs5=config.getboolean('ui', 'bs5'),
|
bs5=config.getboolean("ui", "bs5"),
|
||||||
css_file=css_file,
|
css_file=css_file,
|
||||||
contactMessage=config["ui"]["contact_message"],
|
contactMessage=config["ui"]["contact_message"],
|
||||||
),
|
),
|
||||||
@ -24,7 +24,7 @@ def admin():
|
|||||||
# return app.send_static_file('admin.html')
|
# return app.send_static_file('admin.html')
|
||||||
return render_template(
|
return render_template(
|
||||||
"admin.html",
|
"admin.html",
|
||||||
bs5=config.getboolean('ui', 'bs5'),
|
bs5=config.getboolean("ui", "bs5"),
|
||||||
css_file=css_file,
|
css_file=css_file,
|
||||||
contactMessage="",
|
contactMessage="",
|
||||||
email_enabled=config.getboolean("invite_emails", "enabled"),
|
email_enabled=config.getboolean("invite_emails", "enabled"),
|
||||||
@ -35,17 +35,16 @@ def admin():
|
|||||||
def static_proxy(path):
|
def static_proxy(path):
|
||||||
if "html" not in path:
|
if "html" not in path:
|
||||||
if "admin.js" in path:
|
if "admin.js" in path:
|
||||||
if config.getboolean('ui', 'bs5'):
|
if config.getboolean("ui", "bs5"):
|
||||||
bsVersion = 5
|
bsVersion = 5
|
||||||
else:
|
else:
|
||||||
bsVersion = 4
|
bsVersion = 4
|
||||||
return render_template("admin.js",
|
return render_template("admin.js", bsVersion=bsVersion)
|
||||||
bsVersion=bsVersion)
|
|
||||||
return app.send_static_file(path)
|
return app.send_static_file(path)
|
||||||
return (
|
return (
|
||||||
render_template(
|
render_template(
|
||||||
"404.html",
|
"404.html",
|
||||||
bs5=config.getboolean('ui', 'bs5'),
|
bs5=config.getboolean("ui", "bs5"),
|
||||||
css_file=css_file,
|
css_file=css_file,
|
||||||
contactMessage=config["ui"]["contact_message"],
|
contactMessage=config["ui"]["contact_message"],
|
||||||
),
|
),
|
||||||
@ -63,7 +62,7 @@ def inviteProxy(path):
|
|||||||
email = ""
|
email = ""
|
||||||
return render_template(
|
return render_template(
|
||||||
"form.html",
|
"form.html",
|
||||||
bs5=config.getboolean('ui', 'bs5'),
|
bs5=config.getboolean("ui", "bs5"),
|
||||||
css_file=css_file,
|
css_file=css_file,
|
||||||
contactMessage=config["ui"]["contact_message"],
|
contactMessage=config["ui"]["contact_message"],
|
||||||
helpMessage=config["ui"]["help_message"],
|
helpMessage=config["ui"]["help_message"],
|
||||||
@ -80,7 +79,7 @@ def inviteProxy(path):
|
|||||||
log.debug("Attempted use of invalid invite")
|
log.debug("Attempted use of invalid invite")
|
||||||
return render_template(
|
return render_template(
|
||||||
"invalidCode.html",
|
"invalidCode.html",
|
||||||
bs5=config.getboolean('ui', 'bs5'),
|
bs5=config.getboolean("ui", "bs5"),
|
||||||
css_file=css_file,
|
css_file=css_file,
|
||||||
contactMessage=config["ui"]["contact_message"],
|
contactMessage=config["ui"]["contact_message"],
|
||||||
)
|
)
|
||||||
|
@ -338,13 +338,9 @@ def modifyConfig():
|
|||||||
for section in data:
|
for section in data:
|
||||||
if section in temp_config:
|
if section in temp_config:
|
||||||
for item in data[section]:
|
for item in data[section]:
|
||||||
if item in temp_config[section]:
|
|
||||||
temp_config[section][item] = data[section][item]
|
temp_config[section][item] = data[section][item]
|
||||||
data[section][item] = True
|
data[section][item] = True
|
||||||
log.debug(f"{section}/{item} modified")
|
log.debug(f"{section}/{item} modified")
|
||||||
else:
|
|
||||||
data[section][item] = False
|
|
||||||
log.debug(f"{section}/{item} does not exist in config")
|
|
||||||
with open(config_path, "w") as config_file:
|
with open(config_path, "w") as config_file:
|
||||||
temp_config.write(config_file)
|
temp_config.write(config_file)
|
||||||
config = load_config(config_path, data_dir)
|
config = load_config(config_path, data_dir)
|
||||||
|
Loading…
Reference in New Issue
Block a user