upgrade to phoenix 1.7
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
a1c846be33
commit
63d854ffbe
@ -1,6 +1,6 @@
|
|||||||
[
|
[
|
||||||
import_deps: [:ecto, :phoenix],
|
import_deps: [:ecto, :ecto_sql, :phoenix],
|
||||||
inputs: ["*.{heex,ex,exs}", "priv/*/seeds.exs", "{config,lib,test}/**/*.{heex,ex,exs}"],
|
inputs: ["*.{heex,ex,exs}", "{config,lib,test}/**/*.{heex,ex,exs}", "priv/*/seeds.exs"],
|
||||||
subdirectories: ["priv/*/migrations"],
|
subdirectories: ["priv/*/migrations"],
|
||||||
plugins: [Phoenix.LiveView.HTMLFormatter]
|
plugins: [Phoenix.LiveView.HTMLFormatter]
|
||||||
]
|
]
|
||||||
|
@ -374,8 +374,8 @@ defmodule Memex.Accounts do
|
|||||||
@doc """
|
@doc """
|
||||||
Deletes the signed token with the given context.
|
Deletes the signed token with the given context.
|
||||||
"""
|
"""
|
||||||
@spec delete_session_token(token :: String.t()) :: :ok
|
@spec delete_user_session_token(token :: String.t()) :: :ok
|
||||||
def delete_session_token(token) do
|
def delete_user_session_token(token) do
|
||||||
UserToken.token_and_context_query(token, "session") |> Repo.delete_all()
|
UserToken.token_and_context_query(token, "session") |> Repo.delete_all()
|
||||||
:ok
|
:ok
|
||||||
end
|
end
|
||||||
|
@ -7,10 +7,11 @@ defmodule Memex.Email do
|
|||||||
`lib/memex_web/templates/layout/email.txt.heex` for text emails.
|
`lib/memex_web/templates/layout/email.txt.heex` for text emails.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
use Phoenix.Swoosh, view: MemexWeb.EmailView, layout: {MemexWeb.LayoutView, :email}
|
import Swoosh.Email
|
||||||
import MemexWeb.Gettext
|
import MemexWeb.Gettext
|
||||||
|
import Phoenix.Template
|
||||||
alias Memex.Accounts.User
|
alias Memex.Accounts.User
|
||||||
alias MemexWeb.EmailView
|
alias MemexWeb.{EmailHTML, Layouts}
|
||||||
|
|
||||||
@typedoc """
|
@typedoc """
|
||||||
Represents an HTML and text body email that can be sent
|
Represents an HTML and text body email that can be sent
|
||||||
@ -28,21 +29,33 @@ defmodule Memex.Email do
|
|||||||
def generate_email("welcome", user, %{"url" => url}) do
|
def generate_email("welcome", user, %{"url" => url}) do
|
||||||
user
|
user
|
||||||
|> base_email(dgettext("emails", "Confirm your Memex account"))
|
|> base_email(dgettext("emails", "Confirm your Memex account"))
|
||||||
|> render_body("confirm_email.html", %{user: user, url: url})
|
|> html_email(:confirm_email_html, %{user: user, url: url})
|
||||||
|> text_body(EmailView.render("confirm_email.txt", %{user: user, url: url}))
|
|> text_email(:confirm_email_text, %{user: user, url: url})
|
||||||
end
|
end
|
||||||
|
|
||||||
def generate_email("reset_password", user, %{"url" => url}) do
|
def generate_email("reset_password", user, %{"url" => url}) do
|
||||||
user
|
user
|
||||||
|> base_email(dgettext("emails", "Reset your Memex password"))
|
|> base_email(dgettext("emails", "Reset your Memex password"))
|
||||||
|> render_body("reset_password.html", %{user: user, url: url})
|
|> html_email(:reset_password_html, %{user: user, url: url})
|
||||||
|> text_body(EmailView.render("reset_password.txt", %{user: user, url: url}))
|
|> text_email(:reset_password_text, %{user: user, url: url})
|
||||||
end
|
end
|
||||||
|
|
||||||
def generate_email("update_email", user, %{"url" => url}) do
|
def generate_email("update_email", user, %{"url" => url}) do
|
||||||
user
|
user
|
||||||
|> base_email(dgettext("emails", "Update your Memex email"))
|
|> base_email(dgettext("emails", "Update your Memex email"))
|
||||||
|> render_body("update_email.html", %{user: user, url: url})
|
|> html_email(:update_email_html, %{user: user, url: url})
|
||||||
|> text_body(EmailView.render("update_email.txt", %{user: user, url: url}))
|
|> text_email(:update_email_text, %{user: user, url: url})
|
||||||
|
end
|
||||||
|
|
||||||
|
defp html_email(email, atom, assigns) do
|
||||||
|
heex = apply(EmailHTML, atom, [assigns])
|
||||||
|
html = render_to_string(Layouts, "email_html", "html", email: email, inner_content: heex)
|
||||||
|
email |> html_body(html)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp text_email(email, atom, assigns) do
|
||||||
|
heex = apply(EmailHTML, atom, [assigns])
|
||||||
|
text = render_to_string(Layouts, "email_text", "text", email: email, inner_content: heex)
|
||||||
|
email |> text_body(text)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -9,6 +9,7 @@ defmodule Memex.Contexts.Context do
|
|||||||
alias Ecto.{Changeset, UUID}
|
alias Ecto.{Changeset, UUID}
|
||||||
alias Memex.{Accounts.User, Repo}
|
alias Memex.{Accounts.User, Repo}
|
||||||
|
|
||||||
|
@derive {Phoenix.Param, key: :slug}
|
||||||
@derive {Jason.Encoder,
|
@derive {Jason.Encoder,
|
||||||
only: [
|
only: [
|
||||||
:slug,
|
:slug,
|
||||||
|
@ -14,17 +14,17 @@ defmodule Memex.Logger do
|
|||||||
|> Map.put(:stacktrace, Exception.format_stacktrace(stacktrace))
|
|> Map.put(:stacktrace, Exception.format_stacktrace(stacktrace))
|
||||||
|> pretty_encode()
|
|> pretty_encode()
|
||||||
|
|
||||||
Logger.error(meta.reason, data: data)
|
Logger.error("#{meta.reason} #{data}")
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_event([:oban, :job, :start], measure, meta, _config) do
|
def handle_event([:oban, :job, :start], measure, meta, _config) do
|
||||||
data = get_oban_job_data(meta, measure) |> pretty_encode()
|
data = get_oban_job_data(meta, measure) |> pretty_encode()
|
||||||
Logger.info("Started oban job", data: data)
|
Logger.info("Started oban job: #{data}")
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_event([:oban, :job, :stop], measure, meta, _config) do
|
def handle_event([:oban, :job, :stop], measure, meta, _config) do
|
||||||
data = get_oban_job_data(meta, measure) |> pretty_encode()
|
data = get_oban_job_data(meta, measure) |> pretty_encode()
|
||||||
Logger.info("Finished oban job", data: data)
|
Logger.info("Finished oban job: #{data}")
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_event([:oban, :job, unhandled_event], measure, meta, _config) do
|
def handle_event([:oban, :job, unhandled_event], measure, meta, _config) do
|
||||||
@ -33,7 +33,7 @@ defmodule Memex.Logger do
|
|||||||
|> Map.put(:event, unhandled_event)
|
|> Map.put(:event, unhandled_event)
|
||||||
|> pretty_encode()
|
|> pretty_encode()
|
||||||
|
|
||||||
Logger.warning("Unhandled oban job event", data: data)
|
Logger.warning("Unhandled oban job event: #{data}")
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_event(unhandled_event, measure, meta, config) do
|
def handle_event(unhandled_event, measure, meta, config) do
|
||||||
@ -45,7 +45,7 @@ defmodule Memex.Logger do
|
|||||||
config: config
|
config: config
|
||||||
})
|
})
|
||||||
|
|
||||||
Logger.warning("Unhandled telemetry event", data: data)
|
Logger.warning("Unhandled telemetry event: #{data}")
|
||||||
end
|
end
|
||||||
|
|
||||||
defp get_oban_job_data(%{job: job}, measure) do
|
defp get_oban_job_data(%{job: job}, measure) do
|
||||||
|
@ -8,6 +8,7 @@ defmodule Memex.Notes.Note do
|
|||||||
alias Ecto.{Changeset, UUID}
|
alias Ecto.{Changeset, UUID}
|
||||||
alias Memex.{Accounts.User, Repo}
|
alias Memex.{Accounts.User, Repo}
|
||||||
|
|
||||||
|
@derive {Phoenix.Param, key: :slug}
|
||||||
@derive {Jason.Encoder,
|
@derive {Jason.Encoder,
|
||||||
only: [
|
only: [
|
||||||
:slug,
|
:slug,
|
||||||
|
@ -8,6 +8,7 @@ defmodule Memex.Pipelines.Pipeline do
|
|||||||
alias Ecto.{Changeset, UUID}
|
alias Ecto.{Changeset, UUID}
|
||||||
alias Memex.{Accounts.User, Pipelines.Steps.Step, Repo}
|
alias Memex.{Accounts.User, Pipelines.Steps.Step, Repo}
|
||||||
|
|
||||||
|
@derive {Phoenix.Param, key: :slug}
|
||||||
@derive {Jason.Encoder,
|
@derive {Jason.Encoder,
|
||||||
only: [
|
only: [
|
||||||
:slug,
|
:slug,
|
||||||
|
115
lib/memex_web.ex
115
lib/memex_web.ex
@ -1,54 +1,61 @@
|
|||||||
defmodule MemexWeb do
|
defmodule MemexWeb do
|
||||||
@moduledoc """
|
@moduledoc """
|
||||||
The entrypoint for defining your web interface, such
|
The entrypoint for defining your web interface, such
|
||||||
as controllers, views, channels and so on.
|
as controllers, components, channels, and so on.
|
||||||
|
|
||||||
This can be used in your application as:
|
This can be used in your application as:
|
||||||
|
|
||||||
use MemexWeb, :controller
|
use MemexWeb, :controller
|
||||||
use MemexWeb, :view
|
use MemexWeb, :html
|
||||||
|
|
||||||
The definitions below will be executed for every view,
|
The definitions below will be executed for every controller,
|
||||||
controller, etc, so keep them short and clean, focused
|
component, etc, so keep them short and clean, focused
|
||||||
on imports, uses and aliases.
|
on imports, uses and aliases.
|
||||||
|
|
||||||
Do NOT define functions inside the quoted expressions
|
Do NOT define functions inside the quoted expressions
|
||||||
below. Instead, define any helper function in modules
|
below. Instead, define additional modules and import
|
||||||
and import those modules here.
|
those modules here.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def static_paths, do: ~w(css js fonts images favicon.ico robots.txt)
|
||||||
|
|
||||||
|
def router do
|
||||||
|
quote do
|
||||||
|
use Phoenix.Router, helpers: false
|
||||||
|
|
||||||
|
# Import common connection and controller functions to use in pipelines
|
||||||
|
import Plug.Conn
|
||||||
|
import Phoenix.Controller
|
||||||
|
import Phoenix.LiveView.Router
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def channel do
|
||||||
|
quote do
|
||||||
|
use Phoenix.Channel
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def controller do
|
def controller do
|
||||||
quote do
|
quote do
|
||||||
use Phoenix.Controller, namespace: MemexWeb
|
use Phoenix.Controller,
|
||||||
|
formats: [:html, :json],
|
||||||
|
layouts: [html: MemexWeb.Layouts]
|
||||||
|
|
||||||
|
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||||
import Plug.Conn
|
import Plug.Conn
|
||||||
import MemexWeb.Gettext
|
import MemexWeb.Gettext
|
||||||
alias MemexWeb.Endpoint
|
|
||||||
alias MemexWeb.Router.Helpers, as: Routes
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def view do
|
unquote(verified_routes())
|
||||||
quote do
|
|
||||||
use Phoenix.View,
|
|
||||||
root: "lib/memex_web/templates",
|
|
||||||
namespace: MemexWeb
|
|
||||||
|
|
||||||
# Import convenience functions from controllers
|
|
||||||
import Phoenix.Controller,
|
|
||||||
only: [get_flash: 1, get_flash: 2, view_module: 1, view_template: 1]
|
|
||||||
|
|
||||||
# Include shared imports and aliases for views
|
|
||||||
unquote(view_helpers())
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def live_view do
|
def live_view do
|
||||||
quote do
|
quote do
|
||||||
use Phoenix.LiveView, layout: {MemexWeb.LayoutView, :live}
|
use Phoenix.LiveView,
|
||||||
|
layout: {MemexWeb.Layouts, :app}
|
||||||
|
|
||||||
on_mount MemexWeb.InitAssigns
|
unquote(html_helpers())
|
||||||
unquote(view_helpers())
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -56,50 +63,46 @@ defmodule MemexWeb do
|
|||||||
quote do
|
quote do
|
||||||
use Phoenix.LiveComponent
|
use Phoenix.LiveComponent
|
||||||
|
|
||||||
unquote(view_helpers())
|
unquote(html_helpers())
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def component do
|
def html do
|
||||||
quote do
|
quote do
|
||||||
use Phoenix.Component
|
use Phoenix.Component
|
||||||
|
|
||||||
unquote(view_helpers())
|
# Import convenience functions from controllers
|
||||||
|
import Phoenix.Controller,
|
||||||
|
only: [get_csrf_token: 0, view_module: 1, view_template: 1]
|
||||||
|
|
||||||
|
# Include general helpers for rendering HTML
|
||||||
|
unquote(html_helpers())
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def router do
|
defp html_helpers do
|
||||||
quote do
|
quote do
|
||||||
use Phoenix.Router
|
|
||||||
|
|
||||||
import Phoenix.{Controller, LiveView.Router}
|
|
||||||
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
|
||||||
import Plug.Conn
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def channel do
|
|
||||||
quote do
|
|
||||||
use Phoenix.Channel
|
|
||||||
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
|
||||||
import MemexWeb.Gettext
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
defp view_helpers do
|
|
||||||
quote do
|
|
||||||
# Use all HTML functionality (forms, tags, etc)
|
|
||||||
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||||
use Phoenix.HTML
|
use Phoenix.HTML
|
||||||
|
|
||||||
# Import LiveView and .heex helpers (live_render, link, <.form>, etc)
|
|
||||||
# Import basic rendering functionality (render, render_layout, etc)
|
|
||||||
import Phoenix.{Component, View}
|
|
||||||
import MemexWeb.{ErrorHelpers, Gettext, CoreComponents, ViewHelpers}
|
|
||||||
|
|
||||||
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||||
alias MemexWeb.Endpoint
|
import Phoenix.Component
|
||||||
alias MemexWeb.Router.Helpers, as: Routes
|
import MemexWeb.{ErrorHelpers, Gettext, CoreComponents, HTMLHelpers}
|
||||||
|
|
||||||
|
# Shortcut for generating JS commands
|
||||||
|
alias Phoenix.LiveView.JS
|
||||||
|
|
||||||
|
# Routes generation with the ~p sigil
|
||||||
|
unquote(verified_routes())
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def verified_routes do
|
||||||
|
quote do
|
||||||
|
use Phoenix.VerifiedRoutes,
|
||||||
|
endpoint: MemexWeb.Endpoint,
|
||||||
|
router: MemexWeb.Router,
|
||||||
|
statics: MemexWeb.static_paths()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -88,11 +88,9 @@ defmodule MemexWeb.Components.ContextsTableComponent do
|
|||||||
|
|
||||||
@spec get_value_for_key(atom(), Context.t(), additional_data :: map()) ::
|
@spec get_value_for_key(atom(), Context.t(), additional_data :: map()) ::
|
||||||
any() | {any(), Rendered.t()}
|
any() | {any(), Rendered.t()}
|
||||||
defp get_value_for_key(:slug, %{slug: slug}, _additional_data) do
|
defp get_value_for_key(:slug, %{slug: slug} = assigns, _additional_data) do
|
||||||
assigns = %{slug: slug}
|
|
||||||
|
|
||||||
slug_block = ~H"""
|
slug_block = ~H"""
|
||||||
<.link navigate={Routes.context_show_path(Endpoint, :show, @slug)} class="link">
|
<.link navigate={~p"/context/#{@slug}"} class="link">
|
||||||
<%= @slug %>
|
<%= @slug %>
|
||||||
</.link>
|
</.link>
|
||||||
"""
|
"""
|
||||||
@ -100,16 +98,10 @@ defmodule MemexWeb.Components.ContextsTableComponent do
|
|||||||
{slug, slug_block}
|
{slug, slug_block}
|
||||||
end
|
end
|
||||||
|
|
||||||
defp get_value_for_key(:tags, %{tags: tags}, _additional_data) do
|
defp get_value_for_key(:tags, assigns, _additional_data) do
|
||||||
assigns = %{tags: tags}
|
|
||||||
|
|
||||||
~H"""
|
~H"""
|
||||||
<div class="flex flex-wrap justify-center space-x-1">
|
<div class="flex flex-wrap justify-center space-x-1">
|
||||||
<.link
|
<.link :for={tag <- @tags} patch={~p"/contexts/#{tag}"} class="link">
|
||||||
:for={tag <- @tags}
|
|
||||||
patch={Routes.context_index_path(Endpoint, :search, tag)}
|
|
||||||
class="link"
|
|
||||||
>
|
|
||||||
<%= tag %>
|
<%= tag %>
|
||||||
</.link>
|
</.link>
|
||||||
</div>
|
</div>
|
||||||
|
@ -3,13 +3,13 @@ defmodule MemexWeb.CoreComponents do
|
|||||||
Provides core UI components.
|
Provides core UI components.
|
||||||
"""
|
"""
|
||||||
use Phoenix.Component
|
use Phoenix.Component
|
||||||
import MemexWeb.{Gettext, ViewHelpers}
|
use MemexWeb, :verified_routes
|
||||||
|
|
||||||
|
import MemexWeb.{Gettext, HTMLHelpers}
|
||||||
alias Memex.{Accounts, Accounts.Invite, Accounts.User}
|
alias Memex.{Accounts, Accounts.Invite, Accounts.User}
|
||||||
alias Memex.Contexts.Context
|
alias Memex.Contexts.Context
|
||||||
alias Memex.Notes.Note
|
alias Memex.Notes.Note
|
||||||
alias Memex.Pipelines.Steps.Step
|
alias Memex.Pipelines.Steps.Step
|
||||||
alias MemexWeb.{Endpoint, HomeLive}
|
|
||||||
alias MemexWeb.Router.Helpers, as: Routes
|
|
||||||
alias Phoenix.HTML
|
alias Phoenix.HTML
|
||||||
alias Phoenix.LiveView.JS
|
alias Phoenix.LiveView.JS
|
||||||
|
|
||||||
@ -31,13 +31,13 @@ defmodule MemexWeb.CoreComponents do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
<.modal return_to={Routes.<%= schema.singular %>_index_path(Endpoint, :index)}>
|
<.modal return_to={~p"/\#{<%= schema.plural %>}"}>
|
||||||
<.live_component
|
<.live_component
|
||||||
module={<%= inspect context.web_module %>.<%= inspect Module.concat(schema.web_namespace, schema.alias) %>Live.FormComponent}
|
module={<%= inspect context.web_module %>.<%= inspect Module.concat(schema.web_namespace, schema.alias) %>Live.FormComponent}
|
||||||
id={@<%= schema.singular %>.id || :new}
|
id={@<%= schema.singular %>.id || :new}
|
||||||
title={@page_title}
|
title={@page_title}
|
||||||
action={@live_action}
|
action={@live_action}
|
||||||
return_to={Routes.<%= schema.singular %>_index_path(Endpoint, :index)}
|
return_to={~p"/\#{<%= schema.singular %>}"}
|
||||||
<%= schema.singular %>: @<%= schema.singular %>
|
<%= schema.singular %>: @<%= schema.singular %>
|
||||||
/>
|
/>
|
||||||
</.modal>
|
</.modal>
|
||||||
@ -167,7 +167,7 @@ defmodule MemexWeb.CoreComponents do
|
|||||||
link =
|
link =
|
||||||
HTML.Link.link(
|
HTML.Link.link(
|
||||||
"[[#{slug}]]",
|
"[[#{slug}]]",
|
||||||
to: Routes.note_show_path(Endpoint, :show, slug),
|
to: ~p"/note/#{slug}",
|
||||||
class: "link inline",
|
class: "link inline",
|
||||||
data: [qa: "#{data_qa_prefix}-#{slug}"]
|
data: [qa: "#{data_qa_prefix}-#{slug}"]
|
||||||
)
|
)
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<.qr_code
|
<.qr_code
|
||||||
content={Routes.user_registration_url(Endpoint, :new, invite: @invite.token)}
|
content={url(MemexWeb.Endpoint, ~p"/users/register?invite=#{@invite.token}")}
|
||||||
filename={@invite.name}
|
filename={@invite.name}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
@ -38,7 +38,7 @@
|
|||||||
class="mx-2 my-1 text-xs px-4 py-2 rounded-lg text-center break-all
|
class="mx-2 my-1 text-xs px-4 py-2 rounded-lg text-center break-all
|
||||||
text-primary-400 bg-primary-800"
|
text-primary-400 bg-primary-800"
|
||||||
phx-no-format
|
phx-no-format
|
||||||
><%= Routes.user_registration_url(Endpoint, :new, invite: @invite.token) %></code>
|
><%= url(MemexWeb.Endpoint, ~p"/users/register?invite=#{@invite.token}") %></code>
|
||||||
<%= if @code_actions, do: render_slot(@code_actions) %>
|
<%= if @code_actions, do: render_slot(@code_actions) %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
<nav role="navigation" class="mb-8 px-8 py-4 w-full bg-primary-900 text-primary-400">
|
<nav role="navigation" class="mb-8 px-8 py-4 w-full bg-primary-900 text-primary-400">
|
||||||
<div class="flex flex-col sm:flex-row justify-between items-center">
|
<div class="flex flex-col sm:flex-row justify-between items-center">
|
||||||
<div class="mb-4 sm:mb-0 sm:mr-8 flex flex-row justify-start items-center space-x-2">
|
<div class="mb-4 sm:mb-0 sm:mr-8 flex flex-row justify-start items-center space-x-2">
|
||||||
<.link
|
<.link navigate={~p"/"} class="mx-2 my-1 leading-5 text-xl text-primary-400 hover:underline">
|
||||||
navigate={Routes.live_path(Endpoint, HomeLive)}
|
|
||||||
class="mx-2 my-1 leading-5 text-xl text-primary-400 hover:underline"
|
|
||||||
>
|
|
||||||
<%= gettext("memEx") %>
|
<%= gettext("memEx") %>
|
||||||
</.link>
|
</.link>
|
||||||
|
|
||||||
@ -21,28 +18,19 @@
|
|||||||
<ul class="flex flex-row flex-wrap justify-center items-center
|
<ul class="flex flex-row flex-wrap justify-center items-center
|
||||||
text-lg text-primary-400 text-ellipsis">
|
text-lg text-primary-400 text-ellipsis">
|
||||||
<li class="mx-2 my-1">
|
<li class="mx-2 my-1">
|
||||||
<.link
|
<.link navigate={~p"/notes"} class="text-primary-400 hover:underline truncate">
|
||||||
navigate={Routes.note_index_path(Endpoint, :index)}
|
|
||||||
class="text-primary-400 hover:underline truncate"
|
|
||||||
>
|
|
||||||
<%= gettext("notes") %>
|
<%= gettext("notes") %>
|
||||||
</.link>
|
</.link>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="mx-2 my-1">
|
<li class="mx-2 my-1">
|
||||||
<.link
|
<.link navigate={~p"/contexts"} class="text-primary-400 hover:underline truncate">
|
||||||
navigate={Routes.context_index_path(Endpoint, :index)}
|
|
||||||
class="text-primary-400 hover:underline truncate"
|
|
||||||
>
|
|
||||||
<%= gettext("contexts") %>
|
<%= gettext("contexts") %>
|
||||||
</.link>
|
</.link>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="mx-2 my-1">
|
<li class="mx-2 my-1">
|
||||||
<.link
|
<.link navigate={~p"/pipelines"} class="text-primary-400 hover:underline truncate">
|
||||||
navigate={Routes.pipeline_index_path(Endpoint, :index)}
|
|
||||||
class="text-primary-400 hover:underline truncate"
|
|
||||||
>
|
|
||||||
<%= gettext("pipelines") %>
|
<%= gettext("pipelines") %>
|
||||||
</.link>
|
</.link>
|
||||||
</li>
|
</li>
|
||||||
@ -51,25 +39,19 @@
|
|||||||
|
|
||||||
<%= if @current_user do %>
|
<%= if @current_user do %>
|
||||||
<li :if={@current_user |> Accounts.is_already_admin?()} class="mx-2 my-1">
|
<li :if={@current_user |> Accounts.is_already_admin?()} class="mx-2 my-1">
|
||||||
<.link
|
<.link navigate={~p"/invites"} class="text-primary-400 hover:underline">
|
||||||
navigate={Routes.invite_index_path(Endpoint, :index)}
|
|
||||||
class="text-primary-400 hover:underline"
|
|
||||||
>
|
|
||||||
<%= gettext("invites") %>
|
<%= gettext("invites") %>
|
||||||
</.link>
|
</.link>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="mx-2 my-1">
|
<li class="mx-2 my-1">
|
||||||
<.link
|
<.link navigate={~p"/users/settings"} class="text-primary-400 hover:underline truncate">
|
||||||
navigate={Routes.user_settings_path(Endpoint, :edit)}
|
|
||||||
class="text-primary-400 hover:underline truncate"
|
|
||||||
>
|
|
||||||
<%= @current_user.email %>
|
<%= @current_user.email %>
|
||||||
</.link>
|
</.link>
|
||||||
</li>
|
</li>
|
||||||
<li class="mx-2 my-1">
|
<li class="mx-2 my-1">
|
||||||
<.link
|
<.link
|
||||||
href={Routes.user_session_path(Endpoint, :delete)}
|
href={~p"/users/log_out"}
|
||||||
method="delete"
|
method="delete"
|
||||||
data-confirm={dgettext("prompts", "are you sure you want to log out?")}
|
data-confirm={dgettext("prompts", "are you sure you want to log out?")}
|
||||||
aria-label={gettext("log out")}
|
aria-label={gettext("log out")}
|
||||||
@ -84,7 +66,7 @@
|
|||||||
class="mx-2 my-1"
|
class="mx-2 my-1"
|
||||||
>
|
>
|
||||||
<.link
|
<.link
|
||||||
navigate={Routes.live_dashboard_path(Endpoint, :home)}
|
navigate={~p"/dashboard"}
|
||||||
class="text-primary-400 hover:underline"
|
class="text-primary-400 hover:underline"
|
||||||
aria-label={gettext("live dashboard")}
|
aria-label={gettext("live dashboard")}
|
||||||
>
|
>
|
||||||
@ -93,19 +75,13 @@
|
|||||||
</li>
|
</li>
|
||||||
<% else %>
|
<% else %>
|
||||||
<li :if={Accounts.allow_registration?()} class="mx-2 my-1">
|
<li :if={Accounts.allow_registration?()} class="mx-2 my-1">
|
||||||
<.link
|
<.link href={~p"/users/register"} class="text-primary-400 hover:underline truncate">
|
||||||
href={Routes.user_registration_path(Endpoint, :new)}
|
|
||||||
class="text-primary-400 hover:underline truncate"
|
|
||||||
>
|
|
||||||
<%= dgettext("actions", "register") %>
|
<%= dgettext("actions", "register") %>
|
||||||
</.link>
|
</.link>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="mx-2 my-1">
|
<li class="mx-2 my-1">
|
||||||
<.link
|
<.link href={~p"/users/log_in"} class="text-primary-400 hover:underline truncate">
|
||||||
href={Routes.user_session_path(Endpoint, :new)}
|
|
||||||
class="text-primary-400 hover:underline truncate"
|
|
||||||
>
|
|
||||||
<%= dgettext("actions", "log in") %>
|
<%= dgettext("actions", "log in") %>
|
||||||
</.link>
|
</.link>
|
||||||
</li>
|
</li>
|
||||||
|
17
lib/memex_web/components/layouts.ex
Normal file
17
lib/memex_web/components/layouts.ex
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
defmodule MemexWeb.Layouts do
|
||||||
|
@moduledoc """
|
||||||
|
The root layouts for the entire application
|
||||||
|
"""
|
||||||
|
|
||||||
|
use MemexWeb, :html
|
||||||
|
|
||||||
|
embed_templates "layouts/*"
|
||||||
|
|
||||||
|
def get_title(%{assigns: %{title: title}}) when title not in [nil, ""] do
|
||||||
|
gettext("memEx | %{title}", title: title)
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_title(_conn) do
|
||||||
|
gettext("memEx")
|
||||||
|
end
|
||||||
|
end
|
@ -3,11 +3,11 @@
|
|||||||
<.topbar current_user={assigns[:current_user]} />
|
<.topbar current_user={assigns[:current_user]} />
|
||||||
|
|
||||||
<div class="mx-8 my-2 flex flex-col space-y-4 text-center">
|
<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">
|
<p :if={@flash["info"]} class="alert alert-info" role="alert">
|
||||||
<%= get_flash(@conn, :info) %>
|
<%= @flash["info"] %>
|
||||||
</p>
|
</p>
|
||||||
<p :if={get_flash(@conn, :error)} class="alert alert-danger" role="alert">
|
<p :if={@flash["error"]} class="alert alert-danger" role="alert">
|
||||||
<%= get_flash(@conn, :error) %>
|
<%= @flash["error"] %>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
@ -9,11 +9,8 @@
|
|||||||
|
|
||||||
<hr style="margin: 2em auto; border-width: 1px; border-color: rgb(161, 161, 170); width: 100%; max-width: 42rem;" />
|
<hr style="margin: 2em auto; border-width: 1px; border-color: rgb(161, 161, 170); width: 100%; max-width: 42rem;" />
|
||||||
|
|
||||||
<a style="color: rgb(161, 161, 170);" href={Routes.live_url(Endpoint, HomeLive)}>
|
<a style="color: rgb(161, 161, 170);" href={~p"/"}>
|
||||||
<%= dgettext(
|
<%= dgettext("emails", "This email was sent from memEx") %>
|
||||||
"emails",
|
|
||||||
"This email was sent from memEx"
|
|
||||||
) %>
|
|
||||||
</a>
|
</a>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
9
lib/memex_web/components/layouts/email_text.txt.eex
Normal file
9
lib/memex_web/components/layouts/email_text.txt.eex
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<%= @email.subject %>
|
||||||
|
|
||||||
|
====================
|
||||||
|
|
||||||
|
<%= @inner_content %>
|
||||||
|
|
||||||
|
=====================
|
||||||
|
|
||||||
|
<%= dgettext("emails", "This email was sent from memEx at %{url}", url: ~p"/") %>
|
@ -8,13 +8,8 @@
|
|||||||
<.live_title suffix={" | #{gettext("memEx")}"}>
|
<.live_title suffix={" | #{gettext("memEx")}"}>
|
||||||
<%= assigns[:page_title] || gettext("memEx") %>
|
<%= assigns[:page_title] || gettext("memEx") %>
|
||||||
</.live_title>
|
</.live_title>
|
||||||
<link phx-track-static rel="stylesheet" href={Routes.static_path(@conn, "/css/app.css")} />
|
<link phx-track-static rel="stylesheet" href={~p"/css/app.css"} />
|
||||||
<script
|
<script defer phx-track-static type="text/javascript" src={~p"/js/app.js"}>
|
||||||
defer
|
|
||||||
phx-track-static
|
|
||||||
type="text/javascript"
|
|
||||||
src={Routes.static_path(@conn, "/js/app.js")}
|
|
||||||
>
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
|
|
@ -92,7 +92,7 @@ defmodule MemexWeb.Components.NotesTableComponent do
|
|||||||
assigns = %{slug: slug}
|
assigns = %{slug: slug}
|
||||||
|
|
||||||
slug_block = ~H"""
|
slug_block = ~H"""
|
||||||
<.link navigate={Routes.note_show_path(Endpoint, :show, @slug)} class="link">
|
<.link navigate={~p"/note/#{@slug}"} class="link">
|
||||||
<%= @slug %>
|
<%= @slug %>
|
||||||
</.link>
|
</.link>
|
||||||
"""
|
"""
|
||||||
@ -105,7 +105,7 @@ defmodule MemexWeb.Components.NotesTableComponent do
|
|||||||
|
|
||||||
~H"""
|
~H"""
|
||||||
<div class="flex flex-wrap justify-center space-x-1">
|
<div class="flex flex-wrap justify-center space-x-1">
|
||||||
<.link :for={tag <- @tags} patch={Routes.note_index_path(Endpoint, :search, tag)} class="link">
|
<.link :for={tag <- @tags} patch={~p"/notes/#{tag}"} class="link">
|
||||||
<%= tag %>
|
<%= tag %>
|
||||||
</.link>
|
</.link>
|
||||||
</div>
|
</div>
|
||||||
|
@ -93,7 +93,7 @@ defmodule MemexWeb.Components.PipelinesTableComponent do
|
|||||||
assigns = %{slug: slug}
|
assigns = %{slug: slug}
|
||||||
|
|
||||||
slug_block = ~H"""
|
slug_block = ~H"""
|
||||||
<.link navigate={Routes.pipeline_show_path(Endpoint, :show, @slug)} class="link">
|
<.link navigate={~p"/pipeline/#{@slug}"} class="link">
|
||||||
<%= @slug %>
|
<%= @slug %>
|
||||||
</.link>
|
</.link>
|
||||||
"""
|
"""
|
||||||
@ -118,11 +118,7 @@ defmodule MemexWeb.Components.PipelinesTableComponent do
|
|||||||
|
|
||||||
~H"""
|
~H"""
|
||||||
<div class="flex flex-wrap justify-center space-x-1">
|
<div class="flex flex-wrap justify-center space-x-1">
|
||||||
<.link
|
<.link :for={tag <- @tags} patch={~p"/pipelines/#{tag}"} class="link">
|
||||||
:for={tag <- @tags}
|
|
||||||
patch={Routes.pipeline_index_path(Endpoint, :search, tag)}
|
|
||||||
class="link"
|
|
||||||
>
|
|
||||||
<%= tag %>
|
<%= tag %>
|
||||||
</.link>
|
</.link>
|
||||||
</div>
|
</div>
|
||||||
|
@ -6,7 +6,8 @@ defmodule MemexWeb.EmailController do
|
|||||||
use MemexWeb, :controller
|
use MemexWeb, :controller
|
||||||
alias Memex.Accounts.User
|
alias Memex.Accounts.User
|
||||||
|
|
||||||
plug :put_layout, {MemexWeb.LayoutView, :email}
|
plug :put_root_layout, html: {MemexWeb.Layouts, :email_html}
|
||||||
|
plug :put_layout, false
|
||||||
|
|
||||||
@sample_assigns %{
|
@sample_assigns %{
|
||||||
email: %{subject: "Example subject"},
|
email: %{subject: "Example subject"},
|
||||||
@ -18,6 +19,6 @@ defmodule MemexWeb.EmailController do
|
|||||||
Debug route used to preview emails
|
Debug route used to preview emails
|
||||||
"""
|
"""
|
||||||
def preview(conn, %{"id" => template}) do
|
def preview(conn, %{"id" => template}) do
|
||||||
render(conn, "#{template |> to_string()}.html", @sample_assigns)
|
render(conn, String.to_existing_atom(template), @sample_assigns)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
9
lib/memex_web/controllers/email_html.ex
Normal file
9
lib/memex_web/controllers/email_html.ex
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
defmodule MemexWeb.EmailHTML do
|
||||||
|
@moduledoc """
|
||||||
|
Renders email templates
|
||||||
|
"""
|
||||||
|
|
||||||
|
use MemexWeb, :html
|
||||||
|
|
||||||
|
embed_templates "email_html/*"
|
||||||
|
end
|
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
<a style="margin: 1em; color: rgb(31, 31, 31);" href={@url}><%= @url %></a>
|
<a style="margin: 1em; color: rgb(161, 161, 170);" href={@url}><%= @url %></a>
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
@ -9,4 +9,4 @@
|
|||||||
|
|
||||||
<%= dgettext("emails",
|
<%= dgettext("emails",
|
||||||
"If you didn't create an account at %{url}, please ignore this.",
|
"If you didn't create an account at %{url}, please ignore this.",
|
||||||
url: Routes.live_url(Endpoint, HomeLive)) %>
|
url: ~p"/") %>
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
<a style="margin: 1em; color: rgb(31, 31, 31);" href={@url}><%= @url %></a>
|
<a style="margin: 1em; color: rgb(161, 161, 170);" href={@url}><%= @url %></a>
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
@ -7,4 +7,4 @@
|
|||||||
|
|
||||||
<%= dgettext("emails",
|
<%= dgettext("emails",
|
||||||
"If you didn't request this change from %{url}, please ignore this.",
|
"If you didn't request this change from %{url}, please ignore this.",
|
||||||
url: Routes.live_url(Endpoint, HomeLive)) %>
|
url: ~p"/") %>
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
<a style="margin: 1em; color: rgb(31, 31, 31);" href={@url}><%= @url %></a>
|
<a style="margin: 1em; color: rgb(161, 161, 170);" href={@url}><%= @url %></a>
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
@ -7,4 +7,4 @@
|
|||||||
|
|
||||||
<%= dgettext("emails",
|
<%= dgettext("emails",
|
||||||
"If you didn't request this change from %{url}, please ignore this.",
|
"If you didn't request this change from %{url}, please ignore this.",
|
||||||
url: Routes.live_url(Endpoint, HomeLive)) %>
|
url: ~p"/") %>
|
@ -1,15 +1,16 @@
|
|||||||
defmodule MemexWeb.ErrorView do
|
defmodule MemexWeb.ErrorHTML do
|
||||||
use MemexWeb, :view
|
use MemexWeb, :html
|
||||||
alias MemexWeb.HomeLive
|
|
||||||
|
|
||||||
def template_not_found(error_path, _assigns) do
|
embed_templates "error_html/*"
|
||||||
|
|
||||||
|
def render(template, _assigns) do
|
||||||
error_string =
|
error_string =
|
||||||
case error_path do
|
case template do
|
||||||
"404.html" -> dgettext("errors", "not found")
|
"404.html" -> dgettext("errors", "not found")
|
||||||
"401.html" -> dgettext("errors", "unauthorized")
|
"401.html" -> dgettext("errors", "unauthorized")
|
||||||
_other_path -> dgettext("errors", "internal server error")
|
_other_path -> dgettext("errors", "internal server error")
|
||||||
end
|
end
|
||||||
|
|
||||||
render("error.html", %{error_string: error_string})
|
error(%{error_string: error_string})
|
||||||
end
|
end
|
||||||
end
|
end
|
@ -24,10 +24,7 @@
|
|||||||
|
|
||||||
<hr class="w-full hr" />
|
<hr class="w-full hr" />
|
||||||
|
|
||||||
<.link
|
<.link href={~p"/"} class="link title text-primary-400 text-lg">
|
||||||
href={Routes.live_path(Endpoint, HomeLive)}
|
|
||||||
class="link title text-primary-400 text-lg"
|
|
||||||
>
|
|
||||||
<%= dgettext("errors", "go back home") %>
|
<%= dgettext("errors", "go back home") %>
|
||||||
</.link>
|
</.link>
|
||||||
</div>
|
</div>
|
14
lib/memex_web/controllers/error_json.ex
Normal file
14
lib/memex_web/controllers/error_json.ex
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
defmodule MemexWeb.ErrorJSON do
|
||||||
|
import MemexWeb.Gettext
|
||||||
|
|
||||||
|
def render(template, _assigns) do
|
||||||
|
error_string =
|
||||||
|
case template do
|
||||||
|
"404.json" -> dgettext("errors", "not found")
|
||||||
|
"401.json" -> dgettext("errors", "unauthorized")
|
||||||
|
_other_path -> dgettext("errors", "internal server error")
|
||||||
|
end
|
||||||
|
|
||||||
|
%{errors: %{detail: error_string}}
|
||||||
|
end
|
||||||
|
end
|
@ -1,11 +0,0 @@
|
|||||||
defmodule MemexWeb.HomeController do
|
|
||||||
@moduledoc """
|
|
||||||
Controller for home page
|
|
||||||
"""
|
|
||||||
|
|
||||||
use MemexWeb, :controller
|
|
||||||
|
|
||||||
def index(conn, _params) do
|
|
||||||
render(conn, "index.html")
|
|
||||||
end
|
|
||||||
end
|
|
5
lib/memex_web/controllers/home_html.ex
Normal file
5
lib/memex_web/controllers/home_html.ex
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
defmodule MemexWeb.HomeHTML do
|
||||||
|
use MemexWeb, :html
|
||||||
|
|
||||||
|
embed_templates "home_html/*"
|
||||||
|
end
|
@ -3,12 +3,11 @@ defmodule MemexWeb.UserAuth do
|
|||||||
Functions for user session and authentication
|
Functions for user session and authentication
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
use MemexWeb, :verified_routes
|
||||||
import Plug.Conn
|
import Plug.Conn
|
||||||
import Phoenix.Controller
|
import Phoenix.Controller
|
||||||
import MemexWeb.Gettext
|
import MemexWeb.Gettext
|
||||||
alias Memex.{Accounts, Accounts.User}
|
alias Memex.{Accounts, Accounts.User}
|
||||||
alias MemexWeb.HomeLive
|
|
||||||
alias MemexWeb.Router.Helpers, as: Routes
|
|
||||||
|
|
||||||
# Make the remember me cookie valid for 60 days.
|
# Make the remember me cookie valid for 60 days.
|
||||||
# If you want bump or reduce this value, also change
|
# If you want bump or reduce this value, also change
|
||||||
@ -39,7 +38,7 @@ defmodule MemexWeb.UserAuth do
|
|||||||
dgettext("errors", "You must confirm your account and log in to access this page.")
|
dgettext("errors", "You must confirm your account and log in to access this page.")
|
||||||
)
|
)
|
||||||
|> maybe_store_return_to()
|
|> maybe_store_return_to()
|
||||||
|> redirect(to: Routes.user_session_path(conn, :new))
|
|> redirect(to: ~p"/users/log_in")
|
||||||
|> halt()
|
|> halt()
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -49,8 +48,7 @@ defmodule MemexWeb.UserAuth do
|
|||||||
|
|
||||||
conn
|
conn
|
||||||
|> renew_session()
|
|> renew_session()
|
||||||
|> put_session(:user_token, token)
|
|> put_token_in_session(token)
|
||||||
|> put_session(:live_socket_id, "users_sessions:#{Base.url_encode64(token)}")
|
|
||||||
|> maybe_write_remember_me_cookie(token, params)
|
|> maybe_write_remember_me_cookie(token, params)
|
||||||
|> redirect(to: user_return_to || signed_in_path(conn))
|
|> redirect(to: user_return_to || signed_in_path(conn))
|
||||||
end
|
end
|
||||||
@ -96,7 +94,7 @@ defmodule MemexWeb.UserAuth do
|
|||||||
"""
|
"""
|
||||||
def log_out_user(conn) do
|
def log_out_user(conn) do
|
||||||
user_token = get_session(conn, :user_token)
|
user_token = get_session(conn, :user_token)
|
||||||
user_token && Accounts.delete_session_token(user_token)
|
user_token && Accounts.delete_user_session_token(user_token)
|
||||||
|
|
||||||
if live_socket_id = get_session(conn, :live_socket_id) do
|
if live_socket_id = get_session(conn, :live_socket_id) do
|
||||||
MemexWeb.Endpoint.broadcast(live_socket_id, "disconnect", %{})
|
MemexWeb.Endpoint.broadcast(live_socket_id, "disconnect", %{})
|
||||||
@ -105,7 +103,7 @@ defmodule MemexWeb.UserAuth do
|
|||||||
conn
|
conn
|
||||||
|> renew_session()
|
|> renew_session()
|
||||||
|> delete_resp_cookie(@remember_me_cookie)
|
|> delete_resp_cookie(@remember_me_cookie)
|
||||||
|> redirect(to: "/")
|
|> redirect(to: ~p"/")
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
@ -119,19 +117,110 @@ defmodule MemexWeb.UserAuth do
|
|||||||
end
|
end
|
||||||
|
|
||||||
defp ensure_user_token(conn) do
|
defp ensure_user_token(conn) do
|
||||||
if user_token = get_session(conn, :user_token) do
|
if token = get_session(conn, :user_token) do
|
||||||
{user_token, conn}
|
{token, conn}
|
||||||
else
|
else
|
||||||
conn = fetch_cookies(conn, signed: [@remember_me_cookie])
|
conn = fetch_cookies(conn, signed: [@remember_me_cookie])
|
||||||
|
|
||||||
if user_token = conn.cookies[@remember_me_cookie] do
|
if token = conn.cookies[@remember_me_cookie] do
|
||||||
{user_token, put_session(conn, :user_token, user_token)}
|
{token, put_token_in_session(conn, token)}
|
||||||
else
|
else
|
||||||
{nil, conn}
|
{nil, conn}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@doc """
|
||||||
|
Handles mounting and authenticating the current_user in LiveViews.
|
||||||
|
|
||||||
|
## `on_mount` arguments
|
||||||
|
|
||||||
|
* `:mount_current_user` - Assigns current_user
|
||||||
|
to socket assigns based on user_token, or nil if
|
||||||
|
there's no user_token or no matching user.
|
||||||
|
|
||||||
|
* `:ensure_authenticated` - Authenticates the user from the session,
|
||||||
|
and assigns the current_user to socket assigns based
|
||||||
|
on user_token.
|
||||||
|
Redirects to login page if there's no logged user.
|
||||||
|
|
||||||
|
* `:redirect_if_user_is_authenticated` - Authenticates the user from the session.
|
||||||
|
Redirects to signed_in_path if there's a logged user.
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
Use the `on_mount` lifecycle macro in LiveViews to mount or authenticate
|
||||||
|
the current_user:
|
||||||
|
|
||||||
|
defmodule MemexWeb.PageLive do
|
||||||
|
use MemexWeb, :live_view
|
||||||
|
|
||||||
|
on_mount {MemexWeb.UserAuth, :mount_current_user}
|
||||||
|
...
|
||||||
|
end
|
||||||
|
|
||||||
|
Or use the `live_session` of your router to invoke the on_mount callback:
|
||||||
|
|
||||||
|
live_session :authenticated, on_mount: [{MemexWeb.UserAuth, :ensure_authenticated}] do
|
||||||
|
live "/profile", ProfileLive, :index
|
||||||
|
end
|
||||||
|
"""
|
||||||
|
def on_mount(:mount_current_user, _params, session, socket) do
|
||||||
|
{:cont, mount_current_user(session, socket)}
|
||||||
|
end
|
||||||
|
|
||||||
|
def on_mount(:ensure_authenticated, _params, session, socket) do
|
||||||
|
socket = mount_current_user(session, socket)
|
||||||
|
|
||||||
|
if socket.assigns.current_user do
|
||||||
|
{:cont, socket}
|
||||||
|
else
|
||||||
|
error_flash = dgettext("errors", "You must log in to access this page.")
|
||||||
|
|
||||||
|
socket =
|
||||||
|
socket
|
||||||
|
|> Phoenix.LiveView.put_flash(:error, error_flash)
|
||||||
|
|> Phoenix.LiveView.redirect(to: ~p"/users/log_in")
|
||||||
|
|
||||||
|
{:halt, socket}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def on_mount(:ensure_admin, _params, session, socket) do
|
||||||
|
socket = mount_current_user(session, socket)
|
||||||
|
|
||||||
|
if socket.assigns.current_user && socket.assigns.current_user.role == :admin do
|
||||||
|
{:cont, socket}
|
||||||
|
else
|
||||||
|
error_flash = dgettext("errors", "You must log in as an administrator to access this page.")
|
||||||
|
|
||||||
|
socket =
|
||||||
|
socket
|
||||||
|
|> Phoenix.LiveView.put_flash(:error, error_flash)
|
||||||
|
|> Phoenix.LiveView.redirect(to: ~p"/users/log_in")
|
||||||
|
|
||||||
|
{:halt, socket}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def on_mount(:redirect_if_user_is_authenticated, _params, session, socket) do
|
||||||
|
socket = mount_current_user(session, socket)
|
||||||
|
|
||||||
|
if socket.assigns.current_user do
|
||||||
|
{:halt, Phoenix.LiveView.redirect(socket, to: signed_in_path(socket))}
|
||||||
|
else
|
||||||
|
{:cont, socket}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp mount_current_user(session, socket) do
|
||||||
|
Phoenix.Component.assign_new(socket, :current_user, fn ->
|
||||||
|
if user_token = session["user_token"] do
|
||||||
|
Accounts.get_user_by_session_token(user_token)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
Used for routes that require the user to not be authenticated.
|
Used for routes that require the user to not be authenticated.
|
||||||
"""
|
"""
|
||||||
@ -161,7 +250,7 @@ defmodule MemexWeb.UserAuth do
|
|||||||
dgettext("errors", "You must confirm your account and log in to access this page.")
|
dgettext("errors", "You must confirm your account and log in to access this page.")
|
||||||
)
|
)
|
||||||
|> maybe_store_return_to()
|
|> maybe_store_return_to()
|
||||||
|> redirect(to: Routes.user_session_path(conn, :new))
|
|> redirect(to: ~p"/users/log_in")
|
||||||
|> halt()
|
|> halt()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -176,16 +265,34 @@ defmodule MemexWeb.UserAuth do
|
|||||||
conn
|
conn
|
||||||
|> put_flash(:error, dgettext("errors", "You are not authorized to view this page."))
|
|> put_flash(:error, dgettext("errors", "You are not authorized to view this page."))
|
||||||
|> maybe_store_return_to()
|
|> maybe_store_return_to()
|
||||||
|> redirect(to: Routes.live_path(conn, HomeLive))
|
|> redirect(to: ~p"/")
|
||||||
|> halt()
|
|> halt()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def put_user_locale(%{assigns: %{current_user: %{locale: locale}}} = conn, _opts) do
|
||||||
|
default = Application.fetch_env!(:gettext, :default_locale)
|
||||||
|
Gettext.put_locale(locale || default)
|
||||||
|
conn |> put_session(:locale, locale || default)
|
||||||
|
end
|
||||||
|
|
||||||
|
def put_user_locale(conn, _opts) do
|
||||||
|
default = Application.fetch_env!(:gettext, :default_locale)
|
||||||
|
Gettext.put_locale(default)
|
||||||
|
conn |> put_session(:locale, default)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp put_token_in_session(conn, token) do
|
||||||
|
conn
|
||||||
|
|> put_session(:user_token, token)
|
||||||
|
|> put_session(:live_socket_id, "users_sessions:#{Base.url_encode64(token)}")
|
||||||
|
end
|
||||||
|
|
||||||
defp maybe_store_return_to(%{method: "GET"} = conn) do
|
defp maybe_store_return_to(%{method: "GET"} = conn) do
|
||||||
put_session(conn, :user_return_to, current_path(conn))
|
put_session(conn, :user_return_to, current_path(conn))
|
||||||
end
|
end
|
||||||
|
|
||||||
defp maybe_store_return_to(conn), do: conn
|
defp maybe_store_return_to(conn), do: conn
|
||||||
|
|
||||||
defp signed_in_path(_conn), do: "/"
|
defp signed_in_path(_conn), do: ~p"/"
|
||||||
end
|
end
|
||||||
|
@ -5,14 +5,14 @@ defmodule MemexWeb.UserConfirmationController do
|
|||||||
alias Memex.Accounts
|
alias Memex.Accounts
|
||||||
|
|
||||||
def new(conn, _params) do
|
def new(conn, _params) do
|
||||||
render(conn, "new.html", page_title: gettext("Confirm your account"))
|
render(conn, :new, page_title: gettext("Confirm your account"))
|
||||||
end
|
end
|
||||||
|
|
||||||
def create(conn, %{"user" => %{"email" => email}}) do
|
def create(conn, %{"user" => %{"email" => email}}) do
|
||||||
if user = Accounts.get_user_by_email(email) do
|
if user = Accounts.get_user_by_email(email) do
|
||||||
Accounts.deliver_user_confirmation_instructions(
|
Accounts.deliver_user_confirmation_instructions(
|
||||||
user,
|
user,
|
||||||
&Routes.user_confirmation_url(conn, :confirm, &1)
|
fn token -> url(MemexWeb.Endpoint, ~p"/users/confirm/#{token}") end
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
6
lib/memex_web/controllers/user_confirmation_html.ex
Normal file
6
lib/memex_web/controllers/user_confirmation_html.ex
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
defmodule MemexWeb.UserConfirmationHTML do
|
||||||
|
use MemexWeb, :html
|
||||||
|
alias Memex.Accounts
|
||||||
|
|
||||||
|
embed_templates "user_confirmation_html/*"
|
||||||
|
end
|
@ -7,7 +7,7 @@
|
|||||||
:let={f}
|
:let={f}
|
||||||
for={%{}}
|
for={%{}}
|
||||||
as={:user}
|
as={:user}
|
||||||
action={Routes.user_confirmation_path(@conn, :create)}
|
action={~p"/users/confirm"}
|
||||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
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-400") %>
|
<%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-400") %>
|
||||||
@ -21,14 +21,10 @@
|
|||||||
<hr class="hr" />
|
<hr class="hr" />
|
||||||
|
|
||||||
<div class="flex flex-row justify-center items-center space-x-4">
|
<div class="flex flex-row justify-center items-center space-x-4">
|
||||||
<.link
|
<.link :if={Accounts.allow_registration?()} href={~p"/users/register"} class="btn btn-primary">
|
||||||
:if={Accounts.allow_registration?()}
|
|
||||||
href={Routes.user_registration_path(@conn, :new)}
|
|
||||||
class="btn btn-primary"
|
|
||||||
>
|
|
||||||
<%= dgettext("actions", "register") %>
|
<%= dgettext("actions", "register") %>
|
||||||
</.link>
|
</.link>
|
||||||
<.link href={Routes.user_session_path(@conn, :new)} class="btn btn-primary">
|
<.link href={~p"/users/log_in"} class="btn btn-primary">
|
||||||
<%= dgettext("actions", "log in") %>
|
<%= dgettext("actions", "log in") %>
|
||||||
</.link>
|
</.link>
|
||||||
</div>
|
</div>
|
@ -2,7 +2,6 @@ defmodule MemexWeb.UserRegistrationController do
|
|||||||
use MemexWeb, :controller
|
use MemexWeb, :controller
|
||||||
import MemexWeb.Gettext
|
import MemexWeb.Gettext
|
||||||
alias Memex.{Accounts, Accounts.Invites}
|
alias Memex.{Accounts, Accounts.Invites}
|
||||||
alias MemexWeb.HomeLive
|
|
||||||
|
|
||||||
def new(conn, %{"invite" => invite_token}) do
|
def new(conn, %{"invite" => invite_token}) do
|
||||||
if Invites.valid_invite_token?(invite_token) do
|
if Invites.valid_invite_token?(invite_token) do
|
||||||
@ -10,7 +9,7 @@ defmodule MemexWeb.UserRegistrationController do
|
|||||||
else
|
else
|
||||||
conn
|
conn
|
||||||
|> put_flash(:error, dgettext("errors", "Sorry, this invite was not found or expired"))
|
|> put_flash(:error, dgettext("errors", "Sorry, this invite was not found or expired"))
|
||||||
|> redirect(to: Routes.live_path(Endpoint, HomeLive))
|
|> redirect(to: ~p"/")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -20,13 +19,13 @@ defmodule MemexWeb.UserRegistrationController do
|
|||||||
else
|
else
|
||||||
conn
|
conn
|
||||||
|> put_flash(:error, dgettext("errors", "Sorry, public registration is disabled"))
|
|> put_flash(:error, dgettext("errors", "Sorry, public registration is disabled"))
|
||||||
|> redirect(to: Routes.live_path(Endpoint, HomeLive))
|
|> redirect(to: ~p"/")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# renders new user registration page
|
# renders new user registration page
|
||||||
defp render_new(conn, invite_token \\ nil) do
|
defp render_new(conn, invite_token \\ nil) do
|
||||||
render(conn, "new.html",
|
render(conn, :new,
|
||||||
changeset: Accounts.change_user_registration(),
|
changeset: Accounts.change_user_registration(),
|
||||||
invite_token: invite_token,
|
invite_token: invite_token,
|
||||||
page_title: gettext("register")
|
page_title: gettext("register")
|
||||||
@ -39,7 +38,7 @@ defmodule MemexWeb.UserRegistrationController do
|
|||||||
else
|
else
|
||||||
conn
|
conn
|
||||||
|> put_flash(:error, dgettext("errors", "Sorry, this invite was not found or expired"))
|
|> put_flash(:error, dgettext("errors", "Sorry, this invite was not found or expired"))
|
||||||
|> redirect(to: Routes.live_path(Endpoint, HomeLive))
|
|> redirect(to: ~p"/")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -49,7 +48,7 @@ defmodule MemexWeb.UserRegistrationController do
|
|||||||
else
|
else
|
||||||
conn
|
conn
|
||||||
|> put_flash(:error, dgettext("errors", "Sorry, public registration is disabled"))
|
|> put_flash(:error, dgettext("errors", "Sorry, public registration is disabled"))
|
||||||
|> redirect(to: Routes.live_path(Endpoint, HomeLive))
|
|> redirect(to: ~p"/")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -58,17 +57,17 @@ defmodule MemexWeb.UserRegistrationController do
|
|||||||
{:ok, user} ->
|
{:ok, user} ->
|
||||||
Accounts.deliver_user_confirmation_instructions(
|
Accounts.deliver_user_confirmation_instructions(
|
||||||
user,
|
user,
|
||||||
&Routes.user_confirmation_url(conn, :confirm, &1)
|
fn token -> url(MemexWeb.Endpoint, ~p"/users/confirm/#{token}") end
|
||||||
)
|
)
|
||||||
|
|
||||||
conn
|
conn
|
||||||
|> put_flash(:info, dgettext("prompts", "please check your email to verify your account"))
|
|> put_flash(:info, dgettext("prompts", "please check your email to verify your account"))
|
||||||
|> redirect(to: Routes.user_session_path(Endpoint, :new))
|
|> redirect(to: ~p"/users/log_in")
|
||||||
|
|
||||||
{:error, :invalid_token} ->
|
{:error, :invalid_token} ->
|
||||||
conn
|
conn
|
||||||
|> put_flash(:error, dgettext("errors", "sorry, this invite was not found or expired"))
|
|> put_flash(:error, dgettext("errors", "sorry, this invite was not found or expired"))
|
||||||
|> redirect(to: Routes.live_path(Endpoint, HomeLive))
|
|> redirect(to: ~p"/")
|
||||||
|
|
||||||
{:error, %Ecto.Changeset{} = changeset} ->
|
{:error, %Ecto.Changeset{} = changeset} ->
|
||||||
conn |> render("new.html", changeset: changeset, invite_token: invite_token)
|
conn |> render("new.html", changeset: changeset, invite_token: invite_token)
|
||||||
|
5
lib/memex_web/controllers/user_registration_html.ex
Normal file
5
lib/memex_web/controllers/user_registration_html.ex
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
defmodule MemexWeb.UserRegistrationHTML do
|
||||||
|
use MemexWeb, :html
|
||||||
|
|
||||||
|
embed_templates "user_registration_html/*"
|
||||||
|
end
|
@ -6,7 +6,7 @@
|
|||||||
<.form
|
<.form
|
||||||
:let={f}
|
:let={f}
|
||||||
for={@changeset}
|
for={@changeset}
|
||||||
action={Routes.user_registration_path(@conn, :create)}
|
action={~p"/users/register"}
|
||||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
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">
|
<p :if={@changeset.action && not @changeset.valid?()} class="alert alert-danger col-span-3">
|
||||||
@ -40,10 +40,10 @@
|
|||||||
<hr class="hr" />
|
<hr class="hr" />
|
||||||
|
|
||||||
<div class="flex flex-row justify-center items-center space-x-4">
|
<div class="flex flex-row justify-center items-center space-x-4">
|
||||||
<.link href={Routes.user_session_path(@conn, :new)} class="btn btn-primary">
|
<.link href={~p"/users/log_in"} class="btn btn-primary">
|
||||||
<%= dgettext("actions", "log in") %>
|
<%= dgettext("actions", "log in") %>
|
||||||
</.link>
|
</.link>
|
||||||
<.link href={Routes.user_reset_password_path(@conn, :new)} class="btn btn-primary">
|
<.link href={~p"/users/reset_password"} class="btn btn-primary">
|
||||||
<%= dgettext("actions", "forgot your password?") %>
|
<%= dgettext("actions", "forgot your password?") %>
|
||||||
</.link>
|
</.link>
|
||||||
</div>
|
</div>
|
@ -6,14 +6,14 @@ defmodule MemexWeb.UserResetPasswordController do
|
|||||||
plug :get_user_by_reset_password_token when action in [:edit, :update]
|
plug :get_user_by_reset_password_token when action in [:edit, :update]
|
||||||
|
|
||||||
def new(conn, _params) do
|
def new(conn, _params) do
|
||||||
render(conn, "new.html", page_title: gettext("forgot your password?"))
|
render(conn, :new, page_title: gettext("forgot your password?"))
|
||||||
end
|
end
|
||||||
|
|
||||||
def create(conn, %{"user" => %{"email" => email}}) do
|
def create(conn, %{"user" => %{"email" => email}}) do
|
||||||
if user = Accounts.get_user_by_email(email) do
|
if user = Accounts.get_user_by_email(email) do
|
||||||
Accounts.deliver_user_reset_password_instructions(
|
Accounts.deliver_user_reset_password_instructions(
|
||||||
user,
|
user,
|
||||||
&Routes.user_reset_password_url(conn, :edit, &1)
|
fn token -> url(MemexWeb.Endpoint, ~p"/users/reset_password/#{token}") end
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ defmodule MemexWeb.UserResetPasswordController do
|
|||||||
end
|
end
|
||||||
|
|
||||||
def edit(conn, _params) do
|
def edit(conn, _params) do
|
||||||
render(conn, "edit.html",
|
render(conn, :edit,
|
||||||
changeset: Accounts.change_user_password(conn.assigns.user),
|
changeset: Accounts.change_user_password(conn.assigns.user),
|
||||||
page_title: gettext("Reset your password")
|
page_title: gettext("Reset your password")
|
||||||
)
|
)
|
||||||
@ -44,10 +44,10 @@ defmodule MemexWeb.UserResetPasswordController do
|
|||||||
{:ok, _} ->
|
{:ok, _} ->
|
||||||
conn
|
conn
|
||||||
|> put_flash(:info, dgettext("prompts", "Password reset successfully."))
|
|> put_flash(:info, dgettext("prompts", "Password reset successfully."))
|
||||||
|> redirect(to: Routes.user_session_path(conn, :new))
|
|> redirect(to: ~p"/users/log_in")
|
||||||
|
|
||||||
{:error, changeset} ->
|
{:error, changeset} ->
|
||||||
render(conn, "edit.html", changeset: changeset)
|
render(conn, :edit, changeset: changeset)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
6
lib/memex_web/controllers/user_reset_password_html.ex
Normal file
6
lib/memex_web/controllers/user_reset_password_html.ex
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
defmodule MemexWeb.UserResetPasswordHTML do
|
||||||
|
use MemexWeb, :html
|
||||||
|
alias Memex.Accounts
|
||||||
|
|
||||||
|
embed_templates "user_reset_password_html/*"
|
||||||
|
end
|
@ -6,7 +6,7 @@
|
|||||||
<.form
|
<.form
|
||||||
:let={f}
|
:let={f}
|
||||||
for={@changeset}
|
for={@changeset}
|
||||||
action={Routes.user_reset_password_path(@conn, :update, @token)}
|
action={~p"/users/reset_password/#{@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"
|
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">
|
<p :if={@changeset.action && not @changeset.valid?()} class="alert alert-danger col-span-3">
|
||||||
@ -34,14 +34,10 @@
|
|||||||
<hr class="hr" />
|
<hr class="hr" />
|
||||||
|
|
||||||
<div class="flex flex-row justify-center items-center space-x-4">
|
<div class="flex flex-row justify-center items-center space-x-4">
|
||||||
<.link
|
<.link :if={Accounts.allow_registration?()} href={~p"/users/register"} class="btn btn-primary">
|
||||||
:if={Accounts.allow_registration?()}
|
|
||||||
href={Routes.user_registration_path(@conn, :new)}
|
|
||||||
class="btn btn-primary"
|
|
||||||
>
|
|
||||||
<%= dgettext("actions", "register") %>
|
<%= dgettext("actions", "register") %>
|
||||||
</.link>
|
</.link>
|
||||||
<.link href={Routes.user_session_path(@conn, :new)} class="btn btn-primary">
|
<.link href={~p"/users/log_in"} class="btn btn-primary">
|
||||||
<%= dgettext("actions", "log in") %>
|
<%= dgettext("actions", "log in") %>
|
||||||
</.link>
|
</.link>
|
||||||
</div>
|
</div>
|
@ -7,7 +7,7 @@
|
|||||||
:let={f}
|
:let={f}
|
||||||
for={%{}}
|
for={%{}}
|
||||||
as={:user}
|
as={:user}
|
||||||
action={Routes.user_reset_password_path(@conn, :create)}
|
action={~p"/users/reset_password"}
|
||||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
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-400") %>
|
<%= label(f, :email, gettext("email"), class: "title text-lg text-primary-400") %>
|
||||||
@ -21,14 +21,10 @@
|
|||||||
<hr class="hr" />
|
<hr class="hr" />
|
||||||
|
|
||||||
<div class="flex flex-row justify-center items-center space-x-4">
|
<div class="flex flex-row justify-center items-center space-x-4">
|
||||||
<.link
|
<.link :if={Accounts.allow_registration?()} href={~p"/users/register"} class="btn btn-primary">
|
||||||
:if={Accounts.allow_registration?()}
|
|
||||||
href={Routes.user_registration_path(@conn, :new)}
|
|
||||||
class="btn btn-primary"
|
|
||||||
>
|
|
||||||
<%= dgettext("actions", "register") %>
|
<%= dgettext("actions", "register") %>
|
||||||
</.link>
|
</.link>
|
||||||
<.link href={Routes.user_session_path(@conn, :new)} class="btn btn-primary">
|
<.link href={~p"/users/log_in"} class="btn btn-primary">
|
||||||
<%= dgettext("actions", "log in") %>
|
<%= dgettext("actions", "log in") %>
|
||||||
</.link>
|
</.link>
|
||||||
</div>
|
</div>
|
@ -5,7 +5,7 @@ defmodule MemexWeb.UserSessionController do
|
|||||||
alias MemexWeb.UserAuth
|
alias MemexWeb.UserAuth
|
||||||
|
|
||||||
def new(conn, _params) do
|
def new(conn, _params) do
|
||||||
render(conn, "new.html", error_message: nil, page_title: gettext("log in"))
|
render(conn, :new, error_message: nil, page_title: gettext("log in"))
|
||||||
end
|
end
|
||||||
|
|
||||||
def create(conn, %{"user" => user_params}) do
|
def create(conn, %{"user" => user_params}) do
|
||||||
@ -14,7 +14,7 @@ defmodule MemexWeb.UserSessionController do
|
|||||||
if user = Accounts.get_user_by_email_and_password(email, password) do
|
if user = Accounts.get_user_by_email_and_password(email, password) do
|
||||||
UserAuth.log_in_user(conn, user, user_params)
|
UserAuth.log_in_user(conn, user, user_params)
|
||||||
else
|
else
|
||||||
render(conn, "new.html", error_message: dgettext("errors", "Invalid email or password"))
|
render(conn, :new, error_message: dgettext("errors", "Invalid email or password"))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
6
lib/memex_web/controllers/user_session_html.ex
Normal file
6
lib/memex_web/controllers/user_session_html.ex
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
defmodule MemexWeb.UserSessionHTML do
|
||||||
|
use MemexWeb, :html
|
||||||
|
alias Memex.Accounts
|
||||||
|
|
||||||
|
embed_templates "user_session_html/*"
|
||||||
|
end
|
@ -6,8 +6,8 @@
|
|||||||
<.form
|
<.form
|
||||||
:let={f}
|
:let={f}
|
||||||
for={@conn}
|
for={@conn}
|
||||||
action={Routes.user_session_path(@conn, :create)}
|
action={~p"/users/log_in"}
|
||||||
as="user"
|
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"
|
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">
|
<p :if={@error_message} class="alert alert-danger col-span-3">
|
||||||
@ -31,14 +31,10 @@
|
|||||||
<hr class="hr" />
|
<hr class="hr" />
|
||||||
|
|
||||||
<div class="flex flex-row justify-center items-center space-x-4">
|
<div class="flex flex-row justify-center items-center space-x-4">
|
||||||
<.link
|
<.link :if={Accounts.allow_registration?()} href={~p"/users/register"} class="btn btn-primary">
|
||||||
:if={Accounts.allow_registration?()}
|
|
||||||
href={Routes.user_registration_path(@conn, :new)}
|
|
||||||
class="btn btn-primary"
|
|
||||||
>
|
|
||||||
<%= dgettext("actions", "register") %>
|
<%= dgettext("actions", "register") %>
|
||||||
</.link>
|
</.link>
|
||||||
<.link href={Routes.user_reset_password_path(@conn, :new)} class="btn btn-primary">
|
<.link href={~p"/users/reset_password"} class="btn btn-primary">
|
||||||
<%= dgettext("actions", "forgot your password?") %>
|
<%= dgettext("actions", "forgot your password?") %>
|
||||||
</.link>
|
</.link>
|
||||||
</div>
|
</div>
|
@ -2,12 +2,12 @@ defmodule MemexWeb.UserSettingsController do
|
|||||||
use MemexWeb, :controller
|
use MemexWeb, :controller
|
||||||
import MemexWeb.Gettext
|
import MemexWeb.Gettext
|
||||||
alias Memex.Accounts
|
alias Memex.Accounts
|
||||||
alias MemexWeb.{HomeLive, UserAuth}
|
alias MemexWeb.UserAuth
|
||||||
|
|
||||||
plug :assign_email_and_password_changesets
|
plug :assign_email_and_password_changesets
|
||||||
|
|
||||||
def edit(conn, _params) do
|
def edit(conn, _params) do
|
||||||
render(conn, "edit.html", page_title: gettext("settings"))
|
render(conn, :edit, page_title: gettext("settings"))
|
||||||
end
|
end
|
||||||
|
|
||||||
def update(%{assigns: %{current_user: user}} = conn, %{
|
def update(%{assigns: %{current_user: user}} = conn, %{
|
||||||
@ -20,7 +20,7 @@ defmodule MemexWeb.UserSettingsController do
|
|||||||
Accounts.deliver_update_email_instructions(
|
Accounts.deliver_update_email_instructions(
|
||||||
applied_user,
|
applied_user,
|
||||||
user.email,
|
user.email,
|
||||||
&Routes.user_settings_url(conn, :confirm_email, &1)
|
fn token -> url(MemexWeb.Endpoint, ~p"/users/settings/confirm_email/#{token}") end
|
||||||
)
|
)
|
||||||
|
|
||||||
conn
|
conn
|
||||||
@ -31,10 +31,10 @@ defmodule MemexWeb.UserSettingsController do
|
|||||||
"a link to confirm your email change has been sent to the new address."
|
"a link to confirm your email change has been sent to the new address."
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|> redirect(to: Routes.user_settings_path(conn, :edit))
|
|> redirect(to: ~p"/users/settings")
|
||||||
|
|
||||||
{:error, changeset} ->
|
{:error, changeset} ->
|
||||||
conn |> render("edit.html", email_changeset: changeset)
|
conn |> render(:edit, email_changeset: changeset)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -47,11 +47,11 @@ defmodule MemexWeb.UserSettingsController do
|
|||||||
{:ok, user} ->
|
{:ok, user} ->
|
||||||
conn
|
conn
|
||||||
|> put_flash(:info, dgettext("prompts", "password updated successfully."))
|
|> put_flash(:info, dgettext("prompts", "password updated successfully."))
|
||||||
|> put_session(:user_return_to, Routes.user_settings_path(conn, :edit))
|
|> put_session(:user_return_to, ~p"/users/settings")
|
||||||
|> UserAuth.log_in_user(user)
|
|> UserAuth.log_in_user(user)
|
||||||
|
|
||||||
{:error, changeset} ->
|
{:error, changeset} ->
|
||||||
conn |> render("edit.html", password_changeset: changeset)
|
conn |> render(:edit, password_changeset: changeset)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -63,10 +63,10 @@ defmodule MemexWeb.UserSettingsController do
|
|||||||
{:ok, _user} ->
|
{:ok, _user} ->
|
||||||
conn
|
conn
|
||||||
|> put_flash(:info, dgettext("prompts", "language updated successfully."))
|
|> put_flash(:info, dgettext("prompts", "language updated successfully."))
|
||||||
|> redirect(to: Routes.user_settings_path(conn, :edit))
|
|> redirect(to: ~p"/users/settings")
|
||||||
|
|
||||||
{:error, changeset} ->
|
{:error, changeset} ->
|
||||||
conn |> render("edit.html", locale_changeset: changeset)
|
conn |> render(:edit, locale_changeset: changeset)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ defmodule MemexWeb.UserSettingsController do
|
|||||||
:ok ->
|
:ok ->
|
||||||
conn
|
conn
|
||||||
|> put_flash(:info, dgettext("prompts", "email changed successfully."))
|
|> put_flash(:info, dgettext("prompts", "email changed successfully."))
|
||||||
|> redirect(to: Routes.user_settings_path(conn, :edit))
|
|> redirect(to: ~p"/users/settings")
|
||||||
|
|
||||||
:error ->
|
:error ->
|
||||||
conn
|
conn
|
||||||
@ -83,7 +83,7 @@ defmodule MemexWeb.UserSettingsController do
|
|||||||
:error,
|
:error,
|
||||||
dgettext("errors", "email change link is invalid or it has expired.")
|
dgettext("errors", "email change link is invalid or it has expired.")
|
||||||
)
|
)
|
||||||
|> redirect(to: Routes.user_settings_path(conn, :edit))
|
|> redirect(to: ~p"/users/settings")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -93,11 +93,11 @@ defmodule MemexWeb.UserSettingsController do
|
|||||||
|
|
||||||
conn
|
conn
|
||||||
|> put_flash(:error, dgettext("prompts", "your account has been deleted"))
|
|> put_flash(:error, dgettext("prompts", "your account has been deleted"))
|
||||||
|> redirect(to: Routes.live_path(conn, HomeLive))
|
|> redirect(to: ~p"/")
|
||||||
else
|
else
|
||||||
conn
|
conn
|
||||||
|> put_flash(:error, dgettext("errors", "unable to delete user"))
|
|> put_flash(:error, dgettext("errors", "unable to delete user"))
|
||||||
|> redirect(to: Routes.user_settings_path(conn, :edit))
|
|> redirect(to: ~p"/users/settings")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
5
lib/memex_web/controllers/user_settings_html.ex
Normal file
5
lib/memex_web/controllers/user_settings_html.ex
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
defmodule MemexWeb.UserSettingsHTML do
|
||||||
|
use MemexWeb, :html
|
||||||
|
|
||||||
|
embed_templates "user_settings_html/*"
|
||||||
|
end
|
@ -8,7 +8,7 @@
|
|||||||
<.form
|
<.form
|
||||||
:let={f}
|
:let={f}
|
||||||
for={@email_changeset}
|
for={@email_changeset}
|
||||||
action={Routes.user_settings_path(@conn, :update)}
|
action={~p"/users/settings"}
|
||||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
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-400 text-lg text-center col-span-3">
|
<h3 class="title text-primary-400 text-lg text-center col-span-3">
|
||||||
@ -50,7 +50,7 @@
|
|||||||
<.form
|
<.form
|
||||||
:let={f}
|
:let={f}
|
||||||
for={@password_changeset}
|
for={@password_changeset}
|
||||||
action={Routes.user_settings_path(@conn, :update)}
|
action={~p"/users/settings"}
|
||||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
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-400 text-lg text-center col-span-3">
|
<h3 class="title text-primary-400 text-lg text-center col-span-3">
|
||||||
@ -104,7 +104,7 @@
|
|||||||
<.form
|
<.form
|
||||||
:let={f}
|
:let={f}
|
||||||
for={@locale_changeset}
|
for={@locale_changeset}
|
||||||
action={Routes.user_settings_path(@conn, :update)}
|
action={~p"/users/settings"}
|
||||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
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, :locale, dgettext("actions", "change language"),
|
<%= label(f, :locale, dgettext("actions", "change language"),
|
||||||
@ -134,17 +134,13 @@
|
|||||||
<hr class="hr" />
|
<hr class="hr" />
|
||||||
|
|
||||||
<div class="flex justify-end items-center">
|
<div class="flex justify-end items-center">
|
||||||
<.link
|
<.link href={~p"/export/json"} class="mx-4 my-2 btn btn-primary" target="_blank">
|
||||||
href={Routes.export_path(@conn, :export, :json)}
|
|
||||||
class="mx-4 my-2 btn btn-primary"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
<%= dgettext("actions", "export data as json") %>
|
<%= dgettext("actions", "export data as json") %>
|
||||||
</.link>
|
</.link>
|
||||||
|
|
||||||
<.link
|
<.link
|
||||||
href={Routes.user_settings_path(@conn, :delete, @current_user)}
|
href={~p"/users/settings/#{@current_user}"}
|
||||||
method={:delete}
|
method="delete"
|
||||||
class="mx-4 my-2 btn btn-alert"
|
class="mx-4 my-2 btn btn-alert"
|
||||||
data-confirm={dgettext("prompts", "are you sure you want to delete your account?")}
|
data-confirm={dgettext("prompts", "are you sure you want to delete your account?")}
|
||||||
>
|
>
|
@ -20,7 +20,7 @@ defmodule MemexWeb.Endpoint do
|
|||||||
at: "/",
|
at: "/",
|
||||||
from: :memex,
|
from: :memex,
|
||||||
gzip: false,
|
gzip: false,
|
||||||
only: ~w(css fonts images js favicon.ico robots.txt)
|
only: MemexWeb.static_paths()
|
||||||
|
|
||||||
# Code reloading can be explicitly enabled under the
|
# Code reloading can be explicitly enabled under the
|
||||||
# :code_reloader configuration of your endpoint.
|
# :code_reloader configuration of your endpoint.
|
||||||
|
@ -60,11 +60,11 @@ defmodule MemexWeb.ContextLive.Index do
|
|||||||
end
|
end
|
||||||
|
|
||||||
def handle_event("search", %{"search" => %{"search_term" => ""}}, socket) do
|
def handle_event("search", %{"search" => %{"search_term" => ""}}, socket) do
|
||||||
{:noreply, socket |> push_patch(to: Routes.context_index_path(Endpoint, :index))}
|
{:noreply, socket |> push_patch(to: ~p"/contexts")}
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_event("search", %{"search" => %{"search_term" => search_term}}, socket) do
|
def handle_event("search", %{"search" => %{"search_term" => search_term}}, socket) do
|
||||||
redirect_to = Routes.context_index_path(Endpoint, :search, search_term)
|
redirect_to = ~p"/contexts/#{search_term}"
|
||||||
{:noreply, socket |> push_patch(to: redirect_to)}
|
{:noreply, socket |> push_patch(to: redirect_to)}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
<:actions :let={context}>
|
<:actions :let={context}>
|
||||||
<.link
|
<.link
|
||||||
:if={Contexts.is_owner?(context, @current_user)}
|
:if={Contexts.is_owner?(context, @current_user)}
|
||||||
patch={Routes.context_index_path(@socket, :edit, context.slug)}
|
patch={~p"/contexts/#{context}/edit"}
|
||||||
aria-label={dgettext("actions", "edit %{context_slug}", context_slug: context.slug)}
|
aria-label={dgettext("actions", "edit %{context_slug}", context_slug: context.slug)}
|
||||||
>
|
>
|
||||||
<%= dgettext("actions", "edit") %>
|
<%= dgettext("actions", "edit") %>
|
||||||
@ -53,16 +53,12 @@
|
|||||||
</.live_component>
|
</.live_component>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<.link
|
<.link :if={@current_user} patch={~p"/contexts/new"} class="self-end btn btn-primary">
|
||||||
:if={@current_user}
|
|
||||||
patch={Routes.context_index_path(@socket, :new)}
|
|
||||||
class="self-end btn btn-primary"
|
|
||||||
>
|
|
||||||
<%= dgettext("actions", "new context") %>
|
<%= dgettext("actions", "new context") %>
|
||||||
</.link>
|
</.link>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<.modal :if={@live_action in [:new, :edit]} return_to={Routes.context_index_path(@socket, :index)}>
|
<.modal :if={@live_action in [:new, :edit]} return_to={~p"/contexts"}>
|
||||||
<.live_component
|
<.live_component
|
||||||
module={MemexWeb.ContextLive.FormComponent}
|
module={MemexWeb.ContextLive.FormComponent}
|
||||||
id={@context.id || :new}
|
id={@context.id || :new}
|
||||||
@ -70,6 +66,6 @@
|
|||||||
title={@page_title}
|
title={@page_title}
|
||||||
action={@live_action}
|
action={@live_action}
|
||||||
context={@context}
|
context={@context}
|
||||||
return_to={Routes.context_index_path(@socket, :index)}
|
return_to={~p"/contexts"}
|
||||||
/>
|
/>
|
||||||
</.modal>
|
</.modal>
|
||||||
|
@ -38,7 +38,7 @@ defmodule MemexWeb.ContextLive.Show do
|
|||||||
socket =
|
socket =
|
||||||
socket
|
socket
|
||||||
|> put_flash(:info, gettext("%{slug} deleted", slug: slug))
|
|> put_flash(:info, gettext("%{slug} deleted", slug: slug))
|
||||||
|> push_navigate(to: Routes.context_index_path(Endpoint, :index))
|
|> push_navigate(to: ~p"/contexts")
|
||||||
|
|
||||||
{:noreply, socket}
|
{:noreply, socket}
|
||||||
end
|
end
|
||||||
|
@ -4,11 +4,7 @@
|
|||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<div class="flex flex-wrap space-x-1">
|
<div class="flex flex-wrap space-x-1">
|
||||||
<.link
|
<.link :for={tag <- @context.tags} navigate={~p"/contexts/#{tag}"} class="link">
|
||||||
:for={tag <- @context.tags}
|
|
||||||
navigate={Routes.context_index_path(Endpoint, :search, tag)}
|
|
||||||
class="link"
|
|
||||||
>
|
|
||||||
<%= tag %>
|
<%= tag %>
|
||||||
</.link>
|
</.link>
|
||||||
</div>
|
</div>
|
||||||
@ -23,7 +19,7 @@
|
|||||||
<.link
|
<.link
|
||||||
:if={Contexts.is_owner?(@context, @current_user)}
|
:if={Contexts.is_owner?(@context, @current_user)}
|
||||||
class="btn btn-primary"
|
class="btn btn-primary"
|
||||||
patch={Routes.context_show_path(@socket, :edit, @context.slug)}
|
patch={~p"/context/#{@context}/edit"}
|
||||||
>
|
>
|
||||||
<%= dgettext("actions", "edit") %>
|
<%= dgettext("actions", "edit") %>
|
||||||
</.link>
|
</.link>
|
||||||
@ -40,10 +36,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<.modal
|
<.modal :if={@live_action == :edit} return_to={~p"/context/#{@context}"}>
|
||||||
:if={@live_action == :edit}
|
|
||||||
return_to={Routes.context_show_path(@socket, :show, @context.slug)}
|
|
||||||
>
|
|
||||||
<.live_component
|
<.live_component
|
||||||
module={MemexWeb.ContextLive.FormComponent}
|
module={MemexWeb.ContextLive.FormComponent}
|
||||||
id={@context.id}
|
id={@context.id}
|
||||||
@ -51,6 +44,6 @@
|
|||||||
title={@page_title}
|
title={@page_title}
|
||||||
action={@live_action}
|
action={@live_action}
|
||||||
context={@context}
|
context={@context}
|
||||||
return_to={Routes.context_show_path(@socket, :show, @context.slug)}
|
return_to={~p"/context/#{@context}"}
|
||||||
/>
|
/>
|
||||||
</.modal>
|
</.modal>
|
||||||
|
@ -5,7 +5,6 @@ defmodule MemexWeb.HomeLive do
|
|||||||
|
|
||||||
use MemexWeb, :live_view
|
use MemexWeb, :live_view
|
||||||
alias Memex.Accounts
|
alias Memex.Accounts
|
||||||
alias MemexWeb.FaqLive
|
|
||||||
|
|
||||||
@version Mix.Project.config()[:version]
|
@version Mix.Project.config()[:version]
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="flex flex-col justify-center items-center text-right space-y-2">
|
<li class="flex flex-col justify-center items-center text-right space-y-2">
|
||||||
<.link navigate={Routes.live_path(Endpoint, FaqLive)} class="btn btn-primary">
|
<.link navigate={~p"/faq"} class="btn btn-primary">
|
||||||
<%= gettext("read more on how to use memEx") %>
|
<%= gettext("read more on how to use memEx") %>
|
||||||
</.link>
|
</.link>
|
||||||
</li>
|
</li>
|
||||||
@ -86,7 +86,7 @@
|
|||||||
</b>
|
</b>
|
||||||
<p class="flex flex-col justify-center items-center space-y-2">
|
<p class="flex flex-col justify-center items-center space-y-2">
|
||||||
<%= if @admins |> Enum.empty?() do %>
|
<%= if @admins |> Enum.empty?() do %>
|
||||||
<.link href={Routes.user_registration_path(Endpoint, :new)} class="link">
|
<.link href={~p"/users/register"} class="link">
|
||||||
<%= dgettext("prompts", "register to setup memEx") %>
|
<%= dgettext("prompts", "register to setup memEx") %>
|
||||||
</.link>
|
</.link>
|
||||||
<% else %>
|
<% else %>
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<%= gettext("no invites 😔") %>
|
<%= gettext("no invites 😔") %>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<.link patch={Routes.invite_index_path(Endpoint, :new)} class="btn btn-primary">
|
<.link patch={~p"/invites"} class="btn btn-primary">
|
||||||
<%= dgettext("actions", "invite someone new!") %>
|
<%= dgettext("actions", "invite someone new!") %>
|
||||||
</.link>
|
</.link>
|
||||||
<% end %>
|
<% end %>
|
||||||
@ -35,7 +35,7 @@
|
|||||||
</form>
|
</form>
|
||||||
</:code_actions>
|
</:code_actions>
|
||||||
<.link
|
<.link
|
||||||
patch={Routes.invite_index_path(Endpoint, :edit, invite)}
|
patch={~p"/invites/#{invite}/edit"}
|
||||||
class="text-primary-400 link"
|
class="text-primary-400 link"
|
||||||
aria-label={
|
aria-label={
|
||||||
dgettext("actions", "edit invite for %{invite_name}", invite_name: invite.name)
|
dgettext("actions", "edit invite for %{invite_name}", invite_name: invite.name)
|
||||||
@ -86,11 +86,7 @@
|
|||||||
</.link>
|
</.link>
|
||||||
</.invite_card>
|
</.invite_card>
|
||||||
|
|
||||||
<.link
|
<.link :if={@invites != []} patch={~p"/invites/new"} class="btn btn-primary ml-auto">
|
||||||
:if={@invites != []}
|
|
||||||
patch={Routes.invite_index_path(Endpoint, :new)}
|
|
||||||
class="btn btn-primary ml-auto"
|
|
||||||
>
|
|
||||||
<%= dgettext("actions", "create invite") %>
|
<%= dgettext("actions", "create invite") %>
|
||||||
</.link>
|
</.link>
|
||||||
</div>
|
</div>
|
||||||
@ -152,14 +148,14 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<.modal :if={@live_action in [:new, :edit]} return_to={Routes.invite_index_path(Endpoint, :index)}>
|
<.modal :if={@live_action in [:new, :edit]} return_to={~p"/invites"}>
|
||||||
<.live_component
|
<.live_component
|
||||||
module={MemexWeb.InviteLive.FormComponent}
|
module={MemexWeb.InviteLive.FormComponent}
|
||||||
id={@invite.id || :new}
|
id={@invite.id || :new}
|
||||||
title={@page_title}
|
title={@page_title}
|
||||||
action={@live_action}
|
action={@live_action}
|
||||||
invite={@invite}
|
invite={@invite}
|
||||||
return_to={Routes.invite_index_path(Endpoint, :index)}
|
return_to={~p"/invites"}
|
||||||
current_user={@current_user}
|
current_user={@current_user}
|
||||||
/>
|
/>
|
||||||
</.modal>
|
</.modal>
|
||||||
|
@ -60,11 +60,11 @@ defmodule MemexWeb.NoteLive.Index do
|
|||||||
end
|
end
|
||||||
|
|
||||||
def handle_event("search", %{"search" => %{"search_term" => ""}}, socket) do
|
def handle_event("search", %{"search" => %{"search_term" => ""}}, socket) do
|
||||||
{:noreply, socket |> push_patch(to: Routes.note_index_path(Endpoint, :index))}
|
{:noreply, socket |> push_patch(to: ~p"/notes")}
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_event("search", %{"search" => %{"search_term" => search_term}}, socket) do
|
def handle_event("search", %{"search" => %{"search_term" => search_term}}, socket) do
|
||||||
{:noreply, socket |> push_patch(to: Routes.note_index_path(Endpoint, :search, search_term))}
|
{:noreply, socket |> push_patch(to: ~p"/notes/#{search_term}")}
|
||||||
end
|
end
|
||||||
|
|
||||||
defp display_notes(%{assigns: %{current_user: current_user, search: search}} = socket)
|
defp display_notes(%{assigns: %{current_user: current_user, search: search}} = socket)
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
<:actions :let={note}>
|
<:actions :let={note}>
|
||||||
<.link
|
<.link
|
||||||
:if={Notes.is_owner?(note, @current_user)}
|
:if={Notes.is_owner?(note, @current_user)}
|
||||||
patch={Routes.note_index_path(@socket, :edit, note.slug)}
|
patch={~p"/notes/#{note}/edit"}
|
||||||
aria-label={dgettext("actions", "edit %{note_slug}", note_slug: note.slug)}
|
aria-label={dgettext("actions", "edit %{note_slug}", note_slug: note.slug)}
|
||||||
>
|
>
|
||||||
<%= dgettext("actions", "edit") %>
|
<%= dgettext("actions", "edit") %>
|
||||||
@ -53,16 +53,12 @@
|
|||||||
</.live_component>
|
</.live_component>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<.link
|
<.link :if={@current_user} patch={~p"/notes/new"} class="self-end btn btn-primary">
|
||||||
:if={@current_user}
|
|
||||||
patch={Routes.note_index_path(@socket, :new)}
|
|
||||||
class="self-end btn btn-primary"
|
|
||||||
>
|
|
||||||
<%= dgettext("actions", "new note") %>
|
<%= dgettext("actions", "new note") %>
|
||||||
</.link>
|
</.link>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<.modal :if={@live_action in [:new, :edit]} return_to={Routes.note_index_path(@socket, :index)}>
|
<.modal :if={@live_action in [:new, :edit]} return_to={~p"/notes"}>
|
||||||
<.live_component
|
<.live_component
|
||||||
module={MemexWeb.NoteLive.FormComponent}
|
module={MemexWeb.NoteLive.FormComponent}
|
||||||
id={@note.id || :new}
|
id={@note.id || :new}
|
||||||
@ -70,6 +66,6 @@
|
|||||||
title={@page_title}
|
title={@page_title}
|
||||||
action={@live_action}
|
action={@live_action}
|
||||||
note={@note}
|
note={@note}
|
||||||
return_to={Routes.note_index_path(@socket, :index)}
|
return_to={~p"/notes"}
|
||||||
/>
|
/>
|
||||||
</.modal>
|
</.modal>
|
||||||
|
@ -38,7 +38,7 @@ defmodule MemexWeb.NoteLive.Show do
|
|||||||
socket =
|
socket =
|
||||||
socket
|
socket
|
||||||
|> put_flash(:info, gettext("%{slug} deleted", slug: slug))
|
|> put_flash(:info, gettext("%{slug} deleted", slug: slug))
|
||||||
|> push_navigate(to: Routes.note_index_path(Endpoint, :index))
|
|> push_navigate(to: ~p"/notes")
|
||||||
|
|
||||||
{:noreply, socket}
|
{:noreply, socket}
|
||||||
end
|
end
|
||||||
|
@ -4,11 +4,7 @@
|
|||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<div class="flex flex-wrap space-x-1">
|
<div class="flex flex-wrap space-x-1">
|
||||||
<.link
|
<.link :for={tag <- @note.tags} navigate={~p"/notes/#{tag}"} class="link">
|
||||||
:for={tag <- @note.tags}
|
|
||||||
navigate={Routes.note_index_path(Endpoint, :search, tag)}
|
|
||||||
class="link"
|
|
||||||
>
|
|
||||||
<%= tag %>
|
<%= tag %>
|
||||||
</.link>
|
</.link>
|
||||||
</div>
|
</div>
|
||||||
@ -23,7 +19,7 @@
|
|||||||
<.link
|
<.link
|
||||||
:if={Notes.is_owner?(@note, @current_user)}
|
:if={Notes.is_owner?(@note, @current_user)}
|
||||||
class="btn btn-primary"
|
class="btn btn-primary"
|
||||||
patch={Routes.note_show_path(@socket, :edit, @note.slug)}
|
patch={~p"/note/#{@note}/edit"}
|
||||||
>
|
>
|
||||||
<%= dgettext("actions", "edit") %>
|
<%= dgettext("actions", "edit") %>
|
||||||
</.link>
|
</.link>
|
||||||
@ -40,7 +36,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<.modal :if={@live_action == :edit} return_to={Routes.note_show_path(@socket, :show, @note.slug)}>
|
<.modal :if={@live_action == :edit} return_to={~p"/note/#{@note}"}>
|
||||||
<.live_component
|
<.live_component
|
||||||
module={MemexWeb.NoteLive.FormComponent}
|
module={MemexWeb.NoteLive.FormComponent}
|
||||||
id={@note.id}
|
id={@note.id}
|
||||||
@ -48,6 +44,6 @@
|
|||||||
title={@page_title}
|
title={@page_title}
|
||||||
action={@live_action}
|
action={@live_action}
|
||||||
note={@note}
|
note={@note}
|
||||||
return_to={Routes.note_show_path(@socket, :show, @note.slug)}
|
return_to={~p"/note/#{@note}"}
|
||||||
/>
|
/>
|
||||||
</.modal>
|
</.modal>
|
||||||
|
@ -60,12 +60,11 @@ defmodule MemexWeb.PipelineLive.Index do
|
|||||||
end
|
end
|
||||||
|
|
||||||
def handle_event("search", %{"search" => %{"search_term" => ""}}, socket) do
|
def handle_event("search", %{"search" => %{"search_term" => ""}}, socket) do
|
||||||
{:noreply, socket |> push_patch(to: Routes.pipeline_index_path(Endpoint, :index))}
|
{:noreply, socket |> push_patch(to: ~p"/pipelines")}
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_event("search", %{"search" => %{"search_term" => search_term}}, socket) do
|
def handle_event("search", %{"search" => %{"search_term" => search_term}}, socket) do
|
||||||
redirect_to = Routes.pipeline_index_path(Endpoint, :search, search_term)
|
{:noreply, socket |> push_patch(to: ~p"/pipelines/#{search_term}")}
|
||||||
{:noreply, socket |> push_patch(to: redirect_to)}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
defp display_pipelines(%{assigns: %{current_user: current_user, search: search}} = socket)
|
defp display_pipelines(%{assigns: %{current_user: current_user, search: search}} = socket)
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
<:actions :let={pipeline}>
|
<:actions :let={pipeline}>
|
||||||
<.link
|
<.link
|
||||||
:if={Pipelines.is_owner?(pipeline, @current_user)}
|
:if={Pipelines.is_owner?(pipeline, @current_user)}
|
||||||
patch={Routes.pipeline_index_path(@socket, :edit, pipeline.slug)}
|
patch={~p"/pipelines/#{pipeline}/edit"}
|
||||||
aria-label={dgettext("actions", "edit %{pipeline_slug}", pipeline_slug: pipeline.slug)}
|
aria-label={dgettext("actions", "edit %{pipeline_slug}", pipeline_slug: pipeline.slug)}
|
||||||
>
|
>
|
||||||
<%= dgettext("actions", "edit") %>
|
<%= dgettext("actions", "edit") %>
|
||||||
@ -55,19 +55,12 @@
|
|||||||
</.live_component>
|
</.live_component>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<.link
|
<.link :if={@current_user} patch={~p"/pipelines/new"} class="self-end btn btn-primary">
|
||||||
:if={@current_user}
|
|
||||||
patch={Routes.pipeline_index_path(@socket, :new)}
|
|
||||||
class="self-end btn btn-primary"
|
|
||||||
>
|
|
||||||
<%= dgettext("actions", "new pipeline") %>
|
<%= dgettext("actions", "new pipeline") %>
|
||||||
</.link>
|
</.link>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<.modal
|
<.modal :if={@live_action in [:new, :edit]} return_to={~p"/pipelines"}>
|
||||||
:if={@live_action in [:new, :edit]}
|
|
||||||
return_to={Routes.pipeline_index_path(@socket, :index)}
|
|
||||||
>
|
|
||||||
<.live_component
|
<.live_component
|
||||||
module={MemexWeb.PipelineLive.FormComponent}
|
module={MemexWeb.PipelineLive.FormComponent}
|
||||||
id={@pipeline.id || :new}
|
id={@pipeline.id || :new}
|
||||||
@ -75,6 +68,6 @@
|
|||||||
title={@page_title}
|
title={@page_title}
|
||||||
action={@live_action}
|
action={@live_action}
|
||||||
pipeline={@pipeline}
|
pipeline={@pipeline}
|
||||||
return_to={Routes.pipeline_index_path(@socket, :index)}
|
return_to={~p"/pipelines"}
|
||||||
/>
|
/>
|
||||||
</.modal>
|
</.modal>
|
||||||
|
@ -73,7 +73,7 @@ defmodule MemexWeb.PipelineLive.Show do
|
|||||||
socket =
|
socket =
|
||||||
socket
|
socket
|
||||||
|> put_flash(:info, gettext("%{slug} deleted", slug: slug))
|
|> put_flash(:info, gettext("%{slug} deleted", slug: slug))
|
||||||
|> push_navigate(to: Routes.pipeline_index_path(Endpoint, :index))
|
|> push_navigate(to: ~p"/pipelines")
|
||||||
|
|
||||||
{:noreply, socket}
|
{:noreply, socket}
|
||||||
end
|
end
|
||||||
@ -91,7 +91,7 @@ defmodule MemexWeb.PipelineLive.Show do
|
|||||||
socket =
|
socket =
|
||||||
socket
|
socket
|
||||||
|> put_flash(:info, gettext("%{title} deleted", title: title))
|
|> put_flash(:info, gettext("%{title} deleted", title: title))
|
||||||
|> push_patch(to: Routes.pipeline_show_path(Endpoint, :show, pipeline_slug))
|
|> push_patch(to: ~p"/pipeline/#{pipeline_slug}")
|
||||||
|
|
||||||
{:noreply, socket}
|
{:noreply, socket}
|
||||||
end
|
end
|
||||||
@ -110,7 +110,7 @@ defmodule MemexWeb.PipelineLive.Show do
|
|||||||
|
|
||||||
socket =
|
socket =
|
||||||
socket
|
socket
|
||||||
|> push_patch(to: Routes.pipeline_show_path(Endpoint, :show, pipeline_slug))
|
|> push_patch(to: ~p"/pipeline/#{pipeline_slug}")
|
||||||
|
|
||||||
{:noreply, socket}
|
{:noreply, socket}
|
||||||
end
|
end
|
||||||
|
@ -4,11 +4,7 @@
|
|||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<div class="flex flex-wrap space-x-1">
|
<div class="flex flex-wrap space-x-1">
|
||||||
<.link
|
<.link :for={tag <- @pipeline.tags} navigate={~p"/pipelines/#{tag}"} class="link">
|
||||||
:for={tag <- @pipeline.tags}
|
|
||||||
navigate={Routes.pipeline_index_path(Endpoint, :search, tag)}
|
|
||||||
class="link"
|
|
||||||
>
|
|
||||||
<%= tag %>
|
<%= tag %>
|
||||||
</.link>
|
</.link>
|
||||||
</div>
|
</div>
|
||||||
@ -31,7 +27,7 @@
|
|||||||
<.link
|
<.link
|
||||||
:if={Pipelines.is_owner?(@pipeline, @current_user)}
|
:if={Pipelines.is_owner?(@pipeline, @current_user)}
|
||||||
class="btn btn-primary"
|
class="btn btn-primary"
|
||||||
patch={Routes.pipeline_show_path(@socket, :edit, @pipeline.slug)}
|
patch={~p"/pipeline/#{@pipeline}/edit"}
|
||||||
>
|
>
|
||||||
<%= dgettext("actions", "edit") %>
|
<%= dgettext("actions", "edit") %>
|
||||||
</.link>
|
</.link>
|
||||||
@ -100,7 +96,7 @@
|
|||||||
|
|
||||||
<.link
|
<.link
|
||||||
class="self-end btn btn-primary"
|
class="self-end btn btn-primary"
|
||||||
patch={Routes.pipeline_show_path(@socket, :edit_step, @pipeline.slug, step_id)}
|
patch={~p"/pipeline/#{@pipeline}/#{step_id}"}
|
||||||
aria-label={dgettext("actions", "edit %{step_title}", step_title: step.title)}
|
aria-label={dgettext("actions", "edit %{step_title}", step_title: step.title)}
|
||||||
>
|
>
|
||||||
<%= dgettext("actions", "edit") %>
|
<%= dgettext("actions", "edit") %>
|
||||||
@ -127,7 +123,7 @@
|
|||||||
<.link
|
<.link
|
||||||
:if={Pipelines.is_owner?(@pipeline, @current_user)}
|
:if={Pipelines.is_owner?(@pipeline, @current_user)}
|
||||||
class="self-end btn btn-primary"
|
class="self-end btn btn-primary"
|
||||||
patch={Routes.pipeline_show_path(@socket, :add_step, @pipeline.slug)}
|
patch={~p"/pipeline/#{@pipeline}/add_step"}
|
||||||
>
|
>
|
||||||
<%= dgettext("actions", "add step") %>
|
<%= dgettext("actions", "add step") %>
|
||||||
</.link>
|
</.link>
|
||||||
@ -135,7 +131,7 @@
|
|||||||
|
|
||||||
<%= case @live_action do %>
|
<%= case @live_action do %>
|
||||||
<% :edit -> %>
|
<% :edit -> %>
|
||||||
<.modal return_to={Routes.pipeline_show_path(@socket, :show, @pipeline.slug)}>
|
<.modal return_to={~p"/pipeline/#{@pipeline}"}>
|
||||||
<.live_component
|
<.live_component
|
||||||
module={MemexWeb.PipelineLive.FormComponent}
|
module={MemexWeb.PipelineLive.FormComponent}
|
||||||
id={@pipeline.id}
|
id={@pipeline.id}
|
||||||
@ -143,11 +139,11 @@
|
|||||||
title={@page_title}
|
title={@page_title}
|
||||||
action={@live_action}
|
action={@live_action}
|
||||||
pipeline={@pipeline}
|
pipeline={@pipeline}
|
||||||
return_to={Routes.pipeline_show_path(@socket, :show, @pipeline.slug)}
|
return_to={~p"/pipeline/#{@pipeline}"}
|
||||||
/>
|
/>
|
||||||
</.modal>
|
</.modal>
|
||||||
<% action when action in [:add_step, :edit_step] -> %>
|
<% action when action in [:add_step, :edit_step] -> %>
|
||||||
<.modal return_to={Routes.pipeline_show_path(@socket, :show, @pipeline.slug)}>
|
<.modal return_to={~p"/pipeline/#{@pipeline}"}>
|
||||||
<.live_component
|
<.live_component
|
||||||
module={MemexWeb.StepLive.FormComponent}
|
module={MemexWeb.StepLive.FormComponent}
|
||||||
id={@pipeline.id || :new}
|
id={@pipeline.id || :new}
|
||||||
@ -156,7 +152,7 @@
|
|||||||
action={@live_action}
|
action={@live_action}
|
||||||
pipeline={@pipeline}
|
pipeline={@pipeline}
|
||||||
step={@step}
|
step={@step}
|
||||||
return_to={Routes.pipeline_show_path(@socket, :show, @pipeline.slug)}
|
return_to={~p"/pipeline/#{@pipeline}"}
|
||||||
/>
|
/>
|
||||||
</.modal>
|
</.modal>
|
||||||
<% _ -> %>
|
<% _ -> %>
|
||||||
|
@ -7,25 +7,13 @@ defmodule MemexWeb.Router do
|
|||||||
plug :accepts, ["html"]
|
plug :accepts, ["html"]
|
||||||
plug :fetch_session
|
plug :fetch_session
|
||||||
plug :fetch_live_flash
|
plug :fetch_live_flash
|
||||||
plug :put_root_layout, {MemexWeb.LayoutView, :root}
|
plug :put_root_layout, {MemexWeb.Layouts, :root}
|
||||||
plug :protect_from_forgery
|
plug :protect_from_forgery
|
||||||
plug :put_secure_browser_headers
|
plug :put_secure_browser_headers
|
||||||
plug :fetch_current_user
|
plug :fetch_current_user
|
||||||
plug :put_user_locale
|
plug :put_user_locale
|
||||||
end
|
end
|
||||||
|
|
||||||
defp put_user_locale(%{assigns: %{current_user: %{locale: locale}}} = conn, _opts) do
|
|
||||||
default = Application.fetch_env!(:gettext, :default_locale)
|
|
||||||
Gettext.put_locale(locale || default)
|
|
||||||
conn |> put_session(:locale, locale || default)
|
|
||||||
end
|
|
||||||
|
|
||||||
defp put_user_locale(conn, _opts) do
|
|
||||||
default = Application.fetch_env!(:gettext, :default_locale)
|
|
||||||
Gettext.put_locale(default)
|
|
||||||
conn |> put_session(:locale, default)
|
|
||||||
end
|
|
||||||
|
|
||||||
pipeline :require_admin do
|
pipeline :require_admin do
|
||||||
plug :require_role, role: :admin
|
plug :require_role, role: :admin
|
||||||
end
|
end
|
||||||
@ -34,13 +22,6 @@ defmodule MemexWeb.Router do
|
|||||||
plug :accepts, ["json"]
|
plug :accepts, ["json"]
|
||||||
end
|
end
|
||||||
|
|
||||||
scope "/", MemexWeb do
|
|
||||||
pipe_through :browser
|
|
||||||
|
|
||||||
live "/", HomeLive
|
|
||||||
live "/faq", FaqLive
|
|
||||||
end
|
|
||||||
|
|
||||||
## Authentication routes
|
## Authentication routes
|
||||||
|
|
||||||
scope "/", MemexWeb do
|
scope "/", MemexWeb do
|
||||||
@ -56,10 +37,10 @@ defmodule MemexWeb.Router do
|
|||||||
put "/users/reset_password/:token", UserResetPasswordController, :update
|
put "/users/reset_password/:token", UserResetPasswordController, :update
|
||||||
end
|
end
|
||||||
|
|
||||||
live_session :default do
|
|
||||||
scope "/", MemexWeb do
|
scope "/", MemexWeb do
|
||||||
pipe_through [:browser, :require_authenticated_user]
|
pipe_through [:browser, :require_authenticated_user]
|
||||||
|
|
||||||
|
live_session :default, on_mount: [{MemexWeb.UserAuth, :ensure_authenticated}] do
|
||||||
live "/notes/new", NoteLive.Index, :new
|
live "/notes/new", NoteLive.Index, :new
|
||||||
live "/notes/:slug/edit", NoteLive.Index, :edit
|
live "/notes/:slug/edit", NoteLive.Index, :edit
|
||||||
live "/note/:slug/edit", NoteLive.Show, :edit
|
live "/note/:slug/edit", NoteLive.Show, :edit
|
||||||
@ -73,6 +54,7 @@ defmodule MemexWeb.Router do
|
|||||||
live "/pipeline/:slug/edit", PipelineLive.Show, :edit
|
live "/pipeline/:slug/edit", PipelineLive.Show, :edit
|
||||||
live "/pipeline/:slug/add_step", PipelineLive.Show, :add_step
|
live "/pipeline/:slug/add_step", PipelineLive.Show, :add_step
|
||||||
live "/pipeline/:slug/:step_id", PipelineLive.Show, :edit_step
|
live "/pipeline/:slug/:step_id", PipelineLive.Show, :edit_step
|
||||||
|
end
|
||||||
|
|
||||||
get "/users/settings", UserSettingsController, :edit
|
get "/users/settings", UserSettingsController, :edit
|
||||||
put "/users/settings", UserSettingsController, :update
|
put "/users/settings", UserSettingsController, :update
|
||||||
@ -84,6 +66,10 @@ defmodule MemexWeb.Router do
|
|||||||
scope "/", MemexWeb do
|
scope "/", MemexWeb do
|
||||||
pipe_through [:browser]
|
pipe_through [:browser]
|
||||||
|
|
||||||
|
live_session :public, on_mount: [{MemexWeb.UserAuth, :mount_current_user}] do
|
||||||
|
live "/", HomeLive
|
||||||
|
live "/faq", FaqLive
|
||||||
|
|
||||||
live "/notes", NoteLive.Index, :index
|
live "/notes", NoteLive.Index, :index
|
||||||
live "/notes/:search", NoteLive.Index, :search
|
live "/notes/:search", NoteLive.Index, :search
|
||||||
live "/note/:slug", NoteLive.Show, :show
|
live "/note/:slug", NoteLive.Show, :show
|
||||||
@ -98,10 +84,10 @@ defmodule MemexWeb.Router do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
live_session :admin do
|
|
||||||
scope "/", MemexWeb do
|
scope "/", MemexWeb do
|
||||||
pipe_through [:browser, :require_authenticated_user, :require_admin]
|
pipe_through [:browser, :require_authenticated_user, :require_admin]
|
||||||
|
|
||||||
|
live_session :admin, on_mount: [{MemexWeb.UserAuth, :ensure_admin}] do
|
||||||
live "/invites", InviteLive.Index, :index
|
live "/invites", InviteLive.Index, :index
|
||||||
live "/invites/new", InviteLive.Index, :new
|
live "/invites/new", InviteLive.Index, :new
|
||||||
live "/invites/:id/edit", InviteLive.Index, :edit
|
live "/invites/:id/edit", InviteLive.Index, :edit
|
||||||
@ -132,9 +118,6 @@ defmodule MemexWeb.Router do
|
|||||||
pipe_through :browser
|
pipe_through :browser
|
||||||
|
|
||||||
forward "/mailbox", Plug.Swoosh.MailboxPreview
|
forward "/mailbox", Plug.Swoosh.MailboxPreview
|
||||||
end
|
|
||||||
|
|
||||||
scope "/dev" do
|
|
||||||
get "/preview/:id", MemexWeb.EmailController, :preview
|
get "/preview/:id", MemexWeb.EmailController, :preview
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
<%= @email.subject %>
|
|
||||||
|
|
||||||
====================
|
|
||||||
|
|
||||||
<%= @inner_content %>
|
|
||||||
|
|
||||||
=====================
|
|
||||||
|
|
||||||
<%= dgettext("emails",
|
|
||||||
"This email was sent from memEx at %{url}",
|
|
||||||
url: Routes.live_url(Endpoint, HomeLive)) %>
|
|
@ -1,7 +0,0 @@
|
|||||||
defmodule MemexWeb.EmailView do
|
|
||||||
@moduledoc """
|
|
||||||
A view for email-related helper functions
|
|
||||||
"""
|
|
||||||
use MemexWeb, :view
|
|
||||||
alias MemexWeb.HomeLive
|
|
||||||
end
|
|
@ -1,3 +0,0 @@
|
|||||||
defmodule MemexWeb.PageView do
|
|
||||||
use MemexWeb, :view
|
|
||||||
end
|
|
@ -1,8 +1,6 @@
|
|||||||
defmodule MemexWeb.ViewHelpers do
|
defmodule MemexWeb.HTMLHelpers do
|
||||||
@moduledoc """
|
@moduledoc """
|
||||||
Contains common helpers that can be used in liveviews and regular views. These
|
Contains common helpers that are used for rendering
|
||||||
are automatically imported into any Phoenix View using `use MemexWeb,
|
|
||||||
:view`
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
use Phoenix.Component
|
use Phoenix.Component
|
@ -1,16 +0,0 @@
|
|||||||
defmodule MemexWeb.LayoutView do
|
|
||||||
use MemexWeb, :view
|
|
||||||
alias MemexWeb.HomeLive
|
|
||||||
|
|
||||||
# Phoenix LiveDashboard is available only in development by default,
|
|
||||||
# so we instruct Elixir to not warn if the dashboard route is missing.
|
|
||||||
@compile {:no_warn_undefined, {Routes, :live_dashboard_path, 2}}
|
|
||||||
|
|
||||||
def get_title(%{assigns: %{title: title}}) when title not in [nil, ""] do
|
|
||||||
gettext("memEx | %{title}", title: title)
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_title(_conn) do
|
|
||||||
gettext("memEx")
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,4 +0,0 @@
|
|||||||
defmodule MemexWeb.UserConfirmationView do
|
|
||||||
use MemexWeb, :view
|
|
||||||
alias Memex.Accounts
|
|
||||||
end
|
|
@ -1,3 +0,0 @@
|
|||||||
defmodule MemexWeb.UserRegistrationView do
|
|
||||||
use MemexWeb, :view
|
|
||||||
end
|
|
@ -1,4 +0,0 @@
|
|||||||
defmodule MemexWeb.UserResetPasswordView do
|
|
||||||
use MemexWeb, :view
|
|
||||||
alias Memex.Accounts
|
|
||||||
end
|
|
@ -1,4 +0,0 @@
|
|||||||
defmodule MemexWeb.UserSessionView do
|
|
||||||
use MemexWeb, :view
|
|
||||||
alias Memex.Accounts
|
|
||||||
end
|
|
@ -1,3 +0,0 @@
|
|||||||
defmodule MemexWeb.UserSettingsView do
|
|
||||||
use MemexWeb, :view
|
|
||||||
end
|
|
3
mix.exs
3
mix.exs
@ -7,7 +7,6 @@ defmodule Memex.MixProject do
|
|||||||
version: "0.1.11",
|
version: "0.1.11",
|
||||||
elixir: "1.14.4",
|
elixir: "1.14.4",
|
||||||
elixirc_paths: elixirc_paths(Mix.env()),
|
elixirc_paths: elixirc_paths(Mix.env()),
|
||||||
compilers: Mix.compilers(),
|
|
||||||
start_permanent: Mix.env() == :prod,
|
start_permanent: Mix.env() == :prod,
|
||||||
aliases: aliases(),
|
aliases: aliases(),
|
||||||
deps: deps(),
|
deps: deps(),
|
||||||
@ -53,7 +52,6 @@ defmodule Memex.MixProject do
|
|||||||
{:phoenix_html, "~> 3.0"},
|
{:phoenix_html, "~> 3.0"},
|
||||||
{:phoenix_live_reload, "~> 1.2", only: :dev},
|
{:phoenix_live_reload, "~> 1.2", only: :dev},
|
||||||
{:phoenix_live_view, "~> 0.18.0"},
|
{:phoenix_live_view, "~> 0.18.0"},
|
||||||
{:phoenix_view, "~> 2.0"},
|
|
||||||
{:phoenix_live_dashboard, "~> 0.6"},
|
{:phoenix_live_dashboard, "~> 0.6"},
|
||||||
{:ecto_sql, "~> 3.6"},
|
{:ecto_sql, "~> 3.6"},
|
||||||
{:postgrex, ">= 0.0.0"},
|
{:postgrex, ">= 0.0.0"},
|
||||||
@ -62,7 +60,6 @@ defmodule Memex.MixProject do
|
|||||||
{:ex_doc, "~> 0.27", only: :dev, runtime: false},
|
{:ex_doc, "~> 0.27", only: :dev, runtime: false},
|
||||||
{:swoosh, "~> 1.6"},
|
{:swoosh, "~> 1.6"},
|
||||||
{:gen_smtp, "~> 1.0"},
|
{:gen_smtp, "~> 1.0"},
|
||||||
{:phoenix_swoosh, "~> 1.0"},
|
|
||||||
{:oban, "~> 2.10"},
|
{:oban, "~> 2.10"},
|
||||||
{:telemetry_metrics, "~> 0.6"},
|
{:telemetry_metrics, "~> 0.6"},
|
||||||
{:telemetry_poller, "~> 1.0"},
|
{:telemetry_poller, "~> 1.0"},
|
||||||
|
2
mix.lock
2
mix.lock
@ -38,9 +38,7 @@
|
|||||||
"phoenix_live_reload": {:hex, :phoenix_live_reload, "1.4.1", "2aff698f5e47369decde4357ba91fc9c37c6487a512b41732818f2204a8ef1d3", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "9bffb834e7ddf08467fe54ae58b5785507aaba6255568ae22b4d46e2bb3615ab"},
|
"phoenix_live_reload": {:hex, :phoenix_live_reload, "1.4.1", "2aff698f5e47369decde4357ba91fc9c37c6487a512b41732818f2204a8ef1d3", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "9bffb834e7ddf08467fe54ae58b5785507aaba6255568ae22b4d46e2bb3615ab"},
|
||||||
"phoenix_live_view": {:hex, :phoenix_live_view, "0.18.18", "1f38fbd7c363723f19aad1a04b5490ff3a178e37daaf6999594d5f34796c47fc", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a5810d0472f3189ede6d2a95bda7f31c6113156b91784a3426cb0ab6a6d85214"},
|
"phoenix_live_view": {:hex, :phoenix_live_view, "0.18.18", "1f38fbd7c363723f19aad1a04b5490ff3a178e37daaf6999594d5f34796c47fc", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a5810d0472f3189ede6d2a95bda7f31c6113156b91784a3426cb0ab6a6d85214"},
|
||||||
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.1", "ba04e489ef03763bf28a17eb2eaddc2c20c6d217e2150a61e3298b0f4c2012b5", [:mix], [], "hexpm", "81367c6d1eea5878ad726be80808eb5a787a23dee699f96e72b1109c57cdd8d9"},
|
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.1", "ba04e489ef03763bf28a17eb2eaddc2c20c6d217e2150a61e3298b0f4c2012b5", [:mix], [], "hexpm", "81367c6d1eea5878ad726be80808eb5a787a23dee699f96e72b1109c57cdd8d9"},
|
||||||
"phoenix_swoosh": {:hex, :phoenix_swoosh, "1.2.0", "a544d83fde4a767efb78f45404a74c9e37b2a9c5ea3339692e65a6966731f935", [:mix], [{:finch, "~> 0.8", [hex: :finch, repo: "hexpm", optional: true]}, {:hackney, "~> 1.10", [hex: :hackney, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6", [hex: :phoenix, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_view, "~> 1.0 or ~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:swoosh, "~> 1.5", [hex: :swoosh, repo: "hexpm", optional: false]}], "hexpm", "e88d117251e89a16b92222415a6d87b99a96747ddf674fc5c7631de734811dba"},
|
|
||||||
"phoenix_template": {:hex, :phoenix_template, "1.0.1", "85f79e3ad1b0180abb43f9725973e3b8c2c3354a87245f91431eec60553ed3ef", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "157dc078f6226334c91cb32c1865bf3911686f8bcd6bcff86736f6253e6993ee"},
|
"phoenix_template": {:hex, :phoenix_template, "1.0.1", "85f79e3ad1b0180abb43f9725973e3b8c2c3354a87245f91431eec60553ed3ef", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "157dc078f6226334c91cb32c1865bf3911686f8bcd6bcff86736f6253e6993ee"},
|
||||||
"phoenix_view": {:hex, :phoenix_view, "2.0.2", "6bd4d2fd595ef80d33b439ede6a19326b78f0f1d8d62b9a318e3d9c1af351098", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}], "hexpm", "a929e7230ea5c7ee0e149ffcf44ce7cf7f4b6d2bfe1752dd7c084cdff152d36f"},
|
|
||||||
"plug": {:hex, :plug, "1.14.2", "cff7d4ec45b4ae176a227acd94a7ab536d9b37b942c8e8fa6dfc0fff98ff4d80", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "842fc50187e13cf4ac3b253d47d9474ed6c296a8732752835ce4a86acdf68d13"},
|
"plug": {:hex, :plug, "1.14.2", "cff7d4ec45b4ae176a227acd94a7ab536d9b37b942c8e8fa6dfc0fff98ff4d80", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "842fc50187e13cf4ac3b253d47d9474ed6c296a8732752835ce4a86acdf68d13"},
|
||||||
"plug_cowboy": {:hex, :plug_cowboy, "2.6.1", "9a3bbfceeb65eff5f39dab529e5cd79137ac36e913c02067dba3963a26efe9b2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613"},
|
"plug_cowboy": {:hex, :plug_cowboy, "2.6.1", "9a3bbfceeb65eff5f39dab529e5cd79137ac36e913c02067dba3963a26efe9b2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613"},
|
||||||
"plug_crypto": {:hex, :plug_crypto, "1.2.5", "918772575e48e81e455818229bf719d4ab4181fcbf7f85b68a35620f78d89ced", [:mix], [], "hexpm", "26549a1d6345e2172eb1c233866756ae44a9609bd33ee6f99147ab3fd87fd842"},
|
"plug_crypto": {:hex, :plug_crypto, "1.2.5", "918772575e48e81e455818229bf719d4ab4181fcbf7f85b68a35620f78d89ced", [:mix], [], "hexpm", "26549a1d6345e2172eb1c233866756ae44a9609bd33ee6f99147ab3fd87fd842"},
|
||||||
|
@ -10,64 +10,64 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:3
|
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:16
|
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:16
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Resend confirmation instructions"
|
msgid "Resend confirmation instructions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:3
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:29
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Reset password"
|
msgid "Reset password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:15
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:15
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:43
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:43
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "change email"
|
msgid "change email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:110
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:110
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:128
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:128
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "change language"
|
msgid "change language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:57
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:57
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:97
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:97
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "change password"
|
msgid "change password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:94
|
#: lib/memex_web/live/invite_live/index.html.heex:90
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "create invite"
|
msgid "create invite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:50
|
#: lib/memex_web/live/context_live/index.html.heex:50
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:38
|
#: lib/memex_web/live/context_live/show.html.heex:34
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:50
|
#: lib/memex_web/live/note_live/index.html.heex:50
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:38
|
#: lib/memex_web/live/note_live/show.html.heex:34
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:52
|
#: lib/memex_web/live/pipeline_live/index.html.heex:52
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:46
|
#: lib/memex_web/live/pipeline_live/show.html.heex:42
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:117
|
#: lib/memex_web/live/pipeline_live/show.html.heex:113
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:151
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:147
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete user"
|
msgid "delete user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:40
|
#: lib/memex_web/live/context_live/index.html.heex:40
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:28
|
#: lib/memex_web/live/context_live/show.html.heex:24
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:40
|
#: lib/memex_web/live/note_live/index.html.heex:40
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:28
|
#: lib/memex_web/live/note_live/show.html.heex:24
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:40
|
#: lib/memex_web/live/pipeline_live/index.html.heex:40
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:36
|
#: lib/memex_web/live/pipeline_live/show.html.heex:32
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:106
|
#: lib/memex_web/live/pipeline_live/show.html.heex:102
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "edit"
|
msgid "edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -77,39 +77,39 @@ msgstr ""
|
|||||||
msgid "invite someone new!"
|
msgid "invite someone new!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:109
|
#: lib/memex_web/components/core_components/topbar.html.heex:85
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:32
|
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:28
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:44
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:44
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:45
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:41
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:32
|
#: lib/memex_web/controllers/user_reset_password_html/new.html.heex:28
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:3
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:28
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:28
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "log in"
|
msgid "log in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:61
|
#: lib/memex_web/live/context_live/index.html.heex:57
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "new context"
|
msgid "new context"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:61
|
#: lib/memex_web/live/note_live/index.html.heex:57
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "new note"
|
msgid "new note"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:63
|
#: lib/memex_web/live/pipeline_live/index.html.heex:59
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "new pipeline"
|
msgid "new pipeline"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:100
|
#: lib/memex_web/components/core_components/topbar.html.heex:79
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:29
|
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:25
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:3
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:37
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:37
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:42
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:38
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:29
|
#: lib/memex_web/controllers/user_reset_password_html/new.html.heex:25
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:39
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:35
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "register"
|
msgid "register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -123,24 +123,24 @@ msgstr ""
|
|||||||
msgid "save"
|
msgid "save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:132
|
#: lib/memex_web/live/pipeline_live/show.html.heex:128
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "add step"
|
msgid "add step"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:47
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:47
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:3
|
#: lib/memex_web/controllers/user_reset_password_html/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:42
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:38
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "forgot your password?"
|
msgid "forgot your password?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:16
|
#: lib/memex_web/controllers/user_reset_password_html/new.html.heex:16
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "send instructions to reset password"
|
msgid "send instructions to reset password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:142
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:138
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "export data as json"
|
msgid "export data as json"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -156,24 +156,24 @@ msgid "copy invite link for %{invite_name}"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:48
|
#: lib/memex_web/live/context_live/index.html.heex:48
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:36
|
#: lib/memex_web/live/context_live/show.html.heex:32
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete %{context_slug}"
|
msgid "delete %{context_slug}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:48
|
#: lib/memex_web/live/note_live/index.html.heex:48
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:36
|
#: lib/memex_web/live/note_live/show.html.heex:32
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete %{note_slug}"
|
msgid "delete %{note_slug}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:49
|
#: lib/memex_web/live/pipeline_live/index.html.heex:49
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:44
|
#: lib/memex_web/live/pipeline_live/show.html.heex:40
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete %{pipeline_slug}"
|
msgid "delete %{pipeline_slug}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:115
|
#: lib/memex_web/live/pipeline_live/show.html.heex:111
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete %{step_title}"
|
msgid "delete %{step_title}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -198,7 +198,7 @@ msgstr ""
|
|||||||
msgid "edit %{pipeline_slug}"
|
msgid "edit %{pipeline_slug}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:104
|
#: lib/memex_web/live/pipeline_live/show.html.heex:100
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "edit %{step_title}"
|
msgid "edit %{step_title}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -208,12 +208,12 @@ msgstr ""
|
|||||||
msgid "edit invite for %{invite_name}"
|
msgid "edit invite for %{invite_name}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:94
|
#: lib/memex_web/live/pipeline_live/show.html.heex:90
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "move %{step_title} down"
|
msgid "move %{step_title} down"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:78
|
#: lib/memex_web/live/pipeline_live/show.html.heex:74
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "move %{step_title} up"
|
msgid "move %{step_title} up"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -10,64 +10,64 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:3
|
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:16
|
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:16
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Resend confirmation instructions"
|
msgid "Resend confirmation instructions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:3
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:29
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Reset password"
|
msgid "Reset password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:15
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:15
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:43
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:43
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "change email"
|
msgid "change email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:110
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:110
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:128
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:128
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "change language"
|
msgid "change language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:57
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:57
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:97
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:97
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "change password"
|
msgid "change password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:94
|
#: lib/memex_web/live/invite_live/index.html.heex:90
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "create invite"
|
msgid "create invite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:50
|
#: lib/memex_web/live/context_live/index.html.heex:50
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:38
|
#: lib/memex_web/live/context_live/show.html.heex:34
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:50
|
#: lib/memex_web/live/note_live/index.html.heex:50
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:38
|
#: lib/memex_web/live/note_live/show.html.heex:34
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:52
|
#: lib/memex_web/live/pipeline_live/index.html.heex:52
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:46
|
#: lib/memex_web/live/pipeline_live/show.html.heex:42
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:117
|
#: lib/memex_web/live/pipeline_live/show.html.heex:113
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:151
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:147
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete user"
|
msgid "delete user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:40
|
#: lib/memex_web/live/context_live/index.html.heex:40
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:28
|
#: lib/memex_web/live/context_live/show.html.heex:24
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:40
|
#: lib/memex_web/live/note_live/index.html.heex:40
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:28
|
#: lib/memex_web/live/note_live/show.html.heex:24
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:40
|
#: lib/memex_web/live/pipeline_live/index.html.heex:40
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:36
|
#: lib/memex_web/live/pipeline_live/show.html.heex:32
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:106
|
#: lib/memex_web/live/pipeline_live/show.html.heex:102
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "edit"
|
msgid "edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -77,39 +77,39 @@ msgstr ""
|
|||||||
msgid "invite someone new!"
|
msgid "invite someone new!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:109
|
#: lib/memex_web/components/core_components/topbar.html.heex:85
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:32
|
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:28
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:44
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:44
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:45
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:41
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:32
|
#: lib/memex_web/controllers/user_reset_password_html/new.html.heex:28
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:3
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:28
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:28
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "log in"
|
msgid "log in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:61
|
#: lib/memex_web/live/context_live/index.html.heex:57
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "new context"
|
msgid "new context"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:61
|
#: lib/memex_web/live/note_live/index.html.heex:57
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "new note"
|
msgid "new note"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:63
|
#: lib/memex_web/live/pipeline_live/index.html.heex:59
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "new pipeline"
|
msgid "new pipeline"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:100
|
#: lib/memex_web/components/core_components/topbar.html.heex:79
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:29
|
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:25
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:3
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:37
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:37
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:42
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:38
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:29
|
#: lib/memex_web/controllers/user_reset_password_html/new.html.heex:25
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:39
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:35
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "register"
|
msgid "register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -123,24 +123,24 @@ msgstr ""
|
|||||||
msgid "save"
|
msgid "save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:132
|
#: lib/memex_web/live/pipeline_live/show.html.heex:128
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "add step"
|
msgid "add step"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:47
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:47
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:3
|
#: lib/memex_web/controllers/user_reset_password_html/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:42
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:38
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "forgot your password?"
|
msgid "forgot your password?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:16
|
#: lib/memex_web/controllers/user_reset_password_html/new.html.heex:16
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "send instructions to reset password"
|
msgid "send instructions to reset password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:142
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:138
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "export data as json"
|
msgid "export data as json"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -156,24 +156,24 @@ msgid "copy invite link for %{invite_name}"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:48
|
#: lib/memex_web/live/context_live/index.html.heex:48
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:36
|
#: lib/memex_web/live/context_live/show.html.heex:32
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete %{context_slug}"
|
msgid "delete %{context_slug}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:48
|
#: lib/memex_web/live/note_live/index.html.heex:48
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:36
|
#: lib/memex_web/live/note_live/show.html.heex:32
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete %{note_slug}"
|
msgid "delete %{note_slug}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:49
|
#: lib/memex_web/live/pipeline_live/index.html.heex:49
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:44
|
#: lib/memex_web/live/pipeline_live/show.html.heex:40
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete %{pipeline_slug}"
|
msgid "delete %{pipeline_slug}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:115
|
#: lib/memex_web/live/pipeline_live/show.html.heex:111
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete %{step_title}"
|
msgid "delete %{step_title}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -198,7 +198,7 @@ msgstr ""
|
|||||||
msgid "edit %{pipeline_slug}"
|
msgid "edit %{pipeline_slug}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:104
|
#: lib/memex_web/live/pipeline_live/show.html.heex:100
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "edit %{step_title}"
|
msgid "edit %{step_title}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -208,12 +208,12 @@ msgstr ""
|
|||||||
msgid "edit invite for %{invite_name}"
|
msgid "edit invite for %{invite_name}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:94
|
#: lib/memex_web/live/pipeline_live/show.html.heex:90
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "move %{step_title} down"
|
msgid "move %{step_title} down"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:78
|
#: lib/memex_web/live/pipeline_live/show.html.heex:74
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "move %{step_title} up"
|
msgid "move %{step_title} up"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -17,7 +17,7 @@ msgstr ""
|
|||||||
msgid "Confirm your account"
|
msgid "Confirm your account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/layout/live.html.heex:43
|
#: lib/memex_web/components/layouts/live.html.heex:43
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Reconnecting..."
|
msgid "Reconnecting..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -27,9 +27,9 @@ msgstr ""
|
|||||||
msgid "Reset your password"
|
msgid "Reset your password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:19
|
#: lib/memex_web/live/context_live/show.html.heex:15
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:19
|
#: lib/memex_web/live/note_live/show.html.heex:15
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:27
|
#: lib/memex_web/live/pipeline_live/show.html.heex:23
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Visibility: %{visibility}"
|
msgid "Visibility: %{visibility}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -49,8 +49,8 @@ msgstr ""
|
|||||||
msgid "built with sharing and collaboration in mind"
|
msgid "built with sharing and collaboration in mind"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:20
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:20
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:76
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:76
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "confirm new password"
|
msgid "confirm new password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -61,7 +61,7 @@ msgstr ""
|
|||||||
msgid "content"
|
msgid "content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:37
|
#: lib/memex_web/components/core_components/topbar.html.heex:28
|
||||||
#: lib/memex_web/live/context_live/index.ex:35
|
#: lib/memex_web/live/context_live/index.ex:35
|
||||||
#: lib/memex_web/live/context_live/index.ex:43
|
#: lib/memex_web/live/context_live/index.ex:43
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:3
|
#: lib/memex_web/live/context_live/index.html.heex:3
|
||||||
@ -79,8 +79,8 @@ msgstr ""
|
|||||||
msgid "convenient:"
|
msgid "convenient:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:31
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:31
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:85
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:85
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "current password"
|
msgid "current password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -105,10 +105,10 @@ msgstr ""
|
|||||||
msgid "edit invite"
|
msgid "edit invite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:20
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:20
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:13
|
#: lib/memex_web/controllers/user_reset_password_html/new.html.heex:13
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:17
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:17
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:27
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:27
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -123,8 +123,8 @@ msgstr ""
|
|||||||
msgid "enable"
|
msgid "enable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:32
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:32
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:123
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:123
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "english"
|
msgid "english"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -154,7 +154,7 @@ msgstr ""
|
|||||||
msgid "invite only"
|
msgid "invite only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:58
|
#: lib/memex_web/components/core_components/topbar.html.heex:43
|
||||||
#: lib/memex_web/live/invite_live/index.ex:31
|
#: lib/memex_web/live/invite_live/index.ex:31
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:3
|
#: lib/memex_web/live/invite_live/index.html.heex:3
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
@ -176,8 +176,8 @@ msgstr ""
|
|||||||
msgid "new invite"
|
msgid "new invite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:16
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:16
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:69
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:69
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "new password"
|
msgid "new password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -192,7 +192,7 @@ msgstr ""
|
|||||||
msgid "no notes found"
|
msgid "no notes found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:28
|
#: lib/memex_web/components/core_components/topbar.html.heex:22
|
||||||
#: lib/memex_web/live/note_live/index.ex:35
|
#: lib/memex_web/live/note_live/index.ex:35
|
||||||
#: lib/memex_web/live/note_live/index.ex:43
|
#: lib/memex_web/live/note_live/index.ex:43
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:3
|
#: lib/memex_web/live/note_live/index.html.heex:3
|
||||||
@ -205,7 +205,7 @@ msgstr ""
|
|||||||
msgid "notes:"
|
msgid "notes:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:46
|
#: lib/memex_web/components/core_components/topbar.html.heex:34
|
||||||
#: lib/memex_web/live/pipeline_live/index.ex:35
|
#: lib/memex_web/live/pipeline_live/index.ex:35
|
||||||
#: lib/memex_web/live/pipeline_live/index.ex:43
|
#: lib/memex_web/live/pipeline_live/index.ex:43
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:3
|
#: lib/memex_web/live/pipeline_live/index.html.heex:3
|
||||||
@ -238,7 +238,7 @@ msgstr ""
|
|||||||
msgid "public signups"
|
msgid "public signups"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:32
|
#: lib/memex_web/controllers/user_registration_controller.ex:31
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "register"
|
msgid "register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -277,7 +277,7 @@ msgid "set unlimited"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_settings_controller.ex:10
|
#: lib/memex_web/controllers/user_settings_controller.ex:10
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:3
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:3
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "settings"
|
msgid "settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -299,7 +299,7 @@ msgstr ""
|
|||||||
msgid "tags"
|
msgid "tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:130
|
#: lib/memex_web/live/invite_live/index.html.heex:126
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "users"
|
msgid "users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -414,7 +414,7 @@ msgstr ""
|
|||||||
msgid "%{slug} could not be found"
|
msgid "%{slug} could not be found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.ex:15
|
#: lib/memex_web/live/home_live.ex:14
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "home"
|
msgid "home"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -431,12 +431,12 @@ msgstr ""
|
|||||||
msgid "faq"
|
msgid "faq"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:8
|
#: lib/memex_web/components/core_components/topbar.html.heex:5
|
||||||
|
#: lib/memex_web/components/layouts.ex:15
|
||||||
|
#: lib/memex_web/components/layouts/root.html.heex:8
|
||||||
|
#: lib/memex_web/components/layouts/root.html.heex:9
|
||||||
|
#: lib/memex_web/controllers/error_html/error.html.heex:8
|
||||||
#: lib/memex_web/live/home_live.html.heex:3
|
#: lib/memex_web/live/home_live.html.heex:3
|
||||||
#: lib/memex_web/templates/error/error.html.heex:8
|
|
||||||
#: lib/memex_web/templates/layout/root.html.heex:8
|
|
||||||
#: lib/memex_web/templates/layout/root.html.heex:9
|
|
||||||
#: lib/memex_web/views/layout_view.ex:14
|
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "memEx"
|
msgid "memEx"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -446,7 +446,7 @@ msgstr ""
|
|||||||
msgid "what is this?"
|
msgid "what is this?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:64
|
#: lib/memex_web/live/pipeline_live/show.html.heex:60
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{position}. %{title}"
|
msgid "%{position}. %{title}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -471,12 +471,12 @@ msgstr ""
|
|||||||
msgid "add step to %{slug}"
|
msgid "add step to %{slug}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:58
|
#: lib/memex_web/live/pipeline_live/show.html.heex:54
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "no steps"
|
msgid "no steps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:53
|
#: lib/memex_web/live/pipeline_live/show.html.heex:49
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "steps:"
|
msgid "steps:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -583,7 +583,7 @@ msgstr ""
|
|||||||
msgid "zettelkasten"
|
msgid "zettelkasten"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/views/layout_view.ex:10
|
#: lib/memex_web/components/layouts.ex:11
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "memEx | %{title}"
|
msgid "memEx | %{title}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -613,7 +613,7 @@ msgstr ""
|
|||||||
msgid "while memEx fully supports multiple users, each memEx instance should be treated as a single cohesive and collaborative document."
|
msgid "while memEx fully supports multiple users, each memEx instance should be treated as a single cohesive and collaborative document."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:28
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:28
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "language"
|
msgid "language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -653,17 +653,17 @@ msgstr ""
|
|||||||
msgid "get involved"
|
msgid "get involved"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:13
|
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:13
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:102
|
#: lib/memex_web/live/invite_live/index.html.heex:98
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "admins"
|
msgid "admins"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:23
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:23
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "keep me logged in for 60 days"
|
msgid "keep me logged in for 60 days"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -673,8 +673,8 @@ msgstr ""
|
|||||||
msgid "name"
|
msgid "name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:24
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:24
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:20
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:20
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "password"
|
msgid "password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -702,12 +702,12 @@ msgstr ""
|
|||||||
msgid "close modal"
|
msgid "close modal"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:89
|
#: lib/memex_web/components/core_components/topbar.html.heex:71
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "live dashboard"
|
msgid "live dashboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:75
|
#: lib/memex_web/components/core_components/topbar.html.heex:57
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "log out"
|
msgid "log out"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -10,83 +10,83 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
|
|
||||||
#: lib/memex/accounts/email.ex:30
|
#: lib/memex/accounts/email.ex:31
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Confirm your Memex account"
|
msgid "Confirm your Memex account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.html.heex:3
|
#: lib/memex_web/controllers/email_html/confirm_email_html.html.heex:3
|
||||||
#: lib/memex_web/templates/email/confirm_email.txt.eex:2
|
#: lib/memex_web/controllers/email_html/confirm_email_text.txt.eex:2
|
||||||
#: lib/memex_web/templates/email/reset_password.html.heex:3
|
#: lib/memex_web/controllers/email_html/reset_password_html.html.heex:3
|
||||||
#: lib/memex_web/templates/email/reset_password.txt.eex:2
|
#: lib/memex_web/controllers/email_html/reset_password_text.txt.eex:2
|
||||||
#: lib/memex_web/templates/email/update_email.html.heex:3
|
#: lib/memex_web/controllers/email_html/update_email_html.html.heex:3
|
||||||
#: lib/memex_web/templates/email/update_email.txt.eex:2
|
#: lib/memex_web/controllers/email_html/update_email_text.txt.eex:2
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Hi %{email},"
|
msgid "Hi %{email},"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.txt.eex:10
|
#: lib/memex_web/controllers/email_html/confirm_email_text.txt.eex:10
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "If you didn't create an account at %{url}, please ignore this."
|
msgid "If you didn't create an account at %{url}, please ignore this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/reset_password.txt.eex:8
|
#: lib/memex_web/controllers/email_html/reset_password_text.txt.eex:8
|
||||||
#: lib/memex_web/templates/email/update_email.txt.eex:8
|
#: lib/memex_web/controllers/email_html/update_email_text.txt.eex:8
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "If you didn't request this change from %{url}, please ignore this."
|
msgid "If you didn't request this change from %{url}, please ignore this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex/accounts/email.ex:37
|
#: lib/memex/accounts/email.ex:38
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Reset your Memex password"
|
msgid "Reset your Memex password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex/accounts/email.ex:44
|
#: lib/memex/accounts/email.ex:45
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Update your Memex email"
|
msgid "Update your Memex email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/update_email.html.heex:8
|
#: lib/memex_web/controllers/email_html/update_email_html.html.heex:8
|
||||||
#: lib/memex_web/templates/email/update_email.txt.eex:4
|
#: lib/memex_web/controllers/email_html/update_email_text.txt.eex:4
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "You can change your email by visiting the URL below:"
|
msgid "You can change your email by visiting the URL below:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.html.heex:14
|
#: lib/memex_web/controllers/email_html/confirm_email_html.html.heex:14
|
||||||
#: lib/memex_web/templates/email/confirm_email.txt.eex:6
|
#: lib/memex_web/controllers/email_html/confirm_email_text.txt.eex:6
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "You can confirm your account by visiting the URL below:"
|
msgid "You can confirm your account by visiting the URL below:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/reset_password.html.heex:8
|
#: lib/memex_web/controllers/email_html/reset_password_html.html.heex:8
|
||||||
#: lib/memex_web/templates/email/reset_password.txt.eex:4
|
#: lib/memex_web/controllers/email_html/reset_password_text.txt.eex:4
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "You can reset your password by visiting the URL below:"
|
msgid "You can reset your password by visiting the URL below:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/layout/email.html.heex:13
|
#: lib/memex_web/components/layouts/email_html.html.heex:13
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "This email was sent from memEx"
|
msgid "This email was sent from memEx"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/layout/email.txt.eex:9
|
#: lib/memex_web/components/layouts/email_text.txt.eex:9
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "This email was sent from memEx at %{url}"
|
msgid "This email was sent from memEx at %{url}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.html.heex:22
|
#: lib/memex_web/controllers/email_html/confirm_email_html.html.heex:22
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "If you didn't create an account at memEx, please ignore this."
|
msgid "If you didn't create an account at memEx, please ignore this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/reset_password.html.heex:16
|
#: lib/memex_web/controllers/email_html/reset_password_html.html.heex:16
|
||||||
#: lib/memex_web/templates/email/update_email.html.heex:16
|
#: lib/memex_web/controllers/email_html/update_email_html.html.heex:16
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "If you didn't request this change from memEx, please ignore this."
|
msgid "If you didn't request this change from memEx, please ignore this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.html.heex:9
|
#: lib/memex_web/controllers/email_html/confirm_email_html.html.heex:9
|
||||||
#: lib/memex_web/templates/email/confirm_email.txt.eex:4
|
#: lib/memex_web/controllers/email_html/confirm_email_text.txt.eex:4
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "Welcome to memEx"
|
msgid "Welcome to memEx"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
|
|
||||||
#: lib/memex_web/templates/error/error.html.heex:8
|
#: lib/memex_web/controllers/error_html/error.html.heex:8
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -25,14 +25,14 @@ msgstr ""
|
|||||||
msgid "Reset password link is invalid or it has expired."
|
msgid "Reset password link is invalid or it has expired."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:22
|
#: lib/memex_web/controllers/user_registration_controller.ex:21
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:51
|
#: lib/memex_web/controllers/user_registration_controller.ex:50
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Sorry, public registration is disabled"
|
msgid "Sorry, public registration is disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:12
|
#: lib/memex_web/controllers/user_registration_controller.ex:11
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:41
|
#: lib/memex_web/controllers/user_registration_controller.ex:40
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Sorry, this invite was not found or expired"
|
msgid "Sorry, this invite was not found or expired"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -42,13 +42,13 @@ msgstr ""
|
|||||||
msgid "User confirmation link is invalid or it has expired."
|
msgid "User confirmation link is invalid or it has expired."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_auth.ex:177
|
#: lib/memex_web/controllers/user_auth.ex:266
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "You are not authorized to view this page."
|
msgid "You are not authorized to view this page."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_auth.ex:39
|
#: lib/memex_web/controllers/user_auth.ex:38
|
||||||
#: lib/memex_web/controllers/user_auth.ex:161
|
#: lib/memex_web/controllers/user_auth.ex:250
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "You must confirm your account and log in to access this page."
|
msgid "You must confirm your account and log in to access this page."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -73,51 +73,54 @@ msgstr ""
|
|||||||
msgid "must have the @ sign and no spaces"
|
msgid "must have the @ sign and no spaces"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex/contexts/context.ex:57
|
#: lib/memex/contexts/context.ex:58
|
||||||
#: lib/memex/contexts/context.ex:70
|
#: lib/memex/contexts/context.ex:71
|
||||||
#: lib/memex/notes/note.ex:56
|
#: lib/memex/notes/note.ex:57
|
||||||
#: lib/memex/notes/note.ex:69
|
#: lib/memex/notes/note.ex:70
|
||||||
#: lib/memex/pipelines/pipeline.ex:59
|
#: lib/memex/pipelines/pipeline.ex:60
|
||||||
#: lib/memex/pipelines/pipeline.ex:72
|
#: lib/memex/pipelines/pipeline.ex:73
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "invalid format: only numbers, letters and hyphen are accepted"
|
msgid "invalid format: only numbers, letters and hyphen are accepted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/error/error.html.heex:31
|
#: lib/memex_web/controllers/error_html/error.html.heex:28
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "go back home"
|
msgid "go back home"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/views/error_view.ex:10
|
#: lib/memex_web/controllers/error_html.ex:11
|
||||||
|
#: lib/memex_web/controllers/error_json.ex:9
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "internal server error"
|
msgid "internal server error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/views/error_view.ex:8
|
#: lib/memex_web/controllers/error_html.ex:9
|
||||||
|
#: lib/memex_web/controllers/error_json.ex:7
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "not found"
|
msgid "not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/views/error_view.ex:9
|
#: lib/memex_web/controllers/error_html.ex:10
|
||||||
|
#: lib/memex_web/controllers/error_json.ex:8
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "unauthorized"
|
msgid "unauthorized"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex/contexts/context.ex:83
|
#: lib/memex/contexts/context.ex:84
|
||||||
#: lib/memex/notes/note.ex:82
|
#: lib/memex/notes/note.ex:83
|
||||||
#: lib/memex/pipelines/pipeline.ex:85
|
#: lib/memex/pipelines/pipeline.ex:86
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "invalid format: only numbers, letters and hyphen are accepted. tags must be comma-delimited"
|
msgid "invalid format: only numbers, letters and hyphen are accepted. tags must be comma-delimited"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:13
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:13
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:13
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:13
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:64
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:64
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "oops, something went wrong! please check the errors below."
|
msgid "oops, something went wrong! please check the errors below."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:70
|
#: lib/memex_web/controllers/user_registration_controller.ex:69
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "sorry, this invite was not found or expired"
|
msgid "sorry, this invite was not found or expired"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -132,8 +135,18 @@ msgstr ""
|
|||||||
msgid "unable to delete user"
|
msgid "unable to delete user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:22
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:22
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:118
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:118
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "oops, something went wrong! please check the errors below"
|
msgid "oops, something went wrong! please check the errors below"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/controllers/user_auth.ex:195
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "You must log in as an administrator to access this page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/controllers/user_auth.ex:178
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "You must log in to access this page."
|
||||||
|
msgstr ""
|
||||||
|
@ -55,7 +55,7 @@ msgstr ""
|
|||||||
msgid "Password reset successfully."
|
msgid "Password reset successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:130
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:130
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "are you sure you want to change your language?"
|
msgid "are you sure you want to change your language?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -65,12 +65,12 @@ msgstr ""
|
|||||||
msgid "are you sure you want to delete the invite for %{invite_name}?"
|
msgid "are you sure you want to delete the invite for %{invite_name}?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:149
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:145
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "are you sure you want to delete your account?"
|
msgid "are you sure you want to delete your account?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:74
|
#: lib/memex_web/components/core_components/topbar.html.heex:56
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "are you sure you want to log out?"
|
msgid "are you sure you want to log out?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -81,12 +81,12 @@ msgid "are you sure you want to make %{invite_name} unlimited?"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:47
|
#: lib/memex_web/live/context_live/index.html.heex:47
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:35
|
#: lib/memex_web/live/context_live/show.html.heex:31
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:47
|
#: lib/memex_web/live/note_live/index.html.heex:47
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:35
|
#: lib/memex_web/live/note_live/show.html.heex:31
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:47
|
#: lib/memex_web/live/pipeline_live/index.html.heex:47
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:43
|
#: lib/memex_web/live/pipeline_live/show.html.heex:39
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:114
|
#: lib/memex_web/live/pipeline_live/show.html.heex:110
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "are you sure?"
|
msgid "are you sure?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -121,7 +121,7 @@ msgstr ""
|
|||||||
msgid "copied to clipboard"
|
msgid "copied to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:65
|
#: lib/memex_web/controllers/user_registration_controller.ex:64
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "please check your email to verify your account"
|
msgid "please check your email to verify your account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -146,8 +146,8 @@ msgstr ""
|
|||||||
msgid "your account has been deleted"
|
msgid "your account has been deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:113
|
#: lib/memex_web/live/invite_live/index.html.heex:109
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:141
|
#: lib/memex_web/live/invite_live/index.html.heex:137
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "are you sure you want to delete %{email}? this action is permanent!"
|
msgid "are you sure you want to delete %{email}? this action is permanent!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -15,7 +15,7 @@ msgstr ""
|
|||||||
msgid "Confirm your account"
|
msgid "Confirm your account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/layout/live.html.heex:43
|
#: lib/memex_web/components/layouts/live.html.heex:43
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Reconnecting..."
|
msgid "Reconnecting..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -25,9 +25,9 @@ msgstr ""
|
|||||||
msgid "Reset your password"
|
msgid "Reset your password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:19
|
#: lib/memex_web/live/context_live/show.html.heex:15
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:19
|
#: lib/memex_web/live/note_live/show.html.heex:15
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:27
|
#: lib/memex_web/live/pipeline_live/show.html.heex:23
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Visibility: %{visibility}"
|
msgid "Visibility: %{visibility}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -47,8 +47,8 @@ msgstr ""
|
|||||||
msgid "built with sharing and collaboration in mind"
|
msgid "built with sharing and collaboration in mind"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:20
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:20
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:76
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:76
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "confirm new password"
|
msgid "confirm new password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -59,7 +59,7 @@ msgstr ""
|
|||||||
msgid "content"
|
msgid "content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:37
|
#: lib/memex_web/components/core_components/topbar.html.heex:28
|
||||||
#: lib/memex_web/live/context_live/index.ex:35
|
#: lib/memex_web/live/context_live/index.ex:35
|
||||||
#: lib/memex_web/live/context_live/index.ex:43
|
#: lib/memex_web/live/context_live/index.ex:43
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:3
|
#: lib/memex_web/live/context_live/index.html.heex:3
|
||||||
@ -77,8 +77,8 @@ msgstr ""
|
|||||||
msgid "convenient:"
|
msgid "convenient:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:31
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:31
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:85
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:85
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "current password"
|
msgid "current password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -103,10 +103,10 @@ msgstr ""
|
|||||||
msgid "edit invite"
|
msgid "edit invite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:20
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:20
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:13
|
#: lib/memex_web/controllers/user_reset_password_html/new.html.heex:13
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:17
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:17
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:27
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:27
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -121,8 +121,8 @@ msgstr ""
|
|||||||
msgid "enable"
|
msgid "enable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:32
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:32
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:123
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:123
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "english"
|
msgid "english"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -152,7 +152,7 @@ msgstr ""
|
|||||||
msgid "invite only"
|
msgid "invite only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:58
|
#: lib/memex_web/components/core_components/topbar.html.heex:43
|
||||||
#: lib/memex_web/live/invite_live/index.ex:31
|
#: lib/memex_web/live/invite_live/index.ex:31
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:3
|
#: lib/memex_web/live/invite_live/index.html.heex:3
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
@ -174,8 +174,8 @@ msgstr ""
|
|||||||
msgid "new invite"
|
msgid "new invite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:16
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:16
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:69
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:69
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "new password"
|
msgid "new password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -190,7 +190,7 @@ msgstr ""
|
|||||||
msgid "no notes found"
|
msgid "no notes found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:28
|
#: lib/memex_web/components/core_components/topbar.html.heex:22
|
||||||
#: lib/memex_web/live/note_live/index.ex:35
|
#: lib/memex_web/live/note_live/index.ex:35
|
||||||
#: lib/memex_web/live/note_live/index.ex:43
|
#: lib/memex_web/live/note_live/index.ex:43
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:3
|
#: lib/memex_web/live/note_live/index.html.heex:3
|
||||||
@ -203,7 +203,7 @@ msgstr ""
|
|||||||
msgid "notes:"
|
msgid "notes:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:46
|
#: lib/memex_web/components/core_components/topbar.html.heex:34
|
||||||
#: lib/memex_web/live/pipeline_live/index.ex:35
|
#: lib/memex_web/live/pipeline_live/index.ex:35
|
||||||
#: lib/memex_web/live/pipeline_live/index.ex:43
|
#: lib/memex_web/live/pipeline_live/index.ex:43
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:3
|
#: lib/memex_web/live/pipeline_live/index.html.heex:3
|
||||||
@ -236,7 +236,7 @@ msgstr ""
|
|||||||
msgid "public signups"
|
msgid "public signups"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:32
|
#: lib/memex_web/controllers/user_registration_controller.ex:31
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "register"
|
msgid "register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -275,7 +275,7 @@ msgid "set unlimited"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_settings_controller.ex:10
|
#: lib/memex_web/controllers/user_settings_controller.ex:10
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:3
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:3
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "settings"
|
msgid "settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -297,7 +297,7 @@ msgstr ""
|
|||||||
msgid "tags"
|
msgid "tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:130
|
#: lib/memex_web/live/invite_live/index.html.heex:126
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "users"
|
msgid "users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -412,7 +412,7 @@ msgstr ""
|
|||||||
msgid "%{slug} could not be found"
|
msgid "%{slug} could not be found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.ex:15
|
#: lib/memex_web/live/home_live.ex:14
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "home"
|
msgid "home"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -429,12 +429,12 @@ msgstr ""
|
|||||||
msgid "faq"
|
msgid "faq"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:8
|
#: lib/memex_web/components/core_components/topbar.html.heex:5
|
||||||
|
#: lib/memex_web/components/layouts.ex:15
|
||||||
|
#: lib/memex_web/components/layouts/root.html.heex:8
|
||||||
|
#: lib/memex_web/components/layouts/root.html.heex:9
|
||||||
|
#: lib/memex_web/controllers/error_html/error.html.heex:8
|
||||||
#: lib/memex_web/live/home_live.html.heex:3
|
#: lib/memex_web/live/home_live.html.heex:3
|
||||||
#: lib/memex_web/templates/error/error.html.heex:8
|
|
||||||
#: lib/memex_web/templates/layout/root.html.heex:8
|
|
||||||
#: lib/memex_web/templates/layout/root.html.heex:9
|
|
||||||
#: lib/memex_web/views/layout_view.ex:14
|
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "memEx"
|
msgid "memEx"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -444,7 +444,7 @@ msgstr ""
|
|||||||
msgid "what is this?"
|
msgid "what is this?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:64
|
#: lib/memex_web/live/pipeline_live/show.html.heex:60
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{position}. %{title}"
|
msgid "%{position}. %{title}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -469,12 +469,12 @@ msgstr ""
|
|||||||
msgid "add step to %{slug}"
|
msgid "add step to %{slug}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:58
|
#: lib/memex_web/live/pipeline_live/show.html.heex:54
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "no steps"
|
msgid "no steps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:53
|
#: lib/memex_web/live/pipeline_live/show.html.heex:49
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "steps:"
|
msgid "steps:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -581,7 +581,7 @@ msgstr ""
|
|||||||
msgid "zettelkasten"
|
msgid "zettelkasten"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/views/layout_view.ex:10
|
#: lib/memex_web/components/layouts.ex:11
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "memEx | %{title}"
|
msgid "memEx | %{title}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -611,7 +611,7 @@ msgstr ""
|
|||||||
msgid "while memEx fully supports multiple users, each memEx instance should be treated as a single cohesive and collaborative document."
|
msgid "while memEx fully supports multiple users, each memEx instance should be treated as a single cohesive and collaborative document."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:28
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:28
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "language"
|
msgid "language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -651,17 +651,17 @@ msgstr ""
|
|||||||
msgid "get involved"
|
msgid "get involved"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:13
|
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:13
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:102
|
#: lib/memex_web/live/invite_live/index.html.heex:98
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "admins"
|
msgid "admins"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:23
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:23
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "keep me logged in for 60 days"
|
msgid "keep me logged in for 60 days"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -671,8 +671,8 @@ msgstr ""
|
|||||||
msgid "name"
|
msgid "name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:24
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:24
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:20
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:20
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "password"
|
msgid "password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -700,12 +700,12 @@ msgstr ""
|
|||||||
msgid "close modal"
|
msgid "close modal"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:89
|
#: lib/memex_web/components/core_components/topbar.html.heex:71
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "live dashboard"
|
msgid "live dashboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:75
|
#: lib/memex_web/components/core_components/topbar.html.heex:57
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "log out"
|
msgid "log out"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -10,83 +10,83 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex/accounts/email.ex:30
|
#: lib/memex/accounts/email.ex:31
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Confirm your Memex account"
|
msgid "Confirm your Memex account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.html.heex:3
|
#: lib/memex_web/controllers/email_html/confirm_email_html.html.heex:3
|
||||||
#: lib/memex_web/templates/email/confirm_email.txt.eex:2
|
#: lib/memex_web/controllers/email_html/confirm_email_text.txt.eex:2
|
||||||
#: lib/memex_web/templates/email/reset_password.html.heex:3
|
#: lib/memex_web/controllers/email_html/reset_password_html.html.heex:3
|
||||||
#: lib/memex_web/templates/email/reset_password.txt.eex:2
|
#: lib/memex_web/controllers/email_html/reset_password_text.txt.eex:2
|
||||||
#: lib/memex_web/templates/email/update_email.html.heex:3
|
#: lib/memex_web/controllers/email_html/update_email_html.html.heex:3
|
||||||
#: lib/memex_web/templates/email/update_email.txt.eex:2
|
#: lib/memex_web/controllers/email_html/update_email_text.txt.eex:2
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Hi %{email},"
|
msgid "Hi %{email},"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.txt.eex:10
|
#: lib/memex_web/controllers/email_html/confirm_email_text.txt.eex:10
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "If you didn't create an account at %{url}, please ignore this."
|
msgid "If you didn't create an account at %{url}, please ignore this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/reset_password.txt.eex:8
|
#: lib/memex_web/controllers/email_html/reset_password_text.txt.eex:8
|
||||||
#: lib/memex_web/templates/email/update_email.txt.eex:8
|
#: lib/memex_web/controllers/email_html/update_email_text.txt.eex:8
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "If you didn't request this change from %{url}, please ignore this."
|
msgid "If you didn't request this change from %{url}, please ignore this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex/accounts/email.ex:37
|
#: lib/memex/accounts/email.ex:38
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Reset your Memex password"
|
msgid "Reset your Memex password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex/accounts/email.ex:44
|
#: lib/memex/accounts/email.ex:45
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Update your Memex email"
|
msgid "Update your Memex email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/update_email.html.heex:8
|
#: lib/memex_web/controllers/email_html/update_email_html.html.heex:8
|
||||||
#: lib/memex_web/templates/email/update_email.txt.eex:4
|
#: lib/memex_web/controllers/email_html/update_email_text.txt.eex:4
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "You can change your email by visiting the URL below:"
|
msgid "You can change your email by visiting the URL below:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.html.heex:14
|
#: lib/memex_web/controllers/email_html/confirm_email_html.html.heex:14
|
||||||
#: lib/memex_web/templates/email/confirm_email.txt.eex:6
|
#: lib/memex_web/controllers/email_html/confirm_email_text.txt.eex:6
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "You can confirm your account by visiting the URL below:"
|
msgid "You can confirm your account by visiting the URL below:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/reset_password.html.heex:8
|
#: lib/memex_web/controllers/email_html/reset_password_html.html.heex:8
|
||||||
#: lib/memex_web/templates/email/reset_password.txt.eex:4
|
#: lib/memex_web/controllers/email_html/reset_password_text.txt.eex:4
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "You can reset your password by visiting the URL below:"
|
msgid "You can reset your password by visiting the URL below:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/layout/email.html.heex:13
|
#: lib/memex_web/components/layouts/email_html.html.heex:13
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "This email was sent from memEx"
|
msgid "This email was sent from memEx"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/layout/email.txt.eex:9
|
#: lib/memex_web/components/layouts/email_text.txt.eex:9
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "This email was sent from memEx at %{url}"
|
msgid "This email was sent from memEx at %{url}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.html.heex:22
|
#: lib/memex_web/controllers/email_html/confirm_email_html.html.heex:22
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "If you didn't create an account at memEx, please ignore this."
|
msgid "If you didn't create an account at memEx, please ignore this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/reset_password.html.heex:16
|
#: lib/memex_web/controllers/email_html/reset_password_html.html.heex:16
|
||||||
#: lib/memex_web/templates/email/update_email.html.heex:16
|
#: lib/memex_web/controllers/email_html/update_email_html.html.heex:16
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "If you didn't request this change from memEx, please ignore this."
|
msgid "If you didn't request this change from memEx, please ignore this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.html.heex:9
|
#: lib/memex_web/controllers/email_html/confirm_email_html.html.heex:9
|
||||||
#: lib/memex_web/templates/email/confirm_email.txt.eex:4
|
#: lib/memex_web/controllers/email_html/confirm_email_text.txt.eex:4
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Welcome to memEx"
|
msgid "Welcome to memEx"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -11,64 +11,64 @@ msgstr ""
|
|||||||
"Language: en\n"
|
"Language: en\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:3
|
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:16
|
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:16
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Resend confirmation instructions"
|
msgid "Resend confirmation instructions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:3
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:29
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Reset password"
|
msgid "Reset password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:15
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:15
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:43
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:43
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "change email"
|
msgid "change email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:110
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:110
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:128
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:128
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "change language"
|
msgid "change language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:57
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:57
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:97
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:97
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "change password"
|
msgid "change password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:94
|
#: lib/memex_web/live/invite_live/index.html.heex:90
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "create invite"
|
msgid "create invite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:50
|
#: lib/memex_web/live/context_live/index.html.heex:50
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:38
|
#: lib/memex_web/live/context_live/show.html.heex:34
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:50
|
#: lib/memex_web/live/note_live/index.html.heex:50
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:38
|
#: lib/memex_web/live/note_live/show.html.heex:34
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:52
|
#: lib/memex_web/live/pipeline_live/index.html.heex:52
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:46
|
#: lib/memex_web/live/pipeline_live/show.html.heex:42
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:117
|
#: lib/memex_web/live/pipeline_live/show.html.heex:113
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:151
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:147
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete user"
|
msgid "delete user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:40
|
#: lib/memex_web/live/context_live/index.html.heex:40
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:28
|
#: lib/memex_web/live/context_live/show.html.heex:24
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:40
|
#: lib/memex_web/live/note_live/index.html.heex:40
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:28
|
#: lib/memex_web/live/note_live/show.html.heex:24
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:40
|
#: lib/memex_web/live/pipeline_live/index.html.heex:40
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:36
|
#: lib/memex_web/live/pipeline_live/show.html.heex:32
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:106
|
#: lib/memex_web/live/pipeline_live/show.html.heex:102
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "edit"
|
msgid "edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -78,39 +78,39 @@ msgstr ""
|
|||||||
msgid "invite someone new!"
|
msgid "invite someone new!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:109
|
#: lib/memex_web/components/core_components/topbar.html.heex:85
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:32
|
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:28
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:44
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:44
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:45
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:41
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:32
|
#: lib/memex_web/controllers/user_reset_password_html/new.html.heex:28
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:3
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:28
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:28
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "log in"
|
msgid "log in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:61
|
#: lib/memex_web/live/context_live/index.html.heex:57
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "new context"
|
msgid "new context"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:61
|
#: lib/memex_web/live/note_live/index.html.heex:57
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "new note"
|
msgid "new note"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:63
|
#: lib/memex_web/live/pipeline_live/index.html.heex:59
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "new pipeline"
|
msgid "new pipeline"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:100
|
#: lib/memex_web/components/core_components/topbar.html.heex:79
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:29
|
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:25
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:3
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:37
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:37
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:42
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:38
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:29
|
#: lib/memex_web/controllers/user_reset_password_html/new.html.heex:25
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:39
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:35
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "register"
|
msgid "register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -124,24 +124,24 @@ msgstr ""
|
|||||||
msgid "save"
|
msgid "save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:132
|
#: lib/memex_web/live/pipeline_live/show.html.heex:128
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "add step"
|
msgid "add step"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:47
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:47
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:3
|
#: lib/memex_web/controllers/user_reset_password_html/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:42
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:38
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "forgot your password?"
|
msgid "forgot your password?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:16
|
#: lib/memex_web/controllers/user_reset_password_html/new.html.heex:16
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "send instructions to reset password"
|
msgid "send instructions to reset password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:142
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:138
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "export data as json"
|
msgid "export data as json"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -157,24 +157,24 @@ msgid "copy invite link for %{invite_name}"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:48
|
#: lib/memex_web/live/context_live/index.html.heex:48
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:36
|
#: lib/memex_web/live/context_live/show.html.heex:32
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete %{context_slug}"
|
msgid "delete %{context_slug}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:48
|
#: lib/memex_web/live/note_live/index.html.heex:48
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:36
|
#: lib/memex_web/live/note_live/show.html.heex:32
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete %{note_slug}"
|
msgid "delete %{note_slug}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:49
|
#: lib/memex_web/live/pipeline_live/index.html.heex:49
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:44
|
#: lib/memex_web/live/pipeline_live/show.html.heex:40
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete %{pipeline_slug}"
|
msgid "delete %{pipeline_slug}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:115
|
#: lib/memex_web/live/pipeline_live/show.html.heex:111
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete %{step_title}"
|
msgid "delete %{step_title}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -199,7 +199,7 @@ msgstr ""
|
|||||||
msgid "edit %{pipeline_slug}"
|
msgid "edit %{pipeline_slug}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:104
|
#: lib/memex_web/live/pipeline_live/show.html.heex:100
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "edit %{step_title}"
|
msgid "edit %{step_title}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -209,12 +209,12 @@ msgstr ""
|
|||||||
msgid "edit invite for %{invite_name}"
|
msgid "edit invite for %{invite_name}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:94
|
#: lib/memex_web/live/pipeline_live/show.html.heex:90
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "move %{step_title} down"
|
msgid "move %{step_title} down"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:78
|
#: lib/memex_web/live/pipeline_live/show.html.heex:74
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "move %{step_title} up"
|
msgid "move %{step_title} up"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -16,7 +16,7 @@ msgstr ""
|
|||||||
msgid "Confirm your account"
|
msgid "Confirm your account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/layout/live.html.heex:43
|
#: lib/memex_web/components/layouts/live.html.heex:43
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Reconnecting..."
|
msgid "Reconnecting..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -26,9 +26,9 @@ msgstr ""
|
|||||||
msgid "Reset your password"
|
msgid "Reset your password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:19
|
#: lib/memex_web/live/context_live/show.html.heex:15
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:19
|
#: lib/memex_web/live/note_live/show.html.heex:15
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:27
|
#: lib/memex_web/live/pipeline_live/show.html.heex:23
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Visibility: %{visibility}"
|
msgid "Visibility: %{visibility}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -48,8 +48,8 @@ msgstr ""
|
|||||||
msgid "built with sharing and collaboration in mind"
|
msgid "built with sharing and collaboration in mind"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:20
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:20
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:76
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:76
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "confirm new password"
|
msgid "confirm new password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -60,7 +60,7 @@ msgstr ""
|
|||||||
msgid "content"
|
msgid "content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:37
|
#: lib/memex_web/components/core_components/topbar.html.heex:28
|
||||||
#: lib/memex_web/live/context_live/index.ex:35
|
#: lib/memex_web/live/context_live/index.ex:35
|
||||||
#: lib/memex_web/live/context_live/index.ex:43
|
#: lib/memex_web/live/context_live/index.ex:43
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:3
|
#: lib/memex_web/live/context_live/index.html.heex:3
|
||||||
@ -78,8 +78,8 @@ msgstr ""
|
|||||||
msgid "convenient:"
|
msgid "convenient:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:31
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:31
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:85
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:85
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "current password"
|
msgid "current password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -104,10 +104,10 @@ msgstr ""
|
|||||||
msgid "edit invite"
|
msgid "edit invite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:20
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:20
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:13
|
#: lib/memex_web/controllers/user_reset_password_html/new.html.heex:13
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:17
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:17
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:27
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:27
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -122,8 +122,8 @@ msgstr ""
|
|||||||
msgid "enable"
|
msgid "enable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:32
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:32
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:123
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:123
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "english"
|
msgid "english"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -153,7 +153,7 @@ msgstr ""
|
|||||||
msgid "invite only"
|
msgid "invite only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:58
|
#: lib/memex_web/components/core_components/topbar.html.heex:43
|
||||||
#: lib/memex_web/live/invite_live/index.ex:31
|
#: lib/memex_web/live/invite_live/index.ex:31
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:3
|
#: lib/memex_web/live/invite_live/index.html.heex:3
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
@ -175,8 +175,8 @@ msgstr ""
|
|||||||
msgid "new invite"
|
msgid "new invite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:16
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:16
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:69
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:69
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "new password"
|
msgid "new password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -191,7 +191,7 @@ msgstr ""
|
|||||||
msgid "no notes found"
|
msgid "no notes found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:28
|
#: lib/memex_web/components/core_components/topbar.html.heex:22
|
||||||
#: lib/memex_web/live/note_live/index.ex:35
|
#: lib/memex_web/live/note_live/index.ex:35
|
||||||
#: lib/memex_web/live/note_live/index.ex:43
|
#: lib/memex_web/live/note_live/index.ex:43
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:3
|
#: lib/memex_web/live/note_live/index.html.heex:3
|
||||||
@ -204,7 +204,7 @@ msgstr ""
|
|||||||
msgid "notes:"
|
msgid "notes:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:46
|
#: lib/memex_web/components/core_components/topbar.html.heex:34
|
||||||
#: lib/memex_web/live/pipeline_live/index.ex:35
|
#: lib/memex_web/live/pipeline_live/index.ex:35
|
||||||
#: lib/memex_web/live/pipeline_live/index.ex:43
|
#: lib/memex_web/live/pipeline_live/index.ex:43
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:3
|
#: lib/memex_web/live/pipeline_live/index.html.heex:3
|
||||||
@ -237,7 +237,7 @@ msgstr ""
|
|||||||
msgid "public signups"
|
msgid "public signups"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:32
|
#: lib/memex_web/controllers/user_registration_controller.ex:31
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "register"
|
msgid "register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -276,7 +276,7 @@ msgid "set unlimited"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_settings_controller.ex:10
|
#: lib/memex_web/controllers/user_settings_controller.ex:10
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:3
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:3
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "settings"
|
msgid "settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -298,7 +298,7 @@ msgstr ""
|
|||||||
msgid "tags"
|
msgid "tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:130
|
#: lib/memex_web/live/invite_live/index.html.heex:126
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "users"
|
msgid "users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -413,7 +413,7 @@ msgstr ""
|
|||||||
msgid "%{slug} could not be found"
|
msgid "%{slug} could not be found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.ex:15
|
#: lib/memex_web/live/home_live.ex:14
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "home"
|
msgid "home"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -430,12 +430,12 @@ msgstr ""
|
|||||||
msgid "faq"
|
msgid "faq"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:8
|
#: lib/memex_web/components/core_components/topbar.html.heex:5
|
||||||
|
#: lib/memex_web/components/layouts.ex:15
|
||||||
|
#: lib/memex_web/components/layouts/root.html.heex:8
|
||||||
|
#: lib/memex_web/components/layouts/root.html.heex:9
|
||||||
|
#: lib/memex_web/controllers/error_html/error.html.heex:8
|
||||||
#: lib/memex_web/live/home_live.html.heex:3
|
#: lib/memex_web/live/home_live.html.heex:3
|
||||||
#: lib/memex_web/templates/error/error.html.heex:8
|
|
||||||
#: lib/memex_web/templates/layout/root.html.heex:8
|
|
||||||
#: lib/memex_web/templates/layout/root.html.heex:9
|
|
||||||
#: lib/memex_web/views/layout_view.ex:14
|
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "memEx"
|
msgid "memEx"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -445,7 +445,7 @@ msgstr ""
|
|||||||
msgid "what is this?"
|
msgid "what is this?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:64
|
#: lib/memex_web/live/pipeline_live/show.html.heex:60
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "%{position}. %{title}"
|
msgid "%{position}. %{title}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -470,12 +470,12 @@ msgstr ""
|
|||||||
msgid "add step to %{slug}"
|
msgid "add step to %{slug}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:58
|
#: lib/memex_web/live/pipeline_live/show.html.heex:54
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "no steps"
|
msgid "no steps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:53
|
#: lib/memex_web/live/pipeline_live/show.html.heex:49
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "steps:"
|
msgid "steps:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -582,7 +582,7 @@ msgstr ""
|
|||||||
msgid "zettelkasten"
|
msgid "zettelkasten"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/views/layout_view.ex:10
|
#: lib/memex_web/components/layouts.ex:11
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "memEx | %{title}"
|
msgid "memEx | %{title}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -612,7 +612,7 @@ msgstr ""
|
|||||||
msgid "while memEx fully supports multiple users, each memEx instance should be treated as a single cohesive and collaborative document."
|
msgid "while memEx fully supports multiple users, each memEx instance should be treated as a single cohesive and collaborative document."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:28
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:28
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "language"
|
msgid "language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -652,17 +652,17 @@ msgstr ""
|
|||||||
msgid "get involved"
|
msgid "get involved"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:13
|
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:13
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:102
|
#: lib/memex_web/live/invite_live/index.html.heex:98
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "admins"
|
msgid "admins"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:23
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:23
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "keep me logged in for 60 days"
|
msgid "keep me logged in for 60 days"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -672,8 +672,8 @@ msgstr ""
|
|||||||
msgid "name"
|
msgid "name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:24
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:24
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:20
|
#: lib/memex_web/controllers/user_session_html/new.html.heex:20
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "password"
|
msgid "password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -701,12 +701,12 @@ msgstr ""
|
|||||||
msgid "close modal"
|
msgid "close modal"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:89
|
#: lib/memex_web/components/core_components/topbar.html.heex:71
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "live dashboard"
|
msgid "live dashboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:75
|
#: lib/memex_web/components/core_components/topbar.html.heex:57
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "log out"
|
msgid "log out"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -11,83 +11,83 @@ msgstr ""
|
|||||||
"Language: en\n"
|
"Language: en\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: lib/memex/accounts/email.ex:30
|
#: lib/memex/accounts/email.ex:31
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Confirm your Memex account"
|
msgid "Confirm your Memex account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.html.heex:3
|
#: lib/memex_web/controllers/email_html/confirm_email_html.html.heex:3
|
||||||
#: lib/memex_web/templates/email/confirm_email.txt.eex:2
|
#: lib/memex_web/controllers/email_html/confirm_email_text.txt.eex:2
|
||||||
#: lib/memex_web/templates/email/reset_password.html.heex:3
|
#: lib/memex_web/controllers/email_html/reset_password_html.html.heex:3
|
||||||
#: lib/memex_web/templates/email/reset_password.txt.eex:2
|
#: lib/memex_web/controllers/email_html/reset_password_text.txt.eex:2
|
||||||
#: lib/memex_web/templates/email/update_email.html.heex:3
|
#: lib/memex_web/controllers/email_html/update_email_html.html.heex:3
|
||||||
#: lib/memex_web/templates/email/update_email.txt.eex:2
|
#: lib/memex_web/controllers/email_html/update_email_text.txt.eex:2
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Hi %{email},"
|
msgid "Hi %{email},"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.txt.eex:10
|
#: lib/memex_web/controllers/email_html/confirm_email_text.txt.eex:10
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "If you didn't create an account at %{url}, please ignore this."
|
msgid "If you didn't create an account at %{url}, please ignore this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/reset_password.txt.eex:8
|
#: lib/memex_web/controllers/email_html/reset_password_text.txt.eex:8
|
||||||
#: lib/memex_web/templates/email/update_email.txt.eex:8
|
#: lib/memex_web/controllers/email_html/update_email_text.txt.eex:8
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "If you didn't request this change from %{url}, please ignore this."
|
msgid "If you didn't request this change from %{url}, please ignore this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex/accounts/email.ex:37
|
#: lib/memex/accounts/email.ex:38
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Reset your Memex password"
|
msgid "Reset your Memex password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex/accounts/email.ex:44
|
#: lib/memex/accounts/email.ex:45
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Update your Memex email"
|
msgid "Update your Memex email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/update_email.html.heex:8
|
#: lib/memex_web/controllers/email_html/update_email_html.html.heex:8
|
||||||
#: lib/memex_web/templates/email/update_email.txt.eex:4
|
#: lib/memex_web/controllers/email_html/update_email_text.txt.eex:4
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "You can change your email by visiting the URL below:"
|
msgid "You can change your email by visiting the URL below:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.html.heex:14
|
#: lib/memex_web/controllers/email_html/confirm_email_html.html.heex:14
|
||||||
#: lib/memex_web/templates/email/confirm_email.txt.eex:6
|
#: lib/memex_web/controllers/email_html/confirm_email_text.txt.eex:6
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "You can confirm your account by visiting the URL below:"
|
msgid "You can confirm your account by visiting the URL below:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/reset_password.html.heex:8
|
#: lib/memex_web/controllers/email_html/reset_password_html.html.heex:8
|
||||||
#: lib/memex_web/templates/email/reset_password.txt.eex:4
|
#: lib/memex_web/controllers/email_html/reset_password_text.txt.eex:4
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "You can reset your password by visiting the URL below:"
|
msgid "You can reset your password by visiting the URL below:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/layout/email.html.heex:13
|
#: lib/memex_web/components/layouts/email_html.html.heex:13
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "This email was sent from memEx"
|
msgid "This email was sent from memEx"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/layout/email.txt.eex:9
|
#: lib/memex_web/components/layouts/email_text.txt.eex:9
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "This email was sent from memEx at %{url}"
|
msgid "This email was sent from memEx at %{url}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.html.heex:22
|
#: lib/memex_web/controllers/email_html/confirm_email_html.html.heex:22
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "If you didn't create an account at memEx, please ignore this."
|
msgid "If you didn't create an account at memEx, please ignore this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/reset_password.html.heex:16
|
#: lib/memex_web/controllers/email_html/reset_password_html.html.heex:16
|
||||||
#: lib/memex_web/templates/email/update_email.html.heex:16
|
#: lib/memex_web/controllers/email_html/update_email_html.html.heex:16
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "If you didn't request this change from memEx, please ignore this."
|
msgid "If you didn't request this change from memEx, please ignore this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.html.heex:9
|
#: lib/memex_web/controllers/email_html/confirm_email_html.html.heex:9
|
||||||
#: lib/memex_web/templates/email/confirm_email.txt.eex:4
|
#: lib/memex_web/controllers/email_html/confirm_email_text.txt.eex:4
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Welcome to memEx"
|
msgid "Welcome to memEx"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -11,7 +11,7 @@ msgstr ""
|
|||||||
"Language: en\n"
|
"Language: en\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: lib/memex_web/templates/error/error.html.heex:8
|
#: lib/memex_web/controllers/error_html/error.html.heex:8
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -26,14 +26,14 @@ msgstr ""
|
|||||||
msgid "Reset password link is invalid or it has expired."
|
msgid "Reset password link is invalid or it has expired."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:22
|
#: lib/memex_web/controllers/user_registration_controller.ex:21
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:51
|
#: lib/memex_web/controllers/user_registration_controller.ex:50
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Sorry, public registration is disabled"
|
msgid "Sorry, public registration is disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:12
|
#: lib/memex_web/controllers/user_registration_controller.ex:11
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:41
|
#: lib/memex_web/controllers/user_registration_controller.ex:40
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Sorry, this invite was not found or expired"
|
msgid "Sorry, this invite was not found or expired"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -43,13 +43,13 @@ msgstr ""
|
|||||||
msgid "User confirmation link is invalid or it has expired."
|
msgid "User confirmation link is invalid or it has expired."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_auth.ex:177
|
#: lib/memex_web/controllers/user_auth.ex:266
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "You are not authorized to view this page."
|
msgid "You are not authorized to view this page."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_auth.ex:39
|
#: lib/memex_web/controllers/user_auth.ex:38
|
||||||
#: lib/memex_web/controllers/user_auth.ex:161
|
#: lib/memex_web/controllers/user_auth.ex:250
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "You must confirm your account and log in to access this page."
|
msgid "You must confirm your account and log in to access this page."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -74,51 +74,54 @@ msgstr ""
|
|||||||
msgid "must have the @ sign and no spaces"
|
msgid "must have the @ sign and no spaces"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex/contexts/context.ex:57
|
#: lib/memex/contexts/context.ex:58
|
||||||
#: lib/memex/contexts/context.ex:70
|
#: lib/memex/contexts/context.ex:71
|
||||||
#: lib/memex/notes/note.ex:56
|
#: lib/memex/notes/note.ex:57
|
||||||
#: lib/memex/notes/note.ex:69
|
#: lib/memex/notes/note.ex:70
|
||||||
#: lib/memex/pipelines/pipeline.ex:59
|
#: lib/memex/pipelines/pipeline.ex:60
|
||||||
#: lib/memex/pipelines/pipeline.ex:72
|
#: lib/memex/pipelines/pipeline.ex:73
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "invalid format: only numbers, letters and hyphen are accepted"
|
msgid "invalid format: only numbers, letters and hyphen are accepted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/error/error.html.heex:31
|
#: lib/memex_web/controllers/error_html/error.html.heex:28
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "go back home"
|
msgid "go back home"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/views/error_view.ex:10
|
#: lib/memex_web/controllers/error_html.ex:11
|
||||||
|
#: lib/memex_web/controllers/error_json.ex:9
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "internal server error"
|
msgid "internal server error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/views/error_view.ex:8
|
#: lib/memex_web/controllers/error_html.ex:9
|
||||||
|
#: lib/memex_web/controllers/error_json.ex:7
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "not found"
|
msgid "not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/views/error_view.ex:9
|
#: lib/memex_web/controllers/error_html.ex:10
|
||||||
|
#: lib/memex_web/controllers/error_json.ex:8
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "unauthorized"
|
msgid "unauthorized"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex/contexts/context.ex:83
|
#: lib/memex/contexts/context.ex:84
|
||||||
#: lib/memex/notes/note.ex:82
|
#: lib/memex/notes/note.ex:83
|
||||||
#: lib/memex/pipelines/pipeline.ex:85
|
#: lib/memex/pipelines/pipeline.ex:86
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "invalid format: only numbers, letters and hyphen are accepted. tags must be comma-delimited"
|
msgid "invalid format: only numbers, letters and hyphen are accepted. tags must be comma-delimited"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:13
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:13
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:13
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:13
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:64
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:64
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "oops, something went wrong! please check the errors below."
|
msgid "oops, something went wrong! please check the errors below."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:70
|
#: lib/memex_web/controllers/user_registration_controller.ex:69
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "sorry, this invite was not found or expired"
|
msgid "sorry, this invite was not found or expired"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -133,8 +136,18 @@ msgstr ""
|
|||||||
msgid "unable to delete user"
|
msgid "unable to delete user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:22
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:22
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:118
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:118
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "oops, something went wrong! please check the errors below"
|
msgid "oops, something went wrong! please check the errors below"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/controllers/user_auth.ex:195
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "You must log in as an administrator to access this page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/controllers/user_auth.ex:178
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "You must log in to access this page."
|
||||||
|
msgstr ""
|
||||||
|
@ -56,7 +56,7 @@ msgstr ""
|
|||||||
msgid "Password reset successfully."
|
msgid "Password reset successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:130
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:130
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "are you sure you want to change your language?"
|
msgid "are you sure you want to change your language?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -66,12 +66,12 @@ msgstr ""
|
|||||||
msgid "are you sure you want to delete the invite for %{invite_name}?"
|
msgid "are you sure you want to delete the invite for %{invite_name}?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:149
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:145
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "are you sure you want to delete your account?"
|
msgid "are you sure you want to delete your account?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:74
|
#: lib/memex_web/components/core_components/topbar.html.heex:56
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "are you sure you want to log out?"
|
msgid "are you sure you want to log out?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -82,12 +82,12 @@ msgid "are you sure you want to make %{invite_name} unlimited?"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:47
|
#: lib/memex_web/live/context_live/index.html.heex:47
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:35
|
#: lib/memex_web/live/context_live/show.html.heex:31
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:47
|
#: lib/memex_web/live/note_live/index.html.heex:47
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:35
|
#: lib/memex_web/live/note_live/show.html.heex:31
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:47
|
#: lib/memex_web/live/pipeline_live/index.html.heex:47
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:43
|
#: lib/memex_web/live/pipeline_live/show.html.heex:39
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:114
|
#: lib/memex_web/live/pipeline_live/show.html.heex:110
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "are you sure?"
|
msgid "are you sure?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -122,7 +122,7 @@ msgstr ""
|
|||||||
msgid "copied to clipboard"
|
msgid "copied to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:65
|
#: lib/memex_web/controllers/user_registration_controller.ex:64
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "please check your email to verify your account"
|
msgid "please check your email to verify your account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -147,8 +147,8 @@ msgstr ""
|
|||||||
msgid "your account has been deleted"
|
msgid "your account has been deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:113
|
#: lib/memex_web/live/invite_live/index.html.heex:109
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:141
|
#: lib/memex_web/live/invite_live/index.html.heex:137
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "are you sure you want to delete %{email}? this action is permanent!"
|
msgid "are you sure you want to delete %{email}? this action is permanent!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/error/error.html.heex:8
|
#: lib/memex_web/controllers/error_html/error.html.heex:8
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -25,14 +25,14 @@ msgstr ""
|
|||||||
msgid "Reset password link is invalid or it has expired."
|
msgid "Reset password link is invalid or it has expired."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:22
|
#: lib/memex_web/controllers/user_registration_controller.ex:21
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:51
|
#: lib/memex_web/controllers/user_registration_controller.ex:50
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Sorry, public registration is disabled"
|
msgid "Sorry, public registration is disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:12
|
#: lib/memex_web/controllers/user_registration_controller.ex:11
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:41
|
#: lib/memex_web/controllers/user_registration_controller.ex:40
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Sorry, this invite was not found or expired"
|
msgid "Sorry, this invite was not found or expired"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -42,13 +42,13 @@ msgstr ""
|
|||||||
msgid "User confirmation link is invalid or it has expired."
|
msgid "User confirmation link is invalid or it has expired."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_auth.ex:177
|
#: lib/memex_web/controllers/user_auth.ex:266
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "You are not authorized to view this page."
|
msgid "You are not authorized to view this page."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_auth.ex:39
|
#: lib/memex_web/controllers/user_auth.ex:38
|
||||||
#: lib/memex_web/controllers/user_auth.ex:161
|
#: lib/memex_web/controllers/user_auth.ex:250
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "You must confirm your account and log in to access this page."
|
msgid "You must confirm your account and log in to access this page."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -73,51 +73,54 @@ msgstr ""
|
|||||||
msgid "must have the @ sign and no spaces"
|
msgid "must have the @ sign and no spaces"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex/contexts/context.ex:57
|
#: lib/memex/contexts/context.ex:58
|
||||||
#: lib/memex/contexts/context.ex:70
|
#: lib/memex/contexts/context.ex:71
|
||||||
#: lib/memex/notes/note.ex:56
|
#: lib/memex/notes/note.ex:57
|
||||||
#: lib/memex/notes/note.ex:69
|
#: lib/memex/notes/note.ex:70
|
||||||
#: lib/memex/pipelines/pipeline.ex:59
|
#: lib/memex/pipelines/pipeline.ex:60
|
||||||
#: lib/memex/pipelines/pipeline.ex:72
|
#: lib/memex/pipelines/pipeline.ex:73
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "invalid format: only numbers, letters and hyphen are accepted"
|
msgid "invalid format: only numbers, letters and hyphen are accepted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/error/error.html.heex:31
|
#: lib/memex_web/controllers/error_html/error.html.heex:28
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "go back home"
|
msgid "go back home"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/views/error_view.ex:10
|
#: lib/memex_web/controllers/error_html.ex:11
|
||||||
|
#: lib/memex_web/controllers/error_json.ex:9
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "internal server error"
|
msgid "internal server error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/views/error_view.ex:8
|
#: lib/memex_web/controllers/error_html.ex:9
|
||||||
|
#: lib/memex_web/controllers/error_json.ex:7
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "not found"
|
msgid "not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/views/error_view.ex:9
|
#: lib/memex_web/controllers/error_html.ex:10
|
||||||
|
#: lib/memex_web/controllers/error_json.ex:8
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "unauthorized"
|
msgid "unauthorized"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex/contexts/context.ex:83
|
#: lib/memex/contexts/context.ex:84
|
||||||
#: lib/memex/notes/note.ex:82
|
#: lib/memex/notes/note.ex:83
|
||||||
#: lib/memex/pipelines/pipeline.ex:85
|
#: lib/memex/pipelines/pipeline.ex:86
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "invalid format: only numbers, letters and hyphen are accepted. tags must be comma-delimited"
|
msgid "invalid format: only numbers, letters and hyphen are accepted. tags must be comma-delimited"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:13
|
#: lib/memex_web/controllers/user_registration_html/new.html.heex:13
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:13
|
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:13
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:64
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:64
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "oops, something went wrong! please check the errors below."
|
msgid "oops, something went wrong! please check the errors below."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:70
|
#: lib/memex_web/controllers/user_registration_controller.ex:69
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "sorry, this invite was not found or expired"
|
msgid "sorry, this invite was not found or expired"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -132,8 +135,18 @@ msgstr ""
|
|||||||
msgid "unable to delete user"
|
msgid "unable to delete user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:22
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:22
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:118
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:118
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "oops, something went wrong! please check the errors below"
|
msgid "oops, something went wrong! please check the errors below"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/controllers/user_auth.ex:195
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "You must log in as an administrator to access this page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/controllers/user_auth.ex:178
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "You must log in to access this page."
|
||||||
|
msgstr ""
|
||||||
|
@ -55,7 +55,7 @@ msgstr ""
|
|||||||
msgid "Password reset successfully."
|
msgid "Password reset successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:130
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:130
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "are you sure you want to change your language?"
|
msgid "are you sure you want to change your language?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -65,12 +65,12 @@ msgstr ""
|
|||||||
msgid "are you sure you want to delete the invite for %{invite_name}?"
|
msgid "are you sure you want to delete the invite for %{invite_name}?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:149
|
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:145
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "are you sure you want to delete your account?"
|
msgid "are you sure you want to delete your account?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/core_components/topbar.html.heex:74
|
#: lib/memex_web/components/core_components/topbar.html.heex:56
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "are you sure you want to log out?"
|
msgid "are you sure you want to log out?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -81,12 +81,12 @@ msgid "are you sure you want to make %{invite_name} unlimited?"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:47
|
#: lib/memex_web/live/context_live/index.html.heex:47
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:35
|
#: lib/memex_web/live/context_live/show.html.heex:31
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:47
|
#: lib/memex_web/live/note_live/index.html.heex:47
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:35
|
#: lib/memex_web/live/note_live/show.html.heex:31
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:47
|
#: lib/memex_web/live/pipeline_live/index.html.heex:47
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:43
|
#: lib/memex_web/live/pipeline_live/show.html.heex:39
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:114
|
#: lib/memex_web/live/pipeline_live/show.html.heex:110
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "are you sure?"
|
msgid "are you sure?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -121,7 +121,7 @@ msgstr ""
|
|||||||
msgid "copied to clipboard"
|
msgid "copied to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:65
|
#: lib/memex_web/controllers/user_registration_controller.ex:64
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "please check your email to verify your account"
|
msgid "please check your email to verify your account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -146,8 +146,8 @@ msgstr ""
|
|||||||
msgid "your account has been deleted"
|
msgid "your account has been deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:113
|
#: lib/memex_web/live/invite_live/index.html.heex:109
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:141
|
#: lib/memex_web/live/invite_live/index.html.heex:137
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "are you sure you want to delete %{email}? this action is permanent!"
|
msgid "are you sure you want to delete %{email}? this action is permanent!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -368,11 +368,11 @@ defmodule Memex.AccountsTest do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "delete_session_token/1" do
|
describe "delete_user_session_token/1" do
|
||||||
test "deletes the token" do
|
test "deletes the token" do
|
||||||
user = user_fixture()
|
user = user_fixture()
|
||||||
token = Accounts.generate_user_session_token(user)
|
token = Accounts.generate_user_session_token(user)
|
||||||
assert Accounts.delete_session_token(token) == :ok
|
assert Accounts.delete_user_session_token(token) == :ok
|
||||||
refute Accounts.get_user_by_session_token(token)
|
refute Accounts.get_user_by_session_token(token)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
14
test/memex_web/controllers/error_html_test.exs
Normal file
14
test/memex_web/controllers/error_html_test.exs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
defmodule MemexWeb.ErrorHTMLTest do
|
||||||
|
use MemexWeb.ConnCase, async: true
|
||||||
|
# Bring render_to_string/4 for testing custom views
|
||||||
|
import Phoenix.Template
|
||||||
|
alias MemexWeb.ErrorHTML
|
||||||
|
|
||||||
|
test "renders 404.html" do
|
||||||
|
assert render_to_string(ErrorHTML, "404", "html", []) =~ "not found"
|
||||||
|
end
|
||||||
|
|
||||||
|
test "renders 500.html" do
|
||||||
|
assert render_to_string(ErrorHTML, "500", "html", []) =~ "internal server error"
|
||||||
|
end
|
||||||
|
end
|
12
test/memex_web/controllers/error_json_test.exs
Normal file
12
test/memex_web/controllers/error_json_test.exs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
defmodule MemexWeb.ErrorJSONTest do
|
||||||
|
use MemexWeb.ConnCase, async: true
|
||||||
|
alias MemexWeb.ErrorJSON
|
||||||
|
|
||||||
|
test "renders 404" do
|
||||||
|
assert ErrorJSON.render("404.json", %{}) == %{errors: %{detail: "not found"}}
|
||||||
|
end
|
||||||
|
|
||||||
|
test "renders 500" do
|
||||||
|
assert ErrorJSON.render("500.json", %{}) == %{errors: %{detail: "internal server error"}}
|
||||||
|
end
|
||||||
|
end
|
@ -35,7 +35,7 @@ defmodule MemexWeb.ExportControllerTest do
|
|||||||
pipeline: pipeline,
|
pipeline: pipeline,
|
||||||
step: step
|
step: step
|
||||||
} do
|
} do
|
||||||
conn = get(conn, Routes.export_path(conn, :export, :json))
|
conn = get(conn, ~p"/export/json")
|
||||||
|
|
||||||
ideal_note = %{
|
ideal_note = %{
|
||||||
"slug" => note.slug,
|
"slug" => note.slug,
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
defmodule MemexWeb.HomeControllerTest do
|
|
||||||
@moduledoc """
|
|
||||||
Tests the home page
|
|
||||||
"""
|
|
||||||
|
|
||||||
use MemexWeb.ConnCase
|
|
||||||
|
|
||||||
@moduletag :home_controller_test
|
|
||||||
|
|
||||||
test "GET /", %{conn: conn} do
|
|
||||||
conn = get(conn, "/")
|
|
||||||
assert html_response(conn, 200) =~ "memEx"
|
|
||||||
end
|
|
||||||
end
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user