Compare commits
No commits in common. "c5e82c60b686ba864889996738bfdfefd8d028cd" and "0ea953a34c7238295826113bcc56d807d9d6a061" have entirely different histories.
c5e82c60b6
...
0ea953a34c
19
.drone.yml
19
.drone.yml
@ -13,24 +13,20 @@ steps:
|
|||||||
mount:
|
mount:
|
||||||
- _build
|
- _build
|
||||||
- deps
|
- deps
|
||||||
- .npm
|
- assets/node_modules/
|
||||||
- .mix
|
|
||||||
|
|
||||||
- name: test
|
- name: test
|
||||||
image: elixir:1.14.1-alpine
|
image: elixir:1.14.1-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
|
||||||
MIX_HOME: /drone/src/.mix
|
|
||||||
MIX_ARCHIVES: /drone/src/.mix/archives
|
|
||||||
MIX_ENV: test
|
|
||||||
commands:
|
commands:
|
||||||
- apk add --no-cache build-base npm git
|
- apk add --no-cache build-base npm git python3
|
||||||
- mix local.rebar --force --if-missing
|
- mix local.rebar --force
|
||||||
- mix local.hex --force --if-missing
|
- mix local.hex --force
|
||||||
- mix deps.get
|
- mix deps.get
|
||||||
- npm set cache .npm
|
- mix deps.compile
|
||||||
- npm --prefix ./assets ci --no-audit --prefer-offline
|
- npm --prefix ./assets ci --progress=false --no-audit --loglevel=error
|
||||||
- npm run --prefix ./assets deploy
|
- npm run --prefix ./assets deploy
|
||||||
- mix do phx.digest, gettext.extract
|
- mix do phx.digest, gettext.extract
|
||||||
- mix test.all
|
- mix test.all
|
||||||
@ -80,8 +76,7 @@ steps:
|
|||||||
mount:
|
mount:
|
||||||
- _build
|
- _build
|
||||||
- deps
|
- deps
|
||||||
- .npm
|
- assets/node_modules/
|
||||||
- .mix
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
- name: database
|
- name: database
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
elixir 1.14.1-otp-25
|
elixir 1.14.1-otp-25
|
||||||
erlang 25.1.2
|
erlang 25.1.2
|
||||||
nodejs 18.9.1
|
nodejs 16.18.0
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.checkbox {
|
.checkbox {
|
||||||
@apply bg-primary-900;
|
|
||||||
-ms-transform: scale(1.5);
|
-ms-transform: scale(1.5);
|
||||||
-moz-transform: scale(1.5);
|
-moz-transform: scale(1.5);
|
||||||
-webkit-transform: scale(1.5);
|
-webkit-transform: scale(1.5);
|
||||||
@ -27,31 +26,25 @@
|
|||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
@apply focus:outline-none px-4 py-2 rounded-lg;
|
@apply focus:outline-none px-4 py-2 rounded-lg;
|
||||||
@apply shadow-sm active:shadow-lg;
|
@apply shadow-sm focus:shadow-lg;
|
||||||
@apply border;
|
@apply border;
|
||||||
@apply transition-all duration-300 ease-in-out;
|
@apply transition-all duration-300 ease-in-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-primary {
|
.btn-primary {
|
||||||
@apply bg-primary-900 active:bg-primary-800;
|
@apply bg-primary-900 focus:bg-primary-900 active:bg-primary-800;
|
||||||
@apply border-primary-900 hover:border-primary-800 active:border-primary-700;
|
@apply border-primary-900 hover:border-primary-800 active:border-primary-700;
|
||||||
@apply text-primary-400;
|
@apply text-primary-400;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-secondary {
|
|
||||||
@apply bg-primary-800 active:bg-primary-700;
|
|
||||||
@apply border-primary-800 hover:border-primary-700 active:border-primary-600;
|
|
||||||
@apply text-primary-400;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-alert {
|
.btn-alert {
|
||||||
@apply bg-red-700 active:bg-red-900;
|
@apply bg-red-700 focus:bg-red-800 active:bg-red-900;
|
||||||
@apply border-red-700 active:border-red-900;
|
@apply border-red-700 focus:border-red-800 active:border-red-900;
|
||||||
@apply text-primary-300;
|
@apply text-primary-300;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hr {
|
.hr {
|
||||||
@apply mx-auto border border-primary-600 w-full max-w-3xl;
|
@apply mx-auto border border-primary-600 w-full max-w-2xl;
|
||||||
}
|
}
|
||||||
|
|
||||||
.link {
|
.link {
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
"description": " ",
|
"description": " ",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "v18.9.1",
|
"node": "18.12.1",
|
||||||
"npm": "8.10.0"
|
"npm": "8.19.2"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"deploy": "NODE_ENV=production webpack --mode production",
|
"deploy": "NODE_ENV=production webpack --mode production",
|
||||||
|
@ -1,8 +1,3 @@
|
|||||||
# v0.1.9
|
|
||||||
- Improve server log
|
|
||||||
- Style 大一點
|
|
||||||
- Various minor improvements
|
|
||||||
|
|
||||||
# v0.1.8
|
# v0.1.8
|
||||||
- Fix bug with public registration
|
- Fix bug with public registration
|
||||||
- Improve templates
|
- Improve templates
|
||||||
|
@ -16,8 +16,9 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> get_user_by_email("foo@example.com")
|
iex> register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
%User{}
|
iex> with %User{} <- get_user_by_email("foo@example.com"), do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
iex> get_user_by_email("unknown@example.com")
|
iex> get_user_by_email("unknown@example.com")
|
||||||
nil
|
nil
|
||||||
@ -33,8 +34,9 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> get_user_by_email_and_password("foo@example.com", "valid_password")
|
iex> register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
%User{}
|
iex> with %User{} <- get_user_by_email_and_password("foo@example.com", "valid_password"), do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
iex> get_user_by_email_and_password("foo@example.com", "invalid_password")
|
iex> get_user_by_email_and_password("foo@example.com", "invalid_password")
|
||||||
nil
|
nil
|
||||||
@ -55,14 +57,15 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> get_user!(user_id)
|
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
|
iex> get_user!(user.id)
|
||||||
user
|
user
|
||||||
|
|
||||||
iex> get_user!()
|
> get_user!()
|
||||||
** (Ecto.NoResultsError)
|
** (Ecto.NoResultsError)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@spec get_user!(User.id()) :: User.t()
|
@spec get_user!(User.t()) :: User.t()
|
||||||
def get_user!(id) do
|
def get_user!(id) do
|
||||||
Repo.get!(User, id)
|
Repo.get!(User, id)
|
||||||
end
|
end
|
||||||
@ -72,8 +75,10 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> list_all_users_by_role(user1)
|
iex> {:ok, user1} = register_user(%{email: "foo1@example.com", password: "valid_password"})
|
||||||
%{admin: [%User{role: :admin}], user: [%User{role: :user}]}
|
iex> {:ok, user2} = register_user(%{email: "foo2@example.com", password: "valid_password"})
|
||||||
|
iex> with %{admin: [^user1], user: [^user2]} <- list_all_users_by_role(user1), do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@spec list_all_users_by_role(User.t()) :: %{User.role() => [User.t()]}
|
@spec list_all_users_by_role(User.t()) :: %{User.role() => [User.t()]}
|
||||||
@ -86,8 +91,9 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> list_users_by_role(:admin)
|
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
[%User{role: :admin}]
|
iex> with [^user] <- list_users_by_role(:admin), do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@spec list_users_by_role(:admin) :: [User.t()]
|
@spec list_users_by_role(:admin) :: [User.t()]
|
||||||
@ -102,11 +108,13 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> register_user(%{email: "foo@example.com", password: "valid_password"})
|
iex> with {:ok, %User{email: "foo@example.com"}} <-
|
||||||
{:ok, %User{email: "foo@example.com"}}
|
...> register_user(%{email: "foo@example.com", password: "valid_password"}),
|
||||||
|
...> do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
iex> register_user(%{email: "foo@example"})
|
iex> with {:error, %Changeset{}} <- register_user(%{email: "foo@example"}), do: :passed
|
||||||
{:error, %Changeset{}}
|
:passed
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@spec register_user(attrs :: map()) ::
|
@spec register_user(attrs :: map()) ::
|
||||||
@ -141,11 +149,11 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> change_user_registration()
|
iex> with %Changeset{} <- change_user_registration(), do: :passed
|
||||||
%Changeset{}
|
:passed
|
||||||
|
|
||||||
iex> change_user_registration(%{password: "hi"}
|
iex> with %Changeset{} <- change_user_registration(%{password: "hi"}), do: :passed
|
||||||
%Changeset{}
|
:passed
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@spec change_user_registration() :: User.changeset()
|
@spec change_user_registration() :: User.changeset()
|
||||||
@ -161,8 +169,8 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> change_user_email(%User{email: "foo@example.com"})
|
iex> with %Changeset{} <- change_user_email(%User{email: "foo@example.com"}), do: :passed
|
||||||
%Changeset{}
|
:passed
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@spec change_user_email(User.t()) :: User.changeset()
|
@spec change_user_email(User.t()) :: User.changeset()
|
||||||
@ -176,8 +184,8 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> change_user_role(%User{}, :user)
|
iex> with %Changeset{} <- change_user_role(%User{}, :user), do: :passed
|
||||||
%Changeset{}
|
:passed
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@spec change_user_role(User.t(), User.role()) :: User.changeset()
|
@spec change_user_role(User.t(), User.role()) :: User.changeset()
|
||||||
@ -191,11 +199,17 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> apply_user_email(user, "valid_password", %{email: "new_email@account.com"})
|
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
{:ok, %User{}}
|
iex> with {:ok, %User{}} <-
|
||||||
|
...> apply_user_email(user, "valid_password", %{email: "new_email@account.com"}),
|
||||||
|
...> do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
iex> apply_user_email(user, "invalid password", %{email: "new_email@account"})
|
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
{:error, %Changeset{}}
|
iex> with {:error, %Changeset{}} <-
|
||||||
|
...> apply_user_email(user, "invalid password", %{email: "new_email@account"}),
|
||||||
|
...> do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@spec apply_user_email(User.t(), email :: String.t(), attrs :: map()) ::
|
@spec apply_user_email(User.t(), email :: String.t(), attrs :: map()) ::
|
||||||
@ -240,8 +254,12 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> deliver_update_email_instructions(user, "new_foo@example.com", fn _token -> "example url" end)
|
iex> {:ok, %{id: user_id} = user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
%Oban.Job{args: %{email: :update_email, user_id: ^user_id, attrs: %{url: "example url"}}}
|
iex> with %Oban.Job{
|
||||||
|
...> args: %{email: :update_email, user_id: ^user_id, attrs: %{url: "example url"}}
|
||||||
|
...> } <- deliver_update_email_instructions(user, "new_foo@example.com", fn _token -> "example url" end),
|
||||||
|
...> do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@spec deliver_update_email_instructions(User.t(), current_email :: String.t(), function) ::
|
@spec deliver_update_email_instructions(User.t(), current_email :: String.t(), function) ::
|
||||||
@ -258,8 +276,8 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> change_user_password(%User{})
|
iex> with %Changeset{} <- change_user_password(%User{}), do: :passed
|
||||||
%Changeset{}
|
:passed
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@spec change_user_password(User.t(), attrs :: map()) :: User.changeset()
|
@spec change_user_password(User.t(), attrs :: map()) :: User.changeset()
|
||||||
@ -272,14 +290,20 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> reset_user_password(user, %{
|
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
...> password: "new password",
|
iex> with {:ok, %User{}} <-
|
||||||
...> password_confirmation: "new password"
|
...> reset_user_password(user, %{
|
||||||
...> })
|
...> password: "new password",
|
||||||
{:ok, %User{}}
|
...> password_confirmation: "new password"
|
||||||
|
...> }),
|
||||||
|
...> do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
iex> update_user_password(user, "invalid password", %{password: "123"})
|
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
{:error, %Changeset{}}
|
iex> with {:error, %Changeset{}} <-
|
||||||
|
...> update_user_password(user, "invalid password", %{password: "123"}),
|
||||||
|
...> do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@spec update_user_password(User.t(), String.t(), attrs :: map()) ::
|
@spec update_user_password(User.t(), String.t(), attrs :: map()) ::
|
||||||
@ -305,8 +329,8 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> change_user_locale(%User{})
|
iex> with %Changeset{} <- change_user_locale(%User{}), do: :passed
|
||||||
%Changeset{}
|
:passed
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@spec change_user_locale(User.t()) :: User.changeset()
|
@spec change_user_locale(User.t()) :: User.changeset()
|
||||||
@ -319,8 +343,9 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> update_user_locale(user, "en_US")
|
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
{:ok, %User{}}
|
iex> with {:ok, %User{}} <- update_user_locale(user, "en_US"), do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@spec update_user_locale(User.t(), locale :: String.t()) ::
|
@spec update_user_locale(User.t(), locale :: String.t()) ::
|
||||||
@ -334,11 +359,13 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> delete_user!(user, %User{id: 123, role: :admin})
|
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
%User{}
|
iex> with %User{} <- delete_user!(user, %User{id: 123, role: :admin}), do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
iex> delete_user!(user, user)
|
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
%User{}
|
iex> with %User{} <- delete_user!(user, user), do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@spec delete_user!(user_to_delete :: User.t(), User.t()) :: User.t()
|
@spec delete_user!(user_to_delete :: User.t(), User.t()) :: User.t()
|
||||||
@ -394,10 +421,11 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> is_admin?(%User{role: :admin})
|
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
|
iex> is_admin?(user)
|
||||||
true
|
true
|
||||||
|
|
||||||
iex> is_admin?(%User{})
|
iex> is_admin?(%User{id: Ecto.UUID.generate()})
|
||||||
false
|
false
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@ -411,7 +439,8 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> is_already_admin?(%User{role: :admin})
|
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
|
iex> is_already_admin?(user)
|
||||||
true
|
true
|
||||||
|
|
||||||
iex> is_already_admin?(%User{})
|
iex> is_already_admin?(%User{})
|
||||||
@ -429,9 +458,15 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> deliver_user_confirmation_instructions(user, fn _token -> "example url" end)
|
iex> {:ok, %{id: user_id} = user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
%Oban.Job{args: %{email: :welcome, user_id: ^user_id, attrs: %{url: "example url"}}}
|
iex> with %Oban.Job{
|
||||||
|
...> args: %{email: :welcome, user_id: ^user_id, attrs: %{url: "example url"}}
|
||||||
|
...> } <- deliver_user_confirmation_instructions(user, fn _token -> "example url" end),
|
||||||
|
...> do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
|
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
|
iex> user = user |> User.confirm_changeset() |> Repo.update!()
|
||||||
iex> deliver_user_confirmation_instructions(user, fn _token -> "example url" end)
|
iex> deliver_user_confirmation_instructions(user, fn _token -> "example url" end)
|
||||||
{:error, :already_confirmed}
|
{:error, :already_confirmed}
|
||||||
|
|
||||||
@ -479,8 +514,12 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> deliver_user_reset_password_instructions(user, fn _token -> "example url" end)
|
iex> {:ok, %{id: user_id} = user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
%Oban.Job{args: %{email: :reset_password, user_id: ^user_id, attrs: %{url: "example url"}}}
|
iex> with %Oban.Job{args: %{
|
||||||
|
...> email: :reset_password, user_id: ^user_id, attrs: %{url: "example url"}}
|
||||||
|
...> } <- deliver_user_reset_password_instructions(user, fn _token -> "example url" end),
|
||||||
|
...> do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@spec deliver_user_reset_password_instructions(User.t(), function()) :: Job.t()
|
@spec deliver_user_reset_password_instructions(User.t(), function()) :: Job.t()
|
||||||
@ -496,8 +535,11 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> get_user_by_reset_password_token(encoded_token)
|
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
%User{}
|
iex> {encoded_token, user_token} = UserToken.build_email_token(user, "reset_password")
|
||||||
|
iex> Repo.insert!(user_token)
|
||||||
|
iex> with %User{} <- get_user_by_reset_password_token(encoded_token), do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
iex> get_user_by_reset_password_token("invalidtoken")
|
iex> get_user_by_reset_password_token("invalidtoken")
|
||||||
nil
|
nil
|
||||||
@ -518,14 +560,20 @@ defmodule Memex.Accounts do
|
|||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
iex> reset_user_password(user, %{
|
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
...> password: "new password",
|
iex> with {:ok, %User{}} <-
|
||||||
...> password_confirmation: "new password"
|
...> reset_user_password(user, %{
|
||||||
...> })
|
...> password: "new password",
|
||||||
{:ok, %User{}}
|
...> password_confirmation: "new password"
|
||||||
|
...> }),
|
||||||
|
...> do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
iex> reset_user_password(user, %{password: "valid", password_confirmation: "not the same"})
|
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
|
||||||
{:error, %Changeset{}}
|
iex> with {:error, %Changeset{}} <-
|
||||||
|
...> reset_user_password(user, %{password: "valid", password_confirmation: "not the same"}),
|
||||||
|
...> do: :passed
|
||||||
|
:passed
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@spec reset_user_password(User.t(), attrs :: map()) ::
|
@spec reset_user_password(User.t(), attrs :: map()) ::
|
||||||
|
77
lib/memex/accounts/user_notifier.ex
Normal file
77
lib/memex/accounts/user_notifier.ex
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
defmodule Memex.Accounts.UserNotifier do
|
||||||
|
@moduledoc """
|
||||||
|
Contains templates and messages for user messages
|
||||||
|
"""
|
||||||
|
|
||||||
|
# For simplicity, this module simply logs messages to the terminal.
|
||||||
|
# You should replace it by a proper email or notification tool, such as:
|
||||||
|
#
|
||||||
|
# * Swoosh - https://hexdocs.pm/swoosh
|
||||||
|
# * Bamboo - https://hexdocs.pm/bamboo
|
||||||
|
#
|
||||||
|
defp deliver(to, body) do
|
||||||
|
require Logger
|
||||||
|
Logger.debug(body)
|
||||||
|
{:ok, %{to: to, body: body}}
|
||||||
|
end
|
||||||
|
|
||||||
|
@doc """
|
||||||
|
Deliver instructions to confirm account.
|
||||||
|
"""
|
||||||
|
def deliver_confirmation_instructions(user, url) do
|
||||||
|
deliver(user.email, """
|
||||||
|
|
||||||
|
==============================
|
||||||
|
|
||||||
|
Hi #{user.email},
|
||||||
|
|
||||||
|
You can confirm your account by visiting the URL below:
|
||||||
|
|
||||||
|
#{url}
|
||||||
|
|
||||||
|
If you didn't create an account with us, please ignore this.
|
||||||
|
|
||||||
|
==============================
|
||||||
|
""")
|
||||||
|
end
|
||||||
|
|
||||||
|
@doc """
|
||||||
|
Deliver instructions to reset a user password.
|
||||||
|
"""
|
||||||
|
def deliver_reset_password_instructions(user, url) do
|
||||||
|
deliver(user.email, """
|
||||||
|
|
||||||
|
==============================
|
||||||
|
|
||||||
|
Hi #{user.email},
|
||||||
|
|
||||||
|
You can reset your password by visiting the URL below:
|
||||||
|
|
||||||
|
#{url}
|
||||||
|
|
||||||
|
If you didn't request this change, please ignore this.
|
||||||
|
|
||||||
|
==============================
|
||||||
|
""")
|
||||||
|
end
|
||||||
|
|
||||||
|
@doc """
|
||||||
|
Deliver instructions to update a user email.
|
||||||
|
"""
|
||||||
|
def deliver_update_email_instructions(user, url) do
|
||||||
|
deliver(user.email, """
|
||||||
|
|
||||||
|
==============================
|
||||||
|
|
||||||
|
Hi #{user.email},
|
||||||
|
|
||||||
|
You can change your email by visiting the URL below:
|
||||||
|
|
||||||
|
#{url}
|
||||||
|
|
||||||
|
If you didn't request this change, please ignore this.
|
||||||
|
|
||||||
|
==============================
|
||||||
|
""")
|
||||||
|
end
|
||||||
|
end
|
@ -4,7 +4,7 @@ defmodule Memex.Application do
|
|||||||
@moduledoc false
|
@moduledoc false
|
||||||
|
|
||||||
use Application
|
use Application
|
||||||
alias Memex.Logger
|
alias Memex.ErrorReporter
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def start(_type, _args) do
|
def start(_type, _args) do
|
||||||
@ -33,7 +33,7 @@ defmodule Memex.Application do
|
|||||||
[:oban, :job, :start],
|
[:oban, :job, :start],
|
||||||
[:oban, :job, :stop]
|
[:oban, :job, :stop]
|
||||||
],
|
],
|
||||||
&Logger.handle_event/4,
|
&ErrorReporter.handle_event/4,
|
||||||
[]
|
[]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
defmodule Memex.Logger do
|
defmodule Memex.ErrorReporter do
|
||||||
@moduledoc """
|
@moduledoc """
|
||||||
Custom logger for telemetry events
|
Custom logger for telemetry events
|
||||||
|
|
||||||
@ -12,47 +12,41 @@ defmodule Memex.Logger do
|
|||||||
data =
|
data =
|
||||||
get_oban_job_data(meta, measure)
|
get_oban_job_data(meta, measure)
|
||||||
|> Map.put(:stacktrace, Exception.format_stacktrace(stacktrace))
|
|> Map.put(:stacktrace, Exception.format_stacktrace(stacktrace))
|
||||||
|> pretty_encode()
|
|
||||||
|
|
||||||
Logger.error(meta.reason, data: data)
|
Logger.error(meta.reason, data: pretty_encode(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()
|
Logger.info("Started oban job", data: get_oban_job_data(meta, measure) |> pretty_encode())
|
||||||
Logger.info("Started oban job", data: 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()
|
Logger.info("Finished oban job", data: get_oban_job_data(meta, measure) |> pretty_encode())
|
||||||
Logger.info("Finished oban job", data: 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
|
||||||
data =
|
data =
|
||||||
get_oban_job_data(meta, measure)
|
get_oban_job_data(meta, measure)
|
||||||
|> Map.put(:event, unhandled_event)
|
|> Map.put(:event, unhandled_event)
|
||||||
|> pretty_encode()
|
|
||||||
|
|
||||||
Logger.warning("Unhandled oban job event", data: data)
|
Logger.warning("Unhandled oban job event", data: pretty_encode(data))
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_event(unhandled_event, measure, meta, config) do
|
def handle_event(unhandled_event, measure, meta, config) do
|
||||||
data =
|
data = %{
|
||||||
pretty_encode(%{
|
event: unhandled_event,
|
||||||
event: unhandled_event,
|
meta: meta,
|
||||||
meta: meta,
|
measurements: measure,
|
||||||
measurements: measure,
|
config: config
|
||||||
config: config
|
}
|
||||||
})
|
|
||||||
|
|
||||||
Logger.warning("Unhandled telemetry event", data: data)
|
Logger.warning("Unhandled telemetry event", data: pretty_encode(data))
|
||||||
end
|
end
|
||||||
|
|
||||||
defp get_oban_job_data(%{job: job}, measure) do
|
defp get_oban_job_data(%{job: job}, measure) do
|
||||||
%{
|
job
|
||||||
job: job |> Map.take([:id, :args, :meta, :queue, :worker]),
|
|> Map.take([:id, :args, :meta, :queue, :worker])
|
||||||
measurements: measure
|
|> Map.merge(measure)
|
||||||
}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
defp pretty_encode(data) do
|
defp pretty_encode(data) do
|
@ -93,7 +93,7 @@ defmodule MemexWeb do
|
|||||||
# 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 LiveView and .heex helpers (live_render, live_patch, <.form>, etc)
|
||||||
# Import basic rendering functionality (render, render_layout, etc)
|
# Import basic rendering functionality (render, render_layout, etc)
|
||||||
import Phoenix.{Component, View}
|
import Phoenix.{Component, View}
|
||||||
import MemexWeb.{ErrorHelpers, Gettext, LiveHelpers, ViewHelpers}
|
import MemexWeb.{ErrorHelpers, Gettext, LiveHelpers, ViewHelpers}
|
||||||
|
@ -19,8 +19,7 @@ defmodule MemexWeb.Components.InviteCard do
|
|||||||
|> assign_new(:code_actions, fn -> [] end)
|
|> assign_new(:code_actions, fn -> [] end)
|
||||||
|
|
||||||
~H"""
|
~H"""
|
||||||
<div class="px-8 py-4 flex flex-col justify-center items-center space-y-4
|
<div class="mx-4 my-2 px-8 py-4 flex flex-col justify-center items-center space-y-4
|
||||||
bg-primary-900
|
|
||||||
border border-gray-400 rounded-lg shadow-lg hover:shadow-md
|
border border-gray-400 rounded-lg shadow-lg hover:shadow-md
|
||||||
transition-all duration-300 ease-in-out">
|
transition-all duration-300 ease-in-out">
|
||||||
<h1 class="title text-xl">
|
<h1 class="title text-xl">
|
||||||
@ -56,8 +55,7 @@ defmodule MemexWeb.Components.InviteCard do
|
|||||||
<div class="flex flex-row flex-wrap justify-center items-center">
|
<div class="flex flex-row flex-wrap justify-center items-center">
|
||||||
<code
|
<code
|
||||||
id={"code-#{@invite.id}"}
|
id={"code-#{@invite.id}"}
|
||||||
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-gray-100 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>
|
><%= Routes.user_registration_url(Endpoint, :new, invite: @invite.token) %></code>
|
||||||
<%= render_slot(@code_actions) %>
|
<%= render_slot(@code_actions) %>
|
||||||
|
@ -11,8 +11,7 @@
|
|||||||
phx-value-sort-key={key}
|
phx-value-sort-key={key}
|
||||||
phx-target={@myself}
|
phx-target={@myself}
|
||||||
>
|
>
|
||||||
<i class="w-0 float-right fas fa-sm fa-chevron-up opacity-0"></i>
|
<span><%= label %></span>
|
||||||
<span class={if @last_sort_key == key, do: "underline"}><%= label %></span>
|
|
||||||
<%= if @last_sort_key == key do %>
|
<%= if @last_sort_key == key do %>
|
||||||
<%= case @sort_mode do %>
|
<%= case @sort_mode do %>
|
||||||
<% :asc -> %>
|
<% :asc -> %>
|
||||||
@ -26,7 +25,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</th>
|
</th>
|
||||||
<% else %>
|
<% else %>
|
||||||
<th class={["p-2 cursor-not-allowed", column[:class]]}>
|
<th class={["p-2", column[:class]]}>
|
||||||
<%= label %>
|
<%= label %>
|
||||||
</th>
|
</th>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -82,6 +82,7 @@ defmodule MemexWeb.Components.Topbar do
|
|||||||
<%= @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={Routes.user_session_path(Endpoint, :delete)}
|
||||||
@ -91,6 +92,7 @@ defmodule MemexWeb.Components.Topbar do
|
|||||||
<i class="fas fa-sign-out-alt"></i>
|
<i class="fas fa-sign-out-alt"></i>
|
||||||
</.link>
|
</.link>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li
|
<li
|
||||||
:if={
|
:if={
|
||||||
@current_user.role == :admin and function_exported?(Routes, :live_dashboard_path, 2)
|
@current_user.role == :admin and function_exported?(Routes, :live_dashboard_path, 2)
|
||||||
@ -107,7 +109,7 @@ defmodule MemexWeb.Components.Topbar do
|
|||||||
<% 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={Routes.user_registration_path(Endpoint, :new)}
|
navigate={Routes.user_registration_path(Endpoint, :new)}
|
||||||
class="text-primary-400 text-primary-400 hover:underline truncate"
|
class="text-primary-400 text-primary-400 hover:underline truncate"
|
||||||
>
|
>
|
||||||
<%= dgettext("actions", "register") %>
|
<%= dgettext("actions", "register") %>
|
||||||
@ -116,7 +118,7 @@ defmodule MemexWeb.Components.Topbar do
|
|||||||
|
|
||||||
<li class="mx-2 my-1">
|
<li class="mx-2 my-1">
|
||||||
<.link
|
<.link
|
||||||
href={Routes.user_session_path(Endpoint, :new)}
|
navigate={Routes.user_session_path(Endpoint, :new)}
|
||||||
class="text-primary-400 text-primary-400 hover:underline truncate"
|
class="text-primary-400 text-primary-400 hover:underline truncate"
|
||||||
>
|
>
|
||||||
<%= dgettext("actions", "log in") %>
|
<%= dgettext("actions", "log in") %>
|
||||||
|
@ -4,17 +4,12 @@ defmodule MemexWeb.Components.UserCard do
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
use MemexWeb, :component
|
use MemexWeb, :component
|
||||||
alias Memex.Accounts.User
|
|
||||||
|
|
||||||
attr :user, User, required: true
|
|
||||||
slot(:inner_block, required: true)
|
|
||||||
|
|
||||||
def user_card(assigns) do
|
def user_card(assigns) do
|
||||||
~H"""
|
~H"""
|
||||||
<div
|
<div
|
||||||
id={"user-#{@user.id}"}
|
id={"user-#{@user.id}"}
|
||||||
class="px-8 py-4 flex flex-col justify-center items-center text-center
|
class="mx-4 my-2 px-8 py-4 flex flex-col justify-center items-center text-center
|
||||||
bg-primary-900
|
|
||||||
border border-gray-400 rounded-lg shadow-lg hover:shadow-md
|
border border-gray-400 rounded-lg shadow-lg hover:shadow-md
|
||||||
transition-all duration-300 ease-in-out"
|
transition-all duration-300 ease-in-out"
|
||||||
>
|
>
|
||||||
|
@ -2,7 +2,7 @@ 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
|
alias MemexWeb.{Endpoint, 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
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<div class="mx-auto flex flex-col justify-center items-stretch space-y-8 text-center max-w-3xl">
|
<div class="mx-auto flex flex-col justify-center items-stretch space-y-8 text-center max-w-3xl">
|
||||||
<h1 class="title text-primary-400 text-xl text-left">
|
<h1 class="title text-primary-400 text-2xl">
|
||||||
<%= gettext("faq") %>
|
<%= gettext("faq") %>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
@ -7,13 +7,16 @@
|
|||||||
|
|
||||||
<ul class="flex flex-col justify-center items-stretch space-y-8">
|
<ul class="flex flex-col justify-center items-stretch space-y-8">
|
||||||
<li class="flex flex-col justify-center items-stretch space-y-2">
|
<li class="flex flex-col justify-center items-stretch space-y-2">
|
||||||
<b class="whitespace-nowrap text-left">
|
<b class="whitespace-nowrap">
|
||||||
<%= gettext("what is this?") %>
|
<%= gettext("what is this?") %>
|
||||||
</b>
|
</b>
|
||||||
<p>
|
<p>
|
||||||
<%= gettext(
|
<%= gettext(
|
||||||
"this is a memex, used to document not just your notes, but also your perspectives and processes."
|
"this is a memex, used to document not just your notes, but also your perspectives and processes."
|
||||||
) %>
|
) %>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
<%= gettext("some things that this memex is very loosely inspired by:") %>
|
<%= gettext("some things that this memex is very loosely inspired by:") %>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -52,16 +55,20 @@
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="flex flex-col justify-center items-stretch space-y-2">
|
<li class="flex flex-col justify-center items-stretch space-y-2">
|
||||||
<b class="whitespace-nowrap text-left">
|
<b class="whitespace-nowrap">
|
||||||
<%= gettext("why split up into notes, contexts and pipelines?") %>
|
<%= gettext("why split up into notes, contexts and pipelines?") %>
|
||||||
</b>
|
</b>
|
||||||
<p>
|
<p>
|
||||||
<%= gettext(
|
<%= gettext(
|
||||||
"i really admired the idea of a zettelkasten, especially with org-mode backlinks, however I felt like my notes would immediately become too messy by just putting everything into a single hierarchy."
|
"i really admired the idea of a zettelkasten, especially with org-mode backlinks, however I felt like my notes would immediately become too messy by just putting everything into a single hierarchy."
|
||||||
) %>
|
) %>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
<%= gettext(
|
<%= gettext(
|
||||||
"i wanted to separate between a personal dictionary of concepts and then my thought processes that are built off of my experiences and life lessons. these are notes, and contexts, respectively."
|
"i wanted to separate between a personal dictionary of concepts and then my thought processes that are built off of my experiences and life lessons. these are notes, and contexts, respectively."
|
||||||
) %>
|
) %>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
<%= gettext(
|
<%= gettext(
|
||||||
"finally, i wanted to externalize the processes for common situations that use these thought processes at discrete steps. these are pipelines!"
|
"finally, i wanted to externalize the processes for common situations that use these thought processes at discrete steps. these are pipelines!"
|
||||||
) %>
|
) %>
|
||||||
@ -69,13 +76,15 @@
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="flex flex-col justify-center items-stretch space-y-2">
|
<li class="flex flex-col justify-center items-stretch space-y-2">
|
||||||
<b class="whitespace-nowrap text-left">
|
<b class="whitespace-nowrap">
|
||||||
<%= gettext("what should my notes be like?") %>
|
<%= gettext("what should my notes be like?") %>
|
||||||
</b>
|
</b>
|
||||||
<p>
|
<p>
|
||||||
<%= gettext(
|
<%= gettext(
|
||||||
"in my opinion, notes should be written by any of the discrete objects or concepts that are meaningful to you in your life."
|
"in my opinion, notes should be written by any of the discrete objects or concepts that are meaningful to you in your life."
|
||||||
) %>
|
) %>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
<%= gettext(
|
<%= gettext(
|
||||||
"spoons? probably not. a particular brand of spoons that you really like? why not :)"
|
"spoons? probably not. a particular brand of spoons that you really like? why not :)"
|
||||||
) %>
|
) %>
|
||||||
@ -83,11 +92,13 @@
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="flex flex-col justify-center items-stretch space-y-2">
|
<li class="flex flex-col justify-center items-stretch space-y-2">
|
||||||
<b class="whitespace-nowrap text-left">
|
<b class="whitespace-nowrap">
|
||||||
<%= gettext("what should my contexts be like?") %>
|
<%= gettext("what should my contexts be like?") %>
|
||||||
</b>
|
</b>
|
||||||
<p>
|
<p>
|
||||||
<%= gettext("in my opinion, contexts should be like single-topic blog posts.") %>
|
<%= gettext("in my opinion, contexts should be like single-topic blog posts.") %>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
<%= gettext(
|
<%= gettext(
|
||||||
"for instance, a good context could be what makes some physical designs spark joy for you, and in that context you could backlink to the spoon note as an example of how it fits nicely into your hand."
|
"for instance, a good context could be what makes some physical designs spark joy for you, and in that context you could backlink to the spoon note as an example of how it fits nicely into your hand."
|
||||||
) %>
|
) %>
|
||||||
@ -95,13 +106,15 @@
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="flex flex-col justify-center items-stretch space-y-2">
|
<li class="flex flex-col justify-center items-stretch space-y-2">
|
||||||
<b class="whitespace-nowrap text-left">
|
<b class="whitespace-nowrap">
|
||||||
<%= gettext("what should my pipelines be like?") %>
|
<%= gettext("what should my pipelines be like?") %>
|
||||||
</b>
|
</b>
|
||||||
<p>
|
<p>
|
||||||
<%= gettext(
|
<%= gettext(
|
||||||
"in my opinion, pipelines should be pretty lightweight, and just backlink to contexts to provide most of the heavy lifting."
|
"in my opinion, pipelines should be pretty lightweight, and just backlink to contexts to provide most of the heavy lifting."
|
||||||
) %>
|
) %>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
<%= gettext(
|
<%= gettext(
|
||||||
"for instance, a pipeline for buying an object could have a step where you consider how much it sparks joy, and it could backlink to the physical designs context, maybe with some notes about how it applies in this case."
|
"for instance, a pipeline for buying an object could have a step where you consider how much it sparks joy, and it could backlink to the physical designs context, maybe with some notes about how it applies in this case."
|
||||||
) %>
|
) %>
|
||||||
@ -109,16 +122,20 @@
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="flex flex-col justify-center items-stretch space-y-2">
|
<li class="flex flex-col justify-center items-stretch space-y-2">
|
||||||
<b class="whitespace-nowrap text-left">
|
<b class="whitespace-nowrap">
|
||||||
<%= gettext("how many people should i invite?") %>
|
<%= gettext("how many people should i invite?") %>
|
||||||
</b>
|
</b>
|
||||||
<p>
|
<p>
|
||||||
<%= gettext(
|
<%= gettext(
|
||||||
"while memEx fully supports multiple users, each memEx instance should be treated as a single cohesive and collaborative document."
|
"while memEx fully supports multiple users, each memEx instance should be treated as a single cohesive and collaborative document."
|
||||||
) %>
|
) %>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
<%= gettext(
|
<%= gettext(
|
||||||
"note, context and pipeline slugs must be unique, and you are free to backlink to notes not written by you."
|
"note, context and pipeline slugs must be unique, and you are free to backlink to notes not written by you."
|
||||||
) %>
|
) %>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
<%= gettext(
|
<%= gettext(
|
||||||
"so, i'd recommend inviting anyone you'd like to work on your collective memEx. however, when in doubt, hopefully setting up a new instance is easy enough. if it isn't, then feel free to let me know :)"
|
"so, i'd recommend inviting anyone you'd like to work on your collective memEx. however, when in doubt, hopefully setting up a new instance is easy enough. if it isn't, then feel free to let me know :)"
|
||||||
) %>
|
) %>
|
||||||
|
@ -5,7 +5,7 @@ defmodule MemexWeb.HomeLive do
|
|||||||
|
|
||||||
use MemexWeb, :live_view
|
use MemexWeb, :live_view
|
||||||
alias Memex.Accounts
|
alias Memex.Accounts
|
||||||
alias MemexWeb.FaqLive
|
alias MemexWeb.{Endpoint, FaqLive}
|
||||||
|
|
||||||
@version Mix.Project.config()[:version]
|
@version Mix.Project.config()[:version]
|
||||||
|
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
<div class="mx-auto flex flex-col justify-center items-stretch space-y-4 max-w-lg">
|
<div class="mx-auto flex flex-col justify-center items-stretch space-y-4 max-w-3xl">
|
||||||
<h1 class="title text-primary-400 text-xl">
|
<h1 class="title text-primary-400 text-2xl text-center">
|
||||||
<%= gettext("memEx") %>
|
<%= gettext("memEx") %>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<ul class="flex flex-col space-y-4">
|
<hr class="hr" />
|
||||||
|
|
||||||
|
<ul class="flex flex-col space-y-4 text-center">
|
||||||
<li class="flex flex-col justify-center items-center space-y-2">
|
<li class="flex flex-col justify-center items-center space-y-2">
|
||||||
<b class="whitespace-nowrap">
|
<b class="whitespace-nowrap">
|
||||||
<%= gettext("notes:") %>
|
<%= gettext("notes:") %>
|
||||||
@ -31,8 +33,11 @@
|
|||||||
</p>
|
</p>
|
||||||
</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 space-y-2">
|
||||||
<.link navigate={Routes.live_path(Endpoint, FaqLive)} class="btn btn-primary">
|
<.link
|
||||||
|
navigate={Routes.live_path(Endpoint, FaqLive)}
|
||||||
|
class="link title text-primary-400 text-lg"
|
||||||
|
>
|
||||||
<%= gettext("read more on how to use memEx") %>
|
<%= gettext("read more on how to use memEx") %>
|
||||||
</.link>
|
</.link>
|
||||||
</li>
|
</li>
|
||||||
@ -40,7 +45,7 @@
|
|||||||
|
|
||||||
<hr class="hr" />
|
<hr class="hr" />
|
||||||
|
|
||||||
<ul class="flex flex-col space-y-4">
|
<ul class="flex flex-col space-y-4 text-center">
|
||||||
<h2 class="title text-primary-400 text-lg">
|
<h2 class="title text-primary-400 text-lg">
|
||||||
<%= gettext("features") %>
|
<%= gettext("features") %>
|
||||||
</h2>
|
</h2>
|
||||||
@ -75,29 +80,31 @@
|
|||||||
|
|
||||||
<hr class="hr" />
|
<hr class="hr" />
|
||||||
|
|
||||||
<ul class="flex flex-col justify-center space-y-4">
|
<ul class="flex flex-col space-y-4 text-center">
|
||||||
<h2 class="title text-primary-400 text-lg">
|
<h2 class="title text-primary-400 text-lg">
|
||||||
<%= gettext("instance information") %>
|
<%= gettext("instance information") %>
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<li class="flex flex-col justify-center items-center space-y-2">
|
<li class="flex flex-col justify-center space-x-2">
|
||||||
<b>
|
<b>
|
||||||
<%= gettext("admins:") %>
|
<%= gettext("admins:") %>
|
||||||
</b>
|
</b>
|
||||||
<p class="flex flex-col justify-center items-center space-y-2">
|
<p>
|
||||||
<%= if @admins |> Enum.empty?() do %>
|
<%= if @admins |> Enum.empty?() do %>
|
||||||
<.link href={Routes.user_registration_path(Endpoint, :new)} class="link">
|
<.link href={Routes.user_registration_path(Endpoint, :new)} class="link">
|
||||||
<%= dgettext("prompts", "register to setup memEx") %>
|
<%= dgettext("prompts", "register to setup memEx") %>
|
||||||
</.link>
|
</.link>
|
||||||
<% else %>
|
<% else %>
|
||||||
<a :for={%{email: email} <- @admins} class="link" href={"mailto:#{email}"}>
|
<div class="flex flex-wrap justify-center space-x-2">
|
||||||
<%= email %>
|
<a :for={%{email: email} <- @admins} class="link" href={"mailto:#{email}"}>
|
||||||
</a>
|
<%= email %>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="flex flex-col justify-center items-center space-y-2">
|
<li class="flex flex-row justify-center space-x-2">
|
||||||
<b><%= gettext("registration:") %></b>
|
<b><%= gettext("registration:") %></b>
|
||||||
<p>
|
<p>
|
||||||
<%= case Application.get_env(:memex, Memex.Accounts)[:registration] do
|
<%= case Application.get_env(:memex, Memex.Accounts)[:registration] do
|
||||||
@ -107,7 +114,7 @@
|
|||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="flex flex-col justify-center items-center space-y-2">
|
<li class="flex flex-row justify-center items-center space-x-2">
|
||||||
<b><%= gettext("version:") %></b>
|
<b><%= gettext("version:") %></b>
|
||||||
<.link
|
<.link
|
||||||
href="https://gitea.bubbletea.dev/shibao/memEx/src/branch/stable/changelog.md"
|
href="https://gitea.bubbletea.dev/shibao/memEx/src/branch/stable/changelog.md"
|
||||||
@ -123,12 +130,12 @@
|
|||||||
|
|
||||||
<hr class="hr" />
|
<hr class="hr" />
|
||||||
|
|
||||||
<ul class="flex flex-col space-y-2">
|
<ul class="flex flex-col space-y-2 text-center justify-center">
|
||||||
<h2 class="title text-primary-400 text-lg">
|
<h2 class="title text-primary-400 text-lg">
|
||||||
<%= gettext("get involved") %>
|
<%= gettext("get involved!") %>
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<li class="flex flex-col justify-center items-center space-y-2">
|
<li class="flex flex-col justify-center space-x-2">
|
||||||
<.link
|
<.link
|
||||||
href="https://gitea.bubbletea.dev/shibao/memEx"
|
href="https://gitea.bubbletea.dev/shibao/memEx"
|
||||||
class="flex flex-row justify-center items-center space-x-2 link"
|
class="flex flex-row justify-center items-center space-x-2 link"
|
||||||
@ -139,7 +146,7 @@
|
|||||||
<i class="fas fa-md fa-code"></i>
|
<i class="fas fa-md fa-code"></i>
|
||||||
</.link>
|
</.link>
|
||||||
</li>
|
</li>
|
||||||
<li class="flex flex-col justify-center items-center space-y-2">
|
<li class="flex flex-col justify-center space-x-2">
|
||||||
<.link
|
<.link
|
||||||
href="https://weblate.bubbletea.dev/engage/memEx"
|
href="https://weblate.bubbletea.dev/engage/memEx"
|
||||||
class="flex flex-row justify-center items-center space-x-2 link"
|
class="flex flex-row justify-center items-center space-x-2 link"
|
||||||
@ -150,7 +157,7 @@
|
|||||||
<i class="fas fa-md fa-language"></i>
|
<i class="fas fa-md fa-language"></i>
|
||||||
</.link>
|
</.link>
|
||||||
</li>
|
</li>
|
||||||
<li class="flex flex-col justify-center items-center space-y-2">
|
<li class="flex flex-col justify-center space-x-2">
|
||||||
<.link
|
<.link
|
||||||
href="https://gitea.bubbletea.dev/shibao/memEx/issues/new"
|
href="https://gitea.bubbletea.dev/shibao/memEx/issues/new"
|
||||||
class="flex flex-row justify-center items-center space-x-2 link"
|
class="flex flex-row justify-center items-center space-x-2 link"
|
||||||
|
@ -18,16 +18,13 @@
|
|||||||
<%= changeset_errors(@changeset) %>
|
<%= changeset_errors(@changeset) %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= label(f, :name, gettext("name"), class: "title text-lg text-primary-400") %>
|
<%= label(f, :name, gettext("Name"), class: "title text-lg text-primary-400") %>
|
||||||
<%= text_input(f, :name, class: "input input-primary col-span-2") %>
|
<%= text_input(f, :name, class: "input input-primary col-span-2") %>
|
||||||
<%= error_tag(f, :name, "col-span-3") %>
|
<%= error_tag(f, :name, "col-span-3") %>
|
||||||
|
|
||||||
<%= label(f, :uses_left, gettext("uses left"), class: "title text-lg text-primary-400") %>
|
<%= label(f, :uses_left, gettext("Uses left"), class: "title text-lg text-primary-400") %>
|
||||||
<%= number_input(f, :uses_left, min: 0, class: "input input-primary col-span-2") %>
|
<%= number_input(f, :uses_left, min: 0, class: "input input-primary col-span-2") %>
|
||||||
<%= error_tag(f, :uses_left, "col-span-3") %>
|
<%= error_tag(f, :uses_left, "col-span-3") %>
|
||||||
<span class="col-span-3 text-primary-500 italic text-center">
|
|
||||||
<%= gettext(~s/Leave "Uses left" blank to make invite unlimited/) %>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<%= submit(dgettext("actions", "Save"),
|
<%= submit(dgettext("actions", "Save"),
|
||||||
class: "mx-auto btn btn-primary col-span-3",
|
class: "mx-auto btn btn-primary col-span-3",
|
||||||
|
@ -7,7 +7,7 @@ defmodule MemexWeb.InviteLive.Index do
|
|||||||
import MemexWeb.Components.{InviteCard, UserCard}
|
import MemexWeb.Components.{InviteCard, UserCard}
|
||||||
alias Memex.Accounts
|
alias Memex.Accounts
|
||||||
alias Memex.Accounts.{Invite, Invites}
|
alias Memex.Accounts.{Invite, Invites}
|
||||||
alias MemexWeb.HomeLive
|
alias MemexWeb.{Endpoint, HomeLive}
|
||||||
alias Phoenix.LiveView.JS
|
alias Phoenix.LiveView.JS
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<div class="mx-auto flex flex-col justify-center items-stretch space-y-4 max-w-3xl">
|
<div class="w-full flex flex-col space-y-8 justify-center items-center">
|
||||||
<h1 class="title text-xl title-primary-500">
|
<h1 class="title text-2xl title-primary-500">
|
||||||
<%= gettext("invites") %>
|
<%= gettext("invites") %>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
@ -11,18 +11,22 @@
|
|||||||
<.link patch={Routes.invite_index_path(Endpoint, :new)} class="btn btn-primary">
|
<.link patch={Routes.invite_index_path(Endpoint, :new)} class="btn btn-primary">
|
||||||
<%= dgettext("actions", "invite someone new!") %>
|
<%= dgettext("actions", "invite someone new!") %>
|
||||||
</.link>
|
</.link>
|
||||||
|
<% else %>
|
||||||
|
<.link patch={Routes.invite_index_path(Endpoint, :new)} class="btn btn-primary">
|
||||||
|
<%= dgettext("actions", "create invite") %>
|
||||||
|
</.link>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class="flex flex-col justify-center items-stretch space-y-4">
|
<div class="w-full flex flex-row flex-wrap justify-center items-center">
|
||||||
<.invite_card :for={invite <- @invites} invite={invite} current_user={@current_user}>
|
<.invite_card :for={invite <- @invites} invite={invite} current_user={@current_user}>
|
||||||
<:code_actions>
|
<:code_actions>
|
||||||
<form phx-submit="copy_to_clipboard">
|
<form phx-submit="copy_to_clipboard">
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
class="mx-2 my-1 btn btn-secondary"
|
class="mx-2 my-1 btn btn-primary"
|
||||||
phx-click={JS.dispatch("memex:clipcopy", to: "#code-#{invite.id}")}
|
phx-click={JS.dispatch("memex:clipcopy", to: "#code-#{invite.id}")}
|
||||||
>
|
>
|
||||||
<%= dgettext("actions", "copy") %>
|
<%= dgettext("actions", "Copy to clipboard") %>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
</:code_actions>
|
</:code_actions>
|
||||||
@ -51,7 +55,7 @@
|
|||||||
|
|
||||||
<a
|
<a
|
||||||
href="#"
|
href="#"
|
||||||
class="btn btn-secondary"
|
class="btn btn-primary"
|
||||||
phx-click={if invite.disabled_at, do: "enable_invite", else: "disable_invite"}
|
phx-click={if invite.disabled_at, do: "enable_invite", else: "disable_invite"}
|
||||||
phx-value-id={invite.id}
|
phx-value-id={invite.id}
|
||||||
>
|
>
|
||||||
@ -61,7 +65,7 @@
|
|||||||
<a
|
<a
|
||||||
:if={invite.disabled_at |> is_nil() and not (invite.uses_left |> is_nil())}
|
:if={invite.disabled_at |> is_nil() and not (invite.uses_left |> is_nil())}
|
||||||
href="#"
|
href="#"
|
||||||
class="btn btn-secondary"
|
class="btn btn-primary"
|
||||||
phx-click="set_unlimited"
|
phx-click="set_unlimited"
|
||||||
phx-value-id={invite.id}
|
phx-value-id={invite.id}
|
||||||
data-confirm={
|
data-confirm={
|
||||||
@ -73,24 +77,16 @@
|
|||||||
<%= gettext("set unlimited") %>
|
<%= gettext("set unlimited") %>
|
||||||
</a>
|
</a>
|
||||||
</.invite_card>
|
</.invite_card>
|
||||||
|
|
||||||
<.link
|
|
||||||
:if={@invites != []}
|
|
||||||
patch={Routes.invite_index_path(Endpoint, :new)}
|
|
||||||
class="btn btn-primary ml-auto"
|
|
||||||
>
|
|
||||||
<%= dgettext("actions", "create invite") %>
|
|
||||||
</.link>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= unless @admins |> Enum.empty?() do %>
|
<%= unless @admins |> Enum.empty?() do %>
|
||||||
<hr class="hr" />
|
<hr class="hr" />
|
||||||
|
|
||||||
<h1 class="title text-xl text-primary-400">
|
<h1 class="title text-2xl text-primary-400">
|
||||||
<%= gettext("admins") %>
|
<%= gettext("Admins") %>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<div class="flex flex-col justify-center items-stretch space-y-4">
|
<div class="w-full flex flex-row flex-wrap justify-center items-center">
|
||||||
<.user_card :for={admin <- @admins} user={admin}>
|
<.user_card :for={admin <- @admins} user={admin}>
|
||||||
<.link
|
<.link
|
||||||
href="#"
|
href="#"
|
||||||
@ -100,7 +96,7 @@
|
|||||||
data-confirm={
|
data-confirm={
|
||||||
dgettext(
|
dgettext(
|
||||||
"prompts",
|
"prompts",
|
||||||
"are you sure you want to delete %{email}? this action is permanent!",
|
"are you sure you want to delete %{email}? This action is permanent!",
|
||||||
email: admin.email
|
email: admin.email
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -114,11 +110,11 @@
|
|||||||
<%= unless @users |> Enum.empty?() do %>
|
<%= unless @users |> Enum.empty?() do %>
|
||||||
<hr class="hr" />
|
<hr class="hr" />
|
||||||
|
|
||||||
<h1 class="title text-xl text-primary-400">
|
<h1 class="title text-2xl text-primary-400">
|
||||||
<%= gettext("users") %>
|
<%= gettext("users") %>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<div class="flex flex-col justify-center items-stretch space-y-4">
|
<div class="w-full flex flex-row flex-wrap justify-center items-center">
|
||||||
<.user_card :for={user <- @users} user={user}>
|
<.user_card :for={user <- @users} user={user}>
|
||||||
<.link
|
<.link
|
||||||
href="#"
|
href="#"
|
||||||
@ -128,7 +124,7 @@
|
|||||||
data-confirm={
|
data-confirm={
|
||||||
dgettext(
|
dgettext(
|
||||||
"prompts",
|
"prompts",
|
||||||
"are you sure you want to delete %{email}? this action is permanent!",
|
"are you sure you want to delete %{email}? This action is permanent!",
|
||||||
email: user.email
|
email: user.email
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -28,8 +28,8 @@ defmodule MemexWeb.LiveHelpers do
|
|||||||
def modal(assigns) do
|
def modal(assigns) do
|
||||||
~H"""
|
~H"""
|
||||||
<.link
|
<.link
|
||||||
id="modal-bg"
|
|
||||||
patch={@return_to}
|
patch={@return_to}
|
||||||
|
id="modal-bg"
|
||||||
class="fade-in fixed z-10 left-0 top-0
|
class="fade-in fixed z-10 left-0 top-0
|
||||||
w-full h-full overflow-hidden
|
w-full h-full overflow-hidden
|
||||||
p-8 flex flex-col justify-center items-center cursor-auto"
|
p-8 flex flex-col justify-center items-center cursor-auto"
|
||||||
@ -42,7 +42,7 @@ defmodule MemexWeb.LiveHelpers do
|
|||||||
<div
|
<div
|
||||||
id="modal"
|
id="modal"
|
||||||
class="fixed z-10 left-0 top-0 pointer-events-none
|
class="fixed z-10 left-0 top-0 pointer-events-none
|
||||||
w-full h-full overflow-hidden
|
w-screen h-screen overflow-hidden
|
||||||
p-4 sm:p-8 flex flex-col justify-center items-center"
|
p-4 sm:p-8 flex flex-col justify-center items-center"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
|
@ -11,9 +11,9 @@
|
|||||||
<script defer type="text/javascript" src="/js/app.js">
|
<script defer type="text/javascript" src="/js/app.js">
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body class="pb-8 m-0 p-0 w-full h-full bg-primary-800 text-primary-400 subpixel-antialiased">
|
<body class="m-0 p-0 w-full h-full bg-primary-800 text-primary-400 subpixel-antialiased">
|
||||||
<header>
|
<header>
|
||||||
<.topbar current_user={assigns[:current_user]} />
|
<.topbar current_user={assigns[:current_user]}></.topbar>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div class="pb-8 w-full flex flex-col justify-center items-center text-center">
|
<div class="pb-8 w-full flex flex-col justify-center items-center text-center">
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<main role="main" class="min-h-full min-w-full">
|
<main role="main" class="min-h-full min-w-full">
|
||||||
<header>
|
<header>
|
||||||
<.topbar current_user={assigns[:current_user]} />
|
<.topbar current_user={assigns[:current_user]}></.topbar>
|
||||||
|
|
||||||
<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={get_flash(@conn, :info)} class="alert alert-info" role="alert">
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<main class="pb-8 min-w-full">
|
<main class="pb-8 min-w-full">
|
||||||
<header>
|
<header>
|
||||||
<.topbar current_user={assigns[:current_user]} />
|
<.topbar current_user={assigns[:current_user]}></.topbar>
|
||||||
|
|
||||||
<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
|
<p
|
||||||
@ -33,7 +33,7 @@
|
|||||||
<div
|
<div
|
||||||
id="disconnect"
|
id="disconnect"
|
||||||
class="z-50 fixed opacity-0 bottom-12 right-12 px-8 py-4 w-max h-max
|
class="z-50 fixed opacity-0 bottom-12 right-12 px-8 py-4 w-max h-max
|
||||||
border border-primary-400 shadow-lg rounded-lg bg-primary-900 text-primary-400
|
border border-primary-400 shadow-lg rounded-lg bg-primary-800 text-primary-400
|
||||||
flex justify-center items-center space-x-4
|
flex justify-center items-center space-x-4
|
||||||
transition-opacity ease-in-out duration-500 delay-[2000ms]"
|
transition-opacity ease-in-out duration-500 delay-[2000ms]"
|
||||||
>
|
>
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
action={Routes.user_confirmation_path(@conn, :create)}
|
action={Routes.user_confirmation_path(@conn, :create)}
|
||||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
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, class: "title text-lg text-primary-400") %>
|
||||||
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %>
|
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %>
|
||||||
|
|
||||||
<%= submit(dgettext("actions", "Resend confirmation instructions"),
|
<%= submit(dgettext("actions", "Resend confirmation instructions"),
|
||||||
|
@ -17,11 +17,11 @@
|
|||||||
<%= hidden_input(f, :invite_token, value: @invite_token) %>
|
<%= hidden_input(f, :invite_token, value: @invite_token) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<%= label(f, :email, gettext("email"), class: "title text-lg text-primary-400") %>
|
<%= label(f, :email, class: "title text-lg text-primary-400") %>
|
||||||
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %>
|
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %>
|
||||||
<%= error_tag(f, :email, "col-span-3") %>
|
<%= error_tag(f, :email, "col-span-3") %>
|
||||||
|
|
||||||
<%= label(f, :password, gettext("password"), class: "title text-lg text-primary-400") %>
|
<%= label(f, :password, class: "title text-lg text-primary-400") %>
|
||||||
<%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %>
|
<%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %>
|
||||||
<%= error_tag(f, :password, "col-span-3") %>
|
<%= error_tag(f, :password, "col-span-3") %>
|
||||||
|
|
||||||
|
@ -9,15 +9,17 @@
|
|||||||
action={Routes.user_reset_password_path(@conn, :update, @token)}
|
action={Routes.user_reset_password_path(@conn, :update, @token)}
|
||||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
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">
|
<div :if={@changeset.action && not @changeset.valid?()} class="alert alert-danger col-span-3">
|
||||||
<%= dgettext("errors", "oops, something went wrong! please check the errors below.") %>
|
<p>
|
||||||
</p>
|
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<%= label(f, :password, gettext("new password"), class: "title text-lg text-primary-400") %>
|
<%= label(f, :password, "new password", class: "title text-lg text-primary-400") %>
|
||||||
<%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %>
|
<%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %>
|
||||||
<%= error_tag(f, :password, "col-span-3") %>
|
<%= error_tag(f, :password, "col-span-3") %>
|
||||||
|
|
||||||
<%= label(f, :password_confirmation, gettext("confirm new password"),
|
<%= label(f, :password_confirmation, "Confirm new password",
|
||||||
class: "title text-lg text-primary-400"
|
class: "title text-lg text-primary-400"
|
||||||
) %>
|
) %>
|
||||||
<%= password_input(f, :password_confirmation,
|
<%= password_input(f, :password_confirmation,
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
action={Routes.user_reset_password_path(@conn, :create)}
|
action={Routes.user_reset_password_path(@conn, :create)}
|
||||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
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, class: "title text-lg text-primary-400") %>
|
||||||
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %>
|
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %>
|
||||||
|
|
||||||
<%= submit(dgettext("actions", "send instructions to reset password"),
|
<%= submit(dgettext("actions", "send instructions to reset password"),
|
||||||
|
@ -10,17 +10,19 @@
|
|||||||
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">
|
<div :if={@error_message} class="alert alert-danger col-span-3">
|
||||||
<%= @error_message %>
|
<p>
|
||||||
</p>
|
<%= @error_message %>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<%= label(f, :email, gettext("email"), class: "title text-lg text-primary-400") %>
|
<%= label(f, :email, class: "title text-lg text-primary-400") %>
|
||||||
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %>
|
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %>
|
||||||
|
|
||||||
<%= label(f, :password, gettext("password"), class: "title text-lg text-primary-400") %>
|
<%= label(f, :password, class: "title text-lg text-primary-400") %>
|
||||||
<%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %>
|
<%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %>
|
||||||
|
|
||||||
<%= label(f, :remember_me, gettext("keep me logged in for 60 days"),
|
<%= label(f, :remember_me, gettext("Keep me logged in for 60 days"),
|
||||||
class: "title text-lg text-primary-400"
|
class: "title text-lg text-primary-400"
|
||||||
) %>
|
) %>
|
||||||
<%= checkbox(f, :remember_me, class: "checkbox col-span-2") %>
|
<%= checkbox(f, :remember_me, class: "checkbox col-span-2") %>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<div class="mx-auto pb-8 max-w-3xl flex flex-col justify-center items-stretch text-right space-y-4">
|
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center text-center space-y-4">
|
||||||
<h1 class="title text-primary-400 text-xl text-left">
|
<h1 class="pb-4 title text-primary-400 text-xl">
|
||||||
<%= gettext("settings") %>
|
<%= gettext("settings") %>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
@ -11,7 +11,7 @@
|
|||||||
action={Routes.user_settings_path(@conn, :update)}
|
action={Routes.user_settings_path(@conn, :update)}
|
||||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
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 col-span-3">
|
||||||
<%= dgettext("actions", "change email") %>
|
<%= dgettext("actions", "change email") %>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
@ -19,7 +19,9 @@
|
|||||||
:if={@email_changeset.action && not @email_changeset.valid?()}
|
:if={@email_changeset.action && not @email_changeset.valid?()}
|
||||||
class="alert alert-danger col-span-3"
|
class="alert alert-danger col-span-3"
|
||||||
>
|
>
|
||||||
<%= dgettext("errors", "oops, something went wrong! please check the errors below") %>
|
<p>
|
||||||
|
<%= dgettext("errors", "oops, something went wrong! Please check the errors below") %>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= hidden_input(f, :action, name: "action", value: "update_email") %>
|
<%= hidden_input(f, :action, name: "action", value: "update_email") %>
|
||||||
@ -53,16 +55,18 @@
|
|||||||
action={Routes.user_settings_path(@conn, :update)}
|
action={Routes.user_settings_path(@conn, :update)}
|
||||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
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 col-span-3">
|
||||||
<%= dgettext("actions", "change password") %>
|
<%= dgettext("actions", "change password") %>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<p
|
<div
|
||||||
:if={@password_changeset.action && not @password_changeset.valid?()}
|
:if={@password_changeset.action && not @password_changeset.valid?()}
|
||||||
class="alert alert-danger col-span-3"
|
class="alert alert-danger col-span-3"
|
||||||
>
|
>
|
||||||
<%= dgettext("errors", "oops, something went wrong! please check the errors below.") %>
|
<p>
|
||||||
</p>
|
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<%= hidden_input(f, :action, name: "action", value: "update_password") %>
|
<%= hidden_input(f, :action, name: "action", value: "update_password") %>
|
||||||
|
|
||||||
@ -105,35 +109,37 @@
|
|||||||
:let={f}
|
:let={f}
|
||||||
for={@locale_changeset}
|
for={@locale_changeset}
|
||||||
action={Routes.user_settings_path(@conn, :update)}
|
action={Routes.user_settings_path(@conn, :update)}
|
||||||
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
|
class="flex flex-col space-y-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">
|
||||||
<%= dgettext("actions", "change language") %>
|
<%= dgettext("actions", "change language") %>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
:if={@locale_changeset.action && not @locale_changeset.valid?()}
|
:if={@locale_changeset.action && not @locale_changeset.valid?()}
|
||||||
class="alert alert-danger col-span-3"
|
class="alert alert-danger"
|
||||||
>
|
>
|
||||||
<%= dgettext("errors", "oops, something went wrong! please check the errors below") %>
|
<p>
|
||||||
|
<%= dgettext("errors", "oops, something went wrong! Please check the errors below") %>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= hidden_input(f, :action, name: "action", value: "update_locale") %>
|
<%= hidden_input(f, :action, name: "action", value: "update_locale") %>
|
||||||
|
|
||||||
<%= select(f, :locale, [{gettext("english"), "en_US"}, {"spanish", "es"}],
|
<%= select(f, :locale, [{gettext("english"), "en_US"}, {"spanish", "es"}],
|
||||||
class: "mx-2 my-1 min-w-md input input-primary col-start-2"
|
class: "mx-2 my-1 min-w-md input input-primary"
|
||||||
) %>
|
) %>
|
||||||
<%= error_tag(f, :locale, "col-span-3") %>
|
<%= error_tag(f, :locale) %>
|
||||||
|
|
||||||
<%= submit(dgettext("actions", "change language"),
|
<%= submit(dgettext("actions", "change language"),
|
||||||
class: "whitespace-nowrap mx-auto btn btn-primary col-span-3",
|
class: "whitespace-nowrap mx-auto btn btn-primary",
|
||||||
data: [qa: dgettext("prompts", "are you sure you want to change your language?")]
|
data: [qa: dgettext("prompts", "are you sure you want to change your language?")]
|
||||||
) %>
|
) %>
|
||||||
</.form>
|
</.form>
|
||||||
|
|
||||||
<hr class="hr" />
|
<hr class="hr" />
|
||||||
|
|
||||||
<div class="flex justify-end items-center">
|
<div class="flex justify-center items-center">
|
||||||
<.link
|
<.link
|
||||||
href={Routes.export_path(@conn, :export, :json)}
|
href={Routes.export_path(@conn, :export, :json)}
|
||||||
class="mx-4 my-2 btn btn-primary"
|
class="mx-4 my-2 btn btn-primary"
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
defmodule MemexWeb.LayoutView do
|
defmodule MemexWeb.LayoutView do
|
||||||
use MemexWeb, :view
|
use MemexWeb, :view
|
||||||
import MemexWeb.Components.Topbar
|
import MemexWeb.{Components.Topbar, Gettext}
|
||||||
alias MemexWeb.HomeLive
|
alias MemexWeb.HomeLive
|
||||||
|
|
||||||
# Phoenix LiveDashboard is available only in development by default,
|
# Phoenix LiveDashboard is available only in development by default,
|
||||||
# so we instruct Elixir to not warn if the dashboard route is missing.
|
# so we instruct Elixir to not warn if the dashboard route is missing.
|
||||||
@compile {:no_warn_undefined, {Routes, :live_dashboard_path, 2}}
|
@compile {:no_warn_undefined, {Routes, :live_dashboard_path, 2}}
|
||||||
|
|
||||||
def get_title(%{assigns: %{title: title}}) when title not in [nil, ""] do
|
def get_title(%{assigns: %{title: title}}) do
|
||||||
gettext("memEx | %{title}", title: title)
|
gettext("memEx | %{title}", title: title)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ defmodule MemexWeb.ViewHelpers do
|
|||||||
img_data =
|
img_data =
|
||||||
content
|
content
|
||||||
|> EQRCode.encode()
|
|> EQRCode.encode()
|
||||||
|> EQRCode.png(width: width, background_color: <<24, 24, 27>>, color: <<255, 255, 255>>)
|
|> EQRCode.png(width: width, background_color: <<39, 39, 42>>, color: <<255, 255, 255>>)
|
||||||
|> Base.encode64()
|
|> Base.encode64()
|
||||||
|
|
||||||
"data:image/png;base64," <> img_data
|
"data:image/png;base64," <> img_data
|
||||||
|
4
mix.exs
4
mix.exs
@ -4,8 +4,8 @@ defmodule Memex.MixProject do
|
|||||||
def project do
|
def project do
|
||||||
[
|
[
|
||||||
app: :memex,
|
app: :memex,
|
||||||
version: "0.1.9",
|
version: "0.1.8",
|
||||||
elixir: "1.14.1",
|
elixir: "~> 1.14",
|
||||||
elixirc_paths: elixirc_paths(Mix.env()),
|
elixirc_paths: elixirc_paths(Mix.env()),
|
||||||
compilers: Mix.compilers(),
|
compilers: Mix.compilers(),
|
||||||
start_permanent: Mix.env() == :prod,
|
start_permanent: Mix.env() == :prod,
|
||||||
|
@ -10,6 +10,11 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/live/invite_live/index.html.heex:29
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Copy to clipboard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:3
|
#: lib/memex_web/templates/user_confirmation/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:15
|
#: lib/memex_web/templates/user_confirmation/new.html.heex:15
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
@ -17,35 +22,35 @@ msgid "Resend confirmation instructions"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:3
|
#: lib/memex_web/templates/user_reset_password/edit.html.heex:3
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:29
|
#: lib/memex_web/templates/user_reset_password/edit.html.heex:31
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Reset password"
|
msgid "Reset password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.html.heex:32
|
#: lib/memex_web/live/invite_live/form_component.html.heex:29
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:15
|
#: lib/memex_web/templates/user_settings/edit.html.heex:15
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:43
|
#: lib/memex_web/templates/user_settings/edit.html.heex:45
|
||||||
#, 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:111
|
#: lib/memex_web/templates/user_settings/edit.html.heex:115
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:128
|
#: lib/memex_web/templates/user_settings/edit.html.heex:134
|
||||||
#, 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/templates/user_settings/edit.html.heex:59
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:97
|
#: lib/memex_web/templates/user_settings/edit.html.heex:101
|
||||||
#, 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:82
|
#: lib/memex_web/live/invite_live/index.html.heex:16
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "create invite"
|
msgid "create invite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -61,7 +66,7 @@ msgstr ""
|
|||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:151
|
#: lib/memex_web/templates/user_settings/edit.html.heex:157
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete user"
|
msgid "delete user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -82,13 +87,13 @@ msgstr ""
|
|||||||
msgid "invite someone new!"
|
msgid "invite someone new!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/topbar.ex:122
|
#: lib/memex_web/components/topbar.ex:124
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:31
|
#: lib/memex_web/templates/user_confirmation/new.html.heex:31
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:44
|
#: lib/memex_web/templates/user_registration/new.html.heex:44
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:45
|
#: lib/memex_web/templates/user_reset_password/edit.html.heex:47
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:31
|
#: lib/memex_web/templates/user_reset_password/new.html.heex:31
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:3
|
#: lib/memex_web/templates/user_session/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:28
|
#: lib/memex_web/templates/user_session/new.html.heex:30
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "log in"
|
msgid "log in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -108,13 +113,13 @@ msgstr ""
|
|||||||
msgid "new pipeline"
|
msgid "new pipeline"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/topbar.ex:113
|
#: lib/memex_web/components/topbar.ex:115
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:28
|
#: lib/memex_web/templates/user_confirmation/new.html.heex:28
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:3
|
#: lib/memex_web/templates/user_registration/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:37
|
#: lib/memex_web/templates/user_registration/new.html.heex:37
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:42
|
#: lib/memex_web/templates/user_reset_password/edit.html.heex:44
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:28
|
#: lib/memex_web/templates/user_reset_password/new.html.heex:28
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:39
|
#: lib/memex_web/templates/user_session/new.html.heex:41
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "register"
|
msgid "register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -141,7 +146,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:47
|
#: lib/memex_web/templates/user_registration/new.html.heex:47
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:3
|
#: lib/memex_web/templates/user_reset_password/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:42
|
#: lib/memex_web/templates/user_session/new.html.heex:44
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "forgot your password?"
|
msgid "forgot your password?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -151,12 +156,7 @@ msgstr ""
|
|||||||
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/templates/user_settings/edit.html.heex:148
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "export data as json"
|
msgid "export data as json"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:25
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "copy"
|
|
||||||
msgstr ""
|
|
||||||
|
@ -10,6 +10,11 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
|
|
||||||
|
#: lib/memex_web/live/invite_live/index.html.heex:29
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Copy to clipboard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:3
|
#: lib/memex_web/templates/user_confirmation/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:15
|
#: lib/memex_web/templates/user_confirmation/new.html.heex:15
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
@ -17,35 +22,35 @@ msgid "Resend confirmation instructions"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:3
|
#: lib/memex_web/templates/user_reset_password/edit.html.heex:3
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:29
|
#: lib/memex_web/templates/user_reset_password/edit.html.heex:31
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Reset password"
|
msgid "Reset password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.html.heex:32
|
#: lib/memex_web/live/invite_live/form_component.html.heex:29
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:15
|
#: lib/memex_web/templates/user_settings/edit.html.heex:15
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:43
|
#: lib/memex_web/templates/user_settings/edit.html.heex:45
|
||||||
#, 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:111
|
#: lib/memex_web/templates/user_settings/edit.html.heex:115
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:128
|
#: lib/memex_web/templates/user_settings/edit.html.heex:134
|
||||||
#, 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/templates/user_settings/edit.html.heex:59
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:97
|
#: lib/memex_web/templates/user_settings/edit.html.heex:101
|
||||||
#, 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:82
|
#: lib/memex_web/live/invite_live/index.html.heex:16
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "create invite"
|
msgid "create invite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -61,7 +66,7 @@ msgstr ""
|
|||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:151
|
#: lib/memex_web/templates/user_settings/edit.html.heex:157
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "delete user"
|
msgid "delete user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -82,13 +87,13 @@ msgstr ""
|
|||||||
msgid "invite someone new!"
|
msgid "invite someone new!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/topbar.ex:122
|
#: lib/memex_web/components/topbar.ex:124
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:31
|
#: lib/memex_web/templates/user_confirmation/new.html.heex:31
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:44
|
#: lib/memex_web/templates/user_registration/new.html.heex:44
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:45
|
#: lib/memex_web/templates/user_reset_password/edit.html.heex:47
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:31
|
#: lib/memex_web/templates/user_reset_password/new.html.heex:31
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:3
|
#: lib/memex_web/templates/user_session/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:28
|
#: lib/memex_web/templates/user_session/new.html.heex:30
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "log in"
|
msgid "log in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -108,13 +113,13 @@ msgstr ""
|
|||||||
msgid "new pipeline"
|
msgid "new pipeline"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/topbar.ex:113
|
#: lib/memex_web/components/topbar.ex:115
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:28
|
#: lib/memex_web/templates/user_confirmation/new.html.heex:28
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:3
|
#: lib/memex_web/templates/user_registration/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:37
|
#: lib/memex_web/templates/user_registration/new.html.heex:37
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:42
|
#: lib/memex_web/templates/user_reset_password/edit.html.heex:44
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:28
|
#: lib/memex_web/templates/user_reset_password/new.html.heex:28
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:39
|
#: lib/memex_web/templates/user_session/new.html.heex:41
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "register"
|
msgid "register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -141,7 +146,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:47
|
#: lib/memex_web/templates/user_registration/new.html.heex:47
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:3
|
#: lib/memex_web/templates/user_reset_password/new.html.heex:3
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:42
|
#: lib/memex_web/templates/user_session/new.html.heex:44
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "forgot your password?"
|
msgid "forgot your password?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -151,12 +156,7 @@ msgstr ""
|
|||||||
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/templates/user_settings/edit.html.heex:148
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "export data as json"
|
msgid "export data as json"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:25
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "copy"
|
|
||||||
msgstr ""
|
|
||||||
|
@ -12,11 +12,35 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Translate Toolkit 3.7.4\n"
|
"X-Generator: Translate Toolkit 3.7.4\n"
|
||||||
|
|
||||||
|
## This file is a PO Template file.
|
||||||
|
##
|
||||||
|
## "msgid"s here are often extracted from source code.
|
||||||
|
## Add new translations manually only if they're dynamic
|
||||||
|
## translations that can't be statically extracted.
|
||||||
|
##
|
||||||
|
## Run "mix gettext.extract" to bring this file up to
|
||||||
|
## date. Leave "msgstr"s empty as changing them here has no
|
||||||
|
## effect: edit them in PO (.po) files instead.
|
||||||
|
#: lib/memex_web/live/invite_live/index.html.heex:86
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Admins"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_confirmation_controller.ex:8
|
#: lib/memex_web/controllers/user_confirmation_controller.ex:8
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Confirm your account"
|
msgid "Confirm your account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/templates/user_session/new.html.heex:25
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Keep me logged in for 60 days"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/live/invite_live/form_component.html.heex:21
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/layout/live.html.heex:43
|
#: lib/memex_web/templates/layout/live.html.heex:43
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Reconnecting..."
|
msgid "Reconnecting..."
|
||||||
@ -27,6 +51,11 @@ msgstr ""
|
|||||||
msgid "Reset your password"
|
msgid "Reset your password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/live/invite_live/form_component.html.heex:25
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Uses left"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:19
|
#: lib/memex_web/live/context_live/show.html.heex:19
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:19
|
#: lib/memex_web/live/note_live/show.html.heex:19
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:27
|
#: lib/memex_web/live/pipeline_live/show.html.heex:27
|
||||||
@ -34,23 +63,22 @@ msgstr ""
|
|||||||
msgid "Visibility: %{visibility}"
|
msgid "Visibility: %{visibility}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:71
|
#: lib/memex_web/live/home_live.html.heex:76
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "accessible from any internet-capable device"
|
msgid "accessible from any internet-capable device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:85
|
#: lib/memex_web/live/home_live.html.heex:90
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "admins:"
|
msgid "admins:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:53
|
#: lib/memex_web/live/home_live.html.heex:58
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
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/templates/user_settings/edit.html.heex:80
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:76
|
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "confirm new password"
|
msgid "confirm new password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -68,33 +96,33 @@ msgstr ""
|
|||||||
msgid "contexts"
|
msgid "contexts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:18
|
#: lib/memex_web/live/home_live.html.heex:20
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "contexts:"
|
msgid "contexts:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:68
|
#: lib/memex_web/live/home_live.html.heex:73
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "convenient:"
|
msgid "convenient:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:31
|
#: lib/memex_web/templates/user_settings/edit.html.heex:33
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:85
|
#: lib/memex_web/templates/user_settings/edit.html.heex:89
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "current password"
|
msgid "current password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:58
|
#: lib/memex_web/live/invite_live/index.html.heex:62
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "disable"
|
msgid "disable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:12
|
#: lib/memex_web/live/home_live.html.heex:14
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "document notes about individual items or concepts"
|
msgid "document notes about individual items or concepts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:30
|
#: lib/memex_web/live/home_live.html.heex:32
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "document your processes, attaching contexts to each step"
|
msgid "document your processes, attaching contexts to each step"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -104,51 +132,53 @@ msgstr ""
|
|||||||
msgid "edit invite"
|
msgid "edit invite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:20
|
#: lib/memex_web/templates/user_settings/edit.html.heex:29
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:12
|
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:17
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:27
|
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/user_card.ex:34
|
#: lib/memex_web/components/user_card.ex:29
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "email unconfirmed"
|
msgid "email unconfirmed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:58
|
#: lib/memex_web/live/invite_live/index.html.heex:62
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "enable"
|
msgid "enable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:32
|
#: lib/memex_web/templates/user_registration/new.html.heex:32
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:123
|
#: lib/memex_web/templates/user_settings/edit.html.heex:129
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "english"
|
msgid "english"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:45
|
#: lib/memex_web/live/home_live.html.heex:50
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "features"
|
msgid "features"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:149
|
#: lib/memex_web/live/home_live.html.heex:135
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "get involved!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/live/home_live.html.heex:156
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "help translate"
|
msgid "help translate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:80
|
#: lib/memex_web/live/home_live.html.heex:85
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "instance information"
|
msgid "instance information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/invite_card.ex:43
|
#: lib/memex_web/components/invite_card.ex:42
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "invite disabled"
|
msgid "invite disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:105
|
#: lib/memex_web/live/home_live.html.heex:112
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "invite only"
|
msgid "invite only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -165,7 +195,7 @@ msgstr ""
|
|||||||
msgid "log in"
|
msgid "log in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:50
|
#: lib/memex_web/live/home_live.html.heex:55
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "multi-user:"
|
msgid "multi-user:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -175,8 +205,7 @@ msgstr ""
|
|||||||
msgid "new invite"
|
msgid "new invite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:16
|
#: lib/memex_web/templates/user_settings/edit.html.heex:73
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:69
|
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "new password"
|
msgid "new password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -199,7 +228,7 @@ msgstr ""
|
|||||||
msgid "notes"
|
msgid "notes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:9
|
#: lib/memex_web/live/home_live.html.heex:11
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "notes:"
|
msgid "notes:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -212,27 +241,27 @@ msgstr ""
|
|||||||
msgid "pipelines"
|
msgid "pipelines"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:27
|
#: lib/memex_web/live/home_live.html.heex:29
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "pipelines:"
|
msgid "pipelines:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:62
|
#: lib/memex_web/live/home_live.html.heex:67
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "privacy controls on a per-note, context or pipeline basis"
|
msgid "privacy controls on a per-note, context or pipeline basis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:59
|
#: lib/memex_web/live/home_live.html.heex:64
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "privacy:"
|
msgid "privacy:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:21
|
#: lib/memex_web/live/home_live.html.heex:23
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "provide context around a single topic and hotlink to your notes"
|
msgid "provide context around a single topic and hotlink to your notes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:104
|
#: lib/memex_web/live/home_live.html.heex:111
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "public signups"
|
msgid "public signups"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -242,12 +271,12 @@ msgstr ""
|
|||||||
msgid "register"
|
msgid "register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:101
|
#: lib/memex_web/live/home_live.html.heex:108
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "registration:"
|
msgid "registration:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:160
|
#: lib/memex_web/live/home_live.html.heex:167
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "report bugs or request features"
|
msgid "report bugs or request features"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -267,7 +296,7 @@ msgstr ""
|
|||||||
msgid "select privacy"
|
msgid "select privacy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:73
|
#: lib/memex_web/live/invite_live/index.html.heex:77
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "set unlimited"
|
msgid "set unlimited"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -292,17 +321,17 @@ msgstr ""
|
|||||||
msgid "tags"
|
msgid "tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:118
|
#: lib/memex_web/live/invite_live/index.html.heex:114
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "users"
|
msgid "users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:111
|
#: lib/memex_web/live/home_live.html.heex:118
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "version:"
|
msgid "version:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:138
|
#: lib/memex_web/live/home_live.html.heex:145
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "view the source code"
|
msgid "view the source code"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -479,62 +508,62 @@ msgstr ""
|
|||||||
msgid "use [[context-slug]] to link to a context"
|
msgid "use [[context-slug]] to link to a context"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:65
|
#: lib/memex_web/live/faq_live.html.heex:72
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "finally, i wanted to externalize the processes for common situations that use these thought processes at discrete steps. these are pipelines!"
|
msgid "finally, i wanted to externalize the processes for common situations that use these thought processes at discrete steps. these are pipelines!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:91
|
#: lib/memex_web/live/faq_live.html.heex:102
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "for instance, a good context could be what makes some physical designs spark joy for you, and in that context you could backlink to the spoon note as an example of how it fits nicely into your hand."
|
msgid "for instance, a good context could be what makes some physical designs spark joy for you, and in that context you could backlink to the spoon note as an example of how it fits nicely into your hand."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:105
|
#: lib/memex_web/live/faq_live.html.heex:118
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "for instance, a pipeline for buying an object could have a step where you consider how much it sparks joy, and it could backlink to the physical designs context, maybe with some notes about how it applies in this case."
|
msgid "for instance, a pipeline for buying an object could have a step where you consider how much it sparks joy, and it could backlink to the physical designs context, maybe with some notes about how it applies in this case."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:59
|
#: lib/memex_web/live/faq_live.html.heex:62
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "i really admired the idea of a zettelkasten, especially with org-mode backlinks, however I felt like my notes would immediately become too messy by just putting everything into a single hierarchy."
|
msgid "i really admired the idea of a zettelkasten, especially with org-mode backlinks, however I felt like my notes would immediately become too messy by just putting everything into a single hierarchy."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:62
|
#: lib/memex_web/live/faq_live.html.heex:67
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "i wanted to separate between a personal dictionary of concepts and then my thought processes that are built off of my experiences and life lessons. these are notes, and contexts, respectively."
|
msgid "i wanted to separate between a personal dictionary of concepts and then my thought processes that are built off of my experiences and life lessons. these are notes, and contexts, respectively."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:90
|
#: lib/memex_web/live/faq_live.html.heex:99
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "in my opinion, contexts should be like single-topic blog posts."
|
msgid "in my opinion, contexts should be like single-topic blog posts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:76
|
#: lib/memex_web/live/faq_live.html.heex:83
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "in my opinion, notes should be written by any of the discrete objects or concepts that are meaningful to you in your life."
|
msgid "in my opinion, notes should be written by any of the discrete objects or concepts that are meaningful to you in your life."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:102
|
#: lib/memex_web/live/faq_live.html.heex:113
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "in my opinion, pipelines should be pretty lightweight, and just backlink to contexts to provide most of the heavy lifting."
|
msgid "in my opinion, pipelines should be pretty lightweight, and just backlink to contexts to provide most of the heavy lifting."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:28
|
#: lib/memex_web/live/faq_live.html.heex:31
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "memex"
|
msgid "memex"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:48
|
#: lib/memex_web/live/faq_live.html.heex:51
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "org-mode"
|
msgid "org-mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:17
|
#: lib/memex_web/live/faq_live.html.heex:20
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "some things that this memex is very loosely inspired by:"
|
msgid "some things that this memex is very loosely inspired by:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:79
|
#: lib/memex_web/live/faq_live.html.heex:88
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "spoons? probably not. a particular brand of spoons that you really like? why not :)"
|
msgid "spoons? probably not. a particular brand of spoons that you really like? why not :)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -544,27 +573,27 @@ msgstr ""
|
|||||||
msgid "this is a memex, used to document not just your notes, but also your perspectives and processes."
|
msgid "this is a memex, used to document not just your notes, but also your perspectives and processes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:87
|
#: lib/memex_web/live/faq_live.html.heex:96
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "what should my contexts be like?"
|
msgid "what should my contexts be like?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:73
|
#: lib/memex_web/live/faq_live.html.heex:80
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "what should my notes be like?"
|
msgid "what should my notes be like?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:99
|
#: lib/memex_web/live/faq_live.html.heex:110
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "what should my pipelines be like?"
|
msgid "what should my pipelines be like?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:56
|
#: lib/memex_web/live/faq_live.html.heex:59
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "why split up into notes, contexts and pipelines?"
|
msgid "why split up into notes, contexts and pipelines?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:38
|
#: lib/memex_web/live/faq_live.html.heex:41
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "zettelkasten"
|
msgid "zettelkasten"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -579,22 +608,22 @@ msgstr ""
|
|||||||
msgid "forgot your password?"
|
msgid "forgot your password?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:113
|
#: lib/memex_web/live/faq_live.html.heex:126
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "how many people should i invite?"
|
msgid "how many people should i invite?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:119
|
#: lib/memex_web/live/faq_live.html.heex:134
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "note, context and pipeline slugs must be unique, and you are free to backlink to notes not written by you."
|
msgid "note, context and pipeline slugs must be unique, and you are free to backlink to notes not written by you."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:122
|
#: lib/memex_web/live/faq_live.html.heex:139
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "so, i'd recommend inviting anyone you'd like to work on your collective memEx. however, when in doubt, hopefully setting up a new instance is easy enough. if it isn't, then feel free to let me know :)"
|
msgid "so, i'd recommend inviting anyone you'd like to work on your collective memEx. however, when in doubt, hopefully setting up a new instance is easy enough. if it isn't, then feel free to let me know :)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:116
|
#: lib/memex_web/live/faq_live.html.heex:129
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
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 ""
|
||||||
@ -604,73 +633,32 @@ msgstr ""
|
|||||||
msgid "language"
|
msgid "language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/user_card.ex:28
|
#: lib/memex_web/components/user_card.ex:23
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "user confirmed on%{confirmed_datetime}"
|
msgid "user confirmed on%{confirmed_datetime}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/user_card.ex:39
|
#: lib/memex_web/components/user_card.ex:34
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "user registered on%{registered_datetime}"
|
msgid "user registered on%{registered_datetime}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/invite_card.ex:38
|
#: lib/memex_web/components/invite_card.ex:37
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "uses left: unlimited"
|
msgid "uses left: unlimited"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:36
|
#: lib/memex_web/live/home_live.html.heex:41
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "read more on how to use memEx"
|
msgid "read more on how to use memEx"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/invite_card.ex:33
|
#: lib/memex_web/components/invite_card.ex:32
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "uses left: %{uses_left_count}"
|
msgid "uses left: %{uses_left_count}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/invite_card.ex:53
|
#: lib/memex_web/components/invite_card.ex:52
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "uses: %{uses_count}"
|
msgid "uses: %{uses_count}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:128
|
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
|
||||||
msgid "get involved"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:12
|
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
|
||||||
msgid "Email"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.html.heex:29
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Leave \"Uses left\" blank to make invite unlimited"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:90
|
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
|
||||||
msgid "admins"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:23
|
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
|
||||||
msgid "keep me logged in for 60 days"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.html.heex:21
|
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
|
||||||
msgid "name"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:24
|
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:20
|
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
|
||||||
msgid "password"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.html.heex:25
|
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
|
||||||
msgid "uses left"
|
|
||||||
msgstr ""
|
|
||||||
|
@ -20,6 +20,12 @@ msgstr ""
|
|||||||
msgid "Invalid email or password"
|
msgid "Invalid email or password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/templates/user_reset_password/edit.html.heex:14
|
||||||
|
#: lib/memex_web/templates/user_settings/edit.html.heex:67
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Oops, something went wrong! Please check the errors below."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_reset_password_controller.ex:63
|
#: lib/memex_web/controllers/user_reset_password_controller.ex:63
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Reset password link is invalid or it has expired."
|
msgid "Reset password link is invalid or it has expired."
|
||||||
@ -73,6 +79,12 @@ msgstr ""
|
|||||||
msgid "must have the @ sign and no spaces"
|
msgid "must have the @ sign and no spaces"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/templates/user_settings/edit.html.heex:23
|
||||||
|
#: lib/memex_web/templates/user_settings/edit.html.heex:123
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "oops, something went wrong! Please check the errors below"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex/contexts/context.ex:58
|
#: lib/memex/contexts/context.ex:58
|
||||||
#: lib/memex/contexts/context.ex:71
|
#: lib/memex/contexts/context.ex:71
|
||||||
#: lib/memex/notes/note.ex:57
|
#: lib/memex/notes/note.ex:57
|
||||||
@ -111,8 +123,6 @@ msgid "invalid format: only numbers, letters and hyphen are accepted. tags must
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:13
|
#: lib/memex_web/templates/user_registration/new.html.heex:13
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:13
|
|
||||||
#: lib/memex_web/templates/user_settings/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 ""
|
||||||
@ -136,9 +146,3 @@ msgstr ""
|
|||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
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/templates/user_settings/edit.html.heex:118
|
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
|
||||||
msgid "oops, something went wrong! please check the errors below"
|
|
||||||
msgstr ""
|
|
||||||
|
@ -55,32 +55,38 @@ msgstr ""
|
|||||||
msgid "Password reset successfully."
|
msgid "Password reset successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.html.heex:34
|
#: lib/memex_web/live/invite_live/form_component.html.heex:31
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Saving..."
|
msgid "Saving..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:130
|
#: lib/memex_web/templates/user_settings/edit.html.heex:136
|
||||||
#, 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 ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:43
|
#: lib/memex_web/live/invite_live/index.html.heex:97
|
||||||
|
#: lib/memex_web/live/invite_live/index.html.heex:125
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "are you sure you want to delete %{email}? This action is permanent!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/live/invite_live/index.html.heex:47
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
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/templates/user_settings/edit.html.heex:155
|
||||||
#, 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/topbar.ex:89
|
#: lib/memex_web/components/topbar.ex:90
|
||||||
#, 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 ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:68
|
#: lib/memex_web/live/invite_live/index.html.heex:72
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "are you sure you want to make %{invite_name} unlimited?"
|
msgid "are you sure you want to make %{invite_name} unlimited?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -106,7 +112,7 @@ msgstr ""
|
|||||||
msgid "language updated successfully."
|
msgid "language updated successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:90
|
#: lib/memex_web/live/home_live.html.heex:95
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "register to setup memEx"
|
msgid "register to setup memEx"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -150,9 +156,3 @@ msgstr ""
|
|||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "your account has been deleted"
|
msgid "your account has been deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:101
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:129
|
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
|
||||||
msgid "are you sure you want to delete %{email}? this action is permanent!"
|
|
||||||
msgstr ""
|
|
||||||
|
@ -10,11 +10,26 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/live/invite_live/index.html.heex:86
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Admins"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_confirmation_controller.ex:8
|
#: lib/memex_web/controllers/user_confirmation_controller.ex:8
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Confirm your account"
|
msgid "Confirm your account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/templates/user_session/new.html.heex:25
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Keep me logged in for 60 days"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/live/invite_live/form_component.html.heex:21
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/layout/live.html.heex:43
|
#: lib/memex_web/templates/layout/live.html.heex:43
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Reconnecting..."
|
msgid "Reconnecting..."
|
||||||
@ -25,6 +40,11 @@ msgstr ""
|
|||||||
msgid "Reset your password"
|
msgid "Reset your password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/live/invite_live/form_component.html.heex:25
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Uses left"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:19
|
#: lib/memex_web/live/context_live/show.html.heex:19
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:19
|
#: lib/memex_web/live/note_live/show.html.heex:19
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:27
|
#: lib/memex_web/live/pipeline_live/show.html.heex:27
|
||||||
@ -32,23 +52,22 @@ msgstr ""
|
|||||||
msgid "Visibility: %{visibility}"
|
msgid "Visibility: %{visibility}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:71
|
#: lib/memex_web/live/home_live.html.heex:76
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "accessible from any internet-capable device"
|
msgid "accessible from any internet-capable device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:85
|
#: lib/memex_web/live/home_live.html.heex:90
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "admins:"
|
msgid "admins:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:53
|
#: lib/memex_web/live/home_live.html.heex:58
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
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/templates/user_settings/edit.html.heex:80
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:76
|
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "confirm new password"
|
msgid "confirm new password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -66,33 +85,33 @@ msgstr ""
|
|||||||
msgid "contexts"
|
msgid "contexts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:18
|
#: lib/memex_web/live/home_live.html.heex:20
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "contexts:"
|
msgid "contexts:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:68
|
#: lib/memex_web/live/home_live.html.heex:73
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "convenient:"
|
msgid "convenient:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:31
|
#: lib/memex_web/templates/user_settings/edit.html.heex:33
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:85
|
#: lib/memex_web/templates/user_settings/edit.html.heex:89
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "current password"
|
msgid "current password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:58
|
#: lib/memex_web/live/invite_live/index.html.heex:62
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "disable"
|
msgid "disable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:12
|
#: lib/memex_web/live/home_live.html.heex:14
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "document notes about individual items or concepts"
|
msgid "document notes about individual items or concepts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:30
|
#: lib/memex_web/live/home_live.html.heex:32
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "document your processes, attaching contexts to each step"
|
msgid "document your processes, attaching contexts to each step"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -102,51 +121,53 @@ msgstr ""
|
|||||||
msgid "edit invite"
|
msgid "edit invite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:20
|
#: lib/memex_web/templates/user_settings/edit.html.heex:29
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:12
|
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:17
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:27
|
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/user_card.ex:34
|
#: lib/memex_web/components/user_card.ex:29
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "email unconfirmed"
|
msgid "email unconfirmed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:58
|
#: lib/memex_web/live/invite_live/index.html.heex:62
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "enable"
|
msgid "enable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:32
|
#: lib/memex_web/templates/user_registration/new.html.heex:32
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:123
|
#: lib/memex_web/templates/user_settings/edit.html.heex:129
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "english"
|
msgid "english"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:45
|
#: lib/memex_web/live/home_live.html.heex:50
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "features"
|
msgid "features"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:149
|
#: lib/memex_web/live/home_live.html.heex:135
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "get involved!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/live/home_live.html.heex:156
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "help translate"
|
msgid "help translate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:80
|
#: lib/memex_web/live/home_live.html.heex:85
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "instance information"
|
msgid "instance information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/invite_card.ex:43
|
#: lib/memex_web/components/invite_card.ex:42
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "invite disabled"
|
msgid "invite disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:105
|
#: lib/memex_web/live/home_live.html.heex:112
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "invite only"
|
msgid "invite only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -163,7 +184,7 @@ msgstr ""
|
|||||||
msgid "log in"
|
msgid "log in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:50
|
#: lib/memex_web/live/home_live.html.heex:55
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "multi-user:"
|
msgid "multi-user:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -173,8 +194,7 @@ msgstr ""
|
|||||||
msgid "new invite"
|
msgid "new invite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:16
|
#: lib/memex_web/templates/user_settings/edit.html.heex:73
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:69
|
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "new password"
|
msgid "new password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -197,7 +217,7 @@ msgstr ""
|
|||||||
msgid "notes"
|
msgid "notes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:9
|
#: lib/memex_web/live/home_live.html.heex:11
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "notes:"
|
msgid "notes:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -210,27 +230,27 @@ msgstr ""
|
|||||||
msgid "pipelines"
|
msgid "pipelines"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:27
|
#: lib/memex_web/live/home_live.html.heex:29
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "pipelines:"
|
msgid "pipelines:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:62
|
#: lib/memex_web/live/home_live.html.heex:67
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "privacy controls on a per-note, context or pipeline basis"
|
msgid "privacy controls on a per-note, context or pipeline basis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:59
|
#: lib/memex_web/live/home_live.html.heex:64
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "privacy:"
|
msgid "privacy:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:21
|
#: lib/memex_web/live/home_live.html.heex:23
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "provide context around a single topic and hotlink to your notes"
|
msgid "provide context around a single topic and hotlink to your notes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:104
|
#: lib/memex_web/live/home_live.html.heex:111
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "public signups"
|
msgid "public signups"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -240,12 +260,12 @@ msgstr ""
|
|||||||
msgid "register"
|
msgid "register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:101
|
#: lib/memex_web/live/home_live.html.heex:108
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "registration:"
|
msgid "registration:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:160
|
#: lib/memex_web/live/home_live.html.heex:167
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "report bugs or request features"
|
msgid "report bugs or request features"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -265,7 +285,7 @@ msgstr ""
|
|||||||
msgid "select privacy"
|
msgid "select privacy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:73
|
#: lib/memex_web/live/invite_live/index.html.heex:77
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "set unlimited"
|
msgid "set unlimited"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -290,17 +310,17 @@ msgstr ""
|
|||||||
msgid "tags"
|
msgid "tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:118
|
#: lib/memex_web/live/invite_live/index.html.heex:114
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "users"
|
msgid "users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:111
|
#: lib/memex_web/live/home_live.html.heex:118
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "version:"
|
msgid "version:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:138
|
#: lib/memex_web/live/home_live.html.heex:145
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "view the source code"
|
msgid "view the source code"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -477,62 +497,62 @@ msgstr ""
|
|||||||
msgid "use [[context-slug]] to link to a context"
|
msgid "use [[context-slug]] to link to a context"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:65
|
#: lib/memex_web/live/faq_live.html.heex:72
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "finally, i wanted to externalize the processes for common situations that use these thought processes at discrete steps. these are pipelines!"
|
msgid "finally, i wanted to externalize the processes for common situations that use these thought processes at discrete steps. these are pipelines!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:91
|
#: lib/memex_web/live/faq_live.html.heex:102
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "for instance, a good context could be what makes some physical designs spark joy for you, and in that context you could backlink to the spoon note as an example of how it fits nicely into your hand."
|
msgid "for instance, a good context could be what makes some physical designs spark joy for you, and in that context you could backlink to the spoon note as an example of how it fits nicely into your hand."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:105
|
#: lib/memex_web/live/faq_live.html.heex:118
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "for instance, a pipeline for buying an object could have a step where you consider how much it sparks joy, and it could backlink to the physical designs context, maybe with some notes about how it applies in this case."
|
msgid "for instance, a pipeline for buying an object could have a step where you consider how much it sparks joy, and it could backlink to the physical designs context, maybe with some notes about how it applies in this case."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:59
|
#: lib/memex_web/live/faq_live.html.heex:62
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "i really admired the idea of a zettelkasten, especially with org-mode backlinks, however I felt like my notes would immediately become too messy by just putting everything into a single hierarchy."
|
msgid "i really admired the idea of a zettelkasten, especially with org-mode backlinks, however I felt like my notes would immediately become too messy by just putting everything into a single hierarchy."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:62
|
#: lib/memex_web/live/faq_live.html.heex:67
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "i wanted to separate between a personal dictionary of concepts and then my thought processes that are built off of my experiences and life lessons. these are notes, and contexts, respectively."
|
msgid "i wanted to separate between a personal dictionary of concepts and then my thought processes that are built off of my experiences and life lessons. these are notes, and contexts, respectively."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:90
|
#: lib/memex_web/live/faq_live.html.heex:99
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "in my opinion, contexts should be like single-topic blog posts."
|
msgid "in my opinion, contexts should be like single-topic blog posts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:76
|
#: lib/memex_web/live/faq_live.html.heex:83
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "in my opinion, notes should be written by any of the discrete objects or concepts that are meaningful to you in your life."
|
msgid "in my opinion, notes should be written by any of the discrete objects or concepts that are meaningful to you in your life."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:102
|
#: lib/memex_web/live/faq_live.html.heex:113
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "in my opinion, pipelines should be pretty lightweight, and just backlink to contexts to provide most of the heavy lifting."
|
msgid "in my opinion, pipelines should be pretty lightweight, and just backlink to contexts to provide most of the heavy lifting."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:28
|
#: lib/memex_web/live/faq_live.html.heex:31
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "memex"
|
msgid "memex"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:48
|
#: lib/memex_web/live/faq_live.html.heex:51
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "org-mode"
|
msgid "org-mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:17
|
#: lib/memex_web/live/faq_live.html.heex:20
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "some things that this memex is very loosely inspired by:"
|
msgid "some things that this memex is very loosely inspired by:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:79
|
#: lib/memex_web/live/faq_live.html.heex:88
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "spoons? probably not. a particular brand of spoons that you really like? why not :)"
|
msgid "spoons? probably not. a particular brand of spoons that you really like? why not :)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -542,27 +562,27 @@ msgstr ""
|
|||||||
msgid "this is a memex, used to document not just your notes, but also your perspectives and processes."
|
msgid "this is a memex, used to document not just your notes, but also your perspectives and processes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:87
|
#: lib/memex_web/live/faq_live.html.heex:96
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "what should my contexts be like?"
|
msgid "what should my contexts be like?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:73
|
#: lib/memex_web/live/faq_live.html.heex:80
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "what should my notes be like?"
|
msgid "what should my notes be like?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:99
|
#: lib/memex_web/live/faq_live.html.heex:110
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "what should my pipelines be like?"
|
msgid "what should my pipelines be like?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:56
|
#: lib/memex_web/live/faq_live.html.heex:59
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "why split up into notes, contexts and pipelines?"
|
msgid "why split up into notes, contexts and pipelines?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:38
|
#: lib/memex_web/live/faq_live.html.heex:41
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "zettelkasten"
|
msgid "zettelkasten"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -577,22 +597,22 @@ msgstr ""
|
|||||||
msgid "forgot your password?"
|
msgid "forgot your password?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:113
|
#: lib/memex_web/live/faq_live.html.heex:126
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "how many people should i invite?"
|
msgid "how many people should i invite?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:119
|
#: lib/memex_web/live/faq_live.html.heex:134
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "note, context and pipeline slugs must be unique, and you are free to backlink to notes not written by you."
|
msgid "note, context and pipeline slugs must be unique, and you are free to backlink to notes not written by you."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:122
|
#: lib/memex_web/live/faq_live.html.heex:139
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "so, i'd recommend inviting anyone you'd like to work on your collective memEx. however, when in doubt, hopefully setting up a new instance is easy enough. if it isn't, then feel free to let me know :)"
|
msgid "so, i'd recommend inviting anyone you'd like to work on your collective memEx. however, when in doubt, hopefully setting up a new instance is easy enough. if it isn't, then feel free to let me know :)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:116
|
#: lib/memex_web/live/faq_live.html.heex:129
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
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 ""
|
||||||
@ -602,73 +622,32 @@ msgstr ""
|
|||||||
msgid "language"
|
msgid "language"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/user_card.ex:28
|
#: lib/memex_web/components/user_card.ex:23
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "user confirmed on%{confirmed_datetime}"
|
msgid "user confirmed on%{confirmed_datetime}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/user_card.ex:39
|
#: lib/memex_web/components/user_card.ex:34
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "user registered on%{registered_datetime}"
|
msgid "user registered on%{registered_datetime}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/invite_card.ex:38
|
#: lib/memex_web/components/invite_card.ex:37
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "uses left: unlimited"
|
msgid "uses left: unlimited"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:36
|
#: lib/memex_web/live/home_live.html.heex:41
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "read more on how to use memEx"
|
msgid "read more on how to use memEx"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/invite_card.ex:33
|
#: lib/memex_web/components/invite_card.ex:32
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "uses left: %{uses_left_count}"
|
msgid "uses left: %{uses_left_count}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/invite_card.ex:53
|
#: lib/memex_web/components/invite_card.ex:52
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "uses: %{uses_count}"
|
msgid "uses: %{uses_count}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:128
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "get involved"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:12
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Email"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.html.heex:29
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Leave \"Uses left\" blank to make invite unlimited"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:90
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "admins"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:23
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "keep me logged in for 60 days"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.html.heex:21
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "name"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:24
|
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:20
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "password"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.html.heex:25
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "uses left"
|
|
||||||
msgstr ""
|
|
||||||
|
@ -1,163 +0,0 @@
|
|||||||
## "msgid"s in this file come from POT (.pot) files.
|
|
||||||
###
|
|
||||||
### Do not add, change, or remove "msgid"s manually here as
|
|
||||||
### they're tied to the ones in the corresponding POT file
|
|
||||||
### (with the same domain).
|
|
||||||
###
|
|
||||||
### Use "mix gettext.extract --merge" or "mix gettext.merge"
|
|
||||||
### to merge POT files into PO files.
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Language: en\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:3
|
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:15
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Resend confirmation instructions"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:3
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:29
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Reset password"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.html.heex:32
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Save"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:15
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:43
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "change email"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:111
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:128
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "change language"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:57
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:97
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "change password"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:82
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "create invite"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:48
|
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:41
|
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:48
|
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:41
|
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:48
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:49
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:118
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "delete"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:151
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "delete user"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:38
|
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:31
|
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:38
|
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:31
|
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:38
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:39
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:107
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "edit"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:12
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "invite someone new!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/topbar.ex:122
|
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:31
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:44
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:45
|
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:31
|
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:3
|
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:28
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "log in"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:59
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "new context"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:59
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "new note"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:59
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "new pipeline"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/topbar.ex:113
|
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:28
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:3
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:37
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:42
|
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:28
|
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:39
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "register"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/form_component.html.heex:40
|
|
||||||
#: lib/memex_web/live/note_live/form_component.html.heex:40
|
|
||||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:40
|
|
||||||
#: lib/memex_web/live/step_live/form_component.html.heex:28
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "save"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:24
|
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:24
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:32
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "back"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:134
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "add step"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:47
|
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:3
|
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:42
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "forgot your password?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:15
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "send instructions to reset password"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:142
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "export data as json"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:25
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "copy"
|
|
||||||
msgstr ""
|
|
@ -1,675 +0,0 @@
|
|||||||
## "msgid"s in this file come from POT (.pot) files.
|
|
||||||
###
|
|
||||||
### Do not add, change, or remove "msgid"s manually here as
|
|
||||||
### they're tied to the ones in the corresponding POT file
|
|
||||||
### (with the same domain).
|
|
||||||
###
|
|
||||||
### Use "mix gettext.extract --merge" or "mix gettext.merge"
|
|
||||||
### to merge POT files into PO files.
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Language: en\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_confirmation_controller.ex:8
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Confirm your account"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/layout/live.html.heex:43
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Reconnecting..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_reset_password_controller.ex:36
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Reset your password"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:19
|
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:19
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:27
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Visibility: %{visibility}"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:71
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "accessible from any internet-capable device"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:85
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "admins:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:53
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "built with sharing and collaboration in mind"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:20
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:76
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "confirm new password"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/note_live/form_component.html.heex:23
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "content"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/topbar.ex:52
|
|
||||||
#: 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.html.heex:3
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "contexts"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:18
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "contexts:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:68
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "convenient:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:31
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:85
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "current password"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:58
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "disable"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:12
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "document notes about individual items or concepts"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:30
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "document your processes, attaching contexts to each step"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.ex:34
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "edit invite"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:20
|
|
||||||
#: lib/memex_web/templates/user_reset_password/new.html.heex:12
|
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:17
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:27
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "email"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/user_card.ex:34
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "email unconfirmed"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:58
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "enable"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:32
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:123
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "english"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:45
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "features"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:149
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "help translate"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:80
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "instance information"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/invite_card.ex:43
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "invite disabled"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:105
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "invite only"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/topbar.ex:73
|
|
||||||
#: lib/memex_web/live/invite_live/index.ex:42
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:3
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "invites"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_session_controller.ex:8
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "log in"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:50
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "multi-user:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.ex:38
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "new invite"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:16
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:69
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "new password"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:8
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "no invites 😔"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:23
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "no notes found"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/topbar.ex:43
|
|
||||||
#: 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.html.heex:3
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "notes"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:9
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "notes:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/topbar.ex:61
|
|
||||||
#: 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.html.heex:3
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "pipelines"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:27
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "pipelines:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:62
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "privacy controls on a per-note, context or pipeline basis"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:59
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "privacy:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:21
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "provide context around a single topic and hotlink to your notes"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:104
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "public signups"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:32
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "register"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:101
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "registration:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:160
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "report bugs or request features"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/form_component.html.heex:41
|
|
||||||
#: lib/memex_web/live/note_live/form_component.html.heex:41
|
|
||||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:41
|
|
||||||
#: lib/memex_web/live/step_live/form_component.html.heex:29
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "saving..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/form_component.html.heex:37
|
|
||||||
#: lib/memex_web/live/note_live/form_component.html.heex:37
|
|
||||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:37
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "select privacy"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:73
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "set unlimited"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_settings_controller.ex:10
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:3
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "settings"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/form_component.html.heex:30
|
|
||||||
#: lib/memex_web/live/note_live/form_component.html.heex:30
|
|
||||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:30
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "tag1,tag2"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/contexts_table_component.ex:48
|
|
||||||
#: lib/memex_web/components/notes_table_component.ex:48
|
|
||||||
#: lib/memex_web/components/pipelines_table_component.ex:49
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "tags"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:118
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "users"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:111
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "version:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:138
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "view the source code"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/contexts_table_component.ex:49
|
|
||||||
#: lib/memex_web/components/notes_table_component.ex:49
|
|
||||||
#: lib/memex_web/components/pipelines_table_component.ex:50
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "visibility"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/note_live/index.ex:29
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "new note"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:17
|
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:17
|
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:17
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "search"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.ex:29
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "new context"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:23
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "no contexts found"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/pipelines_table_component.ex:48
|
|
||||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:23
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "description"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/index.ex:29
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "new pipeline"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:23
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "no pipelines found"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/form_component.ex:61
|
|
||||||
#: lib/memex_web/live/note_live/form_component.ex:60
|
|
||||||
#: lib/memex_web/live/pipeline_live/form_component.ex:65
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "%{slug} created"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.ex:57
|
|
||||||
#: lib/memex_web/live/context_live/show.ex:41
|
|
||||||
#: lib/memex_web/live/note_live/index.ex:57
|
|
||||||
#: lib/memex_web/live/note_live/show.ex:41
|
|
||||||
#: lib/memex_web/live/pipeline_live/index.ex:57
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.ex:77
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "%{slug} deleted"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/form_component.ex:44
|
|
||||||
#: lib/memex_web/live/note_live/form_component.ex:43
|
|
||||||
#: lib/memex_web/live/pipeline_live/form_component.ex:48
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "%{slug} saved"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.ex:23
|
|
||||||
#: lib/memex_web/live/context_live/show.ex:48
|
|
||||||
#: lib/memex_web/live/note_live/index.ex:23
|
|
||||||
#: lib/memex_web/live/note_live/show.ex:48
|
|
||||||
#: lib/memex_web/live/pipeline_live/index.ex:23
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.ex:125
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "edit %{slug}"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/contexts_table_component.ex:47
|
|
||||||
#: lib/memex_web/components/notes_table_component.ex:47
|
|
||||||
#: lib/memex_web/components/pipelines_table_component.ex:47
|
|
||||||
#: lib/memex_web/live/context_live/form_component.html.heex:14
|
|
||||||
#: lib/memex_web/live/note_live/form_component.html.heex:14
|
|
||||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:14
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "slug"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/show.ex:19
|
|
||||||
#: lib/memex_web/live/note_live/show.ex:19
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.ex:20
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "%{slug} could not be found"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.ex:15
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "home"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/form_component.html.heex:23
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "use [[note-slug]] to link to a note"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.ex:10
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:3
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "faq"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/topbar.ex:23
|
|
||||||
#: 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:15
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "memEx"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:11
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "what is this?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:67
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "%{position}. %{title}"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/step_live/form_component.ex:67
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "%{title} created"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.ex:96
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "%{title} deleted"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/step_live/form_component.ex:43
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "%{title} saved"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.ex:127
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "add step to %{slug}"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:61
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "no steps"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:56
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "steps:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/step_live/form_component.html.heex:14
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "title"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/step_live/form_component.html.heex:23
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "use [[context-slug]] to link to a context"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:65
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "finally, i wanted to externalize the processes for common situations that use these thought processes at discrete steps. these are pipelines!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:91
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "for instance, a good context could be what makes some physical designs spark joy for you, and in that context you could backlink to the spoon note as an example of how it fits nicely into your hand."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:105
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "for instance, a pipeline for buying an object could have a step where you consider how much it sparks joy, and it could backlink to the physical designs context, maybe with some notes about how it applies in this case."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:59
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "i really admired the idea of a zettelkasten, especially with org-mode backlinks, however I felt like my notes would immediately become too messy by just putting everything into a single hierarchy."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:62
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "i wanted to separate between a personal dictionary of concepts and then my thought processes that are built off of my experiences and life lessons. these are notes, and contexts, respectively."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:90
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "in my opinion, contexts should be like single-topic blog posts."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:76
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "in my opinion, notes should be written by any of the discrete objects or concepts that are meaningful to you in your life."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:102
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "in my opinion, pipelines should be pretty lightweight, and just backlink to contexts to provide most of the heavy lifting."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:28
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "memex"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:48
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "org-mode"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:17
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "some things that this memex is very loosely inspired by:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:79
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "spoons? probably not. a particular brand of spoons that you really like? why not :)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:14
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "this is a memex, used to document not just your notes, but also your perspectives and processes."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:87
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "what should my contexts be like?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:73
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "what should my notes be like?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:99
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "what should my pipelines be like?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:56
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "why split up into notes, contexts and pipelines?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:38
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "zettelkasten"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/views/layout_view.ex:11
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "memEx | %{title}"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_reset_password_controller.ex:9
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "forgot your password?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:113
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "how many people should i invite?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:119
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "note, context and pipeline slugs must be unique, and you are free to backlink to notes not written by you."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:122
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "so, i'd recommend inviting anyone you'd like to work on your collective memEx. however, when in doubt, hopefully setting up a new instance is easy enough. if it isn't, then feel free to let me know :)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/faq_live.html.heex:116
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "while memEx fully supports multiple users, each memEx instance should be treated as a single cohesive and collaborative document."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:28
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "language"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/user_card.ex:28
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "user confirmed on%{confirmed_datetime}"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/user_card.ex:39
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "user registered on%{registered_datetime}"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/invite_card.ex:38
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "uses left: unlimited"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:36
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "read more on how to use memEx"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/invite_card.ex:33
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "uses left: %{uses_left_count}"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/invite_card.ex:53
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "uses: %{uses_count}"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:128
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "get involved"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_confirmation/new.html.heex:12
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Email"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.html.heex:29
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Leave \"Uses left\" blank to make invite unlimited"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:90
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "admins"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:23
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "keep me logged in for 60 days"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.html.heex:21
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "name"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:24
|
|
||||||
#: lib/memex_web/templates/user_session/new.html.heex:20
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "password"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.html.heex:25
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "uses left"
|
|
||||||
msgstr ""
|
|
@ -1,93 +0,0 @@
|
|||||||
## "msgid"s in this file come from POT (.pot) files.
|
|
||||||
###
|
|
||||||
### Do not add, change, or remove "msgid"s manually here as
|
|
||||||
### they're tied to the ones in the corresponding POT file
|
|
||||||
### (with the same domain).
|
|
||||||
###
|
|
||||||
### Use "mix gettext.extract --merge" or "mix gettext.merge"
|
|
||||||
### to merge POT files into PO files.
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Language: en\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#: lib/memex/accounts/email.ex:30
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Confirm your Memex account"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.html.heex:3
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.txt.eex:2
|
|
||||||
#: lib/memex_web/templates/email/reset_password.html.heex:3
|
|
||||||
#: lib/memex_web/templates/email/reset_password.txt.eex:2
|
|
||||||
#: lib/memex_web/templates/email/update_email.html.heex:3
|
|
||||||
#: lib/memex_web/templates/email/update_email.txt.eex:2
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Hi %{email},"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.txt.eex:10
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "If you didn't create an account at %{url}, please ignore this."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/reset_password.txt.eex:8
|
|
||||||
#: lib/memex_web/templates/email/update_email.txt.eex:8
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "If you didn't request this change from %{url}, please ignore this."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex/accounts/email.ex:37
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Reset your Memex password"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex/accounts/email.ex:44
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Update your Memex email"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/update_email.html.heex:8
|
|
||||||
#: lib/memex_web/templates/email/update_email.txt.eex:4
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "You can change your email by visiting the URL below:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.html.heex:14
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.txt.eex:6
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "You can confirm your account by visiting the URL below:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/reset_password.html.heex:8
|
|
||||||
#: lib/memex_web/templates/email/reset_password.txt.eex:4
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "You can reset your password by visiting the URL below:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/layout/email.html.heex:13
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "This email was sent from memEx"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/layout/email.txt.eex:9
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "This email was sent from memEx at %{url}"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.html.heex:22
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "If you didn't create an account at memEx, please ignore this."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/reset_password.html.heex:16
|
|
||||||
#: lib/memex_web/templates/email/update_email.html.heex:16
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "If you didn't request this change from memEx, please ignore this."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.html.heex:9
|
|
||||||
#: lib/memex_web/templates/email/confirm_email.txt.eex:4
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Welcome to memEx"
|
|
||||||
msgstr ""
|
|
@ -1,145 +0,0 @@
|
|||||||
## "msgid"s in this file come from POT (.pot) files.
|
|
||||||
###
|
|
||||||
### Do not add, change, or remove "msgid"s manually here as
|
|
||||||
### they're tied to the ones in the corresponding POT file
|
|
||||||
### (with the same domain).
|
|
||||||
###
|
|
||||||
### Use "mix gettext.extract --merge" or "mix gettext.merge"
|
|
||||||
### to merge POT files into PO files.
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Language: en\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/error/error.html.heex:8
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Error"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_session_controller.ex:17
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Invalid email or password"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_reset_password_controller.ex:63
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Reset password link is invalid or it has expired."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:22
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:51
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Sorry, public registration is disabled"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:12
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:41
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Sorry, this invite was not found or expired"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_confirmation_controller.ex:54
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "User confirmation link is invalid or it has expired."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_auth.ex:177
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "You are not authorized to view this page."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_auth.ex:39
|
|
||||||
#: lib/memex_web/controllers/user_auth.ex:161
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "You must confirm your account and log in to access this page."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex/accounts/user.ex:144
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "did not change"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex/accounts/user.ex:165
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "does not match password"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex/accounts/user.ex:202
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "is not valid"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex/accounts/user.ex:99
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "must have the @ sign and no spaces"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex/contexts/context.ex:58
|
|
||||||
#: lib/memex/contexts/context.ex:71
|
|
||||||
#: lib/memex/notes/note.ex:57
|
|
||||||
#: lib/memex/notes/note.ex:70
|
|
||||||
#: lib/memex/pipelines/pipeline.ex:60
|
|
||||||
#: lib/memex/pipelines/pipeline.ex:73
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "invalid format: only numbers, letters and hyphen are accepted"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/error/error.html.heex:28
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "go back home"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/views/error_view.ex:11
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "internal server error"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/views/error_view.ex:9
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "not found"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/views/error_view.ex:10
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "unauthorized"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex/contexts/context.ex:84
|
|
||||||
#: lib/memex/notes/note.ex:83
|
|
||||||
#: lib/memex/pipelines/pipeline.ex:86
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "invalid format: only numbers, letters and hyphen are accepted. tags must be comma-delimited"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:13
|
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:13
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:64
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "oops, something went wrong! please check the errors below."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:70
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "sorry, this invite was not found or expired"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.ex:19
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "you are not authorized to view this page"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_settings_controller.ex:84
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "email change link is invalid or it has expired."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_settings_controller.ex:99
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "unable to delete user"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:22
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:118
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "oops, something went wrong! please check the errors below"
|
|
||||||
msgstr ""
|
|
@ -1,159 +0,0 @@
|
|||||||
## "msgid"s in this file come from POT (.pot) files.
|
|
||||||
###
|
|
||||||
### Do not add, change, or remove "msgid"s manually here as
|
|
||||||
### they're tied to the ones in the corresponding POT file
|
|
||||||
### (with the same domain).
|
|
||||||
###
|
|
||||||
### Use "mix gettext.extract --merge" or "mix gettext.merge"
|
|
||||||
### to merge POT files into PO files.
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Language: en\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_confirmation_controller.ex:38
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "%{email} confirmed successfully."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.ex:54
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "%{invite_name} deleted succesfully"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.ex:115
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "%{invite_name} disabled succesfully"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.ex:91
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "%{invite_name} enabled succesfully"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.ex:69
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "%{invite_name} updated succesfully"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.ex:140
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "%{user_email} deleted succesfully"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_confirmation_controller.ex:23
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "If your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_reset_password_controller.ex:24
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "If your email is in our system, you will receive instructions to reset your password shortly."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_reset_password_controller.ex:46
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Password reset successfully."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.html.heex:34
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "Saving..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:130
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "are you sure you want to change your language?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:43
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "are you sure you want to delete the invite for %{invite_name}?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:149
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "are you sure you want to delete your account?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/topbar.ex:89
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "are you sure you want to log out?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:68
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "are you sure you want to make %{invite_name} unlimited?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/index.html.heex:45
|
|
||||||
#: lib/memex_web/live/context_live/show.html.heex:38
|
|
||||||
#: lib/memex_web/live/note_live/index.html.heex:45
|
|
||||||
#: lib/memex_web/live/note_live/show.html.heex:38
|
|
||||||
#: lib/memex_web/live/pipeline_live/index.html.heex:45
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:46
|
|
||||||
#: lib/memex_web/live/pipeline_live/show.html.heex:115
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "are you sure?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_session_controller.ex:23
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "logged out successfully."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_settings_controller.ex:65
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "language updated successfully."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:90
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "register to setup memEx"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.ex:80
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "%{name} created successfully"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.ex:62
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "%{name} updated successfully"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.ex:128
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "copied to clipboard"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_registration_controller.ex:65
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "please check your email to verify your account"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_settings_controller.ex:29
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "a link to confirm your email change has been sent to the new address."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_settings_controller.ex:77
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "email changed successfully."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_settings_controller.ex:49
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "password updated successfully."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_settings_controller.ex:95
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "your account has been deleted"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:101
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:129
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "are you sure you want to delete %{email}? this action is permanent!"
|
|
||||||
msgstr ""
|
|
@ -20,6 +20,12 @@ msgstr ""
|
|||||||
msgid "Invalid email or password"
|
msgid "Invalid email or password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/templates/user_reset_password/edit.html.heex:14
|
||||||
|
#: lib/memex_web/templates/user_settings/edit.html.heex:67
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Oops, something went wrong! Please check the errors below."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/controllers/user_reset_password_controller.ex:63
|
#: lib/memex_web/controllers/user_reset_password_controller.ex:63
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Reset password link is invalid or it has expired."
|
msgid "Reset password link is invalid or it has expired."
|
||||||
@ -73,6 +79,12 @@ msgstr ""
|
|||||||
msgid "must have the @ sign and no spaces"
|
msgid "must have the @ sign and no spaces"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/templates/user_settings/edit.html.heex:23
|
||||||
|
#: lib/memex_web/templates/user_settings/edit.html.heex:123
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "oops, something went wrong! Please check the errors below"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex/contexts/context.ex:58
|
#: lib/memex/contexts/context.ex:58
|
||||||
#: lib/memex/contexts/context.ex:71
|
#: lib/memex/contexts/context.ex:71
|
||||||
#: lib/memex/notes/note.ex:57
|
#: lib/memex/notes/note.ex:57
|
||||||
@ -111,8 +123,6 @@ msgid "invalid format: only numbers, letters and hyphen are accepted. tags must
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_registration/new.html.heex:13
|
#: lib/memex_web/templates/user_registration/new.html.heex:13
|
||||||
#: lib/memex_web/templates/user_reset_password/edit.html.heex:13
|
|
||||||
#: lib/memex_web/templates/user_settings/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 ""
|
||||||
@ -136,9 +146,3 @@ msgstr ""
|
|||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
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/templates/user_settings/edit.html.heex:118
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "oops, something went wrong! please check the errors below"
|
|
||||||
msgstr ""
|
|
||||||
|
@ -55,32 +55,38 @@ msgstr ""
|
|||||||
msgid "Password reset successfully."
|
msgid "Password reset successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/form_component.html.heex:34
|
#: lib/memex_web/live/invite_live/form_component.html.heex:31
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Saving..."
|
msgid "Saving..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/templates/user_settings/edit.html.heex:130
|
#: lib/memex_web/templates/user_settings/edit.html.heex:136
|
||||||
#, 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 ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:43
|
#: lib/memex_web/live/invite_live/index.html.heex:97
|
||||||
|
#: lib/memex_web/live/invite_live/index.html.heex:125
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "are you sure you want to delete %{email}? This action is permanent!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/live/invite_live/index.html.heex:47
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
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/templates/user_settings/edit.html.heex:155
|
||||||
#, 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/topbar.ex:89
|
#: lib/memex_web/components/topbar.ex:90
|
||||||
#, 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 ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:68
|
#: lib/memex_web/live/invite_live/index.html.heex:72
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "are you sure you want to make %{invite_name} unlimited?"
|
msgid "are you sure you want to make %{invite_name} unlimited?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -106,7 +112,7 @@ msgstr ""
|
|||||||
msgid "language updated successfully."
|
msgid "language updated successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/home_live.html.heex:90
|
#: lib/memex_web/live/home_live.html.heex:95
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "register to setup memEx"
|
msgid "register to setup memEx"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -150,9 +156,3 @@ msgstr ""
|
|||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "your account has been deleted"
|
msgid "your account has been deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:101
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:129
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "are you sure you want to delete %{email}? this action is permanent!"
|
|
||||||
msgstr ""
|
|
||||||
|
@ -1,176 +0,0 @@
|
|||||||
defmodule Memex.InvitesTest do
|
|
||||||
@moduledoc """
|
|
||||||
This module tests the Memex.Accounts.Invites context
|
|
||||||
"""
|
|
||||||
|
|
||||||
use Memex.DataCase
|
|
||||||
alias Ecto.Changeset
|
|
||||||
alias Memex.Accounts
|
|
||||||
alias Memex.Accounts.{Invite, Invites}
|
|
||||||
|
|
||||||
@moduletag :invites_test
|
|
||||||
|
|
||||||
@valid_attrs %{
|
|
||||||
"name" => "some name"
|
|
||||||
}
|
|
||||||
@invalid_attrs %{
|
|
||||||
"name" => nil,
|
|
||||||
"token" => nil
|
|
||||||
}
|
|
||||||
|
|
||||||
describe "invites" do
|
|
||||||
setup do
|
|
||||||
current_user = admin_fixture()
|
|
||||||
{:ok, invite} = Invites.create_invite(current_user, @valid_attrs)
|
|
||||||
[invite: invite, current_user: current_user]
|
|
||||||
end
|
|
||||||
|
|
||||||
test "list_invites/0 returns all invites", %{invite: invite, current_user: current_user} do
|
|
||||||
assert Invites.list_invites(current_user) == [invite]
|
|
||||||
end
|
|
||||||
|
|
||||||
test "get_invite!/1 returns the invite with given id",
|
|
||||||
%{invite: invite, current_user: current_user} do
|
|
||||||
assert Invites.get_invite!(invite.id, current_user) == invite
|
|
||||||
end
|
|
||||||
|
|
||||||
test "valid_invite_token? returns for valid and invalid invite tokens",
|
|
||||||
%{invite: %{token: token}} do
|
|
||||||
refute Invites.valid_invite_token?(nil)
|
|
||||||
refute Invites.valid_invite_token?("")
|
|
||||||
assert Invites.valid_invite_token?(token)
|
|
||||||
end
|
|
||||||
|
|
||||||
test "valid_invite_token? does not return true for a disabled invite by token",
|
|
||||||
%{invite: %{token: token} = invite, current_user: current_user} do
|
|
||||||
assert Invites.valid_invite_token?(token)
|
|
||||||
|
|
||||||
{:ok, _invite} = Invites.update_invite(invite, %{uses_left: 1}, current_user)
|
|
||||||
{:ok, _invite} = Invites.use_invite(token)
|
|
||||||
|
|
||||||
refute Invites.valid_invite_token?(token)
|
|
||||||
end
|
|
||||||
|
|
||||||
test "get_use_count/2 returns the correct invite usage",
|
|
||||||
%{invite: %{token: token} = invite, current_user: current_user} do
|
|
||||||
assert 0 == Invites.get_use_count(invite, current_user)
|
|
||||||
|
|
||||||
assert {:ok, _user} =
|
|
||||||
Accounts.register_user(
|
|
||||||
%{"email" => unique_user_email(), "password" => valid_user_password()},
|
|
||||||
token
|
|
||||||
)
|
|
||||||
|
|
||||||
assert 1 == Invites.get_use_count(invite, current_user)
|
|
||||||
|
|
||||||
assert {:ok, _user} =
|
|
||||||
Accounts.register_user(
|
|
||||||
%{"email" => unique_user_email(), "password" => valid_user_password()},
|
|
||||||
token
|
|
||||||
)
|
|
||||||
|
|
||||||
assert 2 == Invites.get_use_count(invite, current_user)
|
|
||||||
end
|
|
||||||
|
|
||||||
test "use_invite/1 successfully uses an unlimited invite",
|
|
||||||
%{invite: %{token: token} = invite, current_user: current_user} do
|
|
||||||
{:ok, invite} = Invites.update_invite(invite, %{uses_left: nil}, current_user)
|
|
||||||
assert {:ok, ^invite} = Invites.use_invite(token)
|
|
||||||
assert {:ok, ^invite} = Invites.use_invite(token)
|
|
||||||
assert {:ok, ^invite} = Invites.use_invite(token)
|
|
||||||
end
|
|
||||||
|
|
||||||
test "use_invite/1 successfully decrements an invite",
|
|
||||||
%{invite: %{token: token} = invite, current_user: current_user} do
|
|
||||||
{:ok, _invite} = Invites.update_invite(invite, %{uses_left: 10}, current_user)
|
|
||||||
assert {:ok, %{uses_left: 9}} = Invites.use_invite(token)
|
|
||||||
assert {:ok, %{uses_left: 8}} = Invites.use_invite(token)
|
|
||||||
assert {:ok, %{uses_left: 7}} = Invites.use_invite(token)
|
|
||||||
end
|
|
||||||
|
|
||||||
test "use_invite/1 successfully disactivates an invite",
|
|
||||||
%{invite: %{token: token} = invite, current_user: current_user} do
|
|
||||||
{:ok, _invite} = Invites.update_invite(invite, %{uses_left: 1}, current_user)
|
|
||||||
assert {:ok, %{uses_left: 0, disabled_at: disabled_at}} = Invites.use_invite(token)
|
|
||||||
assert not is_nil(disabled_at)
|
|
||||||
end
|
|
||||||
|
|
||||||
test "use_invite/1 does not work on disactivated invite",
|
|
||||||
%{invite: %{token: token} = invite, current_user: current_user} do
|
|
||||||
{:ok, _invite} = Invites.update_invite(invite, %{uses_left: 1}, current_user)
|
|
||||||
{:ok, _invite} = Invites.use_invite(token)
|
|
||||||
assert {:error, :invalid_token} = Invites.use_invite(token)
|
|
||||||
end
|
|
||||||
|
|
||||||
test "create_invite/1 with valid data creates an unlimited invite",
|
|
||||||
%{current_user: current_user} do
|
|
||||||
assert {:ok, %Invite{} = invite} =
|
|
||||||
Invites.create_invite(current_user, %{
|
|
||||||
"name" => "some name"
|
|
||||||
})
|
|
||||||
|
|
||||||
assert invite.name == "some name"
|
|
||||||
end
|
|
||||||
|
|
||||||
test "create_invite/1 with valid data creates a limited invite",
|
|
||||||
%{current_user: current_user} do
|
|
||||||
assert {:ok, %Invite{} = invite} =
|
|
||||||
Invites.create_invite(current_user, %{
|
|
||||||
"name" => "some name",
|
|
||||||
"uses_left" => 10
|
|
||||||
})
|
|
||||||
|
|
||||||
assert invite.name == "some name"
|
|
||||||
assert invite.uses_left == 10
|
|
||||||
end
|
|
||||||
|
|
||||||
test "create_invite/1 with invalid data returns error changeset",
|
|
||||||
%{current_user: current_user} do
|
|
||||||
assert {:error, %Changeset{}} = Invites.create_invite(current_user, @invalid_attrs)
|
|
||||||
end
|
|
||||||
|
|
||||||
test "update_invite/2 can set an invite to be limited",
|
|
||||||
%{invite: invite, current_user: current_user} do
|
|
||||||
assert {:ok, %Invite{} = new_invite} =
|
|
||||||
Invites.update_invite(
|
|
||||||
invite,
|
|
||||||
%{"name" => "some updated name", "uses_left" => 5},
|
|
||||||
current_user
|
|
||||||
)
|
|
||||||
|
|
||||||
assert new_invite.name == "some updated name"
|
|
||||||
assert new_invite.uses_left == 5
|
|
||||||
end
|
|
||||||
|
|
||||||
test "update_invite/2 can set an invite to be unlimited",
|
|
||||||
%{invite: invite, current_user: current_user} do
|
|
||||||
{:ok, invite} = Invites.update_invite(invite, %{"uses_left" => 5}, current_user)
|
|
||||||
|
|
||||||
assert {:ok, %Invite{} = new_invite} =
|
|
||||||
Invites.update_invite(
|
|
||||||
invite,
|
|
||||||
%{"name" => "some updated name", "uses_left" => nil},
|
|
||||||
current_user
|
|
||||||
)
|
|
||||||
|
|
||||||
assert new_invite.name == "some updated name"
|
|
||||||
assert new_invite.uses_left |> is_nil()
|
|
||||||
end
|
|
||||||
|
|
||||||
test "update_invite/2 with invalid data returns error changeset",
|
|
||||||
%{invite: invite, current_user: current_user} do
|
|
||||||
assert {:error, %Changeset{}} = Invites.update_invite(invite, @invalid_attrs, current_user)
|
|
||||||
assert invite == Invites.get_invite!(invite.id, current_user)
|
|
||||||
end
|
|
||||||
|
|
||||||
test "delete_invite/1 deletes the invite", %{invite: invite, current_user: current_user} do
|
|
||||||
assert {:ok, %Invite{}} = Invites.delete_invite(invite, current_user)
|
|
||||||
assert_raise Ecto.NoResultsError, fn -> Invites.get_invite!(invite.id, current_user) end
|
|
||||||
end
|
|
||||||
|
|
||||||
test "delete_invite!/1 deletes the invite", %{invite: invite, current_user: current_user} do
|
|
||||||
assert %Invite{} = Invites.delete_invite!(invite, current_user)
|
|
||||||
assert_raise Ecto.NoResultsError, fn -> Invites.get_invite!(invite.id, current_user) end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
@ -10,6 +10,8 @@ defmodule Memex.AccountsTest do
|
|||||||
|
|
||||||
@moduletag :accounts_test
|
@moduletag :accounts_test
|
||||||
|
|
||||||
|
doctest Accounts, import: true
|
||||||
|
|
||||||
describe "get_user_by_email/1" do
|
describe "get_user_by_email/1" do
|
||||||
test "does not return the user if the email does not exist" do
|
test "does not return the user if the email does not exist" do
|
||||||
refute Accounts.get_user_by_email("unknown@example.com")
|
refute Accounts.get_user_by_email("unknown@example.com")
|
||||||
@ -512,7 +514,7 @@ defmodule Memex.AccountsTest do
|
|||||||
|
|
||||||
test "deletes all tokens for the given user", %{user: user} do
|
test "deletes all tokens for the given user", %{user: user} do
|
||||||
_session_token = Accounts.generate_user_session_token(user)
|
_session_token = Accounts.generate_user_session_token(user)
|
||||||
{:ok, _user} = Accounts.reset_user_password(user, %{"password" => "new valid password"})
|
{:ok, _} = Accounts.reset_user_password(user, %{"password" => "new valid password"})
|
||||||
refute Repo.get_by(UserToken, user_id: user.id)
|
refute Repo.get_by(UserToken, user_id: user.id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -22,12 +22,13 @@ defmodule MemexWeb.ConnCase do
|
|||||||
|
|
||||||
using do
|
using do
|
||||||
quote do
|
quote do
|
||||||
|
# Import conveniences for testing with connections
|
||||||
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||||
import Memex.Fixtures
|
import Memex.Fixtures
|
||||||
import MemexWeb.ConnCase
|
import MemexWeb.ConnCase
|
||||||
# Import conveniences for testing with connections
|
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||||
import Plug.Conn
|
|
||||||
import Phoenix.ConnTest
|
import Phoenix.ConnTest
|
||||||
|
import Plug.Conn
|
||||||
|
|
||||||
alias MemexWeb.Router.Helpers, as: Routes
|
alias MemexWeb.Router.Helpers, as: Routes
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@ defmodule Memex.Fixtures do
|
|||||||
@moduledoc """
|
@moduledoc """
|
||||||
This module defines test helpers for creating entities
|
This module defines test helpers for creating entities
|
||||||
"""
|
"""
|
||||||
|
|
||||||
alias Memex.{Accounts, Accounts.User, Email, Repo}
|
alias Memex.{Accounts, Accounts.User, Email, Repo}
|
||||||
|
|
||||||
def unique_user_email, do: "user#{System.unique_integer()}@example.com"
|
def unique_user_email, do: "user#{System.unique_integer()}@example.com"
|
||||||
|
Loading…
Reference in New Issue
Block a user