Compare commits
34 Commits
Author | SHA1 | Date | |
---|---|---|---|
7dc2047e97 | |||
f769e710d8 | |||
d09f698b71 | |||
8666f663ba | |||
22ccea893c | |||
362c406471 | |||
2a87037f06 | |||
53d0dcfb15 | |||
c892b5449b | |||
7cd9dca958 | |||
0e8ddc22c5 | |||
3671ad6199 | |||
7189c955c3 | |||
f56ecc0ba3 | |||
fdfca3f7a5 | |||
c61b2c67b7 | |||
d0d958a638 | |||
a437b5966f | |||
e2378279d7 | |||
1b49b668b3 | |||
03021614b5 | |||
50af86798a | |||
be01723be2 | |||
0a27a4ee29 | |||
e2f8ac6b78 | |||
d5e334dc09 | |||
1d6ba5960c | |||
bc29ca6c20 | |||
bf9fd4880f | |||
957e433847 | |||
edd631f520 | |||
2e1545a9f5 | |||
3e296080f5 | |||
d2ae6024ce |
@ -17,7 +17,7 @@ steps:
|
||||
- .mix
|
||||
|
||||
- name: test
|
||||
image: elixir:1.14.4-alpine
|
||||
image: elixir:1.16.1-alpine
|
||||
environment:
|
||||
TEST_DATABASE_URL: ecto://postgres:postgres@database/memex_test
|
||||
HOST: testing.example.tld
|
||||
|
@ -1,3 +1,3 @@
|
||||
elixir 1.14.4-otp-25
|
||||
erlang 25.3
|
||||
nodejs 18.15.0
|
||||
elixir 1.16.1-otp-26
|
||||
erlang 26.2.2
|
||||
nodejs 21.6.2
|
||||
|
@ -1,4 +1,4 @@
|
||||
FROM elixir:1.14.4-alpine AS build
|
||||
FROM elixir:1.16.1-alpine AS build
|
||||
|
||||
# install build dependencies
|
||||
RUN apk add --no-cache build-base npm git python3
|
||||
@ -37,7 +37,7 @@ RUN mix do compile, release
|
||||
FROM alpine:latest AS app
|
||||
|
||||
RUN apk upgrade --no-cache && \
|
||||
apk add --no-cache bash openssl libssl1.1 libcrypto1.1 libgcc libstdc++ ncurses-libs
|
||||
apk add --no-cache bash openssl libssl3 libcrypto3 libgcc libstdc++ ncurses-libs
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
|
@ -26,15 +26,19 @@ import 'phoenix_html'
|
||||
import { Socket } from 'phoenix'
|
||||
import { LiveSocket } from 'phoenix_live_view'
|
||||
import topbar from 'topbar'
|
||||
|
||||
import CtrlEnter from './ctrlenter'
|
||||
import Date from './date'
|
||||
import DateTime from './datetime'
|
||||
import SanitizeTags from './sanitizetags'
|
||||
import SanitizeTitles from './sanitizetitles'
|
||||
|
||||
const csrfTokenElement = document.querySelector("meta[name='csrf-token']")
|
||||
let csrfToken
|
||||
if (csrfTokenElement) { csrfToken = csrfTokenElement.getAttribute('content') }
|
||||
const liveSocket = new LiveSocket('/live', Socket, {
|
||||
params: { _csrf_token: csrfToken },
|
||||
hooks: { Date, DateTime }
|
||||
hooks: { CtrlEnter, Date, DateTime, SanitizeTags, SanitizeTitles }
|
||||
})
|
||||
|
||||
// Show progress bar on live navigation and form submits
|
||||
|
11
assets/js/ctrlenter.js
Normal file
11
assets/js/ctrlenter.js
Normal file
@ -0,0 +1,11 @@
|
||||
export default {
|
||||
addFormSubmit (context) {
|
||||
context.el.addEventListener('keydown', (e) => {
|
||||
if (e.ctrlKey && e.key === 'Enter') {
|
||||
context.el.dispatchEvent(
|
||||
new Event('submit', { bubbles: true, cancelable: true }))
|
||||
}
|
||||
})
|
||||
},
|
||||
mounted () { this.addFormSubmit(this) }
|
||||
}
|
11
assets/js/sanitizetags.js
Normal file
11
assets/js/sanitizetags.js
Normal file
@ -0,0 +1,11 @@
|
||||
export default {
|
||||
SanitizeTags (context) {
|
||||
context.el.addEventListener('keyup', (e) => {
|
||||
e.target.value = e.target.value
|
||||
.replace(' ', ',')
|
||||
.replace(',,', ',')
|
||||
.replace(/[^a-zA-Z0-9,]/, '')
|
||||
})
|
||||
},
|
||||
mounted () { this.SanitizeTags(this) }
|
||||
}
|
10
assets/js/sanitizetitles.js
Normal file
10
assets/js/sanitizetitles.js
Normal file
@ -0,0 +1,10 @@
|
||||
export default {
|
||||
SanitizeTitles (context) {
|
||||
context.el.addEventListener('keyup', (e) => {
|
||||
e.target.value = e.target.value
|
||||
.replace(' ', '-')
|
||||
.replace(/[^a-zA-Z0-9-]/, '')
|
||||
})
|
||||
},
|
||||
mounted () { this.SanitizeTitles(this) }
|
||||
}
|
15071
assets/package-lock.json
generated
15071
assets/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -3,8 +3,8 @@
|
||||
"description": " ",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "v18.15.0",
|
||||
"npm": "9.5.0"
|
||||
"node": "v21.6.2",
|
||||
"npm": "10.2.4"
|
||||
},
|
||||
"scripts": {
|
||||
"deploy": "NODE_ENV=production webpack --mode production",
|
||||
@ -13,35 +13,35 @@
|
||||
"test": "standard"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fontsource/nunito-sans": "^4.5.10",
|
||||
"@fortawesome/fontawesome-free": "^6.4.0",
|
||||
"@fontsource/nunito-sans": "^5.0.8",
|
||||
"@fortawesome/fontawesome-free": "^6.5.1",
|
||||
"phoenix": "file:../deps/phoenix",
|
||||
"phoenix_html": "file:../deps/phoenix_html",
|
||||
"phoenix_live_view": "file:../deps/phoenix_live_view",
|
||||
"topbar": "^2.0.1"
|
||||
"topbar": "^2.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.21.4",
|
||||
"@babel/preset-env": "^7.21.4",
|
||||
"autoprefixer": "^10.4.14",
|
||||
"babel-loader": "^9.1.2",
|
||||
"copy-webpack-plugin": "^11.0.0",
|
||||
"css-loader": "^6.7.3",
|
||||
"css-minimizer-webpack-plugin": "^5.0.0",
|
||||
"@babel/core": "^7.23.9",
|
||||
"@babel/preset-env": "^7.23.9",
|
||||
"autoprefixer": "^10.4.17",
|
||||
"babel-loader": "^9.1.3",
|
||||
"copy-webpack-plugin": "^12.0.2",
|
||||
"css-loader": "^6.10.0",
|
||||
"css-minimizer-webpack-plugin": "^6.0.0",
|
||||
"file-loader": "^6.2.0",
|
||||
"mini-css-extract-plugin": "^2.7.5",
|
||||
"npm-check-updates": "^16.10.8",
|
||||
"postcss": "^8.4.21",
|
||||
"postcss-import": "^15.1.0",
|
||||
"postcss-loader": "^7.2.4",
|
||||
"postcss-preset-env": "^8.3.1",
|
||||
"sass": "^1.62.0",
|
||||
"sass-loader": "^13.2.2",
|
||||
"standard": "^17.0.0",
|
||||
"tailwindcss": "^3.3.1",
|
||||
"terser-webpack-plugin": "^5.3.7",
|
||||
"webpack": "^5.79.0",
|
||||
"webpack-cli": "^5.0.1",
|
||||
"webpack-dev-server": "^4.13.2"
|
||||
"mini-css-extract-plugin": "^2.8.0",
|
||||
"npm-check-updates": "^16.14.15",
|
||||
"postcss": "^8.4.35",
|
||||
"postcss-import": "^16.0.1",
|
||||
"postcss-loader": "^8.1.0",
|
||||
"postcss-preset-env": "^9.4.0",
|
||||
"sass": "^1.71.1",
|
||||
"sass-loader": "^14.1.1",
|
||||
"standard": "^17.1.0",
|
||||
"tailwindcss": "^3.4.1",
|
||||
"terser-webpack-plugin": "^5.3.10",
|
||||
"webpack": "^5.90.3",
|
||||
"webpack-cli": "^5.1.4",
|
||||
"webpack-dev-server": "^5.0.2"
|
||||
}
|
||||
}
|
||||
|
28
changelog.md
28
changelog.md
@ -1,3 +1,31 @@
|
||||
# v0.1.15
|
||||
- Sanitize titles while they are being typed
|
||||
- Sanitize tags while they are being typed
|
||||
- Remove requirement for note and content to have content
|
||||
- Prevent possible additional submissions
|
||||
- Fix content being displayed when blank
|
||||
|
||||
# v0.1.14
|
||||
- Fix issue with item content not able to be displayed sometimes
|
||||
|
||||
# v0.1.13
|
||||
- Update dependencies
|
||||
- Fix debounces
|
||||
- Allow space as delimiter for tags
|
||||
- Add bottom padding to page
|
||||
- Make pipeline step not require content
|
||||
- Make content previews resizable
|
||||
- Fix live flashes not dismissable by click
|
||||
- Fix disconnection modal not displaying
|
||||
- Submit items with ctrl-enter
|
||||
- Display backlinks in pipeline description
|
||||
- Modify backlink format
|
||||
|
||||
# v0.1.12
|
||||
- Code quality fixes
|
||||
- Fix error/404 pages not rendering properly
|
||||
- Update dependencies
|
||||
|
||||
# v0.1.11
|
||||
- Update dependencies
|
||||
- ee cummings even more
|
||||
|
@ -18,7 +18,10 @@ config :memex, MemexWeb.Endpoint,
|
||||
url: [scheme: "https", host: System.get_env("HOST") || "localhost", port: "443"],
|
||||
http: [port: String.to_integer(System.get_env("PORT") || "4000")],
|
||||
secret_key_base: "KH59P0iZixX5gP/u+zkxxG8vAAj6vgt0YqnwEB5JP5K+E567SsqkCz69uWShjE7I",
|
||||
render_errors: [view: MemexWeb.ErrorView, accepts: ~w(html json), layout: false],
|
||||
render_errors: [
|
||||
formats: [html: MemexWeb.ErrorHTML, json: MemexWeb.ErrorJSON],
|
||||
layout: false
|
||||
],
|
||||
pubsub_server: Memex.PubSub,
|
||||
live_view: [signing_salt: "zOLgd3lr"]
|
||||
|
||||
|
@ -26,7 +26,7 @@ config :memex, Memex.Mailer, adapter: Swoosh.Adapters.Test
|
||||
config :memex, Memex.Accounts, registration: "public"
|
||||
|
||||
# Print only warnings and errors during test
|
||||
config :logger, level: :warn
|
||||
config :logger, level: :warning
|
||||
|
||||
# Initialize plugs at runtime for faster test compilation
|
||||
config :phoenix, :plug_init_mode, :runtime
|
||||
|
@ -405,15 +405,15 @@ defmodule Memex.Accounts do
|
||||
|
||||
## Examples
|
||||
|
||||
iex> is_admin?(%User{role: :admin})
|
||||
iex> admin?(%User{role: :admin})
|
||||
true
|
||||
|
||||
iex> is_admin?(%User{})
|
||||
iex> admin?(%User{})
|
||||
false
|
||||
|
||||
"""
|
||||
@spec is_admin?(User.t()) :: boolean()
|
||||
def is_admin?(%User{id: user_id}) do
|
||||
@spec admin?(User.t()) :: boolean()
|
||||
def admin?(%User{id: user_id}) do
|
||||
Repo.exists?(from u in User, where: u.id == ^user_id, where: u.role == :admin)
|
||||
end
|
||||
|
||||
@ -422,16 +422,16 @@ defmodule Memex.Accounts do
|
||||
|
||||
## Examples
|
||||
|
||||
iex> is_already_admin?(%User{role: :admin})
|
||||
iex> already_admin?(%User{role: :admin})
|
||||
true
|
||||
|
||||
iex> is_already_admin?(%User{})
|
||||
iex> already_admin?(%User{})
|
||||
false
|
||||
|
||||
"""
|
||||
@spec is_already_admin?(User.t() | nil) :: boolean()
|
||||
def is_already_admin?(%User{role: :admin}), do: true
|
||||
def is_already_admin?(_invalid_user), do: false
|
||||
@spec already_admin?(User.t() | nil) :: boolean()
|
||||
def already_admin?(%User{role: :admin}), do: true
|
||||
def already_admin?(_invalid_user), do: false
|
||||
|
||||
## Confirmation
|
||||
|
||||
|
@ -229,12 +229,12 @@ defmodule Memex.Contexts do
|
||||
context |> Context.update_changeset(attrs, user)
|
||||
end
|
||||
|
||||
@spec is_owner_or_admin?(Context.t(), User.t()) :: boolean()
|
||||
def is_owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def is_owner_or_admin?(_context, %{role: :admin}), do: true
|
||||
def is_owner_or_admin?(_context, _other_user), do: false
|
||||
@spec owner_or_admin?(Context.t(), User.t()) :: boolean()
|
||||
def owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def owner_or_admin?(_context, %{role: :admin}), do: true
|
||||
def owner_or_admin?(_context, _other_user), do: false
|
||||
|
||||
@spec is_owner?(Context.t(), User.t()) :: boolean()
|
||||
def is_owner?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def is_owner?(_context, _other_user), do: false
|
||||
@spec owner?(Context.t(), User.t()) :: boolean()
|
||||
def owner?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def owner?(_context, _other_user), do: false
|
||||
end
|
||||
|
@ -57,7 +57,7 @@ defmodule Memex.Contexts.Context do
|
||||
|> validate_format(:slug, ~r/^[\p{L}\p{N}\-]+$/,
|
||||
message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted")
|
||||
)
|
||||
|> validate_required([:slug, :content, :user_id, :visibility])
|
||||
|> validate_required([:slug, :user_id, :visibility])
|
||||
|> unique_constraint(:slug)
|
||||
|> unsafe_validate_unique(:slug, Repo)
|
||||
end
|
||||
@ -70,7 +70,7 @@ defmodule Memex.Contexts.Context do
|
||||
|> validate_format(:slug, ~r/^[\p{L}\p{N}\-]+$/,
|
||||
message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted")
|
||||
)
|
||||
|> validate_required([:slug, :content, :visibility])
|
||||
|> validate_required([:slug, :visibility])
|
||||
|> unique_constraint(:slug)
|
||||
|> unsafe_validate_unique(:slug, Repo)
|
||||
end
|
||||
@ -79,11 +79,11 @@ defmodule Memex.Contexts.Context do
|
||||
changeset
|
||||
|> put_change(:tags_string, changeset |> get_field(:tags) |> get_tags_string())
|
||||
|> cast(attrs, [:tags_string])
|
||||
|> validate_format(:tags_string, ~r/^[\p{L}\p{N}\-\,]+$/,
|
||||
|> 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"
|
||||
"invalid format: only numbers, letters and hyphen are accepted. tags must be comma or space delimited"
|
||||
)
|
||||
)
|
||||
|> cast_tags()
|
||||
@ -98,9 +98,9 @@ defmodule Memex.Contexts.Context do
|
||||
|
||||
defp process_tags(tags_string) when tags_string |> is_binary() do
|
||||
tags_string
|
||||
|> String.split(",", trim: true)
|
||||
|> String.split([",", " "], trim: true)
|
||||
|> Enum.map(fn str -> str |> String.trim() end)
|
||||
|> Enum.reject(fn str -> str |> is_nil() end)
|
||||
|> Enum.reject(fn str -> str in [nil, ""] end)
|
||||
|> Enum.sort()
|
||||
end
|
||||
|
||||
|
@ -229,12 +229,12 @@ defmodule Memex.Notes do
|
||||
note |> Note.update_changeset(attrs, user)
|
||||
end
|
||||
|
||||
@spec is_owner_or_admin?(Note.t(), User.t()) :: boolean()
|
||||
def is_owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def is_owner_or_admin?(_context, %{role: :admin}), do: true
|
||||
def is_owner_or_admin?(_context, _other_user), do: false
|
||||
@spec owner_or_admin?(Note.t(), User.t()) :: boolean()
|
||||
def owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def owner_or_admin?(_context, %{role: :admin}), do: true
|
||||
def owner_or_admin?(_context, _other_user), do: false
|
||||
|
||||
@spec is_owner?(Note.t(), User.t()) :: boolean()
|
||||
def is_owner?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def is_owner?(_context, _other_user), do: false
|
||||
@spec owner?(Note.t(), User.t()) :: boolean()
|
||||
def owner?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def owner?(_context, _other_user), do: false
|
||||
end
|
||||
|
@ -56,7 +56,7 @@ defmodule Memex.Notes.Note do
|
||||
|> validate_format(:slug, ~r/^[\p{L}\p{N}\-]+$/,
|
||||
message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted")
|
||||
)
|
||||
|> validate_required([:slug, :content, :user_id, :visibility])
|
||||
|> validate_required([:slug, :user_id, :visibility])
|
||||
|> unique_constraint(:slug)
|
||||
|> unsafe_validate_unique(:slug, Repo)
|
||||
end
|
||||
@ -69,7 +69,7 @@ defmodule Memex.Notes.Note do
|
||||
|> validate_format(:slug, ~r/^[\p{L}\p{N}\-]+$/,
|
||||
message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted")
|
||||
)
|
||||
|> validate_required([:slug, :content, :visibility])
|
||||
|> validate_required([:slug, :visibility])
|
||||
|> unique_constraint(:slug)
|
||||
|> unsafe_validate_unique(:slug, Repo)
|
||||
end
|
||||
@ -78,11 +78,11 @@ defmodule Memex.Notes.Note do
|
||||
changeset
|
||||
|> put_change(:tags_string, changeset |> get_field(:tags) |> get_tags_string())
|
||||
|> cast(attrs, [:tags_string])
|
||||
|> validate_format(:tags_string, ~r/^[\p{L}\p{N}\-\,]+$/,
|
||||
|> 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"
|
||||
"invalid format: only numbers, letters and hyphen are accepted. tags must be comma or space delimited"
|
||||
)
|
||||
)
|
||||
|> cast_tags()
|
||||
@ -97,9 +97,9 @@ defmodule Memex.Notes.Note do
|
||||
|
||||
defp process_tags(tags_string) when tags_string |> is_binary() do
|
||||
tags_string
|
||||
|> String.split(",", trim: true)
|
||||
|> String.split([",", " "], trim: true)
|
||||
|> Enum.map(fn str -> str |> String.trim() end)
|
||||
|> Enum.reject(fn str -> str |> is_nil() end)
|
||||
|> Enum.reject(fn str -> str in [nil, ""] end)
|
||||
|> Enum.sort()
|
||||
end
|
||||
|
||||
|
@ -231,12 +231,12 @@ defmodule Memex.Pipelines do
|
||||
pipeline |> Pipeline.update_changeset(attrs, user)
|
||||
end
|
||||
|
||||
@spec is_owner_or_admin?(Pipeline.t(), User.t()) :: boolean()
|
||||
def is_owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def is_owner_or_admin?(_context, %{role: :admin}), do: true
|
||||
def is_owner_or_admin?(_context, _other_user), do: false
|
||||
@spec owner_or_admin?(Pipeline.t(), User.t()) :: boolean()
|
||||
def owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def owner_or_admin?(_context, %{role: :admin}), do: true
|
||||
def owner_or_admin?(_context, _other_user), do: false
|
||||
|
||||
@spec is_owner?(Pipeline.t(), User.t()) :: boolean()
|
||||
def is_owner?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def is_owner?(_context, _other_user), do: false
|
||||
@spec owner?(Pipeline.t(), User.t()) :: boolean()
|
||||
def owner?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def owner?(_context, _other_user), do: false
|
||||
end
|
||||
|
@ -81,11 +81,11 @@ defmodule Memex.Pipelines.Pipeline do
|
||||
changeset
|
||||
|> put_change(:tags_string, changeset |> get_field(:tags) |> get_tags_string())
|
||||
|> cast(attrs, [:tags_string])
|
||||
|> validate_format(:tags_string, ~r/^[\p{L}\p{N}\-\,]+$/,
|
||||
|> 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"
|
||||
"invalid format: only numbers, letters and hyphen are accepted. tags must be comma or space delimited"
|
||||
)
|
||||
)
|
||||
|> cast_tags()
|
||||
@ -100,9 +100,9 @@ defmodule Memex.Pipelines.Pipeline do
|
||||
|
||||
defp process_tags(tags_string) when tags_string |> is_binary() do
|
||||
tags_string
|
||||
|> String.split(",", trim: true)
|
||||
|> String.split([",", " "], trim: true)
|
||||
|> Enum.map(fn str -> str |> String.trim() end)
|
||||
|> Enum.reject(fn str -> str |> is_nil() end)
|
||||
|> Enum.reject(fn str -> str in [nil, ""] end)
|
||||
|> Enum.sort()
|
||||
end
|
||||
|
||||
|
@ -50,7 +50,7 @@ defmodule Memex.Pipelines.Steps.Step do
|
||||
%__MODULE__{}
|
||||
|> cast(attrs, [:title, :content])
|
||||
|> change(pipeline_id: pipeline_id, user_id: user_id, position: position)
|
||||
|> validate_required([:title, :content, :user_id, :position])
|
||||
|> validate_required([:title, :user_id, :position])
|
||||
end
|
||||
|
||||
@spec update_changeset(t(), attrs :: map(), User.t()) ::
|
||||
@ -62,7 +62,7 @@ defmodule Memex.Pipelines.Steps.Step do
|
||||
) do
|
||||
step
|
||||
|> cast(attrs, [:title, :content])
|
||||
|> validate_required([:title, :content, :user_id, :position])
|
||||
|> validate_required([:title, :user_id, :position])
|
||||
end
|
||||
|
||||
@spec position_changeset(t(), position :: non_neg_integer(), User.t()) :: changeset()
|
||||
@ -73,6 +73,6 @@ defmodule Memex.Pipelines.Steps.Step do
|
||||
) do
|
||||
step
|
||||
|> change(position: position)
|
||||
|> validate_required([:title, :content, :user_id, :position])
|
||||
|> validate_required([:title, :user_id, :position])
|
||||
end
|
||||
end
|
||||
|
@ -69,6 +69,7 @@ defmodule MemexWeb do
|
||||
|
||||
def html do
|
||||
quote do
|
||||
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||
use Phoenix.Component
|
||||
|
||||
# Import convenience functions from controllers
|
||||
@ -82,11 +83,8 @@ defmodule MemexWeb do
|
||||
|
||||
defp html_helpers do
|
||||
quote do
|
||||
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||
use Phoenix.HTML
|
||||
|
||||
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||
import Phoenix.Component
|
||||
use PhoenixHTMLHelpers
|
||||
import Phoenix.{Component, HTML, HTML.Form}
|
||||
import MemexWeb.{ErrorHelpers, Gettext, CoreComponents, HTMLHelpers}
|
||||
|
||||
# Shortcut for generating JS commands
|
||||
|
@ -2,13 +2,14 @@ defmodule MemexWeb.CoreComponents do
|
||||
@moduledoc """
|
||||
Provides core UI components.
|
||||
"""
|
||||
use PhoenixHTMLHelpers
|
||||
use Phoenix.Component
|
||||
use MemexWeb, :verified_routes
|
||||
import MemexWeb.{Gettext, HTMLHelpers}
|
||||
alias Memex.{Accounts, Accounts.Invite, Accounts.User}
|
||||
alias Memex.Contexts.Context
|
||||
alias Memex.Notes.Note
|
||||
alias Memex.Pipelines.Steps.Step
|
||||
alias Memex.Pipelines.{Pipeline, Steps.Step}
|
||||
alias Phoenix.HTML
|
||||
alias Phoenix.LiveView.JS
|
||||
|
||||
@ -130,53 +131,126 @@ defmodule MemexWeb.CoreComponents do
|
||||
|
||||
def step_content(assigns)
|
||||
|
||||
defp add_links_to_content(content, data_qa_prefix) do
|
||||
# replace links
|
||||
attr :pipeline, Pipeline, required: true
|
||||
|
||||
# link regex from
|
||||
# https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url
|
||||
# and modified with additional schemes from
|
||||
# https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml
|
||||
def pipeline_content(assigns)
|
||||
|
||||
content =
|
||||
Regex.replace(
|
||||
~r<((file|git|https?|ipfs|ipns|irc|jabber|magnet|mailto|mumble|tel|udp|xmpp):\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*))>,
|
||||
content,
|
||||
fn _whole_match, link ->
|
||||
link =
|
||||
HTML.Link.link(
|
||||
link,
|
||||
to: link,
|
||||
class: "link inline",
|
||||
target: "_blank",
|
||||
rel: "noopener noreferrer"
|
||||
)
|
||||
|> HTML.Safe.to_iodata()
|
||||
|> IO.iodata_to_binary()
|
||||
defp display_links(record) do
|
||||
record
|
||||
|> get_content()
|
||||
|> replace_hyperlinks(record)
|
||||
|> replace_triple_links(record)
|
||||
|> replace_double_links(record)
|
||||
|> replace_single_links(record)
|
||||
|> HTML.raw()
|
||||
end
|
||||
|
||||
"</p>#{link}<p class=\"inline\">"
|
||||
end
|
||||
)
|
||||
defp get_content(%{content: content}), do: content |> get_text()
|
||||
defp get_content(%{description: description}), do: description |> get_text()
|
||||
defp get_content(_fallthrough), do: nil |> get_text()
|
||||
|
||||
content =
|
||||
Regex.replace(
|
||||
~r/\[\[([\p{L}\p{N}\-]+)\]\]/,
|
||||
content,
|
||||
fn _whole_match, slug ->
|
||||
link =
|
||||
HTML.Link.link(
|
||||
"[[#{slug}]]",
|
||||
to: ~p"/note/#{slug}",
|
||||
class: "link inline",
|
||||
data: [qa: "#{data_qa_prefix}-#{slug}"]
|
||||
)
|
||||
|> HTML.Safe.to_iodata()
|
||||
|> IO.iodata_to_binary()
|
||||
defp get_text(string) when is_binary(string), do: string
|
||||
defp get_text(_fallthrough), do: ""
|
||||
|
||||
"</p>#{link}<p class=\"inline\">"
|
||||
end
|
||||
)
|
||||
# replaces hyperlinks like https://bubbletea.dev
|
||||
#
|
||||
# link regex from
|
||||
# https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url
|
||||
# and modified with additional schemes from
|
||||
# https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml
|
||||
defp replace_hyperlinks(content, _record) do
|
||||
Regex.replace(
|
||||
~r<((file|git|https?|ipfs|ipns|irc|jabber|magnet|mailto|mumble|tel|udp|xmpp):\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*))>,
|
||||
content,
|
||||
fn _whole_match, link ->
|
||||
link =
|
||||
link(
|
||||
link,
|
||||
to: link,
|
||||
class: "link inline",
|
||||
target: "_blank",
|
||||
rel: "noopener noreferrer"
|
||||
)
|
||||
|> HTML.Safe.to_iodata()
|
||||
|> IO.iodata_to_binary()
|
||||
|
||||
content |> HTML.raw()
|
||||
"</p>#{link}<p class=\"inline\">"
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
# replaces triple links like [[[slug-title]]]
|
||||
defp replace_triple_links(content, _record) do
|
||||
Regex.replace(
|
||||
~r/(^|[^\[])\[\[\[([\p{L}\p{N}\-]+)\]\]\]($|[^\]])/,
|
||||
content,
|
||||
fn _whole_match, prefix, slug, suffix ->
|
||||
link =
|
||||
link(
|
||||
"[[[#{slug}]]]",
|
||||
to: ~p"/note/#{slug}",
|
||||
class: "link inline"
|
||||
)
|
||||
|> HTML.Safe.to_iodata()
|
||||
|> IO.iodata_to_binary()
|
||||
|
||||
"#{prefix}</p>#{link}<p class=\"inline\">#{suffix}"
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
# replaces double links like [[slug-title]]
|
||||
defp replace_double_links(content, record) do
|
||||
Regex.replace(
|
||||
~r/(^|[^\[])\[\[([\p{L}\p{N}\-]+)\]\]($|[^\]])/,
|
||||
content,
|
||||
fn _whole_match, prefix, slug, suffix ->
|
||||
target =
|
||||
case record do
|
||||
%Pipeline{} -> ~p"/context/#{slug}"
|
||||
%Step{} -> ~p"/context/#{slug}"
|
||||
_context -> ~p"/note/#{slug}"
|
||||
end
|
||||
|
||||
link =
|
||||
link(
|
||||
"[[#{slug}]]",
|
||||
to: target,
|
||||
class: "link inline"
|
||||
)
|
||||
|> HTML.Safe.to_iodata()
|
||||
|> IO.iodata_to_binary()
|
||||
|
||||
"#{prefix}</p>#{link}<p class=\"inline\">#{suffix}"
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
# replaces single links like [slug-title]
|
||||
defp replace_single_links(content, record) do
|
||||
Regex.replace(
|
||||
~r/(^|[^\[])\[([\p{L}\p{N}\-]+)\]($|[^\]])/,
|
||||
content,
|
||||
fn _whole_match, prefix, slug, suffix ->
|
||||
target =
|
||||
case record do
|
||||
%Pipeline{} -> ~p"/pipeline/#{slug}"
|
||||
%Step{} -> ~p"/pipeline/#{slug}"
|
||||
%Context{} -> ~p"/context/#{slug}"
|
||||
_note -> ~p"/note/#{slug}"
|
||||
end
|
||||
|
||||
link =
|
||||
link(
|
||||
"[#{slug}]",
|
||||
to: target,
|
||||
class: "link inline"
|
||||
)
|
||||
|> HTML.Safe.to_iodata()
|
||||
|> IO.iodata_to_binary()
|
||||
|
||||
"#{prefix}</p>#{link}<p class=\"inline\">#{suffix}"
|
||||
end
|
||||
)
|
||||
end
|
||||
end
|
||||
|
@ -1,7 +1,8 @@
|
||||
<div
|
||||
:if={@context.content}
|
||||
id={"show-context-content-#{@context.id}"}
|
||||
class="input input-primary h-128 min-h-128 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto"
|
||||
class="input input-primary h-128 min-h-128 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto resize-y"
|
||||
phx-update="ignore"
|
||||
readonly
|
||||
phx-no-format
|
||||
><p class="inline"><%= add_links_to_content(@context.content, "context-note") %></p></div>
|
||||
><p class="inline"><%= display_links(@context) %></p></div>
|
||||
|
@ -1,7 +1,8 @@
|
||||
<div
|
||||
:if={@note.content}
|
||||
id={"show-note-content-#{@note.id}"}
|
||||
class="input input-primary h-128 min-h-128 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto"
|
||||
class="input input-primary h-128 min-h-128 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto resize-y"
|
||||
phx-update="ignore"
|
||||
readonly
|
||||
phx-no-format
|
||||
><p class="inline"><%= add_links_to_content(@note.content, "note-link") %></p></div>
|
||||
><p class="inline"><%= display_links(@note) %></p></div>
|
||||
|
@ -0,0 +1,8 @@
|
||||
<div
|
||||
:if={@pipeline.description}
|
||||
id={"show-pipeline-description-#{@pipeline.id}"}
|
||||
class="input input-primary h-32 min-h-32 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto resize-y"
|
||||
phx-update="ignore"
|
||||
readonly
|
||||
phx-no-format
|
||||
><p class="inline"><%= display_links(@pipeline) %></p></div>
|
@ -1,7 +1,8 @@
|
||||
<div
|
||||
:if={@step.content}
|
||||
id={"show-step-content-#{@step.id}"}
|
||||
class="input input-primary h-32 min-h-32 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto"
|
||||
class="input input-primary h-32 min-h-32 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto resize-y"
|
||||
phx-update="ignore"
|
||||
readonly
|
||||
phx-no-format
|
||||
><p class="inline"><%= add_links_to_content(@step.content, "step-context") %></p></div>
|
||||
><p class="inline"><%= display_links(@step) %></p></div>
|
||||
|
@ -38,7 +38,7 @@
|
||||
<li class="mx-2 my-1 border-left border border-primary-700"></li>
|
||||
|
||||
<%= if @current_user do %>
|
||||
<li :if={@current_user |> Accounts.is_already_admin?()} class="mx-2 my-1">
|
||||
<li :if={@current_user |> Accounts.already_admin?()} class="mx-2 my-1">
|
||||
<.link navigate={~p"/invites"} class="text-primary-400 hover:underline">
|
||||
<%= gettext("invites") %>
|
||||
</.link>
|
||||
|
@ -1,13 +1,26 @@
|
||||
<main role="main" class="min-h-full min-w-full">
|
||||
<main role="main" class="pb-8 min-w-full">
|
||||
<header>
|
||||
<.topbar current_user={assigns[:current_user]} />
|
||||
|
||||
<div class="mx-8 my-2 flex flex-col space-y-4 text-center">
|
||||
<p :if={@flash["info"]} class="alert alert-info" role="alert">
|
||||
<%= @flash["info"] %>
|
||||
<p
|
||||
:if={@flash && @flash |> Map.has_key?("info")}
|
||||
class="alert alert-info cursor-pointer"
|
||||
role="alert"
|
||||
phx-click="lv:clear-flash"
|
||||
phx-value-key="info"
|
||||
>
|
||||
<%= live_flash(@flash, :info) %>
|
||||
</p>
|
||||
<p :if={@flash["error"]} class="alert alert-danger" role="alert">
|
||||
<%= @flash["error"] %>
|
||||
|
||||
<p
|
||||
:if={@flash && @flash |> Map.has_key?("error")}
|
||||
class="alert alert-danger cursor-pointer"
|
||||
role="alert"
|
||||
phx-click="lv:clear-flash"
|
||||
phx-value-key="error"
|
||||
>
|
||||
<%= live_flash(@flash, :error) %>
|
||||
</p>
|
||||
</div>
|
||||
</header>
|
||||
@ -16,3 +29,17 @@
|
||||
<%= @inner_content %>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<div
|
||||
id="disconnect"
|
||||
class="z-50 fixed opacity-0 bottom-8 right-12 px-8 py-4 w-max h-max
|
||||
border border-primary-400 shadow-lg rounded-lg bg-primary-900 text-primary-400
|
||||
flex justify-center items-center space-x-4
|
||||
transition-opacity ease-in-out duration-500 delay-[2000ms]"
|
||||
>
|
||||
<i class="fas fa-fade text-md fa-satellite-dish"></i>
|
||||
|
||||
<h1 class="title text-md">
|
||||
<%= gettext("Reconnecting...") %>
|
||||
</h1>
|
||||
</div>
|
||||
|
@ -1,45 +0,0 @@
|
||||
<main class="pb-8 min-w-full">
|
||||
<header>
|
||||
<.topbar current_user={assigns[:current_user]} />
|
||||
|
||||
<div class="mx-8 my-2 flex flex-col space-y-4 text-center">
|
||||
<p
|
||||
:if={@flash && @flash |> Map.has_key?("info")}
|
||||
class="alert alert-info"
|
||||
role="alert"
|
||||
phx-click="lv:clear-flash"
|
||||
phx-value-key="info"
|
||||
>
|
||||
<%= live_flash(@flash, "info") %>
|
||||
</p>
|
||||
|
||||
<p
|
||||
:if={@flash && @flash |> Map.has_key?("error")}
|
||||
class="alert alert-danger"
|
||||
role="alert"
|
||||
phx-click="lv:clear-flash"
|
||||
phx-value-key="error"
|
||||
>
|
||||
<%= live_flash(@flash, "error") %>
|
||||
</p>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="mx-4 sm:mx-8 md:mx-16">
|
||||
<%= @inner_content %>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<div
|
||||
id="disconnect"
|
||||
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
|
||||
flex justify-center items-center space-x-4
|
||||
transition-opacity ease-in-out duration-500 delay-[2000ms]"
|
||||
>
|
||||
<i class="fas fa-fade text-md fa-satellite-dish"></i>
|
||||
|
||||
<h1 class="title text-md">
|
||||
<%= gettext("Reconnecting...") %>
|
||||
</h1>
|
||||
</div>
|
@ -1,6 +1,7 @@
|
||||
defmodule MemexWeb.UserRegistrationController do
|
||||
use MemexWeb, :controller
|
||||
import MemexWeb.Gettext
|
||||
alias Ecto.Changeset
|
||||
alias Memex.{Accounts, Accounts.Invites}
|
||||
|
||||
def new(conn, %{"invite" => invite_token}) do
|
||||
@ -69,8 +70,8 @@ defmodule MemexWeb.UserRegistrationController do
|
||||
|> put_flash(:error, dgettext("errors", "sorry, this invite was not found or expired"))
|
||||
|> redirect(to: ~p"/")
|
||||
|
||||
{:error, %Ecto.Changeset{} = changeset} ->
|
||||
conn |> render("new.html", changeset: changeset, invite_token: invite_token)
|
||||
{:error, %Changeset{} = changeset} ->
|
||||
conn |> render(:new, changeset: changeset, invite_token: invite_token)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -3,8 +3,8 @@ defmodule MemexWeb.ErrorHelpers do
|
||||
Conveniences for translating and building error messages.
|
||||
"""
|
||||
|
||||
use Phoenix.HTML
|
||||
import Phoenix.Component
|
||||
use PhoenixHTMLHelpers
|
||||
import Phoenix.{Component, HTML.Form}
|
||||
alias Ecto.Changeset
|
||||
alias Phoenix.{HTML.Form, LiveView.Rendered}
|
||||
|
||||
|
@ -6,13 +6,15 @@
|
||||
phx-target={@myself}
|
||||
phx-change="validate"
|
||||
phx-submit="save"
|
||||
phx-debounce="300"
|
||||
phx-hook="CtrlEnter"
|
||||
class="flex flex-col justify-start items-stretch space-y-4"
|
||||
>
|
||||
<%= text_input(f, :slug,
|
||||
aria_label: gettext("slug"),
|
||||
class: "input input-primary",
|
||||
placeholder: gettext("slug"),
|
||||
aria_label: gettext("slug")
|
||||
phx_debounce: 300,
|
||||
phx_hook: "SanitizeTitles",
|
||||
placeholder: gettext("slug")
|
||||
) %>
|
||||
<%= error_tag(f, :slug) %>
|
||||
|
||||
@ -20,16 +22,21 @@
|
||||
id: "context-form-content",
|
||||
class: "input input-primary h-64 min-h-64",
|
||||
phx_update: "ignore",
|
||||
placeholder: gettext("use [[note-slug]] to link to a note"),
|
||||
aria_label: gettext("use [[note-slug]] to link to a note")
|
||||
placeholder:
|
||||
gettext("use [[note-slug]] to link to a note or [context-slug] to link to a context"),
|
||||
aria_label:
|
||||
gettext("use [[note-slug]] to link to a note or [context-slug] to link to a context"),
|
||||
phx_debounce: 300
|
||||
) %>
|
||||
<%= error_tag(f, :content) %>
|
||||
|
||||
<%= text_input(f, :tags_string,
|
||||
id: "tags-input",
|
||||
aria_label: gettext("tag1,tag2"),
|
||||
class: "input input-primary",
|
||||
placeholder: gettext("tag1,tag2"),
|
||||
aria_label: gettext("tag1,tag2")
|
||||
id: "tags-input",
|
||||
phx_debounce: 300,
|
||||
phx_hook: "SanitizeTags",
|
||||
placeholder: gettext("tag1,tag2")
|
||||
) %>
|
||||
<%= error_tag(f, :tags_string) %>
|
||||
|
||||
@ -37,7 +44,8 @@
|
||||
<%= select(f, :visibility, Ecto.Enum.values(Memex.Contexts.Context, :visibility),
|
||||
class: "grow input input-primary",
|
||||
prompt: gettext("select privacy"),
|
||||
aria_label: gettext("select privacy")
|
||||
aria_label: gettext("select privacy"),
|
||||
phx_debounce: 300
|
||||
) %>
|
||||
|
||||
<%= submit(dgettext("actions", "save"),
|
||||
|
@ -33,14 +33,14 @@
|
||||
>
|
||||
<:actions :let={context}>
|
||||
<.link
|
||||
:if={Contexts.is_owner?(context, @current_user)}
|
||||
:if={Contexts.owner?(context, @current_user)}
|
||||
patch={~p"/contexts/#{context}/edit"}
|
||||
aria-label={dgettext("actions", "edit %{context_slug}", context_slug: context.slug)}
|
||||
>
|
||||
<%= dgettext("actions", "edit") %>
|
||||
</.link>
|
||||
<.link
|
||||
:if={Contexts.is_owner_or_admin?(context, @current_user)}
|
||||
:if={Contexts.owner_or_admin?(context, @current_user)}
|
||||
href="#"
|
||||
phx-click="delete"
|
||||
phx-value-id={context.id}
|
||||
|
@ -17,14 +17,14 @@
|
||||
|
||||
<div class="self-end flex space-x-4">
|
||||
<.link
|
||||
:if={Contexts.is_owner?(@context, @current_user)}
|
||||
:if={Contexts.owner?(@context, @current_user)}
|
||||
class="btn btn-primary"
|
||||
patch={~p"/context/#{@context}/edit"}
|
||||
>
|
||||
<%= dgettext("actions", "edit") %>
|
||||
</.link>
|
||||
<button
|
||||
:if={Contexts.is_owner_or_admin?(@context, @current_user)}
|
||||
:if={Contexts.owner_or_admin?(@context, @current_user)}
|
||||
type="button"
|
||||
class="btn btn-primary"
|
||||
phx-click="delete"
|
||||
|
@ -10,6 +10,7 @@
|
||||
phx-target={@myself}
|
||||
phx-change="validate"
|
||||
phx-submit="save"
|
||||
phx-hook="CtrlEnter"
|
||||
>
|
||||
<div
|
||||
:if={@changeset.action && not @changeset.valid?()}
|
||||
@ -18,13 +19,27 @@
|
||||
<%= changeset_errors(@changeset) %>
|
||||
</div>
|
||||
|
||||
<%= label(f, :name, gettext("name"), class: "title text-lg text-primary-400") %>
|
||||
<%= text_input(f, :name, class: "input input-primary col-span-2") %>
|
||||
<%= label(f, :name, gettext("name"),
|
||||
class: "title text-lg text-primary-400",
|
||||
phx_debounce: 300
|
||||
) %>
|
||||
<%= text_input(f, :name,
|
||||
class: "input input-primary col-span-2",
|
||||
phx_debounce: 300
|
||||
) %>
|
||||
<%= error_tag(f, :name, "col-span-3") %>
|
||||
|
||||
<%= 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") %>
|
||||
<%= label(f, :uses_left, gettext("uses left"),
|
||||
class: "title text-lg text-primary-400",
|
||||
phx_debounce: 300
|
||||
) %>
|
||||
<%= number_input(f, :uses_left,
|
||||
min: 0,
|
||||
class: "input input-primary col-span-2",
|
||||
phx_debounce: 300
|
||||
) %>
|
||||
<%= 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>
|
||||
|
@ -6,13 +6,15 @@
|
||||
phx-target={@myself}
|
||||
phx-change="validate"
|
||||
phx-submit="save"
|
||||
phx-debounce="300"
|
||||
phx-hook="CtrlEnter"
|
||||
class="flex flex-col justify-start items-stretch space-y-4"
|
||||
>
|
||||
<%= text_input(f, :slug,
|
||||
aria_label: gettext("slug"),
|
||||
class: "input input-primary",
|
||||
placeholder: gettext("slug"),
|
||||
aria_label: gettext("slug")
|
||||
phx_debounce: 300,
|
||||
phx_hook: "SanitizeTitles",
|
||||
placeholder: gettext("slug")
|
||||
) %>
|
||||
<%= error_tag(f, :slug) %>
|
||||
|
||||
@ -20,16 +22,19 @@
|
||||
id: "note-form-content",
|
||||
class: "input input-primary h-64 min-h-64",
|
||||
phx_update: "ignore",
|
||||
placeholder: gettext("content"),
|
||||
aria_label: gettext("content")
|
||||
placeholder: gettext("use [note-slug] to link to a note"),
|
||||
aria_label: gettext("use [note-slug] to link to a note"),
|
||||
phx_debounce: 300
|
||||
) %>
|
||||
<%= error_tag(f, :content) %>
|
||||
|
||||
<%= text_input(f, :tags_string,
|
||||
id: "tags-input",
|
||||
aria_label: gettext("tag1,tag2"),
|
||||
class: "input input-primary",
|
||||
placeholder: gettext("tag1,tag2"),
|
||||
aria_label: gettext("tag1,tag2")
|
||||
id: "tags-input",
|
||||
phx_debounce: 300,
|
||||
phx_hook: "SanitizeTags",
|
||||
placeholder: gettext("tag1,tag2")
|
||||
) %>
|
||||
<%= error_tag(f, :tags_string) %>
|
||||
|
||||
@ -37,7 +42,8 @@
|
||||
<%= select(f, :visibility, Ecto.Enum.values(Memex.Notes.Note, :visibility),
|
||||
class: "grow input input-primary",
|
||||
prompt: gettext("select privacy"),
|
||||
aria_label: gettext("select privacy")
|
||||
aria_label: gettext("select privacy"),
|
||||
phx_debounce: 300
|
||||
) %>
|
||||
|
||||
<%= submit(dgettext("actions", "save"),
|
||||
|
@ -33,14 +33,14 @@
|
||||
>
|
||||
<:actions :let={note}>
|
||||
<.link
|
||||
:if={Notes.is_owner?(note, @current_user)}
|
||||
:if={Notes.owner?(note, @current_user)}
|
||||
patch={~p"/notes/#{note}/edit"}
|
||||
aria-label={dgettext("actions", "edit %{note_slug}", note_slug: note.slug)}
|
||||
>
|
||||
<%= dgettext("actions", "edit") %>
|
||||
</.link>
|
||||
<.link
|
||||
:if={Notes.is_owner_or_admin?(note, @current_user)}
|
||||
:if={Notes.owner_or_admin?(note, @current_user)}
|
||||
href="#"
|
||||
phx-click="delete"
|
||||
phx-value-id={note.id}
|
||||
|
@ -17,14 +17,14 @@
|
||||
|
||||
<div class="self-end flex space-x-4">
|
||||
<.link
|
||||
:if={Notes.is_owner?(@note, @current_user)}
|
||||
:if={Notes.owner?(@note, @current_user)}
|
||||
class="btn btn-primary"
|
||||
patch={~p"/note/#{@note}/edit"}
|
||||
>
|
||||
<%= dgettext("actions", "edit") %>
|
||||
</.link>
|
||||
<button
|
||||
:if={Notes.is_owner_or_admin?(@note, @current_user)}
|
||||
:if={Notes.owner_or_admin?(@note, @current_user)}
|
||||
type="button"
|
||||
class="btn btn-primary"
|
||||
phx-click="delete"
|
||||
|
@ -6,13 +6,15 @@
|
||||
phx-target={@myself}
|
||||
phx-change="validate"
|
||||
phx-submit="save"
|
||||
phx-debounce="300"
|
||||
phx-hook="CtrlEnter"
|
||||
class="flex flex-col justify-start items-stretch space-y-4"
|
||||
>
|
||||
<%= text_input(f, :slug,
|
||||
aria_label: gettext("slug"),
|
||||
class: "input input-primary",
|
||||
placeholder: gettext("slug"),
|
||||
aria_label: gettext("slug")
|
||||
phx_debounce: 300,
|
||||
phx_hook: "SanitizeTitles",
|
||||
placeholder: gettext("slug")
|
||||
) %>
|
||||
<%= error_tag(f, :slug) %>
|
||||
|
||||
@ -20,16 +22,25 @@
|
||||
id: "pipeline-form-description",
|
||||
class: "input input-primary h-64 min-h-64",
|
||||
phx_update: "ignore",
|
||||
placeholder: gettext("description"),
|
||||
aria_label: gettext("description")
|
||||
placeholder:
|
||||
gettext(
|
||||
"use [[[note-slug]]] to link to a note or use [[context-slug]] to link to a context or [pipeline-slug] to link to a pipeline"
|
||||
),
|
||||
aria_label:
|
||||
gettext(
|
||||
"use [[[note-slug]]] to link to a note or use [[context-slug]] to link to a context or [pipeline-slug] to link to a pipeline"
|
||||
),
|
||||
phx_debounce: 300
|
||||
) %>
|
||||
<%= error_tag(f, :description) %>
|
||||
|
||||
<%= text_input(f, :tags_string,
|
||||
id: "tags-input",
|
||||
aria_label: gettext("tag1,tag2"),
|
||||
class: "input input-primary",
|
||||
placeholder: gettext("tag1,tag2"),
|
||||
aria_label: gettext("tag1,tag2")
|
||||
id: "tags-input",
|
||||
phx_debounce: 300,
|
||||
phx_hook: "SanitizeTags",
|
||||
placeholder: gettext("tag1,tag2")
|
||||
) %>
|
||||
<%= error_tag(f, :tags_string) %>
|
||||
|
||||
@ -37,7 +48,8 @@
|
||||
<%= select(f, :visibility, Ecto.Enum.values(Memex.Pipelines.Pipeline, :visibility),
|
||||
class: "grow input input-primary",
|
||||
prompt: gettext("select privacy"),
|
||||
aria_label: gettext("select privacy")
|
||||
aria_label: gettext("select privacy"),
|
||||
phx_debounce: 300
|
||||
) %>
|
||||
|
||||
<%= submit(dgettext("actions", "save"),
|
||||
|
@ -33,14 +33,14 @@
|
||||
>
|
||||
<:actions :let={pipeline}>
|
||||
<.link
|
||||
:if={Pipelines.is_owner?(pipeline, @current_user)}
|
||||
:if={Pipelines.owner?(pipeline, @current_user)}
|
||||
patch={~p"/pipelines/#{pipeline}/edit"}
|
||||
aria-label={dgettext("actions", "edit %{pipeline_slug}", pipeline_slug: pipeline.slug)}
|
||||
>
|
||||
<%= dgettext("actions", "edit") %>
|
||||
</.link>
|
||||
<.link
|
||||
:if={Pipelines.is_owner_or_admin?(pipeline, @current_user)}
|
||||
:if={Pipelines.owner_or_admin?(pipeline, @current_user)}
|
||||
href="#"
|
||||
phx-click="delete"
|
||||
phx-value-id={pipeline.id}
|
||||
|
@ -9,14 +9,7 @@
|
||||
</.link>
|
||||
</div>
|
||||
|
||||
<textarea
|
||||
:if={@pipeline.description}
|
||||
id="show-pipeline-description"
|
||||
class="input input-primary h-32 min-h-32"
|
||||
phx-update="ignore"
|
||||
readonly
|
||||
phx-no-format
|
||||
><%= @pipeline.description %></textarea>
|
||||
<.pipeline_content pipeline={@pipeline} />
|
||||
|
||||
<p class="self-end">
|
||||
<%= gettext("Visibility: %{visibility}", visibility: @pipeline.visibility) %>
|
||||
@ -24,14 +17,14 @@
|
||||
|
||||
<div class="pb-4 self-end flex space-x-4">
|
||||
<.link
|
||||
:if={Pipelines.is_owner?(@pipeline, @current_user)}
|
||||
:if={Pipelines.owner?(@pipeline, @current_user)}
|
||||
class="btn btn-primary"
|
||||
patch={~p"/pipeline/#{@pipeline}/edit"}
|
||||
>
|
||||
<%= dgettext("actions", "edit") %>
|
||||
</.link>
|
||||
<button
|
||||
:if={Pipelines.is_owner_or_admin?(@pipeline, @current_user)}
|
||||
:if={Pipelines.owner_or_admin?(@pipeline, @current_user)}
|
||||
type="button"
|
||||
class="btn btn-primary"
|
||||
phx-click="delete"
|
||||
@ -59,7 +52,7 @@
|
||||
<%= gettext("%{position}. %{title}", position: position + 1, title: title) %>
|
||||
</h3>
|
||||
|
||||
<%= if Pipelines.is_owner?(@pipeline, @current_user) do %>
|
||||
<%= if Pipelines.owner?(@pipeline, @current_user) do %>
|
||||
<div class="flex justify-between items-center space-x-4">
|
||||
<%= if position <= 0 do %>
|
||||
<i class="fas text-xl fa-chevron-up cursor-not-allowed opacity-25"></i>
|
||||
@ -120,7 +113,7 @@
|
||||
<% end %>
|
||||
|
||||
<.link
|
||||
:if={Pipelines.is_owner?(@pipeline, @current_user)}
|
||||
:if={Pipelines.owner?(@pipeline, @current_user)}
|
||||
class="self-end btn btn-primary"
|
||||
patch={~p"/pipeline/#{@pipeline}/add_step"}
|
||||
>
|
||||
|
@ -6,13 +6,15 @@
|
||||
phx-target={@myself}
|
||||
phx-change="validate"
|
||||
phx-submit="save"
|
||||
phx-debounce="300"
|
||||
phx-hook="CtrlEnter"
|
||||
class="flex flex-col justify-start items-stretch space-y-4"
|
||||
>
|
||||
<%= text_input(f, :title,
|
||||
aria_label: gettext("title"),
|
||||
class: "input input-primary",
|
||||
placeholder: gettext("title"),
|
||||
aria_label: gettext("title")
|
||||
phx_debounce: 300,
|
||||
phx_hook: "SanitizeTitles",
|
||||
placeholder: gettext("title")
|
||||
) %>
|
||||
<%= error_tag(f, :title) %>
|
||||
|
||||
@ -20,8 +22,15 @@
|
||||
id: "step-form-content",
|
||||
class: "input input-primary h-64 min-h-64",
|
||||
phx_update: "ignore",
|
||||
placeholder: gettext("use [[context-slug]] to link to a context"),
|
||||
aria_label: gettext("use [[context-slug]] to link to a context")
|
||||
placeholder:
|
||||
gettext(
|
||||
"use [[[note-slug]]] to link to a note or use [[context-slug]] to link to a context or [pipeline-slug] to link to a pipeline"
|
||||
),
|
||||
aria_label:
|
||||
gettext(
|
||||
"use [[[note-slug]]] to link to a note or use [[context-slug]] to link to a context or [pipeline-slug] to link to a pipeline"
|
||||
),
|
||||
phx_debounce: 300
|
||||
) %>
|
||||
<%= error_tag(f, :content) %>
|
||||
|
||||
|
39
mix.exs
39
mix.exs
@ -4,8 +4,8 @@ defmodule Memex.MixProject do
|
||||
def project do
|
||||
[
|
||||
app: :memex,
|
||||
version: "0.1.11",
|
||||
elixir: "1.14.4",
|
||||
version: "0.1.15",
|
||||
elixir: "1.16.1",
|
||||
elixirc_paths: elixirc_paths(Mix.env()),
|
||||
start_permanent: Mix.env() == :prod,
|
||||
aliases: aliases(),
|
||||
@ -47,29 +47,30 @@ defmodule Memex.MixProject do
|
||||
defp deps do
|
||||
[
|
||||
{:bcrypt_elixir, "~> 3.0"},
|
||||
{:phoenix, "~> 1.7.0"},
|
||||
{:phoenix_ecto, "~> 4.4"},
|
||||
{:phoenix_html, "~> 3.0"},
|
||||
{:phoenix_live_reload, "~> 1.2", only: :dev},
|
||||
{:phoenix_live_view, "~> 0.18.0"},
|
||||
{:phoenix_live_dashboard, "~> 0.6"},
|
||||
{:credo, "~> 1.5", only: [:dev, :test], runtime: false},
|
||||
{:dialyxir, "~> 1.0", only: [:dev, :test], runtime: false},
|
||||
{:ecto_psql_extras, "~> 0.6"},
|
||||
{:ecto_sql, "~> 3.6"},
|
||||
{:postgrex, ">= 0.0.0"},
|
||||
{:floki, ">= 0.30.0", only: :test},
|
||||
{:eqrcode, "~> 0.1.10"},
|
||||
# {:esbuild, "~> 0.3", runtime: Mix.env() == :dev},
|
||||
{:ex_doc, "~> 0.27", only: :dev, runtime: false},
|
||||
{:swoosh, "~> 1.6"},
|
||||
{:floki, ">= 0.30.0", only: :test},
|
||||
{:gen_smtp, "~> 1.0"},
|
||||
{:oban, "~> 2.10"},
|
||||
{:telemetry_metrics, "~> 0.6"},
|
||||
{:telemetry_poller, "~> 1.0"},
|
||||
{:gettext, "~> 0.18"},
|
||||
{:jason, "~> 1.2"},
|
||||
{:plug_cowboy, "~> 2.5"},
|
||||
{:ecto_psql_extras, "~> 0.6"},
|
||||
{:eqrcode, "~> 0.1.10"},
|
||||
{:credo, "~> 1.5", only: [:dev, :test], runtime: false},
|
||||
{:dialyxir, "~> 1.0", only: [:dev, :test], runtime: false}
|
||||
{:oban, "~> 2.10"},
|
||||
{:phoenix_ecto, "~> 4.4"},
|
||||
{:phoenix_html_helpers, "~> 1.0"},
|
||||
{:phoenix_html, "~> 4.0"},
|
||||
{:phoenix_live_dashboard, "~> 0.8"},
|
||||
{:phoenix_live_reload, "~> 1.2", only: :dev},
|
||||
{:phoenix_live_view, "~> 0.20.0"},
|
||||
{:phoenix, "~> 1.7.11"},
|
||||
{:plug_cowboy, "~> 2.7.0"},
|
||||
{:postgrex, ">= 0.0.0"},
|
||||
{:swoosh, "~> 1.6"},
|
||||
{:telemetry_metrics, "~> 0.6"},
|
||||
{:telemetry_poller, "~> 1.0"}
|
||||
]
|
||||
end
|
||||
|
||||
|
84
mix.lock
84
mix.lock
@ -1,54 +1,54 @@
|
||||
%{
|
||||
"bcrypt_elixir": {:hex, :bcrypt_elixir, "3.0.1", "9be815469e6bfefec40fa74658ecbbe6897acfb57614df1416eeccd4903f602c", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "486bb95efb645d1efc6794c1ddd776a186a9a713abf06f45708a6ce324fb96cf"},
|
||||
"bunt": {:hex, :bunt, "0.2.1", "e2d4792f7bc0ced7583ab54922808919518d0e57ee162901a16a1b6664ef3b14", [:mix], [], "hexpm", "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5"},
|
||||
"castore": {:hex, :castore, "1.0.1", "240b9edb4e9e94f8f56ab39d8d2d0a57f49e46c56aced8f873892df8ff64ff5a", [:mix], [], "hexpm", "b4951de93c224d44fac71614beabd88b71932d0b1dea80d2f80fb9044e01bbb3"},
|
||||
"comeonin": {:hex, :comeonin, "5.3.3", "2c564dac95a35650e9b6acfe6d2952083d8a08e4a89b93a481acb552b325892e", [:mix], [], "hexpm", "3e38c9c2cb080828116597ca8807bb482618a315bfafd98c90bc22a821cc84df"},
|
||||
"connection": {:hex, :connection, "1.1.0", "ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68", [:mix], [], "hexpm", "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c"},
|
||||
"cowboy": {:hex, :cowboy, "2.9.0", "865dd8b6607e14cf03282e10e934023a1bd8be6f6bacf921a7e2a96d800cd452", [:make, :rebar3], [{:cowlib, "2.11.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "2c729f934b4e1aa149aff882f57c6372c15399a20d54f65c8d67bef583021bde"},
|
||||
"bcrypt_elixir": {:hex, :bcrypt_elixir, "3.1.0", "0b110a9a6c619b19a7f73fa3004aa11d6e719a67e672d1633dc36b6b2290a0f7", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "2ad2acb5a8bc049e8d5aa267802631912bb80d5f4110a178ae7999e69dca1bf7"},
|
||||
"bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},
|
||||
"castore": {:hex, :castore, "1.0.5", "9eeebb394cc9a0f3ae56b813459f990abb0a3dedee1be6b27fdb50301930502f", [:mix], [], "hexpm", "8d7c597c3e4a64c395980882d4bca3cebb8d74197c590dc272cfd3b6a6310578"},
|
||||
"comeonin": {:hex, :comeonin, "5.4.0", "246a56ca3f41d404380fc6465650ddaa532c7f98be4bda1b4656b3a37cc13abe", [:mix], [], "hexpm", "796393a9e50d01999d56b7b8420ab0481a7538d0caf80919da493b4a6e51faf1"},
|
||||
"cowboy": {:hex, :cowboy, "2.10.0", "ff9ffeff91dae4ae270dd975642997afe2a1179d94b1887863e43f681a203e26", [:make, :rebar3], [{:cowlib, "2.12.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "3afdccb7183cc6f143cb14d3cf51fa00e53db9ec80cdcd525482f5e99bc41d6b"},
|
||||
"cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"},
|
||||
"cowlib": {:hex, :cowlib, "2.11.0", "0b9ff9c346629256c42ebe1eeb769a83c6cb771a6ee5960bd110ab0b9b872063", [:make, :rebar3], [], "hexpm", "2b3e9da0b21c4565751a6d4901c20d1b4cc25cbb7fd50d91d2ab6dd287bc86a9"},
|
||||
"credo": {:hex, :credo, "1.7.0", "6119bee47272e85995598ee04f2ebbed3e947678dee048d10b5feca139435f75", [:mix], [{:bunt, "~> 0.2.1", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "6839fcf63d1f0d1c0f450abc8564a57c43d644077ab96f2934563e68b8a769d7"},
|
||||
"db_connection": {:hex, :db_connection, "2.5.0", "bb6d4f30d35ded97b29fe80d8bd6f928a1912ca1ff110831edcd238a1973652c", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c92d5ba26cd69ead1ff7582dbb860adeedfff39774105a4f1c92cbb654b55aa2"},
|
||||
"decimal": {:hex, :decimal, "2.0.0", "a78296e617b0f5dd4c6caf57c714431347912ffb1d0842e998e9792b5642d697", [:mix], [], "hexpm", "34666e9c55dea81013e77d9d87370fe6cb6291d1ef32f46a1600230b1d44f577"},
|
||||
"dialyxir": {:hex, :dialyxir, "1.3.0", "fd1672f0922b7648ff9ce7b1b26fcf0ef56dda964a459892ad15f6b4410b5284", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "00b2a4bcd6aa8db9dcb0b38c1225b7277dca9bc370b6438715667071a304696f"},
|
||||
"earmark_parser": {:hex, :earmark_parser, "1.4.31", "a93921cdc6b9b869f519213d5bc79d9e218ba768d7270d46fdcf1c01bacff9e2", [:mix], [], "hexpm", "317d367ee0335ef037a87e46c91a2269fef6306413f731e8ec11fc45a7efd059"},
|
||||
"ecto": {:hex, :ecto, "3.10.1", "c6757101880e90acc6125b095853176a02da8f1afe056f91f1f90b80c9389822", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d2ac4255f1601bdf7ac74c0ed971102c6829dc158719b94bd30041bbad77f87a"},
|
||||
"ecto_psql_extras": {:hex, :ecto_psql_extras, "0.7.10", "e14d400930f401ca9f541b3349212634e44027d7f919bbb71224d7ac0d0e8acd", [:mix], [{:ecto_sql, "~> 3.4", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.15.7 or ~> 0.16.0", [hex: :postgrex, repo: "hexpm", optional: false]}, {:table_rex, "~> 3.1.1", [hex: :table_rex, repo: "hexpm", optional: false]}], "hexpm", "505e8cd81e4f17c090be0f99e92b1b3f0fd915f98e76965130b8ccfb891e7088"},
|
||||
"ecto_sql": {:hex, :ecto_sql, "3.10.1", "6ea6b3036a0b0ca94c2a02613fd9f742614b5cfe494c41af2e6571bb034dd94c", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.10.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f6a25bdbbd695f12c8171eaff0851fa4c8e72eec1e98c7364402dda9ce11c56b"},
|
||||
"elixir_make": {:hex, :elixir_make, "0.7.6", "67716309dc5d43e16b5abbd00c01b8df6a0c2ab54a8f595468035a50189f9169", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}], "hexpm", "5a0569756b0f7873a77687800c164cca6dfc03a09418e6fcf853d78991f49940"},
|
||||
"cowlib": {:hex, :cowlib, "2.12.1", "a9fa9a625f1d2025fe6b462cb865881329b5caff8f1854d1cbc9f9533f00e1e1", [:make, :rebar3], [], "hexpm", "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0"},
|
||||
"credo": {:hex, :credo, "1.7.5", "643213503b1c766ec0496d828c90c424471ea54da77c8a168c725686377b9545", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "f799e9b5cd1891577d8c773d245668aa74a2fcd15eb277f51a0131690ebfb3fd"},
|
||||
"db_connection": {:hex, :db_connection, "2.6.0", "77d835c472b5b67fc4f29556dee74bf511bbafecdcaf98c27d27fa5918152086", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c2f992d15725e721ec7fbc1189d4ecdb8afef76648c746a8e1cad35e3b8a35f3"},
|
||||
"decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"},
|
||||
"dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"},
|
||||
"earmark_parser": {:hex, :earmark_parser, "1.4.39", "424642f8335b05bb9eb611aa1564c148a8ee35c9c8a8bba6e129d51a3e3c6769", [:mix], [], "hexpm", "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944"},
|
||||
"ecto": {:hex, :ecto, "3.11.1", "4b4972b717e7ca83d30121b12998f5fcdc62ba0ed4f20fd390f16f3270d85c3e", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ebd3d3772cd0dfcd8d772659e41ed527c28b2a8bde4b00fe03e0463da0f1983b"},
|
||||
"ecto_psql_extras": {:hex, :ecto_psql_extras, "0.7.15", "0fc29dbae0e444a29bd6abeee4cf3c4c037e692a272478a234a1cc765077dbb1", [:mix], [{:ecto_sql, "~> 3.7", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0", [hex: :postgrex, repo: "hexpm", optional: false]}, {:table_rex, "~> 3.1.1 or ~> 4.0.0", [hex: :table_rex, repo: "hexpm", optional: false]}], "hexpm", "b6127f3a5c6fc3d84895e4768cc7c199f22b48b67d6c99b13fbf4a374e73f039"},
|
||||
"ecto_sql": {:hex, :ecto_sql, "3.11.1", "e9abf28ae27ef3916b43545f9578b4750956ccea444853606472089e7d169470", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.11.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ce14063ab3514424276e7e360108ad6c2308f6d88164a076aac8a387e1fea634"},
|
||||
"elixir_make": {:hex, :elixir_make, "0.7.8", "505026f266552ee5aabca0b9f9c229cbb496c689537c9f922f3eb5431157efc7", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.0", [hex: :certifi, repo: "hexpm", optional: true]}], "hexpm", "7a71945b913d37ea89b06966e1342c85cfe549b15e6d6d081e8081c493062c07"},
|
||||
"eqrcode": {:hex, :eqrcode, "0.1.10", "6294fece9d68ad64eef1c3c92cf111cfd6469f4fbf230a2d4cc905a682178f3f", [:mix], [], "hexpm", "da30e373c36a0fd37ab6f58664b16029919896d6c45a68a95cc4d713e81076f1"},
|
||||
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
|
||||
"ex_doc": {:hex, :ex_doc, "0.29.4", "6257ecbb20c7396b1fe5accd55b7b0d23f44b6aa18017b415cb4c2b91d997729", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "2c6699a737ae46cb61e4ed012af931b57b699643b24dabe2400a8168414bc4f5"},
|
||||
"expo": {:hex, :expo, "0.4.1", "1c61d18a5df197dfda38861673d392e642649a9cef7694d2f97a587b2cfb319b", [:mix], [], "hexpm", "2ff7ba7a798c8c543c12550fa0e2cbc81b95d4974c65855d8d15ba7b37a1ce47"},
|
||||
"ex_doc": {:hex, :ex_doc, "0.31.1", "8a2355ac42b1cc7b2379da9e40243f2670143721dd50748bf6c3b1184dae2089", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.1", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "3178c3a407c557d8343479e1ff117a96fd31bafe52a039079593fb0524ef61b0"},
|
||||
"expo": {:hex, :expo, "0.5.2", "beba786aab8e3c5431813d7a44b828e7b922bfa431d6bfbada0904535342efe2", [:mix], [], "hexpm", "8c9bfa06ca017c9cb4020fabe980bc7fdb1aaec059fd004c2ab3bff03b1c599c"},
|
||||
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
|
||||
"floki": {:hex, :floki, "0.34.2", "5fad07ef153b3b8ec110b6b155ec3780c4b2c4906297d0b4be1a7162d04a7e02", [:mix], [], "hexpm", "26b9d50f0f01796bc6be611ca815c5e0de034d2128e39cc9702eee6b66a4d1c8"},
|
||||
"floki": {:hex, :floki, "0.35.4", "cc947b446024732c07274ac656600c5c4dc014caa1f8fb2dfff93d275b83890d", [:mix], [], "hexpm", "27fa185d3469bd8fc5947ef0f8d5c4e47f0af02eb6b070b63c868f69e3af0204"},
|
||||
"gen_smtp": {:hex, :gen_smtp, "1.2.0", "9cfc75c72a8821588b9b9fe947ae5ab2aed95a052b81237e0928633a13276fd3", [:rebar3], [{:ranch, ">= 1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "5ee0375680bca8f20c4d85f58c2894441443a743355430ff33a783fe03296779"},
|
||||
"gettext": {:hex, :gettext, "0.22.1", "e7942988383c3d9eed4bdc22fc63e712b655ae94a672a27e4900e3d4a2c43581", [:mix], [{:expo, "~> 0.4.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "ad105b8dab668ee3f90c0d3d94ba75e9aead27a62495c101d94f2657a190ac5d"},
|
||||
"jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"},
|
||||
"makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"},
|
||||
"gettext": {:hex, :gettext, "0.24.0", "6f4d90ac5f3111673cbefc4ebee96fe5f37a114861ab8c7b7d5b30a1108ce6d8", [:mix], [{:expo, "~> 0.5.1", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "bdf75cdfcbe9e4622dd18e034b227d77dd17f0f133853a1c73b97b3d6c770e8b"},
|
||||
"jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"},
|
||||
"makeup": {:hex, :makeup, "1.1.1", "fa0bc768698053b2b3869fa8a62616501ff9d11a562f3ce39580d60860c3a55e", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "5dc62fbdd0de44de194898b6710692490be74baa02d9d108bc29f007783b0b48"},
|
||||
"makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"},
|
||||
"makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"},
|
||||
"mime": {:hex, :mime, "2.0.3", "3676436d3d1f7b81b5a2d2bd8405f412c677558c81b1c92be58c00562bb59095", [:mix], [], "hexpm", "27a30bf0db44d25eecba73755acf4068cbfe26a4372f9eb3e4ea3a45956bff6b"},
|
||||
"nimble_parsec": {:hex, :nimble_parsec, "1.3.0", "9e18a119d9efc3370a3ef2a937bf0b24c088d9c4bf0ba9d7c3751d49d347d035", [:mix], [], "hexpm", "7977f183127a7cbe9346981e2f480dc04c55ffddaef746bd58debd566070eef8"},
|
||||
"oban": {:hex, :oban, "2.15.0", "27b9c2845cdff30c98c8060b11a64318e79bbc1bd32b8dc95fa59a1580a8d90c", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "22e181c540335d1dd5c995be00435927075519207d62b3de32477d95dbf9dfd3"},
|
||||
"phoenix": {:hex, :phoenix, "1.7.2", "c375ffb482beb4e3d20894f84dd7920442884f5f5b70b9f4528cbe0cedefec63", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.4", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "1ebca94b32b4d0e097ab2444a9742ed8ff3361acad17365e4e6b2e79b4792159"},
|
||||
"phoenix_ecto": {:hex, :phoenix_ecto, "4.4.0", "0672ed4e4808b3fbed494dded89958e22fb882de47a97634c0b13e7b0b5f7720", [:mix], [{:ecto, "~> 3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "09864e558ed31ee00bd48fcc1d4fc58ae9678c9e81649075431e69dbabb43cc1"},
|
||||
"phoenix_html": {:hex, :phoenix_html, "3.3.1", "4788757e804a30baac6b3fc9695bf5562465dd3f1da8eb8460ad5b404d9a2178", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "bed1906edd4906a15fd7b412b85b05e521e1f67c9a85418c55999277e553d0d3"},
|
||||
"phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.7.2", "97cc4ff2dba1ebe504db72cb45098cb8e91f11160528b980bd282cc45c73b29c", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.18.3", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "0e5fdf063c7a3b620c566a30fcf68b7ee02e5e46fe48ee46a6ec3ba382dc05b7"},
|
||||
"makeup_erlang": {:hex, :makeup_erlang, "0.1.4", "29563475afa9b8a2add1b7a9c8fb68d06ca7737648f28398e04461f008b69521", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f4ed47ecda66de70dd817698a703f8816daa91272e7e45812469498614ae8b29"},
|
||||
"mime": {:hex, :mime, "2.0.5", "dc34c8efd439abe6ae0343edbb8556f4d63f178594894720607772a041b04b02", [:mix], [], "hexpm", "da0d64a365c45bc9935cc5c8a7fc5e49a0e0f9932a761c55d6c52b142780a05c"},
|
||||
"nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"},
|
||||
"oban": {:hex, :oban, "2.17.4", "3ebe79dc0cad16f23e5feea418f9bc5b07d453b8fb7caf376d812be96157a5c5", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "71a804abea3bb7e104782a5b5337cbab76c1a56b9689a6d5159a3873c93898b6"},
|
||||
"phoenix": {:hex, :phoenix, "1.7.11", "1d88fc6b05ab0c735b250932c4e6e33bfa1c186f76dcf623d8dd52f07d6379c7", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "b1ec57f2e40316b306708fe59b92a16b9f6f4bf50ccfa41aa8c7feb79e0ec02a"},
|
||||
"phoenix_ecto": {:hex, :phoenix_ecto, "4.4.3", "86e9878f833829c3f66da03d75254c155d91d72a201eb56ae83482328dc7ca93", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "d36c401206f3011fefd63d04e8ef626ec8791975d9d107f9a0817d426f61ac07"},
|
||||
"phoenix_html": {:hex, :phoenix_html, "4.0.0", "4857ec2edaccd0934a923c2b0ba526c44a173c86b847e8db725172e9e51d11d6", [:mix], [], "hexpm", "cee794a052f243291d92fa3ccabcb4c29bb8d236f655fb03bcbdc3a8214b8d13"},
|
||||
"phoenix_html_helpers": {:hex, :phoenix_html_helpers, "1.0.1", "7eed85c52eff80a179391036931791ee5d2f713d76a81d0d2c6ebafe1e11e5ec", [:mix], [{:phoenix_html, "~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "cffd2385d1fa4f78b04432df69ab8da63dc5cf63e07b713a4dcf36a3740e3090"},
|
||||
"phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.8.3", "7ff51c9b6609470f681fbea20578dede0e548302b0c8bdf338b5a753a4f045bf", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:ecto_sqlite3_extras, "~> 1.1.7 or ~> 1.2.0", [hex: :ecto_sqlite3_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19 or ~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "f9470a0a8bae4f56430a23d42f977b5a6205fdba6559d76f932b876bfaec652d"},
|
||||
"phoenix_live_reload": {:hex, :phoenix_live_reload, "1.4.1", "2aff698f5e47369decde4357ba91fc9c37c6487a512b41732818f2204a8ef1d3", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "9bffb834e7ddf08467fe54ae58b5785507aaba6255568ae22b4d46e2bb3615ab"},
|
||||
"phoenix_live_view": {:hex, :phoenix_live_view, "0.18.18", "1f38fbd7c363723f19aad1a04b5490ff3a178e37daaf6999594d5f34796c47fc", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a5810d0472f3189ede6d2a95bda7f31c6113156b91784a3426cb0ab6a6d85214"},
|
||||
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.1", "ba04e489ef03763bf28a17eb2eaddc2c20c6d217e2150a61e3298b0f4c2012b5", [:mix], [], "hexpm", "81367c6d1eea5878ad726be80808eb5a787a23dee699f96e72b1109c57cdd8d9"},
|
||||
"phoenix_template": {:hex, :phoenix_template, "1.0.1", "85f79e3ad1b0180abb43f9725973e3b8c2c3354a87245f91431eec60553ed3ef", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "157dc078f6226334c91cb32c1865bf3911686f8bcd6bcff86736f6253e6993ee"},
|
||||
"plug": {:hex, :plug, "1.14.2", "cff7d4ec45b4ae176a227acd94a7ab536d9b37b942c8e8fa6dfc0fff98ff4d80", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "842fc50187e13cf4ac3b253d47d9474ed6c296a8732752835ce4a86acdf68d13"},
|
||||
"plug_cowboy": {:hex, :plug_cowboy, "2.6.1", "9a3bbfceeb65eff5f39dab529e5cd79137ac36e913c02067dba3963a26efe9b2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613"},
|
||||
"plug_crypto": {:hex, :plug_crypto, "1.2.5", "918772575e48e81e455818229bf719d4ab4181fcbf7f85b68a35620f78d89ced", [:mix], [], "hexpm", "26549a1d6345e2172eb1c233866756ae44a9609bd33ee6f99147ab3fd87fd842"},
|
||||
"postgrex": {:hex, :postgrex, "0.16.5", "fcc4035cc90e23933c5d69a9cd686e329469446ef7abba2cf70f08e2c4b69810", [:mix], [{:connection, "~> 1.1", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "edead639dc6e882618c01d8fc891214c481ab9a3788dfe38dd5e37fd1d5fb2e8"},
|
||||
"phoenix_live_view": {:hex, :phoenix_live_view, "0.20.9", "46d5d436d3f8ff97f066b6c45528fd842a711fd3875b2d3f706b2e769ea07c51", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "694388615ece21b70c523910cba1c633132b08a270caaf60100dd4eaf331885d"},
|
||||
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"},
|
||||
"phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"},
|
||||
"plug": {:hex, :plug, "1.15.3", "712976f504418f6dff0a3e554c40d705a9bcf89a7ccef92fc6a5ef8f16a30a97", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "cc4365a3c010a56af402e0809208873d113e9c38c401cabd88027ef4f5c01fd2"},
|
||||
"plug_cowboy": {:hex, :plug_cowboy, "2.7.0", "3ae9369c60641084363b08fe90267cbdd316df57e3557ea522114b30b63256ea", [:mix], [{:cowboy, "~> 2.7.0 or ~> 2.8.0 or ~> 2.9.0 or ~> 2.10.0", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "d85444fb8aa1f2fc62eabe83bbe387d81510d773886774ebdcb429b3da3c1a4a"},
|
||||
"plug_crypto": {:hex, :plug_crypto, "2.0.0", "77515cc10af06645abbfb5e6ad7a3e9714f805ae118fa1a70205f80d2d70fe73", [:mix], [], "hexpm", "53695bae57cc4e54566d993eb01074e4d894b65a3766f1c43e2c61a1b0f45ea9"},
|
||||
"postgrex": {:hex, :postgrex, "0.17.4", "5777781f80f53b7c431a001c8dad83ee167bcebcf3a793e3906efff680ab62b3", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "6458f7d5b70652bc81c3ea759f91736c16a31be000f306d3c64bcdfe9a18b3cc"},
|
||||
"ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"},
|
||||
"swoosh": {:hex, :swoosh, "1.9.1", "0a5d7bf9954eb41d7e55525bc0940379982b090abbaef67cd8e1fd2ed7f8ca1a", [:mix], [{:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "76dffff3ffcab80f249d5937a592eaef7cc49ac6f4cdd27e622868326ed6371e"},
|
||||
"table_rex": {:hex, :table_rex, "3.1.1", "0c67164d1714b5e806d5067c1e96ff098ba7ae79413cc075973e17c38a587caa", [:mix], [], "hexpm", "678a23aba4d670419c23c17790f9dcd635a4a89022040df7d5d772cb21012490"},
|
||||
"swoosh": {:hex, :swoosh, "1.15.2", "490ea85a98e8fb5178c07039e0d8519839e38127724a58947a668c00db7574ee", [:mix], [{:bandit, ">= 1.0.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:req, "~> 0.4 or ~> 1.0", [hex: :req, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "9f7739c02f6c7c0ca82ee397f3bfe0465dbe4c8a65372ac2a5584bf147dd5831"},
|
||||
"table_rex": {:hex, :table_rex, "4.0.0", "3c613a68ebdc6d4d1e731bc973c233500974ec3993c99fcdabb210407b90959b", [:mix], [], "hexpm", "c35c4d5612ca49ebb0344ea10387da4d2afe278387d4019e4d8111e815df8f55"},
|
||||
"telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"},
|
||||
"telemetry_metrics": {:hex, :telemetry_metrics, "0.6.1", "315d9163a1d4660aedc3fee73f33f1d355dcc76c5c3ab3d59e76e3edf80eef1f", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7be9e0871c41732c233be71e4be11b96e56177bf15dde64a8ac9ce72ac9834c6"},
|
||||
"telemetry_metrics": {:hex, :telemetry_metrics, "0.6.2", "2caabe9344ec17eafe5403304771c3539f3b6e2f7fb6a6f602558c825d0d0bfb", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "9b43db0dc33863930b9ef9d27137e78974756f5f198cae18409970ed6fa5b561"},
|
||||
"telemetry_poller": {:hex, :telemetry_poller, "1.0.0", "db91bb424e07f2bb6e73926fcafbfcbcb295f0193e0a00e825e589a0a47e8453", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e"},
|
||||
"websock": {:hex, :websock, "0.5.0", "f6bbce90226121d62a0715bca7c986c5e43de0ccc9475d79c55381d1796368cc", [:mix], [], "hexpm", "b51ac706df8a7a48a2c622ee02d09d68be8c40418698ffa909d73ae207eb5fb8"},
|
||||
"websock_adapter": {:hex, :websock_adapter, "0.5.0", "cea35d8bbf1a6964e32d4b02ceb561dfb769c04f16d60d743885587e7d2ca55b", [:mix], [{:bandit, "~> 0.6", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "16318b124effab8209b1eb7906c636374f623dc9511a8278ad09c083cea5bb83"},
|
||||
"websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"},
|
||||
"websock_adapter": {:hex, :websock_adapter, "0.5.5", "9dfeee8269b27e958a65b3e235b7e447769f66b5b5925385f5a569269164a210", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "4b977ba4a01918acbf77045ff88de7f6972c2a009213c515a445c48f224ffce9"},
|
||||
}
|
||||
|
@ -44,8 +44,8 @@ msgstr ""
|
||||
#: lib/memex_web/live/note_live/index.html.heex:50
|
||||
#: lib/memex_web/live/note_live/show.html.heex:34
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:52
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:41
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:112
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:34
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:105
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete"
|
||||
msgstr ""
|
||||
@ -60,8 +60,8 @@ msgstr ""
|
||||
#: lib/memex_web/live/note_live/index.html.heex:40
|
||||
#: lib/memex_web/live/note_live/show.html.heex:24
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:40
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:31
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:101
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:24
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:94
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "edit"
|
||||
msgstr ""
|
||||
@ -108,16 +108,16 @@ msgstr ""
|
||||
msgid "register"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:43
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:32
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:43
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:29
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:51
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:47
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:49
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:55
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:38
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "save"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:127
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:120
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "add step"
|
||||
msgstr ""
|
||||
@ -162,12 +162,12 @@ msgid "delete %{note_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:49
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:39
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:32
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{pipeline_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:110
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:103
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{step_title}"
|
||||
msgstr ""
|
||||
@ -192,7 +192,7 @@ msgstr ""
|
||||
msgid "edit %{pipeline_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:99
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:92
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "edit %{step_title}"
|
||||
msgstr ""
|
||||
@ -202,12 +202,12 @@ msgstr ""
|
||||
msgid "edit invite for %{invite_name}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:89
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:82
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "move %{step_title} down"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:73
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:66
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "move %{step_title} up"
|
||||
msgstr ""
|
||||
|
@ -44,8 +44,8 @@ msgstr ""
|
||||
#: lib/memex_web/live/note_live/index.html.heex:50
|
||||
#: lib/memex_web/live/note_live/show.html.heex:34
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:52
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:41
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:112
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:34
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:105
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete"
|
||||
msgstr ""
|
||||
@ -60,8 +60,8 @@ msgstr ""
|
||||
#: lib/memex_web/live/note_live/index.html.heex:40
|
||||
#: lib/memex_web/live/note_live/show.html.heex:24
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:40
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:31
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:101
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:24
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:94
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "edit"
|
||||
msgstr ""
|
||||
@ -108,16 +108,16 @@ msgstr ""
|
||||
msgid "register"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:43
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:32
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:43
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:29
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:51
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:47
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:49
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:55
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:38
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "save"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:127
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:120
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "add step"
|
||||
msgstr ""
|
||||
@ -162,12 +162,12 @@ msgid "delete %{note_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:49
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:39
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:32
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{pipeline_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:110
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:103
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{step_title}"
|
||||
msgstr ""
|
||||
@ -192,7 +192,7 @@ msgstr ""
|
||||
msgid "edit %{pipeline_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:99
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:92
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "edit %{step_title}"
|
||||
msgstr ""
|
||||
@ -202,12 +202,12 @@ msgstr ""
|
||||
msgid "edit invite for %{invite_name}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:89
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:82
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "move %{step_title} down"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:73
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:66
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "move %{step_title} up"
|
||||
msgstr ""
|
||||
|
@ -12,14 +12,14 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Translate Toolkit 3.7.4\n"
|
||||
|
||||
#: lib/memex_web/components/layouts/live.html.heex:43
|
||||
#: lib/memex_web/components/layouts/app.html.heex:43
|
||||
#, elixir-autogen, elixir-format
|
||||
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:22
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:15
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Visibility: %{visibility}"
|
||||
msgstr ""
|
||||
@ -45,12 +45,6 @@ msgstr ""
|
||||
msgid "confirm new password"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:23
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:24
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "content"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/components/core_components/topbar.html.heex:28
|
||||
#: lib/memex_web/live/context_live/index.ex:35
|
||||
#: lib/memex_web/live/context_live/index.ex:43
|
||||
@ -228,7 +222,7 @@ msgstr ""
|
||||
msgid "public signups"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:31
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:32
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "register"
|
||||
msgstr ""
|
||||
@ -243,20 +237,20 @@ msgstr ""
|
||||
msgid "report bugs or request features"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:30
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:52
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:50
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:56
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:39
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "saving..."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:40
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:40
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:40
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:46
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:47
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:45
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:50
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:51
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "select privacy"
|
||||
msgstr ""
|
||||
@ -272,12 +266,12 @@ msgstr ""
|
||||
msgid "settings"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:31
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:32
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:31
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:34
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:32
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:31
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:32
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:37
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:38
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "tag1,tag2"
|
||||
msgstr ""
|
||||
@ -334,8 +328,6 @@ 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
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:24
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
@ -387,12 +379,12 @@ 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/context_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:17
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:17
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:17
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
@ -409,12 +401,6 @@ msgstr ""
|
||||
msgid "home"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:23
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:24
|
||||
#, 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
|
||||
@ -436,7 +422,7 @@ msgstr ""
|
||||
msgid "what is this?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:59
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:52
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "%{position}. %{title}"
|
||||
msgstr ""
|
||||
@ -461,28 +447,22 @@ msgstr ""
|
||||
msgid "add step to %{slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:53
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:46
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "no steps"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:48
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:41
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "steps:"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:17
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:23
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:24
|
||||
#, 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!"
|
||||
@ -658,7 +638,7 @@ msgstr ""
|
||||
msgid "keep me logged in for 60 days"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:21
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:22
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "name"
|
||||
msgstr ""
|
||||
@ -669,12 +649,12 @@ msgstr ""
|
||||
msgid "password"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:32
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "uses left"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:29
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:44
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "leave \"uses left\" blank to make invite unlimited"
|
||||
msgstr ""
|
||||
@ -711,3 +691,23 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "reset your password"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:30
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:30
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "use [[[note-slug]]] to link to a note or use [[context-slug]] to link to a context or [pipeline-slug] to link to a pipeline"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:28
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "use [[note-slug]] to link to a note or [context-slug] to link to a context"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:26
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "use [note-slug] to link to a note"
|
||||
msgstr ""
|
||||
|
@ -79,13 +79,6 @@ msgstr ""
|
||||
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, fuzzy
|
||||
msgid "invalid format: only numbers, letters and hyphen are accepted. tags must be comma-delimited"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/controllers/user_registration_html/new.html.heex:13
|
||||
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:13
|
||||
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:64
|
||||
@ -93,9 +86,9 @@ msgstr ""
|
||||
msgid "oops, something went wrong! please check the errors below."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:11
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:40
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:69
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:12
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:41
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:70
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "sorry, this invite was not found or expired"
|
||||
msgstr ""
|
||||
@ -136,8 +129,8 @@ msgstr ""
|
||||
msgid "reset password link is invalid or it has expired."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:21
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:50
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:22
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:51
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "sorry, public registration is disabled"
|
||||
msgstr ""
|
||||
@ -146,3 +139,10 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "user confirmation link is invalid or it has expired."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex/contexts/context.ex:84
|
||||
#: lib/memex/notes/note.ex:83
|
||||
#: lib/memex/pipelines/pipeline.ex:86
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "invalid format: only numbers, letters and hyphen are accepted. tags must be comma or space delimited"
|
||||
msgstr ""
|
||||
|
@ -70,8 +70,8 @@ msgstr ""
|
||||
#: lib/memex_web/live/note_live/index.html.heex:47
|
||||
#: lib/memex_web/live/note_live/show.html.heex:31
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:47
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:38
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:109
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:31
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:102
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "are you sure?"
|
||||
msgstr ""
|
||||
@ -106,7 +106,7 @@ msgstr ""
|
||||
msgid "copied to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:64
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:65
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "please check your email to verify your account"
|
||||
msgstr ""
|
||||
@ -137,7 +137,7 @@ msgstr ""
|
||||
msgid "are you sure you want to delete %{email}? this action is permanent!"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:34
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:49
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "saving..."
|
||||
msgstr ""
|
||||
|
@ -10,14 +10,14 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/components/layouts/live.html.heex:43
|
||||
#: lib/memex_web/components/layouts/app.html.heex:43
|
||||
#, elixir-autogen, elixir-format
|
||||
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:22
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:15
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Visibility: %{visibility}"
|
||||
msgstr ""
|
||||
@ -43,12 +43,6 @@ msgstr ""
|
||||
msgid "confirm new password"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:23
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:24
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "content"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/components/core_components/topbar.html.heex:28
|
||||
#: lib/memex_web/live/context_live/index.ex:35
|
||||
#: lib/memex_web/live/context_live/index.ex:43
|
||||
@ -226,7 +220,7 @@ msgstr ""
|
||||
msgid "public signups"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:31
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:32
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "register"
|
||||
msgstr ""
|
||||
@ -241,20 +235,20 @@ msgstr ""
|
||||
msgid "report bugs or request features"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:30
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:52
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:50
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:56
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:39
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "saving..."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:40
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:40
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:40
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:46
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:47
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:45
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:50
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:51
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "select privacy"
|
||||
msgstr ""
|
||||
@ -270,12 +264,12 @@ msgstr ""
|
||||
msgid "settings"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:31
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:32
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:31
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:34
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:32
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:31
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:32
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:37
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:38
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "tag1,tag2"
|
||||
msgstr ""
|
||||
@ -332,8 +326,6 @@ 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
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:24
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
@ -385,12 +377,12 @@ 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/context_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:17
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:17
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:17
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
@ -407,12 +399,6 @@ msgstr ""
|
||||
msgid "home"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:23
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:24
|
||||
#, 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
|
||||
@ -434,7 +420,7 @@ msgstr ""
|
||||
msgid "what is this?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:59
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:52
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "%{position}. %{title}"
|
||||
msgstr ""
|
||||
@ -459,28 +445,22 @@ msgstr ""
|
||||
msgid "add step to %{slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:53
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:46
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "no steps"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:48
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:41
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "steps:"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:17
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:23
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:24
|
||||
#, 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!"
|
||||
@ -656,7 +636,7 @@ msgstr ""
|
||||
msgid "keep me logged in for 60 days"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:21
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:22
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "name"
|
||||
msgstr ""
|
||||
@ -667,12 +647,12 @@ msgstr ""
|
||||
msgid "password"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:32
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "uses left"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:29
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:44
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "leave \"uses left\" blank to make invite unlimited"
|
||||
msgstr ""
|
||||
@ -709,3 +689,23 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "reset your password"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:30
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:30
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "use [[[note-slug]]] to link to a note or use [[context-slug]] to link to a context or [pipeline-slug] to link to a pipeline"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:28
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "use [[note-slug]] to link to a note or [context-slug] to link to a context"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:26
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "use [note-slug] to link to a note"
|
||||
msgstr ""
|
||||
|
@ -45,8 +45,8 @@ msgstr ""
|
||||
#: lib/memex_web/live/note_live/index.html.heex:50
|
||||
#: lib/memex_web/live/note_live/show.html.heex:34
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:52
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:41
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:112
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:34
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:105
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete"
|
||||
msgstr ""
|
||||
@ -61,8 +61,8 @@ msgstr ""
|
||||
#: lib/memex_web/live/note_live/index.html.heex:40
|
||||
#: lib/memex_web/live/note_live/show.html.heex:24
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:40
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:31
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:101
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:24
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:94
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "edit"
|
||||
msgstr ""
|
||||
@ -109,16 +109,16 @@ msgstr ""
|
||||
msgid "register"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:43
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:32
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:43
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:29
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:51
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:47
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:49
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:55
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:38
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "save"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:127
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:120
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "add step"
|
||||
msgstr ""
|
||||
@ -163,12 +163,12 @@ msgid "delete %{note_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:49
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:39
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:32
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{pipeline_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:110
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:103
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "delete %{step_title}"
|
||||
msgstr ""
|
||||
@ -193,7 +193,7 @@ msgstr ""
|
||||
msgid "edit %{pipeline_slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:99
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:92
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "edit %{step_title}"
|
||||
msgstr ""
|
||||
@ -203,12 +203,12 @@ msgstr ""
|
||||
msgid "edit invite for %{invite_name}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:89
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:82
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "move %{step_title} down"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:73
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:66
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "move %{step_title} up"
|
||||
msgstr ""
|
||||
|
@ -11,14 +11,14 @@ msgstr ""
|
||||
"Language: en\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: lib/memex_web/components/layouts/live.html.heex:43
|
||||
#: lib/memex_web/components/layouts/app.html.heex:43
|
||||
#, elixir-autogen, elixir-format
|
||||
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:22
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:15
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Visibility: %{visibility}"
|
||||
msgstr ""
|
||||
@ -44,12 +44,6 @@ msgstr ""
|
||||
msgid "confirm new password"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:23
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:24
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "content"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/components/core_components/topbar.html.heex:28
|
||||
#: lib/memex_web/live/context_live/index.ex:35
|
||||
#: lib/memex_web/live/context_live/index.ex:43
|
||||
@ -227,7 +221,7 @@ msgstr ""
|
||||
msgid "public signups"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:31
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:32
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "register"
|
||||
msgstr ""
|
||||
@ -242,20 +236,20 @@ msgstr ""
|
||||
msgid "report bugs or request features"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:30
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:52
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:50
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:56
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:39
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "saving..."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:40
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:40
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:40
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:46
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:47
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:45
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:50
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:51
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "select privacy"
|
||||
msgstr ""
|
||||
@ -271,12 +265,12 @@ msgstr ""
|
||||
msgid "settings"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:31
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:32
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:31
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:34
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:32
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:31
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:32
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:37
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:38
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "tag1,tag2"
|
||||
msgstr ""
|
||||
@ -333,8 +327,6 @@ 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
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:24
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
@ -386,12 +378,12 @@ 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/context_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:17
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:17
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:17
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
@ -408,12 +400,6 @@ msgstr ""
|
||||
msgid "home"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:23
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:24
|
||||
#, 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
|
||||
@ -435,7 +421,7 @@ msgstr ""
|
||||
msgid "what is this?"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:59
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:52
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "%{position}. %{title}"
|
||||
msgstr ""
|
||||
@ -460,28 +446,22 @@ msgstr ""
|
||||
msgid "add step to %{slug}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:53
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:46
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "no steps"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:48
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:41
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "steps:"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:17
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:23
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:24
|
||||
#, 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!"
|
||||
@ -657,7 +637,7 @@ msgstr ""
|
||||
msgid "keep me logged in for 60 days"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:21
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:22
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "name"
|
||||
msgstr ""
|
||||
@ -668,12 +648,12 @@ msgstr ""
|
||||
msgid "password"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:32
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "uses left"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:29
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:44
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "leave \"uses left\" blank to make invite unlimited"
|
||||
msgstr ""
|
||||
@ -710,3 +690,23 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "reset your password"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:30
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:30
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "use [[[note-slug]]] to link to a note or use [[context-slug]] to link to a context or [pipeline-slug] to link to a pipeline"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:28
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "use [[note-slug]] to link to a note or [context-slug] to link to a context"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:26
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "use [note-slug] to link to a note"
|
||||
msgstr ""
|
||||
|
@ -80,13 +80,6 @@ msgstr ""
|
||||
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/controllers/user_registration_html/new.html.heex:13
|
||||
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:13
|
||||
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:64
|
||||
@ -94,9 +87,9 @@ msgstr ""
|
||||
msgid "oops, something went wrong! please check the errors below."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:11
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:40
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:69
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:12
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:41
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:70
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "sorry, this invite was not found or expired"
|
||||
msgstr ""
|
||||
@ -137,8 +130,8 @@ msgstr ""
|
||||
msgid "reset password link is invalid or it has expired."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:21
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:50
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:22
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:51
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "sorry, public registration is disabled"
|
||||
msgstr ""
|
||||
@ -147,3 +140,10 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "user confirmation link is invalid or it has expired."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex/contexts/context.ex:84
|
||||
#: lib/memex/notes/note.ex:83
|
||||
#: lib/memex/pipelines/pipeline.ex:86
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "invalid format: only numbers, letters and hyphen are accepted. tags must be comma or space delimited"
|
||||
msgstr ""
|
||||
|
@ -71,8 +71,8 @@ msgstr ""
|
||||
#: lib/memex_web/live/note_live/index.html.heex:47
|
||||
#: lib/memex_web/live/note_live/show.html.heex:31
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:47
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:38
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:109
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:31
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:102
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "are you sure?"
|
||||
msgstr ""
|
||||
@ -107,7 +107,7 @@ msgstr ""
|
||||
msgid "copied to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:64
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:65
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "please check your email to verify your account"
|
||||
msgstr ""
|
||||
@ -138,7 +138,7 @@ msgstr ""
|
||||
msgid "are you sure you want to delete %{email}? this action is permanent!"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:34
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:49
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "saving..."
|
||||
msgstr ""
|
||||
|
@ -79,13 +79,6 @@ msgstr ""
|
||||
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/controllers/user_registration_html/new.html.heex:13
|
||||
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:13
|
||||
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:64
|
||||
@ -93,9 +86,9 @@ msgstr ""
|
||||
msgid "oops, something went wrong! please check the errors below."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:11
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:40
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:69
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:12
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:41
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:70
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "sorry, this invite was not found or expired"
|
||||
msgstr ""
|
||||
@ -136,8 +129,8 @@ msgstr ""
|
||||
msgid "reset password link is invalid or it has expired."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:21
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:50
|
||||
#: 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 ""
|
||||
@ -146,3 +139,10 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "user confirmation link is invalid or it has expired."
|
||||
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 or space delimited"
|
||||
msgstr ""
|
||||
|
@ -70,8 +70,8 @@ msgstr ""
|
||||
#: lib/memex_web/live/note_live/index.html.heex:47
|
||||
#: lib/memex_web/live/note_live/show.html.heex:31
|
||||
#: lib/memex_web/live/pipeline_live/index.html.heex:47
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:38
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:109
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:31
|
||||
#: lib/memex_web/live/pipeline_live/show.html.heex:102
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "are you sure?"
|
||||
msgstr ""
|
||||
@ -106,7 +106,7 @@ msgstr ""
|
||||
msgid "copied to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:64
|
||||
#: lib/memex_web/controllers/user_registration_controller.ex:65
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "please check your email to verify your account"
|
||||
msgstr ""
|
||||
@ -137,7 +137,7 @@ msgstr ""
|
||||
msgid "are you sure you want to delete %{email}? this action is permanent!"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:34
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:49
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "saving..."
|
||||
msgstr ""
|
||||
|
@ -17,7 +17,7 @@ defmodule MemexWeb.ContextLiveTest do
|
||||
}
|
||||
@invalid_attrs %{
|
||||
content: nil,
|
||||
tags_string: "invalid tags",
|
||||
tags_string: "invalid_tag or_tags",
|
||||
slug: nil,
|
||||
visibility: nil
|
||||
}
|
||||
@ -114,7 +114,7 @@ defmodule MemexWeb.ContextLiveTest do
|
||||
|> render_change(context: @invalid_attrs)
|
||||
|
||||
assert html =~ "can't be blank"
|
||||
assert html =~ "tags must be comma-delimited"
|
||||
assert html =~ "tags must be comma or space delimited"
|
||||
|
||||
{:ok, _live, html} =
|
||||
show_live
|
||||
|
@ -17,7 +17,7 @@ defmodule MemexWeb.NoteLiveTest do
|
||||
}
|
||||
@invalid_attrs %{
|
||||
content: nil,
|
||||
tags_string: "invalid tags",
|
||||
tags_string: "invalid_tag or_tags",
|
||||
slug: nil,
|
||||
visibility: nil
|
||||
}
|
||||
@ -55,7 +55,7 @@ defmodule MemexWeb.NoteLiveTest do
|
||||
|> render_change(note: @invalid_attrs)
|
||||
|
||||
assert html =~ "can't be blank"
|
||||
assert html =~ "tags must be comma-delimited"
|
||||
assert html =~ "tags must be comma or space delimited"
|
||||
|
||||
{:ok, _live, html} =
|
||||
index_live
|
||||
|
@ -17,7 +17,7 @@ defmodule MemexWeb.PipelineLiveTest do
|
||||
}
|
||||
@invalid_attrs %{
|
||||
description: nil,
|
||||
tags_string: "invalid tags",
|
||||
tags_string: "invalid_tag or_tags",
|
||||
slug: nil,
|
||||
visibility: nil
|
||||
}
|
||||
@ -130,7 +130,7 @@ defmodule MemexWeb.PipelineLiveTest do
|
||||
|> render_change(pipeline: @invalid_attrs)
|
||||
|
||||
assert html =~ "can't be blank"
|
||||
assert html =~ "tags must be comma-delimited"
|
||||
assert html =~ "tags must be comma or space delimited"
|
||||
|
||||
{:ok, _live, html} =
|
||||
show_live
|
||||
|
@ -61,7 +61,7 @@ defmodule Memex.DataCase do
|
||||
def valid_user_password, do: "hello world!"
|
||||
|
||||
def random_slug(length \\ 20) do
|
||||
symbols = '0123456789abcdef-'
|
||||
symbols = ~c"0123456789abcdef-"
|
||||
symbol_count = Enum.count(symbols)
|
||||
|
||||
for _ <- Range.new(1, length),
|
||||
|
Reference in New Issue
Block a user