forked from shibao/cannery
rename to cannery
This commit is contained in:
23
lib/cannery_web/templates/email/confirm_email.html.heex
Normal file
23
lib/cannery_web/templates/email/confirm_email.html.heex
Normal file
@ -0,0 +1,23 @@
|
||||
<div style="display: flex; flex-direction: column; justify-content: center; align-items: center;">
|
||||
<span style="margin-bottom: 0.75em; font-size: 1.5em;">
|
||||
<%= dgettext("emails", "Hi %{email},", email: @user.email) %>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
|
||||
<span style="margin-bottom: 1em; font-size: 1.25em;">
|
||||
<%= dgettext("emails", "Welcome to Cannery") %>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
|
||||
<%= dgettext("emails", "You can confirm your account by visiting the URL below:") %>
|
||||
|
||||
<br />
|
||||
|
||||
<a style="margin: 1em; color: rgb(31, 31, 31);" href={@url}><%= @url %></a>
|
||||
|
||||
<br />
|
||||
|
||||
<%= dgettext("emails", "If you didn't create an account at Cannery, please ignore this.") %>
|
||||
</div>
|
12
lib/cannery_web/templates/email/confirm_email.txt.eex
Normal file
12
lib/cannery_web/templates/email/confirm_email.txt.eex
Normal file
@ -0,0 +1,12 @@
|
||||
|
||||
<%= dgettext("emails", "Hi %{email},", email: @user.email) %>
|
||||
|
||||
<%= dgettext("emails", "Welcome to Cannery") %>
|
||||
|
||||
<%= dgettext("emails", "You can confirm your account by visiting the URL below:") %>
|
||||
|
||||
<%= @url %>
|
||||
|
||||
<%= dgettext("emails",
|
||||
"If you didn't create an account at %{url}, please ignore this.",
|
||||
url: Routes.live_url(Endpoint, HomeLive)) %>
|
17
lib/cannery_web/templates/email/reset_password.html.heex
Normal file
17
lib/cannery_web/templates/email/reset_password.html.heex
Normal file
@ -0,0 +1,17 @@
|
||||
<div style="display: flex; flex-direction: column; justify-content: center; align-items: center;">
|
||||
<span style="margin-bottom: 0.5em; font-size: 1.5em;">
|
||||
<%= dgettext("emails", "Hi %{email},", email: @user.email) %>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
|
||||
<%= dgettext("emails", "You can reset your password by visiting the URL below:") %>
|
||||
|
||||
<br />
|
||||
|
||||
<a style="margin: 1em; color: rgb(31, 31, 31);" href={@url}><%= @url %></a>
|
||||
|
||||
<br />
|
||||
|
||||
<%= dgettext("emails", "If you didn't request this change from Cannery, please ignore this.") %>
|
||||
</div>
|
10
lib/cannery_web/templates/email/reset_password.txt.eex
Normal file
10
lib/cannery_web/templates/email/reset_password.txt.eex
Normal file
@ -0,0 +1,10 @@
|
||||
|
||||
<%= dgettext("emails", "Hi %{email},", email: @user.email) %>
|
||||
|
||||
<%= dgettext("emails", "You can reset your password by visiting the URL below:") %>
|
||||
|
||||
<%= @url %>
|
||||
|
||||
<%= dgettext("emails",
|
||||
"If you didn't request this change from %{url}, please ignore this.",
|
||||
url: Routes.live_url(Endpoint, HomeLive)) %>
|
20
lib/cannery_web/templates/email/update_email.html.heex
Normal file
20
lib/cannery_web/templates/email/update_email.html.heex
Normal file
@ -0,0 +1,20 @@
|
||||
<div style="display: flex; flex-direction: column; justify-content: center; align-items: center;">
|
||||
<span style="margin-bottom: 0.5em; font-size: 1.5em;">
|
||||
<%= dgettext("emails", "Hi %{email},", email: @user.email) %>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
|
||||
<%= dgettext("emails", "You can change your email by visiting the URL below:") %>
|
||||
|
||||
<br />
|
||||
|
||||
<a style="margin: 1em; color: rgb(31, 31, 31);" href={@url}><%= @url %></a>
|
||||
|
||||
<br />
|
||||
|
||||
<%= dgettext(
|
||||
"emails",
|
||||
"If you didn't request this change from Cannery, please ignore this."
|
||||
) %>
|
||||
</div>
|
10
lib/cannery_web/templates/email/update_email.txt.eex
Normal file
10
lib/cannery_web/templates/email/update_email.txt.eex
Normal file
@ -0,0 +1,10 @@
|
||||
|
||||
<%= dgettext("emails", "Hi %{email},", email: @user.email) %>
|
||||
|
||||
<%= dgettext("emails", "You can change your email by visiting the URL below:") %>
|
||||
|
||||
<%= @url %>
|
||||
|
||||
<%= dgettext("emails",
|
||||
"If you didn't request this change from %{url}, please ignore this.",
|
||||
url: Routes.live_url(Endpoint, HomeLive)) %>
|
34
lib/cannery_web/templates/error/error.html.heex
Normal file
34
lib/cannery_web/templates/error/error.html.heex
Normal file
@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" class="m-0 p-0 w-full h-full">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>
|
||||
<%= dgettext("errors", "Error") %> | <%= gettext("Cannery") %>
|
||||
</title>
|
||||
<link rel="stylesheet" href="/css/app.css" />
|
||||
<script defer type="text/javascript" src="/js/app.js">
|
||||
</script>
|
||||
</head>
|
||||
<body class="pb-8 m-0 p-0 w-full h-full">
|
||||
<header>
|
||||
<CanneryWeb.Components.Topbar.topbar current_user={assigns[:current_user]}>
|
||||
</CanneryWeb.Components.Topbar.topbar>
|
||||
</header>
|
||||
|
||||
<div class="pb-8 w-full flex flex-col justify-center items-center text-center">
|
||||
<div class="p-8 sm:p-16 w-full flex flex-col justify-center items-center space-y-4 max-w-3xl">
|
||||
<h1 class="title text-primary-600 text-3xl">
|
||||
<%= @error_string %>
|
||||
</h1>
|
||||
|
||||
<hr class="w-full hr" />
|
||||
|
||||
<a href={Routes.live_path(Endpoint, HomeLive)} class="link title text-primary-600 text-lg">
|
||||
<%= dgettext("errors", "Go back home") %>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
19
lib/cannery_web/templates/layout/app.html.heex
Normal file
19
lib/cannery_web/templates/layout/app.html.heex
Normal file
@ -0,0 +1,19 @@
|
||||
<main role="main" class="min-h-full min-w-full">
|
||||
<header>
|
||||
<CanneryWeb.Components.Topbar.topbar current_user={assigns[:current_user]}>
|
||||
</CanneryWeb.Components.Topbar.topbar>
|
||||
|
||||
<div class="mx-8 my-2 flex flex-col space-y-4 text-center">
|
||||
<p :if={get_flash(@conn, :info)} class="alert alert-info" role="alert">
|
||||
<%= get_flash(@conn, :info) %>
|
||||
</p>
|
||||
<p :if={get_flash(@conn, :error)} class="alert alert-danger" role="alert">
|
||||
<%= get_flash(@conn, :error) %>
|
||||
</p>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="mx-4 sm:mx-8 md:mx-16">
|
||||
<%= @inner_content %>
|
||||
</div>
|
||||
</main>
|
19
lib/cannery_web/templates/layout/email.html.heex
Normal file
19
lib/cannery_web/templates/layout/email.html.heex
Normal file
@ -0,0 +1,19 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
<%= @email.subject %>
|
||||
</title>
|
||||
</head>
|
||||
<body style="padding: 2em; color: rgb(31, 31, 31); background-color: rgb(220, 220, 228); font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; text-align: center;">
|
||||
<%= @inner_content %>
|
||||
|
||||
<hr style="margin: 2em auto; border-width: 1px; border-color: rgb(212, 212, 216); width: 100%; max-width: 42rem;" />
|
||||
|
||||
<a style="color: rgb(31, 31, 31);" href={Routes.live_url(Endpoint, HomeLive)}>
|
||||
<%= dgettext(
|
||||
"emails",
|
||||
"This email was sent from Cannery, the self-hosted firearm tracker website."
|
||||
) %>
|
||||
</a>
|
||||
</body>
|
||||
</html>
|
11
lib/cannery_web/templates/layout/email.txt.eex
Normal file
11
lib/cannery_web/templates/layout/email.txt.eex
Normal file
@ -0,0 +1,11 @@
|
||||
<%= @email.subject %>
|
||||
|
||||
====================
|
||||
|
||||
<%= @inner_content %>
|
||||
|
||||
=====================
|
||||
|
||||
<%= dgettext("emails",
|
||||
"This email was sent from Cannery at %{url}, the self-hosted firearm tracker website.",
|
||||
url: Routes.live_url(Endpoint, HomeLive)) %>
|
1
lib/cannery_web/templates/layout/empty.html.heex
Normal file
1
lib/cannery_web/templates/layout/empty.html.heex
Normal file
@ -0,0 +1 @@
|
||||
<%= @inner_content %>
|
46
lib/cannery_web/templates/layout/live.html.heex
Normal file
46
lib/cannery_web/templates/layout/live.html.heex
Normal file
@ -0,0 +1,46 @@
|
||||
<main class="pb-8 min-w-full">
|
||||
<header>
|
||||
<CanneryWeb.Components.Topbar.topbar current_user={assigns[:current_user]}>
|
||||
</CanneryWeb.Components.Topbar.topbar>
|
||||
|
||||
<div class="mx-8 my-2 flex flex-col space-y-4 text-center">
|
||||
<p
|
||||
:if={@flash && @flash |> Map.has_key?("info")}
|
||||
class="alert alert-info"
|
||||
role="alert"
|
||||
phx-click="lv:clear-flash"
|
||||
phx-value-key="info"
|
||||
>
|
||||
<%= live_flash(@flash, "info") %>
|
||||
</p>
|
||||
|
||||
<p
|
||||
:if={@flash && @flash |> Map.has_key?("error")}
|
||||
class="alert alert-danger"
|
||||
role="alert"
|
||||
phx-click="lv:clear-flash"
|
||||
phx-value-key="error"
|
||||
>
|
||||
<%= live_flash(@flash, "error") %>
|
||||
</p>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="mx-4 sm:mx-8 md:mx-16">
|
||||
<%= @inner_content %>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<div
|
||||
id="disconnect"
|
||||
class="z-50 fixed opacity-0 bottom-12 right-12 px-8 py-4 w-max h-max
|
||||
border border-primary-200 shadow-lg rounded-lg bg-white
|
||||
flex justify-center items-center space-x-4
|
||||
transition-opacity ease-in-out duration-500 delay-[2000ms]"
|
||||
>
|
||||
<i class="fas fa-fade text-md fa-satellite-dish"></i>
|
||||
|
||||
<h1 class="title text-md title-primary-500">
|
||||
<%= gettext("Reconnecting...") %>
|
||||
</h1>
|
||||
</div>
|
24
lib/cannery_web/templates/layout/root.html.heex
Normal file
24
lib/cannery_web/templates/layout/root.html.heex
Normal file
@ -0,0 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" class="m-0 p-0 w-full h-full">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<%= csrf_meta_tag() %>
|
||||
<.live_title suffix={" | #{gettext("Cannery")}"}>
|
||||
<%= assigns[:page_title] || gettext("Cannery") %>
|
||||
</.live_title>
|
||||
<link phx-track-static rel="stylesheet" href={Routes.static_path(@conn, "/css/app.css")} />
|
||||
<script
|
||||
defer
|
||||
phx-track-static
|
||||
type="text/javascript"
|
||||
src={Routes.static_path(@conn, "/js/app.js")}
|
||||
>
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body class="m-0 p-0 w-full h-full subpixel-antialiased">
|
||||
<%= @inner_content %>
|
||||
</body>
|
||||
</html>
|
34
lib/cannery_web/templates/user_confirmation/new.html.heex
Normal file
34
lib/cannery_web/templates/user_confirmation/new.html.heex
Normal file
@ -0,0 +1,34 @@
|
||||
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4">
|
||||
<h1 class="title text-primary-600 text-xl">
|
||||
<%= dgettext("actions", "Resend confirmation instructions") %>
|
||||
</h1>
|
||||
|
||||
<.form
|
||||
:let={f}
|
||||
for={:user}
|
||||
action={Routes.user_confirmation_path(@conn, :create)}
|
||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
||||
>
|
||||
<%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-600") %>
|
||||
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %>
|
||||
|
||||
<%= submit(dgettext("actions", "Resend confirmation instructions"),
|
||||
class: "mx-auto btn btn-primary col-span-3"
|
||||
) %>
|
||||
</.form>
|
||||
|
||||
<hr class="hr" />
|
||||
|
||||
<div class="flex flex-row justify-center items-center space-x-4">
|
||||
<.link
|
||||
:if={Accounts.allow_registration?()}
|
||||
href={Routes.user_registration_path(@conn, :new)}
|
||||
class="btn btn-primary"
|
||||
>
|
||||
<%= dgettext("actions", "Register") %>
|
||||
</.link>
|
||||
<.link href={Routes.user_session_path(@conn, :new)} class="btn btn-primary">
|
||||
<%= dgettext("actions", "Log in") %>
|
||||
</.link>
|
||||
</div>
|
||||
</div>
|
50
lib/cannery_web/templates/user_registration/new.html.heex
Normal file
50
lib/cannery_web/templates/user_registration/new.html.heex
Normal file
@ -0,0 +1,50 @@
|
||||
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4">
|
||||
<h1 class="title text-primary-600 text-xl">
|
||||
<%= dgettext("actions", "Register") %>
|
||||
</h1>
|
||||
|
||||
<.form
|
||||
:let={f}
|
||||
for={@changeset}
|
||||
action={Routes.user_registration_path(@conn, :create)}
|
||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
||||
>
|
||||
<p :if={@changeset.action && not @changeset.valid?()} class="alert alert-danger col-span-3">
|
||||
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
|
||||
</p>
|
||||
|
||||
<%= if @invite_token do %>
|
||||
<%= hidden_input(f, :invite_token, value: @invite_token) %>
|
||||
<% end %>
|
||||
|
||||
<%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-600") %>
|
||||
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %>
|
||||
<%= error_tag(f, :email, "col-span-3") %>
|
||||
|
||||
<%= label(f, :password, gettext("Password"), class: "title text-lg text-primary-600") %>
|
||||
<%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %>
|
||||
<%= error_tag(f, :password, "col-span-3") %>
|
||||
|
||||
<%= label(f, :locale, gettext("Language"), class: "title text-lg text-primary-600") %>
|
||||
<%= select(
|
||||
f,
|
||||
:locale,
|
||||
[{gettext("English"), "en_US"}],
|
||||
class: "input input-primary col-span-2"
|
||||
) %>
|
||||
<%= error_tag(f, :locale) %>
|
||||
|
||||
<%= submit(dgettext("actions", "Register"), class: "mx-auto btn btn-primary col-span-3") %>
|
||||
</.form>
|
||||
|
||||
<hr class="hr" />
|
||||
|
||||
<div class="flex flex-row justify-center items-center space-x-4">
|
||||
<.link href={Routes.user_session_path(@conn, :new)} class="btn btn-primary">
|
||||
<%= dgettext("actions", "Log in") %>
|
||||
</.link>
|
||||
<.link href={Routes.user_reset_password_path(@conn, :new)} class="btn btn-primary">
|
||||
<%= dgettext("actions", "Forgot your password?") %>
|
||||
</.link>
|
||||
</div>
|
||||
</div>
|
48
lib/cannery_web/templates/user_reset_password/edit.html.heex
Normal file
48
lib/cannery_web/templates/user_reset_password/edit.html.heex
Normal file
@ -0,0 +1,48 @@
|
||||
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4">
|
||||
<h1 class="title text-primary-600 text-xl">
|
||||
<%= dgettext("actions", "Reset password") %>
|
||||
</h1>
|
||||
|
||||
<.form
|
||||
:let={f}
|
||||
for={@changeset}
|
||||
action={Routes.user_reset_password_path(@conn, :update, @token)}
|
||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
||||
>
|
||||
<p :if={@changeset.action && not @changeset.valid?()} class="alert alert-danger col-span-3">
|
||||
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
|
||||
</p>
|
||||
|
||||
<%= label(f, :password, gettext("New password"), class: "title text-lg text-primary-600") %>
|
||||
<%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %>
|
||||
<%= error_tag(f, :password, "col-span-3") %>
|
||||
|
||||
<%= label(f, :password_confirmation, gettext("Confirm new password"),
|
||||
class: "title text-lg text-primary-600"
|
||||
) %>
|
||||
<%= password_input(f, :password_confirmation,
|
||||
required: true,
|
||||
class: "input input-primary col-span-2"
|
||||
) %>
|
||||
<%= error_tag(f, :password_confirmation, "col-span-3") %>
|
||||
|
||||
<%= submit(dgettext("actions", "Reset password"),
|
||||
class: "mx-auto btn btn-primary col-span-3"
|
||||
) %>
|
||||
</.form>
|
||||
|
||||
<hr class="hr" />
|
||||
|
||||
<div class="flex flex-row justify-center items-center space-x-4">
|
||||
<.link
|
||||
:if={Accounts.allow_registration?()}
|
||||
href={Routes.user_registration_path(@conn, :new)}
|
||||
class="btn btn-primary"
|
||||
>
|
||||
<%= dgettext("actions", "Register") %>
|
||||
</.link>
|
||||
<.link href={Routes.user_session_path(@conn, :new)} class="btn btn-primary">
|
||||
<%= dgettext("actions", "Log in") %>
|
||||
</.link>
|
||||
</div>
|
||||
</div>
|
34
lib/cannery_web/templates/user_reset_password/new.html.heex
Normal file
34
lib/cannery_web/templates/user_reset_password/new.html.heex
Normal file
@ -0,0 +1,34 @@
|
||||
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4">
|
||||
<h1 class="title text-primary-600 text-xl">
|
||||
<%= dgettext("actions", "Forgot your password?") %>
|
||||
</h1>
|
||||
|
||||
<.form
|
||||
:let={f}
|
||||
for={:user}
|
||||
action={Routes.user_reset_password_path(@conn, :create)}
|
||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
||||
>
|
||||
<%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-600") %>
|
||||
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %>
|
||||
|
||||
<%= submit(dgettext("actions", "Send instructions to reset password"),
|
||||
class: "mx-auto btn btn-primary col-span-3"
|
||||
) %>
|
||||
</.form>
|
||||
|
||||
<hr class="hr" />
|
||||
|
||||
<div class="flex flex-row justify-center items-center space-x-4">
|
||||
<.link
|
||||
:if={Accounts.allow_registration?()}
|
||||
href={Routes.user_registration_path(@conn, :new)}
|
||||
class="btn btn-primary"
|
||||
>
|
||||
<%= dgettext("actions", "Register") %>
|
||||
</.link>
|
||||
<.link href={Routes.user_session_path(@conn, :new)} class="btn btn-primary">
|
||||
<%= dgettext("actions", "Log in") %>
|
||||
</.link>
|
||||
</div>
|
||||
</div>
|
45
lib/cannery_web/templates/user_session/new.html.heex
Normal file
45
lib/cannery_web/templates/user_session/new.html.heex
Normal file
@ -0,0 +1,45 @@
|
||||
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4">
|
||||
<h1 class="title text-primary-600 text-xl">
|
||||
<%= dgettext("actions", "Log in") %>
|
||||
</h1>
|
||||
|
||||
<.form
|
||||
:let={f}
|
||||
for={@conn}
|
||||
action={Routes.user_session_path(@conn, :create)}
|
||||
as="user"
|
||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
||||
>
|
||||
<p :if={@error_message} class="alert alert-danger col-span-3">
|
||||
<%= @error_message %>
|
||||
</p>
|
||||
|
||||
<%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-600") %>
|
||||
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %>
|
||||
|
||||
<%= label(f, :password, gettext("Password"), class: "title text-lg text-primary-600") %>
|
||||
<%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %>
|
||||
|
||||
<%= label(f, :remember_me, gettext("Keep me logged in for 60 days"),
|
||||
class: "title text-lg text-primary-600"
|
||||
) %>
|
||||
<%= checkbox(f, :remember_me, class: "checkbox col-span-2") %>
|
||||
|
||||
<%= submit(dgettext("actions", "Log in"), class: "mx-auto btn btn-primary col-span-3") %>
|
||||
</.form>
|
||||
|
||||
<hr class="hr" />
|
||||
|
||||
<div class="flex flex-row justify-center items-center space-x-4">
|
||||
<.link
|
||||
:if={Accounts.allow_registration?()}
|
||||
href={Routes.user_registration_path(@conn, :new)}
|
||||
class="btn btn-primary"
|
||||
>
|
||||
<%= dgettext("actions", "Register") %>
|
||||
</.link>
|
||||
<.link href={Routes.user_reset_password_path(@conn, :new)} class="btn btn-primary">
|
||||
<%= dgettext("actions", "Forgot your password?") %>
|
||||
</.link>
|
||||
</div>
|
||||
</div>
|
144
lib/cannery_web/templates/user_settings/edit.html.heex
Normal file
144
lib/cannery_web/templates/user_settings/edit.html.heex
Normal file
@ -0,0 +1,144 @@
|
||||
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center text-right space-y-4">
|
||||
<h1 class="pb-4 title text-primary-600 text-2xl text-center">
|
||||
<%= gettext("Settings") %>
|
||||
</h1>
|
||||
|
||||
<hr class="hr" />
|
||||
|
||||
<.form
|
||||
:let={f}
|
||||
for={@email_changeset}
|
||||
action={Routes.user_settings_path(@conn, :update)}
|
||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
||||
>
|
||||
<h3 class="title text-primary-600 text-lg text-center col-span-3">
|
||||
<%= dgettext("actions", "Change email") %>
|
||||
</h3>
|
||||
|
||||
<div
|
||||
:if={@email_changeset.action && not @email_changeset.valid?()}
|
||||
class="alert alert-danger col-span-3"
|
||||
>
|
||||
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
|
||||
</div>
|
||||
|
||||
<%= hidden_input(f, :action, name: "action", value: "update_email") %>
|
||||
|
||||
<%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-600") %>
|
||||
<%= email_input(f, :email, required: true, class: "mx-2 my-1 input input-primary col-span-2") %>
|
||||
<%= error_tag(f, :email, "col-span-3") %>
|
||||
|
||||
<%= label(f, :current_password, gettext("Current password"),
|
||||
for: "current_password_for_email",
|
||||
class: "mx-2 my-1 title text-lg text-primary-600"
|
||||
) %>
|
||||
<%= password_input(f, :current_password,
|
||||
required: true,
|
||||
name: "current_password",
|
||||
id: "current_password_for_email",
|
||||
class: "mx-2 my-1 input input-primary col-span-2"
|
||||
) %>
|
||||
<%= error_tag(f, :current_password, "col-span-3") %>
|
||||
|
||||
<%= submit(dgettext("actions", "Change email"),
|
||||
class: "mx-auto btn btn-primary col-span-3"
|
||||
) %>
|
||||
</.form>
|
||||
|
||||
<hr class="hr" />
|
||||
|
||||
<.form
|
||||
:let={f}
|
||||
for={@password_changeset}
|
||||
action={Routes.user_settings_path(@conn, :update)}
|
||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
||||
>
|
||||
<h3 class="title text-primary-600 text-lg text-center col-span-3">
|
||||
<%= dgettext("actions", "Change password") %>
|
||||
</h3>
|
||||
|
||||
<div
|
||||
:if={@password_changeset.action && not @password_changeset.valid?()}
|
||||
class="alert alert-danger col-span-3"
|
||||
>
|
||||
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
|
||||
</div>
|
||||
|
||||
<%= hidden_input(f, :action, name: "action", value: "update_password") %>
|
||||
|
||||
<%= label(f, :password, gettext("New password"), class: "title text-lg text-primary-600") %>
|
||||
<%= password_input(f, :password,
|
||||
required: true,
|
||||
class: "mx-2 my-1 input input-primary col-span-2"
|
||||
) %>
|
||||
<%= error_tag(f, :password, "col-span-3") %>
|
||||
|
||||
<%= label(f, :password_confirmation, gettext("Confirm new password"),
|
||||
class: "title text-lg text-primary-600"
|
||||
) %>
|
||||
<%= password_input(f, :password_confirmation,
|
||||
required: true,
|
||||
class: "mx-2 my-1 input input-primary col-span-2"
|
||||
) %>
|
||||
<%= error_tag(f, :password_confirmation, "col-span-3") %>
|
||||
|
||||
<%= label(f, :current_password, gettext("Current password"),
|
||||
for: "current_password_for_password",
|
||||
class: "title text-lg text-primary-600"
|
||||
) %>
|
||||
<%= password_input(f, :current_password,
|
||||
required: true,
|
||||
name: "current_password",
|
||||
id: "current_password_for_password",
|
||||
class: "mx-2 my-1 input input-primary col-span-2"
|
||||
) %>
|
||||
<%= error_tag(f, :current_password, "col-span-3") %>
|
||||
|
||||
<%= submit(dgettext("actions", "Change password"),
|
||||
class: "mx-auto btn btn-primary col-span-3"
|
||||
) %>
|
||||
</.form>
|
||||
|
||||
<hr class="hr" />
|
||||
|
||||
<.form
|
||||
:let={f}
|
||||
for={@locale_changeset}
|
||||
action={Routes.user_settings_path(@conn, :update)}
|
||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
||||
>
|
||||
<h3 class="title text-primary-600 text-lg text-center col-span-3">
|
||||
<%= dgettext("actions", "Change Language") %>
|
||||
</h3>
|
||||
|
||||
<div
|
||||
:if={@locale_changeset.action && not @locale_changeset.valid?}
|
||||
class="alert alert-danger col-span-3"
|
||||
>
|
||||
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
|
||||
</div>
|
||||
|
||||
<%= hidden_input(f, :action, name: "action", value: "update_locale") %>
|
||||
|
||||
<%= select(f, :locale, [{gettext("English"), "en_US"}, {"Spanish", "es"}],
|
||||
class: "mx-2 my-1 min-w-md input input-primary col-span-3"
|
||||
) %>
|
||||
<%= error_tag(f, :locale, "col-span-3") %>
|
||||
|
||||
<%= submit(dgettext("actions", "Change language"),
|
||||
class: "whitespace-nowrap mx-auto btn btn-primary col-span-3",
|
||||
data: [qa: dgettext("prompts", "Are you sure you want to change your language?")]
|
||||
) %>
|
||||
</.form>
|
||||
|
||||
<hr class="hr" />
|
||||
|
||||
<.link
|
||||
href={Routes.user_settings_path(@conn, :delete, @current_user)}
|
||||
method={:delete}
|
||||
class="btn btn-alert"
|
||||
data-confirm={dgettext("prompts", "Are you sure you want to delete your account?")}
|
||||
>
|
||||
<%= dgettext("actions", "Delete User") %>
|
||||
</.link>
|
||||
</div>
|
Reference in New Issue
Block a user