fix: handle absolute poster URLs from federated instances in templates
This commit is contained in:
@@ -12,6 +12,18 @@ use domain::models::{
|
|||||||
collections::Paginated,
|
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 {
|
struct PageItem {
|
||||||
number: u32,
|
number: u32,
|
||||||
is_current: bool,
|
is_current: bool,
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
<article class="entry">
|
<article class="entry">
|
||||||
{% if let Some(poster) = entry.movie().poster_path() %}
|
{% if let Some(poster) = entry.movie().poster_path() %}
|
||||||
<div class="poster">
|
<div class="poster">
|
||||||
<img src="/posters/{{ poster.value() }}" alt="">
|
<img src="{{ poster.value()|poster_src }}" alt="">
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="entry-body">
|
<div class="entry-body">
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<article class="entry">
|
<article class="entry">
|
||||||
{% if let Some(poster) = entry.movie().poster_path() %}
|
{% if let Some(poster) = entry.movie().poster_path() %}
|
||||||
<div class="poster">
|
<div class="poster">
|
||||||
<img src="/posters/{{ poster.value() }}" alt="">
|
<img src="{{ poster.value()|poster_src }}" alt="">
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="entry-body">
|
<div class="entry-body">
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
{# ── Hero ── #}
|
{# ── Hero ── #}
|
||||||
<article class="entry" style="margin-bottom:1.5rem">
|
<article class="entry" style="margin-bottom:1.5rem">
|
||||||
{% if let Some(poster) = movie.poster_path() %}
|
{% 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 %}
|
{% endif %}
|
||||||
<div class="entry-body">
|
<div class="entry-body">
|
||||||
<div class="entry-title">
|
<div class="entry-title">
|
||||||
|
|||||||
@@ -115,7 +115,7 @@
|
|||||||
{% for entry in month.entries %}
|
{% for entry in month.entries %}
|
||||||
<article class="entry">
|
<article class="entry">
|
||||||
{% if let Some(poster) = entry.movie().poster_path() %}
|
{% 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 %}
|
{% endif %}
|
||||||
<div class="entry-body">
|
<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>
|
<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">
|
<article class="entry">
|
||||||
{% if let Some(poster) = entry.movie().poster_path() %}
|
{% if let Some(poster) = entry.movie().poster_path() %}
|
||||||
<div class="poster">
|
<div class="poster">
|
||||||
<img src="/posters/{{ poster.value() }}" alt="">
|
<img src="{{ poster.value()|poster_src }}" alt="">
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="entry-body">
|
<div class="entry-body">
|
||||||
|
|||||||
Reference in New Issue
Block a user