fix: handle absolute poster URLs from federated instances in templates

This commit is contained in:
2026-05-13 23:32:08 +02:00
parent c420826474
commit 25cd6c9294
5 changed files with 17 additions and 5 deletions

View File

@@ -12,6 +12,18 @@ use domain::models::{
collections::Paginated,
};
mod filters {
#[askama::filter_fn]
pub fn poster_src<T: std::fmt::Display>(path: T, _env: &dyn askama::Values) -> askama::Result<String> {
let p = path.to_string();
if p.starts_with("http://") || p.starts_with("https://") {
Ok(p)
} else {
Ok(format!("/images/{}", p))
}
}
}
struct PageItem {
number: u32,
is_current: bool,

View File

@@ -26,7 +26,7 @@
<article class="entry">
{% if let Some(poster) = entry.movie().poster_path() %}
<div class="poster">
<img src="/posters/{{ poster.value() }}" alt="">
<img src="{{ poster.value()|poster_src }}" alt="">
</div>
{% endif %}
<div class="entry-body">

View File

@@ -5,7 +5,7 @@
<article class="entry">
{% if let Some(poster) = entry.movie().poster_path() %}
<div class="poster">
<img src="/posters/{{ poster.value() }}" alt="">
<img src="{{ poster.value()|poster_src }}" alt="">
</div>
{% endif %}
<div class="entry-body">

View File

@@ -5,7 +5,7 @@
{# ── Hero ── #}
<article class="entry" style="margin-bottom:1.5rem">
{% if let Some(poster) = movie.poster_path() %}
<div class="poster"><img src="/posters/{{ poster.value() }}" alt=""></div>
<div class="poster"><img src="{{ poster.value()|poster_src }}" alt=""></div>
{% endif %}
<div class="entry-body">
<div class="entry-title">

View File

@@ -115,7 +115,7 @@
{% for entry in month.entries %}
<article class="entry">
{% if let Some(poster) = entry.movie().poster_path() %}
<div class="poster"><img src="/posters/{{ poster.value() }}" alt=""></div>
<div class="poster"><img src="{{ poster.value()|poster_src }}" alt=""></div>
{% endif %}
<div class="entry-body">
<div class="entry-title"><a href="/movies/{{ entry.movie().id().value() }}" class="movie-title-link">{{ entry.movie().title().value() }}</a> <span class="year">({{ entry.movie().release_year().value() }})</span></div>
@@ -183,7 +183,7 @@
<article class="entry">
{% if let Some(poster) = entry.movie().poster_path() %}
<div class="poster">
<img src="/posters/{{ poster.value() }}" alt="">
<img src="{{ poster.value()|poster_src }}" alt="">
</div>
{% endif %}
<div class="entry-body">