Compare commits
4 Commits
c3ceb877b2
...
1c33cd09c1
Author | SHA1 | Date | |
---|---|---|---|
1c33cd09c1 | |||
926805ba9b | |||
220122dec6 | |||
de399b4819 |
@ -1,3 +1,9 @@
|
|||||||
|
# v0.1.4
|
||||||
|
- fix docker-compose
|
||||||
|
- fix newlines in notes/context/step contents
|
||||||
|
- fix user invite page
|
||||||
|
- improve tagging logic
|
||||||
|
|
||||||
# v0.1.3
|
# v0.1.3
|
||||||
- backlink to other notes in notes
|
- backlink to other notes in notes
|
||||||
- search tags on click
|
- search tags on click
|
||||||
|
@ -2,8 +2,7 @@ version: '3'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
memex:
|
memex:
|
||||||
build:
|
image: shibaobun/memex
|
||||||
context: .
|
|
||||||
container_name: memex
|
container_name: memex
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
|
@ -4,7 +4,6 @@ defmodule Memex.Contexts do
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import Ecto.Query, warn: false
|
import Ecto.Query, warn: false
|
||||||
alias Ecto.Changeset
|
|
||||||
alias Memex.{Accounts.User, Contexts.Context, Repo}
|
alias Memex.{Accounts.User, Contexts.Context, Repo}
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
@ -229,18 +228,4 @@ defmodule Memex.Contexts do
|
|||||||
def change_context(%Context{} = context, attrs \\ %{}, user) do
|
def change_context(%Context{} = context, attrs \\ %{}, user) do
|
||||||
context |> Context.update_changeset(attrs, user)
|
context |> Context.update_changeset(attrs, user)
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc """
|
|
||||||
Gets a canonical string representation of the `:tags` field for a Note
|
|
||||||
"""
|
|
||||||
@spec get_tags_string(Context.t() | Context.changeset() | [String.t()] | nil) :: String.t()
|
|
||||||
def get_tags_string(nil), do: ""
|
|
||||||
def get_tags_string(tags) when tags |> is_list(), do: tags |> Enum.join(",")
|
|
||||||
def get_tags_string(%Context{tags: tags}), do: tags |> get_tags_string()
|
|
||||||
|
|
||||||
def get_tags_string(%Changeset{} = changeset) do
|
|
||||||
changeset
|
|
||||||
|> Changeset.get_field(:tags)
|
|
||||||
|> get_tags_string()
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
@ -27,7 +27,7 @@ defmodule Memex.Contexts.Context do
|
|||||||
slug: slug(),
|
slug: slug(),
|
||||||
content: String.t(),
|
content: String.t(),
|
||||||
tags: [String.t()] | nil,
|
tags: [String.t()] | nil,
|
||||||
tags_string: String.t(),
|
tags_string: String.t() | nil,
|
||||||
visibility: :public | :private | :unlisted,
|
visibility: :public | :private | :unlisted,
|
||||||
user: User.t() | Ecto.Association.NotLoaded.t(),
|
user: User.t() | Ecto.Association.NotLoaded.t(),
|
||||||
user_id: User.id(),
|
user_id: User.id(),
|
||||||
@ -66,16 +66,38 @@ defmodule Memex.Contexts.Context do
|
|||||||
|> unsafe_validate_unique(:slug, Repo)
|
|> unsafe_validate_unique(:slug, Repo)
|
||||||
end
|
end
|
||||||
|
|
||||||
defp cast_tags_string(changeset, %{"tags_string" => tags_string})
|
defp cast_tags_string(changeset, attrs) do
|
||||||
when tags_string |> is_binary() do
|
changeset
|
||||||
tags =
|
|> put_change(:tags_string, changeset |> get_field(:tags) |> get_tags_string())
|
||||||
|
|> cast(attrs, [:tags_string])
|
||||||
|
|> validate_format(:tags_string, ~r/^[\p{L}\p{N}\-\,]+$/,
|
||||||
|
message:
|
||||||
|
dgettext(
|
||||||
|
"errors",
|
||||||
|
"invalid format: only numbers, letters and hyphen are accepted. tags must be comma-delimited"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|> cast_tags()
|
||||||
|
end
|
||||||
|
|
||||||
|
defp cast_tags(%{valid?: false} = changeset), do: changeset
|
||||||
|
|
||||||
|
defp cast_tags(%{valid?: true} = changeset) do
|
||||||
|
tags = changeset |> get_field(:tags_string) |> process_tags()
|
||||||
|
changeset |> put_change(:tags, tags)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp process_tags(tags_string) when tags_string |> is_binary() do
|
||||||
tags_string
|
tags_string
|
||||||
|> String.split(",", trim: true)
|
|> String.split(",", trim: true)
|
||||||
|> Enum.map(fn str -> str |> String.trim() end)
|
|> Enum.map(fn str -> str |> String.trim() end)
|
||||||
|
|> Enum.reject(fn str -> str |> is_nil() end)
|
||||||
|> Enum.sort()
|
|> Enum.sort()
|
||||||
|
|
||||||
changeset |> change(tags: tags)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
defp cast_tags_string(changeset, _attrs), do: changeset
|
defp process_tags(_other_tags_string), do: []
|
||||||
|
|
||||||
|
@spec get_tags_string([String.t()] | nil) :: String.t()
|
||||||
|
def get_tags_string(nil), do: ""
|
||||||
|
def get_tags_string(tags) when tags |> is_list(), do: tags |> Enum.join(",")
|
||||||
end
|
end
|
||||||
|
@ -4,7 +4,6 @@ defmodule Memex.Notes do
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import Ecto.Query, warn: false
|
import Ecto.Query, warn: false
|
||||||
alias Ecto.Changeset
|
|
||||||
alias Memex.{Accounts.User, Notes.Note, Repo}
|
alias Memex.{Accounts.User, Notes.Note, Repo}
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
@ -229,18 +228,4 @@ defmodule Memex.Notes do
|
|||||||
def change_note(%Note{} = note, attrs \\ %{}, user) do
|
def change_note(%Note{} = note, attrs \\ %{}, user) do
|
||||||
note |> Note.update_changeset(attrs, user)
|
note |> Note.update_changeset(attrs, user)
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc """
|
|
||||||
Gets a canonical string representation of the `:tags` field for a Note
|
|
||||||
"""
|
|
||||||
@spec get_tags_string(Note.t() | Note.changeset() | [String.t()] | nil) :: String.t()
|
|
||||||
def get_tags_string(nil), do: ""
|
|
||||||
def get_tags_string(tags) when tags |> is_list(), do: tags |> Enum.join(",")
|
|
||||||
def get_tags_string(%Note{tags: tags}), do: tags |> get_tags_string()
|
|
||||||
|
|
||||||
def get_tags_string(%Changeset{} = changeset) do
|
|
||||||
changeset
|
|
||||||
|> Changeset.get_field(:tags)
|
|
||||||
|> get_tags_string()
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
@ -26,7 +26,7 @@ defmodule Memex.Notes.Note do
|
|||||||
slug: slug(),
|
slug: slug(),
|
||||||
content: String.t(),
|
content: String.t(),
|
||||||
tags: [String.t()] | nil,
|
tags: [String.t()] | nil,
|
||||||
tags_string: String.t(),
|
tags_string: String.t() | nil,
|
||||||
visibility: :public | :private | :unlisted,
|
visibility: :public | :private | :unlisted,
|
||||||
user: User.t() | Ecto.Association.NotLoaded.t(),
|
user: User.t() | Ecto.Association.NotLoaded.t(),
|
||||||
user_id: User.id(),
|
user_id: User.id(),
|
||||||
@ -65,16 +65,38 @@ defmodule Memex.Notes.Note do
|
|||||||
|> unsafe_validate_unique(:slug, Repo)
|
|> unsafe_validate_unique(:slug, Repo)
|
||||||
end
|
end
|
||||||
|
|
||||||
defp cast_tags_string(changeset, %{"tags_string" => tags_string})
|
defp cast_tags_string(changeset, attrs) do
|
||||||
when tags_string |> is_binary() do
|
changeset
|
||||||
tags =
|
|> put_change(:tags_string, changeset |> get_field(:tags) |> get_tags_string())
|
||||||
|
|> cast(attrs, [:tags_string])
|
||||||
|
|> validate_format(:tags_string, ~r/^[\p{L}\p{N}\-\,]+$/,
|
||||||
|
message:
|
||||||
|
dgettext(
|
||||||
|
"errors",
|
||||||
|
"invalid format: only numbers, letters and hyphen are accepted. tags must be comma-delimited"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|> cast_tags()
|
||||||
|
end
|
||||||
|
|
||||||
|
defp cast_tags(%{valid?: false} = changeset), do: changeset
|
||||||
|
|
||||||
|
defp cast_tags(%{valid?: true} = changeset) do
|
||||||
|
tags = changeset |> get_field(:tags_string) |> process_tags()
|
||||||
|
changeset |> put_change(:tags, tags)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp process_tags(tags_string) when tags_string |> is_binary() do
|
||||||
tags_string
|
tags_string
|
||||||
|> String.split(",", trim: true)
|
|> String.split(",", trim: true)
|
||||||
|> Enum.map(fn str -> str |> String.trim() end)
|
|> Enum.map(fn str -> str |> String.trim() end)
|
||||||
|
|> Enum.reject(fn str -> str |> is_nil() end)
|
||||||
|> Enum.sort()
|
|> Enum.sort()
|
||||||
|
|
||||||
changeset |> change(tags: tags)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
defp cast_tags_string(changeset, _attrs), do: changeset
|
defp process_tags(_other_tags_string), do: []
|
||||||
|
|
||||||
|
@spec get_tags_string([String.t()] | nil) :: String.t()
|
||||||
|
def get_tags_string(nil), do: ""
|
||||||
|
def get_tags_string(tags) when tags |> is_list(), do: tags |> Enum.join(",")
|
||||||
end
|
end
|
||||||
|
@ -4,7 +4,6 @@ defmodule Memex.Pipelines do
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import Ecto.Query, warn: false
|
import Ecto.Query, warn: false
|
||||||
alias Ecto.Changeset
|
|
||||||
alias Memex.{Accounts.User, Pipelines.Pipeline, Repo}
|
alias Memex.{Accounts.User, Pipelines.Pipeline, Repo}
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
@ -231,18 +230,4 @@ defmodule Memex.Pipelines do
|
|||||||
def change_pipeline(%Pipeline{} = pipeline, attrs \\ %{}, user) do
|
def change_pipeline(%Pipeline{} = pipeline, attrs \\ %{}, user) do
|
||||||
pipeline |> Pipeline.update_changeset(attrs, user)
|
pipeline |> Pipeline.update_changeset(attrs, user)
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc """
|
|
||||||
Gets a canonical string representation of the `:tags` field for a Pipeline
|
|
||||||
"""
|
|
||||||
@spec get_tags_string(Pipeline.t() | Pipeline.changeset() | [String.t()] | nil) :: String.t()
|
|
||||||
def get_tags_string(nil), do: ""
|
|
||||||
def get_tags_string(tags) when tags |> is_list(), do: tags |> Enum.join(",")
|
|
||||||
def get_tags_string(%Pipeline{tags: tags}), do: tags |> get_tags_string()
|
|
||||||
|
|
||||||
def get_tags_string(%Changeset{} = changeset) do
|
|
||||||
changeset
|
|
||||||
|> Changeset.get_field(:tags)
|
|
||||||
|> get_tags_string()
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
@ -28,7 +28,7 @@ defmodule Memex.Pipelines.Pipeline do
|
|||||||
slug: slug(),
|
slug: slug(),
|
||||||
description: String.t(),
|
description: String.t(),
|
||||||
tags: [String.t()] | nil,
|
tags: [String.t()] | nil,
|
||||||
tags_string: String.t(),
|
tags_string: String.t() | nil,
|
||||||
visibility: :public | :private | :unlisted,
|
visibility: :public | :private | :unlisted,
|
||||||
user: User.t() | Ecto.Association.NotLoaded.t(),
|
user: User.t() | Ecto.Association.NotLoaded.t(),
|
||||||
user_id: User.id(),
|
user_id: User.id(),
|
||||||
@ -67,16 +67,38 @@ defmodule Memex.Pipelines.Pipeline do
|
|||||||
|> unsafe_validate_unique(:slug, Repo)
|
|> unsafe_validate_unique(:slug, Repo)
|
||||||
end
|
end
|
||||||
|
|
||||||
defp cast_tags_string(changeset, %{"tags_string" => tags_string})
|
defp cast_tags_string(changeset, attrs) do
|
||||||
when tags_string |> is_binary() do
|
changeset
|
||||||
tags =
|
|> put_change(:tags_string, changeset |> get_field(:tags) |> get_tags_string())
|
||||||
|
|> cast(attrs, [:tags_string])
|
||||||
|
|> validate_format(:tags_string, ~r/^[\p{L}\p{N}\-\,]+$/,
|
||||||
|
message:
|
||||||
|
dgettext(
|
||||||
|
"errors",
|
||||||
|
"invalid format: only numbers, letters and hyphen are accepted. tags must be comma-delimited"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|> cast_tags()
|
||||||
|
end
|
||||||
|
|
||||||
|
defp cast_tags(%{valid?: false} = changeset), do: changeset
|
||||||
|
|
||||||
|
defp cast_tags(%{valid?: true} = changeset) do
|
||||||
|
tags = changeset |> get_field(:tags_string) |> process_tags()
|
||||||
|
changeset |> put_change(:tags, tags)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp process_tags(tags_string) when tags_string |> is_binary() do
|
||||||
tags_string
|
tags_string
|
||||||
|> String.split(",", trim: true)
|
|> String.split(",", trim: true)
|
||||||
|> Enum.map(fn str -> str |> String.trim() end)
|
|> Enum.map(fn str -> str |> String.trim() end)
|
||||||
|
|> Enum.reject(fn str -> str |> is_nil() end)
|
||||||
|> Enum.sort()
|
|> Enum.sort()
|
||||||
|
|
||||||
changeset |> change(tags: tags)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
defp cast_tags_string(changeset, _attrs), do: changeset
|
defp process_tags(_other_tags_string), do: []
|
||||||
|
|
||||||
|
@spec get_tags_string([String.t()] | nil) :: String.t()
|
||||||
|
def get_tags_string(nil), do: ""
|
||||||
|
def get_tags_string(tags) when tags |> is_list(), do: tags |> Enum.join(",")
|
||||||
end
|
end
|
||||||
|
@ -39,6 +39,7 @@ defmodule MemexWeb.Components.ContextContent do
|
|||||||
"</p>#{link}<p class=\"inline\">"
|
"</p>#{link}<p class=\"inline\">"
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
|> String.replace("\n", "<br>")
|
||||||
|> HTML.raw()
|
|> HTML.raw()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -39,6 +39,7 @@ defmodule MemexWeb.Components.NoteContent do
|
|||||||
"</p>#{link}<p class=\"inline\">"
|
"</p>#{link}<p class=\"inline\">"
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
|> String.replace("\n", "<br>")
|
||||||
|> HTML.raw()
|
|> HTML.raw()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -39,6 +39,7 @@ defmodule MemexWeb.Components.StepContent do
|
|||||||
"</p>#{link}<p class=\"inline\">"
|
"</p>#{link}<p class=\"inline\">"
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
|> String.replace("\n", "<br>")
|
||||||
|> HTML.raw()
|
|> HTML.raw()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -22,15 +22,15 @@ defmodule MemexWeb.Components.UserCard do
|
|||||||
<%= if @user.confirmed_at |> is_nil() do %>
|
<%= if @user.confirmed_at |> is_nil() do %>
|
||||||
<%= gettext("email unconfirmed") %>
|
<%= gettext("email unconfirmed") %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<%= gettext(
|
<p>
|
||||||
"user was confirmed at %{relative_datetime}",
|
<%= gettext("user confirmed on") %>
|
||||||
relative_datetime: @user.confirmed_at |> display_datetime()
|
<%= @user.confirmed_at |> display_datetime() %>
|
||||||
) %>
|
</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<%= gettext("User registered on") %>
|
<%= gettext("user registered on") %>
|
||||||
<%= @user.inserted_at |> display_datetime() %>
|
<%= @user.inserted_at |> display_datetime() %>
|
||||||
</p>
|
</p>
|
||||||
</h3>
|
</h3>
|
||||||
|
@ -27,9 +27,7 @@
|
|||||||
<%= text_input(f, :tags_string,
|
<%= text_input(f, :tags_string,
|
||||||
id: "tags-input",
|
id: "tags-input",
|
||||||
class: "input input-primary",
|
class: "input input-primary",
|
||||||
placeholder: gettext("tag1,tag2"),
|
placeholder: gettext("tag1,tag2")
|
||||||
phx_update: "ignore",
|
|
||||||
value: Contexts.get_tags_string(@changeset)
|
|
||||||
) %>
|
) %>
|
||||||
<%= error_tag(f, :tags_string) %>
|
<%= error_tag(f, :tags_string) %>
|
||||||
|
|
||||||
|
@ -27,9 +27,7 @@
|
|||||||
<%= text_input(f, :tags_string,
|
<%= text_input(f, :tags_string,
|
||||||
id: "tags-input",
|
id: "tags-input",
|
||||||
class: "input input-primary",
|
class: "input input-primary",
|
||||||
placeholder: gettext("tag1,tag2"),
|
placeholder: gettext("tag1,tag2")
|
||||||
phx_update: "ignore",
|
|
||||||
value: Notes.get_tags_string(@changeset)
|
|
||||||
) %>
|
) %>
|
||||||
<%= error_tag(f, :tags_string) %>
|
<%= error_tag(f, :tags_string) %>
|
||||||
|
|
||||||
|
@ -27,9 +27,7 @@
|
|||||||
<%= text_input(f, :tags_string,
|
<%= text_input(f, :tags_string,
|
||||||
id: "tags-input",
|
id: "tags-input",
|
||||||
class: "input input-primary",
|
class: "input input-primary",
|
||||||
placeholder: gettext("tag1,tag2"),
|
placeholder: gettext("tag1,tag2")
|
||||||
phx_update: "ignore",
|
|
||||||
value: Pipelines.get_tags_string(@changeset)
|
|
||||||
) %>
|
) %>
|
||||||
<%= error_tag(f, :tags_string) %>
|
<%= error_tag(f, :tags_string) %>
|
||||||
|
|
||||||
|
2
mix.exs
2
mix.exs
@ -4,7 +4,7 @@ defmodule Memex.MixProject do
|
|||||||
def project do
|
def project do
|
||||||
[
|
[
|
||||||
app: :memex,
|
app: :memex,
|
||||||
version: "0.1.3",
|
version: "0.1.4",
|
||||||
elixir: "~> 1.14",
|
elixir: "~> 1.14",
|
||||||
elixirc_paths: elixirc_paths(Mix.env()),
|
elixirc_paths: elixirc_paths(Mix.env()),
|
||||||
compilers: Mix.compilers(),
|
compilers: Mix.compilers(),
|
||||||
|
@ -124,9 +124,9 @@ msgstr ""
|
|||||||
msgid "register"
|
msgid "register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/form_component.html.heex:42
|
#: lib/memex_web/live/context_live/form_component.html.heex:40
|
||||||
#: lib/memex_web/live/note_live/form_component.html.heex:42
|
#: lib/memex_web/live/note_live/form_component.html.heex:40
|
||||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:42
|
#: lib/memex_web/live/pipeline_live/form_component.html.heex:40
|
||||||
#: lib/memex_web/live/step_live/form_component.html.heex:28
|
#: lib/memex_web/live/step_live/form_component.html.heex:28
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "save"
|
msgid "save"
|
||||||
|
@ -125,9 +125,9 @@ msgstr ""
|
|||||||
msgid "register"
|
msgid "register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/form_component.html.heex:42
|
#: lib/memex_web/live/context_live/form_component.html.heex:40
|
||||||
#: lib/memex_web/live/note_live/form_component.html.heex:42
|
#: lib/memex_web/live/note_live/form_component.html.heex:40
|
||||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:42
|
#: lib/memex_web/live/pipeline_live/form_component.html.heex:40
|
||||||
#: lib/memex_web/live/step_live/form_component.html.heex:28
|
#: lib/memex_web/live/step_live/form_component.html.heex:28
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "save"
|
msgid "save"
|
||||||
|
@ -66,11 +66,6 @@ msgstr ""
|
|||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/user_card.ex:33
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "User registered on"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/invite_card.ex:19
|
#: lib/memex_web/components/invite_card.ex:19
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Uses Left:"
|
msgid "Uses Left:"
|
||||||
@ -306,17 +301,17 @@ msgstr ""
|
|||||||
msgid "report bugs or request features"
|
msgid "report bugs or request features"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/form_component.html.heex:43
|
#: lib/memex_web/live/context_live/form_component.html.heex:41
|
||||||
#: lib/memex_web/live/note_live/form_component.html.heex:43
|
#: lib/memex_web/live/note_live/form_component.html.heex:41
|
||||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43
|
#: lib/memex_web/live/pipeline_live/form_component.html.heex:41
|
||||||
#: lib/memex_web/live/step_live/form_component.html.heex:29
|
#: lib/memex_web/live/step_live/form_component.html.heex:29
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "saving..."
|
msgid "saving..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/form_component.html.heex:39
|
#: lib/memex_web/live/context_live/form_component.html.heex:37
|
||||||
#: lib/memex_web/live/note_live/form_component.html.heex:39
|
#: lib/memex_web/live/note_live/form_component.html.heex:37
|
||||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:39
|
#: lib/memex_web/live/pipeline_live/form_component.html.heex:37
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "select privacy"
|
msgid "select privacy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -350,11 +345,6 @@ msgstr ""
|
|||||||
msgid "unlimited"
|
msgid "unlimited"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/user_card.ex:25
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "user was confirmed at %{relative_datetime}"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:120
|
#: lib/memex_web/live/invite_live/index.html.heex:120
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "users"
|
msgid "users"
|
||||||
@ -665,3 +655,13 @@ msgstr ""
|
|||||||
#, 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 ""
|
||||||
|
|
||||||
|
#: lib/memex_web/components/user_card.ex:26
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "user confirmed on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/components/user_card.ex:33
|
||||||
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
|
msgid "user registered on"
|
||||||
|
msgstr ""
|
||||||
|
@ -131,3 +131,10 @@ msgstr ""
|
|||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "unauthorized"
|
msgid "unauthorized"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex/contexts/context.ex:75
|
||||||
|
#: lib/memex/notes/note.ex:74
|
||||||
|
#: lib/memex/pipelines/pipeline.ex:76
|
||||||
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
|
msgid "invalid format: only numbers, letters and hyphen are accepted. tags must be comma-delimited"
|
||||||
|
msgstr ""
|
||||||
|
@ -55,11 +55,6 @@ msgstr ""
|
|||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/user_card.ex:33
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "User registered on"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/components/invite_card.ex:19
|
#: lib/memex_web/components/invite_card.ex:19
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Uses Left:"
|
msgid "Uses Left:"
|
||||||
@ -295,17 +290,17 @@ msgstr ""
|
|||||||
msgid "report bugs or request features"
|
msgid "report bugs or request features"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/form_component.html.heex:43
|
#: lib/memex_web/live/context_live/form_component.html.heex:41
|
||||||
#: lib/memex_web/live/note_live/form_component.html.heex:43
|
#: lib/memex_web/live/note_live/form_component.html.heex:41
|
||||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43
|
#: lib/memex_web/live/pipeline_live/form_component.html.heex:41
|
||||||
#: lib/memex_web/live/step_live/form_component.html.heex:29
|
#: lib/memex_web/live/step_live/form_component.html.heex:29
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "saving..."
|
msgid "saving..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/live/context_live/form_component.html.heex:39
|
#: lib/memex_web/live/context_live/form_component.html.heex:37
|
||||||
#: lib/memex_web/live/note_live/form_component.html.heex:39
|
#: lib/memex_web/live/note_live/form_component.html.heex:37
|
||||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:39
|
#: lib/memex_web/live/pipeline_live/form_component.html.heex:37
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "select privacy"
|
msgid "select privacy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -339,11 +334,6 @@ msgstr ""
|
|||||||
msgid "unlimited"
|
msgid "unlimited"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/memex_web/components/user_card.ex:25
|
|
||||||
#, elixir-autogen, elixir-format
|
|
||||||
msgid "user was confirmed at %{relative_datetime}"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: lib/memex_web/live/invite_live/index.html.heex:120
|
#: lib/memex_web/live/invite_live/index.html.heex:120
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "users"
|
msgid "users"
|
||||||
@ -654,3 +644,13 @@ msgstr ""
|
|||||||
#, 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 ""
|
||||||
|
|
||||||
|
#: lib/memex_web/components/user_card.ex:26
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "user confirmed on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex_web/components/user_card.ex:33
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "user registered on"
|
||||||
|
msgstr ""
|
||||||
|
@ -130,3 +130,10 @@ msgstr ""
|
|||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "unauthorized"
|
msgid "unauthorized"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/memex/contexts/context.ex:75
|
||||||
|
#: lib/memex/notes/note.ex:74
|
||||||
|
#: lib/memex/pipelines/pipeline.ex:76
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "invalid format: only numbers, letters and hyphen are accepted. tags must be comma-delimited"
|
||||||
|
msgstr ""
|
||||||
|
@ -22,6 +22,6 @@ defmodule Memex.ContextsFixtures do
|
|||||||
})
|
})
|
||||||
|> Contexts.create_context(user)
|
|> Contexts.create_context(user)
|
||||||
|
|
||||||
context
|
%{context | tags_string: nil}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -22,6 +22,6 @@ defmodule Memex.NotesFixtures do
|
|||||||
})
|
})
|
||||||
|> Notes.create_note(user)
|
|> Notes.create_note(user)
|
||||||
|
|
||||||
note
|
%{note | tags_string: nil}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -22,6 +22,6 @@ defmodule Memex.PipelinesFixtures do
|
|||||||
})
|
})
|
||||||
|> Pipelines.create_pipeline(user)
|
|> Pipelines.create_pipeline(user)
|
||||||
|
|
||||||
pipeline
|
%{pipeline | tags_string: nil}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user