add backlinks
This commit is contained in:
parent
6c2aba84ef
commit
0c5442f0cd
@ -1,4 +1,5 @@
|
||||
# v0.1.19
|
||||
- Add backlinks
|
||||
- Fix visibility issues with multiple users
|
||||
|
||||
# v0.1.18
|
||||
|
BIN
home.png
BIN
home.png
Binary file not shown.
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 340 KiB |
@ -88,6 +88,42 @@ defmodule Memex.Contexts do
|
||||
)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns the list of contexts that link to a particular slug.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> backlink(%User{id: 123})
|
||||
[%Context{}, ...]
|
||||
|
||||
iex> backlink("[other-context]", %User{id: 123})
|
||||
[%Context{content: "[other-context]"}, ...]
|
||||
|
||||
"""
|
||||
@spec backlink(String.t(), User.t()) :: [Context.t()]
|
||||
def backlink(link, %{id: user_id}) when user_id |> is_binary() do
|
||||
link = link |> String.replace("[", "\\[") |> String.replace("]", "\\]")
|
||||
link_regex = "(^|[^\[])#{link}($|[^\]])"
|
||||
|
||||
Repo.all(
|
||||
from c in Context,
|
||||
where: fragment("? ~ ?", c.content, ^link_regex),
|
||||
order_by: c.slug
|
||||
)
|
||||
end
|
||||
|
||||
def backlink(link, _invalid_user) do
|
||||
link = link |> String.replace("[", "\\[") |> String.replace("]", "\\]")
|
||||
link_regex = "(^|[^\[])#{link}($|[^\]])"
|
||||
|
||||
Repo.all(
|
||||
from c in Context,
|
||||
where: fragment("? ~ ?", c.content, ^link_regex),
|
||||
where: c.visibility == :public,
|
||||
order_by: c.slug
|
||||
)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Gets a single context.
|
||||
|
||||
|
@ -86,6 +86,42 @@ defmodule Memex.Notes do
|
||||
)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns the list of notes that link to a particular slug.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> backlink(%User{id: 123})
|
||||
[%Note{}, ...]
|
||||
|
||||
iex> backlink("[other-note]", %User{id: 123})
|
||||
[%Note{content: "[other-note]"}, ...]
|
||||
|
||||
"""
|
||||
@spec backlink(String.t(), User.t()) :: [Note.t()]
|
||||
def backlink(link, %{id: user_id}) when user_id |> is_binary() do
|
||||
link = link |> String.replace("[", "\\[") |> String.replace("]", "\\]")
|
||||
link_regex = "(^|[^\[])#{link}($|[^\]])"
|
||||
|
||||
Repo.all(
|
||||
from n in Note,
|
||||
where: fragment("? ~ ?", n.content, ^link_regex),
|
||||
order_by: n.slug
|
||||
)
|
||||
end
|
||||
|
||||
def backlink(link, _invalid_user) do
|
||||
link = link |> String.replace("[", "\\[") |> String.replace("]", "\\]")
|
||||
link_regex = "(^|[^\[])#{link}($|[^\]])"
|
||||
|
||||
Repo.all(
|
||||
from n in Note,
|
||||
where: fragment("? ~ ?", n.content, ^link_regex),
|
||||
where: n.visibility == :public,
|
||||
order_by: n.slug
|
||||
)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Gets a single note.
|
||||
|
||||
|
@ -142,6 +142,50 @@ defmodule Memex.Pipelines do
|
||||
)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns the list of pipelines that link to a particular slug.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> backlink(%User{id: 123})
|
||||
[%Pipeline{}, ...]
|
||||
|
||||
iex> backlink("[other-pipeline]", %User{id: 123})
|
||||
[%Pipeline{description: "[other-pipeline]"}, ...]
|
||||
|
||||
"""
|
||||
@spec backlink(String.t(), User.t()) :: [Pipeline.t()]
|
||||
def backlink(link, %{id: user_id}) when user_id |> is_binary() do
|
||||
link = link |> String.replace("[", "\\[") |> String.replace("]", "\\]")
|
||||
link_regex = "(^|[^\[])#{link}($|[^\]])"
|
||||
|
||||
Repo.all(
|
||||
from p in Pipeline,
|
||||
left_join: s in assoc(p, :steps),
|
||||
where:
|
||||
fragment("? ~ ?", p.description, ^link_regex) or
|
||||
fragment("? ~ ?", s.content, ^link_regex),
|
||||
distinct: true,
|
||||
order_by: p.slug
|
||||
)
|
||||
end
|
||||
|
||||
def backlink(link, _invalid_user) do
|
||||
link = link |> String.replace("[", "\\[") |> String.replace("]", "\\]")
|
||||
link_regex = "(^|[^\[])#{link}($|[^\]])"
|
||||
|
||||
Repo.all(
|
||||
from p in Pipeline,
|
||||
left_join: s in assoc(p, :steps),
|
||||
where:
|
||||
fragment("? ~ ?", p.description, ^link_regex) or
|
||||
fragment("? ~ ?", s.content, ^link_regex),
|
||||
where: p.visibility == :public,
|
||||
distinct: true,
|
||||
order_by: p.slug
|
||||
)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Creates a pipeline.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
defmodule MemexWeb.ContextLive.Show do
|
||||
use MemexWeb, :live_view
|
||||
alias Memex.Contexts
|
||||
alias Memex.{Contexts, Pipelines}
|
||||
|
||||
@impl true
|
||||
def mount(_params, _session, socket) do
|
||||
@ -23,7 +23,9 @@ defmodule MemexWeb.ContextLive.Show do
|
||||
socket
|
||||
|> assign(
|
||||
context: context,
|
||||
page_title: page_title(live_action, context)
|
||||
page_title: page_title(live_action, context),
|
||||
context_backlinks: Contexts.backlink("[#{context.slug}]", current_user),
|
||||
pipeline_backlinks: Pipelines.backlink("[[#{context.slug}]]", current_user)
|
||||
)
|
||||
|
||||
{:noreply, socket}
|
||||
|
@ -11,6 +11,27 @@
|
||||
|
||||
<.context_content context={@context} />
|
||||
|
||||
<div
|
||||
:if={@context_backlinks ++ @pipeline_backlinks != []}
|
||||
class="flex flex-wrap justify-end items-center self-end"
|
||||
>
|
||||
<p><%= gettext("Backlinked by:") %></p>
|
||||
<.link
|
||||
:for={backlink <- @context_backlinks}
|
||||
class="m-1 hover:underline"
|
||||
patch={~p"/context/#{backlink}"}
|
||||
>
|
||||
<%= gettext("[%{slug}]", slug: backlink.slug) %>
|
||||
</.link>
|
||||
<.link
|
||||
:for={backlink <- @pipeline_backlinks}
|
||||
class="m-1 hover:underline"
|
||||
patch={~p"/pipeline/#{backlink}"}
|
||||
>
|
||||
<%= gettext("[[%{slug}]]", slug: backlink.slug) %>
|
||||
</.link>
|
||||
</div>
|
||||
|
||||
<p class="self-end">
|
||||
<%= gettext("Visibility: %{visibility}", visibility: @context.visibility) %>
|
||||
</p>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<div class="mx-auto flex flex-col justify-center items-stretch space-y-4 max-w-lg">
|
||||
<h1 class="title text-primary-400 text-xl">
|
||||
<div class="flex flex-col justify-center items-stretch mx-auto space-y-4 max-w-lg">
|
||||
<h1 class="text-xl title text-primary-400">
|
||||
<%= gettext("memEx") %>
|
||||
</h1>
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
</p>
|
||||
</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 text-right">
|
||||
<.link navigate={~p"/faq"} class="btn btn-primary">
|
||||
<%= gettext("read more on how to use memEx") %>
|
||||
</.link>
|
||||
@ -41,7 +41,7 @@
|
||||
<hr class="hr" />
|
||||
|
||||
<ul class="flex flex-col space-y-4">
|
||||
<h2 class="title text-primary-400 text-lg">
|
||||
<h2 class="text-lg title text-primary-400">
|
||||
<%= gettext("features") %>
|
||||
</h2>
|
||||
|
||||
@ -71,12 +71,21 @@
|
||||
<%= gettext("accessible from any internet-capable device") %>
|
||||
</p>
|
||||
</li>
|
||||
|
||||
<li class="flex flex-col justify-center items-center space-y-2">
|
||||
<b class="whitespace-nowrap">
|
||||
<%= gettext("backlinks:") %>
|
||||
</b>
|
||||
<p>
|
||||
<%= gettext("view referencing items from the referenced item") %>
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<hr class="hr" />
|
||||
|
||||
<ul class="flex flex-col justify-center space-y-4">
|
||||
<h2 class="title text-primary-400 text-lg">
|
||||
<h2 class="text-lg title text-primary-400">
|
||||
<%= gettext("instance information") %>
|
||||
</h2>
|
||||
|
||||
@ -124,7 +133,7 @@
|
||||
<hr class="hr" />
|
||||
|
||||
<ul class="flex flex-col space-y-2">
|
||||
<h2 class="title text-primary-400 text-lg">
|
||||
<h2 class="text-lg title text-primary-400">
|
||||
<%= gettext("get involved") %>
|
||||
</h2>
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
defmodule MemexWeb.NoteLive.Show do
|
||||
use MemexWeb, :live_view
|
||||
alias Memex.Notes
|
||||
alias Memex.{Contexts, Notes, Pipelines}
|
||||
|
||||
@impl true
|
||||
def mount(_params, _session, socket) do
|
||||
@ -22,8 +22,11 @@ defmodule MemexWeb.NoteLive.Show do
|
||||
socket =
|
||||
socket
|
||||
|> assign(
|
||||
context_backlinks: Contexts.backlink("[[#{note.slug}]]", current_user),
|
||||
note_backlinks: Notes.backlink("[#{note.slug}]", current_user),
|
||||
note: note,
|
||||
page_title: page_title(live_action, note)
|
||||
page_title: page_title(live_action, note),
|
||||
pipeline_backlinks: Pipelines.backlink("[[[#{note.slug}]]]", current_user)
|
||||
)
|
||||
|
||||
{:noreply, socket}
|
||||
|
@ -11,6 +11,34 @@
|
||||
|
||||
<.note_content note={@note} />
|
||||
|
||||
<div
|
||||
:if={@note_backlinks ++ @context_backlinks ++ @pipeline_backlinks != []}
|
||||
class="flex flex-wrap justify-end items-center self-end"
|
||||
>
|
||||
<p><%= gettext("Backlinked by:") %></p>
|
||||
<.link
|
||||
:for={backlink <- @note_backlinks}
|
||||
class="m-1 hover:underline"
|
||||
patch={~p"/note/#{backlink}"}
|
||||
>
|
||||
<%= gettext("[%{slug}]", slug: backlink.slug) %>
|
||||
</.link>
|
||||
<.link
|
||||
:for={backlink <- @context_backlinks}
|
||||
class="m-1 hover:underline"
|
||||
patch={~p"/context/#{backlink}"}
|
||||
>
|
||||
<%= gettext("[[%{slug}]]", slug: backlink.slug) %>
|
||||
</.link>
|
||||
<.link
|
||||
:for={backlink <- @pipeline_backlinks}
|
||||
class="m-1 hover:underline"
|
||||
patch={~p"/pipeline/#{backlink}"}
|
||||
>
|
||||
<%= gettext("[[[%{slug}]]]", slug: backlink.slug) %>
|
||||
</.link>
|
||||
</div>
|
||||
|
||||
<p class="self-end">
|
||||
<%= gettext("Visibility: %{visibility}", visibility: @note.visibility) %>
|
||||
</p>
|
||||
|
@ -23,6 +23,7 @@ defmodule MemexWeb.PipelineLive.Show do
|
||||
socket
|
||||
|> assign(
|
||||
page_title: page_title(live_action, pipeline),
|
||||
pipeline_backlinks: Pipelines.backlink("[#{pipeline.slug}]", current_user),
|
||||
pipeline: pipeline,
|
||||
steps: pipeline |> Steps.list_steps(current_user)
|
||||
)
|
||||
|
@ -11,6 +11,17 @@
|
||||
|
||||
<.pipeline_content pipeline={@pipeline} />
|
||||
|
||||
<div :if={@pipeline_backlinks != []} class="flex flex-wrap justify-end items-center self-end">
|
||||
<p><%= gettext("Backlinked by:") %></p>
|
||||
<.link
|
||||
:for={backlink <- @pipeline_backlinks}
|
||||
class="m-1 hover:underline"
|
||||
patch={~p"/pipeline/#{backlink}"}
|
||||
>
|
||||
<%= gettext("[%{slug}]", slug: backlink.slug) %>
|
||||
</.link>
|
||||
</div>
|
||||
|
||||
<p class="self-end">
|
||||
<%= gettext("Visibility: %{visibility}", visibility: @pipeline.visibility) %>
|
||||
</p>
|
||||
|
@ -40,12 +40,12 @@ msgid "create invite"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.html.heex:50
|
||||
#: lib/memex_web/live/context_live/show.html.heex:30
|
||||
#: lib/memex_web/live/context_live/show.html.heex:51
|
||||
#: lib/memex_web/live/note_live/index.html.heex:50
|
||||
#: lib/memex_web/live/note_live/show.html.heex:30
|
||||
#: lib/memex_web/live/note_live/show.html.heex:58
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:52
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:30
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:101
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:41
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:112
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete"
|
||||
msgstr ""
|
||||
@ -56,12 +56,12 @@ msgid "delete user"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.html.heex:40
|
||||
#: lib/memex_web/live/context_live/show.html.heex:20
|
||||
#: lib/memex_web/live/context_live/show.html.heex:41
|
||||
#: lib/memex_web/live/note_live/index.html.heex:40
|
||||
#: lib/memex_web/live/note_live/show.html.heex:20
|
||||
#: lib/memex_web/live/note_live/show.html.heex:48
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:40
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:20
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:90
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:31
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:101
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "edit"
|
||||
msgstr ""
|
||||
@ -112,7 +112,7 @@ msgstr ""
|
||||
msgid "save"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:116
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:127
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "add step"
|
||||
msgstr ""
|
||||
@ -145,24 +145,24 @@ msgid "copy invite link for %{invite_name}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.html.heex:48
|
||||
#: lib/memex_web/live/context_live/show.html.heex:28
|
||||
#: lib/memex_web/live/context_live/show.html.heex:49
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{context_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/note_live/index.html.heex:48
|
||||
#: lib/memex_web/live/note_live/show.html.heex:28
|
||||
#: lib/memex_web/live/note_live/show.html.heex:56
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{note_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:49
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:28
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:39
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{pipeline_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:99
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:110
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{step_title}"
|
||||
msgstr ""
|
||||
@ -187,7 +187,7 @@ msgstr ""
|
||||
msgid "edit %{pipeline_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:88
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:99
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "edit %{step_title}"
|
||||
msgstr ""
|
||||
@ -197,12 +197,12 @@ msgstr ""
|
||||
msgid "edit invite for %{invite_name}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:78
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:89
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "move %{step_title} down"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:62
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:73
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "move %{step_title} up"
|
||||
msgstr ""
|
||||
|
@ -40,12 +40,12 @@ msgid "create invite"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.html.heex:50
|
||||
#: lib/memex_web/live/context_live/show.html.heex:30
|
||||
#: lib/memex_web/live/context_live/show.html.heex:51
|
||||
#: lib/memex_web/live/note_live/index.html.heex:50
|
||||
#: lib/memex_web/live/note_live/show.html.heex:30
|
||||
#: lib/memex_web/live/note_live/show.html.heex:58
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:52
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:30
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:101
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:41
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:112
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete"
|
||||
msgstr ""
|
||||
@ -56,12 +56,12 @@ msgid "delete user"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.html.heex:40
|
||||
#: lib/memex_web/live/context_live/show.html.heex:20
|
||||
#: lib/memex_web/live/context_live/show.html.heex:41
|
||||
#: lib/memex_web/live/note_live/index.html.heex:40
|
||||
#: lib/memex_web/live/note_live/show.html.heex:20
|
||||
#: lib/memex_web/live/note_live/show.html.heex:48
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:40
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:20
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:90
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:31
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:101
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "edit"
|
||||
msgstr ""
|
||||
@ -112,7 +112,7 @@ msgstr ""
|
||||
msgid "save"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:116
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:127
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "add step"
|
||||
msgstr ""
|
||||
@ -145,24 +145,24 @@ msgid "copy invite link for %{invite_name}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.html.heex:48
|
||||
#: lib/memex_web/live/context_live/show.html.heex:28
|
||||
#: lib/memex_web/live/context_live/show.html.heex:49
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{context_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/note_live/index.html.heex:48
|
||||
#: lib/memex_web/live/note_live/show.html.heex:28
|
||||
#: lib/memex_web/live/note_live/show.html.heex:56
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{note_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:49
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:28
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:39
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{pipeline_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:99
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:110
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{step_title}"
|
||||
msgstr ""
|
||||
@ -187,7 +187,7 @@ msgstr ""
|
||||
msgid "edit %{pipeline_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:88
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:99
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "edit %{step_title}"
|
||||
msgstr ""
|
||||
@ -197,12 +197,12 @@ msgstr ""
|
||||
msgid "edit invite for %{invite_name}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:78
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:89
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "move %{step_title} down"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:62
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:73
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "move %{step_title} up"
|
||||
msgstr ""
|
||||
|
@ -17,9 +17,9 @@ msgstr ""
|
||||
msgid "Reconnecting..."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/show.html.heex:15
|
||||
#: lib/memex_web/live/note_live/show.html.heex:15
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:15
|
||||
#: lib/memex_web/live/context_live/show.html.heex:36
|
||||
#: lib/memex_web/live/note_live/show.html.heex:43
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:26
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Visibility: %{visibility}"
|
||||
msgstr ""
|
||||
@ -29,7 +29,7 @@ msgstr ""
|
||||
msgid "accessible from any internet-capable device"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:85
|
||||
#: lib/memex_web/live/home_live.html.heex:94
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admins:"
|
||||
msgstr ""
|
||||
@ -118,12 +118,12 @@ msgstr ""
|
||||
msgid "features"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:149
|
||||
#: lib/memex_web/live/home_live.html.heex:158
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "help translate"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:80
|
||||
#: lib/memex_web/live/home_live.html.heex:89
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "instance information"
|
||||
msgstr ""
|
||||
@ -133,7 +133,7 @@ msgstr ""
|
||||
msgid "invite disabled"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:105
|
||||
#: lib/memex_web/live/home_live.html.heex:114
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "invite only"
|
||||
msgstr ""
|
||||
@ -217,7 +217,7 @@ msgstr ""
|
||||
msgid "provide context around a single topic and hotlink to your notes"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:104
|
||||
#: lib/memex_web/live/home_live.html.heex:113
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "public signups"
|
||||
msgstr ""
|
||||
@ -227,12 +227,12 @@ msgstr ""
|
||||
msgid "register"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:101
|
||||
#: lib/memex_web/live/home_live.html.heex:110
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "registration:"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:160
|
||||
#: lib/memex_web/live/home_live.html.heex:169
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "report bugs or request features"
|
||||
msgstr ""
|
||||
@ -288,12 +288,12 @@ msgstr ""
|
||||
msgid "users"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:111
|
||||
#: lib/memex_web/live/home_live.html.heex:120
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "version:"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:138
|
||||
#: lib/memex_web/live/home_live.html.heex:147
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "view the source code"
|
||||
msgstr ""
|
||||
@ -350,11 +350,11 @@ msgid "%{slug} created"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.ex:65
|
||||
#: lib/memex_web/live/context_live/show.ex:42
|
||||
#: lib/memex_web/live/context_live/show.ex:44
|
||||
#: lib/memex_web/live/note_live/index.ex:65
|
||||
#: lib/memex_web/live/note_live/show.ex:42
|
||||
#: lib/memex_web/live/note_live/show.ex:45
|
||||
#: lib/memex_web/live/pipeline_live/index.ex:65
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:77
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:78
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "%{slug} deleted"
|
||||
msgstr ""
|
||||
@ -367,11 +367,11 @@ msgid "%{slug} saved"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.ex:25
|
||||
#: lib/memex_web/live/context_live/show.ex:49
|
||||
#: lib/memex_web/live/context_live/show.ex:51
|
||||
#: lib/memex_web/live/note_live/index.ex:25
|
||||
#: lib/memex_web/live/note_live/show.ex:49
|
||||
#: lib/memex_web/live/note_live/show.ex:52
|
||||
#: lib/memex_web/live/pipeline_live/index.ex:24
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:123
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:124
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "edit %{slug}"
|
||||
msgstr ""
|
||||
@ -422,7 +422,7 @@ msgstr ""
|
||||
msgid "what is this?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:48
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:59
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "%{position}. %{title}"
|
||||
msgstr ""
|
||||
@ -432,7 +432,7 @@ msgstr ""
|
||||
msgid "%{title} created"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:95
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:96
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "%{title} deleted"
|
||||
msgstr ""
|
||||
@ -442,17 +442,17 @@ msgstr ""
|
||||
msgid "%{title} saved"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:125
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:126
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "add step to %{slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:42
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:53
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "no steps"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:37
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:48
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "steps:"
|
||||
msgstr ""
|
||||
@ -598,7 +598,7 @@ msgstr ""
|
||||
msgid "uses: %{uses_count}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:128
|
||||
#: lib/memex_web/live/home_live.html.heex:137
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "get involved"
|
||||
msgstr ""
|
||||
@ -721,3 +721,38 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "(This note is empty)"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/show.html.heex:18
|
||||
#: lib/memex_web/live/note_live/show.html.heex:18
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:15
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Backlinked by:"
|
||||
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:21
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "[%{slug}]"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/show.html.heex:31
|
||||
#: lib/memex_web/live/note_live/show.html.heex:31
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "[[%{slug}]]"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/note_live/show.html.heex:38
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "[[[%{slug}]]]"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:77
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "backlinks:"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:80
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "view referencing items from the referenced item"
|
||||
msgstr ""
|
||||
|
@ -66,12 +66,12 @@ msgid "are you sure you want to make %{invite_name} unlimited?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.html.heex:47
|
||||
#: lib/memex_web/live/context_live/show.html.heex:27
|
||||
#: lib/memex_web/live/context_live/show.html.heex:48
|
||||
#: lib/memex_web/live/note_live/index.html.heex:47
|
||||
#: lib/memex_web/live/note_live/show.html.heex:27
|
||||
#: lib/memex_web/live/note_live/show.html.heex:55
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:47
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:27
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:98
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:38
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:109
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "are you sure?"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgstr ""
|
||||
msgid "language updated successfully."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:90
|
||||
#: lib/memex_web/live/home_live.html.heex:99
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "register to setup memEx"
|
||||
msgstr ""
|
||||
|
@ -15,9 +15,9 @@ msgstr ""
|
||||
msgid "Reconnecting..."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/show.html.heex:15
|
||||
#: lib/memex_web/live/note_live/show.html.heex:15
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:15
|
||||
#: lib/memex_web/live/context_live/show.html.heex:36
|
||||
#: lib/memex_web/live/note_live/show.html.heex:43
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:26
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Visibility: %{visibility}"
|
||||
msgstr ""
|
||||
@ -27,7 +27,7 @@ msgstr ""
|
||||
msgid "accessible from any internet-capable device"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:85
|
||||
#: lib/memex_web/live/home_live.html.heex:94
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admins:"
|
||||
msgstr ""
|
||||
@ -116,12 +116,12 @@ msgstr ""
|
||||
msgid "features"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:149
|
||||
#: lib/memex_web/live/home_live.html.heex:158
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "help translate"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:80
|
||||
#: lib/memex_web/live/home_live.html.heex:89
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "instance information"
|
||||
msgstr ""
|
||||
@ -131,7 +131,7 @@ msgstr ""
|
||||
msgid "invite disabled"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:105
|
||||
#: lib/memex_web/live/home_live.html.heex:114
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "invite only"
|
||||
msgstr ""
|
||||
@ -215,7 +215,7 @@ msgstr ""
|
||||
msgid "provide context around a single topic and hotlink to your notes"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:104
|
||||
#: lib/memex_web/live/home_live.html.heex:113
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "public signups"
|
||||
msgstr ""
|
||||
@ -225,12 +225,12 @@ msgstr ""
|
||||
msgid "register"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:101
|
||||
#: lib/memex_web/live/home_live.html.heex:110
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "registration:"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:160
|
||||
#: lib/memex_web/live/home_live.html.heex:169
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "report bugs or request features"
|
||||
msgstr ""
|
||||
@ -286,12 +286,12 @@ msgstr ""
|
||||
msgid "users"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:111
|
||||
#: lib/memex_web/live/home_live.html.heex:120
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "version:"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:138
|
||||
#: lib/memex_web/live/home_live.html.heex:147
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "view the source code"
|
||||
msgstr ""
|
||||
@ -348,11 +348,11 @@ msgid "%{slug} created"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.ex:65
|
||||
#: lib/memex_web/live/context_live/show.ex:42
|
||||
#: lib/memex_web/live/context_live/show.ex:44
|
||||
#: lib/memex_web/live/note_live/index.ex:65
|
||||
#: lib/memex_web/live/note_live/show.ex:42
|
||||
#: lib/memex_web/live/note_live/show.ex:45
|
||||
#: lib/memex_web/live/pipeline_live/index.ex:65
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:77
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:78
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "%{slug} deleted"
|
||||
msgstr ""
|
||||
@ -365,11 +365,11 @@ msgid "%{slug} saved"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.ex:25
|
||||
#: lib/memex_web/live/context_live/show.ex:49
|
||||
#: lib/memex_web/live/context_live/show.ex:51
|
||||
#: lib/memex_web/live/note_live/index.ex:25
|
||||
#: lib/memex_web/live/note_live/show.ex:49
|
||||
#: lib/memex_web/live/note_live/show.ex:52
|
||||
#: lib/memex_web/live/pipeline_live/index.ex:24
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:123
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:124
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "edit %{slug}"
|
||||
msgstr ""
|
||||
@ -420,7 +420,7 @@ msgstr ""
|
||||
msgid "what is this?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:48
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:59
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "%{position}. %{title}"
|
||||
msgstr ""
|
||||
@ -430,7 +430,7 @@ msgstr ""
|
||||
msgid "%{title} created"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:95
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:96
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "%{title} deleted"
|
||||
msgstr ""
|
||||
@ -440,17 +440,17 @@ msgstr ""
|
||||
msgid "%{title} saved"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:125
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:126
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "add step to %{slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:42
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:53
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "no steps"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:37
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:48
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "steps:"
|
||||
msgstr ""
|
||||
@ -596,7 +596,7 @@ msgstr ""
|
||||
msgid "uses: %{uses_count}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:128
|
||||
#: lib/memex_web/live/home_live.html.heex:137
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "get involved"
|
||||
msgstr ""
|
||||
@ -719,3 +719,38 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "(This note is empty)"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/show.html.heex:18
|
||||
#: lib/memex_web/live/note_live/show.html.heex:18
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:15
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Backlinked by:"
|
||||
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:21
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "[%{slug}]"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/show.html.heex:31
|
||||
#: lib/memex_web/live/note_live/show.html.heex:31
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "[[%{slug}]]"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/note_live/show.html.heex:38
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "[[[%{slug}]]]"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:77
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "backlinks:"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:80
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "view referencing items from the referenced item"
|
||||
msgstr ""
|
||||
|
@ -41,12 +41,12 @@ msgid "create invite"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.html.heex:50
|
||||
#: lib/memex_web/live/context_live/show.html.heex:30
|
||||
#: lib/memex_web/live/context_live/show.html.heex:51
|
||||
#: lib/memex_web/live/note_live/index.html.heex:50
|
||||
#: lib/memex_web/live/note_live/show.html.heex:30
|
||||
#: lib/memex_web/live/note_live/show.html.heex:58
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:52
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:30
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:101
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:41
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:112
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete"
|
||||
msgstr ""
|
||||
@ -57,12 +57,12 @@ msgid "delete user"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.html.heex:40
|
||||
#: lib/memex_web/live/context_live/show.html.heex:20
|
||||
#: lib/memex_web/live/context_live/show.html.heex:41
|
||||
#: lib/memex_web/live/note_live/index.html.heex:40
|
||||
#: lib/memex_web/live/note_live/show.html.heex:20
|
||||
#: lib/memex_web/live/note_live/show.html.heex:48
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:40
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:20
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:90
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:31
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:101
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "edit"
|
||||
msgstr ""
|
||||
@ -113,7 +113,7 @@ msgstr ""
|
||||
msgid "save"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:116
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:127
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "add step"
|
||||
msgstr ""
|
||||
@ -146,24 +146,24 @@ msgid "copy invite link for %{invite_name}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.html.heex:48
|
||||
#: lib/memex_web/live/context_live/show.html.heex:28
|
||||
#: lib/memex_web/live/context_live/show.html.heex:49
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{context_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/note_live/index.html.heex:48
|
||||
#: lib/memex_web/live/note_live/show.html.heex:28
|
||||
#: lib/memex_web/live/note_live/show.html.heex:56
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{note_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:49
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:28
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:39
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{pipeline_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:99
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:110
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{step_title}"
|
||||
msgstr ""
|
||||
@ -188,7 +188,7 @@ msgstr ""
|
||||
msgid "edit %{pipeline_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:88
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:99
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "edit %{step_title}"
|
||||
msgstr ""
|
||||
@ -198,12 +198,12 @@ msgstr ""
|
||||
msgid "edit invite for %{invite_name}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:78
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:89
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "move %{step_title} down"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:62
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:73
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "move %{step_title} up"
|
||||
msgstr ""
|
||||
|
@ -16,9 +16,9 @@ msgstr ""
|
||||
msgid "Reconnecting..."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/show.html.heex:15
|
||||
#: lib/memex_web/live/note_live/show.html.heex:15
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:15
|
||||
#: lib/memex_web/live/context_live/show.html.heex:36
|
||||
#: lib/memex_web/live/note_live/show.html.heex:43
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:26
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Visibility: %{visibility}"
|
||||
msgstr ""
|
||||
@ -28,7 +28,7 @@ msgstr ""
|
||||
msgid "accessible from any internet-capable device"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:85
|
||||
#: lib/memex_web/live/home_live.html.heex:94
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "admins:"
|
||||
msgstr ""
|
||||
@ -117,12 +117,12 @@ msgstr ""
|
||||
msgid "features"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:149
|
||||
#: lib/memex_web/live/home_live.html.heex:158
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "help translate"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:80
|
||||
#: lib/memex_web/live/home_live.html.heex:89
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "instance information"
|
||||
msgstr ""
|
||||
@ -132,7 +132,7 @@ msgstr ""
|
||||
msgid "invite disabled"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:105
|
||||
#: lib/memex_web/live/home_live.html.heex:114
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "invite only"
|
||||
msgstr ""
|
||||
@ -216,7 +216,7 @@ msgstr ""
|
||||
msgid "provide context around a single topic and hotlink to your notes"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:104
|
||||
#: lib/memex_web/live/home_live.html.heex:113
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "public signups"
|
||||
msgstr ""
|
||||
@ -226,12 +226,12 @@ msgstr ""
|
||||
msgid "register"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:101
|
||||
#: lib/memex_web/live/home_live.html.heex:110
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "registration:"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:160
|
||||
#: lib/memex_web/live/home_live.html.heex:169
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "report bugs or request features"
|
||||
msgstr ""
|
||||
@ -287,12 +287,12 @@ msgstr ""
|
||||
msgid "users"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:111
|
||||
#: lib/memex_web/live/home_live.html.heex:120
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "version:"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:138
|
||||
#: lib/memex_web/live/home_live.html.heex:147
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "view the source code"
|
||||
msgstr ""
|
||||
@ -349,11 +349,11 @@ msgid "%{slug} created"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.ex:65
|
||||
#: lib/memex_web/live/context_live/show.ex:42
|
||||
#: lib/memex_web/live/context_live/show.ex:44
|
||||
#: lib/memex_web/live/note_live/index.ex:65
|
||||
#: lib/memex_web/live/note_live/show.ex:42
|
||||
#: lib/memex_web/live/note_live/show.ex:45
|
||||
#: lib/memex_web/live/pipeline_live/index.ex:65
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:77
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:78
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "%{slug} deleted"
|
||||
msgstr ""
|
||||
@ -366,11 +366,11 @@ msgid "%{slug} saved"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.ex:25
|
||||
#: lib/memex_web/live/context_live/show.ex:49
|
||||
#: lib/memex_web/live/context_live/show.ex:51
|
||||
#: lib/memex_web/live/note_live/index.ex:25
|
||||
#: lib/memex_web/live/note_live/show.ex:49
|
||||
#: lib/memex_web/live/note_live/show.ex:52
|
||||
#: lib/memex_web/live/pipeline_live/index.ex:24
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:123
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:124
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "edit %{slug}"
|
||||
msgstr ""
|
||||
@ -421,7 +421,7 @@ msgstr ""
|
||||
msgid "what is this?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:48
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:59
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "%{position}. %{title}"
|
||||
msgstr ""
|
||||
@ -431,7 +431,7 @@ msgstr ""
|
||||
msgid "%{title} created"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:95
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:96
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "%{title} deleted"
|
||||
msgstr ""
|
||||
@ -441,17 +441,17 @@ msgstr ""
|
||||
msgid "%{title} saved"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:125
|
||||
#: lib/memex_web/live/pipeline_live/show.ex:126
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "add step to %{slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:42
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:53
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "no steps"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:37
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:48
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "steps:"
|
||||
msgstr ""
|
||||
@ -597,7 +597,7 @@ msgstr ""
|
||||
msgid "uses: %{uses_count}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:128
|
||||
#: lib/memex_web/live/home_live.html.heex:137
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "get involved"
|
||||
msgstr ""
|
||||
@ -720,3 +720,38 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "(This note is empty)"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/show.html.heex:18
|
||||
#: lib/memex_web/live/note_live/show.html.heex:18
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:15
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Backlinked by:"
|
||||
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:21
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "[%{slug}]"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/show.html.heex:31
|
||||
#: lib/memex_web/live/note_live/show.html.heex:31
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "[[%{slug}]]"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/note_live/show.html.heex:38
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "[[[%{slug}]]]"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:77
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "backlinks:"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:80
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "view referencing items from the referenced item"
|
||||
msgstr ""
|
||||
|
@ -67,12 +67,12 @@ msgid "are you sure you want to make %{invite_name} unlimited?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.html.heex:47
|
||||
#: lib/memex_web/live/context_live/show.html.heex:27
|
||||
#: lib/memex_web/live/context_live/show.html.heex:48
|
||||
#: lib/memex_web/live/note_live/index.html.heex:47
|
||||
#: lib/memex_web/live/note_live/show.html.heex:27
|
||||
#: lib/memex_web/live/note_live/show.html.heex:55
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:47
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:27
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:98
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:38
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:109
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "are you sure?"
|
||||
msgstr ""
|
||||
@ -87,7 +87,7 @@ msgstr ""
|
||||
msgid "language updated successfully."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:90
|
||||
#: lib/memex_web/live/home_live.html.heex:99
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "register to setup memEx"
|
||||
msgstr ""
|
||||
|
@ -66,12 +66,12 @@ msgid "are you sure you want to make %{invite_name} unlimited?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/index.html.heex:47
|
||||
#: lib/memex_web/live/context_live/show.html.heex:27
|
||||
#: lib/memex_web/live/context_live/show.html.heex:48
|
||||
#: lib/memex_web/live/note_live/index.html.heex:47
|
||||
#: lib/memex_web/live/note_live/show.html.heex:27
|
||||
#: lib/memex_web/live/note_live/show.html.heex:55
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:47
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:27
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:98
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:38
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:109
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "are you sure?"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgstr ""
|
||||
msgid "language updated successfully."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/home_live.html.heex:90
|
||||
#: lib/memex_web/live/home_live.html.heex:99
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "register to setup memEx"
|
||||
msgstr ""
|
||||
|
@ -1,8 +1,8 @@
|
||||
# memEx
|
||||
|
||||

|
||||

|
||||
|
||||
memEx is an easy way to digitize the structured processes of your life.
|
||||
A structured personal knowledge base, inspired by zettlekasten and org-mode.
|
||||
|
||||
- Notes: Document notes about individual items or concepts
|
||||
- Contexts: Provide context around a single topic and hotlink to individual
|
||||
@ -14,6 +14,7 @@ memEx is an easy way to digitize the structured processes of your life.
|
||||
- Multi-user: Built with sharing and collaboration in mind
|
||||
- Privacy: Privacy controls on a per-note, context or pipeline basis
|
||||
- Convenient: Accessible from any internet-capable device
|
||||
- Backlinks: View referencing items from the referenced item
|
||||
|
||||
# Installation
|
||||
|
||||
|
@ -108,6 +108,25 @@ defmodule Memex.ContextsTest do
|
||||
assert Contexts.get_context_by_slug("c", user) == context
|
||||
end
|
||||
|
||||
test "backlink/2 returns contexts with backlinks", %{user: user} do
|
||||
context_fixture(%{slug: "a", visibility: :public}, user)
|
||||
assert Contexts.backlink("[a]", user) == []
|
||||
|
||||
context = context_fixture(%{slug: "b", content: "[a]", visibility: :unlisted}, user)
|
||||
assert Contexts.backlink("[a]", user) == [context]
|
||||
assert Contexts.backlink("[b]", user) == []
|
||||
end
|
||||
|
||||
test "backlink/2 only returns public contexts for empty user", %{user: user} do
|
||||
context_fixture(%{slug: "a", visibility: :public}, user)
|
||||
context_fixture(%{slug: "b", content: "[a]", visibility: :unlisted}, user)
|
||||
context_fixture(%{slug: "c", content: "[a]", visibility: :private}, user)
|
||||
assert Contexts.backlink("[a]", nil) == []
|
||||
|
||||
context = context_fixture(%{slug: "d", content: "[a]", visibility: :public}, user)
|
||||
assert Contexts.backlink("[a]", nil) == [context]
|
||||
end
|
||||
|
||||
test "create_context/1 with valid data creates a context", %{user: user} do
|
||||
valid_attrs = %{
|
||||
content: "some content",
|
||||
|
@ -109,6 +109,25 @@ defmodule Memex.NotesTest do
|
||||
assert Notes.get_note_by_slug("c", user) == note
|
||||
end
|
||||
|
||||
test "backlink/2 returns notes with backlinks", %{user: user} do
|
||||
note_fixture(%{slug: "a", visibility: :public}, user)
|
||||
assert Notes.backlink("[a]", user) == []
|
||||
|
||||
note = note_fixture(%{slug: "b", content: "[a]", visibility: :unlisted}, user)
|
||||
assert Notes.backlink("[a]", user) == [note]
|
||||
assert Notes.backlink("[b]", user) == []
|
||||
end
|
||||
|
||||
test "backlink/2 only returns public notes for empty user", %{user: user} do
|
||||
note_fixture(%{slug: "a", visibility: :public}, user)
|
||||
note_fixture(%{slug: "b", content: "[a]", visibility: :unlisted}, user)
|
||||
note_fixture(%{slug: "c", content: "[a]", visibility: :private}, user)
|
||||
assert Notes.backlink("[a]", nil) == []
|
||||
|
||||
note = note_fixture(%{slug: "d", content: "[a]", visibility: :public}, user)
|
||||
assert Notes.backlink("[a]", nil) == [note]
|
||||
end
|
||||
|
||||
test "create_note/1 with valid data creates a note", %{user: user} do
|
||||
valid_attrs = %{
|
||||
content: "some content",
|
||||
|
@ -108,6 +108,25 @@ defmodule Memex.PipelinesTest do
|
||||
assert Pipelines.get_pipeline_by_slug("c", user) == pipeline
|
||||
end
|
||||
|
||||
test "backlink/2 returns pipelines with backlinks", %{user: user} do
|
||||
pipeline_fixture(%{slug: "a", visibility: :public}, user)
|
||||
assert Pipelines.backlink("[a]", user) == []
|
||||
|
||||
pipeline = pipeline_fixture(%{slug: "b", description: "[a]", visibility: :unlisted}, user)
|
||||
assert Pipelines.backlink("[a]", user) == [pipeline]
|
||||
assert Pipelines.backlink("[b]", user) == []
|
||||
end
|
||||
|
||||
test "backlink/2 only returns public pipelines for empty user", %{user: user} do
|
||||
pipeline_fixture(%{slug: "a", visibility: :public}, user)
|
||||
pipeline_fixture(%{slug: "b", description: "[a]", visibility: :unlisted}, user)
|
||||
pipeline_fixture(%{slug: "c", description: "[a]", visibility: :private}, user)
|
||||
assert Pipelines.backlink("[a]", nil) == []
|
||||
|
||||
pipeline = pipeline_fixture(%{slug: "d", description: "[a]", visibility: :public}, user)
|
||||
assert Pipelines.backlink("[a]", nil) == [pipeline]
|
||||
end
|
||||
|
||||
test "create_pipeline/1 with valid data creates a pipeline", %{user: user} do
|
||||
valid_attrs = %{
|
||||
description: "some description",
|
||||
|
Loading…
x
Reference in New Issue
Block a user