comfycamp/lib/comfycamp_web/controllers/home_html.ex

140 lines
4.7 KiB
Elixir
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

defmodule ComfycampWeb.HomeHTML do
@moduledoc """
This module contains pages rendered by HomeController.
"""
use ComfycampWeb, :html
import ComfycampWeb.Icons
def index(assigns) do
~H"""
<div class="home">
<h1>Уютный домик</h1>
<%= if assigns[:current_user] != nil and @current_user.is_approved == false do %>
<p class="warning">
Ваш аккаунт ещё не был одобрен, вы не сможете использовать другие сервисы.
Подождите немного.
</p>
<% end %>
<p>
У меня есть несколько проектов, запущенных на домашнем сервере.
Я буду рад, если они будут полезны другим людям.
</p>
<p>
Создайте аккаунт на этом сайте, чтобы получить доступ к остальным сервисам.
</p>
<p>
Не стоит ожидать большой надёжности, однако я прикладываю все усилия,
чтобы сервисы были доступны 24/7.
</p>
<p><i>- Иван, администратор comfycamp.space</i></p>
<h2>Доступные сервисы</h2>
<.service
name="Mastodon"
domain="m.comfycamp.space"
description="Микроблоги с поддержкой fediverse."
learn_more_url="/services/mastodon"
/>
<.service
name="Nextcloud"
domain="nc.comfycamp.space"
description="Облако, календарь, задачи."
learn_more_url="/services/nextcloud"
/>
<.service
name="Forgejo"
domain="git.comfycamp.space"
description="Хостинг для git-проектов."
/>
<.service
name="XMPP"
domain="xmpp.comfycamp.space"
description="Проверенный временем протокол для обмена сообщениями."
enable_link={false}
/>
<.service
name="Matrix"
domain="matrix.comfycamp.space"
description="Современный протокол для общения."
enable_link={false}
/>
<.service
name="Fresh RSS"
domain="freshrss.comfycamp.space"
description="Сервис для чтения RSS лент."
/>
</div>
"""
end
@doc """
A component representing one service, like mastodon or nextcloud.
"""
attr :name, :string, required: true
attr :domain, :string, required: true
attr :description, :string, required: true
attr :enable_link, :boolean, required: false, default: true
attr :learn_more_url, :string, required: false
def service(assigns) do
~H"""
<div class="service">
<h3><%= @name %></h3>
<%= if @enable_link do %>
<a class="link" href={"https://" <> @domain} target="_blank">
<%= @domain %> <.arrow_top_right_on_square_icon />
</a>
<% else %>
<span class="link"><%= @domain %></span>
<% end %>
<p>
<%= @description %>
<%= if assigns[:learn_more_url] do %>
<.link href={@learn_more_url}>Узнать больше</.link>
<% end %>
</p>
</div>
"""
end
def mastodon(assigns) do
~H"""
<div class="home">
<h1>Mastodon</h1>
<a href="https://m.comfycamp.space" target="_blank">m.comfycamp.space</a>
<p>Удобный сервис для ведения микроблогов. Простыми словами, это альтернатива Twitter.</p>
<p>
Mastodon умеет подключаться к другим сервисам внутри сети Fediverse.
Так, например, вы можете общаться с пользователями Pleroma, Misskey, Friendica, Pixelfed,
даже если они находятся на других серверах.
</p>
</div>
"""
end
def nextcloud(assigns) do
~H"""
<div class="home">
<h1>Nextcloud</h1>
<a href="https://nc.comfycamp.space" target="_blank">nc.comfycamp.space</a>
<p>
Облако, способное заменить десяток сервисов.
При помощи Nextcloud вы можете хранить файлы, вести календарь и список задач,
синхронизировать контакты, читать почту и новости...
А если этого будет мало, вам доступны десятки приложений на любой вкус и цвет.
</p>
</div>
"""
end
end