115 lines
4.2 KiB
Common Lisp
115 lines
4.2 KiB
Common Lisp
(text "{% extends \"root.html\" %} {% block head %}")
|
|
(title
|
|
(text "My communities - {{ config.name }}"))
|
|
|
|
(text "{% endblock %} {% block body %} {{ macros::nav(selected=\"communities\") }}")
|
|
(main
|
|
("class" "flex flex_col gap_2")
|
|
(text "{% if user -%}")
|
|
(div
|
|
("class" "card_nest")
|
|
(div
|
|
("class" "card small")
|
|
(b
|
|
(text "{{ text \"communities:label.create_new\" }}")))
|
|
(form
|
|
("class" "card flex flex_col gap_2")
|
|
("onsubmit" "create_community_from_form(event)")
|
|
(div
|
|
("class" "flex flex_col gap_1")
|
|
(label
|
|
("for" "title")
|
|
(text "{{ text \"communities:label.name\" }}"))
|
|
(input
|
|
("type" "text")
|
|
("name" "title")
|
|
("id" "title")
|
|
("placeholder" "name")
|
|
("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")
|
|
(div
|
|
("class" "card small flex items_center justify_between gap_2")
|
|
(div
|
|
("class" "flex items_center gap_2")
|
|
(text "{{ icon \"award\" }}")
|
|
(span
|
|
(text "{{ text \"communities:label.my_communities\" }}")))
|
|
|
|
(div
|
|
("class" "flex items_center gap_2")
|
|
(a
|
|
("href" "/forges")
|
|
("class" "button lowered small")
|
|
(text "{{ icon \"anvil\" }}")
|
|
(span
|
|
("class" "desktop")
|
|
(text "{{ text \"forge:label.my_forges\" }}")))
|
|
(a
|
|
("href" "/communities/search")
|
|
("class" "button lowered small")
|
|
(text "{{ icon \"search\" }}")
|
|
(span
|
|
("class" "desktop")
|
|
(text "{{ text \"communities:label.join_new\" }}")))))
|
|
(div
|
|
("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")
|
|
(div
|
|
("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")
|
|
(text "{% for item in popular_list %} {{ components::community_listing_card(community=item) }} {% endfor %}"))))
|
|
|
|
(script
|
|
(text "async function create_community_from_form(e) {
|
|
e.preventDefault();
|
|
await trigger(\"atto::debounce\", [\"communities::create\"]);
|
|
|
|
fetch(\"/api/v1/communities\", {
|
|
method: \"POST\",
|
|
headers: {
|
|
\"Content-Type\": \"application/json\",
|
|
},
|
|
body: JSON.stringify({
|
|
title: e.target.title.value,
|
|
forum: e.target.is_forum.checked,
|
|
}),
|
|
})
|
|
.then((res) => res.json())
|
|
.then((res) => {
|
|
trigger(\"atto::toast\", [
|
|
res.ok ? \"success\" : \"error\",
|
|
res.message,
|
|
]);
|
|
|
|
if (res.ok) {
|
|
e.target.reset();
|
|
setTimeout(() => {
|
|
window.location.href = `/community/${res.payload}`;
|
|
}, 100);
|
|
}
|
|
});
|
|
}"))
|
|
|
|
(text "{% endblock %}")
|