hyaenidae/templates/admin/index.rs.html

288 lines
12 KiB
HTML

@use crate::ActixLoader;
@use crate::admin::{FederationView, ReportsView, ServerView};
@use crate::extensions::ProfileExt;
@use crate::nav::NavState;
@use crate::templates::button_js;
@use crate::templates::layouts::home;
@use crate::templates::admin::{reporter, server_box};
@use hyaenidae_toolkit::{templates::button_group, Button};
@use hyaenidae_toolkit::{templates::{card, card_title, card_body}, Card};
@use hyaenidae_toolkit::{templates::link, Link};
@use hyaenidae_toolkit::templates::text_input;
@use i18n_embed_fl::fl;
@(loader: &ActixLoader, reports_view: &ReportsView, server_view: &ServerView, federation_view: &FederationView, nav_state: &NavState)
@:home(loader, &fl!(loader, "admin-settings-title"), &fl!(loader, "admin-settings-subtitle"), nav_state, {
@:button_js()
}, {
@:card(&Card::full_width().dark(nav_state.dark()), {
<form method="POST" action="@server_view.update_path()">
@:card_title({
@fl!(loader, "server-info-heading")
})
@:card_body({
@:text_input(&server_view.title_input(loader).dark(nav_state.dark()))
@:text_input(&server_view.description_input(loader).dark(nav_state.dark()))
})
@:card_body({
@:button_group(&[
Button::primary(&fl!(loader, "server-info-submit-button")),
])
})
</form>
})
@:card(&Card::full_width().dark(nav_state.dark()), {
@:card_title({
@fl!(loader, "admin-reports-heading")
})
@for report in reports_view.open_reports() {
@:card_body({
<div class="report">
<div class="report-left">
<div class="report-head">
@if let Some(profile) = reports_view.profile(report) {
@:reporter(reports_view, report, {
@fl!(loader, "admin-reports-reported")
@:link(&Link::new_tab(&profile.view_path()).plain(true), {
@Html(profile.name())
})
})
}
@if let Some(submission) = reports_view.submission(report) {
@:reporter(reports_view, report, {
@fl!(loader, "admin-reports-reported")
@:link(&Link::new_tab(&submission.author_path()).plain(true), {
@Html(fl!(loader, "author-owned", author = submission.author_name()))
})
@fl!(loader, "admin-reports-submission")
@:link(&Link::new_tab(&submission.view_path()).plain(true), {
@Html(submission.title())
})
})
}
@if let Some(comment) = reports_view.comment(report) {
@:reporter(reports_view, report, {
reported
@:link(&Link::new_tab(&comment.author_path()).plain(true), {
@Html(fl!(loader, "author-owned", author = comment.author_name()))
})
@fl!(loader, "admin-reports-comment")
@:link(&Link::new_tab(&comment.view_path()).plain(true), {
@Html(comment.body())
})
})
}
</div>
@if let Some(note) = report.note() {
<div class="report-description text-section">
<h4>@fl!(loader, "admin-reports-note")</h4>
<p>@Html(note)</p>
</div>
}
</div>
<div class="button-section report-actions">
@:button_group(&[
Button::secondary(&fl!(loader, "admin-reports-view-button")).href(&reports_view.view_path(report)),
])
</div>
</div>
})
}
@if reports_view.has_open_reports_nav() {
@:card_body({
@:button_group(&reports_view.open_reports_nav(loader))
})
}
})
@:card(&Card::full_width().dark(nav_state.dark()), {
@:card_title({
@fl!(loader, "admin-closed-reports-heading")
})
@for report in reports_view.closed_reports() {
@:card_body({
<div class="report">
<div class="report-left">
<div class="report-head">
@if let Some(profile) = reports_view.profile(report) {
@:reporter(reports_view, report, {
@fl!(loader, "admin-reports-reported")
@:link(&Link::new_tab(&profile.view_path()).plain(true), {
@Html(profile.name())
})
})
}
@if let Some(submission) = reports_view.submission(report) {
@:reporter(reports_view, report, {
@fl!(loader, "admin-reports-reported")
@:link(&Link::new_tab(&submission.author_path()).plain(true), {
@Html(fl!(loader, "author-owned", author = submission.author_name()))
})
@fl!(loader, "admin-reports-submission")
@:link(&Link::new_tab(&submission.view_path()).plain(true), {
@Html(submission.title())
})
})
}
@if let Some(comment) = reports_view.comment(report) {
@:reporter(reports_view, report, {
reported
@:link(&Link::new_tab(&comment.author_path()).plain(true), {
@Html(fl!(loader, "author-owned", author = comment.author_name()))
})
@fl!(loader, "admin-reports-comment")
@:link(&Link::new_tab(&comment.view_path()).plain(true), {
@Html(comment.body())
})
})
}
</div>
@if let Some(note) = report.note() {
<div class="report-description text-section">
<h4>@fl!(loader, "admin-reports-note")</h4>
<p>@Html(note)</p>
</div>
}
</div>
</div>
})
}
@if reports_view.has_closed_reports_nav() {
@:card_body({
@:button_group(&reports_view.closed_reports_nav(loader))
})
}
})
@:card(&Card::full_width().dark(nav_state.dark()), {
<form method="POST" action="@federation_view.discover_path()">
@:card_title({
@fl!(loader, "admin-discover-server-heading")
})
@:card_body({
<div class="text-section">
<p>@fl!(loader, "admin-discover-server-description")</p>
</div>
@:text_input(&federation_view.discover_input(loader).dark(nav_state.dark()))
})
@:card_body({
@:button_group(&[
Button::primary(&fl!(loader, "admin-discover-button")),
])
})
</form>
})
@:card(&Card::full_width().dark(nav_state.dark()), {
@:card_title({
@fl!(loader, "admin-inbound-federation-heading")
})
@for s in federation_view.inbound() {
@:card_body({
@:server_box(s.server, {})
<div class="button-section">
@:button_group(&[
s.accept(loader),
s.reject(loader),
s.block(loader),
])
</div>
})
}
@if federation_view.has_inbound_nav() {
@:card_body({
@:button_group(&federation_view.inbound_buttons(loader))
})
}
})
@:card(&Card::full_width().dark(nav_state.dark()), {
@:card_title({
@fl!(loader, "admin-outbound-federation-heading")
})
@for s in federation_view.outbound() {
@:card_body({
@:server_box(s.server, {})
<div class="button-section">
@:button_group(&[
s.cancel(loader),
s.block(loader),
])
</div>
})
}
@if federation_view.has_outbound_nav() {
@:card_body({
@:button_group(&federation_view.outbound_buttons(loader))
})
}
})
@:card(&Card::full_width().dark(nav_state.dark()), {
@:card_title({
@fl!(loader, "admin-federated-servers-heading")
})
@for s in federation_view.federated() {
@:card_body({
@:server_box(s.server, {})
<div class="button-section">
@:button_group(&[
s.defederate(loader),
s.block(loader),
])
</div>
})
}
@if federation_view.has_federated_nav() {
@:card_body({
@:button_group(&federation_view.federated_buttons(loader))
})
}
})
@:card(&Card::full_width().dark(nav_state.dark()), {
@:card_title({
@fl!(loader, "admin-blocked-servers-heading")
})
@for s in federation_view.blocked() {
@:card_body({
@:server_box(s.server, {})
<div class="button-section">
@:button_group(&[
s.unblock(loader),
])
</div>
})
}
@if federation_view.has_blocked_nav() {
@:card_body({
@:button_group(&federation_view.blocked_buttons(loader))
})
}
})
@:card(&Card::full_width().dark(nav_state.dark()), {
@:card_title({
@fl!(loader, "admin-known-servers-heading")
})
@for s in federation_view.known() {
@:card_body({
@:server_box(s.server, {})
<div class="button-section">
@:button_group(&[
s.federate(loader),
s.block(loader),
])
</div>
})
}
@if federation_view.has_known_nav() {
@:card_body({
@:button_group(&federation_view.known_buttons(loader))
})
}
})
})