add: forum posts ui
This commit is contained in:
parent
ef029c59b3
commit
2be87c397d
90 changed files with 1459 additions and 1299 deletions
|
@ -122,7 +122,7 @@ article {
|
|||
|
||||
body .card:not(.card *):not(.user_plate),
|
||||
body .pillmenu:not(.card *) > a,
|
||||
body .card-nest:not(.card *) > .card,
|
||||
body .card_nest:not(.card *) > .card,
|
||||
body .banner {
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
@ -261,7 +261,10 @@ hr.margin {
|
|||
margin: var(--pad-4) 0;
|
||||
}
|
||||
|
||||
p,
|
||||
hr.margin_top {
|
||||
margin-top: var(--pad-4);
|
||||
}
|
||||
|
||||
li,
|
||||
span,
|
||||
code {
|
||||
|
|
|
@ -195,27 +195,78 @@ table ol {
|
|||
color: var(--color-text-lowered);
|
||||
}
|
||||
|
||||
.card-nest {
|
||||
.card_nest {
|
||||
box-shadow: var(--shadow-x-offset) var(--shadow-y-offset) var(--shadow-size)
|
||||
var(--color-shadow);
|
||||
border-radius: var(--radius);
|
||||
}
|
||||
|
||||
.card-nest .card {
|
||||
.card_nest .card {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.card-nest > .card:first-child {
|
||||
.card_nest > .card:first-child {
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
background: var(--color-super-raised);
|
||||
}
|
||||
|
||||
.card-nest > .card:last-child {
|
||||
.card_nest > .card:last-child {
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
|
||||
.card_nest_horizontal_wrapper {
|
||||
box-shadow: var(--shadow-x-offset) var(--shadow-y-offset) var(--shadow-size)
|
||||
var(--color-shadow);
|
||||
}
|
||||
|
||||
.card_nest_horizontal {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.card_nest_horizontal_header {
|
||||
border-top-left-radius: var(--radius);
|
||||
border-top-right-radius: var(--radius);
|
||||
padding: var(--pad-2) var(--pad-4);
|
||||
}
|
||||
|
||||
.card_nest_horizontal .side {
|
||||
padding: var(--pad-4);
|
||||
}
|
||||
|
||||
.card_nest_horizontal .side:nth-child(1) {
|
||||
background: var(--color-lowered);
|
||||
border-right: solid 1px var(--color-super-lowered);
|
||||
border-bottom-left-radius: var(--radius);
|
||||
}
|
||||
|
||||
.card_nest_horizontal .side:nth-child(2) {
|
||||
background: var(--color-raised);
|
||||
border-bottom-right-radius: var(--radius);
|
||||
}
|
||||
|
||||
.card_nest_horizontal_header {
|
||||
background: var(--color-lowered);
|
||||
border-bottom: solid 1px var(--color-super-lowered);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--pad-2);
|
||||
}
|
||||
|
||||
@media screen and (max-width: 900px) {
|
||||
.card_nest_horizontal {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.card_nest_horizontal .side:nth-child(1) {
|
||||
border-right: none;
|
||||
border-bottom: solid 1px var(--color-super-lowered);
|
||||
border-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* supporter card */
|
||||
@property --border-angle {
|
||||
syntax: "<angle>";
|
||||
|
|
|
@ -3,35 +3,35 @@
|
|||
display: flex;
|
||||
}
|
||||
|
||||
.flex-col {
|
||||
.flex_col {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.flex-rev-col {
|
||||
.flex_rev_col {
|
||||
flex-direction: column-reverse;
|
||||
}
|
||||
|
||||
.flex-row {
|
||||
.flex_row {
|
||||
flex-direction: row !important;
|
||||
}
|
||||
|
||||
.flex-rev-row {
|
||||
.flex_rev_row {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
.flex-wrap {
|
||||
.flex_wrap {
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.justify-center {
|
||||
.justify_center {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.justify-between {
|
||||
.justify_between {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.justify-right {
|
||||
.justify_right {
|
||||
justify-content: right;
|
||||
}
|
||||
|
||||
|
@ -39,23 +39,23 @@
|
|||
justify-content: flex-start !important;
|
||||
}
|
||||
|
||||
.items-center {
|
||||
.items_center {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.gap-1 {
|
||||
.gap_1 {
|
||||
gap: var(--pad-1);
|
||||
}
|
||||
|
||||
.gap-2 {
|
||||
.gap_2 {
|
||||
gap: var(--pad-2);
|
||||
}
|
||||
|
||||
.gap-4 {
|
||||
.gap_4 {
|
||||
gap: var(--pad-4);
|
||||
}
|
||||
|
||||
.gap-8 {
|
||||
.gap_8 {
|
||||
gap: 1.25rem;
|
||||
}
|
||||
|
||||
|
@ -74,7 +74,7 @@
|
|||
}
|
||||
|
||||
@media screen and (max-width: 900px) {
|
||||
.flex-collapse {
|
||||
.flex_collapse {
|
||||
flex-direction: column !important;
|
||||
}
|
||||
|
||||
|
@ -86,16 +86,21 @@
|
|||
display: flex !important;
|
||||
}
|
||||
|
||||
.sm\:w-full {
|
||||
.sm\:w_full {
|
||||
width: 100% !important;
|
||||
min-width: 100% !important;
|
||||
}
|
||||
|
||||
.sm\:w_content {
|
||||
width: max-content !important;
|
||||
min-width: max-content !important;
|
||||
}
|
||||
|
||||
.sm\:mt-2 {
|
||||
margin-top: 2rem !important;
|
||||
}
|
||||
|
||||
.sm\:items-start {
|
||||
.sm\:items_start {
|
||||
align-items: flex-start !important;
|
||||
}
|
||||
|
||||
|
@ -112,7 +117,7 @@
|
|||
box-shadow: 0 8px 16px var(--color-shadow);
|
||||
}
|
||||
|
||||
.round-sm {
|
||||
.round_sm {
|
||||
border-radius: calc(var(--radius) / 2) !important;
|
||||
}
|
||||
|
||||
|
@ -120,19 +125,19 @@
|
|||
border-radius: var(--radius) !important;
|
||||
}
|
||||
|
||||
.round-md {
|
||||
.round_md {
|
||||
border-radius: calc(var(--radius) * 2) !important;
|
||||
}
|
||||
|
||||
.round-lg {
|
||||
.round_lg {
|
||||
border-radius: calc(var(--radius) * 4) !important;
|
||||
}
|
||||
|
||||
.w-full {
|
||||
.w_full {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.w-content {
|
||||
.w_content {
|
||||
width: max-content !important;
|
||||
}
|
||||
|
||||
|
@ -162,12 +167,12 @@
|
|||
}
|
||||
|
||||
[align="center"],
|
||||
.text-center {
|
||||
.text_center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
[align="right"],
|
||||
.text-right {
|
||||
.text_right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
(text "{% extends \"root.html\" %} {% block body %}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
("style" "max-width: 48ch")
|
||||
(h2
|
||||
("class" "w-full text-center")
|
||||
("class" "w_full text-center")
|
||||
; block for title
|
||||
(text "{% block title %}{% endblock %}"))
|
||||
(div
|
||||
("class" "card w-full flex flex-col gap-4 justify-center align-center")
|
||||
("class" "card w_full flex flex_col gap_4 justify_center align-center")
|
||||
; block for actual page content
|
||||
(text "{% block content %}{% endblock %}"))
|
||||
; small footer block (for switching context)
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
(text "{% endblock %} {% block title %}Connection{% endblock %} {% block content %}")
|
||||
(div
|
||||
("class" "w-full flex-col gap-2")
|
||||
("class" "w_full flex_col gap_2")
|
||||
("id" "status")
|
||||
; display loading text because we have to wait for the data to update on remote
|
||||
(b
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
|
||||
(text "{% endblock %} {% block title %}Login{% endblock %} {% block content %}")
|
||||
(form
|
||||
("class" "w-full flex flex-col gap-4")
|
||||
("class" "w_full flex flex_col gap_4")
|
||||
("onsubmit" "login(event)")
|
||||
(div
|
||||
("id" "flow_1")
|
||||
("style" "display: contents")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "username")
|
||||
(b
|
||||
|
@ -22,7 +22,7 @@
|
|||
("name" "username")
|
||||
("id" "username")))
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "username")
|
||||
(b
|
||||
|
@ -37,7 +37,7 @@
|
|||
("id" "flow_2")
|
||||
("style" "display: none")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "totp")
|
||||
(b
|
||||
|
@ -113,7 +113,7 @@
|
|||
|
||||
(text "{% endblock %} {% block footer %}")
|
||||
(span
|
||||
("class" "small w-full text-center")
|
||||
("class" "small w_full text-center")
|
||||
(text "Or, ")
|
||||
(a
|
||||
("href" "/auth/register")
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
("defer" ""))
|
||||
|
||||
(form
|
||||
("class" "w-full flex flex-col gap-4")
|
||||
("class" "w_full flex flex_col gap_4")
|
||||
("onsubmit" "register(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "username")
|
||||
(b
|
||||
|
@ -23,7 +23,7 @@
|
|||
("name" "username")
|
||||
("id" "username")))
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "password")
|
||||
(b
|
||||
|
@ -36,7 +36,7 @@
|
|||
("id" "password")))
|
||||
(text "{% if config.security.enable_invite_codes -%}")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
("oninput" "check_should_show_purchase(event)")
|
||||
(label
|
||||
("for" "invite_code")
|
||||
|
@ -65,14 +65,14 @@
|
|||
(text "{%- endif %}")
|
||||
(hr)
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"scroll-text\" }}")
|
||||
(b
|
||||
(text "Policies")))
|
||||
(div
|
||||
("class" "card secondary flex flex-col gap-2")
|
||||
("class" "card secondary flex flex_col gap_2")
|
||||
(span
|
||||
(text "By continuing, you agree to the following policies:"))
|
||||
(ul
|
||||
|
@ -85,12 +85,12 @@
|
|||
("href" "{{ config.policies.privacy }}")
|
||||
(text "Privacy policy"))))
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(input
|
||||
("type" "checkbox")
|
||||
("name" "policy_consent")
|
||||
("id" "policy_consent")
|
||||
("class" "w-content")
|
||||
("class" "w_content")
|
||||
("required" ""))
|
||||
(label
|
||||
("for" "policy_consent")
|
||||
|
@ -101,7 +101,7 @@
|
|||
(hr)
|
||||
(text "{% if config.security.enable_invite_codes -%}")
|
||||
(div
|
||||
("class" "w-full flex gap-2 justify-between")
|
||||
("class" "w_full flex gap_2 justify_between")
|
||||
("ui_ident" "purchase_account")
|
||||
|
||||
(button
|
||||
|
@ -115,7 +115,7 @@
|
|||
(icon (text "circle-question-mark"))))
|
||||
|
||||
(div
|
||||
("class" "hidden lowered card w-full no_p_margin")
|
||||
("class" "hidden lowered card w_full no_p_margin")
|
||||
("ui_ident" "purchase_help")
|
||||
(b (text "What does \"Purchase account\" mean?"))
|
||||
(p (text "Your account will be created, but you cannot use it until you activate it for {{ config.stripe.price_texts.supporter }}."))
|
||||
|
@ -170,7 +170,7 @@
|
|||
|
||||
(text "{% endblock %} {% block footer %}")
|
||||
(span
|
||||
("class" "small w-full text-center")
|
||||
("class" "small w_full text-center")
|
||||
(text "Or, ")
|
||||
(a
|
||||
("href" "/auth/login")
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
(text "{% endblock %} {% block title %}Connection{% endblock %} {% block content %}")
|
||||
(div
|
||||
("class" "w-full flex-col gap-2")
|
||||
("class" "w_full flex_col gap_2")
|
||||
("id" "status")
|
||||
(b
|
||||
(text "Working...")))
|
||||
|
|
|
@ -16,29 +16,29 @@
|
|||
(template
|
||||
("id" "loading_skeleton")
|
||||
(div
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
("ui_ident" "loading_skel")
|
||||
(div
|
||||
("class" "card lowered green flex items-center gap-2")
|
||||
("class" "card lowered green flex items_center gap_2")
|
||||
(div ("class" "loader") (icon (text "loader-circle")))
|
||||
(span (str (text "general:label.loading"))))
|
||||
(div
|
||||
("class" "card secondary flex gap-2")
|
||||
("class" "card secondary flex gap_2")
|
||||
(div ("class" "skel avatar"))
|
||||
(div
|
||||
("class" "flex flex-col gap-2 w-full")
|
||||
("class" "flex flex_col gap_2 w_full")
|
||||
(div ("class" "skel") ("style" "width: 25%; height: 25px;"))
|
||||
(div ("class" "skel") ("style" "width: 100%; height: 150px"))))))
|
||||
|
||||
(template
|
||||
("id" "carp_canvas")
|
||||
(div
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div ("ui_ident" "canvas_loc"))
|
||||
(div
|
||||
("class" "flex justify-between gap-2")
|
||||
("class" "flex justify_between gap_2")
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(input
|
||||
("type" "color")
|
||||
("style" "width: 5rem")
|
||||
|
@ -53,7 +53,7 @@
|
|||
("ui_ident" "stroke_range")))
|
||||
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(button
|
||||
("title" "Undo")
|
||||
("ui_ident" "undo")
|
||||
|
@ -138,7 +138,7 @@
|
|||
(dialog
|
||||
("id" "link_filter")
|
||||
(div
|
||||
("class" "inner flex flex-col gap-2")
|
||||
("class" "inner flex flex_col gap_2")
|
||||
|
||||
; warning stuff
|
||||
(p (text "Pressing continue will bring you to the following URL:"))
|
||||
|
@ -147,7 +147,7 @@
|
|||
|
||||
(hr ("class" "margin"))
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
|
||||
(a
|
||||
("class" "button primary")
|
||||
|
@ -168,29 +168,29 @@
|
|||
(dialog
|
||||
("id" "littleweb")
|
||||
(div
|
||||
("class" "inner flex flex-col gap-2")
|
||||
("class" "inner flex flex_col gap_2")
|
||||
|
||||
(a
|
||||
("class" "button w-full lowered justify-start")
|
||||
("class" "button w_full lowered justify-start")
|
||||
("href" "/net")
|
||||
(icon (text "globe"))
|
||||
(str (text "littleweb:label.browser")))
|
||||
|
||||
(a
|
||||
("class" "button w-full lowered justify-start")
|
||||
("class" "button w_full lowered justify-start")
|
||||
("href" "/services")
|
||||
(icon (text "panel-top"))
|
||||
(str (text "littleweb:label.my_services")))
|
||||
|
||||
(a
|
||||
("class" "button w-full lowered justify-start")
|
||||
("class" "button w_full lowered justify-start")
|
||||
("href" "/domains")
|
||||
(icon (text "panel-top"))
|
||||
(str (text "littleweb:label.my_domains")))
|
||||
|
||||
(hr ("class" "margin"))
|
||||
(div
|
||||
("class" "flex gap-2 justify-between")
|
||||
("class" "flex gap_2 justify_between")
|
||||
(div null?)
|
||||
(button
|
||||
("class" "lowered red")
|
||||
|
@ -202,18 +202,18 @@
|
|||
(dialog
|
||||
("id" "web_api_prompt")
|
||||
(div
|
||||
("class" "inner flex flex-col gap-2")
|
||||
("class" "inner flex flex_col gap_2")
|
||||
(form
|
||||
("class" "flex gap-2 flex-col")
|
||||
("class" "flex gap_2 flex_col")
|
||||
("onsubmit" "event.preventDefault()")
|
||||
(label ("for" "prompt") ("id" "web_api_prompt:msg"))
|
||||
(input ("id" "prompt") ("name" "prompt"))
|
||||
|
||||
(div
|
||||
("class" "flex justify-between")
|
||||
("class" "flex justify_between")
|
||||
(div null?)
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(button
|
||||
("class" "primary bold circle")
|
||||
("onclick", "globalThis.web_api_prompt_submit(document.getElementById('prompt').value); document.getElementById('prompt').value = ''")
|
||||
|
@ -231,18 +231,18 @@
|
|||
(dialog
|
||||
("id" "web_api_prompt_long")
|
||||
(div
|
||||
("class" "inner flex flex-col gap-2")
|
||||
("class" "inner flex flex_col gap_2")
|
||||
(form
|
||||
("class" "flex gap-2 flex-col")
|
||||
("class" "flex gap_2 flex_col")
|
||||
("onsubmit" "event.preventDefault()")
|
||||
(label ("for" "prompt_long") ("id" "web_api_prompt_long:msg"))
|
||||
(input ("id" "prompt_long") ("name" "prompt_long"))
|
||||
|
||||
(div
|
||||
("class" "flex justify-between")
|
||||
("class" "flex justify_between")
|
||||
(div null?)
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(button
|
||||
("class" "primary bold circle")
|
||||
("onclick", "globalThis.web_api_prompt_long_submit(document.getElementById('prompt_long').value); document.getElementById('prompt_long').value = ''")
|
||||
|
@ -260,17 +260,17 @@
|
|||
(dialog
|
||||
("id" "web_api_confirm")
|
||||
(div
|
||||
("class" "inner flex flex-col gap-2")
|
||||
("class" "inner flex flex_col gap_2")
|
||||
(form
|
||||
("class" "flex gap-2 flex-col")
|
||||
("class" "flex gap_2 flex_col")
|
||||
("onsubmit" "event.preventDefault()")
|
||||
(span ("id" "web_api_confirm:msg"))
|
||||
|
||||
(div
|
||||
("class" "flex justify-between")
|
||||
("class" "flex justify_between")
|
||||
(div null?)
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(button
|
||||
("class" "primary bold circle")
|
||||
("onclick", "globalThis.web_api_confirm_submit(true)")
|
||||
|
@ -304,14 +304,14 @@
|
|||
(dialog
|
||||
("id" "tokens_dialog")
|
||||
(div
|
||||
("class" "inner flex flex-col gap-2")
|
||||
("class" "inner flex flex_col gap_2")
|
||||
(form
|
||||
("class" "flex gap-2 flex-col")
|
||||
("class" "flex gap_2 flex_col")
|
||||
("onsubmit" "event.preventDefault()")
|
||||
(div ("id" "tokens") ("style" "display: contents"))
|
||||
|
||||
(div
|
||||
("class" "flex justify-between")
|
||||
("class" "flex justify_between")
|
||||
(a
|
||||
("href" "/auth/login")
|
||||
("class" "button")
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
(nav
|
||||
("class" "chats_nav")
|
||||
(button
|
||||
("class" "flex gap-2 items-center active")
|
||||
("class" "flex gap_2 items_center active")
|
||||
("onclick" "toggle_sidebars(event)")
|
||||
(text "{{ icon \"panel-left\" }} {% if community -%}")
|
||||
(b
|
||||
|
@ -19,7 +19,7 @@
|
|||
(div
|
||||
("class" "flex")
|
||||
(div
|
||||
("class" "sidebar flex flex-col items-center gap-2")
|
||||
("class" "sidebar flex flex_col items_center gap_2")
|
||||
("id" "community_list")
|
||||
("style" "width: var(--list-bar-width)")
|
||||
(a
|
||||
|
@ -35,12 +35,12 @@
|
|||
(text "{{ components::community_avatar(id=community.id, community=community, size=\"48px\") }}"))
|
||||
(text "{%- endif %} {% endfor %}"))
|
||||
(div
|
||||
("class" "sidebar flex flex-col gap-2 justify-between")
|
||||
("class" "sidebar flex flex_col gap_2 justify_between")
|
||||
("id" "channels_list")
|
||||
(div
|
||||
("class" "flex flex-col gap-2 w-full")
|
||||
("class" "flex flex_col gap_2 w_full")
|
||||
(div
|
||||
("class" "title flex items-center justify-between channel_header")
|
||||
("class" "title flex items_center justify_between channel_header")
|
||||
(text "{% if community -%}")
|
||||
(b
|
||||
("class" "name shorter")
|
||||
|
@ -73,7 +73,7 @@
|
|||
(text "{%- endif %}"))
|
||||
(text "{% if can_manage_channels -%}")
|
||||
(a
|
||||
("class" "button w-full justify-start lowered")
|
||||
("class" "button w_full justify-start lowered")
|
||||
("href" "/community/{{ selected_community }}/manage#/channels")
|
||||
(text "{{ icon \"plus\" }}")
|
||||
(span
|
||||
|
@ -86,14 +86,14 @@
|
|||
(text "{{ components::user_plate(user=user, show_menu=true) }}"))
|
||||
(text "{% if channel -%}")
|
||||
(div
|
||||
("class" "w-full flex flex-col gap-2 padded_section")
|
||||
("class" "w_full flex flex_col gap_2 padded_section")
|
||||
("id" "stream")
|
||||
("style" "padding: var(--pad-4)")
|
||||
(turbo-frame
|
||||
("id" "stream_body_frame")
|
||||
("src" "/chats/{{ selected_community }}/{{ selected_channel }}/_stream?page={{ page }}&message={{ message }}"))
|
||||
(form
|
||||
("class" "card flex flex-row gap-2")
|
||||
("class" "card flex flex_row gap_2")
|
||||
("onsubmit" "create_message_from_form(event)")
|
||||
(textarea
|
||||
("type" "text")
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
(turbo-frame
|
||||
("id" "channels_list_frame")
|
||||
(div
|
||||
("class" "channels_list_half flex flex-col gap-2 {% if selected_community != 0 or selected_channel == 0%}no_members{%- endif -%}")
|
||||
("class" "channels_list_half flex flex_col gap_2 {% if selected_community != 0 or selected_channel == 0%}no_members{%- endif -%}")
|
||||
(text "{% for channel in channels %}")
|
||||
(div
|
||||
("class" "flex flex-row gap-1")
|
||||
("class" "flex flex_row gap_1")
|
||||
(a
|
||||
("class" "w-full justify-start button {% if selected_channel == channel.id -%}lowered{% else %}camo{%- endif %}")
|
||||
("class" "w_full justify-start button {% if selected_channel == channel.id -%}lowered{% else %}camo{%- endif %}")
|
||||
("href" "/chats/{{ selected_community }}/{{ channel.id }}")
|
||||
("data-turbo" "{{ selected_community == '0' }}")
|
||||
(text "{{ icon \"rss\" }}")
|
||||
|
@ -71,6 +71,6 @@
|
|||
(text "{% endfor %}"))
|
||||
(text "{% if selected_community == 0 and selected_channel -%}")
|
||||
(div
|
||||
("class" "members_list_half flex flex-col gap-2")
|
||||
("class" "members_list_half flex flex_col gap_2")
|
||||
(text "{% for member in members %} {{ components::user_plate(user=member, show_kick=user.id == channel.owner) }} {% endfor %}"))
|
||||
(text "{%- endif %}"))
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
(turbo-frame
|
||||
("id" "stream_body_frame")
|
||||
(div
|
||||
("class" "gap-2")
|
||||
("class" "gap_2")
|
||||
("id" "stream_body")
|
||||
(text "{% if page != 0 -%}")
|
||||
(div
|
||||
("class" "card flex gap-2 small lowered flex-wrap")
|
||||
("class" "card flex gap_2 small lowered flex_wrap")
|
||||
(b
|
||||
(text "{{ text \"chats:label.viewing_old_messages\" }}"))
|
||||
(a
|
||||
|
@ -16,7 +16,7 @@
|
|||
(text "{{ text \"chats:label.go_back\" }}")))
|
||||
(text "{%- endif %} {% if message -%}")
|
||||
(div
|
||||
("class" "card flex gap-2 small lowered flex-wrap")
|
||||
("class" "card flex gap_2 small lowered flex_wrap")
|
||||
(b
|
||||
(text "{{ text \"chats:label.viewing_single_message\" }}"))
|
||||
(a
|
||||
|
@ -27,7 +27,7 @@
|
|||
(text "{{ text \"chats:label.go_back\" }}")))
|
||||
(text "{{ components::message(user=message_owner, message=message, grouped=false) }} {% else %} {% for message in messages %} {{ components::message(user=message[1], message=message[0], grouped=message[2]) }} {% endfor %} {%- endif %} {% if messages|length > 0 -%}")
|
||||
(div
|
||||
("class" "flex gap-2 w-full justify-center")
|
||||
("class" "flex gap_2 w_full justify_center")
|
||||
(a
|
||||
("class" "button")
|
||||
("href" "/chats/{{ community }}/{{ channel.id }}/_stream?page={{ page + 1 }}")
|
||||
|
|
|
@ -45,30 +45,30 @@
|
|||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(article
|
||||
(div
|
||||
("class" "content_container flex flex-col gap-4")
|
||||
("class" "content_container flex flex_col gap_4")
|
||||
(text "{{ components::community_banner(id=community.id, community=community) }}")
|
||||
(div
|
||||
("class" "w-full flex gap-4 flex-collapse")
|
||||
("class" "w_full flex gap_4 flex_collapse")
|
||||
(div
|
||||
("class" "lhs flex flex-col gap-2 sm:w-full")
|
||||
("class" "lhs flex flex_col gap_2 sm:w_full")
|
||||
("style" "width: 22rem; min-width: 22rem")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card flex gap-2")
|
||||
("class" "card flex gap_2")
|
||||
("id" "community_avatar_and_name")
|
||||
(text "{{ components::community_avatar(id=community.id, community=community, size=\"72px\") }}")
|
||||
(div
|
||||
("class" "flex flex-col")
|
||||
("class" "flex flex_col")
|
||||
(div
|
||||
("class" "flex gap-2 items-center")
|
||||
("class" "flex gap_2 items_center")
|
||||
(h3
|
||||
("id" "title")
|
||||
("class" "title name shorter flex gap-2")
|
||||
("class" "title name shorter flex gap_2")
|
||||
(text "{% if community.context.display_name -%} {{ community.context.display_name }} {% else %} {{ community.title }} {%- endif %} {% if community.context.is_nsfw -%}")
|
||||
(span
|
||||
("title" "NSFW community")
|
||||
("class" "flex items-center")
|
||||
("class" "flex items_center")
|
||||
("style" "color: var(--color-primary)")
|
||||
(text "{{ icon \"square-asterisk\" }}"))
|
||||
(text "{%- endif %}")))
|
||||
|
@ -78,12 +78,12 @@
|
|||
(text "{{ components::community_actions(community=community) }}"))
|
||||
(text "{{ components::community_info(community=community) }}"))
|
||||
(div
|
||||
("class" "rhs w-full")
|
||||
("class" "rhs w_full")
|
||||
(text "{% if can_read -%} {% block content %}{% endblock %} {% else %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"frown\" }}")
|
||||
(b
|
||||
(text "{{ text \"communities:label.not_allowed_to_read\" }}")))
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{% if drafts|length > 0 -%}")
|
||||
(div
|
||||
("class" "pillmenu")
|
||||
|
@ -23,12 +23,12 @@
|
|||
(text "{{ text \"communities:label.drafts\" }}"))))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("data-tab" "create")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(span
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ icon \"pen\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:label.create_post\" }}")))
|
||||
|
@ -39,19 +39,19 @@
|
|||
(span
|
||||
(text "{{ text \"dialog:action.cancel\" }}"))))
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
(text "{% if draft -%}")
|
||||
(div
|
||||
("class" "card secondary w-full flex items-center justify-between gap-2 small")
|
||||
("class" "card secondary w_full flex items_center justify_between gap_2 small")
|
||||
(a
|
||||
("class" "flex items-center gap-2 flush")
|
||||
("class" "flex items_center gap_2 flush")
|
||||
("href" "#/drafts")
|
||||
(text "{{ icon \"notepad-text-dashed\" }}")
|
||||
(span
|
||||
("class" "date")
|
||||
(text "{{ draft.created }}")))
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(a
|
||||
("href" "?")
|
||||
("class" "button lowered small")
|
||||
|
@ -66,9 +66,9 @@
|
|||
(text "{{ text \"general:action.delete\" }}")))))
|
||||
(text "{%- endif %} {% if quoting -%}")
|
||||
(div
|
||||
("class" "card secondary w-full flex items-center justify-between gap-2 small")
|
||||
("class" "card secondary w_full flex items_center justify_between gap_2 small")
|
||||
(a
|
||||
("class" "flex items-center gap-2 flush")
|
||||
("class" "flex items_center gap_2 flush")
|
||||
("href" "/post/{{ quoting[1].id }}")
|
||||
(text "{{ icon \"quote\" }}")
|
||||
(span
|
||||
|
@ -81,9 +81,9 @@
|
|||
(text "{{ text \"dialog:action.cancel\" }}"))))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex flex-row gap-2 items-center")
|
||||
("class" "card small flex flex_row gap_2 items_center")
|
||||
(text "{{ components::avatar(username=user.id, size=\"32px\", selector_type=\"id\") }}")
|
||||
(select
|
||||
("id" "community_to_post_to")
|
||||
|
@ -106,11 +106,11 @@
|
|||
(text "{{ stack.name }} (circle)"))
|
||||
(text "{% endfor %}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("id" "create_form")
|
||||
("onsubmit" "create_post_from_form(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1 hidden")
|
||||
("class" "flex flex_col gap_1 hidden")
|
||||
("id" "title_field")
|
||||
(label
|
||||
("for" "content")
|
||||
|
@ -123,7 +123,7 @@
|
|||
("minlength" "2")
|
||||
("maxlength" "128")))
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "content")
|
||||
(text "{{ text \"communities:label.content\" }}"))
|
||||
|
@ -137,12 +137,12 @@
|
|||
(text "{% if draft -%}{{ draft.content }}{%- endif %}")))
|
||||
(div
|
||||
("id" "files_list")
|
||||
("class" "flex gap-2 flex-wrap"))
|
||||
("class" "flex gap_2 flex_wrap"))
|
||||
(div
|
||||
("class" "flex justify-between flex-collapse gap-2")
|
||||
("class" "flex justify_between flex_collapse gap_2")
|
||||
(text "{{ components::create_post_options() }}")
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(text "{% if not quoting -%} {% if draft -%}")
|
||||
(button
|
||||
("class" "secondary small square")
|
||||
|
@ -351,20 +351,20 @@
|
|||
(text "{%- endif %}")))
|
||||
(text "{% if drafts|length > 0 -%}")
|
||||
(div
|
||||
("class" "card-nest lowered hidden")
|
||||
("class" "card_nest lowered hidden")
|
||||
("data-tab" "drafts")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"notepad-text-dashed\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:label.drafts\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{{ components::supporter_ad(body=\"Become a supporter to save infinite post drafts!\") }} {% for draft in drafts %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex flex-col gap-2")
|
||||
("class" "card small flex flex_col gap_2")
|
||||
(span
|
||||
("class" "no_p_margin")
|
||||
(text "{{ draft.content|markdown|safe }}"))
|
||||
|
@ -372,7 +372,7 @@
|
|||
("class" "fade date")
|
||||
(text "{{ draft.created }}")))
|
||||
(div
|
||||
("class" "card flex gap-2 secondary")
|
||||
("class" "card flex gap_2 secondary")
|
||||
(a
|
||||
("href" "?from_draft={{ draft.id }}")
|
||||
("class" "button small")
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
(text "{% import \"components.html\" as components %} {% extends \"communities/base.html\" %} {% block content %}")
|
||||
(div
|
||||
("class" "flex flex-col gap-4 w-full")
|
||||
("class" "flex flex_col gap_4 w_full")
|
||||
(text "{{ macros::community_nav(community=community, selected=\"posts\") }} {% if pinned|length != 0 %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex gap-2 items-center")
|
||||
("class" "card small flex gap_2 items_center")
|
||||
(text "{{ icon \"pin\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:label.pinned\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-4")
|
||||
("class" "card flex flex_col gap_4")
|
||||
(text "{% for post in pinned %} {% if post[0].context.repost and post[0].context.repost.reposting -%} {{ components::repost(repost=post[2], post=post[0], owner=post[1], secondary=true, show_community=false, can_manage_post=can_manage_posts) }} {% else %} {{ components::post(post=post[0], owner=post[1], question=post[3], secondary=true, show_community=false, can_manage_post=can_manage_posts, poll=post[4]) }} {%- endif %} {% endfor %}")))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex gap-2 items-center")
|
||||
("class" "card small flex gap_2 items_center")
|
||||
(text "{{ icon \"newspaper\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:label.posts\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-4")
|
||||
("class" "card flex flex_col gap_4")
|
||||
(text "{% for post in feed %} {% if post[0].context.repost and post[0].context.repost.reposting -%} {{ components::repost(repost=post[2], post=post[0], owner=post[1], secondary=true, show_community=false, can_manage_post=can_manage_posts) }} {% else %} {{ components::post(post=post[0], owner=post[1], question=post[3], secondary=true, show_community=false, can_manage_post=can_manage_posts, poll=post[4]) }} {%- endif %} {% endfor %} {{ components::pagination(page=page, items=feed|length) }}"))))
|
||||
|
||||
(text "{% endblock %}")
|
||||
|
|
|
@ -4,19 +4,19 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav(selected=\"communities\") }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{% if user -%}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"communities:label.create_new\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "create_community_from_form(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "title")
|
||||
(text "{{ text \"communities:label.name\" }}"))
|
||||
|
@ -28,21 +28,31 @@
|
|||
("required" "")
|
||||
("minlength" "2")
|
||||
("maxlength" "32")))
|
||||
(label
|
||||
("for" "is_forum")
|
||||
("class" "flex items_center gap_2")
|
||||
(input
|
||||
("type" "checkbox")
|
||||
("id" "is_forum")
|
||||
("name" "is_forum")
|
||||
("class" "w_content"))
|
||||
(span
|
||||
(text "Is forum")))
|
||||
(button
|
||||
(text "{{ text \"communities:action.create\" }}"))))
|
||||
(text "{% if list|length >= 4 -%} {{ components::supporter_ad(body=\"Become a supporter to create up to 10 communities!\") }} {%- endif %} {%- endif %}")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ icon \"award\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:label.my_communities\" }}")))
|
||||
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(a
|
||||
("href" "/forges")
|
||||
("class" "button lowered small")
|
||||
|
@ -58,17 +68,17 @@
|
|||
("class" "desktop")
|
||||
(text "{{ text \"communities:label.join_new\" }}")))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for item in list %} {{ components::community_listing_card(community=item) }} {% endfor %}")))
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"trending-up\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:label.popular_communities\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for item in popular_list %} {{ components::community_listing_card(community=item) }} {% endfor %}"))))
|
||||
|
||||
(script
|
||||
|
@ -83,6 +93,7 @@
|
|||
},
|
||||
body: JSON.stringify({
|
||||
title: e.target.title.value,
|
||||
forum: e.target.is_forum.checked,
|
||||
}),
|
||||
})
|
||||
.then((res) => res.json())
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
(text "{% import \"components.html\" as components %} {% extends \"communities/base.html\" %} {% block content %}")
|
||||
(div
|
||||
("class" "flex flex-col gap-4 w-full")
|
||||
("class" "flex flex_col gap_4 w_full")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex gap-2 items-center")
|
||||
("class" "card small flex gap_2 items_center")
|
||||
(text "{{ icon \"users-round\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:tab.members\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-4")
|
||||
("class" "card flex flex_col gap_4")
|
||||
(text "{% if page == 0 -%}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"crown\" }}")
|
||||
(span
|
||||
(text "Owner")))
|
||||
|
@ -22,9 +22,9 @@
|
|||
(text "{%- endif %}")
|
||||
(text "{% for item in list %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2 justify-between")
|
||||
("class" "card small flex items_center gap_2 justify_between")
|
||||
(span
|
||||
(text "Since ")
|
||||
(span
|
||||
|
|
|
@ -4,23 +4,23 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("style" "display: contents")
|
||||
(text "{{ components::question(question=question, owner=owner) }}"))
|
||||
(text "{% if user and (user.id == question.receiver or question.is_global) and not has_answered %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"square-pen\" }}")
|
||||
(b
|
||||
(text "{{ text \"requests:label.answer\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "answer_question_from_form(event, '{{ question.id }}')")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "content")
|
||||
(text "{{ text \"communities:label.content\" }}"))
|
||||
|
@ -34,23 +34,23 @@
|
|||
("maxlength" "4096")))
|
||||
(div
|
||||
("id" "files_list")
|
||||
("class" "flex gap-2 flex-wrap"))
|
||||
("class" "flex gap_2 flex_wrap"))
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(text "{{ components::emoji_picker(element_id=\"content\", render_dialog=true) }} {% if is_supporter -%} {{ components::file_picker(files_list_id=\"files_list\") }} {% endif %}")
|
||||
(button
|
||||
(text "{{ text \"requests:label.answer\" }}")))))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
("data-tab" "replies")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"newspaper\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:label.replies\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-4")
|
||||
("class" "card flex flex_col gap_4")
|
||||
(text "{% for post in replies %} {{ components::post(post=post[0], owner=post[1], question=false, secondary=true, show_community=false) }} {% endfor %} {{ components::pagination(page=page, items=replies|length) }}"))))
|
||||
|
||||
(script
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
(text "{% import \"components.html\" as components %} {% extends \"communities/base.html\" %} {% block content %}")
|
||||
(div
|
||||
("class" "flex flex-col gap-4 w-full")
|
||||
("class" "flex flex_col gap_4 w_full")
|
||||
(text "{{ macros::community_nav(community=community, selected=\"questions\") }}")
|
||||
(text "{% if user and can_post -%}")
|
||||
(div
|
||||
|
@ -8,14 +8,14 @@
|
|||
(text "{{ components::create_question_form(community=community.id, is_global=true) }}"))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex gap-2 items-center")
|
||||
("class" "card small flex gap_2 items_center")
|
||||
(text "{{ icon \"newspaper\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:label.questions\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-4")
|
||||
("class" "card flex flex_col gap_4")
|
||||
(text "{% for question in feed %} {{ components::global_question(question=question, can_manage_questions=can_manage_questions, show_community=false, secondary=true) }} {% endfor %} {{ components::pagination(page=page, items=feed|length) }}"))))
|
||||
|
||||
(text "{% endblock %}")
|
||||
|
|
|
@ -4,18 +4,18 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav(selected=\"communities\") }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"search\" }}")
|
||||
(span
|
||||
(text "{{ text \"general:link.search\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-4")
|
||||
("class" "card flex flex_col gap_4")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "text")
|
||||
(text "{{ text \"communities:label.query\" }}"))
|
||||
|
@ -30,14 +30,14 @@
|
|||
(button
|
||||
(text "{{ text \"dialog:action.continue\" }}"))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"book-marked\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:label.search_results\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-4")
|
||||
("class" "card flex flex_col gap_4")
|
||||
(text "{% for item in list %} {{ components::community_listing_card(community=item) }} {% endfor %} {{ components::pagination(page=page, items=list|length, key=\"&text=\", value=text) }}"))))
|
||||
|
||||
(text "{% endblock %}")
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "pillmenu")
|
||||
(a
|
||||
|
@ -42,13 +42,13 @@
|
|||
(text "{{ text \"communities:tab.emojis\" }}")))
|
||||
(text "{%- endif %}"))
|
||||
(div
|
||||
("class" "w-full flex flex-col gap-2")
|
||||
("class" "w_full flex flex_col gap_2")
|
||||
("data-tab" "general")
|
||||
(div
|
||||
("id" "manage_fields")
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "read_access")
|
||||
(div
|
||||
("class" "card small")
|
||||
|
@ -67,7 +67,7 @@
|
|||
("selected" "{% if community.read_access == 'Joined' -%}true{% else %}false{%- endif %}")
|
||||
(text "Joined")))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "join_access")
|
||||
(div
|
||||
("class" "card small")
|
||||
|
@ -90,7 +90,7 @@
|
|||
("selected" "{% if community.join_access == 'Nobody' -%}true{% else %}false{%- endif %}")
|
||||
(text "Nobody")))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "write_access")
|
||||
(div
|
||||
("class" "card small")
|
||||
|
@ -113,17 +113,17 @@
|
|||
("selected" "{% if community.write_access == 'Owner' -%}true{% else %}false{%- endif %}")
|
||||
(text "Owner only")))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "change_title")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"communities:label.change_title\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "change_title(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "new_title")
|
||||
(text "{{ text \"communities:label.new_title\" }}"))
|
||||
|
@ -139,15 +139,15 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.save\" }}"))))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "danger_zone")
|
||||
(div
|
||||
("class" "card small flex gap-1 items-center red")
|
||||
("class" "card small flex gap_1 items_center red")
|
||||
(text "{{ icon \"skull\" }}")
|
||||
(b
|
||||
(text "{{ text \"communities:label.danger_zone\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-wrap gap-2")
|
||||
("class" "card flex flex_wrap gap_2")
|
||||
(button
|
||||
("class" "red lowered")
|
||||
("onclick" "delete_community()")
|
||||
|
@ -155,7 +155,7 @@
|
|||
(span
|
||||
(text "{{ text \"communities:label.delete_community\" }}")))))
|
||||
(div
|
||||
("class" "flex gap-2 flex-wrap")
|
||||
("class" "flex gap_2 flex_wrap")
|
||||
(button
|
||||
("onclick" "save_context()")
|
||||
(text "{{ icon \"check\" }}")
|
||||
|
@ -168,17 +168,17 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.back\" }}")))))
|
||||
(div
|
||||
("class" "card lowered w-full hidden flex flex-col gap-2")
|
||||
("class" "card lowered w_full hidden flex flex_col gap_2")
|
||||
("data-tab" "images")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "change_avatar")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"settings:label.change_avatar\" }}")))
|
||||
(form
|
||||
("class" "card flex gap-2 flex-row flex-wrap items-center")
|
||||
("class" "card flex gap_2 flex_row flex_wrap items_center")
|
||||
("method" "post")
|
||||
("enctype" "multipart/form-data")
|
||||
("onsubmit" "upload_avatar(event)")
|
||||
|
@ -187,50 +187,50 @@
|
|||
("name" "file")
|
||||
("type" "file")
|
||||
("accept" "image/png,image/jpeg,image/avif,image/webp,image/gif")
|
||||
("class" "w-content"))
|
||||
("class" "w_content"))
|
||||
(button
|
||||
(text "{{ icon \"check\" }}"))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "change_banner")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"settings:label.change_banner\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("method" "post")
|
||||
("enctype" "multipart/form-data")
|
||||
("onsubmit" "upload_banner(event)")
|
||||
(div
|
||||
("class" "flex gap-2 flex-row flex-wrap items-center")
|
||||
("class" "flex gap_2 flex_row flex_wrap items_center")
|
||||
(input
|
||||
("id" "banner_file")
|
||||
("name" "file")
|
||||
("type" "file")
|
||||
("accept" "image/png,image/jpeg,image/avif,image/webp")
|
||||
("class" "w-content"))
|
||||
("class" "w_content"))
|
||||
(button
|
||||
(text "{{ icon \"check\" }}")))
|
||||
(span
|
||||
("class" "fade")
|
||||
(text "Use an image of 1100x350px for the best results.")))))
|
||||
(div
|
||||
("class" "card lowered w-full hidden flex flex-col gap-2")
|
||||
("class" "card lowered w_full hidden flex flex_col gap_2")
|
||||
("data-tab" "members")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"communities:label.select_member\" }}")))
|
||||
(form
|
||||
("class" "card flex-col gap-2")
|
||||
("class" "card flex_col gap_2")
|
||||
("onsubmit" "select_user_from_form(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "uid")
|
||||
(text "{{ text \"communities:label.user_id\" }}"))
|
||||
|
@ -244,15 +244,15 @@
|
|||
(button
|
||||
(text "{{ text \"communities:action.select\" }}")))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2 w-full")
|
||||
("class" "card flex flex_col gap_2 w_full")
|
||||
("id" "membership_info"))
|
||||
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ icon \"blocks\" }}")
|
||||
(span
|
||||
(text "{{ text \"mod_panel:label.permissions_level_builder\" }}")))
|
||||
|
@ -263,23 +263,23 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.save\" }}"))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("id" "permission_builder"))))
|
||||
(text "{% if can_manage_channels -%}")
|
||||
(div
|
||||
("class" "card lowered w-full hidden flex flex-col gap-2")
|
||||
("class" "card lowered w_full hidden flex flex_col gap_2")
|
||||
("data-tab" "channels")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"communities:action.create_channel\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "create_channel_from_form(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "title")
|
||||
(text "{{ text \"communities:label.name\" }}"))
|
||||
|
@ -295,14 +295,14 @@
|
|||
(text "{{ text \"communities:action.create\" }}"))))
|
||||
(text "{% for channel in channels %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ channel.position }} "))
|
||||
(text "{{ channel.title }}"))
|
||||
(div
|
||||
("class" "card flex gap-2")
|
||||
("class" "card flex gap_2")
|
||||
(button
|
||||
("class" "red lowered small")
|
||||
("onclick" "delete_channel('{{ channel.id }}')")
|
||||
|
@ -423,22 +423,22 @@
|
|||
}"))
|
||||
(text "{%- endif %} {% if can_manage_emojis -%}")
|
||||
(div
|
||||
("class" "card lowered w-full hidden flex flex-col gap-2")
|
||||
("class" "card lowered w_full hidden flex flex_col gap_2")
|
||||
("data-tab" "emojis")
|
||||
(text "{{ components::supporter_ad(body=\"Become a supporter to upload GIF animated emojis!\") }}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "change_banner")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"upload\" }}")
|
||||
(b
|
||||
(text "{{ text \"communities:label.upload\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "upload_emoji(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "name")
|
||||
(text "{{ text \"communities:label.name\" }}"))
|
||||
|
@ -451,7 +451,7 @@
|
|||
("minlength" "2")
|
||||
("maxlength" "32")))
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "file")
|
||||
(text "{{ text \"communities:label.file\" }}"))
|
||||
|
@ -460,7 +460,7 @@
|
|||
("name" "file")
|
||||
("type" "file")
|
||||
("accept" "image/png,image/jpeg,image/avif,image/webp")
|
||||
("class" "w-full")))
|
||||
("class" "w_full")))
|
||||
(button
|
||||
(text "{{ text \"communities:action.create\" }}"))
|
||||
(span
|
||||
|
@ -469,9 +469,9 @@
|
|||
height)."))))
|
||||
(text "{% for emoji in emojis %}")
|
||||
(div
|
||||
("class" "card secondary flex flex-wrap gap-2 items-center justify-between")
|
||||
("class" "card secondary flex flex_wrap gap_2 items_center justify_between")
|
||||
(div
|
||||
("class" "flex gap-2 items-center")
|
||||
("class" "flex gap_2 items_center")
|
||||
(img
|
||||
("src" "/api/v1/communities/{{ community.id }}/emojis/{{ emoji.name }}")
|
||||
("alt" "{{ emoji.name }}")
|
||||
|
@ -480,7 +480,7 @@
|
|||
(b
|
||||
(text "{{ emoji.name }}")))
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(button
|
||||
("class" "lowered small")
|
||||
("onclick" "rename_emoji('{{ emoji.id }}')")
|
||||
|
@ -694,7 +694,7 @@
|
|||
);
|
||||
|
||||
// ...
|
||||
element.innerHTML = `<div class=\"flex gap-2 flex-wrap\" ui_ident=\"actions\">
|
||||
element.innerHTML = `<div class=\"flex gap_2 flex_wrap\" ui_ident=\"actions\">
|
||||
<a target=\"_blank\" class=\"button\" href=\"/api/v1/auth/user/find/${e.target.uid.value}\">Open user profile</a>
|
||||
${res.payload.role !== 33 ? `<button class=\"red lowered\" onclick=\"update_user_role('${e.target.uid.value}', 33)\">Ban</button>` : `<button class=\"lowered\" onclick=\"update_user_role('${e.target.uid.value}', 5)\">Unban</button>`}
|
||||
${res.payload.role !== 65 ? `<button class=\"red lowered\" onclick=\"update_user_role('${e.target.uid.value}', 65)\">Send to review</button>` : `<button class=\"green lowered\" onclick=\"update_user_role('${e.target.uid.value}', 5)\">Accept join request</button>`}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -4,32 +4,32 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "w-full flex flex-col gap-2")
|
||||
("class" "w_full flex flex_col gap_2")
|
||||
(div
|
||||
("id" "manage_fields")
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(icon (text "database"))
|
||||
(b (str (text "developer:label.data_usage"))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(p ("class" "fade") (text "App data keys are not included in this metric, only stored values count towards your limit."))
|
||||
(text "{% set percentage = (app.data_used / data_limit) * 100 %}")
|
||||
(div ("class" "progress_bar") (div ("class" "poll_bar") ("style" "width: {{ percentage }}%")))
|
||||
(div
|
||||
("class" "w-full flex justify-between items-center")
|
||||
("class" "w_full flex justify_between items_center")
|
||||
(span (text "{{ app.data_used|filesizeformat }}"))
|
||||
(span (text "{{ data_limit|filesizeformat }}")))))
|
||||
(text "{% if is_helper -%}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(icon (text "infinity"))
|
||||
(b (str (text "developer:label.change_quota_status"))))
|
||||
(div
|
||||
|
@ -45,9 +45,9 @@
|
|||
("selected" "{% if app.quota_status == 'Unlimited' -%}true{% else %}false{%- endif %}")
|
||||
(text "Unlimited")))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(icon (text "database-zap"))
|
||||
(b (str (text "developer:label.change_storage_capacity"))))
|
||||
(div
|
||||
|
@ -68,16 +68,16 @@
|
|||
(text "Tier 3 (100 MB)")))))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(icon (text "pencil"))
|
||||
(b (str (text "developer:label.change_title"))))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "change_title(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "title")
|
||||
(text "{{ text \"communities:label.new_title\" }}"))
|
||||
|
@ -93,16 +93,16 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.save\" }}")))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(icon (text "house"))
|
||||
(b (str (text "developer:label.change_homepage"))))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "change_homepage(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "homepage")
|
||||
(text "{{ text \"developer:label.homepage\" }}"))
|
||||
|
@ -118,16 +118,16 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.save\" }}")))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(icon (text "goal"))
|
||||
(b (str (text "developer:label.change_redirect"))))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "change_redirect(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "redirect")
|
||||
(text "{{ text \"developer:label.redirect\" }}"))
|
||||
|
@ -143,16 +143,16 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.save\" }}")))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(icon (text "telescope"))
|
||||
(b (str (text "developer:label.manage_scopes"))))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "change_scopes(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "scopes")
|
||||
(text "{{ text \"developer:label.scopes\" }}"))
|
||||
|
@ -165,12 +165,12 @@
|
|||
("minlength" "2")
|
||||
("value" "{% for scope in app.scopes -%} {{ scope }} {% endfor %}")))
|
||||
|
||||
(pre ("class" "hidden red w-full") (code ("id" "scope_error_message") ("style" "white-space: pre-wrap")))
|
||||
(pre ("class" "hidden red w_full") (code ("id" "scope_error_message") ("style" "white-space: pre-wrap")))
|
||||
|
||||
(details
|
||||
(summary ("class" "button lowered small") (icon (text "circle-question-mark")) (text "Help"))
|
||||
(div
|
||||
("class" "card flex flex-col gap-1")
|
||||
("class" "card flex flex_col gap_1")
|
||||
(span ("class" "fade") (text "Scopes should be separated by a single space."))
|
||||
(a
|
||||
("class" "button")
|
||||
|
@ -183,20 +183,20 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.save\" }}")))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(icon (text "rotate-ccw-key"))
|
||||
(b (str (text "developer:label.secret_key"))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(p ("class" "fade") (text "Your app's API key can only be seen once, so don't lose it. Rolling the key will invalidate the old one."))
|
||||
(pre (code ("id" "new_key")))
|
||||
(button
|
||||
("onclick" "roll_key()")
|
||||
(str (text "developer:label.roll_key"))))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(ul
|
||||
(li (b (text "Homepage: ")) (text "{{ app.homepage }}"))
|
||||
(li (b (text "Redirect URL: ")) (text "{{ app.redirect }}"))
|
||||
|
@ -211,21 +211,21 @@
|
|||
("target" "_blank")
|
||||
(icon (text "external-link")) (text "Docs")))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex gap-1 items-center red")
|
||||
("class" "card small flex gap_1 items_center red")
|
||||
(text "{{ icon \"skull\" }}")
|
||||
(b
|
||||
(text "{{ text \"communities:label.danger_zone\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-wrap gap-2")
|
||||
("class" "card flex flex_wrap gap_2")
|
||||
(button
|
||||
("class" "red lowered")
|
||||
("onclick" "delete_app()")
|
||||
(text "{{ icon \"trash\" }}")
|
||||
(span (str (text "developer:action.delete"))))))
|
||||
(div
|
||||
("class" "flex gap-2 flex-wrap")
|
||||
("class" "flex gap_2 flex_wrap")
|
||||
(a
|
||||
("href" "/developer")
|
||||
("class" "button secondary")
|
||||
|
|
|
@ -4,21 +4,21 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav(selected=\"\") }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
; create new
|
||||
(text "{{ components::supporter_ad(body=\"Become a supporter to create multiple apps!\") }}")
|
||||
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"developer:label.create_new\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "create_app_from_form(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "title")
|
||||
(text "{{ text \"communities:label.name\" }}"))
|
||||
|
@ -31,7 +31,7 @@
|
|||
("minlength" "2")
|
||||
("maxlength" "32")))
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "title")
|
||||
(text "{{ text \"developer:label.homepage\" }}"))
|
||||
|
@ -43,7 +43,7 @@
|
|||
("required" "")
|
||||
("minlength" "2")))
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "title")
|
||||
(text "{{ text \"developer:label.redirect\" }} (optional)"))
|
||||
|
@ -58,20 +58,20 @@
|
|||
|
||||
; app listing
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(icon (text "bot"))
|
||||
(str (text "developer:label.my_apps")))
|
||||
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for item in list %}")
|
||||
(a
|
||||
("href" "/developer/app/{{ item.id }}")
|
||||
("class" "card secondary flex flex-col gap-2")
|
||||
("class" "card secondary flex flex_col gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ icon \"code\" }}")
|
||||
(b
|
||||
(text "{{ item.title }}")))
|
||||
|
@ -85,9 +85,9 @@
|
|||
|
||||
; useful links
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(icon (text "circle-question-mark"))
|
||||
(str (text "developer:label.guides_and_help")))
|
||||
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "w-full flex flex-col gap-2")
|
||||
("class" "w_full flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(h4 (text "Would you like to allow \"{{ app.title }}\" to access your account?"))
|
||||
(p (text "This app is requesting the following permissions on your account:"))
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
|||
(p (text "You can revoke this app's permissions at any time through your connection settings.")))
|
||||
|
||||
(div
|
||||
("class" "card flex gap-2")
|
||||
("class" "card flex gap_2")
|
||||
(button
|
||||
("onclick" "authorize()")
|
||||
(str (text "developer:action.authorize")))
|
||||
|
|
|
@ -47,24 +47,24 @@
|
|||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
(div
|
||||
("class" "content_container flex flex-col gap-4")
|
||||
("class" "content_container flex flex_col gap_4")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card flex gap-2")
|
||||
("class" "card flex gap_2")
|
||||
("id" "community_avatar_and_name")
|
||||
(text "{{ components::community_avatar(id=community.id, community=community, size=\"72px\") }}")
|
||||
(div
|
||||
("class" "flex flex-col")
|
||||
("class" "flex flex_col")
|
||||
(div
|
||||
("class" "flex gap-2 items-center")
|
||||
("class" "flex gap_2 items_center")
|
||||
(h3
|
||||
("id" "title")
|
||||
("class" "title name shorter flex gap-2")
|
||||
("class" "title name shorter flex gap_2")
|
||||
(text "{% if community.context.display_name -%} {{ community.context.display_name }} {% else %} {{ community.title }} {%- endif %} {% if community.context.is_nsfw -%}")
|
||||
(span
|
||||
("title" "NSFW community")
|
||||
("class" "flex items-center")
|
||||
("class" "flex items_center")
|
||||
("style" "color: var(--color-primary)")
|
||||
(text "{{ icon \"square-asterisk\" }}"))
|
||||
(text "{%- endif %}")))
|
||||
|
|
|
@ -4,20 +4,20 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav(selected=\"\") }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
; create new
|
||||
(text "{% if user.secondary_permissions|has_dev_pass -%}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"forge:label.create_new\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "create_community_from_form(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "title")
|
||||
(text "{{ text \"communities:label.name\" }}"))
|
||||
|
@ -37,14 +37,14 @@
|
|||
|
||||
; forge listing
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(icon (text "anvil"))
|
||||
(str (text "forge:label.my_forges")))
|
||||
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for item in list %} {{ components::community_listing_card(community=item) }} {% endfor %}"))))
|
||||
|
||||
(script
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
(text "{% extends \"forge/base.html\" %} {% block content %}")
|
||||
(div
|
||||
("class" "flex flex-col gap-4 w-full")
|
||||
("class" "flex flex_col gap_4 w_full")
|
||||
(text "{{ macros::forge_nav(community=community, selected=\"info\") }}")
|
||||
(text "{{ components::community_info(community=community) }}"))
|
||||
(text "{% endblock %}")
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
(text "{% extends \"forge/base.html\" %} {% block content %}")
|
||||
(div
|
||||
("class" "flex flex-col gap-4 w-full")
|
||||
("class" "flex flex_col gap_4 w_full")
|
||||
(text "{{ macros::forge_nav(community=community, selected=\"tickets\") }}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(icon (text "pin"))
|
||||
(str (text "communities:label.pinned")))
|
||||
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for post in pinned -%}")
|
||||
(text "{{ components::ticket(post=post[0], owner=post[1]) }}")
|
||||
(text "{%- endfor %}")))
|
||||
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(icon (text "circle-dot"))
|
||||
(str (text "forge:tab.tickets")))
|
||||
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for post in feed -%}")
|
||||
(text "{{ components::ticket(post=post[0], owner=post[1]) }}")
|
||||
(text "{%- endfor %}")
|
||||
|
|
|
@ -99,7 +99,7 @@
|
|||
(nav
|
||||
("class" "chats_nav")
|
||||
(button
|
||||
("class" "flex gap-2 items-center active")
|
||||
("class" "flex gap_2 items_center active")
|
||||
("onclick" "toggle_sidebars(event)")
|
||||
(text "{{ icon \"panel-left\" }} {% if community -%}")
|
||||
(b
|
||||
|
@ -116,12 +116,12 @@
|
|||
(text "{% if not view_mode -%}")
|
||||
; this isn't shown if we're in view mode
|
||||
(div
|
||||
("class" "sidebar flex flex-col gap-2 justify-between")
|
||||
("class" "sidebar flex flex_col gap_2 justify_between")
|
||||
("id" "notes_list")
|
||||
(div
|
||||
("class" "flex flex-col gap-2 w-full")
|
||||
("class" "flex flex_col gap_2 w_full")
|
||||
(button
|
||||
("class" "lowered justify-start w-full")
|
||||
("class" "lowered justify-start w_full")
|
||||
("onclick" "create_journal()")
|
||||
(icon (text "plus"))
|
||||
(str (text "journals:action.create_journal")))
|
||||
|
@ -132,21 +132,21 @@
|
|||
(text "{%- endif %}")
|
||||
; editor
|
||||
(div
|
||||
("class" "w-full padded_section")
|
||||
("class" "w_full padded_section")
|
||||
("id" "editor")
|
||||
("style" "padding: var(--pad-4)")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
; the journal/note header is always shown
|
||||
(text "{% if journal and not global_mode -%}")
|
||||
(div
|
||||
("class" "mobile_nav w-full flex items-center justify-between gap-2")
|
||||
("class" "mobile_nav w_full flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "flex gap-2 items-center")
|
||||
("class" "flex gap_2 items_center")
|
||||
(a
|
||||
("class" "flex items-center")
|
||||
("class" "flex items_center")
|
||||
("href" "/@{{ owner.username }}")
|
||||
(text "{{ components::avatar(username=owner.username, selector_type=\"username\", size=\"18px\") }}"))
|
||||
|
||||
|
@ -182,7 +182,7 @@
|
|||
(text "{% if selected_journal == 0 -%}")
|
||||
; no journal selected
|
||||
(div
|
||||
("class" "card w-full flex flex-col gap-2")
|
||||
("class" "card w_full flex flex_col gap_2")
|
||||
(h3 (str (text "journals:label.welcome")))
|
||||
(span (str (text "journals:label.select_a_journal")))
|
||||
(span ("class" "mobile") (str (text "journals:label.mobile_click_my_journals")))
|
||||
|
@ -195,7 +195,7 @@
|
|||
(text "{% if not view_mode -%}")
|
||||
; we're the journal owner and we're not in view mode
|
||||
(div
|
||||
("class" "card w-full flex flex-col gap-2")
|
||||
("class" "card w_full flex flex_col gap_2")
|
||||
(h3 (text "{{ journal.title }}"))
|
||||
(span (str (text "journals:label.select_a_note")))
|
||||
(button
|
||||
|
@ -205,16 +205,16 @@
|
|||
|
||||
; we'll also let users edit the journal's settings here i guess
|
||||
(details
|
||||
("class" "w-full")
|
||||
("class" "w_full")
|
||||
(summary
|
||||
("class" "button lowered w-full justify-start")
|
||||
("class" "button lowered w_full justify-start")
|
||||
(icon (text "settings"))
|
||||
(str (text "general:action.manage")))
|
||||
|
||||
(div
|
||||
("class" "card flex flex-col gap-2 lowered")
|
||||
("class" "card flex flex_col gap_2 lowered")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
|
@ -233,7 +233,7 @@
|
|||
(text "Public")))))
|
||||
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(label
|
||||
|
@ -241,10 +241,10 @@
|
|||
(b (str (text "communities:label.title")))))
|
||||
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "change_journal_title(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(input
|
||||
("type" "text")
|
||||
("name" "title")
|
||||
|
@ -259,23 +259,23 @@
|
|||
|
||||
; users should also be able to manage the journal's sub directories here
|
||||
(details
|
||||
("class" "w-full")
|
||||
("class" "w_full")
|
||||
(summary
|
||||
("class" "button lowered w-full justify-start")
|
||||
("class" "button lowered w_full justify-start")
|
||||
(icon (text "folders"))
|
||||
(str (text "journals:label.directories")))
|
||||
|
||||
(div
|
||||
("class" "card flex flex-col gap-2 lowered")
|
||||
("class" "card flex flex_col gap_2 lowered")
|
||||
(text "{{ components::directories_editor(dirs=journal.dirs) }}")))
|
||||
(text "{% else %}")
|
||||
; we're in view mode; just show journal listing and notes as journal homepage
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% if tag|length > 0 -%}")
|
||||
(a
|
||||
("href" "?")
|
||||
("class" "notification chip w-content")
|
||||
("class" "notification chip w_content")
|
||||
(text "{{ tag }}"))
|
||||
(text "{%- endif %}")
|
||||
|
||||
|
@ -346,9 +346,9 @@
|
|||
|
||||
(div
|
||||
("data-tab" "editor")
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "flex flex-col gap-2 card")
|
||||
("class" "flex flex_col gap_2 card")
|
||||
("style" "animation: fadein ease-in-out 1 0.5s forwards running")
|
||||
("id" "editor_tab"))
|
||||
|
||||
|
@ -359,17 +359,17 @@
|
|||
|
||||
(div
|
||||
("data-tab" "preview")
|
||||
("class" "flex flex-col gap-2 card hidden")
|
||||
("class" "flex flex_col gap_2 card hidden")
|
||||
("style" "animation: fadein ease-in-out 1 0.5s forwards running")
|
||||
("id" "preview_tab"))
|
||||
|
||||
(div
|
||||
("data-tab" "tags")
|
||||
("class" "flex flex-col gap-2 card hidden")
|
||||
("class" "flex flex_col gap_2 card hidden")
|
||||
("style" "animation: fadein ease-in-out 1 0.5s forwards running")
|
||||
(form
|
||||
("onsubmit" "save_tags(event)")
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "tags")
|
||||
(str (text "journals:action.tags"))
|
||||
|
@ -475,17 +475,17 @@
|
|||
(text "{% else %}")
|
||||
; we're just viewing this note
|
||||
(div
|
||||
("class" "flex flex-col gap-2 card")
|
||||
("class" "flex flex_col gap_2 card")
|
||||
(text "{{ note.content|markdown|safe }}"))
|
||||
|
||||
(div
|
||||
("class" "flex w-full justify-between gap-2")
|
||||
("class" "flex w_full justify_between gap_2")
|
||||
(div
|
||||
("class" "flex flex-col gap-2 fade")
|
||||
("class" "flex flex_col gap_2 fade")
|
||||
(span (text "Last updated: ") (span ("class" "date") (text "{{ note.edited }}")))
|
||||
|
||||
(text "{% if global_mode -%}")
|
||||
(span ("class" "flex gap-1") (text "Created by: ") (text "{{ components::full_username(user=owner) }}"))
|
||||
(span ("class" "flex gap_1") (text "Created by: ") (text "{{ components::full_username(user=owner) }}"))
|
||||
(span (text "Views: {{ redis_views }}"))
|
||||
(text "{% elif note.is_global -%}")
|
||||
; globsl note, but we aren't viewing globally...
|
||||
|
@ -948,14 +948,14 @@ Publishing your note is specifically for making the note accessible through the
|
|||
(dialog
|
||||
("id" "note_mover_dialog")
|
||||
(div
|
||||
("class" "inner flex flex-col gap-2")
|
||||
("class" "inner flex flex_col gap_2")
|
||||
(p (text "Select a directory to move this note into:"))
|
||||
(text "{{ components::note_mover_dirs(dirs=journal.dirs) }}")
|
||||
(div
|
||||
("class" "flex justify-between")
|
||||
("class" "flex justify_between")
|
||||
(div)
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(button
|
||||
("class" "bold red lowered")
|
||||
("onclick" "document.getElementById('note_mover_dialog').close()")
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
(text "{% endblock %} {% block body %}")
|
||||
(div
|
||||
("id" "panel")
|
||||
("class" "flex flex-row gap-2")
|
||||
("class" "flex flex_row gap_2")
|
||||
(a
|
||||
("class" "button camo")
|
||||
("href" "/")
|
||||
|
@ -27,11 +27,11 @@
|
|||
(icon (text "rotate-cw")))
|
||||
|
||||
(form
|
||||
("class" "w-full flex gap-1 flex-row")
|
||||
("class" "w_full flex gap_1 flex_row")
|
||||
("onsubmit" "event.preventDefault(); littleweb_navigate(event.target.uri.getAttribute('true_value'))")
|
||||
(input
|
||||
("type" "uri")
|
||||
("class" "w-full")
|
||||
("class" "w_full")
|
||||
("true_value" "")
|
||||
("name" "uri")
|
||||
("id" "uri"))
|
||||
|
@ -42,7 +42,7 @@
|
|||
(div
|
||||
("class" "dropdown")
|
||||
(button
|
||||
("class" "flex-row camo")
|
||||
("class" "flex_row camo")
|
||||
("onclick" "trigger('atto::hooks::dropdown', [event])")
|
||||
("exclude" "dropdown")
|
||||
("style" "gap: var(--pad-1) !important")
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{% if user -%}")
|
||||
(div
|
||||
("class" "pillmenu")
|
||||
|
@ -12,20 +12,20 @@
|
|||
(a ("href" "/domains") ("class" "active") (str (text "littleweb:label.domains"))))
|
||||
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ domain.name }}.{{ domain.tld|lower }}")))
|
||||
(div
|
||||
("class" "flex flex-col gap-2 card")
|
||||
("class" "flex flex_col gap_2 card")
|
||||
(code
|
||||
("class" "w-content")
|
||||
("class" "w_content")
|
||||
(a
|
||||
("href" "atto://{{ domain.name }}.{{ domain.tld|lower }}")
|
||||
(text "atto://{{ domain.name }}.{{ domain.tld|lower }}")))
|
||||
(div
|
||||
("class" "flex gap-2 flex-wrap")
|
||||
("class" "flex gap_2 flex_wrap")
|
||||
(button
|
||||
("class" "red lowered")
|
||||
("onclick" "delete_domain()")
|
||||
|
@ -33,19 +33,19 @@
|
|||
(str (text "general:action.delete"))))))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex flex-col gap-2")
|
||||
("class" "card small flex flex_col gap_2")
|
||||
(div
|
||||
("class" "flex items-center justify-between gap-2")
|
||||
("class" "flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(icon (text "panel-top"))
|
||||
(span
|
||||
(str (text "littleweb:label.domain_data"))))
|
||||
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(button
|
||||
("class" "small lowered")
|
||||
("title" "Help")
|
||||
|
@ -59,22 +59,22 @@
|
|||
(str (text "littleweb:action.add")))))
|
||||
|
||||
(div
|
||||
("class" "card w-full lowered flex flex-col gap-2 hidden no_p_margin")
|
||||
("class" "card w_full lowered flex flex_col gap_2 hidden no_p_margin")
|
||||
("id" "domain_help")
|
||||
(p (text "To link your domain to a site, go to the site and press \"Copy ID\"."))
|
||||
(p (text "After you have the site's ID, click \"Add\" on this page, then paste the ID into the \"value\" field."))
|
||||
(p (text "If you've ever managed a real domain's DNS, this should be familiar."))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
; add data
|
||||
(form
|
||||
("id" "add_data")
|
||||
("class" "card hidden w-full lowered flex flex-col gap-2")
|
||||
("class" "card hidden w_full lowered flex flex_col gap_2")
|
||||
("onsubmit" "add_data_from_form(event)")
|
||||
(div
|
||||
("class" "flex gap-2 flex-collapse")
|
||||
("class" "flex gap_2 flex_collapse")
|
||||
(div
|
||||
("class" "flex w-full flex-col gap-1")
|
||||
("class" "flex w_full flex_col gap_1")
|
||||
(label
|
||||
("for" "name")
|
||||
(str (text "littleweb:label.type")))
|
||||
|
@ -87,7 +87,7 @@
|
|||
(option ("value" "Service") (text "Site ID"))
|
||||
(option ("value" "Text") (text "Text"))))
|
||||
(div
|
||||
("class" "flex w-full flex-col gap-1")
|
||||
("class" "flex w_full flex_col gap_1")
|
||||
(label
|
||||
("for" "name")
|
||||
(str (text "littleweb:label.name")))
|
||||
|
@ -100,7 +100,7 @@
|
|||
("maxlength" "32"))
|
||||
(span ("class" "fade") (text "Use \"@\" for root.")))
|
||||
(div
|
||||
("class" "flex w-full flex-col gap-1")
|
||||
("class" "flex w_full flex_col gap_1")
|
||||
(label
|
||||
("for" "value")
|
||||
(str (text "littleweb:label.value")))
|
||||
|
@ -113,17 +113,17 @@
|
|||
("minlength" "2")
|
||||
("maxlength" "256"))))
|
||||
(div
|
||||
("class" "flex w-full justify-between")
|
||||
("class" "flex w_full justify_between")
|
||||
(div)
|
||||
(button
|
||||
(icon (text "check"))
|
||||
(str (text "general:action.save")))))
|
||||
; data
|
||||
(div
|
||||
("class" "w-full")
|
||||
("class" "w_full")
|
||||
("style" "max-width: 100%; overflow: auto; min-height: 512px")
|
||||
(table
|
||||
("class" "w-full")
|
||||
("class" "w_full")
|
||||
(thead
|
||||
(tr
|
||||
(th (text "Name"))
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
|
||||
; viewing other user's domains warning
|
||||
(text "{% if profile.id != user.id -%}")
|
||||
(div
|
||||
("class" "card w-full red flex gap-2 items-center")
|
||||
("class" "card w_full red flex gap_2 items_center")
|
||||
(text "{{ icon \"skull\" }}")
|
||||
(b
|
||||
(text "Viewing other user's domains! Please be careful.")))
|
||||
|
@ -23,16 +23,16 @@
|
|||
(a ("href" "/domains") ("class" "active") (str (text "littleweb:label.domains"))))
|
||||
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(str (text "littleweb:label.create_new_domain"))))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "create_domain_from_form(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "name")
|
||||
(text "{{ text \"communities:label.name\" }}"))
|
||||
|
@ -45,7 +45,7 @@
|
|||
("minlength" "2")
|
||||
("maxlength" "32")))
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "tld")
|
||||
(str (text "littleweb:label.tld")))
|
||||
|
@ -74,22 +74,22 @@
|
|||
(p (text "All domains have first-class support on {{ config.name }}, meaning all links to them will work properly on this site."))))))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(icon (text "panel-top"))
|
||||
(span
|
||||
(str (text "littleweb:label.my_domains")))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for item in list %}")
|
||||
(a
|
||||
("href" "/domains/{{ item.id }}")
|
||||
("class" "card secondary flex flex-col gap-2")
|
||||
("class" "card secondary flex flex_col gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(icon (text "globe"))
|
||||
(b
|
||||
(text "{{ item.name }}.{{ item.tld|lower }}")))
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{% if user -%}")
|
||||
(div
|
||||
("class" "pillmenu")
|
||||
|
@ -12,11 +12,11 @@
|
|||
(a ("href" "/domains") (str (text "littleweb:label.domains"))))
|
||||
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex flex-col gap-2")
|
||||
("class" "card small flex flex_col gap_2")
|
||||
(div
|
||||
("class" "flex w-full gap-2 justify-between")
|
||||
("class" "flex w_full gap_2 justify_between")
|
||||
(b
|
||||
(text "{{ service.name }}"))
|
||||
|
||||
|
@ -27,14 +27,14 @@
|
|||
(icon (text "circle-question-mark"))))
|
||||
|
||||
(div
|
||||
("class" "card w-full lowered flex flex-col gap-2 hidden no_p_margin")
|
||||
("class" "card w_full lowered flex flex_col gap_2 hidden no_p_margin")
|
||||
("id" "site_help")
|
||||
(p (text "Your site should include an \"index.html\" file in order to show content on its homepage."))
|
||||
(p (text "In the HTML editor, you can type `!` and use the provided suggestion to get an HTML boilerplate."))
|
||||
(p (text "After you've created a page, you can click \"Copy ID\" and go to manage a domain you own. On the domain management page, click \"Add\" and paste the ID you copied into the value field."))))
|
||||
|
||||
(div
|
||||
("class" "flex gap-2 flex-wrap card")
|
||||
("class" "flex gap_2 flex_wrap card")
|
||||
(text "{% if file and file.children|length == 0 -%}")
|
||||
(button
|
||||
("onclick" "update_content()")
|
||||
|
@ -61,16 +61,16 @@
|
|||
(str (text "general:action.delete")))))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(icon (text "folder-open"))
|
||||
(span (text "{% if path -%} {{ path }} {%- else -%} / {%- endif %}")))
|
||||
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(button
|
||||
("class" "lowered small")
|
||||
("onclick" "go_up()")
|
||||
|
@ -84,14 +84,14 @@
|
|||
(str (text "communities:action.create")))
|
||||
(text "{%- endif %}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% if not file or file.children|length > 0 -%}")
|
||||
; directory browser
|
||||
(div
|
||||
("class" "w-full")
|
||||
("class" "w_full")
|
||||
("style" "max-width: 100%; overflow: auto; min-height: 512px")
|
||||
(table
|
||||
("class" "w-full")
|
||||
("class" "w_full")
|
||||
(thead
|
||||
(tr
|
||||
(th (text "Name"))
|
||||
|
@ -103,7 +103,7 @@
|
|||
(text "{% for item in files %}")
|
||||
(tr
|
||||
(td
|
||||
("class" "flex gap-2 items-center")
|
||||
("class" "flex gap_2 items_center")
|
||||
(text "{% if item.children|length > 0 -%}")
|
||||
(icon (text "folder"))
|
||||
(text "{% else %}")
|
||||
|
@ -140,7 +140,7 @@
|
|||
(text "{% endfor %}"))))
|
||||
(text "{% else %}")
|
||||
; file editor
|
||||
(div ("id" "editor_container") ("class" "w-full") ("style" "height: 600px"))
|
||||
(div ("id" "editor_container") ("class" "w_full") ("style" "height: 600px"))
|
||||
(text "{%- endif %}"))))
|
||||
|
||||
(script ("id" "all_service_files") ("type" "application/json") (text "{{ service.files|json_encode()|remove_script_tags|safe }}"))
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
|
||||
; viewing other user's services warning
|
||||
(text "{% if profile.id != user.id -%}")
|
||||
(div
|
||||
("class" "card w-full red flex gap-2 items-center")
|
||||
("class" "card w_full red flex gap_2 items_center")
|
||||
(text "{{ icon \"skull\" }}")
|
||||
(b
|
||||
(text "Viewing other user's sites! Please be careful.")))
|
||||
|
@ -23,16 +23,16 @@
|
|||
(a ("href" "/domains") (str (text "littleweb:label.domains"))))
|
||||
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(str (text "littleweb:label.create_new"))))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "create_service_from_form(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "name")
|
||||
(text "{{ text \"communities:label.name\" }}"))
|
||||
|
@ -48,22 +48,22 @@
|
|||
(text "{{ text \"communities:action.create\" }}"))))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(icon (text "panel-top"))
|
||||
(span
|
||||
(str (text "littleweb:label.my_services")))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for item in list %}")
|
||||
(a
|
||||
("href" "/services/{{ item.id }}")
|
||||
("class" "card secondary flex flex-col gap-2")
|
||||
("class" "card secondary flex flex_col gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(icon (text "globe"))
|
||||
(b
|
||||
(text "{{ item.name }}")))
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
(text "{% macro nav(selected=\"\", show_lhs=true, hide_user_menu=false) -%}")
|
||||
(nav
|
||||
(div
|
||||
("class" "content_container flex justify-between")
|
||||
("class" "content_container flex justify_between")
|
||||
(div
|
||||
("class" "flex nav_side")
|
||||
(a
|
||||
|
@ -63,7 +63,7 @@
|
|||
(div
|
||||
("class" "dropdown")
|
||||
(button
|
||||
("class" "flex-row {% if selected == 'chats' or selected == 'journals' -%}active{%- endif %}")
|
||||
("class" "flex_row {% if selected == 'chats' or selected == 'journals' -%}active{%- endif %}")
|
||||
("onclick" "trigger('atto::hooks::dropdown', [event])")
|
||||
("exclude" "dropdown")
|
||||
("title" "More services")
|
||||
|
@ -105,7 +105,7 @@
|
|||
(div
|
||||
("class" "dropdown")
|
||||
(button
|
||||
("class" "flex-row title")
|
||||
("class" "flex_row title")
|
||||
("onclick" "trigger('atto::hooks::dropdown', [event])")
|
||||
("exclude" "dropdown")
|
||||
("style" "gap: var(--pad-1) !important")
|
||||
|
@ -188,7 +188,7 @@
|
|||
(text "{%- endif %}"))
|
||||
|
||||
(div
|
||||
("class" "desktop flex flex-col gap-2")
|
||||
("class" "desktop flex flex_col gap_2")
|
||||
; primary nav desktop only
|
||||
(text "{{ macros::timelines_nav_options(selected=selected) }}")
|
||||
|
||||
|
@ -200,7 +200,7 @@
|
|||
|
||||
(text "{% macro timelines_nav_options(selected=\"\") -%}")
|
||||
(div
|
||||
("class" "pillmenu {% if user -%}rows{% endif %} w-full")
|
||||
("class" "pillmenu {% if user -%}rows{% endif %} w_full")
|
||||
(div
|
||||
("class" "row")
|
||||
(text "{% if user -%}")
|
||||
|
@ -254,7 +254,7 @@
|
|||
|
||||
(text "{% macro timelines_secondary_nav(posts=\"\", questions=\"\", selected=\"posts\") -%} {% if user -%}")
|
||||
(div
|
||||
("class" "pillmenu w-full")
|
||||
("class" "pillmenu w_full")
|
||||
(a
|
||||
("href" "{{ posts }}")
|
||||
("class" "{% if selected == 'posts' -%}active{%- endif %}")
|
||||
|
|
|
@ -5,11 +5,11 @@
|
|||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small items-center gap-2 flex justify-between")
|
||||
("class" "card small items_center gap_2 flex justify_between")
|
||||
(div
|
||||
("class" "flex gap-2 items-center")
|
||||
("class" "flex gap_2 items_center")
|
||||
(icon (text "mail-plus"))
|
||||
(str (text "mail:label.compose")))
|
||||
|
||||
|
@ -20,15 +20,15 @@
|
|||
(str (text "general:action.back"))))
|
||||
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "create_letter_from_form(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(span
|
||||
(b (str (text "mail:label.receivers"))))
|
||||
(div
|
||||
("class" "flex flex-wrap gap-2 small card lowered")
|
||||
(div ("id" "receivers") ("class" "flex flex-wrap gap-2"))
|
||||
("class" "flex flex_wrap gap_2 small card lowered")
|
||||
(div ("id" "receivers") ("class" "flex flex_wrap gap_2"))
|
||||
(button
|
||||
("class" "small tiny big_icon square raised")
|
||||
("onclick" "add_receiver()")
|
||||
|
@ -36,7 +36,7 @@
|
|||
(icon (text "plus")))))
|
||||
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "subject")
|
||||
(b (str (text "mail:label.subject"))))
|
||||
|
@ -48,7 +48,7 @@
|
|||
("id" "subject")))
|
||||
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "content")
|
||||
(b (str (text "mail:label.content"))))
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
(text "Letter - {{ config.name }}"))
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{{ components::letter(letter=letter, owner=owner) }}")
|
||||
|
||||
(text "{% for letter in replies %}")
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
(text "Received mail - {{ config.name }}"))
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "pillmenu")
|
||||
(a
|
||||
|
@ -16,11 +16,11 @@
|
|||
|
||||
; letters
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(icon (text "mailbox"))
|
||||
(str (text "mail:label.received")))
|
||||
(a
|
||||
|
@ -29,7 +29,7 @@
|
|||
(icon (text "plus"))
|
||||
(str (text "mail:label.compose"))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for letter in list %}")
|
||||
(text "{{ components::letter_listing(letter=letter[1], owner=letter[0]) }}")
|
||||
(text "{% endfor %}")
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
(text "Sent mail - {{ config.name }}"))
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "pillmenu")
|
||||
(a
|
||||
|
@ -16,11 +16,11 @@
|
|||
|
||||
; letters
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(icon (text "mailbox"))
|
||||
(str (text "mail:label.sent")))
|
||||
(a
|
||||
|
@ -29,7 +29,7 @@
|
|||
(icon (text "plus"))
|
||||
(str (text "mail:label.compose"))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for letter in list %}")
|
||||
(text "{{ components::letter_listing(letter=letter[1], owner=letter[0]) }}")
|
||||
(text "{% endfor %}")
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
(text "Seller settings - {{ config.name }}"))
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
|
||||
; nav
|
||||
(div
|
||||
|
@ -29,12 +29,12 @@
|
|||
|
||||
; ...
|
||||
(div
|
||||
("class" "card w-full lowered flex flex-col gap-2")
|
||||
("class" "card w_full lowered flex flex_col gap_2")
|
||||
("data-tab" "account")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(div
|
||||
("class" "notification")
|
||||
("style" "width: 46px")
|
||||
|
@ -70,10 +70,10 @@
|
|||
(text "{%- endif %}"))))
|
||||
|
||||
(div
|
||||
("class" "card w-full lowered hidden flex flex-col gap-2")
|
||||
("class" "card w_full lowered hidden flex flex_col gap_2")
|
||||
("data-tab" "products")
|
||||
(div
|
||||
("class" "card w-full flex flex-wrap gap-2")
|
||||
("class" "card w_full flex flex_wrap gap_2")
|
||||
)))
|
||||
|
||||
(text "{% endblock %}")
|
||||
|
|
|
@ -4,15 +4,15 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav(selected=\"achievements\") }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(icon (text "coffee"))
|
||||
(span (text "Welcome to {{ config.name }}!")))
|
||||
(div
|
||||
("class" "card no_p_margin flex flex-col gap-2")
|
||||
("class" "card no_p_margin flex flex_col gap_2")
|
||||
(p (text "To help you move in, you'll be rewarded with small achievements for completing simple tasks on {{ config.name }}!"))
|
||||
(p (text "You'll find out what each achievement is when you get it, so look around!"))
|
||||
(hr)
|
||||
|
@ -20,24 +20,24 @@
|
|||
(div ("class" "progress_bar") (div ("class" "poll_bar") ("style" "width: {{ percentage }}%")))))
|
||||
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(span
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(icon (text "award"))
|
||||
(span (str (text "general:link.achievements")))))
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-4")
|
||||
("class" "card lowered flex flex_col gap_4")
|
||||
(text "{% for achievement in achievements %}")
|
||||
(div
|
||||
("class" "w-full card-nest")
|
||||
("class" "w_full card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2 {% if achievement[2] == 'Uncommon' -%} green {%- elif achievement[2] == 'Rare' -%} purple {%- endif %}")
|
||||
("class" "card small flex items_center gap_2 {% if achievement[2] == 'Uncommon' -%} green {%- elif achievement[2] == 'Rare' -%} purple {%- endif %}")
|
||||
(icon (text "award"))
|
||||
(text "{{ achievement[0] }}"))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(span ("class" "no_p_margin") (text "{{ achievement[1]|markdown|safe }}"))
|
||||
(hr)
|
||||
(span ("class" "fade") (text "Unlocked: ") (span ("class" "date") (text "{{ achievement[3].unlocked }}")))))
|
||||
|
|
|
@ -3,19 +3,19 @@
|
|||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b (text "Error 😦")))
|
||||
|
||||
(div
|
||||
("class" "card flex flex-col gap-4")
|
||||
("class" "card flex flex_col gap_4")
|
||||
(span (text "{{ error_text }}"))
|
||||
|
||||
(div
|
||||
("class" "w-full flex gap-2")
|
||||
("class" "w_full flex gap_2")
|
||||
(a
|
||||
("class" "button primary") ("href" "/")
|
||||
(text "Home"))
|
||||
|
|
|
@ -3,13 +3,13 @@
|
|||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(span
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(icon (text "scroll-text"))
|
||||
(span (text "{{ file_name }}"))))
|
||||
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav(selected=\"notifications\") }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
|
||||
; viewing other user's notifications warning
|
||||
(text "{% if profile.id != user.id -%}")
|
||||
(div
|
||||
("class" "card w-full red flex gap-2 items-center")
|
||||
("class" "card w_full red flex gap_2 items_center")
|
||||
(text "{{ icon \"skull\" }}")
|
||||
(b
|
||||
(text "Viewing other user's notifications! Please be careful.")))
|
||||
|
@ -17,16 +17,16 @@
|
|||
|
||||
; ...
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(span
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ icon \"bell\" }}")
|
||||
(span
|
||||
(text "{{ text \"notifs:label.notifications\" }}")))
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(button
|
||||
("onclick" "trigger('me::clear_notifs')")
|
||||
("class" "small red lowered")
|
||||
|
@ -53,7 +53,7 @@
|
|||
(span
|
||||
(text "{{ text \"notifs:label.mark_all_as_unread\" }}")))))))
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-4")
|
||||
("class" "card lowered flex flex_col gap_4")
|
||||
(text "{% for notification in notifications %} {{ components::notification(notification=notification) }} {% endfor %}")))
|
||||
|
||||
(text "{{ components::pagination(page=page, items=notifications|length, key=\"&id=\", value=profile.id) }}"))
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav(selected=\"requests\") }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
|
||||
; viewing other user's requests warning
|
||||
(text "{% if profile.id != user.id -%}")
|
||||
(div
|
||||
("class" "card w-full red flex gap-2 items-center")
|
||||
("class" "card w_full red flex gap_2 items_center")
|
||||
(text "{{ icon \"skull\" }}")
|
||||
(b
|
||||
(text "Viewing other user's requests! Please be careful.")))
|
||||
|
@ -17,11 +17,11 @@
|
|||
|
||||
; ...
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(span
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ icon \"inbox\" }}")
|
||||
(span
|
||||
(text "{{ text \"requests:label.requests\" }}")))
|
||||
|
@ -34,17 +34,17 @@
|
|||
(text "{{ text \"notifs:action.clear\" }}")))
|
||||
(text "{% endif %}"))
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-4")
|
||||
("class" "card lowered flex flex_col gap_4")
|
||||
(text "{% for request in requests %} {% if request.action_type == \"CommunityJoin\" %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"user-plus\" }}")
|
||||
(span
|
||||
(text "{{ text \"requests:label.community_join_request\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-wrap gap-2")
|
||||
("class" "card flex flex_wrap gap_2")
|
||||
(a
|
||||
("href" "/community/{{ request.linked_asset }}/manage?uid={{ request.id }}#/members")
|
||||
("class" "button")
|
||||
|
@ -59,21 +59,21 @@
|
|||
(text "{{ text \"general:action.delete\" }}")))))
|
||||
(text "{% elif request.action_type == \"Follow\" %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(a
|
||||
("href" "/api/v1/auth/user/find/{{ request.id }}")
|
||||
(text "{{ components::avatar(username=request.id, selector_type=\"id\") }}"))
|
||||
(span
|
||||
(text "{{ text \"requests:label.user_follow_request\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(span
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ text \"requests:label.user_follow_request_message\" }}"))
|
||||
(div
|
||||
("class" "card flex flex-wrap w-full secondary gap-2")
|
||||
("class" "card flex flex_wrap w_full secondary gap_2")
|
||||
(a
|
||||
("href" "/api/v1/auth/user/find/{{ request.id }}")
|
||||
("class" "button")
|
||||
|
@ -94,13 +94,13 @@
|
|||
(text "{{ text \"general:action.delete\" }}"))))))
|
||||
(text "{%- endif %} {% endfor %} {% for question in questions %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(text "{{ components::question(question=question[0], owner=question[1], asking_about=question[2], profile=user) }}")
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "answer_question_from_form(event, '{{ question[0].id }}')")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "content")
|
||||
(text "{{ text \"communities:label.content\" }}"))
|
||||
|
@ -114,11 +114,11 @@
|
|||
("maxlength" "4096")))
|
||||
(div
|
||||
("id" "files_list")
|
||||
("class" "flex gap-2 flex-wrap"))
|
||||
("class" "flex gap_2 flex_wrap"))
|
||||
(div
|
||||
("class" "flex w-full justify-between flex-collapse gap-2")
|
||||
("class" "flex w_full justify_between flex_collapse gap_2")
|
||||
(div
|
||||
("class" "flex flex-wrap w-full gap-2")
|
||||
("class" "flex flex_wrap w_full gap_2")
|
||||
(text "{{ components::create_post_options() }}")
|
||||
(button
|
||||
("type" "button")
|
||||
|
|
|
@ -4,21 +4,21 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"scroll\" }}")
|
||||
(span
|
||||
(text "{{ text \"general:link.audit_log\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for item in items %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(a
|
||||
("class" "card small flex items-center gap-2 flush")
|
||||
("class" "card small flex items_center gap_2 flush")
|
||||
("href" "/api/v1/auth/user/find/{{ item.moderator }}")
|
||||
(text "{{ components::avatar(username=item.moderator, selector_type=\"id\") }}")
|
||||
(span
|
||||
|
|
|
@ -4,19 +4,19 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"flag\" }}")
|
||||
(span
|
||||
(text "{{ text \"general:label.file_report\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "create_report_from_form(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "title")
|
||||
(text "{{ text \"communities:label.content\" }}"))
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ icon \"ban\" }}")
|
||||
(span
|
||||
(text "{{ text \"general:link.ip_bans\" }}")))
|
||||
|
@ -21,12 +21,12 @@
|
|||
(span
|
||||
(text "{{ text \"communities:action.create\" }}"))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for item in items %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(a
|
||||
("class" "card small flex items-center gap-2 flush")
|
||||
("class" "card small flex items_center gap_2 flush")
|
||||
("href" "/api/v1/auth/user/find/{{ item.moderator }}")
|
||||
(text "{{ components::avatar(username=item.moderator, selector_type=\"id\") }}")
|
||||
(span
|
||||
|
@ -35,13 +35,13 @@
|
|||
("class" "fade date")
|
||||
(text "{{ item.created }}")))
|
||||
(div
|
||||
("class" "card secondary flex flex-col gap-2")
|
||||
("class" "card secondary flex flex_col gap_2")
|
||||
(code
|
||||
(text "{{ item.ip }}"))
|
||||
(span
|
||||
(text "{{ item.reason|markdown|safe }}"))
|
||||
(div
|
||||
("class" "card w-full flex flex-wrap gap-2")
|
||||
("class" "card w_full flex flex_wrap gap_2")
|
||||
(button
|
||||
("onclick" "remove_ipban('{{ item.ip }}')")
|
||||
("class" "red lowered")
|
||||
|
|
|
@ -4,21 +4,21 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"shield\" }}")
|
||||
(span
|
||||
(text "{{ text \"mod_panel:label.manage_profile\" }}")))
|
||||
(div
|
||||
("class" "card lowered")
|
||||
(div
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
("id" "mod_options")
|
||||
(div
|
||||
("class" "card w-full flex flex-wrap gap-2")
|
||||
("class" "card w_full flex flex_wrap gap_2")
|
||||
("ui_ident" "actions")
|
||||
(a
|
||||
("href" "/settings?username={{ profile.username }}")
|
||||
|
@ -256,47 +256,47 @@
|
|||
}, 100);
|
||||
}, 150);"))))
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ icon \"users-round\" }}")
|
||||
(span
|
||||
(text "{{ text \"mod_panel:label.associations\" }}"))))
|
||||
(div
|
||||
("class" "card lowered flex flex-wrap gap-2")
|
||||
("class" "card lowered flex flex_wrap gap_2")
|
||||
(text "{% for user in associations -%}")
|
||||
(text "{{ components::user_plate(user=user, show_menu=false) }}")
|
||||
(text "{%- endfor %}")))
|
||||
(text "{% if invite -%}")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ icon \"ticket\" }}")
|
||||
(span
|
||||
(text "{{ text \"mod_panel:label.invited_by\" }}"))))
|
||||
(div
|
||||
("class" "card lowered flex flex-wrap gap-2")
|
||||
("class" "card lowered flex flex_wrap gap_2")
|
||||
(text "{{ components::user_plate(user=invite[0], show_menu=false) }}")))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(icon (text "scale"))
|
||||
(span
|
||||
(str (text "mod_panel:label.ban_reason")))))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "event.preventDefault(); profile_request(false, 'ban_reason', { reason: event.target.reason.value || '' })")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "title")
|
||||
(str (text "mod_panel:label.ban_reason")))
|
||||
|
@ -310,11 +310,11 @@
|
|||
(button
|
||||
(str (text "general:action.save")))))
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ icon \"blocks\" }}")
|
||||
(span
|
||||
(text "{{ text \"mod_panel:label.permissions_level_builder\" }}")))
|
||||
|
@ -325,14 +325,14 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.save\" }}"))))
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
("id" "permission_builder")))
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ icon \"blocks\" }}")
|
||||
(span
|
||||
(text "{{ text \"mod_panel:label.permissions_level_builder\" }}")))
|
||||
|
@ -343,7 +343,7 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.save\" }}"))))
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
("id" "secondary_permission_builder")))
|
||||
(script
|
||||
(text "setTimeout(async () => {
|
||||
|
|
|
@ -4,21 +4,21 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"flag\" }}")
|
||||
(span
|
||||
(text "{{ text \"general:link.reports\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for item in items %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(a
|
||||
("class" "card small flex items-center gap-2 flush")
|
||||
("class" "card small flex items_center gap_2 flush")
|
||||
("href" "/api/v1/auth/user/find/{{ item.owner }}")
|
||||
(text "{{ components::avatar(username=item.owner, selector_type=\"id\") }}")
|
||||
(span
|
||||
|
@ -27,12 +27,12 @@
|
|||
("class" "fade date")
|
||||
(text "{{ item.created }}")))
|
||||
(div
|
||||
("class" "card secondary flex flex-col gap-2")
|
||||
("class" "card secondary flex flex_col gap_2")
|
||||
(span
|
||||
("class" "no_p_margin")
|
||||
(text "{{ item.content|markdown|safe }}"))
|
||||
(div
|
||||
("class" "card w-full flex flex-wrap gap-2")
|
||||
("class" "card w_full flex flex_wrap gap_2")
|
||||
(button
|
||||
("onclick" "open_reported_content('{{ item.asset }}', '{{ item.asset_type }}')")
|
||||
(text "{{ icon \"external-link\" }}")
|
||||
|
|
|
@ -4,16 +4,16 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"chart-line\" }}")
|
||||
(span
|
||||
(text "{{ text \"general:link.stats\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(ul
|
||||
(li
|
||||
(b
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(span
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ icon \"gavel\" }}")
|
||||
(span
|
||||
(text "{{ text \"mod_panel:label.create_warning\" }}")))
|
||||
|
@ -21,10 +21,10 @@
|
|||
(span
|
||||
(text "{{ text \"dialog:action.cancel\" }}"))))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "create_warning_from_form(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "content")
|
||||
(text "{{ text \"communities:label.content\" }}"))
|
||||
|
@ -39,23 +39,23 @@
|
|||
(button
|
||||
(text "{{ text \"communities:action.create\" }}"))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(span
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ icon \"message-circle-warning\" }}")
|
||||
(span
|
||||
(text "{{ text \"mod_panel:label.warnings\" }}"))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-4")
|
||||
("class" "card flex flex_col gap_4")
|
||||
(text "{% for item in items %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(a
|
||||
("class" "flex items-center gap-2 flush")
|
||||
("class" "flex items_center gap_2 flush")
|
||||
("href" "/api/v1/auth/user/find/{{ item.moderator }}")
|
||||
("title" "Moderator")
|
||||
(text "{{ components::avatar(username=item.moderator, selector_type=\"id\") }}")
|
||||
|
@ -71,7 +71,7 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.delete\" }}"))))
|
||||
(div
|
||||
("class" "card secondary flex flex-col gap-2")
|
||||
("class" "card secondary flex flex_col gap_2")
|
||||
(span
|
||||
("class" "no_p_margin")
|
||||
(text "{{ item.content|markdown|safe }}"))))
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{% if post.replying_to -%}")
|
||||
(a
|
||||
("href" "/post/{{ post.replying_to }}")
|
||||
|
@ -56,14 +56,14 @@
|
|||
(text "{{ text \"communities:action.configure\" }}"))))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"heart\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:label.likes\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-wrap gap-4 flex-collapse")
|
||||
("class" "card flex flex_wrap gap_4 flex_collapse")
|
||||
(text "{% for tu in list %} {% set reaction = tu[0] %} {% set user = tu[1] %}")
|
||||
(div
|
||||
("style" "display: contents")
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
("content" "View this post from @{{ owner.username }} on {{ config.name }}!"))
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2 {% if community.is_forum -%}content_container{%- endif %}")
|
||||
(text "{% if post.replying_to -%}")
|
||||
(a
|
||||
("href" "/post/{{ post.replying_to }}")
|
||||
|
@ -48,21 +48,29 @@
|
|||
(span
|
||||
(text "{{ text \"communities:action.continue_thread\" }}")))
|
||||
(text "{%- endif %}")
|
||||
; post
|
||||
(text "{% if not community.is_forum -%}")
|
||||
(div
|
||||
("style" "display: contents;")
|
||||
("style" "display: contents")
|
||||
(text "{% if post.context.repost and post.context.repost.reposting -%} {{ components::repost(repost=reposting, post=post, owner=owner, community=community, show_community=true, can_manage_post=can_manage_posts) }} {% else %} {{ components::post(post=post, owner=owner, question=question, community=community, show_community=true, can_manage_post=can_manage_posts, poll=poll, dont_show_title=true) }} {%- endif %}"))
|
||||
(text "{% else %}")
|
||||
(div
|
||||
("style" "display: contents")
|
||||
(text "{{ components::forum_post(post=post, owner=owner, community=community, can_manage_post=can_manage_posts, poll=poll) }}"))
|
||||
(text "{%- endif %}")
|
||||
; ...
|
||||
(text "{% if user and post.context.comments_enabled -%}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"communities:label.create_reply\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "create_reply_from_form(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "content")
|
||||
(text "{{ text \"communities:label.content\" }}"))
|
||||
|
@ -75,9 +83,9 @@
|
|||
("maxlength" "4096")))
|
||||
(div
|
||||
("id" "files_list")
|
||||
("class" "flex gap-2 flex-wrap"))
|
||||
("class" "flex gap_2 flex_wrap"))
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(text "{{ components::emoji_picker(element_id=\"content\", render_dialog=true) }} {% if is_supporter -%} {{ components::file_picker(files_list_id=\"files_list\") }} {% endif %}")
|
||||
(button
|
||||
(text "{{ text \"communities:action.create\" }}")))))
|
||||
|
@ -124,17 +132,17 @@
|
|||
(span
|
||||
(text "{{ text \"communities:action.configure\" }}"))))
|
||||
(div
|
||||
("class" "flex flex-col gap-2 hidden")
|
||||
("class" "flex flex_col gap_2 hidden")
|
||||
("data-tab" "configure")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"settings\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:action.configure\" }}")))
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-4")
|
||||
("class" "card lowered flex flex_col gap_4")
|
||||
("id" "post_context")))
|
||||
(button
|
||||
("onclick" "save_context()")
|
||||
|
@ -250,18 +258,18 @@
|
|||
(text "{%- endif %}")
|
||||
(text "{% if user and user.id == post.owner -%}")
|
||||
(div
|
||||
("class" "card-nest w-full hidden")
|
||||
("class" "card_nest w_full hidden")
|
||||
("data-tab" "edit")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"pen\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:label.edit_content\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "edit_post_from_form(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "content")
|
||||
(text "{{ text \"communities:label.content\" }}"))
|
||||
|
@ -275,7 +283,7 @@
|
|||
("maxlength" "4096")
|
||||
(text "{{ post.content }}")))
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(text "{{ components::emoji_picker(element_id=\"new_content\", render_dialog=false) }}")
|
||||
(button
|
||||
(text "{{ text \"general:action.save\" }}")))))
|
||||
|
@ -302,16 +310,26 @@
|
|||
}"))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
("data-tab" "replies")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"newspaper\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:label.replies\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-4")
|
||||
(text "{% for post in replies %} {{ components::post(post=post[0], owner=post[1], question=post[3], secondary=true, show_community=false, poll=post[4]) }} {% endfor %} {{ components::pagination(page=page, items=replies|length) }}"))))
|
||||
("class" "card flex flex_col gap_4")
|
||||
(text "{% for post in replies %}")
|
||||
; reply
|
||||
(text "{% if not community.is_forum -%}")
|
||||
(div
|
||||
("style" "display: contents")
|
||||
(text "{{ components::post(post=post[0], owner=post[1], question=post[3], secondary=true, show_community=false, poll=post[4]) }}"))
|
||||
(text "{% else %}")
|
||||
(div
|
||||
("style" "display: contents")
|
||||
(text "{{ components::forum_post(post=post[0], owner=post[1], community=community, can_manage_post=can_manage_posts, poll=post[4]) }}"))
|
||||
(text "{%- endif %} {% endfor %} {{ components::pagination(page=page, items=replies|length) }}"))))
|
||||
|
||||
(script
|
||||
(text "async function create_reply_from_form(e) {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{% if post.replying_to -%}")
|
||||
(a
|
||||
("href" "/post/{{ post.replying_to }}")
|
||||
|
@ -56,14 +56,14 @@
|
|||
(text "{{ text \"communities:action.configure\" }}"))))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"quote\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:label.quotes\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-4")
|
||||
("class" "card flex flex_col gap_4")
|
||||
(text "{% for post in list %} {{ components::post(post=post[0], owner=post[1], question=post[3], secondary=true, show_community=false, poll=post[4]) }} {% endfor %} {{ components::pagination(page=page, items=list|length, key=\""es=\", value=\"true\") }}"))))
|
||||
|
||||
(text "{% endblock %}")
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{% if post.replying_to -%}")
|
||||
(a
|
||||
("href" "/post/{{ post.replying_to }}")
|
||||
|
@ -56,19 +56,19 @@
|
|||
(text "{{ text \"communities:action.configure\" }}"))))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"repeat-2\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:label.reposts\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-4")
|
||||
("class" "card flex flex_col gap_4")
|
||||
(text "{% for post in list %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card flex items-center gap-2")
|
||||
("class" "card flex items_center gap_2")
|
||||
(a
|
||||
("href" "/@{{ post[1].username }}")
|
||||
(text "{{ components::avatar(username=post[1].username, size=\"24px\", selector_type=\"username\") }}"))
|
||||
|
@ -76,7 +76,7 @@
|
|||
("class" "name")
|
||||
(text "{{ components::full_username(user=post[1]) }}")))
|
||||
(div
|
||||
("class" "card flex items-center gap-2 flex-wrap secondary")
|
||||
("class" "card flex items_center gap_2 flex_wrap secondary")
|
||||
(a
|
||||
("href" "/post/{{ post[0].id }}")
|
||||
("class" "lowered small button")
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ components::avatar(username=profile.username, size=\"24px\") }}")
|
||||
(span
|
||||
(text "{{ profile.username }}")))
|
||||
|
@ -18,11 +18,11 @@
|
|||
("class" "notification chip")
|
||||
(text "{{ text \"auth:label.banned\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(span
|
||||
(text "{{ text \"auth:label.banned_message\" }}"))
|
||||
(div
|
||||
("class" "card w-full secondary flex gap-2")
|
||||
("class" "card w_full secondary flex gap_2")
|
||||
(a
|
||||
("href" "/")
|
||||
("class" "button red lowered")
|
||||
|
|
|
@ -45,24 +45,24 @@
|
|||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(article
|
||||
(div
|
||||
("class" "content_container flex flex-col gap-4")
|
||||
("class" "content_container flex flex_col gap_4")
|
||||
(text "{{ components::banner(username=profile.username) }}")
|
||||
(div
|
||||
("class" "w-full flex gap-4 flex-collapse")
|
||||
("class" "w_full flex gap_4 flex_collapse")
|
||||
(div
|
||||
("class" "lhs flex flex-col gap-2 sm:w-full")
|
||||
("class" "lhs flex flex_col gap_2 sm:w_full")
|
||||
("style" "width: 22rem; min-width: 22rem")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card flex gap-2")
|
||||
("class" "card flex gap_2")
|
||||
("id" "user_avatar_and_name")
|
||||
(text "{{ components::avatar(username=profile.username,size=\"72px\") }}")
|
||||
(div
|
||||
("class" "flex flex-col")
|
||||
("class" "flex flex_col")
|
||||
(h3
|
||||
("id" "username")
|
||||
("class" "username flex items-center gap-2 flex-wrap w-full")
|
||||
("class" "username flex items_center gap_2 flex_wrap w_full")
|
||||
(span
|
||||
("class" "name shorter")
|
||||
(text "{{ components::username(user=profile) }}"))
|
||||
|
@ -70,38 +70,38 @@
|
|||
(span
|
||||
("title" "Verified")
|
||||
("style" "color: var(--color-primary);")
|
||||
("class" "flex items-center")
|
||||
("class" "flex items_center")
|
||||
(text "{{ icon \"badge-check\" }}"))
|
||||
(text "{%- endif %} {% if profile.permissions|has_supporter -%}")
|
||||
(span
|
||||
("title" "Supporter")
|
||||
("style" "color: var(--color-primary);")
|
||||
("class" "flex items-center")
|
||||
("class" "flex items_center")
|
||||
(text "{{ icon \"star\" }}"))
|
||||
(text "{%- endif %} {% if profile.secondary_permissions|has_dev_pass -%}")
|
||||
(span
|
||||
("title" "Developer pass")
|
||||
("style" "color: var(--color-primary);")
|
||||
("class" "flex items-center")
|
||||
("class" "flex items_center")
|
||||
(text "{{ icon \"id-card-lanyard\" }}"))
|
||||
(text "{%- endif %} {% if profile.permissions|has_staff_badge -%}")
|
||||
(span
|
||||
("title" "Staff")
|
||||
("style" "color: var(--color-primary);")
|
||||
("class" "flex items-center")
|
||||
("class" "flex items_center")
|
||||
(text "{{ icon \"shield-user\" }}"))
|
||||
(text "{%- endif %} {% if profile.permissions|has_banned -%}")
|
||||
(span
|
||||
("title" "Banned")
|
||||
("style" "color: var(--color-primary);")
|
||||
("class" "flex items-center")
|
||||
("class" "flex items_center")
|
||||
(text "{{ icon \"shield-ban\" }}"))
|
||||
(text "{%- endif %}"))
|
||||
(span
|
||||
("class" "fade")
|
||||
(text "{{ profile.username }}"))))
|
||||
(div
|
||||
("class" "card flex flex-col items-center gap-2")
|
||||
("class" "card flex flex_col items_center gap_2")
|
||||
("id" "social")
|
||||
(text "{% if profile.settings.status -%}")
|
||||
(p
|
||||
|
@ -109,17 +109,17 @@
|
|||
(text "{%- endif %}")
|
||||
(text "{% if not profile.settings.hide_social_follows or (user and user.id == profile.id) -%}")
|
||||
(div
|
||||
("class" "w-full flex")
|
||||
("class" "w_full flex")
|
||||
(a
|
||||
("href" "/@{{ profile.username }}/followers")
|
||||
("class" "w-full flex justify-center items-center gap-2")
|
||||
("class" "w_full flex justify_center items_center gap_2")
|
||||
(h4
|
||||
(text "{{ profile.follower_count }}"))
|
||||
(span
|
||||
(text "{{ text \"auth:label.followers\" }}")))
|
||||
(a
|
||||
("href" "/@{{ profile.username }}/following")
|
||||
("class" "w-full flex justify-center items-center gap-2")
|
||||
("class" "w_full flex justify_center items_center gap_2")
|
||||
(h4
|
||||
(text "{{ profile.following_count }}"))
|
||||
(span
|
||||
|
@ -127,26 +127,26 @@
|
|||
(text "{%- endif %}")
|
||||
(text "{% if is_following_you -%}")
|
||||
(b
|
||||
("class" "notification chip w-content flex items-center gap-2")
|
||||
("class" "notification chip w_content flex items_center gap_2")
|
||||
(text "{{ icon \"heart\" }}")
|
||||
(span
|
||||
(text "Follows you")))
|
||||
(text "{%- endif %}")))
|
||||
(div
|
||||
("class" "card-nest flex flex-col")
|
||||
("class" "card_nest flex flex_col")
|
||||
(div
|
||||
("id" "bio")
|
||||
("class" "card small no_p_margin")
|
||||
(text "{{ profile.settings.biography|markdown|safe }}"))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% if user -%}")
|
||||
(div
|
||||
("style" "display: contents;")
|
||||
(text "{% if profile.connections.Spotify and profile.connections.Spotify[0].data.name -%} {{ components::spotify_playing(state=profile.connections.Spotify[1]) }} {% elif profile.connections.LastFm and profile.connections.LastFm[0].data.name %} {{ components::last_fm_playing(state=profile.connections.LastFm[1]) }} {%- endif %}"))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "w-full flex justify-between items-center")
|
||||
("class" "w_full flex justify_between items_center")
|
||||
(span
|
||||
("class" "notification chip")
|
||||
(text "ID"))
|
||||
|
@ -156,7 +156,7 @@
|
|||
("class" "camo small")
|
||||
(text "{{ icon \"copy\" }}")))
|
||||
(div
|
||||
("class" "w-full flex justify-between items-center")
|
||||
("class" "w_full flex justify_between items_center")
|
||||
(span
|
||||
("class" "notification chip")
|
||||
(text "Joined"))
|
||||
|
@ -164,7 +164,7 @@
|
|||
("class" "date")
|
||||
(text "{{ profile.created }}")))
|
||||
(div
|
||||
("class" "w-full flex justify-between items-center")
|
||||
("class" "w_full flex justify_between items_center")
|
||||
(span
|
||||
("class" "notification chip")
|
||||
(text "Posts"))
|
||||
|
@ -172,7 +172,7 @@
|
|||
(text "{{ profile.post_count }}")))
|
||||
(text "{% if gpa and gpa > 0 and (not user.settings.disable_gpa_fun or is_helper) -%}")
|
||||
(div
|
||||
("class" "w-full flex justify-between items-center")
|
||||
("class" "w_full flex justify_between items_center")
|
||||
("title" "great post average (limited time fun)")
|
||||
(span
|
||||
("class" "notification chip")
|
||||
|
@ -182,7 +182,7 @@
|
|||
(text "{%- endif %}")
|
||||
(text "{% if not profile.settings.private_last_seen or is_self or is_helper %}")
|
||||
(div
|
||||
("class" "w-full flex justify-between items-center")
|
||||
("class" "w_full flex justify_between items_center")
|
||||
(span
|
||||
("class" "notification chip")
|
||||
(text "Last seen"))
|
||||
|
@ -197,7 +197,7 @@
|
|||
(text "{% if user and user.id != profile.id -%}")
|
||||
(hr)
|
||||
(div
|
||||
("class" "flex flex-wrap gap-2 w-full fade")
|
||||
("class" "flex flex_wrap gap_2 w_full fade")
|
||||
(a
|
||||
("class" "red")
|
||||
("href" "javascript:trigger('me::report', ['{{ profile.id }}', 'user'])")
|
||||
|
@ -205,13 +205,13 @@
|
|||
(text "{%- endif %}")))
|
||||
(text "{% if not is_self and user -%}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"auth:label.relationship\" }}")))
|
||||
(div
|
||||
("class" "card flex gap-2 flex-wrap")
|
||||
("class" "card flex gap_2 flex_wrap")
|
||||
(text "{% if not is_blocking -%}")
|
||||
(button
|
||||
("onclick" "toggle_follow_user(event)")
|
||||
|
@ -396,14 +396,14 @@
|
|||
};"))))
|
||||
(text "{%- endif %} {% if not profile.settings.private_communities or is_self or is_helper %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex gap-2 items-center")
|
||||
("class" "card small flex gap_2 items_center")
|
||||
(text "{{ icon \"users-round\" }}")
|
||||
(span
|
||||
(text "{{ text \"auth:label.joined_communities\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-wrap gap-2")
|
||||
("class" "card flex flex_wrap gap_2")
|
||||
(text "{% for community in communities %}")
|
||||
(a
|
||||
("href" "/community/{{ community.title }}")
|
||||
|
@ -411,14 +411,14 @@
|
|||
(text "{% endfor %}")))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
("id" "connections")
|
||||
(text "{% for key, value in profile.connections %} {% if value[0].data.name and value[0].show_on_profile %}")
|
||||
(a
|
||||
("class" "card small flush flex items-center justify-between gap-2")
|
||||
("class" "card small flush flex items_center justify_between gap_2")
|
||||
("href" "{{ components::connection_url(key=key, value=value) }}")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ components::connection_icon(key=key) }}")
|
||||
(b
|
||||
(text "{{ value[0].data.name }}")))
|
||||
|
@ -427,7 +427,7 @@
|
|||
(text "{{ icon \"external-link\" }}")))
|
||||
(text "{%- endif %} {% endfor %}")))
|
||||
(div
|
||||
("class" "rhs w-full flex flex-col gap-4")
|
||||
("class" "rhs w_full flex flex_col gap_4")
|
||||
(text "{% block content %}{% endblock %}")))))
|
||||
|
||||
(text "{% if not is_self and profile.settings.warning -%}")
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ components::avatar(username=profile.username, size=\"24px\") }}")
|
||||
(span
|
||||
(text "{{ profile.username }}")))
|
||||
|
@ -18,11 +18,11 @@
|
|||
("class" "notification chip")
|
||||
(text "{{ text \"auth:label.blocked_profile\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(span
|
||||
(text "{{ text \"auth:label.blocked_profile_message\" }}"))
|
||||
(div
|
||||
("class" "card w-full secondary flex gap-2")
|
||||
("class" "card w_full secondary flex gap_2")
|
||||
(text "{% if user -%} {% if not is_blocking -%}")
|
||||
(div
|
||||
("class" "dropdown")
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
(text "{% extends \"profile/base.html\" %} {% block content %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex gap-2 items-center")
|
||||
("class" "card small flex gap_2 items_center")
|
||||
(text "{{ icon \"users-round\" }}")
|
||||
(span
|
||||
(text "{{ text \"auth:label.followers\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-wrap gap-4 flex-collapse")
|
||||
("class" "card flex flex_wrap gap_4 flex_collapse")
|
||||
(text "{% for item in list %} {{ components::user_plate(user=item[1], secondary=true) }} {% endfor %} {{ components::pagination(page=page, items=list|length) }}")))
|
||||
|
||||
(style
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
(text "{% extends \"profile/base.html\" %} {% block content %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex gap-2 items-center")
|
||||
("class" "card small flex gap_2 items_center")
|
||||
(text "{{ icon \"users-round\" }}")
|
||||
(span
|
||||
(text "{{ text \"auth:label.following\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-wrap gap-4 flex-collapse")
|
||||
("class" "card flex flex_wrap gap_4 flex_collapse")
|
||||
(text "{% for item in list %} {{ components::user_plate(user=item[1], secondary=true) }} {% endfor %} {{ components::pagination(page=page, items=list|length) }}")))
|
||||
|
||||
(style
|
||||
|
|
|
@ -5,11 +5,11 @@
|
|||
|
||||
(text "{%- endif %} {{ macros::profile_nav(selected=\"media\") }}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex gap-2 justify-between items-center")
|
||||
("class" "card small flex gap_2 justify_between items_center")
|
||||
(div
|
||||
("class" "flex gap-2 items-center")
|
||||
("class" "flex gap_2 items_center")
|
||||
(text "{{ icon \"clock\" }}")
|
||||
(span
|
||||
(text "{{ text \"auth:label.recent_posts_with_media\" }}")))
|
||||
|
@ -22,7 +22,7 @@
|
|||
(text "{{ text \"general:link.search\" }}")))
|
||||
(text "{%- endif %}"))
|
||||
(div
|
||||
("class" "card flex flex-col gap-4")
|
||||
("class" "card flex flex_col gap_4")
|
||||
(text "{% for post in posts %} {% if post[2].read_access == \"Everybody\" -%} {% if post[0].context.repost and post[0].context.repost.reposting -%} {{ components::repost(repost=post[3], post=post[0], owner=post[1], secondary=true, community=post[2], show_community=true, can_manage_post=is_self) }} {% else %} {{ components::post(post=post[0], owner=post[1], question=post[4], secondary=true, community=post[2], can_manage_post=is_self, poll=post[5]) }} {%- endif %} {%- endif %} {% endfor %} {{ components::pagination(page=page, items=posts|length) }}")))
|
||||
|
||||
(text "{% endblock %}")
|
||||
|
|
|
@ -5,29 +5,29 @@
|
|||
|
||||
(text "{%- endif %} {{ macros::profile_nav(selected=\"outbox\") }}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex gap-2 justify-between items-center")
|
||||
("class" "card small flex gap_2 justify_between items_center")
|
||||
(div
|
||||
("class" "flex gap-2 items-center")
|
||||
("class" "flex gap_2 items_center")
|
||||
(text "{{ icon \"send\" }}")
|
||||
(span
|
||||
(text "{{ text \"auth:label.outbox\" }}"))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-4")
|
||||
("class" "card flex flex_col gap_4")
|
||||
(text "{% for question in questions %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
|
||||
; show the actual question
|
||||
(text "{{ components::question(question=question[0], owner=question[1], profile=user, secondary=true) }}")
|
||||
|
||||
; options
|
||||
(div
|
||||
("class" "card small flex justify-between items-center gap-2")
|
||||
("class" "card small flex justify_between items_center gap_2")
|
||||
; show the avatar of the person we sent the question to
|
||||
(a
|
||||
("class" "flex items-center gap-2 flush")
|
||||
("class" "flex items_center gap_2 flush")
|
||||
("href" "/api/v1/auth/user/find/{{ question[0].receiver }}")
|
||||
(icon (text "send"))
|
||||
(text "{{ components::avatar(username=question[0].receiver, selector_type='id') }}"))
|
||||
|
|
|
@ -5,23 +5,23 @@
|
|||
|
||||
(text "{%- endif %} {% if not tag and pinned|length != 0 -%}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex gap-2 items-center")
|
||||
("class" "card small flex gap_2 items_center")
|
||||
(text "{{ icon \"pin\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:label.pinned\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-4")
|
||||
("class" "card flex flex_col gap_4")
|
||||
(text "{% for post in pinned %} {% if post[2].read_access == \"Everybody\" -%} {% if post[0].context.repost and post[0].context.repost.reposting -%} {{ components::repost(repost=post[3], post=post[0], owner=post[1], secondary=true, community=post[2], show_community=true, can_manage_post=is_self) }} {% else %} {{ components::post(post=post[0], owner=post[1], question=post[4], secondary=true, community=post[2], can_manage_post=is_self, poll=post[5]) }} {%- endif %} {%- endif %} {% endfor %}")))
|
||||
|
||||
(text "{%- endif %} {{ macros::profile_nav(selected=\"posts\") }}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex gap-2 justify-between items-center")
|
||||
("class" "card small flex gap_2 justify_between items_center")
|
||||
(div
|
||||
("class" "flex gap-2 items-center")
|
||||
("class" "flex gap_2 items_center")
|
||||
(text "{% if not tag -%} {{ icon \"clock\" }}")
|
||||
(span
|
||||
(text "{{ text \"auth:label.recent_posts\" }}"))
|
||||
|
@ -40,7 +40,7 @@
|
|||
(text "{{ text \"general:link.search\" }}")))
|
||||
(text "{%- endif %}"))
|
||||
(div
|
||||
("class" "card w-full flex flex-col gap-2")
|
||||
("class" "card w_full flex flex_col gap_2")
|
||||
("ui_ident" "io_data_load")
|
||||
(div ("ui_ident" "io_data_marker"))))
|
||||
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ components::avatar(username=profile.username, size=\"24px\") }}")
|
||||
(span
|
||||
(text "{{ profile.username }}")))
|
||||
|
@ -18,7 +18,7 @@
|
|||
("class" "notification chip")
|
||||
(text "{{ text \"auth:label.private_profile\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(span
|
||||
("class" "fade")
|
||||
(text "{{ text \"auth:label.private_profile_message\" }}"))
|
||||
|
@ -26,7 +26,7 @@
|
|||
("class" "no_p_margin")
|
||||
(text "{{ profile.settings.private_biography|markdown|safe }}"))
|
||||
(div
|
||||
("class" "card w-full secondary flex gap-2")
|
||||
("class" "card w_full secondary flex gap_2")
|
||||
(text "{% if user -%} {% if not is_following -%}")
|
||||
(button
|
||||
("onclick" "toggle_follow_user(event)")
|
||||
|
|
|
@ -5,11 +5,11 @@
|
|||
|
||||
(text "{%- endif %} {{ macros::profile_nav(selected=\"replies\") }}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex gap-2 justify-between items-center")
|
||||
("class" "card small flex gap_2 justify_between items_center")
|
||||
(div
|
||||
("class" "flex gap-2 items-center")
|
||||
("class" "flex gap_2 items_center")
|
||||
(text "{{ icon \"clock\" }}")
|
||||
(span
|
||||
(text "{{ text \"auth:label.recent_replies\" }}")))
|
||||
|
@ -22,7 +22,7 @@
|
|||
(text "{{ text \"general:link.search\" }}")))
|
||||
(text "{%- endif %}"))
|
||||
(div
|
||||
("class" "card flex flex-col gap-4")
|
||||
("class" "card flex flex_col gap_4")
|
||||
(text "{% for post in posts %} {% if post[2].read_access == \"Everybody\" -%} {% if post[0].context.repost and post[0].context.repost.reposting -%} {{ components::repost(repost=post[3], post=post[0], owner=post[1], secondary=true, community=post[2], show_community=true, can_manage_post=is_self) }} {% else %} {{ components::post(post=post[0], owner=post[1], question=post[4], secondary=true, community=post[2], can_manage_post=is_self, poll=post[5]) }} {%- endif %} {%- endif %} {% endfor %} {{ components::pagination(page=page, items=posts|length) }}")))
|
||||
|
||||
(text "{% endblock %}")
|
||||
|
|
|
@ -5,23 +5,23 @@
|
|||
|
||||
(text "{%- endif %} {% if not tag and pinned|length != 0 -%}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex gap-2 items-center")
|
||||
("class" "card small flex gap_2 items_center")
|
||||
(text "{{ icon \"pin\" }}")
|
||||
(span
|
||||
(text "{{ text \"communities:label.pinned\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-4")
|
||||
("class" "card flex flex_col gap_4")
|
||||
(text "{% for post in pinned %} {% if post[2].read_access == \"Everybody\" -%} {% if post[0].context.repost and post[0].context.repost.reposting -%} {{ components::repost(repost=post[3], post=post[0], owner=post[1], secondary=true, community=post[2], show_community=true, can_manage_post=is_self) }} {% else %} {{ components::post(post=post[0], owner=post[1], question=post[4], secondary=true, community=post[2], can_manage_post=is_self, poll=post[5]) }} {%- endif %} {%- endif %} {% endfor %}")))
|
||||
|
||||
(text "{%- endif %} {{ macros::profile_nav(selected=\"responses\") }}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex gap-2 justify-between items-center")
|
||||
("class" "card small flex gap_2 justify_between items_center")
|
||||
(div
|
||||
("class" "flex gap-2 items-center")
|
||||
("class" "flex gap_2 items_center")
|
||||
(text "{% if not tag -%} {{ icon \"clock\" }}")
|
||||
(span
|
||||
(text "{{ text \"auth:label.recent_posts\" }}"))
|
||||
|
@ -40,7 +40,7 @@
|
|||
(text "{{ text \"general:link.search\" }}")))
|
||||
(text "{%- endif %}"))
|
||||
(div
|
||||
("class" "card w-full flex flex-col gap-2")
|
||||
("class" "card w_full flex flex_col gap_2")
|
||||
("ui_ident" "io_data_load")
|
||||
(div ("ui_ident" "io_data_marker"))))
|
||||
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
(text "Settings - {{ config.name }}"))
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{% if profile.id != user.id -%}")
|
||||
(div
|
||||
("class" "card w-full red flex gap-2 items-center")
|
||||
("class" "card w_full red flex gap_2 items_center")
|
||||
(text "{{ icon \"skull\" }}")
|
||||
(b
|
||||
(text "Editing other user's settings! Please be careful.")))
|
||||
|
@ -36,10 +36,10 @@
|
|||
|
||||
; ...
|
||||
(div
|
||||
("class" "w-full flex flex-col gap-2 hidden")
|
||||
("class" "w_full flex flex_col gap_2 hidden")
|
||||
("data-tab" "presets")
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
(a
|
||||
("href" "#/account")
|
||||
("class" "button secondary")
|
||||
|
@ -47,23 +47,23 @@
|
|||
(span
|
||||
(str (text "general:action.back"))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card flex items-center gap-2 small")
|
||||
("class" "card flex items_center gap_2 small")
|
||||
(icon (text "cooking-pot"))
|
||||
(span
|
||||
(str (text "settings:tab.presets"))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2 secondary")
|
||||
("class" "card flex flex_col gap_2 secondary")
|
||||
(p (text "Not sure where to start? Try some settings presets!"))
|
||||
(details
|
||||
("class" "w-full accordion")
|
||||
("class" "w_full accordion")
|
||||
(summary
|
||||
(icon (text "rss"))
|
||||
(text "Microblogging"))
|
||||
|
||||
(div
|
||||
("class" "inner flex flex-col gap-2")
|
||||
("class" "inner flex flex_col gap_2")
|
||||
(p ("class" "fade") (text "Focus on yourself and your communities."))
|
||||
(ul ("id" "preset_microblogging_ul"))
|
||||
(button
|
||||
|
@ -72,13 +72,13 @@
|
|||
(str (text "general:action.apply")))))
|
||||
|
||||
(details
|
||||
("class" "w-full accordion")
|
||||
("class" "w_full accordion")
|
||||
(summary
|
||||
(icon (text "message-circle-heart"))
|
||||
(text "Q&A"))
|
||||
|
||||
(div
|
||||
("class" "inner flex flex-col gap-2")
|
||||
("class" "inner flex flex_col gap_2")
|
||||
(p ("class" "fade") (text "Just like Neospring!"))
|
||||
(ul ("id" "preset_questions_ul"))
|
||||
(button
|
||||
|
@ -87,13 +87,13 @@
|
|||
(str (text "general:action.apply")))))
|
||||
|
||||
(details
|
||||
("class" "w-full accordion")
|
||||
("class" "w_full accordion")
|
||||
(summary
|
||||
(icon (text "key"))
|
||||
(text "Private"))
|
||||
|
||||
(div
|
||||
("class" "inner flex flex-col gap-2")
|
||||
("class" "inner flex flex_col gap_2")
|
||||
(p ("class" "fade") (text "This preset allows you to keep your profile and posts hidden to people you aren't following."))
|
||||
(ul ("id" "preset_private_ul"))
|
||||
(button
|
||||
|
@ -102,13 +102,13 @@
|
|||
(str (text "general:action.apply")))))
|
||||
|
||||
(details
|
||||
("class" "w-full accordion")
|
||||
("class" "w_full accordion")
|
||||
(summary
|
||||
(icon (text "eye-closed"))
|
||||
(text "NSFW"))
|
||||
|
||||
(div
|
||||
("class" "inner flex flex-col gap-2")
|
||||
("class" "inner flex flex_col gap_2")
|
||||
(p ("class" "fade") (text "NSFW content is allowed if it is hidden from main timelines. This preset will help you do that quickly."))
|
||||
(ul ("id" "preset_nsfw_ul"))
|
||||
(button
|
||||
|
@ -117,10 +117,10 @@
|
|||
(str (text "general:action.apply")))))))))
|
||||
|
||||
(div
|
||||
("class" "w-full flex flex-col gap-2")
|
||||
("class" "w_full flex flex_col gap_2")
|
||||
("data-tab" "account")
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
("id" "account_settings")
|
||||
(div
|
||||
("class" "pillmenu")
|
||||
|
@ -178,7 +178,7 @@
|
|||
(text "{%- endif %}")
|
||||
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "home_timeline")
|
||||
(div
|
||||
("class" "card small")
|
||||
|
@ -232,14 +232,14 @@
|
|||
("class" "fade")
|
||||
(text "This represents the timeline the home button takes you to."))))
|
||||
(div
|
||||
("class" "card-nest desktop")
|
||||
("class" "card_nest desktop")
|
||||
("ui_ident" "notifications")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "Notifications")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(button
|
||||
("id" "notifications_button"))
|
||||
(span
|
||||
|
@ -254,17 +254,17 @@
|
|||
]);
|
||||
}, 150);"))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "change_username")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"settings:label.change_username\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "change_username(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "new_username")
|
||||
(text "{{ text \"settings:label.new_username\" }}"))
|
||||
|
@ -280,22 +280,22 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.save\" }}"))))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "delete_account")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2 red")
|
||||
("class" "card small flex items_center gap_2 red")
|
||||
(icon (text "skull"))
|
||||
(b (str (text "communities:label.danger_zone"))))
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
(details
|
||||
("class" "accordion")
|
||||
(summary
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(icon_class (text "chevron-down") (text "dropdown_arrow"))
|
||||
(str (text "settings:label.deactivate_account")))
|
||||
(div
|
||||
("class" "inner flex flex-col gap-2")
|
||||
("class" "inner flex flex_col gap_2")
|
||||
(p (text "Deactivating your account will treat it as deleted, but all your data will be recoverable if you change your mind. This option is recommended over a full deletion."))
|
||||
(button
|
||||
("onclick" "deactivate_account()")
|
||||
|
@ -305,14 +305,14 @@
|
|||
(details
|
||||
("class" "accordion")
|
||||
(summary
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(icon_class (text "chevron-down") (text "dropdown_arrow"))
|
||||
(str (text "settings:label.delete_account")))
|
||||
(form
|
||||
("class" "inner flex flex-col gap-2")
|
||||
("class" "inner flex flex_col gap_2")
|
||||
("onsubmit" "delete_account(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "current_password")
|
||||
(text "{{ text \"settings:label.current_password\" }}"))
|
||||
|
@ -335,10 +335,10 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.save\" }}"))))
|
||||
(div
|
||||
("class" "w-full flex flex-col gap-2 hidden")
|
||||
("class" "w_full flex flex_col gap_2 hidden")
|
||||
("data-tab" "account/security")
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
(a
|
||||
("href" "#/account")
|
||||
("class" "button secondary")
|
||||
|
@ -346,23 +346,23 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.back\" }}")))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card flex items-center gap-2 small")
|
||||
("class" "card flex items_center gap_2 small")
|
||||
(text "{{ icon \"user-lock\" }}")
|
||||
(span
|
||||
(text "{{ text \"settings:tab.security\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2 secondary")
|
||||
("class" "card flex flex_col gap_2 secondary")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "two_factor_authentication")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"settings:label.two_factor_authentication\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% if profile.totp|length == 0 -%}")
|
||||
(div
|
||||
("id" "totp_stuff")
|
||||
|
@ -391,7 +391,7 @@
|
|||
("id" "totp_recovery_codes")
|
||||
("style" "display: none"))
|
||||
(div
|
||||
("class" "flex gap-2 flex-wrap")
|
||||
("class" "flex gap_2 flex_wrap")
|
||||
(button
|
||||
("class" "lowered red")
|
||||
("onclick" "refresh_totp_codes(event)")
|
||||
|
@ -402,17 +402,17 @@
|
|||
(text "Disable TOTP 2FA")))
|
||||
(text "{%- endif %}")))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "change_password")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"settings:label.change_password\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "change_password(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "current_password")
|
||||
(text "{{ text \"settings:label.current_password\" }}"))
|
||||
|
@ -425,7 +425,7 @@
|
|||
("minlength" "6")
|
||||
("autocomplete" "off")))
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "new_password")
|
||||
(text "{{ text \"settings:label.new_password\" }}"))
|
||||
|
@ -442,10 +442,10 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.save\" }}")))))))))
|
||||
(div
|
||||
("class" "w-full flex flex-col gap-2 hidden")
|
||||
("class" "w_full flex flex_col gap_2 hidden")
|
||||
("data-tab" "account/following")
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
(a
|
||||
("href" "#/account")
|
||||
("class" "button secondary")
|
||||
|
@ -453,22 +453,22 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.back\" }}")))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card flex items-center gap-2 small")
|
||||
("class" "card flex items_center gap_2 small")
|
||||
(text "{{ icon \"rss\" }}")
|
||||
(span
|
||||
(text "{{ text \"auth:label.following\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for userfollow in following %} {% set user = userfollow[1] %}")
|
||||
(div
|
||||
("class" "card secondary flex flex-wrap gap-2 items-center justify-between")
|
||||
("class" "card secondary flex flex_wrap gap_2 items_center justify_between")
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(text "{{ components::avatar(username=user.username) }} {{ components::full_username(user=user) }}"))
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(button
|
||||
("class" "lowered red small")
|
||||
("onclick" "toggle_follow_user('{{ user.id }}')")
|
||||
|
@ -498,10 +498,10 @@
|
|||
});
|
||||
};")))
|
||||
(div
|
||||
("class" "w-full flex flex-col gap-2 hidden")
|
||||
("class" "w_full flex flex_col gap_2 hidden")
|
||||
("data-tab" "account/followers")
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
(a
|
||||
("href" "#/account")
|
||||
("class" "button secondary")
|
||||
|
@ -509,22 +509,22 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.back\" }}")))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card flex items-center gap-2 small")
|
||||
("class" "card flex items_center gap_2 small")
|
||||
(text "{{ icon \"rss\" }}")
|
||||
(span
|
||||
(text "{{ text \"auth:label.followers\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for userfollow in followers %} {% set user = userfollow[1] %}")
|
||||
(div
|
||||
("class" "card secondary flex flex-wrap gap-2 items-center justify-between")
|
||||
("class" "card secondary flex flex_wrap gap_2 items_center justify_between")
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(text "{{ components::avatar(username=user.username) }} {{ components::full_username(user=user) }}"))
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(button
|
||||
("class" "lowered red small")
|
||||
("onclick" "force_unfollow_me('{{ user.id }}')")
|
||||
|
@ -554,10 +554,10 @@
|
|||
});
|
||||
};")))
|
||||
(div
|
||||
("class" "w-full flex flex-col gap-2 hidden")
|
||||
("class" "w_full flex flex_col gap_2 hidden")
|
||||
("data-tab" "account/blocks")
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
(a
|
||||
("href" "#/account")
|
||||
("class" "button secondary")
|
||||
|
@ -567,36 +567,36 @@
|
|||
|
||||
; stack blocks
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card flex items-center gap-2 small")
|
||||
("class" "card flex items_center gap_2 small")
|
||||
(text "{{ icon \"layers\" }}")
|
||||
(span
|
||||
(text "{{ text \"stacks:link.stacks\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for stack in stackblocks %}")
|
||||
(text "{{ components::stack_listing(stack=stack) }}")
|
||||
(text "{% endfor %}")))
|
||||
|
||||
; user blocks
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card flex items-center gap-2 small")
|
||||
("class" "card flex items_center gap_2 small")
|
||||
(text "{{ icon \"users-round\" }}")
|
||||
(span
|
||||
(text "{{ text \"settings:label.users\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for user in blocks %}")
|
||||
(div
|
||||
("class" "card secondary flex flex-wrap gap-2 items-center justify-between")
|
||||
("class" "card secondary flex flex_wrap gap_2 items_center justify_between")
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(text "{{ components::avatar(username=user.username) }} {{ components::full_username(user=user) }}"))
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(a
|
||||
("href" "/stacks/add_user/{{ user.id }}")
|
||||
("target" "_blank")
|
||||
|
@ -612,21 +612,21 @@
|
|||
|
||||
; ip blocks
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card flex items-center gap-2 small")
|
||||
("class" "card flex items_center gap_2 small")
|
||||
(text "{{ icon \"wifi\" }}")
|
||||
(span
|
||||
(text "{{ text \"settings:label.ips\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for ip in ipblocks %}")
|
||||
(div
|
||||
("class" "card secondary flex flex-wrap gap-2 items-center justify-between")
|
||||
("class" "card secondary flex flex_wrap gap_2 items_center justify_between")
|
||||
(span
|
||||
(text "Block from: ") (span ("class" "date") (text "{{ ip.created }}")))
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(button
|
||||
("onclick" "trigger('me::remove_ip_block', ['{{ ip.id }}'])")
|
||||
("class" "lowered small red")
|
||||
|
@ -634,10 +634,10 @@
|
|||
(span (str (text "auth:action.unblock"))))))
|
||||
(text "{% endfor %}")))))
|
||||
(div
|
||||
("class" "w-full flex flex-col gap-2 hidden")
|
||||
("class" "w_full flex flex_col gap_2 hidden")
|
||||
("data-tab" "account/uploads")
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
(a
|
||||
("href" "#/account")
|
||||
("class" "button secondary")
|
||||
|
@ -645,21 +645,21 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.back\" }}")))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card flex items-center gap-2 small")
|
||||
("class" "card flex items_center gap_2 small")
|
||||
(text "{{ icon \"image-up\" }}")
|
||||
(span
|
||||
(text "{{ text \"settings:tab.uploads\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2 secondary")
|
||||
("class" "card flex flex_col gap_2 secondary")
|
||||
(text "{{ components::supporter_ad(body=\"Become a supporter to upload images directly to posts!\") }} {% for upload in uploads %}")
|
||||
(details
|
||||
("class" "accordion w-full")
|
||||
("class" "accordion w_full")
|
||||
(summary
|
||||
("class" "card flex flex-wrap gap-2 items-center justify-between")
|
||||
("class" "card flex flex_wrap gap_2 items_center justify_between")
|
||||
(div
|
||||
("class" "flex gap-2 items-center")
|
||||
("class" "flex gap_2 items_center")
|
||||
(icon_class (text "chevron-down") (text "dropdown_arrow"))
|
||||
(b
|
||||
(span
|
||||
|
@ -667,7 +667,7 @@
|
|||
(text "{{ upload.created }}"))
|
||||
(text " ({{ upload.what }})")))
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(button
|
||||
("class" "raised small")
|
||||
("onclick" "trigger('ui::lightbox_open', ['/api/v1/uploads/{{ upload.id }}'])")
|
||||
|
@ -682,17 +682,17 @@
|
|||
(text "{{ text \"stacks:label.remove\" }}")))))
|
||||
|
||||
(div
|
||||
("class" "inner flex flex-col gap-2")
|
||||
("class" "inner flex flex_col gap_2")
|
||||
(form
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
("onsubmit" "update_upload_alt(event, '{{ upload.id }}')")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label ("for" "alt_{{ upload.id }}") (b (str (text "settings:label.alt_text"))))
|
||||
(textarea
|
||||
("id" "alt_{{ upload.id }}")
|
||||
("name" "alt")
|
||||
("class" "w-full")
|
||||
("class" "w_full")
|
||||
("placeholder" "Alternative text")
|
||||
(text "{{ upload.alt|safe }}")))
|
||||
|
||||
|
@ -744,10 +744,10 @@
|
|||
|
||||
(text "{% if config.security.enable_invite_codes -%}")
|
||||
(div
|
||||
("class" "w-full flex flex-col gap-2 hidden")
|
||||
("class" "w_full flex flex_col gap_2 hidden")
|
||||
("data-tab" "account/invites")
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
(a
|
||||
("href" "#/account")
|
||||
("class" "button secondary")
|
||||
|
@ -755,14 +755,14 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.back\" }}")))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card flex items-center gap-2 small")
|
||||
("class" "card flex items_center gap_2 small")
|
||||
(text "{{ icon \"ticket\" }}")
|
||||
(span
|
||||
(text "{{ text \"settings:tab.invites\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2 secondary")
|
||||
("class" "card flex flex_col gap_2 secondary")
|
||||
(pre ("id" "invite_codes_output") ("class" "hidden") (code))
|
||||
(pre ("id" "invite_codes_error_output") ("class" "hidden") (code ("class" "red")))
|
||||
|
||||
|
@ -773,7 +773,7 @@
|
|||
|
||||
(text "{{ components::supporter_ad(body=\"Become a supporter to generate up to 48 invite codes! You can currently have 2 maximum.\") }} {% for code in invites %}")
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% if code[1].is_used -%}")
|
||||
; used
|
||||
(b ("class" "{% if code[1].is_used -%} fade {%- endif %}") (s (text "{{ code[1].code }}")))
|
||||
|
@ -824,10 +824,10 @@
|
|||
(text "{%- endif %}")
|
||||
|
||||
(div
|
||||
("class" "w-full flex flex-col gap-2 hidden")
|
||||
("class" "w_full flex flex_col gap_2 hidden")
|
||||
("data-tab" "account/billing")
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
(a
|
||||
("href" "#/account")
|
||||
("class" "button secondary")
|
||||
|
@ -835,26 +835,26 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.back\" }}")))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card flex items-center gap-2 small")
|
||||
("class" "card flex items_center gap_2 small")
|
||||
(text "{{ icon \"credit-card\" }}")
|
||||
(span
|
||||
(text "{{ text \"settings:tab.billing\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2 secondary")
|
||||
("class" "card flex flex_col gap_2 secondary")
|
||||
(text "{% if config.stripe -%}")
|
||||
(text "{% if has_developer_pass or is_supporter -%}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "supporter_card")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(icon (text "credit-card"))
|
||||
(b
|
||||
(text "Manage billing")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(p
|
||||
(text "You currently have a subscription! You can manage your billing information below. ")
|
||||
(b
|
||||
|
@ -868,15 +868,15 @@
|
|||
(text "{%- endif %}")
|
||||
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "supporter_card")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"star\" }}")
|
||||
(b
|
||||
(text "Supporter status")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2 no_p_margin")
|
||||
("class" "card flex flex_col gap_2 no_p_margin")
|
||||
(text "{% if is_supporter -%}")
|
||||
(p
|
||||
(text "You ")
|
||||
|
@ -887,15 +887,15 @@
|
|||
(text "{%- endif %}")))
|
||||
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "supporter_card")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(icon (text "id-card-lanyard"))
|
||||
(b
|
||||
(text "Developer pass status")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2 no_p_margin")
|
||||
("class" "card flex flex_col gap_2 no_p_margin")
|
||||
(text "{% if has_developer_pass -%}")
|
||||
(p
|
||||
(text "You currently have a developer pass!"))
|
||||
|
@ -905,12 +905,12 @@
|
|||
|
||||
(text "{% if user.was_purchased and user.invite_code == 0 -%}")
|
||||
(form
|
||||
("class" "card w-full lowered flex flex-col gap-2")
|
||||
("class" "card w_full lowered flex flex_col gap_2")
|
||||
("onsubmit" "update_invite_code(event)")
|
||||
(p (text "Your account is currently activated without an invite code. If you stop paying for supporter, your account will be locked again until you renew. You can provide an invite code to avoid this if you're planning on cancelling."))
|
||||
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "invite_code")
|
||||
(b
|
||||
|
@ -927,32 +927,32 @@
|
|||
(text "{%- endif %}")
|
||||
(text "{%- endif %}")))))
|
||||
(div
|
||||
("class" "w-full hidden flex flex-col gap-2")
|
||||
("class" "w_full hidden flex flex_col gap_2")
|
||||
("data-tab" "profile")
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
("id" "profile_settings")
|
||||
(text "{{ components::supporter_ad(body=\"Become a supporter to upload GIF images!\") }}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "change_avatar")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"settings:label.change_avatar\" }}")))
|
||||
(form
|
||||
("class" "card flex gap-2 flex-row flex-wrap items-center")
|
||||
("class" "card flex gap_2 flex_row flex_wrap items_center")
|
||||
("method" "post")
|
||||
("enctype" "multipart/form-data")
|
||||
("onsubmit" "upload_avatar(event)")
|
||||
(div
|
||||
("class" "flex gap-2 flex-row flex-wrap items-center")
|
||||
("class" "flex gap_2 flex_row flex_wrap items_center")
|
||||
(input
|
||||
("id" "avatar_file")
|
||||
("name" "file")
|
||||
("type" "file")
|
||||
("accept" "image/png,image/jpeg,image/avif,image/webp,image/gif")
|
||||
("class" "w-content"))
|
||||
("class" "w_content"))
|
||||
(button
|
||||
(text "{{ icon \"check\" }}")))
|
||||
(span
|
||||
|
@ -961,32 +961,32 @@
|
|||
only supported for supporter users. GIFs can be at most
|
||||
2 MB large."))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "change_banner")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"settings:label.change_banner\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("method" "post")
|
||||
("enctype" "multipart/form-data")
|
||||
("onsubmit" "upload_banner(event)")
|
||||
(div
|
||||
("class" "flex gap-2 flex-row flex-wrap items-center")
|
||||
("class" "flex gap_2 flex_row flex_wrap items_center")
|
||||
(input
|
||||
("id" "banner_file")
|
||||
("name" "file")
|
||||
("type" "file")
|
||||
("accept" "image/png,image/jpeg,image/avif,image/webp,image/gif")
|
||||
("class" "w-content"))
|
||||
("class" "w_content"))
|
||||
(button
|
||||
(text "{{ icon \"check\" }}")))
|
||||
(span
|
||||
("class" "fade")
|
||||
(text "Use an image of 1100x350px for the best results."))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "default_profile_page")
|
||||
(div
|
||||
("class" "card small")
|
||||
|
@ -1008,11 +1008,11 @@
|
|||
("class" "fade")
|
||||
(text "This represents the timeline that is shown on your profile by default."))))
|
||||
(div
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
("ui_ident" "show_presets")
|
||||
(hr ("class" "margin"))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
|
@ -1030,13 +1030,13 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.save\" }}"))))
|
||||
(div
|
||||
("class" "card w-full lowered hidden flex flex-col gap-2")
|
||||
("class" "card w_full lowered hidden flex flex_col gap_2")
|
||||
("data-tab" "sessions")
|
||||
(text "{% for token in profile.tokens %}")
|
||||
(div
|
||||
("class" "card w-full flex justify-between flex-collapse gap-2")
|
||||
("class" "card w_full flex justify_between flex_collapse gap_2")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(b
|
||||
("style" "
|
||||
width: 200px;
|
||||
|
@ -1046,7 +1046,7 @@
|
|||
(text "{{ token[1] }}"))
|
||||
(text "{% if is_helper -%}")
|
||||
(span
|
||||
("class" "flex gap-2 items-center")
|
||||
("class" "flex gap_2 items_center")
|
||||
(span
|
||||
("class" "fade")
|
||||
(a
|
||||
|
@ -1068,18 +1068,18 @@
|
|||
(text "{{ text \"general:action.delete\" }}")))
|
||||
(text "{% endfor %}"))
|
||||
(div
|
||||
("class" "w-full hidden flex flex-col gap-2")
|
||||
("class" "w_full hidden flex flex_col gap_2")
|
||||
("data-tab" "theme")
|
||||
(div
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
("id" "theme_settings")
|
||||
(text "{% if failing_color_keys|length > 0 -%}")
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("style" "background: white; color: black")
|
||||
("ui_ident" "awful_contrast")
|
||||
(div
|
||||
("class" "flex gap-2 items-center")
|
||||
("class" "flex gap_2 items_center")
|
||||
(span
|
||||
("class" "desktop")
|
||||
("style" "display: contents")
|
||||
|
@ -1095,7 +1095,7 @@
|
|||
(text "{% endfor %}")))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card w-full flex flex-wrap gap-2")
|
||||
("class" "card w_full flex flex_wrap gap_2")
|
||||
("ui_ident" "import_export")
|
||||
(button
|
||||
("onclick" "import_theme_settings()")
|
||||
|
@ -1110,7 +1110,7 @@
|
|||
(text "{{ text \"settings:label.export\" }}"))))
|
||||
(text "{{ components::supporter_ad(body=\"Become a supporter to add custom CSS!\") }}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "theme_preference")
|
||||
(div
|
||||
("class" "card small")
|
||||
|
@ -1136,7 +1136,7 @@
|
|||
("class" "fade")
|
||||
(text "This represents your local site theme."))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "profile_theme")
|
||||
(div
|
||||
("class" "card small")
|
||||
|
@ -1169,10 +1169,10 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.save\" }}"))))
|
||||
(div
|
||||
("class" "card w-full lowered hidden flex flex-col gap-2")
|
||||
("class" "card w_full lowered hidden flex flex_col gap_2")
|
||||
("data-tab" "connections")
|
||||
(div
|
||||
("class" "card w-full flex flex-wrap gap-2")
|
||||
("class" "card w_full flex flex_wrap gap_2")
|
||||
(text "{% if config.connections.spotify_client_id and not profile.connections.Spotify %}")
|
||||
(button
|
||||
("class" "lowered")
|
||||
|
@ -1190,12 +1190,12 @@
|
|||
(text "{%- endif %}"))
|
||||
(text "{% for key, value in profile.connections %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ components::connection_icon(key=key) }}")
|
||||
(b
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{% if value[0].data.name -%}")
|
||||
(span
|
||||
(text "{{ value[0].data.name }}"))
|
||||
|
@ -1211,50 +1211,50 @@
|
|||
(text "{{ icon \"badge-alert\" }}"))
|
||||
(text "{%- endif %}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(button
|
||||
("class" "lowered red small")
|
||||
("onclick" "trigger('connections::delete', ['{{ key }}'])")
|
||||
(text "{{ text \"general:action.delete\" }}"))
|
||||
(label
|
||||
("for" "{{ key }}-shown")
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(input
|
||||
("type" "checkbox")
|
||||
("checked" "{% if value[0].show_on_profile -%}true{% else %}false{%- endif %}")
|
||||
("id" "{{ key }}-shown")
|
||||
("onchange" "trigger('connections::push_con_shown', ['{{ key }}', event.target.checked])")
|
||||
("class" "w-content"))
|
||||
("class" "w_content"))
|
||||
(span
|
||||
(text "Shown on profile")))))
|
||||
(text "{% endfor %}")
|
||||
(text "{% for grant in profile_grants %}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-4")
|
||||
("class" "card small flex items_center gap_4")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(icon (text "bot"))
|
||||
(a
|
||||
("class" "flush")
|
||||
("href" "{{ grant[0].homepage }}")
|
||||
("target" "_blank")
|
||||
(b
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ grant[0].title }}"))))
|
||||
|
||||
(span
|
||||
("class" "fade flex items-center gap-2")
|
||||
("class" "fade flex items_center gap_2")
|
||||
(icon (text "clock"))
|
||||
(span ("class" "date") (text "{{ grant[1].last_updated }}"))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(details
|
||||
(summary (icon (text "scan-eye")) (text "{{ grant[1].scopes|length }} scope{{ grant[1].scopes|length|pluralize }}"))
|
||||
|
||||
(div
|
||||
("class" "card lowered w-full")
|
||||
("class" "card lowered w_full")
|
||||
(ul
|
||||
(text "{% for scope in grant[1].scopes -%}")
|
||||
(li
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ components::avatar(username=profile.username, size=\"24px\") }}")
|
||||
(span
|
||||
(text "{{ profile.username }}")))
|
||||
|
@ -18,12 +18,12 @@
|
|||
("class" "notification chip")
|
||||
(text "{{ text \"auth:label.before_you_view\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(span
|
||||
("class" "no_p_margin")
|
||||
(text "{{ profile.settings.warning|markdown|safe }}"))
|
||||
(div
|
||||
("class" "card w-full secondary flex gap-2")
|
||||
("class" "card w_full secondary flex gap_2")
|
||||
(button
|
||||
("onclick" "trigger('warnings::accept', ['{{ profile.id }}', '{{ warning_hash }}'])")
|
||||
(text "{{ icon \"check\" }}")
|
||||
|
|
|
@ -63,19 +63,19 @@
|
|||
(article
|
||||
(main
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2 red")
|
||||
("class" "card small flex items_center gap_2 red")
|
||||
(icon (text "frown"))
|
||||
(str (text "general:label.account_banned")))
|
||||
|
||||
(div
|
||||
("class" "card flex flex-col gap-2 no_p_margin")
|
||||
("class" "card flex flex_col gap_2 no_p_margin")
|
||||
(str (text "general:label.account_banned_body"))
|
||||
(hr)
|
||||
(span ("class" "fade") (text "The following reason was provided by a moderator:"))
|
||||
(div
|
||||
("class" "card lowered w-full")
|
||||
("class" "card lowered w_full")
|
||||
(text "{{ user.ban_reason|markdown|safe }}"))))))
|
||||
; if we aren't banned, just show the page body
|
||||
(text "{% elif user and user.awaiting_purchase %}")
|
||||
|
@ -83,25 +83,25 @@
|
|||
(article
|
||||
(main
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2 red")
|
||||
("class" "card small flex items_center gap_2 red")
|
||||
(icon (text "frown"))
|
||||
(str (text "general:label.must_activate_account")))
|
||||
|
||||
(div
|
||||
("class" "card no_p_margin flex flex-col gap-2")
|
||||
("class" "card no_p_margin flex flex_col gap_2")
|
||||
(p (text "Since you didn't provide an invite code, you'll need to activate your account to use it."))
|
||||
(p (text "Supporter is a recurring membership. If you cancel it, your account will be locked again unless you renew your subscription or provide an invite code."))
|
||||
(div
|
||||
("class" "card w-full lowered flex flex-col gap-2")
|
||||
("class" "card w_full lowered flex flex_col gap_2")
|
||||
(text "{{ components::become_supporter_button() }}"))
|
||||
(p (text "Alternatively, you can provide an invite code to activate your account."))
|
||||
(form
|
||||
("class" "card w-full lowered flex flex-col gap-2")
|
||||
("class" "card w_full lowered flex flex_col gap_2")
|
||||
("onsubmit" "update_invite_code(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "invite_code")
|
||||
(b
|
||||
|
@ -146,14 +146,14 @@
|
|||
(article
|
||||
(main
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2 red")
|
||||
("class" "card small flex items_center gap_2 red")
|
||||
(icon (text "frown"))
|
||||
(str (text "settings:label.account_deactivated")))
|
||||
|
||||
(div
|
||||
("class" "card flex flex-col gap-2 no_p_margin")
|
||||
("class" "card flex flex_col gap_2 no_p_margin")
|
||||
(p (text "You have deactivated your account. You can undo this with the button below if you'd like."))
|
||||
(hr)
|
||||
(button
|
||||
|
|
|
@ -4,19 +4,19 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav(selected=\"\") }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ components::avatar(username=add_user.username, size=\"24px\") }}")
|
||||
(text "{{ components::full_username(user=add_user) }}"))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(span (text "Select a stack to add this user to:"))
|
||||
(text "{% for stack in stacks %}")
|
||||
(button
|
||||
("class" "justify-start lowered w-full")
|
||||
("class" "justify-start lowered w_full")
|
||||
("onclick" "choose_stack('{{ stack.id }}')")
|
||||
(icon (text "layers"))
|
||||
(text "{{ stack.name }}"))
|
||||
|
|
|
@ -4,21 +4,21 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{{ macros::timelines_nav(selected=\"stacks\") }}")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(a
|
||||
("href" "/api/v1/auth/user/find/{{ stack.owner }}")
|
||||
(text "{{ components::avatar(username=stack.owner, selector_type=\"id\") }}"))
|
||||
(span
|
||||
(text "{{ stack.name }}")))
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(text "{% if stack.mode == 'Circle' -%}")
|
||||
; post button for circle stacks
|
||||
(a
|
||||
|
@ -39,7 +39,7 @@
|
|||
(text "{{ text \"general:action.manage\" }}")))
|
||||
(text "{%- endif %}")))
|
||||
(div
|
||||
("class" "card w-full flex flex-col gap-2")
|
||||
("class" "card w_full flex flex_col gap_2")
|
||||
(text "{% if stack.users|length == 0 -%}")
|
||||
(p
|
||||
(text "No users included yet! Maybe ")
|
||||
|
@ -61,14 +61,14 @@
|
|||
(str (text "stacks:label.unblock_all")))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "flex gap-2 flex-wrap w-full")
|
||||
("class" "flex gap_2 flex_wrap w_full")
|
||||
(text "{% for user in list %} {{ components::user_plate(user=user, secondary=true) }} {% endfor %}"))
|
||||
(text "{{ components::pagination(page=page, items=list|length) }}")
|
||||
(text "{% else %}")
|
||||
; user icons for circle stack
|
||||
(text "{% if stack.mode == 'Circle' -%}")
|
||||
(div
|
||||
("class" "flex w-full gap-2 flex-wrap")
|
||||
("class" "flex w_full gap_2 flex_wrap")
|
||||
(text "{% for user in stack.users %}")
|
||||
(a
|
||||
("href" "/api/v1/auth/user/find/{{ user }}")
|
||||
|
@ -79,7 +79,7 @@
|
|||
|
||||
; posts for all stacks except blocklist
|
||||
(div
|
||||
("class" "w-full flex flex-col gap-2")
|
||||
("class" "w_full flex flex_col gap_2")
|
||||
("ui_ident" "io_data_load")
|
||||
(div ("ui_ident" "io_data_marker")))
|
||||
|
||||
|
|
|
@ -4,19 +4,19 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{{ macros::timelines_nav(selected=\"stacks\") }} {% if user -%}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"stacks:label.create_new\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "create_stack_from_form(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "name")
|
||||
(text "{{ text \"communities:label.name\" }}"))
|
||||
|
@ -32,16 +32,16 @@
|
|||
(text "{{ text \"communities:action.create\" }}"))))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ icon \"layers\" }}")
|
||||
(span
|
||||
(text "{{ text \"stacks:label.my_stacks\" }}"))))
|
||||
(div
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
(text "{% for item in list %}")
|
||||
(text "{{ components::stack_listing(stack=item) }}")
|
||||
(text "{% endfor %}"))))
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "pillmenu")
|
||||
(a
|
||||
|
@ -21,13 +21,13 @@
|
|||
(span
|
||||
(text "{{ text \"stacks:tab.users\" }}"))))
|
||||
(div
|
||||
("class" "w-full flex flex-col gap-2")
|
||||
("class" "w_full flex flex_col gap_2")
|
||||
("data-tab" "general")
|
||||
(div
|
||||
("id" "manage_fields")
|
||||
("class" "card lowered flex flex-col gap-2")
|
||||
("class" "card lowered flex flex_col gap_2")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "privacy")
|
||||
(div
|
||||
("class" "card small")
|
||||
|
@ -46,7 +46,7 @@
|
|||
("selected" "{% if stack.privacy == 'Public' -%}true{% else %}false{%- endif %}")
|
||||
(text "Public")))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "mode")
|
||||
(div
|
||||
("class" "card small")
|
||||
|
@ -73,7 +73,7 @@
|
|||
("selected" "{% if stack.mode == 'Circle' -%}true{% else %}false{%- endif %}")
|
||||
(text "Circle")))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "sort")
|
||||
(div
|
||||
("class" "card small")
|
||||
|
@ -92,17 +92,17 @@
|
|||
("selected" "{% if stack.sort == 'Likes' -%}true{% else %}false{%- endif %}")
|
||||
(text "Likes")))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "change_name")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
(text "{{ text \"stacks:label.change_name\" }}")))
|
||||
(form
|
||||
("class" "card flex flex-col gap-2")
|
||||
("class" "card flex flex_col gap_2")
|
||||
("onsubmit" "change_name(event)")
|
||||
(div
|
||||
("class" "flex flex-col gap-1")
|
||||
("class" "flex flex_col gap_1")
|
||||
(label
|
||||
("for" "name")
|
||||
(text "{{ text \"communities:label.name\" }}"))
|
||||
|
@ -118,15 +118,15 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.save\" }}"))))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
("ui_ident" "danger_zone")
|
||||
(div
|
||||
("class" "card small flex gap-1 items-center red")
|
||||
("class" "card small flex gap_1 items_center red")
|
||||
(text "{{ icon \"skull\" }}")
|
||||
(b
|
||||
(text "{{ text \"communities:label.danger_zone\" }}")))
|
||||
(div
|
||||
("class" "card flex flex-wrap gap-2")
|
||||
("class" "card flex flex_wrap gap_2")
|
||||
(button
|
||||
("class" "red lowered")
|
||||
("onclick" "delete_stack()")
|
||||
|
@ -134,7 +134,7 @@
|
|||
(span
|
||||
(text "{{ text \"general:action.delete\" }}"))))))
|
||||
(div
|
||||
("class" "card w-full flex flex-col gap-2 hidden")
|
||||
("class" "card w_full flex flex_col gap_2 hidden")
|
||||
("data-tab" "users")
|
||||
(button
|
||||
("onclick" "add_user()")
|
||||
|
@ -143,9 +143,9 @@
|
|||
(text "{{ text \"stacks:label.add_user\" }}")))
|
||||
(text "{% for user in users %}")
|
||||
(div
|
||||
("class" "card secondary flex flex-wrap gap-2 items-center justify-between")
|
||||
("class" "card secondary flex flex_wrap gap_2 items_center justify_between")
|
||||
(div
|
||||
("class" "flex gap-2")
|
||||
("class" "flex gap_2")
|
||||
(text "{{ components::avatar(username=user.username) }} {{ components::full_username(user=user) }}"))
|
||||
(button
|
||||
("class" "lowered small red")
|
||||
|
@ -155,7 +155,7 @@
|
|||
(text "{{ text \"stacks:label.remove\" }}"))))
|
||||
(text "{% endfor %}"))
|
||||
(div
|
||||
("class" "flex gap-2 flex-wrap")
|
||||
("class" "flex gap_2 flex_wrap")
|
||||
(a
|
||||
("href" "/stacks/{{ stack.id }}")
|
||||
("class" "button secondary")
|
||||
|
|
|
@ -4,17 +4,17 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{{ macros::timelines_nav(selected=\"all\", posts=\"/all\", questions=\"/all/questions\") }} {% if not user -%}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small flex items-center gap-2")
|
||||
("class" "card small flex items_center gap_2")
|
||||
(text "{{ icon \"heart\" }}")
|
||||
(b
|
||||
(text "{{ text \"general:label.better_with_account\" }}")))
|
||||
(div
|
||||
("class" "card flex gap-2")
|
||||
("class" "card flex gap_2")
|
||||
(a
|
||||
("href" "/auth/login")
|
||||
("class" "button")
|
||||
|
@ -29,7 +29,7 @@
|
|||
(text "{{ text \"auth:action.register\" }}")))))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "card w-full flex flex-col gap-2")
|
||||
("class" "card w_full flex flex_col gap_2")
|
||||
("ui_ident" "io_data_load")
|
||||
(div ("ui_ident" "io_data_marker"))))
|
||||
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{{ macros::timelines_nav(selected=\"all\", posts=\"/all\", questions=\"/all/questions\", secondary_selected=\"questions\") }}")
|
||||
(div
|
||||
("class" "card w-full flex flex-col gap-2")
|
||||
("class" "card w_full flex flex_col gap_2")
|
||||
(text "{% for question in list %} {{ components::global_question(question=question, can_manage_questions=false, secondary=true) }} {% endfor %} {{ components::pagination(page=page, items=list|length) }}")))
|
||||
|
||||
(text "{% endblock %}")
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{{ macros::timelines_nav(selected=\"following\", posts=\"/following\", questions=\"/following/questions\") }}")
|
||||
(div
|
||||
("class" "card w-full flex flex-col gap-2")
|
||||
("class" "card w_full flex flex_col gap_2")
|
||||
("ui_ident" "io_data_load")
|
||||
(div ("ui_ident" "io_data_marker"))))
|
||||
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{{ macros::timelines_nav(selected=\"following\", posts=\"/following\", questions=\"/following/questions\", secondary_selected=\"questions\") }}")
|
||||
(div
|
||||
("class" "card w-full flex flex-col gap-2")
|
||||
("class" "card w_full flex flex_col gap_2")
|
||||
(text "{% for question in list %} {{ components::global_question(question=question, can_manage_questions=false, secondary=true) }} {% endfor %} {{ components::pagination(page=page, items=list|length) }}")))
|
||||
|
||||
(text "{% endblock %}")
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav(selected=\"home\") }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{{ macros::timelines_nav(selected=\"home\", posts=\"/\", questions=\"/questions\") }} {% if list|length == 0 and page == 0 -%}")
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
|
@ -25,7 +25,7 @@
|
|||
("href" "/communities/search")
|
||||
(text "searching for a community to join!")))))
|
||||
(div
|
||||
("class" "card-nest")
|
||||
("class" "card_nest")
|
||||
(div
|
||||
("class" "card small")
|
||||
(b
|
||||
|
@ -38,7 +38,7 @@
|
|||
(text "!"))))
|
||||
(text "{% else %}")
|
||||
(div
|
||||
("class" "card w-full flex flex-col gap-2")
|
||||
("class" "card w_full flex flex_col gap_2")
|
||||
("ui_ident" "io_data_load")
|
||||
(div ("ui_ident" "io_data_marker")))
|
||||
(text "{%- endif %}"))
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{{ macros::timelines_nav(selected=\"home\", posts=\"/\", questions=\"/questions\", secondary_selected=\"questions\") }}")
|
||||
(div
|
||||
("class" "card w-full flex flex-col gap-2")
|
||||
("class" "card w_full flex flex_col gap_2")
|
||||
(text "{% for question in list %} {{ components::global_question(question=question, can_manage_questions=false, secondary=true) }} {% endfor %} {{ components::pagination(page=page, items=list|length) }}")))
|
||||
|
||||
(text "{% endblock %}")
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav(selected=\"popular\") }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{{ macros::timelines_nav(selected=\"popular\", posts=\"/popular\", questions=\"/popular/questions\") }}")
|
||||
(div
|
||||
("class" "card w-full flex flex-col gap-2")
|
||||
("class" "card w_full flex flex_col gap_2")
|
||||
("ui_ident" "io_data_load")
|
||||
(div ("ui_ident" "io_data_marker"))))
|
||||
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{{ macros::timelines_nav(selected=\"popular\", posts=\"/popular\", questions=\"/popular/questions\", secondary_selected=\"questions\") }}")
|
||||
(div
|
||||
("class" "card w-full flex flex-col gap-2")
|
||||
("class" "card w_full flex flex_col gap_2")
|
||||
(text "{% for question in list %} {{ components::global_question(question=question, can_manage_questions=false, secondary=true) }} {% endfor %} {{ components::pagination(page=page, items=list|length) }}")))
|
||||
|
||||
(text "{% endblock %}")
|
||||
|
|
|
@ -4,14 +4,14 @@
|
|||
|
||||
(text "{% endblock %} {% block body %} {{ macros::nav() }}")
|
||||
(main
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(text "{{ macros::timelines_nav(selected=\"search\") }}")
|
||||
(div
|
||||
("class" "card-nest w-full")
|
||||
("class" "card_nest w_full")
|
||||
(div
|
||||
("class" "card small flex items-center justify-between gap-2")
|
||||
("class" "card small flex items_center justify_between gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ icon \"search\" }} {% if not profile -%}")
|
||||
(span
|
||||
(text "{{ text \"general:link.search\" }}"))
|
||||
|
@ -20,12 +20,12 @@
|
|||
(text "{{ components::full_username(user=profile) }}"))
|
||||
(text "{%- endif %}")))
|
||||
(div
|
||||
("class" "card w-full flex flex-col gap-2")
|
||||
("class" "card w_full flex flex_col gap_2")
|
||||
(text "{% if not profile and not user.permissions|has_supporter -%} {{ components::supporter_ad(body=\"Become a supporter for full-site search!\") }} {% else %}")
|
||||
(form
|
||||
("class" "flex flex-col gap-2")
|
||||
("class" "flex flex_col gap_2")
|
||||
(div
|
||||
("class" "flex flex-row gap-2")
|
||||
("class" "flex flex_row gap_2")
|
||||
(input
|
||||
("type" "text")
|
||||
("name" "query")
|
||||
|
@ -43,7 +43,7 @@
|
|||
("id" "profile"))
|
||||
(text "{%- endif %}")
|
||||
(div
|
||||
("class" "flex gap-2 flex-row")
|
||||
("class" "flex gap_2 flex_row")
|
||||
(button
|
||||
("class" "small square")
|
||||
(text "{{ icon \"search\" }}"))
|
||||
|
|
|
@ -13,9 +13,9 @@
|
|||
(text "{%- endfor %}"))
|
||||
(text "{% if list|length == 0 -%}")
|
||||
(div
|
||||
("class" "card lowered green flex justify-between items-center gap-2")
|
||||
("class" "card lowered green flex justify_between items_center gap_2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
("class" "flex items_center gap_2")
|
||||
(text "{{ icon \"shell\" }}")
|
||||
(span
|
||||
(str (text "general:label.timeline_end"))
|
||||
|
|
|
@ -919,7 +919,7 @@ media_theme_pref();
|
|||
}
|
||||
|
||||
if (option.input_element_type === "checkbox") {
|
||||
into_element.innerHTML += `<div class="card flex items-center gap-2">
|
||||
into_element.innerHTML += `<div class="card flex items_center gap_2">
|
||||
<input
|
||||
type="checkbox"
|
||||
onchange="window.set_setting_field${id_key}('${option.key}', event.target.checked)"
|
||||
|
@ -927,7 +927,7 @@ media_theme_pref();
|
|||
name="${option.key}"
|
||||
id="${option.key}"
|
||||
${option.value === "true" ? "checked" : ""}
|
||||
class="w-content"
|
||||
class="w_content"
|
||||
/>
|
||||
|
||||
<label for="${option.key}"><b>${option.label.replaceAll("_", " ")}</b></label>
|
||||
|
@ -937,10 +937,10 @@ media_theme_pref();
|
|||
}
|
||||
|
||||
if (option.input_element_type === "color") {
|
||||
into_element.innerHTML += `<div class="flex flex-col gap-2">
|
||||
into_element.innerHTML += `<div class="flex flex_col gap_2">
|
||||
<label for="${option.key}"><b>${option.label.replaceAll("_", " ")}</b></label>
|
||||
|
||||
<div class="card flex flex-row gap-2">
|
||||
<div class="card flex flex_row gap_2">
|
||||
<input
|
||||
type="color"
|
||||
onchange="window.update_field_with_color('${option.key}', event.target.value)"
|
||||
|
@ -956,7 +956,7 @@ media_theme_pref();
|
|||
name="${option.key}"
|
||||
id="${option.key}"
|
||||
value="${option.value}"
|
||||
class="w-full"
|
||||
class="w_full"
|
||||
style="height: 32px"
|
||||
/>
|
||||
</div>
|
||||
|
@ -967,12 +967,12 @@ media_theme_pref();
|
|||
return;
|
||||
}
|
||||
|
||||
into_element.innerHTML += `<div class="card-nest">
|
||||
into_element.innerHTML += `<div class="card_nest">
|
||||
<div class="card small">
|
||||
<label for="${option.key}"><b>${option.label.replaceAll("_", " ")}</b></label>
|
||||
</div>
|
||||
|
||||
<div class="card flex flex-col gap-2">
|
||||
<div class="card flex flex_col gap_2">
|
||||
<${option.input_element_type || "input"}
|
||||
type="text"
|
||||
onchange="window.set_setting_field${id_key}('${option.key}', event.target.value)"
|
||||
|
@ -1122,14 +1122,14 @@ ${option.input_element_type === "textarea" ? `${option.value}</textarea>` : ""}
|
|||
let permissions_html = "";
|
||||
|
||||
for (const match of matching) {
|
||||
permissions_html += `<div class="card w-full secondary flex justify-between gap-2">
|
||||
permissions_html += `<div class="card w_full secondary flex justify_between gap_2">
|
||||
<span>${match} <code>${permissions[match]}</code></span>
|
||||
<button class="red lowered" onclick="${remove_name}('${match}')">Remove</button>
|
||||
</div>`;
|
||||
}
|
||||
|
||||
for (const match of not_matching) {
|
||||
permissions_html += `<div class="card w-full secondary flex justify-between gap-2">
|
||||
permissions_html += `<div class="card w_full secondary flex justify_between gap_2">
|
||||
<span>${match} <code>${permissions[match]}</code></span>
|
||||
<button class="green lowered" onclick="${add_name}('${match}')">Add</button>
|
||||
</div>`;
|
||||
|
|
|
@ -725,8 +725,8 @@
|
|||
self.define("render_token_picker", ({ $ }, element) => {
|
||||
element.innerHTML = "";
|
||||
for (const token of Object.entries($.LOGIN_ACCOUNT_TOKENS)) {
|
||||
element.innerHTML += `<div class="flex gap-2 flex-row">
|
||||
<button class="lowered w-full justify-start" onclick="trigger('me::login', ['${token[0]}'])">
|
||||
element.innerHTML += `<div class="flex gap_2 flex_row">
|
||||
<button class="lowered w_full justify-start" onclick="trigger('me::login', ['${token[0]}'])">
|
||||
<img
|
||||
title="${token[0]}'s avatar"
|
||||
src="/api/v1/auth/user/${token[0]}/avatar?selector_type=username"
|
||||
|
|
|
@ -932,7 +932,7 @@ pub async fn post_replies_request(
|
|||
None => return Json(Error::NotAllowed.into()),
|
||||
};
|
||||
|
||||
match data.get_replies_by_post(id, 12, props.page).await {
|
||||
match data.get_replies_by_post(id, 12, props.page, "DESC").await {
|
||||
Ok(posts) => {
|
||||
let ignore_users = crate::ignore_users_gen!(user!, #data);
|
||||
Json(ApiReturn {
|
||||
|
|
|
@ -835,7 +835,16 @@ pub async fn post_request(
|
|||
// ...
|
||||
let ignore_users = crate::ignore_users_gen!(user, data);
|
||||
|
||||
let feed = match data.0.get_replies_by_post(post.id, 12, props.page).await {
|
||||
let feed = match data
|
||||
.0
|
||||
.get_replies_by_post(
|
||||
post.id,
|
||||
12,
|
||||
props.page,
|
||||
if community.is_forum { "ASC" } else { "DESC" },
|
||||
)
|
||||
.await
|
||||
{
|
||||
Ok(p) => match data.0.fill_posts(p, &ignore_users, &user).await {
|
||||
Ok(p) => p,
|
||||
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
|
||||
|
|
|
@ -132,6 +132,7 @@ impl DataManager {
|
|||
id: usize,
|
||||
batch: usize,
|
||||
page: usize,
|
||||
sort: &str,
|
||||
) -> Result<Vec<Post>> {
|
||||
let conn = match self.0.connect().await {
|
||||
Ok(c) => c,
|
||||
|
@ -140,7 +141,9 @@ impl DataManager {
|
|||
|
||||
let res = query_rows!(
|
||||
&conn,
|
||||
"SELECT * FROM posts WHERE replying_to = $1 ORDER BY created DESC LIMIT $2 OFFSET $3",
|
||||
&format!(
|
||||
"SELECT * FROM posts WHERE replying_to = $1 ORDER BY created {sort} LIMIT $2 OFFSET $3"
|
||||
),
|
||||
&[&(id as i64), &(batch as i64), &((page * batch) as i64)],
|
||||
|x| { Self::get_post_from_row(x) }
|
||||
);
|
||||
|
@ -1768,7 +1771,7 @@ impl DataManager {
|
|||
"Community does not allow titles".to_string(),
|
||||
));
|
||||
}
|
||||
} else {
|
||||
} else if data.replying_to.is_none() {
|
||||
if data.title.len() < 2 && community.context.require_titles {
|
||||
return Err(Error::DataTooShort("title".to_string()));
|
||||
} else if data.title.len() > 128 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue