177 lines
5.7 KiB
Elixir
177 lines
5.7 KiB
Elixir
defmodule CanneryWeb.HomeLive do
|
|
@moduledoc """
|
|
Liveview for the home page
|
|
"""
|
|
|
|
use CanneryWeb, :live_view
|
|
alias Cannery.Accounts
|
|
alias CanneryWeb.Endpoint
|
|
|
|
@version Mix.Project.config()[:version]
|
|
|
|
@impl true
|
|
def mount(_params, _session, socket) do
|
|
admins = Accounts.list_users_by_role(:admin)
|
|
socket = socket |> assign(page_title: gettext("Home"), admins: admins, version: @version)
|
|
{:ok, socket}
|
|
end
|
|
|
|
@impl true
|
|
def render(assigns) do
|
|
~H"""
|
|
<div class="mx-auto px-8 sm:px-16 flex flex-col justify-center items-center text-center space-y-4 max-w-3xl">
|
|
<img
|
|
src={Routes.static_path(Endpoint, "/images/cannery.svg")}
|
|
alt={gettext("Cannery logo")}
|
|
class="inline-block w-32 hover:-mt-2 hover:mb-2 transition-all duration-500 ease-in-out"
|
|
title={gettext("isn't he cute >:3")}
|
|
/>
|
|
|
|
<h1 class="title text-primary-600 text-2xl">
|
|
<%= gettext("Welcome to %{name}", name: "Cannery") %>
|
|
</h1>
|
|
|
|
<h2 class="title text-primary-600 text-lg">
|
|
<%= gettext("The self-hosted firearm tracker website") %>
|
|
</h2>
|
|
|
|
<hr class="hr" />
|
|
|
|
<ul class="flex flex-col space-y-4 text-center">
|
|
<li class="flex flex-col justify-center items-center
|
|
space-y-2">
|
|
<b class="whitespace-nowrap">
|
|
<%= gettext("Easy to Use:") %>
|
|
</b>
|
|
<p>
|
|
<%= gettext(
|
|
"%{name} lets you easily keep an eye on your ammo levels before and after range day",
|
|
name: "Cannery"
|
|
) %>
|
|
</p>
|
|
</li>
|
|
<li class="flex flex-col justify-center items-center
|
|
space-y-2">
|
|
<b class="whitespace-nowrap">
|
|
<%= gettext("Secure:") %>
|
|
</b>
|
|
<p>
|
|
<%= gettext("Self-host your own instance, or use an instance from someone you trust.") %>
|
|
<%= gettext("Your data stays with you, period") %>
|
|
</p>
|
|
</li>
|
|
<li class="flex flex-col justify-center items-center
|
|
space-y-2">
|
|
<b class="whitespace-nowrap">
|
|
<%= gettext("Simple:") %>
|
|
</b>
|
|
<p>
|
|
<%= gettext("Access from any internet-capable device") %>
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<hr class="hr" />
|
|
|
|
<ul class="flex flex-col space-y-2 text-center justify-center">
|
|
<h2 class="title text-primary-600 text-lg">
|
|
<%= gettext("Instance Information") %>
|
|
</h2>
|
|
|
|
<li class="flex flex-col justify-center space-x-2">
|
|
<b>
|
|
<%= gettext("Admins:") %>
|
|
</b>
|
|
<p>
|
|
<%= if @admins |> Enum.empty?() do %>
|
|
<.link
|
|
href={Routes.user_registration_path(CanneryWeb.Endpoint, :new)}
|
|
class="hover:underline"
|
|
>
|
|
<%= dgettext("prompts", "Register to setup %{name}", name: "Cannery") %>
|
|
</.link>
|
|
<% else %>
|
|
<div class="flex flex-wrap justify-center space-x-2">
|
|
<%= for admin <- @admins do %>
|
|
<a class="hover:underline" href={"mailto:#{admin.email}"}>
|
|
<%= admin.email %>
|
|
</a>
|
|
<% end %>
|
|
</div>
|
|
<% end %>
|
|
</p>
|
|
</li>
|
|
|
|
<li class="flex flex-row justify-center space-x-2">
|
|
<b>Registration:</b>
|
|
<p>
|
|
<%= Application.get_env(:cannery, CanneryWeb.Endpoint)[:registration]
|
|
|> case do
|
|
"public" -> gettext("Public Signups")
|
|
_ -> gettext("Invite Only")
|
|
end %>
|
|
</p>
|
|
</li>
|
|
|
|
<li class="flex flex-row justify-center items-center space-x-2">
|
|
<b>Version:</b>
|
|
<.link
|
|
href="https://gitea.bubbletea.dev/shibao/cannery/src/branch/stable/CHANGELOG.md"
|
|
class="flex flex-row justify-center items-center space-x-2 hover:underline"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<p>
|
|
<%= @version %>
|
|
</p>
|
|
<i class="fas fa-md fa-info-circle"></i>
|
|
</.link>
|
|
</li>
|
|
</ul>
|
|
|
|
<hr class="hr" />
|
|
|
|
<ul class="flex flex-col space-y-2 text-center justify-center">
|
|
<h2 class="title text-primary-600 text-lg">
|
|
<%= gettext("Get involved!") %>
|
|
</h2>
|
|
|
|
<li class="flex flex-col justify-center space-x-2">
|
|
<.link
|
|
class="flex flex-row justify-center items-center space-x-2 hover:underline"
|
|
href="https://gitea.bubbletea.dev/shibao/cannery"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<p><%= gettext("View the source code") %></p>
|
|
<i class="fas fa-md fa-code"></i>
|
|
</.link>
|
|
</li>
|
|
<li class="flex flex-col justify-center space-x-2">
|
|
<.link
|
|
class="flex flex-row justify-center items-center space-x-2 hover:underline"
|
|
href="https://weblate.bubbletea.dev/engage/cannery"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<p><%= gettext("Help translate") %></p>
|
|
<i class="fas fa-md fa-language"></i>
|
|
</.link>
|
|
</li>
|
|
<li class="flex flex-col justify-center space-x-2">
|
|
<.link
|
|
class="flex flex-row justify-center items-center space-x-2 hover:underline"
|
|
href="https://gitea.bubbletea.dev/shibao/cannery/issues/new"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<p><%= gettext("Report bugs or request features") %></p>
|
|
<i class="fas fa-md fa-spider"></i>
|
|
</.link>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
"""
|
|
end
|
|
end
|