hyaenidae/server/templates/submissions/public.rs.html

75 lines
2.7 KiB
HTML

@use crate::templates::layouts::home;
@use crate::templates::comments::nodes;
@use crate::templates::submissions::{image, profile_box};
@use crate::{nav::NavState, submissions::SubmissionView};
@use hyaenidae_toolkit::{templates::button_group, Button};
@use hyaenidae_toolkit::{templates::{card, card_body, card_section, card_title}, Card};
@use hyaenidae_toolkit::templates::nested;
@use hyaenidae_toolkit::templates::text_input;
@(view: &SubmissionView, nav_state: &NavState)
@:home(&view.submission.title(), view.submission.description().unwrap_or(&format!("{} hosted on Hyaenidae", view.submission.title())), nav_state, {}, {
@:card(&Card::full_width().dark(nav_state.dark()), {
@:card_title({
@view.submission.title()
})
@:card_section({
@if let Some(file) = view.current_file.pictrs() {
<div class="submission-box">
@:image(file.key(), &view.submission.title(), view.file_num)
</div>
} else {
<div>Failed to display image</div>
}
})
@:card_body({
<div class="submission-buttons">
@:button_group(&view.nav())
</div>
})
@:card_body({
@:profile_box(&view.poster, view.submission.published(), nav_state.dark(), {
@if let Some(description) = view.submission.description() {
@description
}
})
})
})
@if view.is_self {
@:card(&Card::full_width().dark(nav_state.dark()), {
@:card_title({ Update Submission })
@:card_body({
@:button_group(&[
&Button::primary("Update").href(&view.update_path()),
])
})
})
}
@if view.profile.is_some() && view.submission.published().is_some() {
@:card(&Card::full_width().dark(nav_state.dark()), {
<form method="POST" action="@view.comment_path()">
@:card_title({ Comment })
@:card_body({
@:text_input(&view.comment_input)
})
@:card_body({
@:button_group(&[
&Button::primary("Submit"),
])
})
</form>
})
}
@if view.comments.has_children() {
@:card(&Card::full_width().dark(nav_state.dark()), {
@:card_title({ Comments })
@:card_body({
@:nested(nav_state.dark(), {
@:nodes(&view.comments, &view.replying_to(), view.profile.is_some(), nav_state.dark())
})
})
})
}
})