1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
/*
This file is part of jellything (https://codeberg.org/metamuffin/jellything)
which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
Copyright (C) 2026 metamuffin <metamuffin.org>
*/
use crate::RenderInfo;
use jellycommon::{
jellyobject::Object,
routes::{u_account_login, u_account_logout, u_account_settings},
*,
};
use jellyui_locale::tr;
markup::define! {
UserSettings<'a>(ri: &'a RenderInfo<'a>, user: Object<'a>) {
h1 { @tr(ri.lang, "settings") }
h2 { @tr(ri.lang, "settings.account") }
a.switch_account[href=u_account_login()] { button { "Switch Account" } }
a.switch_account[href=u_account_logout()] { button { "Log out" } }
p { @tr(ri.lang, "tag.Ulgn") ": " @user.get(USER_LOGIN) }
form[method="POST", action=u_account_settings()] {
label[for="name"] { @tr(ri.lang, "tag.Unam") }
input[type="text", id="name", name="name", value=user.get(USER_NAME)];
input[type="submit", value=tr(ri.lang, "settings.update")];
}
form[method="POST", action=u_account_settings()] {
label[for="password"] { @tr(ri.lang, "tag.Upwd") }
input[type="password", id="password", name="password"];
input[type="submit", value=tr(ri.lang, "settings.update")];
}
form[method="POST", action=u_account_settings()] {
fieldset {
legend { @tr(ri.lang, "tag.Utpr") }
@for preset in [THEME_DARK, THEME_LIGHT] {
label { input[type="radio", name="theme_preset", value=preset.to_string(), checked=user.get(USER_THEME_PRESET) == Some(preset)]; @tr(ri.lang, &format!("tag.Utpr.{preset}")) } br;
}
}
label[for="accent"] { @tr(ri.lang, "tag.Utac") }
input[type="range", id="accent", name="theme_accent", min=0, max=360, step=1, value=user.get(USER_THEME_ACCENT)];
input[type="submit", value=tr(ri.lang, "settings.update")];
}
// h2 { @tr(ri.lang, "settings.appearance") }
// form[method="POST", action=u_account_settings()] {
// fieldset {
// legend { @tr(ri.lang, "tag.Uthm") }
// @for theme in [] {
// label { input[type="radio", name="theme", value=A(*theme), checked=session.user.theme==*theme]; @tr(ri.lang, &format!("theme.{theme}")) } br;
// }
// }
// input[type="submit", value=tr(ri.lang, "settings.apply")];
// }
// form[method="POST", action=u_account_settings()] {
// fieldset {
// legend { @tr(ri.lang, "settings.player_preference") }
// @for kind in PlayerKind::ALL {
// label { input[type="radio", name="player_preference", value=A(*kind), checked=session.user.player_preference==*kind]; @tr(ri.lang, &format!("player_kind.{kind}")) } br;
// }
// }
// input[type="submit", value=tr(ri.lang, "settings.apply")];
// }
}
}
|