* Start to update the theme - Ligther colors - No more border radius - Buttons are now always colored - Start to redesign the post page (according to the Figma mockups) * Fix build script: it now recompiles everytime a scss file changed * Make sure the article illustrations are not too big * Make articles wider (70 characters) * Better contrast between gray shades * Various improvements * Better mobile style * New style for the footer * Improve comment style * Better responsiveness again * Limit the size of the article cover * Last details? - Improve buttons on the media page - Improve lists * Pin the stdweb version that we use It changed because I removed Cargo.lock to handle a merge conflict I could have updated cargo web too, but it mean I should have re-built the CI docker image and it was taking forever. * Better contrast for links in the header of the article * Add a basic privacy policy * Remove "also" * Fix a few issues - Don't watch static/css in build.rs - Another shade of white - Remove useless margin rule for error messages
		
			
				
	
	
		
			86 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| @use plume_models::blogs::Blog;
 | |
| @use plume_models::instance::Instance;
 | |
| @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], page: i32, n_pages: i32, posts: Vec<Post>)
 | |
| 
 | |
| @:base(ctx, blog.title.clone(), {
 | |
| 	<meta content="profile" property="og:type" />
 | |
| 	<meta content="120" property="og:image:width" />
 | |
| 	<meta content="120" property="og:image:height" />
 | |
| 	<meta content="summary" property="twitter:card" />
 | |
| 	<meta content="'@Instance::get_local().unwrap().name" property="og:site_name" />
 | |
| 	<meta content="@blog.ap_url" property="og:url" />
 | |
| 	<meta content="@blog.fqn" property="profile:username" />
 | |
| 	<meta content="@blog.title" property="og:title" />
 | |
| 	<meta content="@blog.summary_html" name="description">
 | |
| 	<meta content="@blog.summary_html" property="og:description" />
 | |
| 	<meta content="@blog.icon_url(ctx.0)" property="og:image" />
 | |
| 
 | |
| 	<link href='@Instance::get_local().unwrap().compute_box("~", &blog.fqn, "atom.xml")' rel='alternate' type='application/atom+xml'>
 | |
| 	<link href='@blog.ap_url' rel='alternate' type='application/activity+json'>
 | |
| }, {
 | |
|     <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">
 | |
|     @if let Some(banner_url) = blog.banner_url(ctx.0) {
 | |
|         <div class="cover" style="background-image: url('@Html(banner_url.clone())')"></div>
 | |
|         <img class="hidden u-photo" src="@banner_url"/>
 | |
|     }
 | |
|     <div class="h-card">
 | |
|         <div class="user">
 | |
|             <div class="flex wrap">
 | |
|                 <div class="avatar medium" style="background-image: url('@blog.icon_url(ctx.0)');" aria-label="@i18n!(ctx.1, "{}'s icon"; &blog.title)"></div>
 | |
|                 <img class="hidden u-photo" src="@blog.icon_url(ctx.0)"/>
 | |
| 
 | |
|                 <h1 class="grow flex vertical">
 | |
|                     <span class="p-name">@blog.title</span>
 | |
|                     <small>~@blog.fqn</small>
 | |
|                 </h1>
 | |
| 
 | |
|                 @if ctx.2.clone().and_then(|u| u.is_author_in(ctx.0, &blog).ok()).unwrap_or(false) {
 | |
|                     <a href="@uri!(posts::new: blog = &blog.fqn)" class="button">@i18n!(ctx.1, "New article")</a>
 | |
|                     <a href="@uri!(blogs::edit: name = &blog.fqn)" class="button">@i18n!(ctx.1, "Edit")</a>
 | |
|                 }
 | |
|             </div>
 | |
| 
 | |
|             <main class="user-summary">
 | |
|                 <p>
 | |
|                     @i18n!(ctx.1, "There's one author on this blog: ", "There are {0} authors on this blog: "; authors.len())
 | |
|                     @for (i, author) in authors.iter().enumerate() {@if i >= 1 {, }
 | |
|                     <a class="author p-author" href="@uri!(user::details: name = &author.fqn)">@author.name()</a>}
 | |
|                 </p>
 | |
|                 @Html(blog.summary_html.clone())
 | |
|             </main>
 | |
|     </div>
 | |
| 
 | |
|     <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>
 | |
|         }
 | |
|         <div class="cards">
 | |
|             @for article in posts {
 | |
|                 @:post_card(ctx, article)
 | |
|             }
 | |
|         </div>
 | |
|         @paginate(ctx.1, page, n_pages)
 | |
|     </section>
 | |
| </div>
 | |
| })
 |