mirror of
https://git.joinplu.me/Plume/Plume.git
synced 2024-11-14 07:51:01 +00:00
70af57c6e1
All the template are now compiled at compile-time with the `ructe` crate. I preferred to use it instead of askama because it allows more complex Rust expressions, where askama only supports a small subset of expressions and doesn't allow them everywhere (for instance, `{{ macro!() | filter }}` would result in a parsing error). The diff is quite huge, but there is normally no changes in functionality. Fixes #161 and unblocks #110 and #273
33 lines
1.3 KiB
HTML
33 lines
1.3 KiB
HTML
@use templates::base;
|
|
@use template_utils::*;
|
|
@use plume_models::notifications::Notification;
|
|
|
|
@(ctx: BaseContext, notifications: Vec<Notification>, page: i32, n_pages: i32)
|
|
|
|
@:base(ctx, "Notifications", {}, {}, {
|
|
<h1>@i18n!(ctx.1, "Notifications")</h1>
|
|
|
|
<div class="list">
|
|
@for notification in notifications {
|
|
<div class="card flex">
|
|
<i class="icon @notification.icon_class() left-icon"></i>
|
|
<main class="grow">
|
|
<h3>
|
|
@if let Some(url) = notification.get_url(ctx.0) {
|
|
<a href="@url">
|
|
@i18n!(ctx.1, notification.get_message(); notification.get_actor(ctx.0).name(ctx.0))
|
|
</a>
|
|
} else {
|
|
@i18n!(ctx.1, notification.get_message(); notification.get_actor(ctx.0).name(ctx.0))
|
|
}
|
|
</h3>
|
|
@if let Some(post) = notification.get_post(ctx.0) {
|
|
<p><a href="@post.url(ctx.0)">@post.title</a></p>
|
|
}
|
|
</main>
|
|
<p><small>@notification.creation_date.format("%B %e, %H:%M")</small></p>
|
|
</div>
|
|
}
|
|
</div>
|
|
@paginate(ctx.1, page, n_pages)
|
|
})
|