56 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
@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() {
 | 
						|
    <a class="cover-link" href="@uri!(posts::details: blog = article.get_blog_fqn(ctx.0).to_string(), slug = &article.slug, responding_to = _)">
 | 
						|
      <div class="cover" style="background-image: url('@Html(article.cover_url(ctx.0).unwrap_or_default())')"></div>
 | 
						|
    </a>
 | 
						|
    }
 | 
						|
    <header dir="auto">
 | 
						|
        <h3 class="p-name">
 | 
						|
            <a class="u-url" href="@uri!(posts::details: blog = article.get_blog_fqn(ctx.0).to_string(), slug = &article.slug, responding_to = _)">
 | 
						|
                @article.title
 | 
						|
            </a>
 | 
						|
        </h3>
 | 
						|
        @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_fqn(ctx.0).to_string(), slug = &article.slug)">@i18n!(ctx.1, "Edit")</a>
 | 
						|
            </div>
 | 
						|
        }
 | 
						|
    </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_fqn(ctx.0).to_string(), 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>
 |