@use plume_models::posts::Post; @use crate::template_utils::*; @use crate::routes::*; @(ctx: BaseContext, article: Post) <div class="card h-entry"> @if article.cover_id.is_some() { <div class="cover" style="background-image: url('@Html(article.cover_url(ctx.0).unwrap_or_default())')"></div> } <header> @if ctx.2.clone().and_then(|u| article.is_author(ctx.0, u.id).ok()).unwrap_or(false) { <div class="controls"> <a class="button" href="@uri!(posts::edit: blog = &article.get_blog(ctx.0).unwrap().fqn, slug = &article.slug)">@i18n!(ctx.1, "Edit")</a> </div> } <h3 class="p-name" dir="auto"> <a class="u-url" href="@uri!(posts::details: blog = article.get_blog(ctx.0).unwrap().fqn, slug = &article.slug, responding_to = _)"> @article.title </a> </h3> </header> <main> <p class="p-summary" dir="auto">@article.subtitle</p> </main> <footer class="authors"> <div> @Html(i18n!(ctx.1, "By {0}"; format!( "<a class=\"p-author h-card\" href=\"{}\">{}</a>", uri!(user::details: name = &article.get_authors(ctx.0).unwrap_or_default()[0].fqn), escape(&article.get_authors(ctx.0).unwrap_or_default()[0].name()) ))) @if article.published { ⋅ <span class="dt-published" datetime="@article.creation_date.format("%F %T")">@article.creation_date.format("%B %e, %Y")</span> } ⋅ <a href="@uri!(blogs::details: name = &article.get_blog(ctx.0).unwrap().fqn, page = _)">@article.get_blog(ctx.0).unwrap().title</a> ⋅ </div> @if !article.published { <div>⋅ @i18n!(ctx.1, "Draft")</div> } else { <div> <span class="likes" aria-label="@i18n!(ctx.1, "One like", "{0} likes"; article.count_likes(ctx.0).unwrap_or_default())" title="@i18n!(ctx.1, "One like", "{0} likes"; article.count_likes(ctx.0).unwrap_or_default())"> @icon!("heart") @article.count_likes(ctx.0).unwrap_or_default() </span> ⋅ <span class="reshares" aria-label="@i18n!(ctx.1, "One like", "{0} boost"; article.count_reshares(ctx.0).unwrap_or_default())" title="@i18n!(ctx.1, "One boost", "{0} boosts"; article.count_reshares(ctx.0).unwrap_or_default())"> @icon!("repeat") @article.count_reshares(ctx.0).unwrap_or_default() </span> </div> } </footer> </div>