diff --git a/lib/mv_web/live/member_live/form.ex b/lib/mv_web/live/member_live/form.ex
index 5370154..5380d0f 100644
--- a/lib/mv_web/live/member_live/form.ex
+++ b/lib/mv_web/live/member_live/form.ex
@@ -5,80 +5,212 @@ defmodule MvWeb.MemberLive.Form do
## Features
- Create new members with personal information
- 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
- - Link/unlink user accounts
- ## Form Fields
- **Required:**
- - first_name, last_name, email
-
- **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.
+ ## Form Sections
+ - Personal Data: Name, address, contact information, membership dates, notes
+ - Custom Fields: Dynamic fields in uniform grid layout (displayed sorted by name)
+ - Payment Data: Mockup section (not editable)
## Events
- `validate` - Real-time form validation
- `save` - Submit form (create or update member)
- - Custom field value management events for adding/removing custom fields
"""
use MvWeb, :live_view
@impl true
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"""
- <.header>
- {@page_title}
- <:subtitle>
- {gettext("Fields marked with an asterisk (*) cannot be empty.")}
-
-
-
<.form for={@form} id="member-form" phx-change="validate" phx-submit="save">
- <.input field={@form[:first_name]} label={gettext("First Name")} required />
- <.input field={@form[:last_name]} label={gettext("Last Name")} required />
- <.input field={@form[:email]} label={gettext("Email")} required type="email" />
- <.input field={@form[:paid]} label={gettext("Paid")} type="checkbox" />
- <.input field={@form[:phone_number]} label={gettext("Phone Number")} />
- <.input field={@form[:join_date]} label={gettext("Join Date")} type="date" />
- <.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")} />
+ <%!-- Header with Back button, Name display, and Save button --%>
+
+ <.button navigate={return_path(@return_to, @member)} type="button">
+ <.icon name="hero-arrow-left" class="size-4" />
+ {gettext("Back")}
+
-
{gettext("Custom Field Values")}
- <.inputs_for :let={f_custom_field_value} field={@form[:custom_field_values]}>
- <% type =
- Enum.find(@custom_fields, &(&1.id == f_custom_field_value[:custom_field_id].value)) %>
- <.inputs_for :let={value_form} field={f_custom_field_value[:value]}>
- <% input_type =
- cond do
- type && type.value_type == :boolean -> "checkbox"
- type && type.value_type == :date -> :date
- true -> :text
- end %>
- <.input field={value_form[:value]} label={type && type.name} type={input_type} />
-
-
-
+
+ <%= if @member do %>
+ {@member.first_name} {@member.last_name}
+ <% else %>
+ {gettext("New Member")}
+ <% end %>
+
- <.button phx-disable-with={gettext("Saving...")} variant="primary">
- {gettext("Save Member")}
-
- <.button navigate={return_path(@return_to, @member)}>{gettext("Cancel")}
+ <.button phx-disable-with={gettext("Saving...")} variant="primary" type="submit">
+ {gettext("Save")}
+
+
+
+ <%!-- Tab Navigation --%>
+
+
+ <.icon name="hero-identification" class="size-4 mr-2" />
+ {gettext("Contact Data")}
+
+
+ <.icon name="hero-credit-card" class="size-4 mr-2" />
+ {gettext("Payments")}
+
+
+
+ <%!-- Personal Data and Custom Fields Row --%>
+
+ <%!-- Personal Data Section --%>
+
+ <.form_section title={gettext("Personal Data")}>
+
+ <%!-- Name Row --%>
+
+
+ <.input field={@form[:first_name]} label={gettext("First Name")} required />
+
+
+ <.input field={@form[:last_name]} label={gettext("Last Name")} required />
+
+
+
+ <%!-- Address Row --%>
+
+
+ <.input field={@form[:street]} label={gettext("Street")} />
+
+
+ <.input field={@form[:house_number]} label={gettext("Nr.")} />
+
+
+ <.input field={@form[:postal_code]} label={gettext("Postal Code")} />
+
+
+ <.input field={@form[:city]} label={gettext("City")} />
+
+
+
+ <%!-- Email --%>
+
+ <.input field={@form[:email]} label={gettext("Email")} required type="email" />
+
+
+ <%!-- Phone --%>
+
+ <.input field={@form[:phone_number]} label={gettext("Phone")} type="tel" />
+
+
+ <%!-- Membership Dates Row --%>
+
+
+ <.input field={@form[:join_date]} label={gettext("Join Date")} type="date" />
+
+
+ <.input field={@form[:exit_date]} label={gettext("Exit Date")} type="date" />
+
+
+
+ <%!-- Notes --%>
+
+ <.input field={@form[:notes]} label={gettext("Notes")} type="textarea" />
+
+
+
+
+
+ <%!-- Custom Fields Section --%>
+ <%= if Enum.any?(@custom_fields) do %>
+
+ <.form_section title={gettext("Custom Fields")}>
+
+ <%!-- 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 %>
+
+ <.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)}
+ />
+
+
+
+ <% end %>
+
+ <% end %>
+
+
+
+ <% end %>
+
+
+ <%!-- Payment Data Section (Mockup) --%>
+
+ <.form_section title={gettext("Payment Data")}>
+
+ <.icon name="hero-information-circle" class="size-5" />
+ {gettext("This data is for demonstration purposes only (mockup).")}
+
+
+
+
+
+ {gettext("Contribution")}
+
+
+
+
+
+ <.input field={@form[:paid]} label={gettext("Paid")} type="checkbox" />
+
+
+
+
+
+ <%!-- Bottom Action Buttons --%>
+
+ <.button navigate={return_path(@return_to, @member)} type="button">
+ {gettext("Cancel")}
+
+ <.button phx-disable-with={gettext("Saving...")} variant="primary" type="submit">
+ {gettext("Save Member")}
+
+
"""
@@ -106,8 +238,8 @@ defmodule MvWeb.MemberLive.Form do
id -> Ash.get!(Mv.Membership.Member, id)
end
- action = if is_nil(member), do: "New", else: "Edit"
- page_title = action <> " " <> "Member"
+ page_title =
+ if is_nil(member), do: gettext("Create Member"), else: gettext("Edit Member")
{:ok,
socket
@@ -213,5 +345,37 @@ defmodule MvWeb.MemberLive.Form do
end
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}"
+
+ # -----------------------------------------------------------------
+ # 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"""
+
+ {@title}
+
+ {render_slot(@inner_block)}
+
+
+ """
+ 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
diff --git a/lib/mv_web/live/member_live/show.ex b/lib/mv_web/live/member_live/show.ex
index 7601f46..d84fca4 100644
--- a/lib/mv_web/live/member_live/show.ex
+++ b/lib/mv_web/live/member_live/show.ex
@@ -3,19 +3,16 @@ defmodule MvWeb.MemberLive.Show do
LiveView for displaying a single member's details.
## Features
- - Display all member information (personal, contact, address)
- - Show linked user account (if exists)
- - Display custom field values
+ - Display all member information in grouped sections
+ - Tab navigation for future features (Payments)
+ - Show custom field values with type-based formatting
- Navigate to edit form
- Return to member list
- ## Displayed Information
- - Basic: name, email, dates (join, exit)
- - Contact: phone number
- - Address: street, house number, postal code, city
- - Status: paid flag
- - Relationships: linked user account
- - Custom: dynamic custom field values from CustomFields
+ ## Sections
+ - Personal Data: Name, address, contact information, membership dates, notes
+ - Custom Fields: Dynamic fields in uniform grid layout (sorted by name)
+ - Payment Data: Mockup section with placeholder data
## Navigation
- Back to member list
@@ -23,69 +20,155 @@ defmodule MvWeb.MemberLive.Show do
"""
use MvWeb, :live_view
import Ash.Query
- alias MvWeb.Helpers.DateFormatter
@impl true
def render(assigns) do
~H"""
- <.header>
- {@member.first_name} {@member.last_name}
- <:subtitle>{gettext("This is a member record from your database.")}
+ <%!-- Header with Back button, Name, and Edit button --%>
+
+ <.button navigate={~p"/members"} aria-label={gettext("Back to members list")}>
+ <.icon name="hero-arrow-left" class="size-4" />
+ {gettext("Back")}
+
- <:actions>
- <.button navigate={~p"/members"} aria-label={gettext("Back to members list")}>
- <.icon name="hero-arrow-left" />
- {gettext("Back to members list")}
-
- <.button variant="primary" navigate={~p"/members/#{@member}/edit?return_to=show"}>
- <.icon name="hero-pencil-square" /> {gettext("Edit Member")}
-
-
-
+
+ {@member.first_name} {@member.last_name}
+
- <.list>
- <:item title={gettext("Id")}>{@member.id}
- <:item title={gettext("First Name")}>{@member.first_name}
- <:item title={gettext("Last Name")}>{@member.last_name}
- <:item title={gettext("Email")}>{@member.email}
- <:item title={gettext("Paid")}>
- {if @member.paid, do: gettext("Yes"), else: gettext("No")}
-
- <:item title={gettext("Phone Number")}>{@member.phone_number}
- <:item title={gettext("Join Date")}>{DateFormatter.format_date(@member.join_date)}
- <:item title={gettext("Exit Date")}>{DateFormatter.format_date(@member.exit_date)}
- <:item title={gettext("Notes")}>{@member.notes}
- <:item title={gettext("City")}>{@member.city}
- <:item title={gettext("Street")}>{@member.street}
- <:item title={gettext("House Number")}>{@member.house_number}
- <:item title={gettext("Postal Code")}>{@member.postal_code}
- <:item title={gettext("Linked User")}>
- <%= if @member.user do %>
- <.link
- navigate={~p"/users/#{@member.user}"}
- class="text-blue-600 hover:text-blue-800 underline"
- >
- <.icon name="hero-user" class="h-4 w-4 inline mr-1" />
- {@member.user.email}
-
- <% else %>
- {gettext("No user linked")}
- <% end %>
-
-
+ <.button variant="primary" navigate={~p"/members/#{@member}/edit?return_to=show"}>
+ {gettext("Edit Member")}
+
+
- {gettext("Custom Field Values")}
- <.generic_list items={
- Enum.map(@member.custom_field_values, fn cfv ->
- {
- # name
- cfv.custom_field && cfv.custom_field.name,
- # value
- format_custom_field_value(cfv)
- }
- end)
- } />
+ <%!-- Tab Navigation --%>
+
+
+ <.icon name="hero-identification" class="size-4 mr-2" />
+ {gettext("Contact Data")}
+
+
+ <.icon name="hero-credit-card" class="size-4 mr-2" />
+ {gettext("Payments")}
+
+
+
+ <%!-- Personal Data and Custom Fields Row --%>
+
+ <%!-- Personal Data Section --%>
+
+ <.section_box title={gettext("Personal Data")}>
+
+ <%!-- Name Row --%>
+
+ <.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" />
+
+
+ <%!-- Address --%>
+
+ <.data_field label={gettext("Address")} value={format_address(@member)} />
+
+
+ <%!-- Email --%>
+
+
+ <%!-- Phone --%>
+
+ <.data_field label={gettext("Phone")} value={@member.phone_number} />
+
+
+ <%!-- Membership Dates Row --%>
+
+ <.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"
+ />
+
+
+ <%!-- Linked User --%>
+
+ <.data_field label={gettext("Linked User")}>
+ <%= if @member.user do %>
+ <.link
+ navigate={~p"/users/#{@member.user}"}
+ class="text-blue-700 hover:text-blue-800 underline inline-flex items-center gap-1"
+ >
+ <.icon name="hero-user" class="size-4" />
+ {@member.user.email}
+
+ <% else %>
+ {gettext("No user linked")}
+ <% end %>
+
+
+
+ <%!-- Notes --%>
+ <%= if @member.notes && String.trim(@member.notes) != "" do %>
+
+ <.data_field label={gettext("Notes")}>
+
{@member.notes}
+
+
+ <% end %>
+
+
+
+
+ <%!-- Custom Fields Section --%>
+ <%= if Enum.any?(@member.custom_field_values) do %>
+
+ <.section_box title={gettext("Custom Fields")}>
+
+ <%= 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)}
+
+ <% end %>
+
+
+
+ <% end %>
+
+
+ <%!-- Payment Data Section (Mockup) --%>
+
+ <.section_box title={gettext("Payment Data")}>
+
+ <.icon name="hero-information-circle" class="size-5" />
+ {gettext("This data is for demonstration purposes only (mockup).")}
+
+
+
+ <.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 %>
+ {gettext("Paid")}
+ <% else %>
+ {gettext("Pending")}
+ <% end %>
+
+
+
+
"""
end
@@ -113,16 +196,119 @@ defmodule MvWeb.MemberLive.Show do
defp page_title(:show), do: gettext("Show Member")
defp page_title(:edit), do: gettext("Edit Member")
- defp format_custom_field_value(cfv) do
- value =
- case cfv.value do
- %{value: v} -> v
- v -> v
- end
+ # -----------------------------------------------------------------
+ # Helper Components
+ # -----------------------------------------------------------------
- case value do
- %Date{} = date -> DateFormatter.format_date(date)
- other -> other
+ # Renders a section box with border and title.
+ attr :title, :string, required: true
+ slot :inner_block, required: true
+
+ defp section_box(assigns) do
+ ~H"""
+
+ {@title}
+
+ {render_slot(@inner_block)}
+
+
+ """
+ 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"""
+
+ {@label}
+
+ <%= if @inner_block != [] do %>
+ {render_slot(@inner_block)}
+ <% else %>
+ {display_value(@value)}
+ <% end %>
+
+
+ """
+ end
+
+ # -----------------------------------------------------------------
+ # Helper Functions
+ # -----------------------------------------------------------------
+
+ defp display_value(nil), do: ""
+ defp display_value(""), do: ""
+ defp display_value(value), do: value
+
+ 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"""
+ {@email}
+ """
+ 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
diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po
index 607ad9e..ac40975 100644
--- a/priv/gettext/de/LC_MESSAGES/default.po
+++ b/priv/gettext/de/LC_MESSAGES/default.po
@@ -28,9 +28,8 @@ msgstr "Bist du sicher?"
msgid "Attempting to reconnect"
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/show.ex:59
#, elixir-autogen, elixir-format
msgid "City"
msgstr "Stadt"
@@ -48,18 +47,19 @@ msgstr "Löschen"
#: lib/mv_web/live/user_live/index.html.heex:65
#, elixir-autogen, elixir-format
msgid "Edit"
-msgstr "Bearbeiten"
+msgstr "Bearbeite"
-#: lib/mv_web/live/member_live/show.ex:42
-#: lib/mv_web/live/member_live/show.ex:114
+#: lib/mv_web/live/member_live/form.ex:242
+#: lib/mv_web/live/member_live/show.ex:40
+#: lib/mv_web/live/member_live/show.ex:197
#, elixir-autogen, elixir-format
msgid "Edit Member"
msgstr "Mitglied bearbeiten"
#: lib/mv_web/live/contribution_period_live/show.ex:58
-#: 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/show.ex:51
+#: lib/mv_web/live/member_live/show.ex:75
#: 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/show.ex:49
@@ -67,25 +67,26 @@ msgstr "Mitglied bearbeiten"
msgid "Email"
msgstr "E-Mail"
-#: lib/mv_web/live/member_live/form.ex:45
-#: lib/mv_web/live/member_live/show.ex:49
+#: lib/mv_web/live/member_live/form.ex:81
+#: lib/mv_web/live/member_live/show.ex:64
#, elixir-autogen, elixir-format
msgid "First Name"
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/show.ex:56
+#: lib/mv_web/live/member_live/show.ex:93
#, elixir-autogen, elixir-format
msgid "Join Date"
msgstr "Beitrittsdatum"
-#: lib/mv_web/live/member_live/form.ex:46
-#: lib/mv_web/live/member_live/show.ex:50
+#: lib/mv_web/live/member_live/form.ex:84
+#: lib/mv_web/live/member_live/show.ex:65
#, elixir-autogen, elixir-format
msgid "Last Name"
msgstr "Nachname"
+#: lib/mv_web/live/member_live/form.ex:44
#: lib/mv_web/live/member_live/index.html.heex:29
#, elixir-autogen, elixir-format
msgid "New Member"
@@ -112,22 +113,20 @@ msgstr "Keine Internetverbindung gefunden"
msgid "close"
msgstr "schließen"
-#: lib/mv_web/live/member_live/form.ex:51
-#: lib/mv_web/live/member_live/show.ex:57
+#: lib/mv_web/live/member_live/form.ex:120
+#: lib/mv_web/live/member_live/show.ex:98
#, elixir-autogen, elixir-format
msgid "Exit Date"
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/show.ex:61
#, elixir-autogen, elixir-format
msgid "House Number"
msgstr "Hausnummer"
#: lib/mv_web/live/contribution_period_live/show.ex:140
-#: lib/mv_web/live/member_live/form.ex:52
-#: lib/mv_web/live/member_live/show.ex:58
+#: lib/mv_web/live/member_live/form.ex:126
+#: lib/mv_web/live/member_live/show.ex:124
#, elixir-autogen, elixir-format
msgid "Notes"
msgstr "Notizen"
@@ -136,28 +135,26 @@ msgstr "Notizen"
#: lib/mv_web/live/components/payment_filter_component.ex:144
#: lib/mv_web/live/contribution_period_live/show.ex:186
#: lib/mv_web/live/contribution_period_live/show.ex:241
-#: 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/show.ex:52
+#: lib/mv_web/live/member_live/show.ex:162
+#: lib/mv_web/live/member_live/show.ex:164
#, elixir-autogen, elixir-format
msgid "Paid"
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/show.ex:55
#, elixir-autogen, elixir-format
msgid "Phone Number"
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/show.ex:62
#, elixir-autogen, elixir-format
msgid "Postal Code"
msgstr "Postleitzahl"
-#: lib/mv_web/live/member_live/form.ex:79
+#: lib/mv_web/live/member_live/form.ex:211
#, elixir-autogen, elixir-format
msgid "Save Member"
msgstr "Mitglied speichern"
@@ -165,58 +162,48 @@ msgstr "Mitglied speichern"
#: 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/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:249
#, elixir-autogen, elixir-format
msgid "Saving..."
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/show.ex:60
#, elixir-autogen, elixir-format
msgid "Street"
msgstr "Straße"
-#: lib/mv_web/live/member_live/show.ex:48
-#, 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/formatter.ex:62
-#: lib/mv_web/live/member_live/show.ex:53
+#: lib/mv_web/live/member_live/show.ex:290
#, elixir-autogen, elixir-format
msgid "No"
msgstr "Nein"
-#: lib/mv_web/live/member_live/show.ex:113
+#: lib/mv_web/live/member_live/show.ex:196
#, elixir-autogen, elixir-format, fuzzy
msgid "Show Member"
msgstr "Mitglied anzeigen"
-#: lib/mv_web/live/member_live/show.ex:34
-#, 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/formatter.ex:61
-#: lib/mv_web/live/member_live/show.ex:53
+#: lib/mv_web/live/member_live/show.ex:290
#, elixir-autogen, elixir-format
msgid "Yes"
msgstr "Ja"
#: 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/member_live/form.ex:137
+#: lib/mv_web/live/member_live/form.ex:269
#, elixir-autogen, elixir-format
msgid "create"
msgstr "erstellt"
#: 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/member_live/form.ex:138
+#: lib/mv_web/live/member_live/form.ex:270
#, elixir-autogen, elixir-format
msgid "update"
msgstr "aktualisiert"
@@ -226,7 +213,7 @@ msgstr "aktualisiert"
msgid "Incorrect email or password"
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
msgid "Member %{action} successfully"
msgstr "Mitglied %{action} erfolgreich"
@@ -259,7 +246,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/index.ex:120
#: 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:252
#, elixir-autogen, elixir-format
msgid "Cancel"
@@ -503,7 +490,7 @@ msgstr "Benutzer*in wird ohne Passwort erstellt. Aktivieren Sie 'Passwort setzen
msgid "Linked Member"
msgstr "Verknüpftes Mitglied"
-#: lib/mv_web/live/member_live/show.ex:63
+#: lib/mv_web/live/member_live/show.ex:106
#, elixir-autogen, elixir-format
msgid "Linked User"
msgstr "Verknüpfte*r Benutzer*in"
@@ -514,13 +501,12 @@ msgstr "Verknüpfte*r Benutzer*in"
msgid "No member linked"
msgstr "Kein Mitglied verknüpft"
-#: lib/mv_web/live/member_live/show.ex:73
+#: lib/mv_web/live/member_live/show.ex:116
#, elixir-autogen, elixir-format
msgid "No user linked"
msgstr "Keine*r Benutzer*in verknüpft"
-#: lib/mv_web/live/member_live/show.ex:37
-#: lib/mv_web/live/member_live/show.ex:39
+#: lib/mv_web/live/member_live/show.ex:30
#, elixir-autogen, elixir-format
msgid "Back to members list"
msgstr "Zurück zur Mitgliederliste"
@@ -601,12 +587,6 @@ msgstr "Diese E-Mail-Adresse ist bereits mit einem anderen OIDC-Konto verknüpft
msgid "Choose a custom field"
msgstr "Wähle ein Benutzerdefiniertes Feld"
-#: lib/mv_web/live/member_live/form.ex:58
-#: lib/mv_web/live/member_live/show.ex:78
-#, elixir-autogen, elixir-format
-msgid "Custom Field Values"
-msgstr "Benutzerdefinierte Feldwerte"
-
#: lib/mv_web/live/custom_field_value_live/form.ex:51
#, elixir-autogen, elixir-format
msgid "Custom field"
@@ -643,6 +623,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."
#: 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
msgid "Custom Fields"
msgstr "Benutzerdefinierte Felder"
@@ -813,11 +795,6 @@ msgstr "Im E-Mail-Programm öffnen"
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"
-#: 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:223
#: lib/mv_web/components/core_components.ex:250
@@ -848,411 +825,507 @@ msgstr "Nicht bezahlt"
msgid "Payment filter"
msgstr "Zahlungsfilter"
+#: lib/mv_web/live/member_live/show.ex:70
+#, 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/form.ex:242
+#, elixir-autogen, elixir-format
+msgid "Create Member"
+msgstr "Mitglied erstellen"
+
#: lib/mv_web/live/contribution_period_live/show.ex:107
#, elixir-autogen, elixir-format
msgid "%{count} period selected"
msgid_plural "%{count} periods selected"
-msgstr[0] "%{count} Beiträge ausgewählt"
-msgstr[1] "%{count} Beiträge ausgewählt"
+msgstr[0] ""
+msgstr[1] ""
#: lib/mv_web/live/contribution_type_live/index.ex:113
#, elixir-autogen, elixir-format
msgid "About Contribution Types"
-msgstr "Über Beitragsarten"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:138
#: lib/mv_web/live/contribution_type_live/index.ex:53
#, elixir-autogen, elixir-format
msgid "Amount"
-msgstr "Betrag"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:48
#, elixir-autogen, elixir-format
msgid "Back to Settings"
-msgstr "Zurück zu Einstellungen"
+msgstr ""
#: lib/mv_web/live/contribution_type_live/index.ex:124
#, elixir-autogen, elixir-format
msgid "Can be changed at any time. Amount changes affect future periods only."
-msgstr "Kann jederzeit geändert werden. Betragsänderungen wirken sich nur auf zukünftige Beiträge aus."
+msgstr ""
#: lib/mv_web/live/contribution_type_live/index.ex:77
#, elixir-autogen, elixir-format
msgid "Cannot delete - members assigned"
-msgstr "Löschen nicht möglich - Mitglieder zugewiesen"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:83
#, elixir-autogen, elixir-format
msgid "Change Contribution Type"
-msgstr "Beitragsart ändern"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:42
#, elixir-autogen, elixir-format
msgid "Configure global settings for membership contributions."
-msgstr "Globale Einstellungen für Mitgliedsbeiträge konfigurieren."
+msgstr ""
#: lib/mv_web/components/layouts/navbar.ex:34
#: lib/mv_web/live/contribution_settings_live.ex:27
#: lib/mv_web/live/contribution_settings_live.ex:40
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Contribution Settings"
-msgstr "Beitragseinstellungen"
+msgstr "Beitrag"
#: lib/mv_web/live/contribution_period_live/show.ex:62
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Contribution Start"
-msgstr "Beitragsbeginn"
+msgstr "Beitrag"
#: lib/mv_web/components/layouts/navbar.ex:32
#: lib/mv_web/live/contribution_type_live/index.ex:25
#: lib/mv_web/live/contribution_type_live/index.ex:36
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Contribution Types"
-msgstr "Beitragsarten"
+msgstr "Beitrag"
#: lib/mv_web/live/contribution_settings_live.ex:224
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Contribution start"
-msgstr "Beitragsbeginn"
+msgstr "Beitrag"
#: lib/mv_web/live/contribution_period_live/show.ex:41
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Contribution type"
-msgstr "Beitragsart"
+msgstr "Beitrag"
#: lib/mv_web/live/contribution_type_live/index.ex:117
#, elixir-autogen, elixir-format
msgid "Contribution types define different membership fee structures. Each type has a fixed interval (monthly, quarterly, half-yearly, yearly) that cannot be changed after creation."
-msgstr "Beitragsarten definieren verschiedene Mitgliedsbeitragsstrukturen. Jede Art hat ein festes Intervall (monatlich, quartalsweise, halbjährlich, jährlich), das nach der Erstellung nicht mehr geändert werden kann."
+msgstr ""
#: lib/mv_web/components/layouts/navbar.ex:30
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Contributions"
-msgstr "Beiträge"
+msgstr "Beitrag"
#: lib/mv_web/live/contribution_period_live/show.ex:39
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Contributions for %{name}"
-msgstr "Beiträge für %{name}"
+msgstr "Beitrag"
#: lib/mv_web/live/contribution_period_live/show.ex:159
#, elixir-autogen, elixir-format
msgid "Current"
-msgstr "Aktuell"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:60
#, elixir-autogen, elixir-format
msgid "Default Contribution Type"
-msgstr "Standard-Beitragsart"
+msgstr ""
#: lib/mv_web/live/contribution_type_live/index.ex:133
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Deletion"
-msgstr "Löschung"
+msgstr "Löschen"
#: lib/mv_web/live/contribution_settings_live.ex:173
#, elixir-autogen, elixir-format
msgid "Example: Member Contribution View"
-msgstr "Beispiel: Mitglieder-Beitragsansicht"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:113
#, elixir-autogen, elixir-format
msgid "Examples"
-msgstr "Beispiele"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:262
#: lib/mv_web/live/contribution_type_live/index.ex:172
#, elixir-autogen, elixir-format
msgid "Family"
-msgstr "Familie"
+msgstr ""
#: lib/mv_web/live/contribution_type_live/index.ex:128
#, elixir-autogen, elixir-format
msgid "Fixed after creation. Members can only switch between types with the same interval."
-msgstr "Nach der Erstellung unveränderlich. Mitglieder können nur zwischen Arten mit demselben Intervall wechseln."
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:228
#, elixir-autogen, elixir-format
msgid "Generated periods"
-msgstr "Generierte Beiträge"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:52
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Global Settings"
-msgstr "Globale Einstellungen"
+msgstr "Vereinsdaten"
#: lib/mv_web/live/contribution_period_live/show.ex:343
#: lib/mv_web/live/contribution_settings_live.ex:275
#: lib/mv_web/live/contribution_type_live/index.ex:203
#, elixir-autogen, elixir-format
msgid "Half-yearly"
-msgstr "Halbjährlich"
+msgstr ""
#: lib/mv_web/live/contribution_type_live/index.ex:181
#, elixir-autogen, elixir-format
msgid "Half-yearly contribution for supporting members"
-msgstr "Halbjährlicher Beitrag für Fördermitglieder"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:87
#: lib/mv_web/live/contribution_type_live/index.ex:188
#, elixir-autogen, elixir-format
msgid "Honorary"
-msgstr "Ehrenmitglied"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:85
#, elixir-autogen, elixir-format
msgid "Include joining period"
-msgstr "Zahlt ab Zeitpunkt des Eintritts"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:137
#: lib/mv_web/live/contribution_type_live/index.ex:57
#: lib/mv_web/live/contribution_type_live/index.ex:127
#, elixir-autogen, elixir-format
msgid "Interval"
-msgstr "Intervall"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:220
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Joining date"
-msgstr "Eintrittsdatum"
+msgstr "Beitrittsdatum"
#: lib/mv_web/live/contribution_period_live/show.ex:331
#, elixir-autogen, elixir-format
msgid "Joining year - reduced to 0"
-msgstr "Eintrittsjahr - auf 0 reduziert"
+msgstr ""
#: lib/mv_web/live/contribution_type_live/index.ex:38
#, elixir-autogen, elixir-format
msgid "Manage contribution types for membership fees."
-msgstr "Beitragsarten für Mitgliedsbeiträge verwalten."
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:116
#, elixir-autogen, elixir-format
msgid "Mark as Paid"
-msgstr "Als bezahlt markieren"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:120
#, elixir-autogen, elixir-format
msgid "Mark as Suspended"
-msgstr "Als ausgesetzt markieren"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:124
#, elixir-autogen, elixir-format
msgid "Mark as Unpaid"
-msgstr "Als unbezahlt markieren"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:26
#, elixir-autogen, elixir-format
msgid "Member Contributions"
-msgstr "Mitgliedsbeiträge"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:122
#, elixir-autogen, elixir-format
msgid "Member pays for the year they joined"
-msgstr "Mitglied zahlt für das Eintrittsjahr"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:155
#, elixir-autogen, elixir-format
msgid "Member pays from the joining month"
-msgstr "Mitglied zahlt ab dem Eintrittsmonat"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:144
#, elixir-autogen, elixir-format
msgid "Member pays from the next full quarter"
-msgstr "Mitglied zahlt ab dem nächsten vollen Quartal"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:133
#, elixir-autogen, elixir-format
msgid "Member pays from the next full year"
-msgstr "Mitglied zahlt ab dem nächsten vollen Jahr"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:43
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Member since"
-msgstr "Mitglied seit"
+msgstr "Mitglieder"
#: lib/mv_web/live/contribution_period_live/show.ex:92
#, elixir-autogen, elixir-format
msgid "Members can only switch between contribution types with the same payment interval (e.g., yearly to yearly). This prevents complex period overlaps."
-msgstr "Mitglieder können nur zwischen Beitragsarten mit demselben Zahlungsintervall wechseln (z.B. jährlich zu jährlich). Dies verhindert komplexe Periodenüberschneidungen."
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:341
#: lib/mv_web/live/contribution_settings_live.ex:273
#: lib/mv_web/live/contribution_type_live/index.ex:201
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Monthly"
-msgstr "Monatlich"
+msgstr "monatlich"
#: lib/mv_web/live/contribution_settings_live.ex:150
#, elixir-autogen, elixir-format
msgid "Monthly Interval - Joining Period Included"
-msgstr "Monatliches Intervall - Eintrittsperiode eingeschlossen"
+msgstr ""
#: lib/mv_web/live/contribution_type_live/index.ex:165
#, elixir-autogen, elixir-format
msgid "Monthly fee for students and trainees"
-msgstr "Monatlicher Beitrag für Studierende und Auszubildende"
+msgstr ""
#: lib/mv_web/live/contribution_type_live/index.ex:123
#, elixir-autogen, elixir-format
msgid "Name & Amount"
-msgstr "Name & Betrag"
+msgstr ""
#: lib/mv_web/live/contribution_type_live/index.ex:42
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "New Contribution Type"
-msgstr "Neue Beitragsart"
+msgstr "Beitrag"
#: lib/mv_web/live/contribution_type_live/index.ex:189
#, elixir-autogen, elixir-format
msgid "No fee for honorary members"
-msgstr "Kein Beitrag für Ehrenmitglieder"
+msgstr ""
#: lib/mv_web/live/contribution_type_live/index.ex:134
#, elixir-autogen, elixir-format
msgid "Only possible if no members are assigned to this type."
-msgstr "Nur möglich, wenn keine Mitglieder dieser Art zugewiesen sind."
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:70
#, elixir-autogen, elixir-format
msgid "Open Contributions"
-msgstr "Offene Beiträge"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:301
#, elixir-autogen, elixir-format
msgid "Paid via bank transfer"
-msgstr "Per Überweisung bezahlt"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:225
#: lib/mv_web/live/contribution_settings_live.ex:197
#: lib/mv_web/live/contribution_type_live/index.ex:97
#, elixir-autogen, elixir-format
msgid "Preview Mockup"
-msgstr "Vorschau"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:342
#: lib/mv_web/live/contribution_settings_live.ex:274
#: lib/mv_web/live/contribution_type_live/index.ex:202
#, elixir-autogen, elixir-format
msgid "Quarterly"
-msgstr "Quartalsweise"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:139
#, elixir-autogen, elixir-format
msgid "Quarterly Interval - Joining Period Excluded"
-msgstr "Quartalsintervall - Eintrittsperiode ausgeschlossen"
+msgstr ""
#: lib/mv_web/live/contribution_type_live/index.ex:173
#, elixir-autogen, elixir-format
msgid "Quarterly fee for family memberships"
-msgstr "Quartalsbeitrag für Familienmitgliedschaften"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:86
#: lib/mv_web/live/contribution_settings_live.ex:250
#: lib/mv_web/live/contribution_type_live/index.ex:156
#, elixir-autogen, elixir-format
msgid "Reduced"
-msgstr "Ermäßigt"
+msgstr ""
#: lib/mv_web/live/contribution_type_live/index.ex:157
#, elixir-autogen, elixir-format
msgid "Reduced fee for unemployed, pensioners, or low income"
-msgstr "Ermäßigter Beitrag für Arbeitslose, Rentner*innen oder Geringverdienende"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:275
#: lib/mv_web/live/contribution_settings_live.ex:244
#: lib/mv_web/live/contribution_type_live/index.ex:148
#, elixir-autogen, elixir-format
msgid "Regular"
-msgstr "Regulär"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:204
#, elixir-autogen, elixir-format
msgid "Reopen"
-msgstr "Wieder öffnen"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:176
#, elixir-autogen, elixir-format
msgid "See how the contribution periods will be displayed for an individual member. This example shows Maria Weber with multiple contribution periods."
-msgstr "Sehen Sie, wie die Beitragsperioden für ein einzelnes Mitglied angezeigt werden. Dieses Beispiel zeigt Maria Weber mit mehreren Beitragsperioden."
+msgstr ""
#: lib/mv_web/live/contribution_type_live/index.ex:149
#, elixir-autogen, elixir-format
msgid "Standard membership fee for regular members"
-msgstr "Standard-Mitgliedsbeitrag für reguläre Mitglieder"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:139
#, elixir-autogen, elixir-format
msgid "Status"
-msgstr "Status"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:256
#: lib/mv_web/live/contribution_type_live/index.ex:164
#, elixir-autogen, elixir-format
msgid "Student"
-msgstr "Student*in"
+msgstr ""
#: lib/mv_web/live/contribution_type_live/index.ex:180
#, elixir-autogen, elixir-format
msgid "Supporting Member"
-msgstr "Fördermitglied"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:195
#, elixir-autogen, elixir-format
msgid "Suspend"
-msgstr "Aussetzen"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:259
#, elixir-autogen, elixir-format
msgid "Suspended"
-msgstr "Ausgesetzt"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:69
#, elixir-autogen, elixir-format
msgid "This contribution type is automatically assigned to all new members. Can be changed individually per member."
-msgstr "Diese Beitragsart wird automatisch allen neuen Mitgliedern zugewiesen. Kann pro Mitglied individuell geändert werden."
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:227
#: lib/mv_web/live/contribution_settings_live.ex:199
#: lib/mv_web/live/contribution_type_live/index.ex:99
#, elixir-autogen, elixir-format
msgid "This page is not functional and only displays the planned features."
-msgstr "Diese Seite ist nicht funktional und zeigt nur die geplanten Funktionen."
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:136
#, elixir-autogen, elixir-format
msgid "Time Period"
-msgstr "Zeitraum"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:66
#, elixir-autogen, elixir-format
msgid "Total Contributions"
-msgstr "Beiträge gesamt"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:250
#, elixir-autogen, elixir-format
msgid "Unpaid"
-msgstr "Unbezahlt"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:183
#, elixir-autogen, elixir-format
msgid "View Example Member"
-msgstr "Beispielmitglied ansehen"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:90
#, elixir-autogen, elixir-format
msgid "When active: Members pay from the period of their joining."
-msgstr "Wenn aktiv: Mitglieder zahlen ab der Periode ihres Eintritts."
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:93
#, elixir-autogen, elixir-format
msgid "When inactive: Members pay from the next full period after joining."
-msgstr "Wenn inaktiv: Mitglieder zahlen ab der nächsten vollen Periode nach dem Eintritt."
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:98
#, elixir-autogen, elixir-format
msgid "Why are not all contribution types shown?"
-msgstr "Warum werden nicht alle Beitragsarten angezeigt?"
+msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:85
#: lib/mv_web/live/contribution_period_live/show.ex:86
@@ -1260,31 +1333,30 @@ msgstr "Warum werden nicht alle Beitragsarten angezeigt?"
#: lib/mv_web/live/contribution_period_live/show.ex:344
#: lib/mv_web/live/contribution_settings_live.ex:276
#: lib/mv_web/live/contribution_type_live/index.ex:204
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Yearly"
-msgstr "Jährlich"
+msgstr "jährlich"
#: lib/mv_web/live/contribution_settings_live.ex:128
#, elixir-autogen, elixir-format
msgid "Yearly Interval - Joining Period Excluded"
-msgstr "Jährliches Intervall - Eintrittsperiode ausgeschlossen"
+msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:117
#, elixir-autogen, elixir-format
msgid "Yearly Interval - Joining Period Included"
-msgstr "Jährliches Intervall - Eintrittsperiode eingeschlossen"
-
-#~ #: lib/mv_web/live/member_live/form.ex:48
-#~ #: lib/mv_web/live/member_live/show.ex:51
-#~ #, elixir-autogen, elixir-format
-#~ msgid "Birth Date"
-#~ msgstr "Geburtsdatum"
+msgstr ""
#~ #: lib/mv_web/live/user_live/show.ex:49
#~ #, elixir-autogen, elixir-format
#~ msgid "ID"
#~ msgstr "ID"
+#~ #: lib/mv_web/live/member_live/show.ex:47
+#~ #, elixir-autogen, elixir-format
+#~ msgid "Id"
+#~ msgstr "ID"
+
#~ #: lib/mv_web/live/user_live/show.ex:51
#~ #, elixir-autogen, elixir-format
#~ msgid "Not set"
@@ -1295,3 +1367,8 @@ msgstr "Jährliches Intervall - Eintrittsperiode eingeschlossen"
#~ #, elixir-autogen, elixir-format
#~ msgid "OIDC ID"
#~ msgstr "OIDC 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."
diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot
index b66c5ed..731f1be 100644
--- a/priv/gettext/default.pot
+++ b/priv/gettext/default.pot
@@ -29,9 +29,8 @@ msgstr ""
msgid "Attempting to reconnect"
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/show.ex:59
#, elixir-autogen, elixir-format
msgid "City"
msgstr ""
@@ -51,16 +50,17 @@ msgstr ""
msgid "Edit"
msgstr ""
-#: lib/mv_web/live/member_live/show.ex:42
-#: lib/mv_web/live/member_live/show.ex:114
+#: lib/mv_web/live/member_live/form.ex:242
+#: lib/mv_web/live/member_live/show.ex:40
+#: lib/mv_web/live/member_live/show.ex:197
#, elixir-autogen, elixir-format
msgid "Edit Member"
msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:58
-#: 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/show.ex:51
+#: lib/mv_web/live/member_live/show.ex:75
#: 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/show.ex:49
@@ -68,25 +68,26 @@ msgstr ""
msgid "Email"
msgstr ""
-#: lib/mv_web/live/member_live/form.ex:45
-#: lib/mv_web/live/member_live/show.ex:49
+#: lib/mv_web/live/member_live/form.ex:81
+#: lib/mv_web/live/member_live/show.ex:64
#, elixir-autogen, elixir-format
msgid "First Name"
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/show.ex:56
+#: lib/mv_web/live/member_live/show.ex:93
#, elixir-autogen, elixir-format
msgid "Join Date"
msgstr ""
-#: lib/mv_web/live/member_live/form.ex:46
-#: lib/mv_web/live/member_live/show.ex:50
+#: lib/mv_web/live/member_live/form.ex:84
+#: lib/mv_web/live/member_live/show.ex:65
#, elixir-autogen, elixir-format
msgid "Last Name"
msgstr ""
+#: lib/mv_web/live/member_live/form.ex:44
#: lib/mv_web/live/member_live/index.html.heex:29
#, elixir-autogen, elixir-format
msgid "New Member"
@@ -113,22 +114,20 @@ msgstr ""
msgid "close"
msgstr ""
-#: lib/mv_web/live/member_live/form.ex:51
-#: lib/mv_web/live/member_live/show.ex:57
+#: lib/mv_web/live/member_live/form.ex:120
+#: lib/mv_web/live/member_live/show.ex:98
#, elixir-autogen, elixir-format
msgid "Exit Date"
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/show.ex:61
#, elixir-autogen, elixir-format
msgid "House Number"
msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:140
-#: lib/mv_web/live/member_live/form.ex:52
-#: lib/mv_web/live/member_live/show.ex:58
+#: lib/mv_web/live/member_live/form.ex:126
+#: lib/mv_web/live/member_live/show.ex:124
#, elixir-autogen, elixir-format
msgid "Notes"
msgstr ""
@@ -137,28 +136,26 @@ msgstr ""
#: lib/mv_web/live/components/payment_filter_component.ex:144
#: lib/mv_web/live/contribution_period_live/show.ex:186
#: lib/mv_web/live/contribution_period_live/show.ex:241
-#: 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/show.ex:52
+#: lib/mv_web/live/member_live/show.ex:162
+#: lib/mv_web/live/member_live/show.ex:164
#, elixir-autogen, elixir-format
msgid "Paid"
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/show.ex:55
#, elixir-autogen, elixir-format
msgid "Phone Number"
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/show.ex:62
#, elixir-autogen, elixir-format
msgid "Postal Code"
msgstr ""
-#: lib/mv_web/live/member_live/form.ex:79
+#: lib/mv_web/live/member_live/form.ex:211
#, elixir-autogen, elixir-format
msgid "Save Member"
msgstr ""
@@ -166,58 +163,48 @@ msgstr ""
#: 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/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:249
#, elixir-autogen, elixir-format
msgid "Saving..."
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/show.ex:60
#, elixir-autogen, elixir-format
msgid "Street"
msgstr ""
-#: lib/mv_web/live/member_live/show.ex:48
-#, elixir-autogen, elixir-format
-msgid "Id"
-msgstr ""
-
#: lib/mv_web/live/member_live/index.html.heex:234
#: lib/mv_web/live/member_live/index/formatter.ex:62
-#: lib/mv_web/live/member_live/show.ex:53
+#: lib/mv_web/live/member_live/show.ex:290
#, elixir-autogen, elixir-format
msgid "No"
msgstr ""
-#: lib/mv_web/live/member_live/show.ex:113
+#: lib/mv_web/live/member_live/show.ex:196
#, elixir-autogen, elixir-format
msgid "Show Member"
msgstr ""
-#: lib/mv_web/live/member_live/show.ex:34
-#, 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/formatter.ex:61
-#: lib/mv_web/live/member_live/show.ex:53
+#: lib/mv_web/live/member_live/show.ex:290
#, elixir-autogen, elixir-format
msgid "Yes"
msgstr ""
#: 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/member_live/form.ex:137
+#: lib/mv_web/live/member_live/form.ex:269
#, elixir-autogen, elixir-format
msgid "create"
msgstr ""
#: 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/member_live/form.ex:138
+#: lib/mv_web/live/member_live/form.ex:270
#, elixir-autogen, elixir-format
msgid "update"
msgstr ""
@@ -227,7 +214,7 @@ msgstr ""
msgid "Incorrect email or password"
msgstr ""
-#: lib/mv_web/live/member_live/form.ex:144
+#: lib/mv_web/live/member_live/form.ex:276
#, elixir-autogen, elixir-format
msgid "Member %{action} successfully"
msgstr ""
@@ -260,7 +247,7 @@ msgstr ""
#: 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_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:252
#, elixir-autogen, elixir-format
msgid "Cancel"
@@ -504,7 +491,7 @@ msgstr ""
msgid "Linked Member"
msgstr ""
-#: lib/mv_web/live/member_live/show.ex:63
+#: lib/mv_web/live/member_live/show.ex:106
#, elixir-autogen, elixir-format
msgid "Linked User"
msgstr ""
@@ -515,13 +502,12 @@ msgstr ""
msgid "No member linked"
msgstr ""
-#: lib/mv_web/live/member_live/show.ex:73
+#: lib/mv_web/live/member_live/show.ex:116
#, elixir-autogen, elixir-format
msgid "No user linked"
msgstr ""
-#: lib/mv_web/live/member_live/show.ex:37
-#: lib/mv_web/live/member_live/show.ex:39
+#: lib/mv_web/live/member_live/show.ex:30
#, elixir-autogen, elixir-format
msgid "Back to members list"
msgstr ""
@@ -602,12 +588,6 @@ msgstr ""
msgid "Choose a custom field"
msgstr ""
-#: lib/mv_web/live/member_live/form.ex:58
-#: lib/mv_web/live/member_live/show.ex:78
-#, elixir-autogen, elixir-format
-msgid "Custom Field Values"
-msgstr ""
-
#: lib/mv_web/live/custom_field_value_live/form.ex:51
#, elixir-autogen, elixir-format
msgid "Custom field"
@@ -644,6 +624,8 @@ msgid "Use this form to manage custom_field records in your database."
msgstr ""
#: 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
msgid "Custom Fields"
msgstr ""
@@ -814,11 +796,6 @@ msgstr ""
msgid "Tip: Paste email addresses into the BCC field for privacy compliance"
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:223
#: lib/mv_web/components/core_components.ex:250
@@ -849,6 +826,102 @@ msgstr ""
msgid "Payment filter"
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 ""
+
+#: lib/mv_web/live/member_live/form.ex:242
+#, elixir-autogen, elixir-format
+msgid "Create Member"
+msgstr ""
+
#: lib/mv_web/live/contribution_period_live/show.ex:107
#, elixir-autogen, elixir-format
msgid "%{count} period selected"
diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po
index ceee74a..3c9be04 100644
--- a/priv/gettext/en/LC_MESSAGES/default.po
+++ b/priv/gettext/en/LC_MESSAGES/default.po
@@ -29,9 +29,8 @@ msgstr ""
msgid "Attempting to reconnect"
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/show.ex:59
#, elixir-autogen, elixir-format
msgid "City"
msgstr ""
@@ -51,16 +50,17 @@ msgstr ""
msgid "Edit"
msgstr ""
-#: lib/mv_web/live/member_live/show.ex:42
-#: lib/mv_web/live/member_live/show.ex:114
+#: lib/mv_web/live/member_live/form.ex:242
+#: lib/mv_web/live/member_live/show.ex:40
+#: lib/mv_web/live/member_live/show.ex:197
#, elixir-autogen, elixir-format
msgid "Edit Member"
msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:58
-#: 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/show.ex:51
+#: lib/mv_web/live/member_live/show.ex:75
#: 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/show.ex:49
@@ -68,25 +68,26 @@ msgstr ""
msgid "Email"
msgstr ""
-#: lib/mv_web/live/member_live/form.ex:45
-#: lib/mv_web/live/member_live/show.ex:49
+#: lib/mv_web/live/member_live/form.ex:81
+#: lib/mv_web/live/member_live/show.ex:64
#, elixir-autogen, elixir-format
msgid "First Name"
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/show.ex:56
+#: lib/mv_web/live/member_live/show.ex:93
#, elixir-autogen, elixir-format
msgid "Join Date"
msgstr ""
-#: lib/mv_web/live/member_live/form.ex:46
-#: lib/mv_web/live/member_live/show.ex:50
+#: lib/mv_web/live/member_live/form.ex:84
+#: lib/mv_web/live/member_live/show.ex:65
#, elixir-autogen, elixir-format
msgid "Last Name"
msgstr ""
+#: lib/mv_web/live/member_live/form.ex:44
#: lib/mv_web/live/member_live/index.html.heex:29
#, elixir-autogen, elixir-format
msgid "New Member"
@@ -113,22 +114,20 @@ msgstr ""
msgid "close"
msgstr ""
-#: lib/mv_web/live/member_live/form.ex:51
-#: lib/mv_web/live/member_live/show.ex:57
+#: lib/mv_web/live/member_live/form.ex:120
+#: lib/mv_web/live/member_live/show.ex:98
#, elixir-autogen, elixir-format
msgid "Exit Date"
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/show.ex:61
#, elixir-autogen, elixir-format
msgid "House Number"
msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:140
-#: lib/mv_web/live/member_live/form.ex:52
-#: lib/mv_web/live/member_live/show.ex:58
+#: lib/mv_web/live/member_live/form.ex:126
+#: lib/mv_web/live/member_live/show.ex:124
#, elixir-autogen, elixir-format
msgid "Notes"
msgstr ""
@@ -137,28 +136,26 @@ msgstr ""
#: lib/mv_web/live/components/payment_filter_component.ex:144
#: lib/mv_web/live/contribution_period_live/show.ex:186
#: lib/mv_web/live/contribution_period_live/show.ex:241
-#: 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/show.ex:52
+#: lib/mv_web/live/member_live/show.ex:162
+#: lib/mv_web/live/member_live/show.ex:164
#, elixir-autogen, elixir-format
msgid "Paid"
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/show.ex:55
#, elixir-autogen, elixir-format
msgid "Phone Number"
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/show.ex:62
#, elixir-autogen, elixir-format
msgid "Postal Code"
msgstr ""
-#: lib/mv_web/live/member_live/form.ex:79
+#: lib/mv_web/live/member_live/form.ex:211
#, elixir-autogen, elixir-format, fuzzy
msgid "Save Member"
msgstr ""
@@ -166,58 +163,48 @@ msgstr ""
#: 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/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:249
#, elixir-autogen, elixir-format
msgid "Saving..."
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/show.ex:60
#, elixir-autogen, elixir-format
msgid "Street"
msgstr ""
-#: lib/mv_web/live/member_live/show.ex:48
-#, elixir-autogen, elixir-format
-msgid "Id"
-msgstr ""
-
#: lib/mv_web/live/member_live/index.html.heex:234
#: lib/mv_web/live/member_live/index/formatter.ex:62
-#: lib/mv_web/live/member_live/show.ex:53
+#: lib/mv_web/live/member_live/show.ex:290
#, elixir-autogen, elixir-format
msgid "No"
msgstr ""
-#: lib/mv_web/live/member_live/show.ex:113
+#: lib/mv_web/live/member_live/show.ex:196
#, elixir-autogen, elixir-format, fuzzy
msgid "Show Member"
msgstr ""
-#: lib/mv_web/live/member_live/show.ex:34
-#, 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/formatter.ex:61
-#: lib/mv_web/live/member_live/show.ex:53
+#: lib/mv_web/live/member_live/show.ex:290
#, elixir-autogen, elixir-format
msgid "Yes"
msgstr ""
#: 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/member_live/form.ex:137
+#: lib/mv_web/live/member_live/form.ex:269
#, elixir-autogen, elixir-format
msgid "create"
msgstr ""
#: 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/member_live/form.ex:138
+#: lib/mv_web/live/member_live/form.ex:270
#, elixir-autogen, elixir-format
msgid "update"
msgstr ""
@@ -227,7 +214,7 @@ msgstr ""
msgid "Incorrect email or password"
msgstr ""
-#: lib/mv_web/live/member_live/form.ex:144
+#: lib/mv_web/live/member_live/form.ex:276
#, elixir-autogen, elixir-format
msgid "Member %{action} successfully"
msgstr ""
@@ -260,7 +247,7 @@ msgstr ""
#: 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_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:252
#, elixir-autogen, elixir-format
msgid "Cancel"
@@ -504,7 +491,7 @@ msgstr "User will be created without a password. Check 'Set Password' to add one
msgid "Linked Member"
msgstr ""
-#: lib/mv_web/live/member_live/show.ex:63
+#: lib/mv_web/live/member_live/show.ex:106
#, elixir-autogen, elixir-format
msgid "Linked User"
msgstr ""
@@ -515,13 +502,12 @@ msgstr ""
msgid "No member linked"
msgstr ""
-#: lib/mv_web/live/member_live/show.ex:73
+#: lib/mv_web/live/member_live/show.ex:116
#, elixir-autogen, elixir-format
msgid "No user linked"
msgstr ""
-#: lib/mv_web/live/member_live/show.ex:37
-#: lib/mv_web/live/member_live/show.ex:39
+#: lib/mv_web/live/member_live/show.ex:30
#, elixir-autogen, elixir-format
msgid "Back to members list"
msgstr ""
@@ -602,12 +588,6 @@ msgstr ""
msgid "Choose a custom field"
msgstr ""
-#: lib/mv_web/live/member_live/form.ex:58
-#: lib/mv_web/live/member_live/show.ex:78
-#, elixir-autogen, elixir-format
-msgid "Custom Field Values"
-msgstr ""
-
#: lib/mv_web/live/custom_field_value_live/form.ex:51
#, elixir-autogen, elixir-format
msgid "Custom field"
@@ -644,6 +624,8 @@ msgid "Use this form to manage custom_field records in your database."
msgstr ""
#: 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
msgid "Custom Fields"
msgstr ""
@@ -814,11 +796,6 @@ msgstr ""
msgid "Tip: Paste email addresses into the BCC field for privacy compliance"
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:223
#: lib/mv_web/components/core_components.ex:250
@@ -849,6 +826,102 @@ msgstr ""
msgid "Payment filter"
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, 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/form.ex:242
+#, elixir-autogen, elixir-format
+msgid "Create Member"
+msgstr ""
+
#: lib/mv_web/live/contribution_period_live/show.ex:107
#, elixir-autogen, elixir-format
msgid "%{count} period selected"
@@ -895,29 +968,29 @@ msgstr ""
#: lib/mv_web/components/layouts/navbar.ex:34
#: lib/mv_web/live/contribution_settings_live.ex:27
#: lib/mv_web/live/contribution_settings_live.ex:40
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Contribution Settings"
msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:62
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Contribution Start"
msgstr ""
#: lib/mv_web/components/layouts/navbar.ex:32
#: lib/mv_web/live/contribution_type_live/index.ex:25
#: lib/mv_web/live/contribution_type_live/index.ex:36
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Contribution Types"
msgstr ""
#: lib/mv_web/live/contribution_settings_live.ex:224
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Contribution start"
msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:41
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Contribution type"
msgstr ""
@@ -927,12 +1000,12 @@ msgid "Contribution types define different membership fee structures. Each type
msgstr ""
#: lib/mv_web/components/layouts/navbar.ex:30
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Contributions"
msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:39
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Contributions for %{name}"
msgstr ""
@@ -1080,7 +1153,7 @@ msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:341
#: lib/mv_web/live/contribution_settings_live.ex:273
#: lib/mv_web/live/contribution_type_live/index.ex:201
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Monthly"
msgstr ""
@@ -1100,7 +1173,7 @@ msgid "Name & Amount"
msgstr ""
#: lib/mv_web/live/contribution_type_live/index.ex:42
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "New Contribution Type"
msgstr ""
@@ -1261,7 +1334,7 @@ msgstr ""
#: lib/mv_web/live/contribution_period_live/show.ex:344
#: lib/mv_web/live/contribution_settings_live.ex:276
#: lib/mv_web/live/contribution_type_live/index.ex:204
-#, elixir-autogen, elixir-format
+#, elixir-autogen, elixir-format, fuzzy
msgid "Yearly"
msgstr ""
@@ -1275,17 +1348,16 @@ msgstr ""
msgid "Yearly Interval - Joining Period Included"
msgstr ""
-#~ #: lib/mv_web/live/member_live/form.ex:48
-#~ #: lib/mv_web/live/member_live/show.ex:51
-#~ #, elixir-autogen, elixir-format
-#~ msgid "Birth Date"
-#~ msgstr ""
-
#~ #: lib/mv_web/live/user_live/show.ex:49
#~ #, elixir-autogen, elixir-format
#~ msgid "ID"
#~ msgstr ""
+#~ #: lib/mv_web/live/member_live/show.ex:47
+#~ #, elixir-autogen, elixir-format
+#~ msgid "Id"
+#~ msgstr ""
+
#~ #: lib/mv_web/live/user_live/show.ex:51
#~ #, elixir-autogen, elixir-format, fuzzy
#~ msgid "Not set"
@@ -1297,8 +1369,7 @@ msgstr ""
#~ msgid "OIDC ID"
#~ msgstr ""
-#~ #: lib/mv_web/live/contribution_period_live/show.ex:273
-#~ #: lib/mv_web/live/contribution_settings_live.ex:248
+#~ #: lib/mv_web/live/member_live/show.ex:33
#~ #, elixir-autogen, elixir-format
-#~ msgid "Related Pages"
+#~ msgid "This is a member record from your database."
#~ msgstr ""