Compare commits

...

1 commit

Author SHA1 Message Date
d24096ceaf
Redesign member view/edit UI with improved accessibility
All checks were successful
continuous-integration/drone/push Build is passing
- Group fields into Personal Data, Custom Fields, and Payment Data sections
- Fix WCAG AA contrast issues and semantic HTML (dt/dd in dl)
- Format mailto links with member name in href attribute
2025-12-03 13:45:56 +01:00
5 changed files with 906 additions and 314 deletions

View file

@ -5,80 +5,212 @@ defmodule MvWeb.MemberLive.Form do
## Features ## Features
- Create new members with personal information - Create new members with personal information
- Edit existing member details - Edit existing member details
- Manage custom properties (dynamic fields) - Grouped sections for better organization
- Tab navigation (Payments tab disabled, coming soon)
- Manage custom properties (dynamic fields, displayed sorted by name)
- Real-time validation with visual feedback - Real-time validation with visual feedback
- Link/unlink user accounts
## Form Fields ## Form Sections
**Required:** - Personal Data: Name, address, contact information, membership dates, notes
- first_name, last_name, email - Custom Fields: Dynamic fields in uniform grid layout (displayed sorted by name)
- Payment Data: Mockup section (not editable)
**Optional:**
- phone_number, address fields (city, street, house_number, postal_code)
- join_date, exit_date
- paid status
- notes
## Custom Field Values
Members can have dynamic custom field values defined by CustomFields.
The form dynamically renders inputs based on available CustomFields.
## Events ## Events
- `validate` - Real-time form validation - `validate` - Real-time form validation
- `save` - Submit form (create or update member) - `save` - Submit form (create or update member)
- Custom field value management events for adding/removing custom fields
""" """
use MvWeb, :live_view use MvWeb, :live_view
@impl true @impl true
def render(assigns) do def render(assigns) do
# Sort custom fields by name for display only
sorted_custom_fields = Enum.sort_by(assigns.custom_fields, & &1.name)
assigns = assign(assigns, :sorted_custom_fields, sorted_custom_fields)
~H""" ~H"""
<Layouts.app flash={@flash} current_user={@current_user}> <Layouts.app flash={@flash} current_user={@current_user}>
<.header>
{@page_title}
<:subtitle>
{gettext("Fields marked with an asterisk (*) cannot be empty.")}
</:subtitle>
</.header>
<.form for={@form} id="member-form" phx-change="validate" phx-submit="save"> <.form for={@form} id="member-form" phx-change="validate" phx-submit="save">
<.input field={@form[:first_name]} label={gettext("First Name")} required /> <%!-- Header with Back button, Name display, and Save button --%>
<.input field={@form[:last_name]} label={gettext("Last Name")} required /> <div class="flex items-center justify-between gap-4 pb-4">
<.input field={@form[:email]} label={gettext("Email")} required type="email" /> <.button navigate={return_path(@return_to, @member)} type="button">
<.input field={@form[:paid]} label={gettext("Paid")} type="checkbox" /> <.icon name="hero-arrow-left" class="size-4" />
<.input field={@form[:phone_number]} label={gettext("Phone Number")} /> {gettext("Back")}
<.input field={@form[:join_date]} label={gettext("Join Date")} type="date" /> </.button>
<.input field={@form[:exit_date]} label={gettext("Exit Date")} type="date" />
<.input field={@form[:notes]} label={gettext("Notes")} />
<.input field={@form[:city]} label={gettext("City")} />
<.input field={@form[:street]} label={gettext("Street")} />
<.input field={@form[:house_number]} label={gettext("House Number")} />
<.input field={@form[:postal_code]} label={gettext("Postal Code")} />
<h3 class="mt-8 mb-2 text-lg font-semibold">{gettext("Custom Field Values")}</h3> <h1 class="text-2xl font-bold text-center flex-1">
<.inputs_for :let={f_custom_field_value} field={@form[:custom_field_values]}> <%= if @member do %>
<% type = {@member.first_name} {@member.last_name}
Enum.find(@custom_fields, &(&1.id == f_custom_field_value[:custom_field_id].value)) %> <% else %>
<.inputs_for :let={value_form} field={f_custom_field_value[:value]}> {gettext("New Member")}
<% input_type = <% end %>
cond do </h1>
type && type.value_type == :boolean -> "checkbox"
type && type.value_type == :date -> :date <.button phx-disable-with={gettext("Saving...")} variant="primary" type="submit">
true -> :text {gettext("Save")}
end %> </.button>
<.input field={value_form[:value]} label={type && type.name} type={input_type} /> </div>
<%!-- Tab Navigation --%>
<div role="tablist" class="tabs tabs-bordered mb-6">
<button type="button" role="tab" class="tab tab-active" aria-selected="true">
<.icon name="hero-identification" class="size-4 mr-2" />
{gettext("Contact Data")}
</button>
<button
type="button"
role="tab"
class="tab"
disabled
aria-disabled="true"
title={gettext("Coming soon")}
>
<.icon name="hero-credit-card" class="size-4 mr-2" />
{gettext("Payments")}
</button>
</div>
<%!-- Personal Data and Custom Fields Row --%>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-6">
<%!-- Personal Data Section --%>
<div>
<.form_section title={gettext("Personal Data")}>
<div class="space-y-4">
<%!-- Name Row --%>
<div class="flex gap-4">
<div class="w-48">
<.input field={@form[:first_name]} label={gettext("First Name")} required />
</div>
<div class="w-48">
<.input field={@form[:last_name]} label={gettext("Last Name")} required />
</div>
</div>
<%!-- Address Row --%>
<div class="flex gap-4">
<div class="flex-1">
<.input field={@form[:street]} label={gettext("Street")} />
</div>
<div class="w-16">
<.input field={@form[:house_number]} label={gettext("Nr.")} />
</div>
<div class="w-24">
<.input field={@form[:postal_code]} label={gettext("Postal Code")} />
</div>
<div class="w-32">
<.input field={@form[:city]} label={gettext("City")} />
</div>
</div>
<%!-- Email --%>
<div>
<.input field={@form[:email]} label={gettext("Email")} required type="email" />
</div>
<%!-- Phone --%>
<div>
<.input field={@form[:phone_number]} label={gettext("Phone")} type="tel" />
</div>
<%!-- Membership Dates Row --%>
<div class="flex gap-4">
<div class="w-36">
<.input field={@form[:join_date]} label={gettext("Join Date")} type="date" />
</div>
<div class="w-36">
<.input field={@form[:exit_date]} label={gettext("Exit Date")} type="date" />
</div>
</div>
<%!-- Notes --%>
<div>
<.input field={@form[:notes]} label={gettext("Notes")} type="textarea" />
</div>
</div>
</.form_section>
</div>
<%!-- Custom Fields Section --%>
<%= if Enum.any?(@custom_fields) do %>
<div>
<.form_section title={gettext("Custom Fields")}>
<div class="grid grid-cols-2 gap-4">
<%!-- Render in sorted order by finding the form for each sorted custom field --%>
<%= for cf <- @sorted_custom_fields do %>
<.inputs_for :let={f_cfv} field={@form[:custom_field_values]}>
<%= if f_cfv[:custom_field_id].value == cf.id do %>
<div class={if cf.value_type == :boolean, do: "flex items-end", else: ""}>
<.inputs_for :let={value_form} field={f_cfv[:value]}>
<.input
field={value_form[:value]}
label={cf.name}
type={custom_field_input_type(cf.value_type)}
/>
</.inputs_for> </.inputs_for>
<input <input
type="hidden" type="hidden"
name={f_custom_field_value[:custom_field_id].name} name={f_cfv[:custom_field_id].name}
value={f_custom_field_value[:custom_field_id].value} value={f_cfv[:custom_field_id].value}
/> />
</div>
<% end %>
</.inputs_for> </.inputs_for>
<% end %>
</div>
</.form_section>
</div>
<% end %>
</div>
<.button phx-disable-with={gettext("Saving...")} variant="primary"> <%!-- Payment Data Section (Mockup) --%>
<div class="max-w-xl">
<.form_section title={gettext("Payment Data")}>
<div role="alert" class="alert alert-info mb-4">
<.icon name="hero-information-circle" class="size-5" />
<span>{gettext("This data is for demonstration purposes only (mockup).")}</span>
</div>
<div class="flex gap-8">
<div class="w-24">
<label for="mock-contribution" class="label text-sm font-medium">
{gettext("Contribution")}
</label>
<input
type="text"
id="mock-contribution"
value="72 €"
disabled
class="input input-bordered w-full bg-base-200"
/>
</div>
<div class="w-40">
<label class="label text-sm font-medium">{gettext("Payment Cycle")}</label>
<div class="flex gap-3 mt-2">
<label class="flex items-center gap-1 cursor-not-allowed opacity-60">
<input type="radio" name="mock_cycle" checked disabled class="radio radio-sm" />
<span class="text-sm">{gettext("monthly")}</span>
</label>
<label class="flex items-center gap-1 cursor-not-allowed opacity-60">
<input type="radio" name="mock_cycle" disabled class="radio radio-sm" />
<span class="text-sm">{gettext("yearly")}</span>
</label>
</div>
</div>
<div class="w-24 flex items-end">
<.input field={@form[:paid]} label={gettext("Paid")} type="checkbox" />
</div>
</div>
</.form_section>
</div>
<%!-- Bottom Action Buttons --%>
<div class="flex justify-end gap-4 mt-6">
<.button navigate={return_path(@return_to, @member)} type="button">
{gettext("Cancel")}
</.button>
<.button phx-disable-with={gettext("Saving...")} variant="primary" type="submit">
{gettext("Save Member")} {gettext("Save Member")}
</.button> </.button>
<.button navigate={return_path(@return_to, @member)}>{gettext("Cancel")}</.button> </div>
</.form> </.form>
</Layouts.app> </Layouts.app>
""" """
@ -106,8 +238,8 @@ defmodule MvWeb.MemberLive.Form do
id -> Ash.get!(Mv.Membership.Member, id) id -> Ash.get!(Mv.Membership.Member, id)
end end
action = if is_nil(member), do: "New", else: "Edit" action = if is_nil(member), do: gettext("New"), else: gettext("Edit")
page_title = action <> " " <> "Member" page_title = "#{action} #{gettext("Member")}"
{:ok, {:ok,
socket socket
@ -213,5 +345,37 @@ defmodule MvWeb.MemberLive.Form do
end end
defp return_path("index", _member), do: ~p"/members" defp return_path("index", _member), do: ~p"/members"
defp return_path("show", nil), do: ~p"/members"
defp return_path("show", member), do: ~p"/members/#{member.id}" defp return_path("show", member), do: ~p"/members/#{member.id}"
# -----------------------------------------------------------------
# Helper Components
# -----------------------------------------------------------------
# Renders a form section box with border and title.
attr :title, :string, required: true
slot :inner_block, required: true
defp form_section(assigns) do
~H"""
<section class="mb-6">
<h2 class="text-lg font-semibold mb-3">{@title}</h2>
<div class="border border-base-300 rounded-lg p-4 bg-base-100">
{render_slot(@inner_block)}
</div>
</section>
"""
end
# -----------------------------------------------------------------
# Helper Functions for Custom Fields
# -----------------------------------------------------------------
# Returns input type for custom field based on value type
defp custom_field_input_type(:string), do: "text"
defp custom_field_input_type(:integer), do: "number"
defp custom_field_input_type(:boolean), do: "checkbox"
defp custom_field_input_type(:date), do: "date"
defp custom_field_input_type(:email), do: "email"
defp custom_field_input_type(_), do: "text"
end end

View file

@ -3,19 +3,16 @@ defmodule MvWeb.MemberLive.Show do
LiveView for displaying a single member's details. LiveView for displaying a single member's details.
## Features ## Features
- Display all member information (personal, contact, address) - Display all member information in grouped sections
- Show linked user account (if exists) - Tab navigation for future features (Payments)
- Display custom field values - Show custom field values with type-based formatting
- Navigate to edit form - Navigate to edit form
- Return to member list - Return to member list
## Displayed Information ## Sections
- Basic: name, email, dates (join, exit) - Personal Data: Name, address, contact information, membership dates, notes
- Contact: phone number - Custom Fields: Dynamic fields in uniform grid layout (sorted by name)
- Address: street, house number, postal code, city - Payment Data: Mockup section with placeholder data
- Status: paid flag
- Relationships: linked user account
- Custom: dynamic custom field values from CustomFields
## Navigation ## Navigation
- Back to member list - Back to member list
@ -28,66 +25,150 @@ defmodule MvWeb.MemberLive.Show do
def render(assigns) do def render(assigns) do
~H""" ~H"""
<Layouts.app flash={@flash} current_user={@current_user}> <Layouts.app flash={@flash} current_user={@current_user}>
<.header> <%!-- Header with Back button, Name, and Edit button --%>
{@member.first_name} {@member.last_name} <div class="flex items-center justify-between gap-4 pb-4">
<:subtitle>{gettext("This is a member record from your database.")}</:subtitle>
<:actions>
<.button navigate={~p"/members"} aria-label={gettext("Back to members list")}> <.button navigate={~p"/members"} aria-label={gettext("Back to members list")}>
<.icon name="hero-arrow-left" /> <.icon name="hero-arrow-left" class="size-4" />
<span class="sr-only">{gettext("Back to members list")}</span> {gettext("Back")}
</.button> </.button>
<.button variant="primary" navigate={~p"/members/#{@member}/edit?return_to=show"}>
<.icon name="hero-pencil-square" /> {gettext("Edit Member")}
</.button>
</:actions>
</.header>
<.list> <h1 class="text-2xl font-bold text-center flex-1">
<:item title={gettext("Id")}>{@member.id}</:item> {@member.first_name} {@member.last_name}
<:item title={gettext("First Name")}>{@member.first_name}</:item> </h1>
<:item title={gettext("Last Name")}>{@member.last_name}</:item>
<:item title={gettext("Email")}>{@member.email}</:item> <.button variant="primary" navigate={~p"/members/#{@member}/edit?return_to=show"}>
<:item title={gettext("Paid")}> {gettext("Edit Member")}
{if @member.paid, do: gettext("Yes"), else: gettext("No")} </.button>
</:item> </div>
<:item title={gettext("Phone Number")}>{@member.phone_number}</:item>
<:item title={gettext("Join Date")}>{@member.join_date}</:item> <%!-- Tab Navigation --%>
<:item title={gettext("Exit Date")}>{@member.exit_date}</:item> <div role="tablist" class="tabs tabs-bordered mb-6">
<:item title={gettext("Notes")}>{@member.notes}</:item> <button role="tab" class="tab tab-active" aria-selected="true">
<:item title={gettext("City")}>{@member.city}</:item> <.icon name="hero-identification" class="size-4 mr-2" />
<:item title={gettext("Street")}>{@member.street}</:item> {gettext("Contact Data")}
<:item title={gettext("House Number")}>{@member.house_number}</:item> </button>
<:item title={gettext("Postal Code")}>{@member.postal_code}</:item> <button role="tab" class="tab" disabled aria-disabled="true" title={gettext("Coming soon")}>
<:item title={gettext("Linked User")}> <.icon name="hero-credit-card" class="size-4 mr-2" />
{gettext("Payments")}
</button>
</div>
<%!-- Personal Data and Custom Fields Row --%>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-6">
<%!-- Personal Data Section --%>
<div>
<.section_box title={gettext("Personal Data")}>
<div class="space-y-4">
<%!-- Name Row --%>
<div class="flex gap-6">
<.data_field label={gettext("First Name")} value={@member.first_name} class="w-48" />
<.data_field label={gettext("Last Name")} value={@member.last_name} class="w-48" />
</div>
<%!-- Address --%>
<div>
<.data_field label={gettext("Address")} value={format_address(@member)} />
</div>
<%!-- Email --%>
<div>
<.data_field label={gettext("Email")}>
<a
href={"mailto:#{format_email_mailto(@member.first_name, @member.last_name, @member.email)}"}
class="text-blue-700 hover:text-blue-800 underline"
>
{@member.email}
</a>
</.data_field>
</div>
<%!-- Phone --%>
<div>
<.data_field label={gettext("Phone")} value={@member.phone_number} />
</div>
<%!-- Membership Dates Row --%>
<div class="flex gap-6">
<.data_field
label={gettext("Join Date")}
value={format_date(@member.join_date)}
class="w-28"
/>
<.data_field
label={gettext("Exit Date")}
value={format_date(@member.exit_date)}
class="w-28"
/>
</div>
<%!-- Linked User --%>
<div>
<.data_field label={gettext("Linked User")}>
<%= if @member.user do %> <%= if @member.user do %>
<.link <.link
navigate={~p"/users/#{@member.user}"} navigate={~p"/users/#{@member.user}"}
class="text-blue-600 hover:text-blue-800 underline" class="text-blue-700 hover:text-blue-800 underline inline-flex items-center gap-1"
> >
<.icon name="hero-user" class="h-4 w-4 inline mr-1" /> <.icon name="hero-user" class="size-4" />
{@member.user.email} {@member.user.email}
</.link> </.link>
<% else %> <% else %>
<span class="text-gray-500 italic">{gettext("No user linked")}</span> <span class="text-base-content/70 italic">{gettext("No user linked")}</span>
<% end %> <% end %>
</:item> </.data_field>
</.list> </div>
<h3 class="mt-8 mb-2 text-lg font-semibold">{gettext("Custom Field Values")}</h3> <%!-- Notes --%>
<.generic_list items={ <%= if @member.notes && String.trim(@member.notes) != "" do %>
Enum.map(@member.custom_field_values, fn cfv -> <div>
{ <.data_field label={gettext("Notes")}>
# name <p class="whitespace-pre-wrap text-base-content/80">{@member.notes}</p>
cfv.custom_field && cfv.custom_field.name, </.data_field>
# value </div>
case cfv.value do <% end %>
%{value: v} -> v </div>
v -> v </.section_box>
end </div>
}
end) <%!-- Custom Fields Section --%>
} /> <%= if Enum.any?(@member.custom_field_values) do %>
<div>
<.section_box title={gettext("Custom Fields")}>
<div class="grid grid-cols-2 gap-4">
<%= for cfv <- sort_custom_field_values(@member.custom_field_values) do %>
<% custom_field = cfv.custom_field %>
<% value_type = custom_field && custom_field.value_type %>
<.data_field label={custom_field && custom_field.name}>
{format_custom_field_value(cfv.value, value_type)}
</.data_field>
<% end %>
</div>
</.section_box>
</div>
<% end %>
</div>
<%!-- Payment Data Section (Mockup) --%>
<div class="max-w-xl">
<.section_box title={gettext("Payment Data")}>
<div role="alert" class="alert alert-info mb-4">
<.icon name="hero-information-circle" class="size-5" />
<span>{gettext("This data is for demonstration purposes only (mockup).")}</span>
</div>
<div class="flex gap-6">
<.data_field label={gettext("Contribution")} value="72 €" class="w-24" />
<.data_field label={gettext("Payment Cycle")} value={gettext("monthly")} class="w-28" />
<.data_field label={gettext("Paid")} class="w-24">
<%= if @member.paid do %>
<span class="badge badge-success">{gettext("Paid")}</span>
<% else %>
<span class="badge badge-warning">{gettext("Pending")}</span>
<% end %>
</.data_field>
</div>
</.section_box>
</div>
</Layouts.app> </Layouts.app>
""" """
end end
@ -114,4 +195,133 @@ defmodule MvWeb.MemberLive.Show do
defp page_title(:show), do: gettext("Show Member") defp page_title(:show), do: gettext("Show Member")
defp page_title(:edit), do: gettext("Edit Member") defp page_title(:edit), do: gettext("Edit Member")
# -----------------------------------------------------------------
# Helper Components
# -----------------------------------------------------------------
# Renders a section box with border and title.
attr :title, :string, required: true
slot :inner_block, required: true
defp section_box(assigns) do
~H"""
<section class="mb-6">
<h2 class="text-lg font-semibold mb-3">{@title}</h2>
<div class="border border-base-300 rounded-lg p-4 bg-base-100">
{render_slot(@inner_block)}
</div>
</section>
"""
end
# Renders a labeled data field.
attr :label, :string, required: true
attr :value, :string, default: nil
attr :class, :string, default: ""
slot :inner_block
defp data_field(assigns) do
~H"""
<dl class={@class}>
<dt class="text-sm font-medium text-base-content/70">{@label}</dt>
<dd class="mt-1 text-base-content">
<%= if @inner_block != [] do %>
{render_slot(@inner_block)}
<% else %>
{display_value(@value)}
<% end %>
</dd>
</dl>
"""
end
# -----------------------------------------------------------------
# Helper Functions
# -----------------------------------------------------------------
defp display_value(nil), do: ""
defp display_value(""), do: ""
defp display_value(value), do: value
defp format_email_mailto(first_name, last_name, email) do
name =
[first_name, last_name]
|> Enum.filter(&(&1 && &1 != ""))
|> Enum.join(" ")
if name != "" do
"#{name} <#{email}>"
else
email
end
end
defp format_address(member) do
street_part =
[member.street, member.house_number]
|> Enum.filter(&(&1 && &1 != ""))
|> Enum.join(" ")
city_part =
[member.postal_code, member.city]
|> Enum.filter(&(&1 && &1 != ""))
|> Enum.join(" ")
[street_part, city_part]
|> Enum.filter(&(&1 != ""))
|> Enum.join(", ")
|> case do
"" -> nil
address -> address
end
end
defp format_date(nil), do: nil
defp format_date(%Date{} = date) do
Calendar.strftime(date, "%d.%m.%Y")
end
defp format_date(date), do: to_string(date)
# Sorts custom field values by custom field name
defp sort_custom_field_values(custom_field_values) do
Enum.sort_by(custom_field_values, fn cfv ->
(cfv.custom_field && cfv.custom_field.name) || ""
end)
end
# Formats custom field value based on type
defp format_custom_field_value(%Ash.Union{value: value, type: type}, _expected_type) do
format_custom_field_value(value, type)
end
defp format_custom_field_value(nil, _type), do: ""
defp format_custom_field_value(value, :boolean) when is_boolean(value) do
if value, do: gettext("Yes"), else: gettext("No")
end
defp format_custom_field_value(%Date{} = date, :date) do
Calendar.strftime(date, "%d.%m.%Y")
end
defp format_custom_field_value(value, :email) when is_binary(value) do
assigns = %{email: value}
~H"""
<a href={"mailto:#{@email}"} class="text-blue-700 hover:text-blue-800 underline">{@email}</a>
"""
end
defp format_custom_field_value(value, :integer) when is_integer(value) do
Integer.to_string(value)
end
defp format_custom_field_value(value, _type) when is_binary(value) do
if String.trim(value) == "", do: "", else: value
end
defp format_custom_field_value(value, _type), do: to_string(value)
end end

View file

@ -27,9 +27,8 @@ msgstr "Bist du sicher?"
msgid "Attempting to reconnect" msgid "Attempting to reconnect"
msgstr "Verbindung wird wiederhergestellt" msgstr "Verbindung wird wiederhergestellt"
#: lib/mv_web/live/member_live/form.ex:53 #: lib/mv_web/live/member_live/form.ex:100
#: lib/mv_web/live/member_live/index.html.heex:184 #: lib/mv_web/live/member_live/index.html.heex:184
#: lib/mv_web/live/member_live/show.ex:58
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "City" msgid "City"
msgstr "Stadt" msgstr "Stadt"
@ -40,6 +39,7 @@ msgstr "Stadt"
msgid "Delete" msgid "Delete"
msgstr "Löschen" msgstr "Löschen"
#: lib/mv_web/live/member_live/form.ex:241
#: lib/mv_web/live/member_live/index.html.heex:242 #: lib/mv_web/live/member_live/index.html.heex:242
#: lib/mv_web/live/user_live/form.ex:265 #: lib/mv_web/live/user_live/form.ex:265
#: lib/mv_web/live/user_live/index.html.heex:66 #: lib/mv_web/live/user_live/index.html.heex:66
@ -47,15 +47,15 @@ msgstr "Löschen"
msgid "Edit" msgid "Edit"
msgstr "Bearbeite" msgstr "Bearbeite"
#: lib/mv_web/live/member_live/show.ex:41 #: lib/mv_web/live/member_live/show.ex:40
#: lib/mv_web/live/member_live/show.ex:116 #: lib/mv_web/live/member_live/show.ex:197
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit Member" msgid "Edit Member"
msgstr "Mitglied bearbeiten" msgstr "Mitglied bearbeiten"
#: lib/mv_web/live/member_live/form.ex:47 #: lib/mv_web/live/member_live/form.ex:106
#: lib/mv_web/live/member_live/index.html.heex:112 #: lib/mv_web/live/member_live/index.html.heex:112
#: lib/mv_web/live/member_live/show.ex:50 #: lib/mv_web/live/member_live/show.ex:75
#: lib/mv_web/live/user_live/form.ex:46 #: lib/mv_web/live/user_live/form.ex:46
#: lib/mv_web/live/user_live/index.html.heex:44 #: lib/mv_web/live/user_live/index.html.heex:44
#: lib/mv_web/live/user_live/show.ex:50 #: lib/mv_web/live/user_live/show.ex:50
@ -63,25 +63,26 @@ msgstr "Mitglied bearbeiten"
msgid "Email" msgid "Email"
msgstr "E-Mail" msgstr "E-Mail"
#: lib/mv_web/live/member_live/form.ex:45 #: lib/mv_web/live/member_live/form.ex:81
#: lib/mv_web/live/member_live/show.ex:48 #: lib/mv_web/live/member_live/show.ex:64
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "First Name" msgid "First Name"
msgstr "Vorname" msgstr "Vorname"
#: lib/mv_web/live/member_live/form.ex:50 #: lib/mv_web/live/member_live/form.ex:117
#: lib/mv_web/live/member_live/index.html.heex:220 #: lib/mv_web/live/member_live/index.html.heex:220
#: lib/mv_web/live/member_live/show.ex:55 #: lib/mv_web/live/member_live/show.ex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Join Date" msgid "Join Date"
msgstr "Beitrittsdatum" msgstr "Beitrittsdatum"
#: lib/mv_web/live/member_live/form.ex:46 #: lib/mv_web/live/member_live/form.ex:84
#: lib/mv_web/live/member_live/show.ex:49 #: lib/mv_web/live/member_live/show.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Last Name" msgid "Last Name"
msgstr "Nachname" msgstr "Nachname"
#: lib/mv_web/live/member_live/form.ex:44
#: lib/mv_web/live/member_live/index.html.heex:29 #: lib/mv_web/live/member_live/index.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Member" msgid "New Member"
@ -108,49 +109,45 @@ msgstr "Keine Internetverbindung gefunden"
msgid "close" msgid "close"
msgstr "schließen" msgstr "schließen"
#: lib/mv_web/live/member_live/form.ex:51 #: lib/mv_web/live/member_live/form.ex:120
#: lib/mv_web/live/member_live/show.ex:56 #: lib/mv_web/live/member_live/show.ex:98
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Exit Date" msgid "Exit Date"
msgstr "Austrittsdatum" msgstr "Austrittsdatum"
#: lib/mv_web/live/member_live/form.ex:55
#: lib/mv_web/live/member_live/index.html.heex:148 #: lib/mv_web/live/member_live/index.html.heex:148
#: lib/mv_web/live/member_live/show.ex:60
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "House Number" msgid "House Number"
msgstr "Hausnummer" msgstr "Hausnummer"
#: lib/mv_web/live/member_live/form.ex:52 #: lib/mv_web/live/member_live/form.ex:126
#: lib/mv_web/live/member_live/show.ex:57 #: lib/mv_web/live/member_live/show.ex:124
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Notes" msgid "Notes"
msgstr "Notizen" msgstr "Notizen"
#: lib/mv_web/live/components/payment_filter_component.ex:94 #: lib/mv_web/live/components/payment_filter_component.ex:94
#: lib/mv_web/live/components/payment_filter_component.ex:144 #: lib/mv_web/live/components/payment_filter_component.ex:144
#: lib/mv_web/live/member_live/form.ex:48 #: lib/mv_web/live/member_live/form.ex:199
#: lib/mv_web/live/member_live/index.html.heex:229 #: lib/mv_web/live/member_live/index.html.heex:229
#: lib/mv_web/live/member_live/show.ex:51 #: lib/mv_web/live/member_live/show.ex:162
#: lib/mv_web/live/member_live/show.ex:164
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Paid" msgid "Paid"
msgstr "Bezahlt" msgstr "Bezahlt"
#: lib/mv_web/live/member_live/form.ex:49
#: lib/mv_web/live/member_live/index.html.heex:202 #: lib/mv_web/live/member_live/index.html.heex:202
#: lib/mv_web/live/member_live/show.ex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Phone Number" msgid "Phone Number"
msgstr "Telefonnummer" msgstr "Telefonnummer"
#: lib/mv_web/live/member_live/form.ex:56 #: lib/mv_web/live/member_live/form.ex:97
#: lib/mv_web/live/member_live/index.html.heex:166 #: lib/mv_web/live/member_live/index.html.heex:166
#: lib/mv_web/live/member_live/show.ex:61
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Postal Code" msgid "Postal Code"
msgstr "Postleitzahl" msgstr "Postleitzahl"
#: lib/mv_web/live/member_live/form.ex:79 #: lib/mv_web/live/member_live/form.ex:211
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save Member" msgid "Save Member"
msgstr "Mitglied speichern" msgstr "Mitglied speichern"
@ -158,58 +155,48 @@ msgstr "Mitglied speichern"
#: lib/mv_web/live/custom_field_live/form.ex:66 #: lib/mv_web/live/custom_field_live/form.ex:66
#: lib/mv_web/live/custom_field_value_live/form.ex:74 #: lib/mv_web/live/custom_field_value_live/form.ex:74
#: lib/mv_web/live/global_settings_live.ex:55 #: lib/mv_web/live/global_settings_live.ex:55
#: lib/mv_web/live/member_live/form.ex:78 #: lib/mv_web/live/member_live/form.ex:48
#: lib/mv_web/live/member_live/form.ex:210
#: lib/mv_web/live/user_live/form.ex:248 #: lib/mv_web/live/user_live/form.ex:248
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saving..." msgid "Saving..."
msgstr "Speichern..." msgstr "Speichern..."
#: lib/mv_web/live/member_live/form.ex:54 #: lib/mv_web/live/member_live/form.ex:91
#: lib/mv_web/live/member_live/index.html.heex:130 #: lib/mv_web/live/member_live/index.html.heex:130
#: lib/mv_web/live/member_live/show.ex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Street" msgid "Street"
msgstr "Straße" msgstr "Straße"
#: lib/mv_web/live/member_live/show.ex:47
#, elixir-autogen, elixir-format
msgid "Id"
msgstr "ID"
#: lib/mv_web/live/member_live/index.html.heex:234 #: lib/mv_web/live/member_live/index.html.heex:234
#: lib/mv_web/live/member_live/index/formatter.ex:61 #: lib/mv_web/live/member_live/index/formatter.ex:61
#: lib/mv_web/live/member_live/show.ex:52 #: lib/mv_web/live/member_live/show.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No" msgid "No"
msgstr "Nein" msgstr "Nein"
#: lib/mv_web/live/member_live/show.ex:115 #: lib/mv_web/live/member_live/show.ex:196
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Show Member" msgid "Show Member"
msgstr "Mitglied anzeigen" msgstr "Mitglied anzeigen"
#: lib/mv_web/live/member_live/show.ex:33
#, elixir-autogen, elixir-format
msgid "This is a member record from your database."
msgstr "Dies ist ein Mitglied aus deiner Datenbank."
#: lib/mv_web/live/member_live/index.html.heex:234 #: lib/mv_web/live/member_live/index.html.heex:234
#: lib/mv_web/live/member_live/index/formatter.ex:60 #: lib/mv_web/live/member_live/index/formatter.ex:60
#: lib/mv_web/live/member_live/show.ex:52 #: lib/mv_web/live/member_live/show.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Yes" msgid "Yes"
msgstr "Ja" msgstr "Ja"
#: lib/mv_web/live/custom_field_live/form.ex:110 #: lib/mv_web/live/custom_field_live/form.ex:110
#: lib/mv_web/live/custom_field_value_live/form.ex:233 #: lib/mv_web/live/custom_field_value_live/form.ex:233
#: lib/mv_web/live/member_live/form.ex:137 #: lib/mv_web/live/member_live/form.ex:269
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "create" msgid "create"
msgstr "erstellt" msgstr "erstellt"
#: lib/mv_web/live/custom_field_live/form.ex:111 #: lib/mv_web/live/custom_field_live/form.ex:111
#: lib/mv_web/live/custom_field_value_live/form.ex:234 #: lib/mv_web/live/custom_field_value_live/form.ex:234
#: lib/mv_web/live/member_live/form.ex:138 #: lib/mv_web/live/member_live/form.ex:270
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "update" msgid "update"
msgstr "aktualisiert" msgstr "aktualisiert"
@ -219,7 +206,7 @@ msgstr "aktualisiert"
msgid "Incorrect email or password" msgid "Incorrect email or password"
msgstr "Falsche E-Mail oder Passwort" msgstr "Falsche E-Mail oder Passwort"
#: lib/mv_web/live/member_live/form.ex:144 #: lib/mv_web/live/member_live/form.ex:276
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Member %{action} successfully" msgid "Member %{action} successfully"
msgstr "Mitglied %{action} erfolgreich" msgstr "Mitglied %{action} erfolgreich"
@ -252,7 +239,7 @@ msgstr "Ihr Passwort wurde erfolgreich zurückgesetzt"
#: lib/mv_web/live/custom_field_live/form.ex:69 #: lib/mv_web/live/custom_field_live/form.ex:69
#: lib/mv_web/live/custom_field_live/index.ex:120 #: lib/mv_web/live/custom_field_live/index.ex:120
#: lib/mv_web/live/custom_field_value_live/form.ex:77 #: lib/mv_web/live/custom_field_value_live/form.ex:77
#: lib/mv_web/live/member_live/form.ex:81 #: lib/mv_web/live/member_live/form.ex:208
#: lib/mv_web/live/user_live/form.ex:251 #: lib/mv_web/live/user_live/form.ex:251
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Cancel" msgid "Cancel"
@ -300,6 +287,7 @@ msgid "Listing Users"
msgstr "Benutzer*innen auflisten" msgstr "Benutzer*innen auflisten"
#: lib/mv_web/live/custom_field_value_live/form.ex:60 #: lib/mv_web/live/custom_field_value_live/form.ex:60
#: lib/mv_web/live/member_live/form.ex:242
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Member" msgid "Member"
msgstr "Mitglied" msgstr "Mitglied"
@ -427,6 +415,7 @@ msgstr "aufsteigend"
msgid "descending" msgid "descending"
msgstr "absteigend" msgstr "absteigend"
#: lib/mv_web/live/member_live/form.ex:241
#: lib/mv_web/live/user_live/form.ex:265 #: lib/mv_web/live/user_live/form.ex:265
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New" msgid "New"
@ -509,7 +498,7 @@ msgstr "Benutzer*in wird ohne Passwort erstellt. Aktivieren Sie 'Passwort setzen
msgid "Linked Member" msgid "Linked Member"
msgstr "Verknüpftes Mitglied" msgstr "Verknüpftes Mitglied"
#: lib/mv_web/live/member_live/show.ex:62 #: lib/mv_web/live/member_live/show.ex:106
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Linked User" msgid "Linked User"
msgstr "Verknüpfte*r Benutzer*in" msgstr "Verknüpfte*r Benutzer*in"
@ -520,13 +509,12 @@ msgstr "Verknüpfte*r Benutzer*in"
msgid "No member linked" msgid "No member linked"
msgstr "Kein Mitglied verknüpft" msgstr "Kein Mitglied verknüpft"
#: lib/mv_web/live/member_live/show.ex:72 #: lib/mv_web/live/member_live/show.ex:116
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No user linked" msgid "No user linked"
msgstr "Keine*r Benutzer*in verknüpft" msgstr "Keine*r Benutzer*in verknüpft"
#: lib/mv_web/live/member_live/show.ex:36 #: lib/mv_web/live/member_live/show.ex:30
#: lib/mv_web/live/member_live/show.ex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Back to members list" msgid "Back to members list"
msgstr "Zurück zur Mitgliederliste" msgstr "Zurück zur Mitgliederliste"
@ -607,12 +595,6 @@ msgstr "Diese E-Mail-Adresse ist bereits mit einem anderen OIDC-Konto verknüpft
msgid "Choose a custom field" msgid "Choose a custom field"
msgstr "Wähle ein Benutzerdefiniertes Feld" msgstr "Wähle ein Benutzerdefiniertes Feld"
#: lib/mv_web/live/member_live/form.ex:58
#: lib/mv_web/live/member_live/show.ex:77
#, elixir-autogen, elixir-format
msgid "Custom Field Values"
msgstr "Benutzerdefinierte Feldwerte"
#: lib/mv_web/live/custom_field_value_live/form.ex:51 #: lib/mv_web/live/custom_field_value_live/form.ex:51
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Custom field" msgid "Custom field"
@ -649,6 +631,8 @@ msgid "Use this form to manage custom_field records in your database."
msgstr "Verwende dieses Formular, um Benutzerdefinierte Felder in deiner Datenbank zu verwalten." msgstr "Verwende dieses Formular, um Benutzerdefinierte Felder in deiner Datenbank zu verwalten."
#: lib/mv_web/components/layouts/navbar.ex:26 #: lib/mv_web/components/layouts/navbar.ex:26
#: lib/mv_web/live/member_live/form.ex:135
#: lib/mv_web/live/member_live/show.ex:136
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Custom Fields" msgid "Custom Fields"
msgstr "Benutzerdefinierte Felder" msgstr "Benutzerdefinierte Felder"
@ -818,11 +802,6 @@ msgstr "Im E-Mail-Programm öffnen"
msgid "Tip: Paste email addresses into the BCC field for privacy compliance" msgid "Tip: Paste email addresses into the BCC field for privacy compliance"
msgstr "Tipp: E-Mail-Adressen ins BCC-Feld einfügen für Datenschutzkonformität" msgstr "Tipp: E-Mail-Adressen ins BCC-Feld einfügen für Datenschutzkonformität"
#: lib/mv_web/live/member_live/form.ex:40
#, elixir-autogen, elixir-format
msgid "Fields marked with an asterisk (*) cannot be empty."
msgstr "Felder, die mit einem Sternchen (*) markiert sind, dürfen nicht leer bleiben."
#: lib/mv_web/components/core_components.ex:206 #: lib/mv_web/components/core_components.ex:206
#: lib/mv_web/components/core_components.ex:223 #: lib/mv_web/components/core_components.ex:223
#: lib/mv_web/components/core_components.ex:250 #: lib/mv_web/components/core_components.ex:250
@ -853,8 +832,103 @@ msgstr "Nicht bezahlt"
msgid "Payment filter" msgid "Payment filter"
msgstr "Zahlungsfilter" msgstr "Zahlungsfilter"
#~ #: lib/mv_web/live/member_live/form.ex:48 #: lib/mv_web/live/member_live/show.ex:70
#~ #: lib/mv_web/live/member_live/show.ex:51 #, elixir-autogen, elixir-format
msgid "Address"
msgstr "Adresse"
#: lib/mv_web/live/member_live/form.ex:37
#: lib/mv_web/live/member_live/show.ex:32
#, elixir-autogen, elixir-format
msgid "Back"
msgstr "Zurück"
#: lib/mv_web/live/member_live/form.ex:65
#: lib/mv_web/live/member_live/show.ex:50
#, elixir-autogen, elixir-format
msgid "Coming soon"
msgstr "Demnächst verfügbar"
#: lib/mv_web/live/member_live/form.ex:57
#: lib/mv_web/live/member_live/show.ex:48
#, elixir-autogen, elixir-format
msgid "Contact Data"
msgstr "Kontaktdaten"
#: lib/mv_web/live/member_live/form.ex:175
#: lib/mv_web/live/member_live/show.ex:160
#, elixir-autogen, elixir-format
msgid "Contribution"
msgstr "Beitrag"
#: lib/mv_web/live/member_live/form.ex:94
#, elixir-autogen, elixir-format
msgid "Nr."
msgstr "Nr."
#: lib/mv_web/live/member_live/form.ex:186
#: lib/mv_web/live/member_live/show.ex:161
#, elixir-autogen, elixir-format
msgid "Payment Cycle"
msgstr "Zahlungszyklus"
#: lib/mv_web/live/member_live/form.ex:166
#: lib/mv_web/live/member_live/show.ex:153
#, elixir-autogen, elixir-format
msgid "Payment Data"
msgstr "Beitragsdaten"
#: lib/mv_web/live/member_live/form.ex:68
#: lib/mv_web/live/member_live/show.ex:52
#, elixir-autogen, elixir-format
msgid "Payments"
msgstr "Zahlungen"
#: lib/mv_web/live/member_live/show.ex:166
#, elixir-autogen, elixir-format
msgid "Pending"
msgstr "Ausstehend"
#: lib/mv_web/live/member_live/form.ex:76
#: lib/mv_web/live/member_live/show.ex:60
#, elixir-autogen, elixir-format
msgid "Personal Data"
msgstr "Persönliche Daten"
#: lib/mv_web/live/member_live/form.ex:111
#: lib/mv_web/live/member_live/show.ex:87
#, elixir-autogen, elixir-format
msgid "Phone"
msgstr "Telefon"
#: lib/mv_web/live/member_live/form.ex:49
#, elixir-autogen, elixir-format
msgid "Save"
msgstr "Speichern"
#: lib/mv_web/live/member_live/form.ex:169
#: lib/mv_web/live/member_live/show.ex:156
#, elixir-autogen, elixir-format
msgid "This data is for demonstration purposes only (mockup)."
msgstr "Diese Daten dienen nur zu Demonstrationszwecken (Mockup)."
#: lib/mv_web/live/member_live/form.ex:190
#: lib/mv_web/live/member_live/show.ex:161
#, elixir-autogen, elixir-format
msgid "monthly"
msgstr "monatlich"
#: lib/mv_web/live/member_live/form.ex:194
#, elixir-autogen, elixir-format
msgid "yearly"
msgstr "jährlich"
#~ #: lib/mv_web/live/member_live/show.ex:47
#~ #, elixir-autogen, elixir-format #~ #, elixir-autogen, elixir-format
#~ msgid "Birth Date" #~ msgid "Id"
#~ msgstr "Geburtsdatum" #~ msgstr "ID"
#~ #: lib/mv_web/live/member_live/show.ex:33
#~ #, elixir-autogen, elixir-format
#~ msgid "This is a member record from your database."
#~ msgstr "Dies ist ein Mitglied aus deiner Datenbank."

View file

@ -28,9 +28,8 @@ msgstr ""
msgid "Attempting to reconnect" msgid "Attempting to reconnect"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:53 #: lib/mv_web/live/member_live/form.ex:100
#: lib/mv_web/live/member_live/index.html.heex:184 #: lib/mv_web/live/member_live/index.html.heex:184
#: lib/mv_web/live/member_live/show.ex:58
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "City" msgid "City"
msgstr "" msgstr ""
@ -41,6 +40,7 @@ msgstr ""
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:241
#: lib/mv_web/live/member_live/index.html.heex:242 #: lib/mv_web/live/member_live/index.html.heex:242
#: lib/mv_web/live/user_live/form.ex:265 #: lib/mv_web/live/user_live/form.ex:265
#: lib/mv_web/live/user_live/index.html.heex:66 #: lib/mv_web/live/user_live/index.html.heex:66
@ -48,15 +48,15 @@ msgstr ""
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/show.ex:41 #: lib/mv_web/live/member_live/show.ex:40
#: lib/mv_web/live/member_live/show.ex:116 #: lib/mv_web/live/member_live/show.ex:197
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit Member" msgid "Edit Member"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:47 #: lib/mv_web/live/member_live/form.ex:106
#: lib/mv_web/live/member_live/index.html.heex:112 #: lib/mv_web/live/member_live/index.html.heex:112
#: lib/mv_web/live/member_live/show.ex:50 #: lib/mv_web/live/member_live/show.ex:75
#: lib/mv_web/live/user_live/form.ex:46 #: lib/mv_web/live/user_live/form.ex:46
#: lib/mv_web/live/user_live/index.html.heex:44 #: lib/mv_web/live/user_live/index.html.heex:44
#: lib/mv_web/live/user_live/show.ex:50 #: lib/mv_web/live/user_live/show.ex:50
@ -64,25 +64,26 @@ msgstr ""
msgid "Email" msgid "Email"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:45 #: lib/mv_web/live/member_live/form.ex:81
#: lib/mv_web/live/member_live/show.ex:48 #: lib/mv_web/live/member_live/show.ex:64
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "First Name" msgid "First Name"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:50 #: lib/mv_web/live/member_live/form.ex:117
#: lib/mv_web/live/member_live/index.html.heex:220 #: lib/mv_web/live/member_live/index.html.heex:220
#: lib/mv_web/live/member_live/show.ex:55 #: lib/mv_web/live/member_live/show.ex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Join Date" msgid "Join Date"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:46 #: lib/mv_web/live/member_live/form.ex:84
#: lib/mv_web/live/member_live/show.ex:49 #: lib/mv_web/live/member_live/show.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Last Name" msgid "Last Name"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:44
#: lib/mv_web/live/member_live/index.html.heex:29 #: lib/mv_web/live/member_live/index.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Member" msgid "New Member"
@ -109,49 +110,45 @@ msgstr ""
msgid "close" msgid "close"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:51 #: lib/mv_web/live/member_live/form.ex:120
#: lib/mv_web/live/member_live/show.ex:56 #: lib/mv_web/live/member_live/show.ex:98
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Exit Date" msgid "Exit Date"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:55
#: lib/mv_web/live/member_live/index.html.heex:148 #: lib/mv_web/live/member_live/index.html.heex:148
#: lib/mv_web/live/member_live/show.ex:60
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "House Number" msgid "House Number"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:52 #: lib/mv_web/live/member_live/form.ex:126
#: lib/mv_web/live/member_live/show.ex:57 #: lib/mv_web/live/member_live/show.ex:124
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Notes" msgid "Notes"
msgstr "" msgstr ""
#: lib/mv_web/live/components/payment_filter_component.ex:94 #: lib/mv_web/live/components/payment_filter_component.ex:94
#: lib/mv_web/live/components/payment_filter_component.ex:144 #: lib/mv_web/live/components/payment_filter_component.ex:144
#: lib/mv_web/live/member_live/form.ex:48 #: lib/mv_web/live/member_live/form.ex:199
#: lib/mv_web/live/member_live/index.html.heex:229 #: lib/mv_web/live/member_live/index.html.heex:229
#: lib/mv_web/live/member_live/show.ex:51 #: lib/mv_web/live/member_live/show.ex:162
#: lib/mv_web/live/member_live/show.ex:164
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Paid" msgid "Paid"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:49
#: lib/mv_web/live/member_live/index.html.heex:202 #: lib/mv_web/live/member_live/index.html.heex:202
#: lib/mv_web/live/member_live/show.ex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Phone Number" msgid "Phone Number"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:56 #: lib/mv_web/live/member_live/form.ex:97
#: lib/mv_web/live/member_live/index.html.heex:166 #: lib/mv_web/live/member_live/index.html.heex:166
#: lib/mv_web/live/member_live/show.ex:61
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Postal Code" msgid "Postal Code"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:79 #: lib/mv_web/live/member_live/form.ex:211
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save Member" msgid "Save Member"
msgstr "" msgstr ""
@ -159,58 +156,48 @@ msgstr ""
#: lib/mv_web/live/custom_field_live/form.ex:66 #: lib/mv_web/live/custom_field_live/form.ex:66
#: lib/mv_web/live/custom_field_value_live/form.ex:74 #: lib/mv_web/live/custom_field_value_live/form.ex:74
#: lib/mv_web/live/global_settings_live.ex:55 #: lib/mv_web/live/global_settings_live.ex:55
#: lib/mv_web/live/member_live/form.ex:78 #: lib/mv_web/live/member_live/form.ex:48
#: lib/mv_web/live/member_live/form.ex:210
#: lib/mv_web/live/user_live/form.ex:248 #: lib/mv_web/live/user_live/form.ex:248
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saving..." msgid "Saving..."
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:54 #: lib/mv_web/live/member_live/form.ex:91
#: lib/mv_web/live/member_live/index.html.heex:130 #: lib/mv_web/live/member_live/index.html.heex:130
#: lib/mv_web/live/member_live/show.ex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Street" msgid "Street"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/show.ex:47
#, elixir-autogen, elixir-format
msgid "Id"
msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:234 #: lib/mv_web/live/member_live/index.html.heex:234
#: lib/mv_web/live/member_live/index/formatter.ex:61 #: lib/mv_web/live/member_live/index/formatter.ex:61
#: lib/mv_web/live/member_live/show.ex:52 #: lib/mv_web/live/member_live/show.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No" msgid "No"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/show.ex:115 #: lib/mv_web/live/member_live/show.ex:196
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show Member" msgid "Show Member"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/show.ex:33
#, elixir-autogen, elixir-format
msgid "This is a member record from your database."
msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:234 #: lib/mv_web/live/member_live/index.html.heex:234
#: lib/mv_web/live/member_live/index/formatter.ex:60 #: lib/mv_web/live/member_live/index/formatter.ex:60
#: lib/mv_web/live/member_live/show.ex:52 #: lib/mv_web/live/member_live/show.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Yes" msgid "Yes"
msgstr "" msgstr ""
#: lib/mv_web/live/custom_field_live/form.ex:110 #: lib/mv_web/live/custom_field_live/form.ex:110
#: lib/mv_web/live/custom_field_value_live/form.ex:233 #: lib/mv_web/live/custom_field_value_live/form.ex:233
#: lib/mv_web/live/member_live/form.ex:137 #: lib/mv_web/live/member_live/form.ex:269
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "create" msgid "create"
msgstr "" msgstr ""
#: lib/mv_web/live/custom_field_live/form.ex:111 #: lib/mv_web/live/custom_field_live/form.ex:111
#: lib/mv_web/live/custom_field_value_live/form.ex:234 #: lib/mv_web/live/custom_field_value_live/form.ex:234
#: lib/mv_web/live/member_live/form.ex:138 #: lib/mv_web/live/member_live/form.ex:270
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "update" msgid "update"
msgstr "" msgstr ""
@ -220,7 +207,7 @@ msgstr ""
msgid "Incorrect email or password" msgid "Incorrect email or password"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:144 #: lib/mv_web/live/member_live/form.ex:276
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Member %{action} successfully" msgid "Member %{action} successfully"
msgstr "" msgstr ""
@ -253,7 +240,7 @@ msgstr ""
#: lib/mv_web/live/custom_field_live/form.ex:69 #: lib/mv_web/live/custom_field_live/form.ex:69
#: lib/mv_web/live/custom_field_live/index.ex:120 #: lib/mv_web/live/custom_field_live/index.ex:120
#: lib/mv_web/live/custom_field_value_live/form.ex:77 #: lib/mv_web/live/custom_field_value_live/form.ex:77
#: lib/mv_web/live/member_live/form.ex:81 #: lib/mv_web/live/member_live/form.ex:208
#: lib/mv_web/live/user_live/form.ex:251 #: lib/mv_web/live/user_live/form.ex:251
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Cancel" msgid "Cancel"
@ -301,6 +288,7 @@ msgid "Listing Users"
msgstr "" msgstr ""
#: lib/mv_web/live/custom_field_value_live/form.ex:60 #: lib/mv_web/live/custom_field_value_live/form.ex:60
#: lib/mv_web/live/member_live/form.ex:242
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Member" msgid "Member"
msgstr "" msgstr ""
@ -428,6 +416,7 @@ msgstr ""
msgid "descending" msgid "descending"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:241
#: lib/mv_web/live/user_live/form.ex:265 #: lib/mv_web/live/user_live/form.ex:265
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New" msgid "New"
@ -510,7 +499,7 @@ msgstr ""
msgid "Linked Member" msgid "Linked Member"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/show.ex:62 #: lib/mv_web/live/member_live/show.ex:106
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Linked User" msgid "Linked User"
msgstr "" msgstr ""
@ -521,13 +510,12 @@ msgstr ""
msgid "No member linked" msgid "No member linked"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/show.ex:72 #: lib/mv_web/live/member_live/show.ex:116
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No user linked" msgid "No user linked"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/show.ex:36 #: lib/mv_web/live/member_live/show.ex:30
#: lib/mv_web/live/member_live/show.ex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Back to members list" msgid "Back to members list"
msgstr "" msgstr ""
@ -608,12 +596,6 @@ msgstr ""
msgid "Choose a custom field" msgid "Choose a custom field"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:58
#: lib/mv_web/live/member_live/show.ex:77
#, elixir-autogen, elixir-format
msgid "Custom Field Values"
msgstr ""
#: lib/mv_web/live/custom_field_value_live/form.ex:51 #: lib/mv_web/live/custom_field_value_live/form.ex:51
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Custom field" msgid "Custom field"
@ -650,6 +632,8 @@ msgid "Use this form to manage custom_field records in your database."
msgstr "" msgstr ""
#: lib/mv_web/components/layouts/navbar.ex:26 #: lib/mv_web/components/layouts/navbar.ex:26
#: lib/mv_web/live/member_live/form.ex:135
#: lib/mv_web/live/member_live/show.ex:136
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Custom Fields" msgid "Custom Fields"
msgstr "" msgstr ""
@ -819,11 +803,6 @@ msgstr ""
msgid "Tip: Paste email addresses into the BCC field for privacy compliance" msgid "Tip: Paste email addresses into the BCC field for privacy compliance"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:40
#, elixir-autogen, elixir-format
msgid "Fields marked with an asterisk (*) cannot be empty."
msgstr ""
#: lib/mv_web/components/core_components.ex:206 #: lib/mv_web/components/core_components.ex:206
#: lib/mv_web/components/core_components.ex:223 #: lib/mv_web/components/core_components.ex:223
#: lib/mv_web/components/core_components.ex:250 #: lib/mv_web/components/core_components.ex:250
@ -853,3 +832,94 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Payment filter" msgid "Payment filter"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/show.ex:70
#, elixir-autogen, elixir-format
msgid "Address"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:37
#: lib/mv_web/live/member_live/show.ex:32
#, elixir-autogen, elixir-format
msgid "Back"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:65
#: lib/mv_web/live/member_live/show.ex:50
#, elixir-autogen, elixir-format
msgid "Coming soon"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:57
#: lib/mv_web/live/member_live/show.ex:48
#, elixir-autogen, elixir-format
msgid "Contact Data"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:175
#: lib/mv_web/live/member_live/show.ex:160
#, elixir-autogen, elixir-format
msgid "Contribution"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:94
#, elixir-autogen, elixir-format
msgid "Nr."
msgstr ""
#: lib/mv_web/live/member_live/form.ex:186
#: lib/mv_web/live/member_live/show.ex:161
#, elixir-autogen, elixir-format
msgid "Payment Cycle"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:166
#: lib/mv_web/live/member_live/show.ex:153
#, elixir-autogen, elixir-format
msgid "Payment Data"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:68
#: lib/mv_web/live/member_live/show.ex:52
#, elixir-autogen, elixir-format
msgid "Payments"
msgstr ""
#: lib/mv_web/live/member_live/show.ex:166
#, elixir-autogen, elixir-format
msgid "Pending"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:76
#: lib/mv_web/live/member_live/show.ex:60
#, elixir-autogen, elixir-format
msgid "Personal Data"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:111
#: lib/mv_web/live/member_live/show.ex:87
#, elixir-autogen, elixir-format
msgid "Phone"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:49
#, elixir-autogen, elixir-format
msgid "Save"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:169
#: lib/mv_web/live/member_live/show.ex:156
#, elixir-autogen, elixir-format
msgid "This data is for demonstration purposes only (mockup)."
msgstr ""
#: lib/mv_web/live/member_live/form.ex:190
#: lib/mv_web/live/member_live/show.ex:161
#, elixir-autogen, elixir-format
msgid "monthly"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:194
#, elixir-autogen, elixir-format
msgid "yearly"
msgstr ""

View file

@ -28,9 +28,8 @@ msgstr ""
msgid "Attempting to reconnect" msgid "Attempting to reconnect"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:53 #: lib/mv_web/live/member_live/form.ex:100
#: lib/mv_web/live/member_live/index.html.heex:184 #: lib/mv_web/live/member_live/index.html.heex:184
#: lib/mv_web/live/member_live/show.ex:58
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "City" msgid "City"
msgstr "" msgstr ""
@ -41,6 +40,7 @@ msgstr ""
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:241
#: lib/mv_web/live/member_live/index.html.heex:242 #: lib/mv_web/live/member_live/index.html.heex:242
#: lib/mv_web/live/user_live/form.ex:265 #: lib/mv_web/live/user_live/form.ex:265
#: lib/mv_web/live/user_live/index.html.heex:66 #: lib/mv_web/live/user_live/index.html.heex:66
@ -48,15 +48,15 @@ msgstr ""
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/show.ex:41 #: lib/mv_web/live/member_live/show.ex:40
#: lib/mv_web/live/member_live/show.ex:116 #: lib/mv_web/live/member_live/show.ex:197
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit Member" msgid "Edit Member"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:47 #: lib/mv_web/live/member_live/form.ex:106
#: lib/mv_web/live/member_live/index.html.heex:112 #: lib/mv_web/live/member_live/index.html.heex:112
#: lib/mv_web/live/member_live/show.ex:50 #: lib/mv_web/live/member_live/show.ex:75
#: lib/mv_web/live/user_live/form.ex:46 #: lib/mv_web/live/user_live/form.ex:46
#: lib/mv_web/live/user_live/index.html.heex:44 #: lib/mv_web/live/user_live/index.html.heex:44
#: lib/mv_web/live/user_live/show.ex:50 #: lib/mv_web/live/user_live/show.ex:50
@ -64,25 +64,26 @@ msgstr ""
msgid "Email" msgid "Email"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:45 #: lib/mv_web/live/member_live/form.ex:81
#: lib/mv_web/live/member_live/show.ex:48 #: lib/mv_web/live/member_live/show.ex:64
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "First Name" msgid "First Name"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:50 #: lib/mv_web/live/member_live/form.ex:117
#: lib/mv_web/live/member_live/index.html.heex:220 #: lib/mv_web/live/member_live/index.html.heex:220
#: lib/mv_web/live/member_live/show.ex:55 #: lib/mv_web/live/member_live/show.ex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Join Date" msgid "Join Date"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:46 #: lib/mv_web/live/member_live/form.ex:84
#: lib/mv_web/live/member_live/show.ex:49 #: lib/mv_web/live/member_live/show.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Last Name" msgid "Last Name"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:44
#: lib/mv_web/live/member_live/index.html.heex:29 #: lib/mv_web/live/member_live/index.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Member" msgid "New Member"
@ -109,49 +110,45 @@ msgstr ""
msgid "close" msgid "close"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:51 #: lib/mv_web/live/member_live/form.ex:120
#: lib/mv_web/live/member_live/show.ex:56 #: lib/mv_web/live/member_live/show.ex:98
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Exit Date" msgid "Exit Date"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:55
#: lib/mv_web/live/member_live/index.html.heex:148 #: lib/mv_web/live/member_live/index.html.heex:148
#: lib/mv_web/live/member_live/show.ex:60
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "House Number" msgid "House Number"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:52 #: lib/mv_web/live/member_live/form.ex:126
#: lib/mv_web/live/member_live/show.ex:57 #: lib/mv_web/live/member_live/show.ex:124
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Notes" msgid "Notes"
msgstr "" msgstr ""
#: lib/mv_web/live/components/payment_filter_component.ex:94 #: lib/mv_web/live/components/payment_filter_component.ex:94
#: lib/mv_web/live/components/payment_filter_component.ex:144 #: lib/mv_web/live/components/payment_filter_component.ex:144
#: lib/mv_web/live/member_live/form.ex:48 #: lib/mv_web/live/member_live/form.ex:199
#: lib/mv_web/live/member_live/index.html.heex:229 #: lib/mv_web/live/member_live/index.html.heex:229
#: lib/mv_web/live/member_live/show.ex:51 #: lib/mv_web/live/member_live/show.ex:162
#: lib/mv_web/live/member_live/show.ex:164
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Paid" msgid "Paid"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:49
#: lib/mv_web/live/member_live/index.html.heex:202 #: lib/mv_web/live/member_live/index.html.heex:202
#: lib/mv_web/live/member_live/show.ex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Phone Number" msgid "Phone Number"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:56 #: lib/mv_web/live/member_live/form.ex:97
#: lib/mv_web/live/member_live/index.html.heex:166 #: lib/mv_web/live/member_live/index.html.heex:166
#: lib/mv_web/live/member_live/show.ex:61
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Postal Code" msgid "Postal Code"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:79 #: lib/mv_web/live/member_live/form.ex:211
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Save Member" msgid "Save Member"
msgstr "" msgstr ""
@ -159,58 +156,48 @@ msgstr ""
#: lib/mv_web/live/custom_field_live/form.ex:66 #: lib/mv_web/live/custom_field_live/form.ex:66
#: lib/mv_web/live/custom_field_value_live/form.ex:74 #: lib/mv_web/live/custom_field_value_live/form.ex:74
#: lib/mv_web/live/global_settings_live.ex:55 #: lib/mv_web/live/global_settings_live.ex:55
#: lib/mv_web/live/member_live/form.ex:78 #: lib/mv_web/live/member_live/form.ex:48
#: lib/mv_web/live/member_live/form.ex:210
#: lib/mv_web/live/user_live/form.ex:248 #: lib/mv_web/live/user_live/form.ex:248
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saving..." msgid "Saving..."
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:54 #: lib/mv_web/live/member_live/form.ex:91
#: lib/mv_web/live/member_live/index.html.heex:130 #: lib/mv_web/live/member_live/index.html.heex:130
#: lib/mv_web/live/member_live/show.ex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Street" msgid "Street"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/show.ex:47
#, elixir-autogen, elixir-format
msgid "Id"
msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:234 #: lib/mv_web/live/member_live/index.html.heex:234
#: lib/mv_web/live/member_live/index/formatter.ex:61 #: lib/mv_web/live/member_live/index/formatter.ex:61
#: lib/mv_web/live/member_live/show.ex:52 #: lib/mv_web/live/member_live/show.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No" msgid "No"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/show.ex:115 #: lib/mv_web/live/member_live/show.ex:196
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Show Member" msgid "Show Member"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/show.ex:33
#, elixir-autogen, elixir-format
msgid "This is a member record from your database."
msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:234 #: lib/mv_web/live/member_live/index.html.heex:234
#: lib/mv_web/live/member_live/index/formatter.ex:60 #: lib/mv_web/live/member_live/index/formatter.ex:60
#: lib/mv_web/live/member_live/show.ex:52 #: lib/mv_web/live/member_live/show.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Yes" msgid "Yes"
msgstr "" msgstr ""
#: lib/mv_web/live/custom_field_live/form.ex:110 #: lib/mv_web/live/custom_field_live/form.ex:110
#: lib/mv_web/live/custom_field_value_live/form.ex:233 #: lib/mv_web/live/custom_field_value_live/form.ex:233
#: lib/mv_web/live/member_live/form.ex:137 #: lib/mv_web/live/member_live/form.ex:269
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "create" msgid "create"
msgstr "" msgstr ""
#: lib/mv_web/live/custom_field_live/form.ex:111 #: lib/mv_web/live/custom_field_live/form.ex:111
#: lib/mv_web/live/custom_field_value_live/form.ex:234 #: lib/mv_web/live/custom_field_value_live/form.ex:234
#: lib/mv_web/live/member_live/form.ex:138 #: lib/mv_web/live/member_live/form.ex:270
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "update" msgid "update"
msgstr "" msgstr ""
@ -220,7 +207,7 @@ msgstr ""
msgid "Incorrect email or password" msgid "Incorrect email or password"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:144 #: lib/mv_web/live/member_live/form.ex:276
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Member %{action} successfully" msgid "Member %{action} successfully"
msgstr "" msgstr ""
@ -253,7 +240,7 @@ msgstr ""
#: lib/mv_web/live/custom_field_live/form.ex:69 #: lib/mv_web/live/custom_field_live/form.ex:69
#: lib/mv_web/live/custom_field_live/index.ex:120 #: lib/mv_web/live/custom_field_live/index.ex:120
#: lib/mv_web/live/custom_field_value_live/form.ex:77 #: lib/mv_web/live/custom_field_value_live/form.ex:77
#: lib/mv_web/live/member_live/form.ex:81 #: lib/mv_web/live/member_live/form.ex:208
#: lib/mv_web/live/user_live/form.ex:251 #: lib/mv_web/live/user_live/form.ex:251
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Cancel" msgid "Cancel"
@ -301,6 +288,7 @@ msgid "Listing Users"
msgstr "" msgstr ""
#: lib/mv_web/live/custom_field_value_live/form.ex:60 #: lib/mv_web/live/custom_field_value_live/form.ex:60
#: lib/mv_web/live/member_live/form.ex:242
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Member" msgid "Member"
msgstr "" msgstr ""
@ -428,6 +416,7 @@ msgstr ""
msgid "descending" msgid "descending"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:241
#: lib/mv_web/live/user_live/form.ex:265 #: lib/mv_web/live/user_live/form.ex:265
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New" msgid "New"
@ -510,7 +499,7 @@ msgstr "User will be created without a password. Check 'Set Password' to add one
msgid "Linked Member" msgid "Linked Member"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/show.ex:62 #: lib/mv_web/live/member_live/show.ex:106
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Linked User" msgid "Linked User"
msgstr "" msgstr ""
@ -521,13 +510,12 @@ msgstr ""
msgid "No member linked" msgid "No member linked"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/show.ex:72 #: lib/mv_web/live/member_live/show.ex:116
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No user linked" msgid "No user linked"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/show.ex:36 #: lib/mv_web/live/member_live/show.ex:30
#: lib/mv_web/live/member_live/show.ex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Back to members list" msgid "Back to members list"
msgstr "" msgstr ""
@ -608,12 +596,6 @@ msgstr ""
msgid "Choose a custom field" msgid "Choose a custom field"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:58
#: lib/mv_web/live/member_live/show.ex:77
#, elixir-autogen, elixir-format
msgid "Custom Field Values"
msgstr ""
#: lib/mv_web/live/custom_field_value_live/form.ex:51 #: lib/mv_web/live/custom_field_value_live/form.ex:51
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Custom field" msgid "Custom field"
@ -650,6 +632,8 @@ msgid "Use this form to manage custom_field records in your database."
msgstr "" msgstr ""
#: lib/mv_web/components/layouts/navbar.ex:26 #: lib/mv_web/components/layouts/navbar.ex:26
#: lib/mv_web/live/member_live/form.ex:135
#: lib/mv_web/live/member_live/show.ex:136
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Custom Fields" msgid "Custom Fields"
msgstr "" msgstr ""
@ -819,11 +803,6 @@ msgstr ""
msgid "Tip: Paste email addresses into the BCC field for privacy compliance" msgid "Tip: Paste email addresses into the BCC field for privacy compliance"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:40
#, elixir-autogen, elixir-format
msgid "Fields marked with an asterisk (*) cannot be empty."
msgstr ""
#: lib/mv_web/components/core_components.ex:206 #: lib/mv_web/components/core_components.ex:206
#: lib/mv_web/components/core_components.ex:223 #: lib/mv_web/components/core_components.ex:223
#: lib/mv_web/components/core_components.ex:250 #: lib/mv_web/components/core_components.ex:250
@ -854,8 +833,103 @@ msgstr ""
msgid "Payment filter" msgid "Payment filter"
msgstr "" msgstr ""
#~ #: lib/mv_web/live/member_live/form.ex:48 #: lib/mv_web/live/member_live/show.ex:70
#~ #: lib/mv_web/live/member_live/show.ex:51 #, elixir-autogen, elixir-format
msgid "Address"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:37
#: lib/mv_web/live/member_live/show.ex:32
#, elixir-autogen, elixir-format
msgid "Back"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:65
#: lib/mv_web/live/member_live/show.ex:50
#, elixir-autogen, elixir-format
msgid "Coming soon"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:57
#: lib/mv_web/live/member_live/show.ex:48
#, elixir-autogen, elixir-format
msgid "Contact Data"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:175
#: lib/mv_web/live/member_live/show.ex:160
#, elixir-autogen, elixir-format
msgid "Contribution"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:94
#, elixir-autogen, elixir-format
msgid "Nr."
msgstr ""
#: lib/mv_web/live/member_live/form.ex:186
#: lib/mv_web/live/member_live/show.ex:161
#, elixir-autogen, elixir-format, fuzzy
msgid "Payment Cycle"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:166
#: lib/mv_web/live/member_live/show.ex:153
#, elixir-autogen, elixir-format
msgid "Payment Data"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:68
#: lib/mv_web/live/member_live/show.ex:52
#, elixir-autogen, elixir-format
msgid "Payments"
msgstr ""
#: lib/mv_web/live/member_live/show.ex:166
#, elixir-autogen, elixir-format, fuzzy
msgid "Pending"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:76
#: lib/mv_web/live/member_live/show.ex:60
#, elixir-autogen, elixir-format
msgid "Personal Data"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:111
#: lib/mv_web/live/member_live/show.ex:87
#, elixir-autogen, elixir-format, fuzzy
msgid "Phone"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:49
#, elixir-autogen, elixir-format, fuzzy
msgid "Save"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:169
#: lib/mv_web/live/member_live/show.ex:156
#, elixir-autogen, elixir-format
msgid "This data is for demonstration purposes only (mockup)."
msgstr ""
#: lib/mv_web/live/member_live/form.ex:190
#: lib/mv_web/live/member_live/show.ex:161
#, elixir-autogen, elixir-format
msgid "monthly"
msgstr ""
#: lib/mv_web/live/member_live/form.ex:194
#, elixir-autogen, elixir-format
msgid "yearly"
msgstr ""
#~ #: lib/mv_web/live/member_live/show.ex:47
#~ #, elixir-autogen, elixir-format #~ #, elixir-autogen, elixir-format
#~ msgid "Birth Date" #~ msgid "Id"
#~ msgstr ""
#~ #: lib/mv_web/live/member_live/show.ex:33
#~ #, elixir-autogen, elixir-format
#~ msgid "This is a member record from your database."
#~ msgstr "" #~ msgstr ""