Compare commits

..

5 Commits

Author SHA1 Message Date
63d854ffbe upgrade to phoenix 1.7
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-13 23:29:29 -04:00
a1c846be33 update npm version 2023-04-13 18:45:32 -04:00
1b9f212e66 update to elixir 1.14.4 2023-04-13 18:44:12 -04:00
7805ddc270 update npm dependencies 2023-04-13 18:37:43 -04:00
c1455bccad update elixir deps 2023-04-13 18:35:25 -04:00
122 changed files with 2976 additions and 2384 deletions

View File

@ -17,7 +17,7 @@ steps:
- .mix - .mix
- name: test - name: test
image: elixir:1.14.1-alpine image: elixir:1.14.4-alpine
environment: environment:
TEST_DATABASE_URL: ecto://postgres:postgres@database/memex_test TEST_DATABASE_URL: ecto://postgres:postgres@database/memex_test
HOST: testing.example.tld HOST: testing.example.tld

View File

@ -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]
] ]

View File

@ -1,3 +1,3 @@
elixir 1.14.1-otp-25 elixir 1.14.4-otp-25
erlang 25.1.2 erlang 25.1.2
nodejs 18.9.1 nodejs 18.15.0

View File

@ -1,4 +1,4 @@
FROM elixir:1.14.1-alpine AS build FROM elixir:1.14.4-alpine AS build
# install build dependencies # install build dependencies
RUN apk add --no-cache build-base npm git python3 RUN apk add --no-cache build-base npm git python3

3018
assets/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -3,8 +3,8 @@
"description": " ", "description": " ",
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": "v18.9.1", "node": "v18.15.0",
"npm": "8.19.1" "npm": "9.5.0"
}, },
"scripts": { "scripts": {
"deploy": "NODE_ENV=production webpack --mode production", "deploy": "NODE_ENV=production webpack --mode production",
@ -14,34 +14,34 @@
}, },
"dependencies": { "dependencies": {
"@fontsource/nunito-sans": "^4.5.10", "@fontsource/nunito-sans": "^4.5.10",
"@fortawesome/fontawesome-free": "^6.3.0", "@fortawesome/fontawesome-free": "^6.4.0",
"phoenix": "file:../deps/phoenix", "phoenix": "file:../deps/phoenix",
"phoenix_html": "file:../deps/phoenix_html", "phoenix_html": "file:../deps/phoenix_html",
"phoenix_live_view": "file:../deps/phoenix_live_view", "phoenix_live_view": "file:../deps/phoenix_live_view",
"topbar": "^2.0.1" "topbar": "^2.0.1"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.21.3", "@babel/core": "^7.21.4",
"@babel/preset-env": "^7.20.2", "@babel/preset-env": "^7.21.4",
"autoprefixer": "^10.4.14", "autoprefixer": "^10.4.14",
"babel-loader": "^9.1.2", "babel-loader": "^9.1.2",
"copy-webpack-plugin": "^11.0.0", "copy-webpack-plugin": "^11.0.0",
"css-loader": "^6.7.3", "css-loader": "^6.7.3",
"css-minimizer-webpack-plugin": "^4.2.2", "css-minimizer-webpack-plugin": "^5.0.0",
"file-loader": "^6.2.0", "file-loader": "^6.2.0",
"mini-css-extract-plugin": "^2.7.5", "mini-css-extract-plugin": "^2.7.5",
"npm-check-updates": "^16.7.12", "npm-check-updates": "^16.10.8",
"postcss": "^8.4.21", "postcss": "^8.4.21",
"postcss-import": "^15.1.0", "postcss-import": "^15.1.0",
"postcss-loader": "^7.1.0", "postcss-loader": "^7.2.4",
"postcss-preset-env": "^8.0.1", "postcss-preset-env": "^8.3.1",
"sass": "^1.59.3", "sass": "^1.62.0",
"sass-loader": "^13.2.1", "sass-loader": "^13.2.2",
"standard": "^17.0.0", "standard": "^17.0.0",
"tailwindcss": "^3.2.7", "tailwindcss": "^3.3.1",
"terser-webpack-plugin": "^5.3.7", "terser-webpack-plugin": "^5.3.7",
"webpack": "^5.76.2", "webpack": "^5.79.0",
"webpack-cli": "^5.0.1", "webpack-cli": "^5.0.1",
"webpack-dev-server": "^4.13.1" "webpack-dev-server": "^4.13.2"
} }
} }

View File

@ -1,3 +1,6 @@
# v0.1.11
- Update dependencies
# v0.1.10 # v0.1.10
- Improve accessibility - Improve accessibility
- Code quality improvements - Code quality improvements

View File

@ -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

View File

@ -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

View File

@ -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,

View File

@ -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

View File

@ -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,

View File

@ -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,

View File

@ -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 controller do def static_paths, do: ~w(css js fonts images favicon.ico robots.txt)
quote do
use Phoenix.Controller, namespace: MemexWeb
def router do
quote do
use Phoenix.Router, helpers: false
# Import common connection and controller functions to use in pipelines
import Plug.Conn import Plug.Conn
import MemexWeb.Gettext import Phoenix.Controller
alias MemexWeb.Endpoint import Phoenix.LiveView.Router
alias MemexWeb.Router.Helpers, as: Routes
end end
end end
def view do def channel do
quote do quote do
use Phoenix.View, use Phoenix.Channel
root: "lib/memex_web/templates", end
namespace: MemexWeb end
# Import convenience functions from controllers def controller do
import Phoenix.Controller, quote do
only: [get_flash: 1, get_flash: 2, view_module: 1, view_template: 1] use Phoenix.Controller,
formats: [:html, :json],
layouts: [html: MemexWeb.Layouts]
# Include shared imports and aliases for views # credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
unquote(view_helpers()) import Plug.Conn
import MemexWeb.Gettext
unquote(verified_routes())
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

View File

@ -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>

View File

@ -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}"]
) )

View File

@ -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>

View File

@ -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>

View 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

View File

@ -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>

View File

@ -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>

View File

@ -0,0 +1,9 @@
<%= @email.subject %>
====================
<%= @inner_content %>
=====================
<%= dgettext("emails", "This email was sent from memEx at %{url}", url: ~p"/") %>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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

View File

@ -0,0 +1,9 @@
defmodule MemexWeb.EmailHTML do
@moduledoc """
Renders email templates
"""
use MemexWeb, :html
embed_templates "email_html/*"
end

View File

@ -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 />

View File

@ -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"/") %>

View File

@ -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 />

View File

@ -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"/") %>

View File

@ -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 />

View File

@ -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"/") %>

View File

@ -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

View File

@ -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>

View 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

View File

@ -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

View File

@ -0,0 +1,5 @@
defmodule MemexWeb.HomeHTML do
use MemexWeb, :html
embed_templates "home_html/*"
end

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,6 @@
defmodule MemexWeb.UserConfirmationHTML do
use MemexWeb, :html
alias Memex.Accounts
embed_templates "user_confirmation_html/*"
end

View File

@ -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>

View File

@ -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)

View File

@ -0,0 +1,5 @@
defmodule MemexWeb.UserRegistrationHTML do
use MemexWeb, :html
embed_templates "user_registration_html/*"
end

View File

@ -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>

View File

@ -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

View File

@ -0,0 +1,6 @@
defmodule MemexWeb.UserResetPasswordHTML do
use MemexWeb, :html
alias Memex.Accounts
embed_templates "user_reset_password_html/*"
end

View File

@ -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>

View File

@ -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>

View File

@ -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

View File

@ -0,0 +1,6 @@
defmodule MemexWeb.UserSessionHTML do
use MemexWeb, :html
alias Memex.Accounts
embed_templates "user_session_html/*"
end

View File

@ -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>

View File

@ -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

View File

@ -0,0 +1,5 @@
defmodule MemexWeb.UserSettingsHTML do
use MemexWeb, :html
embed_templates "user_settings_html/*"
end

View File

@ -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?")}
> >

View File

@ -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.

View File

@ -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

View File

@ -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>

View File

@ -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

View File

@ -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>

View File

@ -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]

View File

@ -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 %>

View File

@ -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>

View File

@ -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)

View File

@ -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>

View File

@ -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

View File

@ -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>

View File

@ -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)

View File

@ -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>

View File

@ -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

View File

@ -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>
<% _ -> %> <% _ -> %>

View File

@ -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,16 +54,21 @@ 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
get "/users/settings", UserSettingsController, :edit
put "/users/settings", UserSettingsController, :update
delete "/users/settings/:id", UserSettingsController, :delete
get "/users/settings/confirm_email/:token", UserSettingsController, :confirm_email
get "/export/:mode", ExportController, :export
end end
scope "/", MemexWeb do get "/users/settings", UserSettingsController, :edit
pipe_through [:browser] put "/users/settings", UserSettingsController, :update
delete "/users/settings/:id", UserSettingsController, :delete
get "/users/settings/confirm_email/:token", UserSettingsController, :confirm_email
get "/export/:mode", ExportController, :export
end
scope "/", MemexWeb do
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
@ -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

View File

@ -1,11 +0,0 @@
<%= @email.subject %>
====================
<%= @inner_content %>
=====================
<%= dgettext("emails",
"This email was sent from memEx at %{url}",
url: Routes.live_url(Endpoint, HomeLive)) %>

View File

@ -1,7 +0,0 @@
defmodule MemexWeb.EmailView do
@moduledoc """
A view for email-related helper functions
"""
use MemexWeb, :view
alias MemexWeb.HomeLive
end

View File

@ -1,3 +0,0 @@
defmodule MemexWeb.PageView do
use MemexWeb, :view
end

View File

@ -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

View File

@ -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

View File

@ -1,4 +0,0 @@
defmodule MemexWeb.UserConfirmationView do
use MemexWeb, :view
alias Memex.Accounts
end

View File

@ -1,3 +0,0 @@
defmodule MemexWeb.UserRegistrationView do
use MemexWeb, :view
end

View File

@ -1,4 +0,0 @@
defmodule MemexWeb.UserResetPasswordView do
use MemexWeb, :view
alias Memex.Accounts
end

View File

@ -1,4 +0,0 @@
defmodule MemexWeb.UserSessionView do
use MemexWeb, :view
alias Memex.Accounts
end

View File

@ -1,3 +0,0 @@
defmodule MemexWeb.UserSettingsView do
use MemexWeb, :view
end

View File

@ -4,10 +4,9 @@ defmodule Memex.MixProject do
def project do def project do
[ [
app: :memex, app: :memex,
version: "0.1.10", version: "0.1.11",
elixir: "1.14.1", 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(),
@ -48,12 +47,11 @@ defmodule Memex.MixProject do
defp deps do defp deps do
[ [
{:bcrypt_elixir, "~> 3.0"}, {:bcrypt_elixir, "~> 3.0"},
{:phoenix, "~> 1.6.0"}, {:phoenix, "~> 1.7.0"},
{:phoenix_ecto, "~> 4.4"}, {:phoenix_ecto, "~> 4.4"},
{: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"},

View File

@ -1,47 +1,45 @@
%{ %{
"bcrypt_elixir": {:hex, :bcrypt_elixir, "3.0.1", "9be815469e6bfefec40fa74658ecbbe6897acfb57614df1416eeccd4903f602c", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "486bb95efb645d1efc6794c1ddd776a186a9a713abf06f45708a6ce324fb96cf"}, "bcrypt_elixir": {:hex, :bcrypt_elixir, "3.0.1", "9be815469e6bfefec40fa74658ecbbe6897acfb57614df1416eeccd4903f602c", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "486bb95efb645d1efc6794c1ddd776a186a9a713abf06f45708a6ce324fb96cf"},
"bunt": {:hex, :bunt, "0.2.1", "e2d4792f7bc0ced7583ab54922808919518d0e57ee162901a16a1b6664ef3b14", [:mix], [], "hexpm", "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5"}, "bunt": {:hex, :bunt, "0.2.1", "e2d4792f7bc0ced7583ab54922808919518d0e57ee162901a16a1b6664ef3b14", [:mix], [], "hexpm", "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5"},
"castore": {:hex, :castore, "0.1.22", "4127549e411bedd012ca3a308dede574f43819fe9394254ca55ab4895abfa1a2", [:mix], [], "hexpm", "c17576df47eb5aa1ee40cc4134316a99f5cad3e215d5c77b8dd3cfef12a22cac"}, "castore": {:hex, :castore, "1.0.1", "240b9edb4e9e94f8f56ab39d8d2d0a57f49e46c56aced8f873892df8ff64ff5a", [:mix], [], "hexpm", "b4951de93c224d44fac71614beabd88b71932d0b1dea80d2f80fb9044e01bbb3"},
"comeonin": {:hex, :comeonin, "5.3.3", "2c564dac95a35650e9b6acfe6d2952083d8a08e4a89b93a481acb552b325892e", [:mix], [], "hexpm", "3e38c9c2cb080828116597ca8807bb482618a315bfafd98c90bc22a821cc84df"}, "comeonin": {:hex, :comeonin, "5.3.3", "2c564dac95a35650e9b6acfe6d2952083d8a08e4a89b93a481acb552b325892e", [:mix], [], "hexpm", "3e38c9c2cb080828116597ca8807bb482618a315bfafd98c90bc22a821cc84df"},
"connection": {:hex, :connection, "1.1.0", "ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68", [:mix], [], "hexpm", "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c"}, "connection": {:hex, :connection, "1.1.0", "ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68", [:mix], [], "hexpm", "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c"},
"cowboy": {:hex, :cowboy, "2.9.0", "865dd8b6607e14cf03282e10e934023a1bd8be6f6bacf921a7e2a96d800cd452", [:make, :rebar3], [{:cowlib, "2.11.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "2c729f934b4e1aa149aff882f57c6372c15399a20d54f65c8d67bef583021bde"}, "cowboy": {:hex, :cowboy, "2.9.0", "865dd8b6607e14cf03282e10e934023a1bd8be6f6bacf921a7e2a96d800cd452", [:make, :rebar3], [{:cowlib, "2.11.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "2c729f934b4e1aa149aff882f57c6372c15399a20d54f65c8d67bef583021bde"},
"cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"}, "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"},
"cowlib": {:hex, :cowlib, "2.11.0", "0b9ff9c346629256c42ebe1eeb769a83c6cb771a6ee5960bd110ab0b9b872063", [:make, :rebar3], [], "hexpm", "2b3e9da0b21c4565751a6d4901c20d1b4cc25cbb7fd50d91d2ab6dd287bc86a9"}, "cowlib": {:hex, :cowlib, "2.11.0", "0b9ff9c346629256c42ebe1eeb769a83c6cb771a6ee5960bd110ab0b9b872063", [:make, :rebar3], [], "hexpm", "2b3e9da0b21c4565751a6d4901c20d1b4cc25cbb7fd50d91d2ab6dd287bc86a9"},
"credo": {:hex, :credo, "1.6.7", "323f5734350fd23a456f2688b9430e7d517afb313fbd38671b8a4449798a7854", [:mix], [{:bunt, "~> 0.2.1", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "41e110bfb007f7eda7f897c10bf019ceab9a0b269ce79f015d54b0dcf4fc7dd3"}, "credo": {:hex, :credo, "1.7.0", "6119bee47272e85995598ee04f2ebbed3e947678dee048d10b5feca139435f75", [:mix], [{:bunt, "~> 0.2.1", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "6839fcf63d1f0d1c0f450abc8564a57c43d644077ab96f2934563e68b8a769d7"},
"db_connection": {:hex, :db_connection, "2.4.3", "3b9aac9f27347ec65b271847e6baeb4443d8474289bd18c1d6f4de655b70c94d", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c127c15b0fa6cfb32eed07465e05da6c815b032508d4ed7c116122871df73c12"}, "db_connection": {:hex, :db_connection, "2.5.0", "bb6d4f30d35ded97b29fe80d8bd6f928a1912ca1ff110831edcd238a1973652c", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c92d5ba26cd69ead1ff7582dbb860adeedfff39774105a4f1c92cbb654b55aa2"},
"decimal": {:hex, :decimal, "2.0.0", "a78296e617b0f5dd4c6caf57c714431347912ffb1d0842e998e9792b5642d697", [:mix], [], "hexpm", "34666e9c55dea81013e77d9d87370fe6cb6291d1ef32f46a1600230b1d44f577"}, "decimal": {:hex, :decimal, "2.0.0", "a78296e617b0f5dd4c6caf57c714431347912ffb1d0842e998e9792b5642d697", [:mix], [], "hexpm", "34666e9c55dea81013e77d9d87370fe6cb6291d1ef32f46a1600230b1d44f577"},
"dialyxir": {:hex, :dialyxir, "1.2.0", "58344b3e87c2e7095304c81a9ae65cb68b613e28340690dfe1a5597fd08dec37", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "61072136427a851674cab81762be4dbeae7679f85b1272b6d25c3a839aff8463"}, "dialyxir": {:hex, :dialyxir, "1.3.0", "fd1672f0922b7648ff9ce7b1b26fcf0ef56dda964a459892ad15f6b4410b5284", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "00b2a4bcd6aa8db9dcb0b38c1225b7277dca9bc370b6438715667071a304696f"},
"earmark_parser": {:hex, :earmark_parser, "1.4.31", "a93921cdc6b9b869f519213d5bc79d9e218ba768d7270d46fdcf1c01bacff9e2", [:mix], [], "hexpm", "317d367ee0335ef037a87e46c91a2269fef6306413f731e8ec11fc45a7efd059"}, "earmark_parser": {:hex, :earmark_parser, "1.4.31", "a93921cdc6b9b869f519213d5bc79d9e218ba768d7270d46fdcf1c01bacff9e2", [:mix], [], "hexpm", "317d367ee0335ef037a87e46c91a2269fef6306413f731e8ec11fc45a7efd059"},
"ecto": {:hex, :ecto, "3.9.4", "3ee68e25dbe0c36f980f1ba5dd41ee0d3eb0873bccae8aeaf1a2647242bffa35", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "de5f988c142a3aa4ec18b85a4ec34a2390b65b24f02385c1144252ff6ff8ee75"}, "ecto": {:hex, :ecto, "3.10.1", "c6757101880e90acc6125b095853176a02da8f1afe056f91f1f90b80c9389822", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d2ac4255f1601bdf7ac74c0ed971102c6829dc158719b94bd30041bbad77f87a"},
"ecto_psql_extras": {:hex, :ecto_psql_extras, "0.7.10", "e14d400930f401ca9f541b3349212634e44027d7f919bbb71224d7ac0d0e8acd", [:mix], [{:ecto_sql, "~> 3.4", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.15.7 or ~> 0.16.0", [hex: :postgrex, repo: "hexpm", optional: false]}, {:table_rex, "~> 3.1.1", [hex: :table_rex, repo: "hexpm", optional: false]}], "hexpm", "505e8cd81e4f17c090be0f99e92b1b3f0fd915f98e76965130b8ccfb891e7088"}, "ecto_psql_extras": {:hex, :ecto_psql_extras, "0.7.10", "e14d400930f401ca9f541b3349212634e44027d7f919bbb71224d7ac0d0e8acd", [:mix], [{:ecto_sql, "~> 3.4", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.15.7 or ~> 0.16.0", [hex: :postgrex, repo: "hexpm", optional: false]}, {:table_rex, "~> 3.1.1", [hex: :table_rex, repo: "hexpm", optional: false]}], "hexpm", "505e8cd81e4f17c090be0f99e92b1b3f0fd915f98e76965130b8ccfb891e7088"},
"ecto_sql": {:hex, :ecto_sql, "3.9.2", "34227501abe92dba10d9c3495ab6770e75e79b836d114c41108a4bf2ce200ad5", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.9.2", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "1eb5eeb4358fdbcd42eac11c1fbd87e3affd7904e639d77903c1358b2abd3f70"}, "ecto_sql": {:hex, :ecto_sql, "3.10.1", "6ea6b3036a0b0ca94c2a02613fd9f742614b5cfe494c41af2e6571bb034dd94c", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.10.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f6a25bdbbd695f12c8171eaff0851fa4c8e72eec1e98c7364402dda9ce11c56b"},
"elixir_make": {:hex, :elixir_make, "0.7.5", "784cc00f5fa24239067cc04d449437dcc5f59353c44eb08f188b2b146568738a", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}], "hexpm", "c3d63e8d5c92fa3880d89ecd41de59473fa2e83eeb68148155e25e8b95aa2887"}, "elixir_make": {:hex, :elixir_make, "0.7.6", "67716309dc5d43e16b5abbd00c01b8df6a0c2ab54a8f595468035a50189f9169", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}], "hexpm", "5a0569756b0f7873a77687800c164cca6dfc03a09418e6fcf853d78991f49940"},
"eqrcode": {:hex, :eqrcode, "0.1.10", "6294fece9d68ad64eef1c3c92cf111cfd6469f4fbf230a2d4cc905a682178f3f", [:mix], [], "hexpm", "da30e373c36a0fd37ab6f58664b16029919896d6c45a68a95cc4d713e81076f1"}, "eqrcode": {:hex, :eqrcode, "0.1.10", "6294fece9d68ad64eef1c3c92cf111cfd6469f4fbf230a2d4cc905a682178f3f", [:mix], [], "hexpm", "da30e373c36a0fd37ab6f58664b16029919896d6c45a68a95cc4d713e81076f1"},
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
"ex_doc": {:hex, :ex_doc, "0.29.2", "dfa97532ba66910b2a3016a4bbd796f41a86fc71dd5227e96f4c8581fdf0fdf0", [:mix], [{:earmark_parser, "~> 1.4.19", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "6b5d7139eda18a753e3250e27e4a929f8d2c880dd0d460cb9986305dea3e03af"}, "ex_doc": {:hex, :ex_doc, "0.29.4", "6257ecbb20c7396b1fe5accd55b7b0d23f44b6aa18017b415cb4c2b91d997729", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "2c6699a737ae46cb61e4ed012af931b57b699643b24dabe2400a8168414bc4f5"},
"expo": {:hex, :expo, "0.4.0", "bbe4bf455e2eb2ebd2f1e7d83530ce50fb9990eb88fc47855c515bfdf1c6626f", [:mix], [], "hexpm", "a8ed1683ec8b7c7fa53fd7a41b2c6935f539168a6bb0616d7fd6b58a36f3abf2"}, "expo": {:hex, :expo, "0.4.1", "1c61d18a5df197dfda38861673d392e642649a9cef7694d2f97a587b2cfb319b", [:mix], [], "hexpm", "2ff7ba7a798c8c543c12550fa0e2cbc81b95d4974c65855d8d15ba7b37a1ce47"},
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"}, "file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
"floki": {:hex, :floki, "0.34.2", "5fad07ef153b3b8ec110b6b155ec3780c4b2c4906297d0b4be1a7162d04a7e02", [:mix], [], "hexpm", "26b9d50f0f01796bc6be611ca815c5e0de034d2128e39cc9702eee6b66a4d1c8"}, "floki": {:hex, :floki, "0.34.2", "5fad07ef153b3b8ec110b6b155ec3780c4b2c4906297d0b4be1a7162d04a7e02", [:mix], [], "hexpm", "26b9d50f0f01796bc6be611ca815c5e0de034d2128e39cc9702eee6b66a4d1c8"},
"gen_smtp": {:hex, :gen_smtp, "1.2.0", "9cfc75c72a8821588b9b9fe947ae5ab2aed95a052b81237e0928633a13276fd3", [:rebar3], [{:ranch, ">= 1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "5ee0375680bca8f20c4d85f58c2894441443a743355430ff33a783fe03296779"}, "gen_smtp": {:hex, :gen_smtp, "1.2.0", "9cfc75c72a8821588b9b9fe947ae5ab2aed95a052b81237e0928633a13276fd3", [:rebar3], [{:ranch, ">= 1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "5ee0375680bca8f20c4d85f58c2894441443a743355430ff33a783fe03296779"},
"gettext": {:hex, :gettext, "0.22.1", "e7942988383c3d9eed4bdc22fc63e712b655ae94a672a27e4900e3d4a2c43581", [:mix], [{:expo, "~> 0.4.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "ad105b8dab668ee3f90c0d3d94ba75e9aead27a62495c101d94f2657a190ac5d"}, "gettext": {:hex, :gettext, "0.22.1", "e7942988383c3d9eed4bdc22fc63e712b655ae94a672a27e4900e3d4a2c43581", [:mix], [{:expo, "~> 0.4.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "ad105b8dab668ee3f90c0d3d94ba75e9aead27a62495c101d94f2657a190ac5d"},
"jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"}, "jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"},
"makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"}, "makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"},
"makeup_elixir": {:hex, :makeup_elixir, "0.16.0", "f8c570a0d33f8039513fbccaf7108c5d750f47d8defd44088371191b76492b0b", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "28b2cbdc13960a46ae9a8858c4bebdec3c9a6d7b4b9e7f4ed1502f8159f338e7"}, "makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"},
"makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"}, "makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"},
"mime": {:hex, :mime, "2.0.3", "3676436d3d1f7b81b5a2d2bd8405f412c677558c81b1c92be58c00562bb59095", [:mix], [], "hexpm", "27a30bf0db44d25eecba73755acf4068cbfe26a4372f9eb3e4ea3a45956bff6b"}, "mime": {:hex, :mime, "2.0.3", "3676436d3d1f7b81b5a2d2bd8405f412c677558c81b1c92be58c00562bb59095", [:mix], [], "hexpm", "27a30bf0db44d25eecba73755acf4068cbfe26a4372f9eb3e4ea3a45956bff6b"},
"nimble_parsec": {:hex, :nimble_parsec, "1.2.3", "244836e6e3f1200c7f30cb56733fd808744eca61fd182f731eac4af635cc6d0b", [:mix], [], "hexpm", "c8d789e39b9131acf7b99291e93dae60ab48ef14a7ee9d58c6964f59efb570b0"}, "nimble_parsec": {:hex, :nimble_parsec, "1.3.0", "9e18a119d9efc3370a3ef2a937bf0b24c088d9c4bf0ba9d7c3751d49d347d035", [:mix], [], "hexpm", "7977f183127a7cbe9346981e2f480dc04c55ffddaef746bd58debd566070eef8"},
"oban": {:hex, :oban, "2.14.2", "ae925d9a33e110addaa59ff7ec1b2fd84270ac7eb00fbb4b4a179d74c407bba3", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "32bf30127c8c44ac42f05f229a50fadc2177b3e799c29499f5daf90d5e5b5d3c"}, "oban": {:hex, :oban, "2.15.0", "27b9c2845cdff30c98c8060b11a64318e79bbc1bd32b8dc95fa59a1580a8d90c", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "22e181c540335d1dd5c995be00435927075519207d62b3de32477d95dbf9dfd3"},
"phoenix": {:hex, :phoenix, "1.6.16", "e5bdd18c7a06da5852a25c7befb72246de4ddc289182285f8685a40b7b5f5451", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 1.0 or ~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "e15989ff34f670a96b95ef6d1d25bad0d9c50df5df40b671d8f4a669e050ac39"}, "phoenix": {:hex, :phoenix, "1.7.2", "c375ffb482beb4e3d20894f84dd7920442884f5f5b70b9f4528cbe0cedefec63", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, 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]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.4", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "1ebca94b32b4d0e097ab2444a9742ed8ff3361acad17365e4e6b2e79b4792159"},
"phoenix_ecto": {:hex, :phoenix_ecto, "4.4.0", "0672ed4e4808b3fbed494dded89958e22fb882de47a97634c0b13e7b0b5f7720", [:mix], [{:ecto, "~> 3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "09864e558ed31ee00bd48fcc1d4fc58ae9678c9e81649075431e69dbabb43cc1"}, "phoenix_ecto": {:hex, :phoenix_ecto, "4.4.0", "0672ed4e4808b3fbed494dded89958e22fb882de47a97634c0b13e7b0b5f7720", [:mix], [{:ecto, "~> 3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "09864e558ed31ee00bd48fcc1d4fc58ae9678c9e81649075431e69dbabb43cc1"},
"phoenix_html": {:hex, :phoenix_html, "3.3.1", "4788757e804a30baac6b3fc9695bf5562465dd3f1da8eb8460ad5b404d9a2178", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "bed1906edd4906a15fd7b412b85b05e521e1f67c9a85418c55999277e553d0d3"}, "phoenix_html": {:hex, :phoenix_html, "3.3.1", "4788757e804a30baac6b3fc9695bf5562465dd3f1da8eb8460ad5b404d9a2178", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "bed1906edd4906a15fd7b412b85b05e521e1f67c9a85418c55999277e553d0d3"},
"phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.7.2", "97cc4ff2dba1ebe504db72cb45098cb8e91f11160528b980bd282cc45c73b29c", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.18.3", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "0e5fdf063c7a3b620c566a30fcf68b7ee02e5e46fe48ee46a6ec3ba382dc05b7"}, "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.7.2", "97cc4ff2dba1ebe504db72cb45098cb8e91f11160528b980bd282cc45c73b29c", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.18.3", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "0e5fdf063c7a3b620c566a30fcf68b7ee02e5e46fe48ee46a6ec3ba382dc05b7"},
"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.0", "ba4f558468f69cbd9f6b356d25443d0b796fbdc887e03fa89001384a9cac638f", [: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", "bf020432c7d4feb7b3af16a0c2701455cbbbb95e5b6866132cb09eb0c29adc14"},
"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"},
"postgrex": {:hex, :postgrex, "0.16.5", "fcc4035cc90e23933c5d69a9cd686e329469446ef7abba2cf70f08e2c4b69810", [:mix], [{:connection, "~> 1.1", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "edead639dc6e882618c01d8fc891214c481ab9a3788dfe38dd5e37fd1d5fb2e8"}, "postgrex": {:hex, :postgrex, "0.16.5", "fcc4035cc90e23933c5d69a9cd686e329469446ef7abba2cf70f08e2c4b69810", [:mix], [{:connection, "~> 1.1", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "edead639dc6e882618c01d8fc891214c481ab9a3788dfe38dd5e37fd1d5fb2e8"},
@ -51,4 +49,6 @@
"telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"}, "telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"},
"telemetry_metrics": {:hex, :telemetry_metrics, "0.6.1", "315d9163a1d4660aedc3fee73f33f1d355dcc76c5c3ab3d59e76e3edf80eef1f", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7be9e0871c41732c233be71e4be11b96e56177bf15dde64a8ac9ce72ac9834c6"}, "telemetry_metrics": {:hex, :telemetry_metrics, "0.6.1", "315d9163a1d4660aedc3fee73f33f1d355dcc76c5c3ab3d59e76e3edf80eef1f", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7be9e0871c41732c233be71e4be11b96e56177bf15dde64a8ac9ce72ac9834c6"},
"telemetry_poller": {:hex, :telemetry_poller, "1.0.0", "db91bb424e07f2bb6e73926fcafbfcbcb295f0193e0a00e825e589a0a47e8453", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e"}, "telemetry_poller": {:hex, :telemetry_poller, "1.0.0", "db91bb424e07f2bb6e73926fcafbfcbcb295f0193e0a00e825e589a0a47e8453", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e"},
"websock": {:hex, :websock, "0.5.0", "f6bbce90226121d62a0715bca7c986c5e43de0ccc9475d79c55381d1796368cc", [:mix], [], "hexpm", "b51ac706df8a7a48a2c622ee02d09d68be8c40418698ffa909d73ae207eb5fb8"},
"websock_adapter": {:hex, :websock_adapter, "0.5.0", "cea35d8bbf1a6964e32d4b02ceb561dfb769c04f16d60d743885587e7d2ca55b", [:mix], [{:bandit, "~> 0.6", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "16318b124effab8209b1eb7906c636374f623dc9511a8278ad09c083cea5bb83"},
} }

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

Some files were not shown because too many files have changed in this diff Show More