Compare commits

..

No commits in common. "eb48ff7dc0e1b169380256bb2ef59041b7d6216f" and "50be85a1c3f2faf847fdd0568c93f4f01c325dc9" have entirely different histories.

31 changed files with 200 additions and 176 deletions

View File

@ -42,9 +42,7 @@ steps:
repo: shibaobun/memex repo: shibaobun/memex
purge: true purge: true
compress: true compress: true
platforms: platforms: linux/amd64,linux/arm/v7
- linux/amd64
- linux/arm64
username: username:
from_secret: docker_username from_secret: docker_username
password: password:
@ -61,9 +59,7 @@ steps:
repo: shibaobun/memex repo: shibaobun/memex
purge: true purge: true
compress: true compress: true
platforms: platforms: linux/amd64,linux/arm/v7
- linux/amd64
- linux/arm64
username: username:
from_secret: docker_username from_secret: docker_username
password: password:

View File

@ -28,13 +28,14 @@ import { LiveSocket } from 'phoenix_live_view'
import topbar from 'topbar' import topbar from 'topbar'
import Date from './date' import Date from './date'
import DateTime from './datetime' import DateTime from './datetime'
import MaintainAttrs from './maintain_attrs'
const csrfTokenElement = document.querySelector("meta[name='csrf-token']") const csrfTokenElement = document.querySelector("meta[name='csrf-token']")
let csrfToken let csrfToken
if (csrfTokenElement) { csrfToken = csrfTokenElement.getAttribute('content') } if (csrfTokenElement) { csrfToken = csrfTokenElement.getAttribute('content') }
const liveSocket = new LiveSocket('/live', Socket, { const liveSocket = new LiveSocket('/live', Socket, {
params: { _csrf_token: csrfToken }, params: { _csrf_token: csrfToken },
hooks: { Date, DateTime } hooks: { Date, DateTime, MaintainAttrs }
}) })
// Show progress bar on live navigation and form submits // Show progress bar on live navigation and form submits

View File

@ -0,0 +1,22 @@
// maintain user adjusted attributes, like textbox length on phoenix liveview
// update. https://github.com/phoenixframework/phoenix_live_view/issues/1011
export default {
attrs () {
if (this.el && this.el.getAttribute('data-attrs')) {
return this.el.getAttribute('data-attrs').split(', ')
} else {
return []
}
},
beforeUpdate () {
if (this.el) {
this.prevAttrs = this.attrs().map(name => [name, this.el.getAttribute(name)])
}
},
updated () {
if (this.el) {
this.prevAttrs.forEach(([name, val]) => this.el.setAttribute(name, val))
}
}
}

View File

@ -1,9 +1,5 @@
# v0.1.11 # v0.1.11
- Update dependencies - Update dependencies
- ee cummings even more
- Improve tests
- Change invite path slightly
- Build in arm64 and amd64
# v0.1.10 # v0.1.10
- Improve accessibility - Improve accessibility

View File

@ -4,6 +4,7 @@ defmodule MemexWeb.CoreComponents do
""" """
use Phoenix.Component use Phoenix.Component
use MemexWeb, :verified_routes use MemexWeb, :verified_routes
import MemexWeb.{Gettext, HTMLHelpers} import MemexWeb.{Gettext, HTMLHelpers}
alias Memex.{Accounts, Accounts.Invite, Accounts.User} alias Memex.{Accounts, Accounts.Invite, Accounts.User}
alias Memex.Contexts.Context alias Memex.Contexts.Context

View File

@ -1,6 +1,7 @@
<div <div
id={"show-context-content-#{@context.id}"} 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"
phx-hook="MaintainAttrs"
phx-update="ignore" phx-update="ignore"
readonly readonly
phx-no-format phx-no-format

View File

@ -1,6 +1,7 @@
<div <div
id={"show-note-content-#{@note.id}"} 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"
phx-hook="MaintainAttrs"
phx-update="ignore" phx-update="ignore"
readonly readonly
phx-no-format phx-no-format

View File

@ -1,6 +1,7 @@
<div <div
id={"show-step-content-#{@step.id}"} 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"
phx-hook="MaintainAttrs"
phx-update="ignore" phx-update="ignore"
readonly readonly
phx-no-format phx-no-format

View File

@ -1,6 +1,6 @@
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4"> <div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4">
<h1 class="title text-primary-400 text-xl"> <h1 class="title text-primary-400 text-xl">
<%= dgettext("actions", "reset password") %> <%= dgettext("actions", "Reset password") %>
</h1> </h1>
<.form <.form
@ -26,7 +26,7 @@
) %> ) %>
<%= error_tag(f, :password_confirmation, "col-span-3") %> <%= error_tag(f, :password_confirmation, "col-span-3") %>
<%= submit(dgettext("actions", "reset password"), <%= submit(dgettext("actions", "Reset password"),
class: "mx-auto btn btn-primary col-span-3" class: "mx-auto btn btn-primary col-span-3"
) %> ) %>
</.form> </.form>

View File

@ -19,6 +19,7 @@
<%= textarea(f, :content, <%= textarea(f, :content,
id: "context-form-content", id: "context-form-content",
class: "input input-primary h-64 min-h-64", class: "input input-primary h-64 min-h-64",
phx_hook: "MaintainAttrs",
phx_update: "ignore", phx_update: "ignore",
placeholder: gettext("use [[note-slug]] to link to a note"), placeholder: gettext("use [[note-slug]] to link to a note"),
aria_label: gettext("use [[note-slug]] to link to a note") aria_label: gettext("use [[note-slug]] to link to a note")

View File

@ -35,7 +35,7 @@
</form> </form>
</:code_actions> </:code_actions>
<.link <.link
patch={~p"/invites/edit/#{invite}"} patch={~p"/invites/#{invite}/edit"}
class="text-primary-400 link" class="text-primary-400 link"
aria-label={ aria-label={
dgettext("actions", "edit invite for %{invite_name}", invite_name: invite.name) dgettext("actions", "edit invite for %{invite_name}", invite_name: invite.name)

View File

@ -19,6 +19,7 @@
<%= textarea(f, :content, <%= textarea(f, :content,
id: "note-form-content", id: "note-form-content",
class: "input input-primary h-64 min-h-64", class: "input input-primary h-64 min-h-64",
phx_hook: "MaintainAttrs",
phx_update: "ignore", phx_update: "ignore",
placeholder: gettext("content"), placeholder: gettext("content"),
aria_label: gettext("content") aria_label: gettext("content")

View File

@ -19,6 +19,7 @@
<%= textarea(f, :description, <%= textarea(f, :description,
id: "pipeline-form-description", id: "pipeline-form-description",
class: "input input-primary h-64 min-h-64", class: "input input-primary h-64 min-h-64",
phx_hook: "MaintainAttrs",
phx_update: "ignore", phx_update: "ignore",
placeholder: gettext("description"), placeholder: gettext("description"),
aria_label: gettext("description") aria_label: gettext("description")

View File

@ -13,6 +13,7 @@
:if={@pipeline.description} :if={@pipeline.description}
id="show-pipeline-description" id="show-pipeline-description"
class="input input-primary h-32 min-h-32" class="input input-primary h-32 min-h-32"
phx-hook="MaintainAttrs"
phx-update="ignore" phx-update="ignore"
readonly readonly
phx-no-format phx-no-format

View File

@ -19,6 +19,7 @@
<%= textarea(f, :content, <%= textarea(f, :content,
id: "step-form-content", id: "step-form-content",
class: "input input-primary h-64 min-h-64", class: "input input-primary h-64 min-h-64",
phx_hook: "MaintainAttrs",
phx_update: "ignore", phx_update: "ignore",
placeholder: gettext("use [[context-slug]] to link to a context"), placeholder: gettext("use [[context-slug]] to link to a context"),
aria_label: gettext("use [[context-slug]] to link to a context") aria_label: gettext("use [[context-slug]] to link to a context")

View File

@ -95,7 +95,7 @@ defmodule MemexWeb.Router do
live_session :admin, on_mount: [{MemexWeb.UserAuth, :ensure_admin}] do live_session :admin, on_mount: [{MemexWeb.UserAuth, :ensure_admin}] do
live "/invites", InviteLive.Index, :index live "/invites", InviteLive.Index, :index
live "/invites/new", InviteLive.Index, :new live "/invites/new", InviteLive.Index, :new
live "/invites/edit/:id", InviteLive.Index, :edit live "/invites/:id/edit", InviteLive.Index, :edit
end end
end end

View File

@ -16,6 +16,12 @@ msgstr ""
msgid "Resend confirmation instructions" msgid "Resend confirmation instructions"
msgstr "" msgstr ""
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
#, elixir-autogen, elixir-format
msgid "Reset password"
msgstr ""
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:15 #: lib/memex_web/controllers/user_settings_html/edit.html.heex:15
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:43 #: lib/memex_web/controllers/user_settings_html/edit.html.heex:43
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -44,8 +50,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:50 #: lib/memex_web/live/note_live/index.html.heex:50
#: lib/memex_web/live/note_live/show.html.heex:34 #: lib/memex_web/live/note_live/show.html.heex:34
#: lib/memex_web/live/pipeline_live/index.html.heex:52 #: lib/memex_web/live/pipeline_live/index.html.heex:52
#: lib/memex_web/live/pipeline_live/show.html.heex:41 #: lib/memex_web/live/pipeline_live/show.html.heex:42
#: lib/memex_web/live/pipeline_live/show.html.heex:112 #: lib/memex_web/live/pipeline_live/show.html.heex:113
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "delete" msgid "delete"
msgstr "" msgstr ""
@ -60,8 +66,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:40 #: lib/memex_web/live/note_live/index.html.heex:40
#: lib/memex_web/live/note_live/show.html.heex:24 #: lib/memex_web/live/note_live/show.html.heex:24
#: lib/memex_web/live/pipeline_live/index.html.heex:40 #: lib/memex_web/live/pipeline_live/index.html.heex:40
#: lib/memex_web/live/pipeline_live/show.html.heex:31 #: lib/memex_web/live/pipeline_live/show.html.heex:32
#: lib/memex_web/live/pipeline_live/show.html.heex:101 #: lib/memex_web/live/pipeline_live/show.html.heex:102
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "edit" msgid "edit"
msgstr "" msgstr ""
@ -108,16 +114,16 @@ msgstr ""
msgid "register" msgid "register"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:43 #: lib/memex_web/live/context_live/form_component.html.heex:44
#: lib/memex_web/live/invite_live/form_component.html.heex:32 #: 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/note_live/form_component.html.heex:44
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43 #: lib/memex_web/live/pipeline_live/form_component.html.heex:44
#: lib/memex_web/live/step_live/form_component.html.heex:29 #: lib/memex_web/live/step_live/form_component.html.heex:30
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "save" msgid "save"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:127 #: lib/memex_web/live/pipeline_live/show.html.heex:128
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add step" msgid "add step"
msgstr "" msgstr ""
@ -162,12 +168,12 @@ msgid "delete %{note_slug}"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/index.html.heex:49 #: lib/memex_web/live/pipeline_live/index.html.heex:49
#: lib/memex_web/live/pipeline_live/show.html.heex:39 #: lib/memex_web/live/pipeline_live/show.html.heex:40
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "delete %{pipeline_slug}" msgid "delete %{pipeline_slug}"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:110 #: lib/memex_web/live/pipeline_live/show.html.heex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "delete %{step_title}" msgid "delete %{step_title}"
msgstr "" msgstr ""
@ -192,7 +198,7 @@ msgstr ""
msgid "edit %{pipeline_slug}" msgid "edit %{pipeline_slug}"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:99 #: lib/memex_web/live/pipeline_live/show.html.heex:100
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "edit %{step_title}" msgid "edit %{step_title}"
msgstr "" msgstr ""
@ -202,18 +208,12 @@ msgstr ""
msgid "edit invite for %{invite_name}" msgid "edit invite for %{invite_name}"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:89 #: lib/memex_web/live/pipeline_live/show.html.heex:90
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "move %{step_title} down" msgid "move %{step_title} down"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:73 #: lib/memex_web/live/pipeline_live/show.html.heex:74
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "move %{step_title} up" msgid "move %{step_title} up"
msgstr "" msgstr ""
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
#, elixir-autogen, elixir-format
msgid "reset password"
msgstr ""

View File

@ -16,6 +16,12 @@ msgstr ""
msgid "Resend confirmation instructions" msgid "Resend confirmation instructions"
msgstr "" msgstr ""
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
#, elixir-autogen, elixir-format
msgid "Reset password"
msgstr ""
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:15 #: lib/memex_web/controllers/user_settings_html/edit.html.heex:15
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:43 #: lib/memex_web/controllers/user_settings_html/edit.html.heex:43
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -44,8 +50,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:50 #: lib/memex_web/live/note_live/index.html.heex:50
#: lib/memex_web/live/note_live/show.html.heex:34 #: lib/memex_web/live/note_live/show.html.heex:34
#: lib/memex_web/live/pipeline_live/index.html.heex:52 #: lib/memex_web/live/pipeline_live/index.html.heex:52
#: lib/memex_web/live/pipeline_live/show.html.heex:41 #: lib/memex_web/live/pipeline_live/show.html.heex:42
#: lib/memex_web/live/pipeline_live/show.html.heex:112 #: lib/memex_web/live/pipeline_live/show.html.heex:113
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "delete" msgid "delete"
msgstr "" msgstr ""
@ -60,8 +66,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:40 #: lib/memex_web/live/note_live/index.html.heex:40
#: lib/memex_web/live/note_live/show.html.heex:24 #: lib/memex_web/live/note_live/show.html.heex:24
#: lib/memex_web/live/pipeline_live/index.html.heex:40 #: lib/memex_web/live/pipeline_live/index.html.heex:40
#: lib/memex_web/live/pipeline_live/show.html.heex:31 #: lib/memex_web/live/pipeline_live/show.html.heex:32
#: lib/memex_web/live/pipeline_live/show.html.heex:101 #: lib/memex_web/live/pipeline_live/show.html.heex:102
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "edit" msgid "edit"
msgstr "" msgstr ""
@ -108,16 +114,16 @@ msgstr ""
msgid "register" msgid "register"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:43 #: lib/memex_web/live/context_live/form_component.html.heex:44
#: lib/memex_web/live/invite_live/form_component.html.heex:32 #: 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/note_live/form_component.html.heex:44
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43 #: lib/memex_web/live/pipeline_live/form_component.html.heex:44
#: lib/memex_web/live/step_live/form_component.html.heex:29 #: lib/memex_web/live/step_live/form_component.html.heex:30
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "save" msgid "save"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:127 #: lib/memex_web/live/pipeline_live/show.html.heex:128
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add step" msgid "add step"
msgstr "" msgstr ""
@ -162,12 +168,12 @@ msgid "delete %{note_slug}"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/index.html.heex:49 #: lib/memex_web/live/pipeline_live/index.html.heex:49
#: lib/memex_web/live/pipeline_live/show.html.heex:39 #: lib/memex_web/live/pipeline_live/show.html.heex:40
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "delete %{pipeline_slug}" msgid "delete %{pipeline_slug}"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:110 #: lib/memex_web/live/pipeline_live/show.html.heex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "delete %{step_title}" msgid "delete %{step_title}"
msgstr "" msgstr ""
@ -192,7 +198,7 @@ msgstr ""
msgid "edit %{pipeline_slug}" msgid "edit %{pipeline_slug}"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:99 #: lib/memex_web/live/pipeline_live/show.html.heex:100
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "edit %{step_title}" msgid "edit %{step_title}"
msgstr "" msgstr ""
@ -202,18 +208,12 @@ msgstr ""
msgid "edit invite for %{invite_name}" msgid "edit invite for %{invite_name}"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:89 #: lib/memex_web/live/pipeline_live/show.html.heex:90
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "move %{step_title} down" msgid "move %{step_title} down"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:73 #: lib/memex_web/live/pipeline_live/show.html.heex:74
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "move %{step_title} up" msgid "move %{step_title} up"
msgstr "" msgstr ""
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
#, elixir-autogen, elixir-format, fuzzy
msgid "reset password"
msgstr ""

View File

@ -19,7 +19,7 @@ msgstr ""
#: lib/memex_web/live/context_live/show.html.heex:15 #: lib/memex_web/live/context_live/show.html.heex:15
#: lib/memex_web/live/note_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:23
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Visibility: %{visibility}" msgid "Visibility: %{visibility}"
msgstr "" msgstr ""
@ -45,8 +45,8 @@ msgstr ""
msgid "confirm new password" msgid "confirm new password"
msgstr "" msgstr ""
#: lib/memex_web/live/note_live/form_component.html.heex:23
#: lib/memex_web/live/note_live/form_component.html.heex:24 #: lib/memex_web/live/note_live/form_component.html.heex:24
#: lib/memex_web/live/note_live/form_component.html.heex:25
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "content" msgid "content"
msgstr "" msgstr ""
@ -243,20 +243,20 @@ msgstr ""
msgid "report bugs or request features" msgid "report bugs or request features"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:44 #: lib/memex_web/live/context_live/form_component.html.heex:45
#: 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:44 #: lib/memex_web/live/pipeline_live/form_component.html.heex:45
#: lib/memex_web/live/step_live/form_component.html.heex:30 #: lib/memex_web/live/step_live/form_component.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "saving..." msgid "saving..."
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:39
#: lib/memex_web/live/context_live/form_component.html.heex:40 #: 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/context_live/form_component.html.heex:41
#: lib/memex_web/live/note_live/form_component.html.heex:40 #: lib/memex_web/live/note_live/form_component.html.heex:40
#: lib/memex_web/live/pipeline_live/form_component.html.heex:39 #: lib/memex_web/live/note_live/form_component.html.heex:41
#: lib/memex_web/live/pipeline_live/form_component.html.heex:40 #: lib/memex_web/live/pipeline_live/form_component.html.heex:40
#: lib/memex_web/live/pipeline_live/form_component.html.heex:41
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "select privacy" msgid "select privacy"
msgstr "" msgstr ""
@ -272,12 +272,12 @@ msgstr ""
msgid "settings" msgid "settings"
msgstr "" 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/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:33
#: lib/memex_web/live/note_live/form_component.html.heex:32 #: 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/note_live/form_component.html.heex:33
#: lib/memex_web/live/pipeline_live/form_component.html.heex:32 #: lib/memex_web/live/pipeline_live/form_component.html.heex:32
#: lib/memex_web/live/pipeline_live/form_component.html.heex:33
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "tag1,tag2" msgid "tag1,tag2"
msgstr "" msgstr ""
@ -334,8 +334,8 @@ msgid "no contexts found"
msgstr "" msgstr ""
#: lib/memex_web/components/pipelines_table_component.ex:48 #: 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 #: lib/memex_web/live/pipeline_live/form_component.html.heex:24
#: lib/memex_web/live/pipeline_live/form_component.html.heex:25
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "description" msgid "description"
msgstr "" msgstr ""
@ -409,8 +409,8 @@ msgstr ""
msgid "home" msgid "home"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:23
#: lib/memex_web/live/context_live/form_component.html.heex:24 #: lib/memex_web/live/context_live/form_component.html.heex:24
#: lib/memex_web/live/context_live/form_component.html.heex:25
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "use [[note-slug]] to link to a note" msgid "use [[note-slug]] to link to a note"
msgstr "" msgstr ""
@ -436,7 +436,7 @@ msgstr ""
msgid "what is this?" msgid "what is this?"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:59 #: lib/memex_web/live/pipeline_live/show.html.heex:60
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{position}. %{title}" msgid "%{position}. %{title}"
msgstr "" msgstr ""
@ -461,12 +461,12 @@ msgstr ""
msgid "add step to %{slug}" msgid "add step to %{slug}"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:53 #: lib/memex_web/live/pipeline_live/show.html.heex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "no steps" msgid "no steps"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:48 #: lib/memex_web/live/pipeline_live/show.html.heex:49
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "steps:" msgid "steps:"
msgstr "" msgstr ""
@ -477,8 +477,8 @@ msgstr ""
msgid "title" msgid "title"
msgstr "" msgstr ""
#: lib/memex_web/live/step_live/form_component.html.heex:23
#: lib/memex_web/live/step_live/form_component.html.heex:24 #: lib/memex_web/live/step_live/form_component.html.heex:24
#: lib/memex_web/live/step_live/form_component.html.heex:25
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "use [[context-slug]] to link to a context" msgid "use [[context-slug]] to link to a context"
msgstr "" msgstr ""

View File

@ -70,8 +70,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:47 #: lib/memex_web/live/note_live/index.html.heex:47
#: lib/memex_web/live/note_live/show.html.heex:31 #: lib/memex_web/live/note_live/show.html.heex:31
#: lib/memex_web/live/pipeline_live/index.html.heex:47 #: lib/memex_web/live/pipeline_live/index.html.heex:47
#: lib/memex_web/live/pipeline_live/show.html.heex:38 #: lib/memex_web/live/pipeline_live/show.html.heex:39
#: lib/memex_web/live/pipeline_live/show.html.heex:109 #: lib/memex_web/live/pipeline_live/show.html.heex:110
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "are you sure?" msgid "are you sure?"
msgstr "" msgstr ""

View File

@ -17,7 +17,7 @@ msgstr ""
#: lib/memex_web/live/context_live/show.html.heex:15 #: lib/memex_web/live/context_live/show.html.heex:15
#: lib/memex_web/live/note_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:23
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Visibility: %{visibility}" msgid "Visibility: %{visibility}"
msgstr "" msgstr ""
@ -43,8 +43,8 @@ msgstr ""
msgid "confirm new password" msgid "confirm new password"
msgstr "" msgstr ""
#: lib/memex_web/live/note_live/form_component.html.heex:23
#: lib/memex_web/live/note_live/form_component.html.heex:24 #: lib/memex_web/live/note_live/form_component.html.heex:24
#: lib/memex_web/live/note_live/form_component.html.heex:25
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "content" msgid "content"
msgstr "" msgstr ""
@ -241,20 +241,20 @@ msgstr ""
msgid "report bugs or request features" msgid "report bugs or request features"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:44 #: lib/memex_web/live/context_live/form_component.html.heex:45
#: 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:44 #: lib/memex_web/live/pipeline_live/form_component.html.heex:45
#: lib/memex_web/live/step_live/form_component.html.heex:30 #: lib/memex_web/live/step_live/form_component.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "saving..." msgid "saving..."
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:39
#: lib/memex_web/live/context_live/form_component.html.heex:40 #: 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/context_live/form_component.html.heex:41
#: lib/memex_web/live/note_live/form_component.html.heex:40 #: lib/memex_web/live/note_live/form_component.html.heex:40
#: lib/memex_web/live/pipeline_live/form_component.html.heex:39 #: lib/memex_web/live/note_live/form_component.html.heex:41
#: lib/memex_web/live/pipeline_live/form_component.html.heex:40 #: lib/memex_web/live/pipeline_live/form_component.html.heex:40
#: lib/memex_web/live/pipeline_live/form_component.html.heex:41
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "select privacy" msgid "select privacy"
msgstr "" msgstr ""
@ -270,12 +270,12 @@ msgstr ""
msgid "settings" msgid "settings"
msgstr "" 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/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:33
#: lib/memex_web/live/note_live/form_component.html.heex:32 #: 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/note_live/form_component.html.heex:33
#: lib/memex_web/live/pipeline_live/form_component.html.heex:32 #: lib/memex_web/live/pipeline_live/form_component.html.heex:32
#: lib/memex_web/live/pipeline_live/form_component.html.heex:33
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "tag1,tag2" msgid "tag1,tag2"
msgstr "" msgstr ""
@ -332,8 +332,8 @@ msgid "no contexts found"
msgstr "" msgstr ""
#: lib/memex_web/components/pipelines_table_component.ex:48 #: 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 #: lib/memex_web/live/pipeline_live/form_component.html.heex:24
#: lib/memex_web/live/pipeline_live/form_component.html.heex:25
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "description" msgid "description"
msgstr "" msgstr ""
@ -407,8 +407,8 @@ msgstr ""
msgid "home" msgid "home"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:23
#: lib/memex_web/live/context_live/form_component.html.heex:24 #: lib/memex_web/live/context_live/form_component.html.heex:24
#: lib/memex_web/live/context_live/form_component.html.heex:25
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "use [[note-slug]] to link to a note" msgid "use [[note-slug]] to link to a note"
msgstr "" msgstr ""
@ -434,7 +434,7 @@ msgstr ""
msgid "what is this?" msgid "what is this?"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:59 #: lib/memex_web/live/pipeline_live/show.html.heex:60
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{position}. %{title}" msgid "%{position}. %{title}"
msgstr "" msgstr ""
@ -459,12 +459,12 @@ msgstr ""
msgid "add step to %{slug}" msgid "add step to %{slug}"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:53 #: lib/memex_web/live/pipeline_live/show.html.heex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "no steps" msgid "no steps"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:48 #: lib/memex_web/live/pipeline_live/show.html.heex:49
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "steps:" msgid "steps:"
msgstr "" msgstr ""
@ -475,8 +475,8 @@ msgstr ""
msgid "title" msgid "title"
msgstr "" msgstr ""
#: lib/memex_web/live/step_live/form_component.html.heex:23
#: lib/memex_web/live/step_live/form_component.html.heex:24 #: lib/memex_web/live/step_live/form_component.html.heex:24
#: lib/memex_web/live/step_live/form_component.html.heex:25
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "use [[context-slug]] to link to a context" msgid "use [[context-slug]] to link to a context"
msgstr "" msgstr ""

View File

@ -17,6 +17,12 @@ msgstr ""
msgid "Resend confirmation instructions" msgid "Resend confirmation instructions"
msgstr "" msgstr ""
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
#, elixir-autogen, elixir-format
msgid "Reset password"
msgstr ""
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:15 #: lib/memex_web/controllers/user_settings_html/edit.html.heex:15
#: lib/memex_web/controllers/user_settings_html/edit.html.heex:43 #: lib/memex_web/controllers/user_settings_html/edit.html.heex:43
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -45,8 +51,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:50 #: lib/memex_web/live/note_live/index.html.heex:50
#: lib/memex_web/live/note_live/show.html.heex:34 #: lib/memex_web/live/note_live/show.html.heex:34
#: lib/memex_web/live/pipeline_live/index.html.heex:52 #: lib/memex_web/live/pipeline_live/index.html.heex:52
#: lib/memex_web/live/pipeline_live/show.html.heex:41 #: lib/memex_web/live/pipeline_live/show.html.heex:42
#: lib/memex_web/live/pipeline_live/show.html.heex:112 #: lib/memex_web/live/pipeline_live/show.html.heex:113
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "delete" msgid "delete"
msgstr "" msgstr ""
@ -61,8 +67,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:40 #: lib/memex_web/live/note_live/index.html.heex:40
#: lib/memex_web/live/note_live/show.html.heex:24 #: lib/memex_web/live/note_live/show.html.heex:24
#: lib/memex_web/live/pipeline_live/index.html.heex:40 #: lib/memex_web/live/pipeline_live/index.html.heex:40
#: lib/memex_web/live/pipeline_live/show.html.heex:31 #: lib/memex_web/live/pipeline_live/show.html.heex:32
#: lib/memex_web/live/pipeline_live/show.html.heex:101 #: lib/memex_web/live/pipeline_live/show.html.heex:102
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "edit" msgid "edit"
msgstr "" msgstr ""
@ -109,16 +115,16 @@ msgstr ""
msgid "register" msgid "register"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:43 #: lib/memex_web/live/context_live/form_component.html.heex:44
#: lib/memex_web/live/invite_live/form_component.html.heex:32 #: 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/note_live/form_component.html.heex:44
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43 #: lib/memex_web/live/pipeline_live/form_component.html.heex:44
#: lib/memex_web/live/step_live/form_component.html.heex:29 #: lib/memex_web/live/step_live/form_component.html.heex:30
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "save" msgid "save"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:127 #: lib/memex_web/live/pipeline_live/show.html.heex:128
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add step" msgid "add step"
msgstr "" msgstr ""
@ -163,12 +169,12 @@ msgid "delete %{note_slug}"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/index.html.heex:49 #: lib/memex_web/live/pipeline_live/index.html.heex:49
#: lib/memex_web/live/pipeline_live/show.html.heex:39 #: lib/memex_web/live/pipeline_live/show.html.heex:40
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "delete %{pipeline_slug}" msgid "delete %{pipeline_slug}"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:110 #: lib/memex_web/live/pipeline_live/show.html.heex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "delete %{step_title}" msgid "delete %{step_title}"
msgstr "" msgstr ""
@ -193,7 +199,7 @@ msgstr ""
msgid "edit %{pipeline_slug}" msgid "edit %{pipeline_slug}"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:99 #: lib/memex_web/live/pipeline_live/show.html.heex:100
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "edit %{step_title}" msgid "edit %{step_title}"
msgstr "" msgstr ""
@ -203,18 +209,12 @@ msgstr ""
msgid "edit invite for %{invite_name}" msgid "edit invite for %{invite_name}"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:89 #: lib/memex_web/live/pipeline_live/show.html.heex:90
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "move %{step_title} down" msgid "move %{step_title} down"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:73 #: lib/memex_web/live/pipeline_live/show.html.heex:74
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "move %{step_title} up" msgid "move %{step_title} up"
msgstr "" msgstr ""
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:3
#: lib/memex_web/controllers/user_reset_password_html/edit.html.heex:29
#, elixir-autogen, elixir-format, fuzzy
msgid "reset password"
msgstr ""

View File

@ -18,7 +18,7 @@ msgstr ""
#: lib/memex_web/live/context_live/show.html.heex:15 #: lib/memex_web/live/context_live/show.html.heex:15
#: lib/memex_web/live/note_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:23
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Visibility: %{visibility}" msgid "Visibility: %{visibility}"
msgstr "" msgstr ""
@ -44,8 +44,8 @@ msgstr ""
msgid "confirm new password" msgid "confirm new password"
msgstr "" msgstr ""
#: lib/memex_web/live/note_live/form_component.html.heex:23
#: lib/memex_web/live/note_live/form_component.html.heex:24 #: lib/memex_web/live/note_live/form_component.html.heex:24
#: lib/memex_web/live/note_live/form_component.html.heex:25
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "content" msgid "content"
msgstr "" msgstr ""
@ -242,20 +242,20 @@ msgstr ""
msgid "report bugs or request features" msgid "report bugs or request features"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:44 #: lib/memex_web/live/context_live/form_component.html.heex:45
#: 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:44 #: lib/memex_web/live/pipeline_live/form_component.html.heex:45
#: lib/memex_web/live/step_live/form_component.html.heex:30 #: lib/memex_web/live/step_live/form_component.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "saving..." msgid "saving..."
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:39
#: lib/memex_web/live/context_live/form_component.html.heex:40 #: 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/context_live/form_component.html.heex:41
#: lib/memex_web/live/note_live/form_component.html.heex:40 #: lib/memex_web/live/note_live/form_component.html.heex:40
#: lib/memex_web/live/pipeline_live/form_component.html.heex:39 #: lib/memex_web/live/note_live/form_component.html.heex:41
#: lib/memex_web/live/pipeline_live/form_component.html.heex:40 #: lib/memex_web/live/pipeline_live/form_component.html.heex:40
#: lib/memex_web/live/pipeline_live/form_component.html.heex:41
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "select privacy" msgid "select privacy"
msgstr "" msgstr ""
@ -271,12 +271,12 @@ msgstr ""
msgid "settings" msgid "settings"
msgstr "" 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/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:33
#: lib/memex_web/live/note_live/form_component.html.heex:32 #: 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/note_live/form_component.html.heex:33
#: lib/memex_web/live/pipeline_live/form_component.html.heex:32 #: lib/memex_web/live/pipeline_live/form_component.html.heex:32
#: lib/memex_web/live/pipeline_live/form_component.html.heex:33
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "tag1,tag2" msgid "tag1,tag2"
msgstr "" msgstr ""
@ -333,8 +333,8 @@ msgid "no contexts found"
msgstr "" msgstr ""
#: lib/memex_web/components/pipelines_table_component.ex:48 #: 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 #: lib/memex_web/live/pipeline_live/form_component.html.heex:24
#: lib/memex_web/live/pipeline_live/form_component.html.heex:25
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "description" msgid "description"
msgstr "" msgstr ""
@ -408,8 +408,8 @@ msgstr ""
msgid "home" msgid "home"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:23
#: lib/memex_web/live/context_live/form_component.html.heex:24 #: lib/memex_web/live/context_live/form_component.html.heex:24
#: lib/memex_web/live/context_live/form_component.html.heex:25
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "use [[note-slug]] to link to a note" msgid "use [[note-slug]] to link to a note"
msgstr "" msgstr ""
@ -435,7 +435,7 @@ msgstr ""
msgid "what is this?" msgid "what is this?"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:59 #: lib/memex_web/live/pipeline_live/show.html.heex:60
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{position}. %{title}" msgid "%{position}. %{title}"
msgstr "" msgstr ""
@ -460,12 +460,12 @@ msgstr ""
msgid "add step to %{slug}" msgid "add step to %{slug}"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:53 #: lib/memex_web/live/pipeline_live/show.html.heex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "no steps" msgid "no steps"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/show.html.heex:48 #: lib/memex_web/live/pipeline_live/show.html.heex:49
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "steps:" msgid "steps:"
msgstr "" msgstr ""
@ -476,8 +476,8 @@ msgstr ""
msgid "title" msgid "title"
msgstr "" msgstr ""
#: lib/memex_web/live/step_live/form_component.html.heex:23
#: lib/memex_web/live/step_live/form_component.html.heex:24 #: lib/memex_web/live/step_live/form_component.html.heex:24
#: lib/memex_web/live/step_live/form_component.html.heex:25
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "use [[context-slug]] to link to a context" msgid "use [[context-slug]] to link to a context"
msgstr "" msgstr ""

View File

@ -71,8 +71,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:47 #: lib/memex_web/live/note_live/index.html.heex:47
#: lib/memex_web/live/note_live/show.html.heex:31 #: lib/memex_web/live/note_live/show.html.heex:31
#: lib/memex_web/live/pipeline_live/index.html.heex:47 #: lib/memex_web/live/pipeline_live/index.html.heex:47
#: lib/memex_web/live/pipeline_live/show.html.heex:38 #: lib/memex_web/live/pipeline_live/show.html.heex:39
#: lib/memex_web/live/pipeline_live/show.html.heex:109 #: lib/memex_web/live/pipeline_live/show.html.heex:110
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "are you sure?" msgid "are you sure?"
msgstr "" msgstr ""

View File

@ -70,8 +70,8 @@ msgstr ""
#: lib/memex_web/live/note_live/index.html.heex:47 #: lib/memex_web/live/note_live/index.html.heex:47
#: lib/memex_web/live/note_live/show.html.heex:31 #: lib/memex_web/live/note_live/show.html.heex:31
#: lib/memex_web/live/pipeline_live/index.html.heex:47 #: lib/memex_web/live/pipeline_live/index.html.heex:47
#: lib/memex_web/live/pipeline_live/show.html.heex:38 #: lib/memex_web/live/pipeline_live/show.html.heex:39
#: lib/memex_web/live/pipeline_live/show.html.heex:109 #: lib/memex_web/live/pipeline_live/show.html.heex:110
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "are you sure?" msgid "are you sure?"
msgstr "" msgstr ""

View File

@ -26,8 +26,8 @@ defmodule MemexWeb.UserConfirmationControllerTest do
conn = post(conn, ~p"/users/confirm", %{user: %{email: user.email}}) conn = post(conn, ~p"/users/confirm", %{user: %{email: user.email}})
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/"
assert conn.assigns.flash["info"] =~ conn.assigns.flash["info"] =~
"if your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly." "If your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
assert Repo.get_by!(Accounts.UserToken, user_id: user.id).context == "confirm" assert Repo.get_by!(Accounts.UserToken, user_id: user.id).context == "confirm"
end end
@ -38,16 +38,16 @@ defmodule MemexWeb.UserConfirmationControllerTest do
conn = post(conn, ~p"/users/confirm", %{user: %{email: user.email}}) conn = post(conn, ~p"/users/confirm", %{user: %{email: user.email}})
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/"
assert conn.assigns.flash["info"] =~ conn.assigns.flash["info"] =~
"if your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly." "If your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
end end
test "does not send confirmation token if email is invalid", %{conn: conn} do test "does not send confirmation token if email is invalid", %{conn: conn} do
conn = post(conn, ~p"/users/confirm", %{user: %{email: "unknown@example.com"}}) conn = post(conn, ~p"/users/confirm", %{user: %{email: "unknown@example.com"}})
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/"
assert conn.assigns.flash["info"] =~ conn.assigns.flash["info"] =~
"if your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly." "If your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
assert Repo.all(Accounts.UserToken) == [] assert Repo.all(Accounts.UserToken) == []
end end
@ -62,7 +62,9 @@ defmodule MemexWeb.UserConfirmationControllerTest do
conn = get(conn, ~p"/users/confirm/#{token}") conn = get(conn, ~p"/users/confirm/#{token}")
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/"
assert conn.assigns.flash["info"] =~ "#{user.email} confirmed successfully"
conn.assigns.flash["info"] =~ "#{user.email} confirmed successfully"
assert Accounts.get_user!(user.id).confirmed_at assert Accounts.get_user!(user.id).confirmed_at
refute get_session(conn, :user_token) refute get_session(conn, :user_token)
assert Repo.all(Accounts.UserToken) == [] assert Repo.all(Accounts.UserToken) == []
@ -70,7 +72,7 @@ defmodule MemexWeb.UserConfirmationControllerTest do
# When not logged in # When not logged in
conn = get(conn, ~p"/users/confirm/#{token}") conn = get(conn, ~p"/users/confirm/#{token}")
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/"
assert conn.assigns.flash["error"] =~ "user confirmation link is invalid or it has expired" conn.assigns.flash["error"] =~ "User confirmation link is invalid or it has expired"
# When logged in # When logged in
conn = conn =
@ -83,9 +85,10 @@ defmodule MemexWeb.UserConfirmationControllerTest do
end end
test "does not confirm email with invalid token", %{conn: conn, user: user} do test "does not confirm email with invalid token", %{conn: conn, user: user} do
conn = get(conn, ~p"/users/confirm/oops") conn = get(conn, ~p"/users/confirm/#{"oops"}")
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/"
assert conn.assigns.flash["error"] =~ "user confirmation link is invalid or it has expired" conn.assigns.flash["error"] =~ "User confirmation link is invalid or it has expired"
refute Accounts.get_user!(user.id).confirmed_at refute Accounts.get_user!(user.id).confirmed_at
end end
end end

View File

@ -32,12 +32,6 @@ defmodule MemexWeb.UserRegistrationControllerTest do
} }
assert redirected_to(conn) =~ ~p"/" assert redirected_to(conn) =~ ~p"/"
# Now do a logged in request and assert on the menu
conn = get(conn, ~p"/")
response = html_response(conn, 200)
# user's email is recorded as admin
assert response =~ email
end end
test "render errors for invalid data", %{conn: conn} do test "render errors for invalid data", %{conn: conn} do

View File

@ -26,8 +26,8 @@ defmodule MemexWeb.UserResetPasswordControllerTest do
conn = post(conn, ~p"/users/reset_password", %{user: %{email: user.email}}) conn = post(conn, ~p"/users/reset_password", %{user: %{email: user.email}})
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/"
assert conn.assigns.flash["info"] =~ conn.assigns.flash["info"] =~
"if your email is in our system, you will receive instructions to reset your password shortly." "If your email is in our system, you will receive instructions to reset your password shortly."
assert Repo.get_by!(Accounts.UserToken, user_id: user.id).context == "reset_password" assert Repo.get_by!(Accounts.UserToken, user_id: user.id).context == "reset_password"
end end
@ -36,8 +36,8 @@ defmodule MemexWeb.UserResetPasswordControllerTest do
conn = post(conn, ~p"/users/reset_password", %{user: %{email: "unknown@example.com"}}) conn = post(conn, ~p"/users/reset_password", %{user: %{email: "unknown@example.com"}})
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/"
assert conn.assigns.flash["info"] =~ conn.assigns.flash["info"] =~
"if your email is in our system, you will receive instructions to reset your password shortly." "If your email is in our system, you will receive instructions to reset your password shortly."
assert Repo.all(Accounts.UserToken) == [] assert Repo.all(Accounts.UserToken) == []
end end
@ -55,13 +55,13 @@ defmodule MemexWeb.UserResetPasswordControllerTest do
test "renders reset password", %{conn: conn, token: token} do test "renders reset password", %{conn: conn, token: token} do
conn = get(conn, ~p"/users/reset_password/#{token}") conn = get(conn, ~p"/users/reset_password/#{token}")
assert html_response(conn, 200) =~ "reset password" assert html_response(conn, 200) =~ "Reset password"
end end
test "does not render reset password with invalid token", %{conn: conn} do test "does not render reset password with invalid token", %{conn: conn} do
conn = get(conn, ~p"/users/reset_password/oops") conn = get(conn, ~p"/users/reset_password/#{"oops"}")
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/"
assert conn.assigns.flash["error"] =~ "reset password link is invalid or it has expired" conn.assigns.flash["error"] =~ "Reset password link is invalid or it has expired"
end end
end end
@ -86,7 +86,7 @@ defmodule MemexWeb.UserResetPasswordControllerTest do
assert redirected_to(conn) == ~p"/users/log_in" assert redirected_to(conn) == ~p"/users/log_in"
refute get_session(conn, :user_token) refute get_session(conn, :user_token)
assert conn.assigns.flash["info"] =~ "password reset successfully" conn.assigns.flash["info"] =~ "Password reset successfully"
assert Accounts.get_user_by_email_and_password(user.email, "new valid password") assert Accounts.get_user_by_email_and_password(user.email, "new valid password")
end end
@ -100,15 +100,15 @@ defmodule MemexWeb.UserResetPasswordControllerTest do
}) })
response = html_response(conn, 200) response = html_response(conn, 200)
assert response =~ "reset password" assert response =~ "Reset password"
assert response =~ "should be at least 12 character(s)" assert response =~ "should be at least 12 character(s)"
assert response =~ "does not match password" assert response =~ "does not match password"
end end
test "does not reset password with invalid token", %{conn: conn} do test "does not reset password with invalid token", %{conn: conn} do
conn = put(conn, ~p"/users/reset_password/oops") conn = put(conn, ~p"/users/reset_password/#{"oops"}")
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/"
assert conn.assigns.flash["error"] =~ "reset password link is invalid or it has expired" conn.assigns.flash["error"] =~ "Reset password link is invalid or it has expired"
end end
end end
end end

View File

@ -83,14 +83,14 @@ defmodule MemexWeb.UserSessionControllerTest do
conn = conn |> log_in_user(current_user) |> delete(~p"/users/log_out") conn = conn |> log_in_user(current_user) |> delete(~p"/users/log_out")
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/"
refute get_session(conn, :user_token) refute get_session(conn, :user_token)
assert conn.assigns.flash["info"] =~ "logged out successfully" conn.assigns.flash["info"] =~ "logged out successfully"
end end
test "succeeds even if the user is not logged in", %{conn: conn} do test "succeeds even if the user is not logged in", %{conn: conn} do
conn = delete(conn, ~p"/users/log_out") conn = delete(conn, ~p"/users/log_out")
assert redirected_to(conn) == ~p"/" assert redirected_to(conn) == ~p"/"
refute get_session(conn, :user_token) refute get_session(conn, :user_token)
assert conn.assigns.flash["info"] =~ "logged out successfully" conn.assigns.flash["info"] =~ "logged out successfully"
end end
end end
end end

View File

@ -39,7 +39,8 @@ defmodule MemexWeb.UserSettingsControllerTest do
assert redirected_to(new_password_conn) == ~p"/users/settings" assert redirected_to(new_password_conn) == ~p"/users/settings"
assert get_session(new_password_conn, :user_token) != get_session(conn, :user_token) assert get_session(new_password_conn, :user_token) != get_session(conn, :user_token)
assert new_password_conn.assigns.flash["info"] =~ "password updated successfully" new_password_conn.assigns.flash["info"] =~ "password updated successfully"
assert Accounts.get_user_by_email_and_password(current_user.email, "new valid password") assert Accounts.get_user_by_email_and_password(current_user.email, "new valid password")
end end
@ -59,6 +60,7 @@ defmodule MemexWeb.UserSettingsControllerTest do
assert response =~ "should be at least 12 character(s)" assert response =~ "should be at least 12 character(s)"
assert response =~ "does not match password" assert response =~ "does not match password"
assert response =~ "is not valid" assert response =~ "is not valid"
assert get_session(old_password_conn, :user_token) == get_session(conn, :user_token) assert get_session(old_password_conn, :user_token) == get_session(conn, :user_token)
end end
end end
@ -70,13 +72,13 @@ defmodule MemexWeb.UserSettingsControllerTest do
put(conn, ~p"/users/settings", %{ put(conn, ~p"/users/settings", %{
action: "update_email", action: "update_email",
current_password: valid_user_password(), current_password: valid_user_password(),
user: %{email: unique_user_email()} user: %{"email" => unique_user_email()}
}) })
assert redirected_to(conn) == ~p"/users/settings" assert redirected_to(conn) == ~p"/users/settings"
assert conn.assigns.flash["info"] =~ conn.assigns.flash["info"] =~
"a link to confirm your email change has been sent to the new address." "a link to confirm your email change has been sent to the new address."
assert Accounts.get_user_by_email(current_user.email) assert Accounts.get_user_by_email(current_user.email)
end end
@ -84,9 +86,9 @@ defmodule MemexWeb.UserSettingsControllerTest do
test "does not update email on invalid data", %{conn: conn} do test "does not update email on invalid data", %{conn: conn} do
conn = conn =
put(conn, ~p"/users/settings", %{ put(conn, ~p"/users/settings", %{
action: "update_email", "action" => "update_email",
current_password: "invalid", "current_password" => "invalid",
user: %{email: "with spaces"} "user" => %{"email" => "with spaces"}
}) })
response = html_response(conn, 200) response = html_response(conn, 200)
@ -116,19 +118,19 @@ defmodule MemexWeb.UserSettingsControllerTest do
%{conn: conn, current_user: current_user, token: token, email: email} do %{conn: conn, current_user: current_user, token: token, email: email} do
conn = get(conn, ~p"/users/settings/confirm_email/#{token}") conn = get(conn, ~p"/users/settings/confirm_email/#{token}")
assert redirected_to(conn) == ~p"/users/settings" assert redirected_to(conn) == ~p"/users/settings"
assert conn.assigns.flash["info"] =~ "email changed successfully" conn.assigns.flash["info"] =~ "email changed successfully"
refute Accounts.get_user_by_email(current_user.email) refute Accounts.get_user_by_email(current_user.email)
assert Accounts.get_user_by_email(email) assert Accounts.get_user_by_email(email)
conn = get(conn, ~p"/users/settings/confirm_email/#{token}") conn = get(conn, ~p"/users/settings/confirm_email/#{token}")
assert redirected_to(conn) == ~p"/users/settings" assert redirected_to(conn) == ~p"/users/settings"
assert conn.assigns.flash["error"] =~ "email change link is invalid or it has expired" conn.assigns.flash["error"] =~ "email change link is invalid or it has expired"
end end
test "does not update email with invalid token", %{conn: conn, current_user: current_user} do test "does not update email with invalid token", %{conn: conn, current_user: current_user} do
conn = get(conn, ~p"/users/settings/confirm_email/oops") conn = get(conn, ~p"/users/settings/confirm_email/#{"oops"}")
assert redirected_to(conn) == ~p"/users/settings" assert redirected_to(conn) == ~p"/users/settings"
assert conn.assigns.flash["error"] =~ "email change link is invalid or it has expired" conn.assigns.flash["error"] =~ "email change link is invalid or it has expired"
assert Accounts.get_user_by_email(current_user.email) assert Accounts.get_user_by_email(current_user.email)
end end

View File

@ -22,6 +22,7 @@ defmodule MemexWeb.InviteLiveTest do
test "lists all invites", %{conn: conn, invite: invite} do test "lists all invites", %{conn: conn, invite: invite} do
{:ok, _index_live, html} = live(conn, ~p"/invites") {:ok, _index_live, html} = live(conn, ~p"/invites")
assert html =~ "invites" assert html =~ "invites"
assert html =~ invite.name assert html =~ invite.name
end end
@ -51,7 +52,7 @@ defmodule MemexWeb.InviteLiveTest do
|> element(~s/a[aria-label="edit invite for #{invite.name}"]/) |> element(~s/a[aria-label="edit invite for #{invite.name}"]/)
|> render_click() =~ "edit invite" |> render_click() =~ "edit invite"
assert_patch(index_live, ~p"/invites/edit/#{invite}") assert_patch(index_live, ~p"/invites/#{invite}/edit")
assert index_live assert index_live
|> form("#invite-form") |> form("#invite-form")