2019-03-21 10:51:41 +00:00
|
|
|
@use plume_models::CONFIG;
|
2019-05-18 12:09:51 +00:00
|
|
|
@use plume_models::instance::Instance;
|
2019-08-20 22:42:04 +00:00
|
|
|
@use std::path::Path;
|
2020-01-21 06:02:03 +00:00
|
|
|
@use crate::template_utils::*;
|
|
|
|
@use crate::routes::*;
|
|
|
|
|
2019-02-02 14:23:50 +00:00
|
|
|
@(ctx: BaseContext, title: String, head: Content, header: Content, content: Content)
|
2018-09-09 20:41:55 +00:00
|
|
|
|
2018-05-09 17:53:12 +00:00
|
|
|
<!DOCTYPE html>
|
2019-08-20 22:42:04 +00:00
|
|
|
<html class="@ctx.2.clone().and_then(|u| u.preferred_theme).unwrap_or_else(|| CONFIG.default_theme.clone())">
|
2018-05-09 17:53:12 +00:00
|
|
|
<head>
|
2018-05-19 14:26:56 +00:00
|
|
|
<meta charset="utf-8" />
|
2019-02-02 14:23:50 +00:00
|
|
|
<title>@title ⋅ @i18n!(ctx.1, "Plume")</title>
|
2018-09-03 13:59:02 +00:00
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
2021-01-15 14:58:48 +00:00
|
|
|
<link rel="stylesheet" href="@uri!(plume_static_files: file = Path::new("css").join(ctx.2.clone().and_then(|u| u.preferred_theme).unwrap_or_else(|| CONFIG.default_theme.clone())).join("theme.css"), build_id = CACHE_NAME)" />
|
2018-12-07 11:05:01 +00:00
|
|
|
<link rel="manifest" href="@uri!(instance::web_manifest)" />
|
2021-01-15 14:58:48 +00:00
|
|
|
<link rel="icon" type="image/png" href="@uri!(plume_static_files: file = CONFIG.logo.favicon.as_str(), build_id = CACHE_NAME)">
|
2019-04-09 13:33:34 +00:00
|
|
|
<meta content='#282c37' name='theme-color'/>
|
2018-12-06 17:54:16 +00:00
|
|
|
@:head()
|
2018-05-09 17:53:12 +00:00
|
|
|
</head>
|
|
|
|
<body>
|
2018-05-10 20:31:52 +00:00
|
|
|
<header>
|
2018-09-01 14:11:42 +00:00
|
|
|
<nav id="menu">
|
2018-12-06 17:54:16 +00:00
|
|
|
<a href="#" aria-label="@i18n!(ctx.1, "Menu")" title="@i18n!(ctx.1, "Menu")"><i class="icon icon-menu"></i></a>
|
2018-05-10 20:31:52 +00:00
|
|
|
</nav>
|
2018-09-01 14:11:42 +00:00
|
|
|
<div id="content">
|
|
|
|
<nav>
|
2018-12-07 11:05:01 +00:00
|
|
|
<a href="@uri!(instance::index)" class="title">
|
2021-01-15 14:58:48 +00:00
|
|
|
<img src="@uri!(plume_static_files: file = CONFIG.logo.main.as_str(), build_id = CACHE_NAME)">
|
2018-12-06 17:54:16 +00:00
|
|
|
<p>@i18n!(ctx.1, "Plume")</p>
|
2018-10-09 14:37:40 +00:00
|
|
|
</a>
|
2018-09-01 14:11:42 +00:00
|
|
|
<hr/>
|
2018-12-06 17:54:16 +00:00
|
|
|
@:header()
|
2018-09-01 14:11:42 +00:00
|
|
|
</nav>
|
|
|
|
<nav>
|
2018-12-06 17:54:16 +00:00
|
|
|
@if ctx.2.is_some() {
|
2019-01-28 12:12:56 +00:00
|
|
|
<a href="@uri!(search::search: _)">
|
|
|
|
<i class="icon icon-search"></i>
|
|
|
|
<span class="mobile-label">@i18n!(ctx.1, "Search")</span>
|
|
|
|
</a>
|
2018-12-07 11:05:01 +00:00
|
|
|
<a href="@uri!(user::dashboard)">
|
2018-12-06 17:54:16 +00:00
|
|
|
<i class="icon icon-home" aria-label="@i18n!(ctx.1, "Dashboard")"></i>
|
|
|
|
<span class="mobile-label">@i18n!(ctx.1, "Dashboard")</span>
|
2018-09-03 13:59:02 +00:00
|
|
|
</a>
|
2018-12-13 21:20:19 +00:00
|
|
|
<a href="@uri!(notifications::notifications: page = _)">
|
2018-12-06 17:54:16 +00:00
|
|
|
<i class="icon icon-bell" aria-label="@i18n!(ctx.1, "Notifications")"></i>
|
|
|
|
<span class="mobile-label">@i18n!(ctx.1, "Notifications")</span>
|
2018-09-03 13:59:02 +00:00
|
|
|
</a>
|
2018-12-07 11:05:01 +00:00
|
|
|
<a href="@uri!(session::delete)">
|
2018-12-06 17:54:16 +00:00
|
|
|
<i class="icon icon-log-out" aria-label="@i18n!(ctx.1, "Log Out")"></i>
|
|
|
|
<span class="mobile-label">@i18n!(ctx.1, "Log Out")</span>
|
2018-09-03 13:59:02 +00:00
|
|
|
</a>
|
2018-12-07 11:05:01 +00:00
|
|
|
<a href="@uri!(user::me)" title="@i18n!(ctx.1, "My account")">
|
2018-12-06 17:54:16 +00:00
|
|
|
@avatar(ctx.0, &ctx.2.clone().unwrap(), Size::Small, false, &ctx.1)
|
|
|
|
<span class="mobile-label">@i18n!(ctx.1, "My account")</span>
|
2018-09-03 13:59:02 +00:00
|
|
|
</a>
|
2018-12-06 17:54:16 +00:00
|
|
|
} else {
|
2019-01-28 12:12:56 +00:00
|
|
|
<a href="@uri!(search::search: _)">
|
|
|
|
<i class="icon icon-search"></i>
|
|
|
|
<span class="mobile-label">@i18n!(ctx.1, "Search")</span>
|
|
|
|
</a>
|
2018-12-13 21:20:19 +00:00
|
|
|
<a href="@uri!(session::new: m = _)">
|
2018-09-04 16:09:31 +00:00
|
|
|
<i class="icon icon-log-in"></i>
|
2018-12-06 17:54:16 +00:00
|
|
|
<span class="mobile-label">@i18n!(ctx.1, "Log In")</span>
|
2018-09-04 16:09:31 +00:00
|
|
|
</a>
|
2018-12-07 11:05:01 +00:00
|
|
|
<a href="@uri!(user::new)">
|
2018-09-04 16:09:31 +00:00
|
|
|
<i class="icon icon-user-plus"></i>
|
2018-12-06 17:54:16 +00:00
|
|
|
<span class="mobile-label">@i18n!(ctx.1, "Register")</span>
|
2018-09-04 16:09:31 +00:00
|
|
|
</a>
|
2018-12-06 17:54:16 +00:00
|
|
|
}
|
2018-09-01 14:11:42 +00:00
|
|
|
</nav>
|
|
|
|
</div>
|
2018-05-10 20:31:52 +00:00
|
|
|
</header>
|
2019-04-30 10:04:25 +00:00
|
|
|
<div class="messages">
|
|
|
|
@if let Some(ref message) = ctx.3 {
|
|
|
|
<p class="flash-message @message.0">@message.1</p>
|
|
|
|
}
|
|
|
|
</div>
|
2018-05-10 20:31:52 +00:00
|
|
|
<main>
|
2018-12-06 17:54:16 +00:00
|
|
|
@:content()
|
2018-05-10 20:31:52 +00:00
|
|
|
</main>
|
2018-07-27 12:08:39 +00:00
|
|
|
<footer>
|
2019-05-18 12:09:51 +00:00
|
|
|
<hr/>
|
|
|
|
<div>
|
|
|
|
<h3>@Instance::get_local().map(|i| i.name).unwrap_or_default()</h3>
|
|
|
|
<a href="@uri!(instance::about)">@i18n!(ctx.1, "About this instance")</a>
|
|
|
|
<a href="@uri!(instance::privacy)">@i18n!(ctx.1, "Privacy policy")</a>
|
2019-09-13 10:28:36 +00:00
|
|
|
@if ctx.2.clone().map(|u| u.is_admin()).unwrap_or(false) {
|
2019-05-18 12:09:51 +00:00
|
|
|
<a href="@uri!(instance::admin)">@i18n!(ctx.1, "Administration")</a>
|
|
|
|
}
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<h3>@concat!("Plume ", env!("CARGO_PKG_VERSION"))</h3>
|
|
|
|
<a href="https://docs.joinplu.me">@i18n!(ctx.1, "Documentation")</a>
|
|
|
|
<a href="https://github.com/Plume-org/Plume">@i18n!(ctx.1, "Source code")</a>
|
2020-12-26 12:48:39 +00:00
|
|
|
<a href="https://matrix.to/#/#plume-blog:matrix.org">@i18n!(ctx.1, "Matrix room")</a>
|
2019-05-18 12:09:51 +00:00
|
|
|
</div>
|
2018-07-27 12:08:39 +00:00
|
|
|
</footer>
|
2021-02-10 14:50:41 +00:00
|
|
|
<script type="module">
|
|
|
|
import init from '@uri!(plume_static_files: file = "plume_front.js", build_id = CACHE_NAME)';
|
|
|
|
(async () => await init())();
|
|
|
|
</script>
|
2018-05-09 17:53:12 +00:00
|
|
|
</body>
|
|
|
|
</html>
|