bibliogram/src/site/pug/settings.pug

171 lines
5.5 KiB
Plaintext

//- Needs constants, settings, csrf, status, message
- const ll = lang.get(settings.language)
mixin fieldset(name)
fieldset
legend= name
.fieldset-contents
block
mixin input(id, description, placeholder, disabled, list)
.field-row
label.description(for=id)= description
input(type="text" id=id name=id value=settings[id] placeholder=placeholder disabled=disabled list=`${id}-list`)
if list
datalist(id=`${id}-list`)
each item in list
option(value=item)
mixin checkbox(id, description, label, disabled)
.field-row.checkbox-row
label.description(for=id)= description
input.checkbox(type="checkbox" id=id name=id checked=(settings[id] !== 0) disabled=disabled autocomplete="off")
label.pill(for=id tabindex=(disabled ? null : 0) onkeypress=`[" ", "Enter"].includes(event.key) && this.click()`)= label
span.fake-checkbox
mixin select(id, description, disabled, options)
.field-row
label.description(for=id)= description
select(id=id name=id disabled=disabled)
each option in options
option(value=option.value selected=(option.value === settings[id]))= option.text
doctype html
html
head
title= `${ll.t_settings} | Bibliogram`
include includes/head
script(src=getStaticURL("html", "/static/js/settings_message.js") type="module")
body.settings-page
if status && message
.status-notice(class=status)= message
main.settings
form(action=returnAction method="post" enctype="application/x-www-form-urlencoded")
input(type="hidden" name="csrf" value=csrf)
h1.title= ll.t_settings
+fieldset(ll.t_features)
+select("language", ll.t_language, false, [
{value: "bg", text: "Български"},
{value: "de", text: "Deutsch"},
{value: "en", text: "English (International)"},
{value: "en-us", text: "English (US)"},
{value: "es", text: "Español"},
{value: "fa", text: "فارسي"},
{value: "fr", text: "Français"},
{value: "gl", text: "Galego"},
{value: "it", text: "Italiano"},
{value: "ms", text: "Bahasa Melayu"},
{value: "ru", text: "Русский"},
{value: "tr", text: "Türkçe"}
])
+select("save_data", ll.save_data, true, [
{value: "automatic", text: ll.t_automatic},
{value: "off", text: ll.t_off},
{value: "lazy_load", text: ll.lazy_load},
{value: "full", text: ll.t_full}
])
+input("rewrite_youtube", ll.rewrite_youtube, constants.default_user_settings.rewrite_youtube, false, [
"invidio.us",
"invidious.snopyta.org",
"invidious.13ad.de",
"watch.nettohikari.com",
"invidious.fdn.fr",
"yewtu.be"
])
+input("rewrite_twitter", ll.rewrite_twitter, constants.default_user_settings.rewrite_twitter, false, [
"nitter.net",
"nitter.snopyta.org",
"nitter.pussthecat.org",
"nitter.42l.fr",
"nitter.mastodont.cat",
"nitter.tedomum.net",
"nitter.cattube.org",
"nitter.fdn.fr",
"nitter.1d4.us"
])
+checkbox("remove_trailing_hashtags", ll.remove_trailing_hashtags, ll.t_hide, false)
+checkbox("link_hashtags", ll.link_hashtags, ll.t_clickable, true)
+checkbox("show_comments", ll.show_comments, ll.t_display, true)
+checkbox("spa", ll.fast_navigation, ll.t_enabled, false)
+select("infinite_scroll", ll.infinite_scroll, true, [
{value: "normal", text: ll.t_normal},
{value: "eager", text: ll.t_eager},
{value: "off", text: ll.t_manual}
])
+fieldset(ll.t_appearance)
+select("theme", ll.t_theme, false, constants.themes.collated.map(entry => ({value: entry.file, text: entry.name})))
+checkbox("display_top_nav", ll.display_top_nav, ll.t_always, false)
+select("timeline_columns", ll.timeline_columns, false, [
{value: "dynamic", text: ll.t_dynamic},
{value: "three", text: ll.three_columns},
{value: "four", text: ll.four_columns},
{value: "six", text: ll.six_columns}
])
+select("caption_side", ll.caption_side, false, [
{value: "left", text: ll.left_caption},
{value: "right", text: ll.right_caption}
])
+checkbox("display_alt", ll.display_alt_text, ll.t_display, false)
//- div
//- Here are all the possible input styles. Uncomment to test styling.
- let i = 2
- let id = 0
- let thisID
while --i >= 0
fieldset
legend Style demo
.field-row
- thisID = "in"+(id++)
label.description(for=thisID) Placeholder
input(type="text" placeholder="Placeholder" id=thisID)
.field-row
- thisID = "in"+(id++)
label.description(for=thisID) Disabled
input(type="text" disabled placeholder="Disabled" value="Value" id=thisID)
.field-row
label.description Button
button(type="button") Button
.field-row
- thisID = "in"+(id++)
label.description(for=thisID) Select
select(id=thisID)
option Select
option Yes
option No
option Always
option Never
.field-row.checkbox-row
- thisID = "in"+(id++)
label.description(for=thisID) Checkbox
input.checkbox(type="checkbox" id=thisID)
label.pill(for=thisID tabindex=0 onkeypress=`[" ", "Enter"].includes(event.key) && this.click()`) Label
span.fake-checkbox
if token
p!= ll.pug_restore_sync_settings({token})
.action-container
span.home-link-container: a(href=returnURL).home-link= `← ${ll.t_return}`
button(type="submit" formaction=stayAction).save-button= ll.t_save
button(type="submit").save-button= ll.save_and_return