732f514da7
We add clippy as our build — also rectifying the missing `plume-cli` build! In the next step we follow clippy's advise and fix some of the "simple" mistakes in our code, such as style or map usage. Finally, we refactor some hard bits that need extraction of new types, or refactoring of function call-types, especially those that thread thru macros, and, of course functions with ~15 parameters should probably be rethought.
61 lines
2.2 KiB
HTML
61 lines
2.2 KiB
HTML
@use plume_models::blogs::Blog;
|
|
@use plume_models::posts::Post;
|
|
@use plume_models::users::User;
|
|
@use templates::{base, partials::post_card};
|
|
@use template_utils::*;
|
|
@use routes::*;
|
|
|
|
@(ctx: BaseContext, blog: Blog, authors: &[User], total_articles: i64, page: i32, n_pages: i32, is_author: bool, posts: Vec<Post>)
|
|
|
|
@:base(ctx, blog.title.clone(), {}, {
|
|
<a href="@uri!(blogs::details: name = &blog.fqn, page = _)">@blog.title</a>
|
|
}, {
|
|
<div class="hidden">
|
|
@for author in authors {
|
|
<div class="h-card">
|
|
<span class="p-name">@author.name()</span>
|
|
<a class="u-url" href="@author.ap_url"></a>
|
|
</div>
|
|
}
|
|
</div>
|
|
<div class="h-feed">
|
|
<h1><span class="p-name">@blog.title</span> <small>~@blog.fqn</small></h1>
|
|
<p>@blog.summary</p>
|
|
<p>
|
|
@i18n!(ctx.1, "There's one author on this blog: ", "There are {0} authors on this blog: "; authors.len())
|
|
@for author in authors {
|
|
<a class="author p-author" href="@uri!(user::details: name = &author.fqn)">@author.name()</a>
|
|
}
|
|
</p>
|
|
<p>
|
|
@i18n!(ctx.1, "There's one article on this blog", "There are {0} articles on this blog"; total_articles)
|
|
</p>
|
|
|
|
<section>
|
|
<h2>
|
|
@i18n!(ctx.1, "Latest articles")
|
|
<small><a href="@uri!(blogs::atom_feed: name = &blog.fqn)" title="Atom feed">@icon!("rss")</a></small>
|
|
</h2>
|
|
@if posts.is_empty() {
|
|
<p>@i18n!(ctx.1, "No posts to see here yet.")</p>
|
|
}
|
|
@if is_author {
|
|
<a href="@uri!(posts::new: blog = &blog.fqn)" class="button inline-block">@i18n!(ctx.1, "New article")</a>
|
|
}
|
|
<div class="cards">
|
|
@for article in posts {
|
|
@:post_card(ctx, article)
|
|
}
|
|
</div>
|
|
@paginate(ctx.1, page, n_pages)
|
|
</section>
|
|
</div>
|
|
@if is_author {
|
|
<h2>@i18n!(ctx.1, "Danger zone")</h2>
|
|
<p>@i18n!(ctx.1, "Be very careful, any action taken here can't be reversed.")</p>
|
|
<form method="post" action="@uri!(blogs::delete: name = &blog.fqn)">
|
|
<input type="submit" class="inline-block button destructive" value="@i18n!(ctx.1, "Permanently delete this blog")">
|
|
</form>
|
|
}
|
|
})
|